2024年08月26日に発売予定の「スタッフエンジニアの道 - 優れた技術専門職になるためのガイド」の翻訳内容のレビューに関わらせていただき、先日 書籍をご恵贈いただきました。 www.oreilly.co.jp スタッフエンジニアの道 ―優れた技術専門職になるためのガイ…
概要 redisでsetコマンドのnxオプションというものがあり setする際に、キーがまだ存在していない場合にのみ値をセットできるもので、redisによるロック処理に使われます。 このnxオプションについて調べてみます。 SET | Docs NX -- Only set the key if it…
概要 Goにおけるfor rangeでmapをループさせる際のイテレーション順序について整理します。 Goにおいて、for rangeでmapの要素をループさせる際、イテレーションの順序は決まっていません。 これはGo言語の仕様で定められており、ループ順序を前提としたコー…
概要 Goのコンパイラにおいて、コンパイル時にいくつかのフェーズに分かれており、各フェーズについてざっと概要を整理します。 github.com Goコンパイラによるコンパイルでは、主に下記のようなフェーズをたどります。 - 字句解析 - 構文解析 - 型チェック …
概要 System V メッセージキューは、Linuxにおけるプロセス間通信方法の一種で、メッセージ形式のデータをプロセス間でやり取りするのに使われます。 主に下記3つがあり、今回はメッセージキューについて扱います。 メッセージキュー セマフォ 共有メモリ 今…
概要 開発におけるドキュメントの運用方法について、自分なりの理想状態についてまとめます。 簡単にまとめると以下の3つとなります。 ドキュメントが容易に見つかる ドキュメントの正確性 ドキュメントの抜け漏れがないこと 上から順に実行難易度が下がり、…
概要 この記事はQiita Advent Calendar 2023 Go言語の第十七日の記事です。 qiita.com google/wire で genericsに対応させる方法をまとめる google/wireについて github.com google/wireとは、GoでのDependency Injection用のコード生成ツールとなります。 w…
概要 CにおいてPthread(POSIX Thread library)ライブラリを使い、pthread_create()によりスレッドの作成をした後、別のスレッドからpthread_join()を実行し、作成したスレッドの終了を待ち、終了状態を得ることが可能です。 場合によっては、作成したスレッ…
概要 fork()による子プロセスを作成するプログラムにおいて、printfなどのstdioライブラリの関数を実行した場合、標準出力が端末とファイルの場合で出力結果が異なる場合があります。 この挙動について整理します。 (参考: LINUXプログラミングインタフェー…
概要 Cにおいて、シグナルハンドラ関数内で非リエントラントな関数を実行した際に意図しない挙動が生じる問題についてかんたんに整理します。 リエントラント: Reentrant 再入可能 - マルチスレッド安全なもの 非リエントラント: Non-Reentrant 再入不可 - …
概要 linuxシステムコールでのinotify_add_watch(),によるファイル、ディレクトリの変更検知を行った際の挙動を整理する。 監視対象として特定のディレクトリを指定した場合、変更イベントの内容を保持するinotify_event構造体のname とlenにそれぞれ変更が…
概要 Goでファイル監視の方法についての記事です。 Goの標準パッケージではファイル監視の機能は提供されていないが、 github.com/fsnotify/fsnotify を使ったファイル監視のやり方をまとめます。 fsnotifyについて github.com/fsnotify/fsnotify 各プラット…
概要 os.Exit()を実行した際、プログラムが即座に終了するため、defer された関数が呼ばれない。 これについて整理します。 os.Exit() ドキュメントを確認すると、defer された関数が呼ばれないことも明記されている Exit causes the current program to exi…
先月出版された「JavaScript Primer 改訂2版 迷わないための入門書」の内容レビューに関わらせていただきました。 先日出版社の方から、完成した書籍をご恵贈いただきました。ありがとうございます。 www.kadokawa.co.jp JavaScript Primer 改訂2版 迷わない…
概要 yumでのpackage installでPublic keyに関するエラーが出た際に、RPMのgpgkeyの確認方法が気になったのでまとめてみた gpgkeyの確認方法 インスタンス内でインストールされているyum package用のgpgkeyの確認は下記方法でできる rpm -q gpg-pubkey --qf …
概要 独習アセンブラ8.4.1において、Cでインラインアセンブラによってシステムコールwriteを呼び出し、標準出力に文字列を出力するコードを実行させる際に、64bit環境では下記のエラーが出て実行できませんでした。 64bit環境で動作させるための方法を調べて…
概要 GCCのインラインアセンブラを利用して Cで書かれたコード内でアセンブリ言語のプログラムを埋め込み、コンパイルした場合に下記のエラーがでました gcc実行時に、内部でldコマンドが実行された時のエラーのようです。 $ gcc -fno-pic -fomit-frame-poin…
概要 「独習アセンブラ」を読んでアセンブラを学んでいて、apple silicon(arm)のmacのローカル環境でコード書いてデバッグしています。 独習アセンブラ 新版作者:大崎 博之翔泳社Amazon 4.5「デバッガによるトレース」 で、gdbを使ってcのソースコードをコン…
概要 下記のように、a.txtのファイルを実体とし、それを参照したシンボリックリンクが2つ(b.txt, t/c.txt)あるとする。 この場合、a.txtを参照したシンボリックリンクを見つけたい場合、findコマンドを使うことで実現できます。 - b.txt - t/c.txt $tree . ├…
やりたいこと wordle 用に、指定した文字を含んだ5文字の単語の一覧を表示させて、wordleを解きやすくしたい 前提 MacOS 12.3 英単語をどうやって取得するか 今回はMacOSで用意されている英単語辞書を利用する MacOS内での英単語辞書について /usr/share/dic…
systemd により、os上でsystemctl start hoge のようにデーモンプロセスを起動する際、 プロセスが立ち上がらず、原因がわからなくて困ることがある $ systemctl start hoge.service # うまく起動せず、ステータス確認 $ systemctl status hoge -l ● hoge.se…
MySQL公式が Apple Silicon用のMySQLイメージをサポート Apple Silicon (ARM 64) Macが出てから、DockerではARM64用の公式MySQLイメージが用意されておらず、 --platform linux/amd64 を指定してIntel用イメージをエミュレーションするか、代わりにmariadb …
概要 vscodeでGoのコードを書く際に、関数などの定義元にジャンプさせたい時の設定。 手順 Go公式のvscode拡張機能を有効にする まず、Go公式のvscode拡張機能が有効になっているか確認します。 github.com Goの公式の拡張機能が有効になっているか確認する …
UNIX/linuxベースのOSにおいて、C標準ライブラリを使って、ファイルシステムにおける指定したディレクトリの情報を取得する方法をまとめます。 環境 m1 mac OS(11.6) ファイルシステムにおけるディレクトリについて ディレクトリはデータ領域にディレクトリ…
Qiita Node.js アドベントカレンダー2021の20日目の記事です qiita.com v8のbytecodeについて、自分で書いたコードでどうやって確認するか気になったので調べてみました。 v8によるバイトコード生成 v8がどうやってバイトコード、機械語を生成するかざっくり…
前提 - python 3.7.12 - m1 mac - mac OS Big Sur 11.6 m1 macでpython3系を利用し、pip installを実行すると下記のエラーがでた。 ModuleNotFoundError: No module named '_ctypes' 対処法 自分はpythonのバージョンを3.8.12にあげたら対応ができた。 いろ…
macOSで manコマンドを使った際にmacOSで指定したシステムコール・Cライブラリなどのマニュアルをmanコマンドで調べる場合、 下記のように No manual entry for ... という文言がでてマニュアルが表示されない場合があります。 man fcntl No manual entry fo…
コミット済みのディレクトリをgitの管理対象から外したい場合 あとから.gitignoreで修正しても、その対象のディレクトリ・ファイルに変更があった場合はgitのステージ対象に入ってしまいます。 こうしたディレクトリ・ファイルをコミット後にgitの管理対象か…
概要 指定した man コマンドで指定したキーワードに関連したコマンド、システムコールなどの項目を確認したい場合、 -kオプションを使えば可能となる。 manコマンド自体のマニュアルより参照 $ man man .... -K Search for the specified string in *all* ma…
概要 本記事は Qiita Kubernetes Advent Calendar 2020 その2 の第7日目の記事となります。 qiita.com CNCFのSandbox Projectsの1つであるKEDA(Kubernetes-based Event Driven Autoscaling) というオートスケーラーについて、公式ページの内容を整理して紹介…