kakts-log

programming について調べたことを整理していきます

Android Studio で新規プロジェクト作成後にビルドするとエラーとなる

概要 Android Studioの2025年1月時点の最新版を利用して新規プロジェクトを作成し、ビルドすると下記のエラーが出てしまう問題があり、その解決法をまとめます。 Dependency 'androidx.core:core:1.15.0' requires libraries and applications that depend o…

gcovによるテストカバレッジと生成されるgcovデータファイルについて

gcc

概要 gccのテストカバレッジツールであるgcovを使ったテストカバレッジ計測と、そのgcovを利用する際に生成される.gcnoや.gcda などのデータファイルについて簡単に整理します。 gcovとは gcc.gnu.org gcovとは、GCCと合わせて利用できる、テストカバレッジ…

Valkeyのビルド、サーバ起動方法とvalkey-benchmarkを使ったValkeyとredisのベンチマーク実行方法

概要 昨年 redisからフォークされたvalkeyがリリースされました。 redisからvalkeyへは、互換性があるため比較的容易に切り替えができると思います。 ここでは、ローカル環境でvalkeyをビルドして利用する方法と、valkeyの公式で用意されているベンチマーク…

rust 非同期I/Oライブラリのtokio でasync fnを使う際にrt-multi-threadを有効にする

概要 rustで 非同期I/Oライブラリのtokioを使って、async fnを利用する際、実行時に下記エラーとなった際の対処法をまとめます。 error: The default runtime flavor is multi_thread, but the rt-multi-thread feature is disabled. 今回は簡単なweb apiを…

新刊「ソフトウェアアーキテクトのための意思決定術」の内容レビューに関わらせていただきました。

先日 2024年12月11日に発売予定の「スタッフエンジニアの道 - 優れた技術専門職になるためのガイド」の翻訳内容のレビューに関わらせていただき、先日 書籍をご恵贈いただきました。 book.impress.co.jp ソフトウェアアーキテクトのための意思決定術 リーダ…

「Linuxプログラミングインタフェース」を通読してみて

この記事は、Linux Advent Calendar 2024 第24日目の記事です。 Linux - Qiita Advent Calendar 2024 - Qiita https://www.oreilly.co.jp/books/9784873115856/ Linuxプログラミングインタフェース作者:Michael KerriskオライリージャパンAmazon OSまわりの…

VPN接続時にAndroid Studioで「loading devices」の表示のままデバイス選択ができなくなる

概要 Android Studioにおいて、Androidアプリの開発時の動作確認にVirtual Deviceを使う場合、デバイス選択項目の箇所に「loading devices」と表示が出たままでDeviceが選択できなくなる場合があります。 原因は複数あるかと思いますが、私の環境で直面した…

「コンピュータシステムの理論と実装 第2版」の内容レビューに参加させていただきました。

先日、2024年 12月2日に発売された翻訳書「コンピュータシステムの理論と実装 第2版」の内容レビューに参加させていただきました。 www.oreilly.co.jp コンピュータシステムの理論と実装 第2版 ―モダンなコンピュータの作り方作者:Noam Nisan,Shimon Schocke…

新刊「スタッフエンジニアの道 - 優れた技術専門職になるためのガイド」の内容レビューに関わらせていただきました。

2024年08月26日に発売予定の「スタッフエンジニアの道 - 優れた技術専門職になるためのガイド」の翻訳内容のレビューに関わらせていただき、先日 書籍をご恵贈いただきました。 www.oreilly.co.jp スタッフエンジニアの道 ―優れた技術専門職になるためのガイ…

redis のsetのnxオプションについて

概要 redisでsetコマンドのnxオプションというものがあり setする際に、キーがまだ存在していない場合にのみ値をセットできるもので、redisによるロック処理に使われます。 このnxオプションについて調べてみます。 SET | Docs NX -- Only set the key if it…

Go: for rangeにおけるmapのイテレーション順序について

概要 Goにおけるfor rangeでmapをループさせる際のイテレーション順序について整理します。 Goにおいて、for rangeでmapの要素をループさせる際、イテレーションの順序は決まっていません。 これはGo言語の仕様で定められており、ループ順序を前提としたコー…

Goコンパイラによるコンパイル処理について整理

概要 Goのコンパイラにおいて、コンパイル時にいくつかのフェーズに分かれており、各フェーズについてざっと概要を整理します。 github.com Goコンパイラによるコンパイルでは、主に下記のようなフェーズをたどります。 - 字句解析 - 構文解析 - 型チェック …

SystemV メッセージキューの作成とipcsを用いたメッセージキューの確認方法

概要 System V メッセージキューは、Linuxにおけるプロセス間通信方法の一種で、メッセージ形式のデータをプロセス間でやり取りするのに使われます。 主に下記3つがあり、今回はメッセージキューについて扱います。 メッセージキュー セマフォ 共有メモリ 今…

開発におけるドキュメント運用の理想状態と課題

概要 開発におけるドキュメントの運用方法について、自分なりの理想状態についてまとめます。 簡単にまとめると以下の3つとなります。 ドキュメントが容易に見つかる ドキュメントの正確性 ドキュメントの抜け漏れがないこと 上から順に実行難易度が下がり、…

google/wireでDIする際のgenerics対応について

Go

概要 この記事はQiita Advent Calendar 2023 Go言語の第十七日の記事です。 qiita.com google/wire で genericsに対応させる方法をまとめる google/wireについて github.com google/wireとは、GoでのDependency Injection用のコード生成ツールとなります。 w…

C: Pthreadによるスレッド作成とデタッチ

概要 CにおいてPthread(POSIX Thread library)ライブラリを使い、pthread_create()によりスレッドの作成をした後、別のスレッドからpthread_join()を実行し、作成したスレッドの終了を待ち、終了状態を得ることが可能です。 場合によっては、作成したスレッ…

stdioバッファの方式について

c

概要 fork()による子プロセスを作成するプログラムにおいて、printfなどのstdioライブラリの関数を実行した場合、標準出力が端末とファイルの場合で出力結果が異なる場合があります。 この挙動について整理します。 (参考: LINUXプログラミングインタフェー…

C: シグナルハンドラ内で非リエントラントな関数を扱った際の挙動

c

概要 Cにおいて、シグナルハンドラ関数内で非リエントラントな関数を実行した際に意図しない挙動が生じる問題についてかんたんに整理します。 リエントラント: Reentrant 再入可能 - マルチスレッド安全なもの 非リエントラント: Non-Reentrant 再入不可 - …

inotify_add_watch()によるファイル・ディレクトリ変更検知イベントを受信した際の挙動について

概要 linuxシステムコールでのinotify_add_watch(),によるファイル、ディレクトリの変更検知を行った際の挙動を整理する。 監視対象として特定のディレクトリを指定した場合、変更イベントの内容を保持するinotify_event構造体のname とlenにそれぞれ変更が…

Golangでファイル監視を行う

Go

概要 Goでファイル監視の方法についての記事です。 Goの標準パッケージではファイル監視の機能は提供されていないが、 github.com/fsnotify/fsnotify を使ったファイル監視のやり方をまとめます。 fsnotifyについて github.com/fsnotify/fsnotify 各プラット…

os.Exit()とdeferされた関数について

概要 os.Exit()を実行した際、プログラムが即座に終了するため、defer された関数が呼ばれない。 これについて整理します。 os.Exit() ドキュメントを確認すると、defer された関数が呼ばれないことも明記されている Exit causes the current program to exi…

JavaScript Primer改訂第2版の内容レビューに参加しました。

先月出版された「JavaScript Primer 改訂2版 迷わないための入門書」の内容レビューに関わらせていただきました。 先日出版社の方から、完成した書籍をご恵贈いただきました。ありがとうございます。 www.kadokawa.co.jp JavaScript Primer 改訂2版 迷わない…

RPMのgpgkeyの確認方法

概要 yumでのpackage installでPublic keyに関するエラーが出た際に、RPMのgpgkeyの確認方法が気になったのでまとめてみた gpgkeyの確認方法 インスタンス内でインストールされているyum package用のgpgkeyの確認は下記方法でできる rpm -q gpg-pubkey --qf …

64ビットアーキテクチャにおいてインラインアセンブラでシステムコールを呼び出す

概要 独習アセンブラ8.4.1において、Cでインラインアセンブラによってシステムコールwriteを呼び出し、標準出力に文字列を出力するコードを実行させる際に、64bit環境では下記のエラーが出て実行できませんでした。 64bit環境で動作させるための方法を調べて…

Cでインラインアセンブラコードをgccでコンパイルする際に "relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object;" というエラーが出た時の対処法

gcc

概要 GCCのインラインアセンブラを利用して Cで書かれたコード内でアセンブリ言語のプログラムを埋め込み、コンパイルした場合に下記のエラーがでました gcc実行時に、内部でldコマンドが実行された時のエラーのようです。 $ gcc -fno-pic -fomit-frame-poin…

【独習アセンブラ 4.5デバッガによるトレース】apple silicon macのローカルでgdbの代わりにlldbを使ったトレースの実行方法

概要 「独習アセンブラ」を読んでアセンブラを学んでいて、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用にmacのターミナルでwordle用の辞書ヘルパーをワンライナーで

やりたいこと wordle 用に、指定した文字を含んだ5文字の単語の一覧を表示させて、wordleを解きやすくしたい 前提 MacOS 12.3 英単語をどうやって取得するか 今回はMacOSで用意されている英単語辞書を利用する MacOS内での英単語辞書について /usr/share/dic…

systemd systemctlでデーモン起動しない場合のログ確認方法

systemd により、os上でsystemctl start hoge のようにデーモンプロセスを起動する際、 プロセスが立ち上がらず、原因がわからなくて困ることがある $ systemctl start hoge.service # うまく起動せず、ステータス確認 $ systemctl status hoge -l ● hoge.se…

Apple Silicon macで公式のDocker MySQLイメージを利用する

MySQL公式が Apple Silicon用のMySQLイメージをサポート Apple Silicon (ARM 64) Macが出てから、DockerではARM64用の公式MySQLイメージが用意されておらず、 --platform linux/amd64 を指定してIntel用イメージをエミュレーションするか、代わりにmariadb …