2025/04
taizooo.icon
#sandbox #2025
from 2025/03
top
end 2025/04#67e657e2b30c010000e49203
https://copyanddestroy.hatenablog.com/entry/2025/04/03/105841
https://gyazo.com/1b680da50373af62ecc734c0c3a159eb
https://copyanddestroy.hatenablog.com/entry/2025/03/19/234130
https://gyazo.com/b50a1dc2646c75788f5c8383c55b0946
@hail2u_: アメリカのサービスやプロダクトのEU代替を提案するウェブサイト。脱Googleついでに脱アメリカ。DeepLってドイツだったんだ。
Homepage | European Alternatives
https://gyazo.com/9f4952826fb0022f128240a85d5211de
@taizooo: spotify スウェーデンだった
European music streaming services | European Alternatives
https://gyazo.com/5cad797d7768a706329bd7a64eb500b4
https://tabesugi.net/memo/2025/3.html#202503270433
The end of the world
で、こういう夢を見ると思い出すのがムーミンの小説に出てくる 「この世の終わりにおびえるフィリフヨンカ」である。 新山は、なんとなくこのフィリフヨンカとは気が合いそうな気がする。 ちなみに彼女は非常に美しい「この世の終わり」を目撃することになる。
ランニング・ワイルド : 世界至極のトレイル16章
『苦しんで覚えるC言語』 15.6 「引数による情報の受け渡し」
15.6.1 ポインタ型の引数
code:pointer_func.c
#include <stdio.h>
void func(int *pvaluea);
int main(void)
{
int value = 10;
printf("&value = %p\n", &value);
printf("value = %d\n", value);
func(&value);
printf("value = %d\n", value);
return 0;
}
void func(int *pvalue)
{
printf("pvalue = %p\n", pvalue);
*pvalue = 100;
return;
}
これ、一番紛らわしいのが以下の二つがまったく同じ形をしているところ
関数func の仮引数 int *pvalue の * (ポインタ変数を「宣言するときに使用する記号」)と
関数 func の中で使われる *pvalue = 100 の * (間接演算子:ポインタ変数を「通常変数モード」にする演算子)
それぞれの意味は、
関数 func は引数として int 型のポインタ変数 pvalue ( int *pvalue ) を渡す(渡される)
*pvalue = 100 はポインタ変数 pvalue を間接演算子で「通常変数モード」にして(つまり pvalue に入力されているアドレスの int 型のデータにして)、数値を代入している
『C言語 ポインタ完全制覇』
1-3-3 アドレス演算子、間接演算子、添字演算子
&
アドレス演算子
*
間接演算子
演算子( operator )といえば、足し算の + をはじめてとして「(ものによっては複数の)式に対して何らかの演算を行い、その結果の式を返す」記号です。
そしてC言語においては、変数のアドレスを取得する & や、ポインタの指す先を参照する * もまた演算子なのです。
配列の要素を参照する[] も添字演算子という演算子です。
紛らわしいのは、以下の宣言の中の * のような、ポインタや配列の宣言のときの * や [] です。
code:foobar.c
int *foobar_p;
これは C言語においては演算子ではありません。 ANSI C( JIS X3010:1993 )では「演算子」ではなく「区切り子」の範疇に入ります。
つまり、宣言のときの宣言のときの * や [] は、式の中に現れる演算子の * や [] とはまったくの別物です。
『苦しんで覚えるC言語』 15.6 「引数による情報の受け渡し」
15.6.2 「配列型引数」
code:pointer_func_array.c
#include <stdio.h>
int getaverage(int data10);
int main(void)
{
int average, array10 = {15, 78, 98, 15, 98, 85, 17, 35, 42, 15};
average = getaverage(array);
printf("%d\n", average);
return 0;
}
int getaverage(int data10)
{
int i, average = 0;
for (i = 0;i < 10;i++) {
average += datai;
}
return average / 10;
}
15.6.3 「配列型引数の奇妙な性質」
code:pointer_func_array_bracket.c
#include <stdio.h>
int getaverage(int data[]);
int main(void)
{
int average, array10 = {15, 78, 98, 15, 98, 85, 17, 35, 42, 15};
average = getaverage(array);
printf("%d\n", average);
return 0;
}
int getaverage(int data[])
{
int i, average = 0;
for (i = 0;i < 10;i++) {
average += datai;
}
return average / 10;
}
code:pointer_func_array_pointer.c
#include <stdio.h>
int getaverage(int *data);
int main(void)
{
int average, array10 = {15, 78, 98, 15, 98, 85, 17, 35, 42, 15};
average = getaverage(array);
printf("%d\n", average);
return 0;
}
int getaverage(int *data)
{
int i, average = 0;
for (i = 0;i < 10;i++) {
average += datai;
}
return average / 10;
}
次の3つは同じ意味の仮引数宣言
1. int getaverage(int data[10]);
2. int getaverage(int data[]);
3. int getaverage(int *data);
仮引数宣言で渡される引数は「配列」のアドレス(「配列」の最初の要素のアドレス)なので、要素数は無視される(?)
C言語の仕様からすると本質的には3番目の宣言だと思うけど、2番目の方が一発で渡される引数は「配列」だとわかる
故に2番目
15.7.4「アドレスのことは忘れましょう」
ポインタ変数がアドレスを記憶する変数であることはさっぱりと忘れてください。
なぜなら、ポインタ変数の本当の使い方とは、変数のショートカットとして使うことだからです。
決して、アドレスを操作することではありません。
変数に & 記号(アドレス演算子)をつけてポインタ変数にショートカットを設定して、ポインタ変数に * 記号(間接演算子)をつけて通常変数モードにして使用する。この手順に従って使う限り、アドレスなどなんの関係もないのです。
https://open.spotify.com/intl-ja/album/0yv90Ae5PZMWvtBDDGBxIW
https://gyazo.com/be97f7d0f7d8c4daee2eba05f657fb56
デザインとヴィジュアル・コミュニケーション
ブルーノ・ムナーリ
@taizooo: https://t.co/g8ltfinmiR
https://pbs.twimg.com/media/GniQISSbEAAXnC4.jpg
baku89/unim
tweet
@_baku89: こっそり公開しました
https://t.co/i7qxNgTHfV
- アプリアイコンで全コマンドを俯瞰(Cmd + P でCommand Palette)
- 文字を右クリックして検索
- 文字を左クリックで選択位置に追加
- Code: コードポイントの前後で検索
- pHash: 認知的類似度検索
- Tokui CNN: @naotokui
https://pbs.twimg.com/media/GnjIcJMa8AAG7mr.jpg
https://github.com/baku89/unim
https://gyazo.com/4007fb088b71bde6cf370574e3cc4f43
code:install.sh
git clone --recursive https://github.com/baku89/unim
yarn install
yarn dev
yarn とは?
https://baku89.github.io/unim/
https://gyazo.com/aeefb8b5a4e27c3017badb76e9e1ef8a
https://gyazo.com/1d03133c6b21f2c0f8ed69f5ef04e54f
998407.O - copy and destroy https://copyanddestroy.hatenablog.com/entry/2017/05/10/180306
2017
この2ヶ月、PC のディスプレイには日経平均(998407.O)、USDJPY、^DJI、^KS11、空売り比率、恐怖指数(VIX)といったチャートや指数がずっと表示されている。どういう意図かというと、世界の投資家連中は(この腐れ野郎共!!!)、このユーラシア大陸の東の端っこをどう見ているのか、っていうのを知りたかったから。起こっている出来事についてあるコトないコト、いろんな媒体、たくさんの事情通たちが好き勝手に情報を垂れ流している。それをそのまま直接見るんじゃなくて、腐れ投資家連中の行動の結果を通して、何が起きているのか理解出来ないか、と思ったから。
^DJI
https://g.co/finance/.DJI:INDEXDJX
NYダウ:指数情報・推移 - Yahoo!ファイナンス https://finance.yahoo.co.jp/quote/%5EDJI
^GSPC
https://g.co/finance/.INX:INDEXSP
S&P 500:指数情報・推移 - Yahoo!ファイナンス https://finance.yahoo.co.jp/quote/%5EGSPC
VIX
https://g.co/finance/VIX:INDEXCBOE
ドラッグストアで買えるあなたに合った薬の選び方を頼れる薬剤師が教えます
レスタミンコーワ軟膏
目薬や軟膏といった1日に何回か使うべき薬は、すぐそばに置いておくべき
ジップロックに入れている
胃腸薬
風邪に漢方薬
鼻炎、気管支といった呼吸器系に弱点があるので、小青竜湯、麦門冬湯を常備した
花粉症
ステロイドの点鼻薬が最強
https://gyazo.com/318f3ad90fb5c5c5a26905719587cd79
『パブロン鼻炎アタックJL」や「ナザールαAR O・1%」、「フルナーゼ点鼻 薬」といった、効果の高い「ステロイドの点鼻薬」も市販薬にあるため、セルフメケーションで使える薬が劣るわけではありません。
ブルーノ・ムナーリ『デザインとヴィジュアル・コミュニケーション』
ブルーノ・ムナーリのヴィジュアル・メッセージ
こんな感じにして写経していた
19インチのスクエアなモニターを縦にして、その前に書見台を置いた
イイ感じにスクロールして(& 画面位置を下げて)、本の読んでいる行と、モニタの入力している行を、できるだけ近づけて、視線の移動距離を適切にする
この写真の位置よりもっと下げて、入力行を書見台の上端ギリギリくらいにする
視線の移動、横より縦の方が、負担が少ない(僕の場合は)
https://gyazo.com/2711b0b19110f78c7b3f1efcc071caef
https://copyanddestroy.hatenablog.com/entry/2025/04/07/140329#ブルーノムナーリのビジュアルコミュニケーション
https://gyazo.com/8ed6025b5ff4f7fe3bab3e6dbf15204b
Windowsで日本語入力をしようとする際に意図せず最前面で左上に入力されてしまう現象について、解消方法を説明してくれているサイトはよく目にしますが、結局なんのためにあの機能は存在するのでしょうか?に対する中島 薫 (Kaoru Nakajima)さんの回答 - Quora
https://gyazo.com/af6ec61f8f1685a31117bec5e449b98a
WindowsのIME(Input Method Editor)はかな漢字変換などを行うアプリケーションから独立した入力支援エンジンですが、アプリケーションのプロセスに寄生した形の特殊な権限で動作しています。
このため、基本的な機能として、IMEは、
1. アプリケーションから「かな」で未確定文字列を受け取り
2. 変換候補を表示・選択し
3. 「漢字(など)」で確定文字列を返す
のが主な役割なのですが、さて、未確定文字列や変換候補を画面に描画するのは誰がやるべきでしょうか?
@kaorun:
昔、Quoraで回答した奴、わりと丁寧に説明したつもり。
Windowsで日本語入力をしようとする際に意図せず最前面で左上に入力されてしまう現象について、解消方法を説明してくれているサイトはよく目にしますが、結局なんのためにあの機能は存在するのでしょうか?
scrapbox のテーマ、季節ごとに切り替える
3月から春だった。まるまる1ヶ月忘れてた
3月~5月は気象庁の区分の上で春
https://scrapbox.io/projects/taizooo/settings/theme
Seasons Spring
2025-04-10
@fuba: たまにポリシーを再確認してる https://t.co/llO0Tcrh8F
2011/09/30
@fuba: 死ぬまでに一回ぐらい戦争起きて老後の計画とかチャラになるだろという姿勢が重要
適当に身体を動かす活動の内容
https://copyanddestroy.hatenablog.com/category/strava
いま運動時間は、週だいたい8時間で、その内訳はだいたいこんな感じ
ロードランニング 合計 3時間
トレイルランニング 合計 3時間
それ以外 合計 2時間
ロードランニングは
公園
フラットなパートは公園内の芝生広場くらい
それ以外は全部アップダウン
トレイルランニングは
裏山(愛宕山、大笠山、樹木見本園、武田の杜遊歩道、深草園地、要害山城)
裏山の入口(成田山不動堂)までが15分(ロードランニング)
そこからトレイルヘッド(愛宕山少年自然の家屋上)までが15分(山道と林道)
それ以外は
自転車(ママチャリ、ステーショナリーバイク)
踏み台昇降
基本的なドリル
散歩
ロードランニングと裏山・トレイルは半分ずつくらい
気持ちとしてはトレイルの方が多い感じ
なにを考えているのかというとランニングシューズの汎用性
いまはロードもふつうに走れるトレイル用のシューズを選んでいる
この反対に、不整地もふつうに走れるロードランニング用のシューズを選ぶというのもある
デイリートレーナーとかドア・トゥ・トレイル・シューズとか呼んだりする
汎用性のあるロードランニング用のシューズ
Adidas の Adizero SL とか
新谷仁美がメインに履いている
Adidas の選手がふだん使っている
Nike の Pgasus とか
大迫傑がメインに履いている
Nike の選手がふだん使っている印象
栁田大輝(100m)も使っていたりする
どちらかというと古いタイプのシューズ
昔からあるモデル
モデル番号が大きい
例えばナイキペガサスは41番、つまり40年を超えている
アフリカとかアメリカの長距離ランナー、不整地とか未舗装路とか走るからこういう汎用性の高いシューズを普段履いているイメージ
"TrackTown USA"と呼ばれる街・ユージンのランニングコース|Sushiman 🇯🇵
https://gyazo.com/05be14d5a379e373340d38282ac6cffb
Nike Pegasus 41 Review – iRunFar
https://gyazo.com/91f1072e485aede3d059cb2f8fd2c26b
https://gyazo.com/e544d6fdc5eb77d5d28077fd29f552c0
I run a mixture of pavement, gravel and dirt roads and trails, and rocky, technical singletrack, all from my doorstep. For most runs, I’ll hit a combination of multiple surface types. I value a versatile shoe that can handle many terrain types. That’s exactly what you get in the Pegasus 41s. Yes, these are technically road shoes. And, no, I wouldn’t make them my go-to shoes if I’m running technical singletrack every day. But, if you are like me and often run a mixture of pavement, dirt, gravel, or crushed limestone, you should absolutely have the Pegs in your running shoe rotation.
私は自宅のすぐ近くで、舗装路、砂利道、ダート ロードやトレイル、岩だらけのテクニカルなシングルトラックなどを走っています。ほとんどのランニングでは、複数の路面タイプを組み合わせて走ります。私は多くの地形タイプに対応できる万能なシューズを重視しています。ペガサス 41 はまさにそれです。はい、これは厳密にはロード シューズです。また、テクニカルなシングルトラックを毎日走る場合にこれを頼りにするシューズにすることはないでしょう。しかし、あなたが私と同じように、舗装路、ダート、砂利道、砕石石灰岩を頻繁に走る場合は、ランニング シューズのローテーションに必ずペガサス 41 を入れるべきです。
This last point about the shoe’s versatility is that the Pegs have become my go-to travel shoe. When I’m not checking a bag and trying to save packing space, I’ll often just wear the one pair of running shoes I plan on taking to the airport and onto the plane. If I’m taking one pair of running shoes, I prioritize versatility and aesthetics. Meaning I want a shoe that will handle different types of terrain and surfaces and doesn’t scream, look at my dorky running shoes. (Sorry, Hoka.) The Pegasus 41s have been that shoe for me over the past year.
このシューズの汎用性に関する最後のポイントは、ペガサス41が私の旅行の定番シューズになったということです。荷物を預けてスペースを節約したい時以外は、空港と機内に持っていく予定のランニングシューズを1足だけ履くことが多いです。ランニングシューズを1足だけ持っていく場合は、汎用性と見た目を重視します。つまり、様々な地形や路面に対応でき、「私のダサいランニングシューズを見て!」と思わせないシューズが欲しいのです(ホカ、ごめんなさい)。ここ1年間、ペガサス41はまさに私にとってまさにそのシューズでした。
Smalltalkの初期の歴史
ブートストラップ問題 - Wikipedia
セルフホスティング - Wikipedia
Smalltalk - Wikipedia
https://web.archive.org/web/20150611114355/https://www.bell-labs.com/usr/dmr/www/chist.html
The Development of the C Language*
Dennis M. Ritchie
Bell Labs/Lucent Technologies
https://gyazo.com/db055ca5be0a363fa9896da020da337f
https://copyanddestroy.hatenablog.com/entry/2025/04/15/110527
けっきょくまずはC言語からやり直している。
だいぶ端折ってポインタから始めてしまったので。いまは配列について。Web では(というか JavaScript ではというか) XPath や CSS Selector で DOM を列挙して(配列? NodeList ?にして)これを反復処理してたから、配列が重要なのはよく知っている。
JavaScript しか知らなかったから(知っているというにはおこがましいけど)、C言語とくらべると、まず「対象」があって、それぞれに可能なこと(メソッドとか)、その性質(プロパティとか)を内在していて、それが操作できる(抽出できる)というのは面白いな、現実世界だな、などと思った(適当ーーー)。
ポインタから始めちゃったからだけどC言語は変数をメモリのどこにどういった形で(大きさで)置くのか、どう操作するのか、っていうものに見えてて、これは反対にコンピュータの中に入っていくイメージがする(適当ーーー)。
JavaScript
Array.prototype.forEach() - JavaScript | MDN
Array.prototype.map() - JavaScript | MDN
Array.prototype.reduce() - JavaScript | MDN
DOM の紹介 - Web API | MDN
NodeList - Web API | MDN
C言語?
手続き型プログラミング - Wikipedia
プロシージャ
手続きの来歴
アセンブリ
アセンブリ言語 - Wikipedia
典型的なアセンブリ言語は、プログラムの操作の定義に使われる命令文をニーモニック、データセクション、アセンブリディレクティブの3種類に分類する
ニーモニック
オペランド
データセクション
アセンブリディレクティブ
x86/IA-32プロセッサにおいて8ビット即値をレジスタに入れる命令を例にとる。
この命令のバイナリコードは 10110 で、その後に3ビットのレジスタを指定する識別子が続く。AL レジスタの識別子は 000 なので、次に示す機械語は AL レジスタに 01100001 というデータをロードする。
code:foobar1.asm
10110000 01100001
このバイナリコードを人間が読みやすいように十六進法で表現すると次のようになる。
code:foobar2.asm
B0 61
ここで、B0は「ALに後続の値をコピーする」ことを意味し、61は01100001を十六進法で表したもの(十進法では97)である。インテルのアセンブリ言語では、この種の命令に MOV というニーモニックを割り当てており、セミコロン以下に説明的コメントを添えたアセンブリ言語での表現は次のようになる。
code:foobar3.asm
MOV AL, 61h ; Load AL with 97 decimal (61 hex)
この場合、定数61Hがソース、レジスタALがデスティネーションに該当し、命令が実行されると、定数61Hが、レジスタALに単純に格納される。これが人間にとってはさらに読みやすく覚えやすい。
オペコード
オペコード - Wikipedia
機械語関連の用語としては、操作命令の識別番号である。
例えば、Intel 8086の「指定されたレジスタの値を、指定されたメモリ番地に書き込め」という命令に割り当てられたオペコードは二進表記(ビット列)では「10001000」であり、16進表記では「0x88」であり、十進表記では「136」である
各CPUごとに、命令セットアーキテクチャ(ISA:Instruction Set Architecture)が定められており、その中でオペレーションコードが定められている。
オペコードの多くは、操作対象のデータを示すオペランド(被演算子)と組み合わせて使う。
喩えるなら、オペコードは数式における演算子のようなものであり、一方、オペランドは数のようなものである。演算子は基本的には数と組み合わせて使うように、オペコードは基本的にはオペランドと組み合わせて使う。
オペコード(演算子)
https://ja.wikipedia.org/wiki/演算_(数学)
オペランド(被演算子)
https://ja.wikipedia.org/wiki/被演算子
ただし、オペコードの中には暗黙的なオペランドを持つものもある。
オペコードが示す操作命令は、主にはレジスタ、コールスタック、他のメモリなどへデータを書き込む命令である。I/Oポートに関する命令もある。アドレッシングモードを利用して指定されアクセスされる。またCPUIDのような特別な命令や、算術、データコピー、論理演算の命令や、プログラム制御命令(分岐命令など)もある。
レジスタ
レジスタ (コンピュータ) - Wikipedia
一般に、論理回路において、フリップフロップなどにより状態を保持する装置をレジスタと呼ぶ。コンピュータにおいては、プロセッサが内蔵しているそれを指す。プロセッサには、命令セットで明示的に操作するレジスタ以外に、プロセッサ自身が動作するためのレジスタがあり、内部レジスタなどと呼ばれる。
プロセッサ内部のレジスタは、計算結果を一時的に保持したり、RAMやROMなどのメインメモリにアクセスする際のアドレスを保持したり、プロセッサや周辺機器の動作状態を保持・変更したりする。プロセッサの動作とは、極端にいえば、プログラムコードに従ってメインメモリとレジスタの間でデータを移送することだと表現できる。
コールスタック
https://ja.wikipedia.org/wiki/コールスタック
コールスタックまたは呼び出しスタック(英: call stack)とは、プログラムで実行中のサブルーチン(関数)に関する情報を格納するスタックである。
実行中のサブルーチンとは、呼び出されたもののまだ処理が完了していないサブルーチンのことを指す。
実行スタック (execution stack)、制御スタック (control stack)、関数スタック (function stack) などとも呼ばれる。なお文脈によっては、短縮して単にスタックともいう。
https://ja.wikipedia.org/wiki/スタック
スタック(英: stack)は、コンピュータで用いられる基本的なデータ構造のひとつで、データを後入れ先出し(LIFO: Last In First Out; FILO: First In Last Out)の構造で保持するものである。抽象データ型としてのそれを指すこともあれば、その具象を指すこともある。
特にその具象としては、割込みやサブルーチンを支援するために極めて有用であることから、1970年代以降に新しく設計された、ある規模以上のコンピュータは、スタックポインタによるコールスタックをメモリ上に持っていることが多い。
push(プッシュ) およびpop(ポップ) のスタックの単純な表現
https://gyazo.com/2fe35769d9e69882effafbe20e21d560
https://ja.wikipedia.org/wiki/スタック#プログラミング言語処理系の実装
ほとんどのコンパイルされたプログラムは実行時(ランタイム)環境においてコールスタックを使用し、プロシージャ/関数呼び出しに関する情報を格納するのに使っている。そして、呼び出し時のコンテキスト切り替えや呼び出し元への復帰の際に使用して、呼び出しの入れ子を可能としている。そのとき、呼び出される側と呼び出し側の間には引数や返り値をスタックにどう格納するかという規則が存在する。スタックは関数呼び出しの入れ子や再帰呼び出しを実現するための重要な要素となっている。この種のスタックはコンパイラが内部的に使用するもので、プログラマがこれを直接操作することはほとんど無い。
コールスタック内に関数の呼び出し毎に作られるフレームをスタックフレームと言い、それをたどって(トレースして)得られる呼び出しの情報をスタックトレースと言う。
プログラミング言語によっては、プロシージャ内のローカルなデータをスタックに格納する。ローカルなデータの(スタック上の)領域はプロシージャに入ってきたときに割り当てられ、出て行くときに解放される。C言語はこのような手法で実装されている典型例である。データとプロシージャ呼び出しに同じスタックを使うことは重大なセキュリティ問題を引き起こす可能性があり、プログラマはそのようなバグを作りこんで深刻なセキュリティ問題を発生させないように気をつける必要がある。
ヒープとスタック | 技術コラム | 東光高岳
スタックってなあに?(1) | 技術コラム | 東光高岳
メモリを壊してみましょう | 技術コラム | 東光高岳
コードサイズを聞かれたら | 技術コラム | 東光高岳
Chrome DevTools Console の AI assistance
窓辺の小石
塩田紳二
窓辺の小石(212) 分解された文字 | マイナビニュース
ユニコード文字では、複数の文字(コードポイント)を組み合わせて1つの文字とすることができる。たとえば、人物の絵文字では、スキントーン指定文字(EMOJI MODIFIER FITZPATRICK TYPE-x)を、使って肌の色を指定できる。さらに、ZERO WIDTH JOINERを使って複数の人物を組み合わせることができる。こうして作られた「文字」は、1つの絵文字になるが、複数のコードポイントから構成される。こうしたまとまりを「書記素」(Graphem。グラフィーム)という。
かつては文字は、バイトやワードで表現されていたが、今や文字列処理は、そういう簡単なものではなくなってきた。
ここでは、ターミナル内でPowerShell(Ver.7.5)を使い、文字列を書記素単位で扱ってみる。まずは、対象となる文字列は、$xに入っているとする(写真01)。ここで入れた絵文字は、3人の人物(ADALT、BOY、GIRL)のそれぞれにスキントーンの指定があり、3人をZERO WIDTH JOINERで結合させている。1つの絵文字だが、8つのユニコードコードポイントから構成されている。
https://gyazo.com/61aaafc9cc830cc305a32a3b25a9e89c
写真01:
複雑な絵文字を入れた文字列を$xに定義する。
ParseCombiningCharactersを使って書記素の開始位置を$pccに記憶させる。
以後、$pccを使って、文字列を書記素単位で分割、文字コード、コードポイントと書記素をオブジェクトに定義し、$uc(ユニコードのオブジェクト)、$cp(コードポイントのオブジェクト)とする。
これを使うと、Unicode文字のカテゴリやコードポイント表示が行える
【連載】窓辺の小石 | マイナビニュース
毎週金曜日更新
2021/03/23 からスタート
現在 2025/04/18 212回目
PowerShell 面白そう
PowerShell 全然わからんな
パラリンピック選手の驚きの脳#1ー義足のジャンパー、マルクス・レーム選手を調べてわかったこと | DISTANCE.media
https://gyazo.com/4680a1583bf6d4fbb8c39f32ea1b69cc
パラリンピックブレイン | 中澤 公孝 |本 | 通販 | Amazon
https://gyazo.com/408d4342ef70f05b436affc0ed48d756
パラリンピックブレイン - 東京大学出版会
sizeof - Wikipedia
カテゴリ:C言語 - Wikibooks
C言語/sizeof - Wikibooks
sizeofの基本概念
code:sizeof.c
#include <stdio.h>
int main() {
int i;
double d;
char c;
printf("int型のサイズ: %zu バイト\n", sizeof(int));
printf("double型のサイズ: %zu バイト\n", sizeof(double));
printf("char型のサイズ: %zu バイト\n", sizeof(char));
printf("変数iのサイズ: %zu バイト\n", sizeof i); // 括弧は省略可能
printf("変数dのサイズ: %zu バイト\n", sizeof d);
printf("変数cのサイズ: %zu バイト\n", sizeof c);
return 0;
}
sizeof演算子は、オペランドのサイズをバイト単位で返します。オペランドには型名または式を指定することができます。
この例では、sizeof演算子を使用して基本データ型と変数のサイズを取得しています。sizeofの結果はsize_t型(符号なし整数型)で返されるため、出力時には%zu形式指定子を使用します。
sizeofの文法
sizeof演算子は、次の2つの形式で使用できます:
1. sizeof expression
2. sizeof(type-name)
式の場合、括弧は任意ですが、型名の場合は必須です。
code:sizeof syntax.c
#include <stdio.h>
int main() {
// 式に対するsizeof(括弧は任意)
int arr10;
printf("配列全体のサイズ: %zu バイト\n", sizeof arr);
printf("配列の要素数: %zu\n", sizeof arr / sizeof arr0);
// 型名に対するsizeof(括弧は必須)
printf("long double型のサイズ: %zu バイト\n", sizeof(long double));
return 0;
}
Bash Prompt HOWTO
http://archive.linux.or.jp/JF/JFdocs/Bash-Prompt-HOWTO.html
https://www.gilesorr.com/bashprompt/
https://www.gilesorr.com/bashprompt/prompts/dan.html
code:sh
#!/bin/bash
# Dan's prompt looks like this:
# 543,p3,0$
#
PROMPT_COMMAND=""
function dan {
local cur_tty=$(tty | sed -e "s/.*tty\(.*\)/\1/")
PS1="\!,$cur_tty,\$?\$ "
}
https://tldp.org/HOWTO/Bash-Prompt-HOWTO/x834.html
code:sh
#!/bin/bash
# Dan's prompt looks like this:
# 543,p3,0$
#
PROMPT_COMMAND=""
function dan {
local cur_tty=$(temp=$(tty) ; echo ${temp:5});
PS1="\!,$cur_tty,\$?\$ "
}
端末が tty* じゃなくて tty or pts になってる
pts?
local 関数
${temp:5}
ブレース展開
${parameter:offset}
${parameter:offset:length}
code:sh
$ tty
/dev/pts/2
$ tty |wc -c
11
ブレース展開
第42回 bashの便利な機能 | gihyo.jp
{ } による反復展開
入力文中の中カッコ("{ }")内にコンマ(",")区切りで要素を列挙すれば、コマンドラインの解析時にその要素数だけ反復、展開してくれます。これは「ブレース(brace)展開」と呼ばれる機能です。
code: brace expansion.sh
$ echo {a,b}.txt
a.txt b.txt
https://linuxjm.sourceforge.io/html/GNU_bash/man1/bash.1.html#lbAZ
ブレース展開 (brace expansion) を使うと、任意の文字列を生成できます。この仕組みは パス名展開に似ていますが、 生成されたファイル名が実在する必要はありません。 ブレース展開されるパターンは、 前置部分 (preamble: 省略可能)、 対になるブレースで囲んだコンマ区切りの文字列またはシーケンス式、 後置部分 (postscript: 省略可能) を順に並べたものです。 前置部分はブレース内にある文字列それぞれの先頭部分に追加され、 後置部分は左から右に順に展開されて得られた それぞれの文字列の末尾に追加されます。
ブレース展開は入れ子にできます。 展開して得られた文字列はソートされず、 左から右への順番がそのまま残ります。 例えば a{d,c,b}e は `ade ace abe' と展開されます。
シーケンス式は {x..y[..incr]} の形になります。x と y は整数または 1 つの文字で、 省略可能な incr は増減分の整数です。 整数が与えられると、 x と y の間の両端を含む数を全て列挙した形に展開されます。 与る整数の前に 0 を付けると、全ての項が同じ幅に揃えられます。 つまり、x か y のどちらかが 0 で始まる場合、生成される全ての項が 同じ文字数になるように、必要であれば前に 0 が付けられます。 文字が与えられると 辞書順で x と y の間の両端を含む文字を全て列挙した形に展開されます。 x と y は同じ型である必要があります。 incr が与えられると、その値が各項の間の差となります。 incr のデフォルトは、1 または -1 のうち適切な方です。
パラメータの展開 https://linuxjm.sourceforge.io/html/GNU_bash/man1/bash.1.html#lbBB
${parameter:offset}
${parameter:offset:length}
部分文字列展開。 parameter を展開したものから最大 length 文字を取り出します。 先頭の文字は offset で指定します。length を省略すると、 offset で指定した文字を先頭にして、 parameter の残り全部が含まれる部分文字列に展開します。 length と offset は算術式です (後述の 算術式評価 を参照)。 offset を評価すると 0 未満の数になる場合、この値は parameter の値の末尾からのオフセットとして使われます。 length を評価すると 0 未満の数になる場合、 parameter が @ ではなく、配列でも連想配列でもなければ、 この値は文字数ではなく parameter の値の末尾からのオフセットとして使われ、 展開結果は 2 つのオフセットの間の部分文字列となります。 parameter が @ ならば、結果は offset から始まる length 個の位置パラメータになります。 parameter が @ または * のインデックスが付いている配列名ならば、 結果は配列の ${parameter[offset]} を先頭とする要素 length 個となります。 負の offset は、指定された配列の最大のインデックス + 1 からの相対値と解釈されます。 連想配列に部分文字列展開した場合の結果は決められていません。 負のオフセットを指定するときには、:- 式と混同されないよう、 1 つ以上の空白でコロンと離す必要があることに注意してください。 位置パラメータを使う場合以外は、 部分文字列のインデックスは 0 から始まります。位置パラメータの場合には、 インデックスは 1 から始まります。 位置パラメータが使われて offset が 0 の場合、 $0 の値が先頭に置かれます。
Linuxのプロセスのコマンドライン引数についていろいろ
/study-hiroki/ttyとptyとpts
https://gyazo.com/641f96f9e35eb72119bf81aae7edbb4d
What is tty/pty/pts
https://gyazo.com/612215559a57ca1de10f2a06088a6e52
今月は貼っているばかりでなんも整理していないけどもう面倒なので 2025/05 へ
top 2025/04#67e657d7b30c010000e491ff
end