いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-239 (bep/logg というログライブラリ使ってみた)

概要 サンプル 参考情報 概要 bep/logg というログライブラリが公開されていて、ベンチマークの結果を見ると速かったのでちょっと触ってみました。 apex/log からフォークしたライブラリみたいですね。 まだ、バージョンは v0.1.0 だけど、シンプルな構成で…

Goメモ-238 (Go 1.19 がリリース)

概要 本家 その他の有用情報 参考情報 概要 先日、Go 1.19 がリリースされましたね。各所で情報を公開してくださっている方々がいっぱいいらっしゃるので忘れないうちに自分用にメモメモ。。。 本家 go.dev go.dev go.dev go.dev go.dev 個人的には、今回追…

Goメモ-237 (別プロセスにシグナルを送る)(os.FindProcess, /proc)

概要 サンプル Taskfile.yml sender receiver 実行結果 参考情報 概要 よく忘れるので、ここにメモメモ。。。 たまに、Goのプログラムから他のプロセスに対してシグナルを送りたいときがあります。 以下、サンプルです。 サンプル 2つのプログラムで試して…

Goメモ-236 (指定回数分テストを実行)(go test, count)

概要 サンプル Taskfile.yml lib.go lib_test.go 実行結果 参考情報 概要 よく忘れるので、ここにメモメモ。。。 goでテストを行う際、たまに所定の回数分テストを実行してほしいときがあります。 その場合、以下のように指定します。 $ go test -count N ./…

Gitpod で Go 1.19 のイメージを使う

追記(2022-08-10) 概要 参考情報 追記(2022-08-10) gitpod/workspace-go の latest タグが更新されましたので、latestタグのイメージが Go1.19 になっています。 なので、2022-08-10現在では以下のタグは利用しなくても Go1.19 が利用できるようになって…

Goメモ-235 (ランダムでテストの実行)(go test, shuffle)

概要 サンプル Taskfile.yml lib_test.go 実行結果 参考情報 概要 よく忘れるので、ここにメモメモ。。。 goでテストを行う際、たまにランダムでテストを実行してほしいときがあります。 その場合、以下のように指定します。 $ go test -shuffle on ./... サ…

Goメモ-234 (カバレッジの結果をHTMLで出力)(coverprofile, go tool cover)

概要 サンプル Taskfile.yml lib.go lib_test.go 実行結果 参考情報 概要 よく忘れるので、ここにメモメモ。。。 goでカバレッジを採取した後、それをHTMLで出力するには以下のようにします。 $ go test -coverprofile /path/to/coverage/result ./... $ go …

Goメモ-233 (ライブラリの利用可能バージョンを表示)(go list -m -versions)

概要 サンプル Taskfile.yml 実行結果 参考情報 概要 よく忘れるので、ここにメモメモ。。。 利用しているライブラリで、どのバージョンが利用可能なのかを調べるには以下のようにします。 サンプル Taskfile.yml version: "3" tasks: default: cmds: - go l…

Goメモ-232 (xmlのMarshal/Unmarshalで入れ子の要素を指定)

概要 サンプル 参考情報 概要 よく忘れるので、ここにメモメモ。。。 xml の Marshal/Unmarshal で入れ子の要素の値を取得する場合、ちゃんと要素毎に type 作って指定していくのが正道だと思いますが、面倒なので一気に取得したいときがあります。 んで、 x…

Goメモ-231 (メモリコピー無しで string から []byte へ変換する)(unsafe)

概要 サンプル 参考情報 概要 使うことはほぼ無いと思いますが、知っておくと役に立つときが来るかもしれません。 Goで string から []byte へ変換したい場合は、通常以下のように b := []byte(s) とします。これで何も問題ないのですが、内部ではメモリコピ…

Goメモ-230 (メモリコピー無しで []byte から string へ変換する)(unsafe)

概要 サンプル 参考情報 概要 使うことはほぼ無いと思いますが、知っておくと役に立つときが来るかもしれません。 Goで []byte から string へ変換したい場合は、通常以下のように s := string(buf) とします。これで何も問題ないのですが、内部ではメモリコ…

forfilesコマンド(windowsでN日前のファイルを探す)

概要 参考情報 概要 知らなかったので、忘れないうちにメモメモ。。。こんなコマンドあったんですね。 docs.microsoft.com linuxのfindコマンドみたいな使い方が出来るので、これは便利。 以下のようにすると、カレントディレクトリの下から3日以前のファイ…

Goメモ-229 (マップはスレッドセーフではない)

概要 サンプル Taskfile.yml Mutexでクリティカルセクションを作っているサンプル 参考情報 概要 少し前に以下のメモをアップしました。 devlights.hatenablog.com 上記ではスライスでしたが、マップも同様です。 こちらはスライスとは違って、ちょっとでも…

Goメモ-228 (効率的に文字列を結合する)(Go Collective)

概要 サンプル main.go Taskfile.yml bench_test.go 参考情報 概要 Stackoverflowには Go Collective というのがあります。 stackoverflow.com The official Q&A channel for Google's Go Programming Language. と書いてある通り、公式のQ&Aとなっていて、…

Goメモ-227 (URLクエリからパラメータを取得)(Go Collective)

概要 サンプル main.go Taskfile.yml 参考情報 概要 Stackoverflowには Go Collective というのがあります。 stackoverflow.com The official Q&A channel for Google's Go Programming Language. と書いてある通り、公式のQ&Aとなっていて、いい質問と回答…

Goメモ-226 (http.ListenAndServeで起動したサーバをシャットダウンする)

概要 サンプル main.go Taskfile.yml 参考情報 概要 よく忘れるので、以下にメモメモ。。。 そのまま http.ListenAndServe で起動すると当然駄目なので、http.Server を作って起動します。 サンプル main.go package main import ( "context" "log" "net/htt…

マイクロソフトがソフトウェアの部品表(SBOM)を自動生成するツールを公開 (sbom-tool)

概要 概要 Publickeyさんの方で以下の記事が上がっていたので、忘れないうちにメモメモ。。。 今後、使うことになるかもしれないので。 www.publickey1.jp devblogs.microsoft.com ツールは以下で公開されています。 github.com SBOM と SPDXって何?って場…

Goメモ-225 (ジェネリックなビットフラグ処理)

概要 サンプル 参考情報 概要 以前にビットフラグについて、以下のような記事をアップしました。 devlights.hatenablog.com Go 1.18 からジェネリックが導入されたので、このような処理が汎用的に書けるようになりました。 てことで、ちょっとしたサンプルで…

Goメモ-224 (スライスはスレッドセーフではない)

概要 サンプル Taskfile.yml データ競合が発生する版 データ競合が発生しないようにする(1) データ競合が発生しないようにする(2) データ競合が発生しないようにする(3) 参考情報 概要 Goは、非同期処理が比較的簡単に書けるので、ちょちょいと書い…

Goメモ-223 (bufio.Scanner で カスタムな bufio.SplitFunc を利用するやり方)

概要 サンプル 参考情報 概要 使うことはほぼ無いかもしれませんが、知ってるとちょっと便利かもしれません。 bufio.Scanner さん に対して、独自のデリミタでSplitしてほしい場合、bufio.SplitFunc を作って渡します。 このやり方がちょっと難しかったので…

Goメモ-222 (Goが対応している GOOS/GOARCH の組み合わせを出力)

概要 サンプル Taskfile.yml 参考情報 概要 よく忘れるので、忘れないうちにメモメモ。。 Goでクロスコンパイルするときに、GOOSとGOARCHを設定する必要がありますが、それの一覧を出力するやり方。 Goの標準コマンドで出力できます。 $ go tool dist list …

Pythonメモ-121 (mypy の 使い方ガイド, The Comprehensive Guide to mypy)

概要 参考資料 概要 久しぶりに python をコマンドラインでガチャガチャやっていると、mypyとかtype hintとかについて忘れていること多いのでガイドみたいなのないかなーって探したら以下を発見。忘れないうちにメモメモ。。。 sadh.life 基本からしっかりと…

gitpod-io/template-flutter を使って gitpod で flutter の環境を作る

概要 apt-get でコケる 調整後の .gitpod.yml と .gitpod.Dockerfile .gitpod.yml .gitpod.Dockerfile 起動したイメージ サンプルリポジトリ 概要 バッチリ動く環境が作れたので、忘れないうちにメモメモ。。。 以前、gitpod で flutter の環境を作るって以…

git difftool で1ファイルずつじゃなくてまとめて差分を確認する (-d, --dir-diff)

git

概要 -d (--dir-diff) オプションを指定 参考情報 概要 知らなかったので、忘れないうちにメモメモ。。。 以前の記事で以下のように WinMerge とか Beyond Compare を設定するやり方は記載していました。 (今はVSCodeとかがデフォルトで設定されるので、その…

Javaでディレクトリを再帰的に削除するやり方 (Path, Directory, recursive delete)

概要 サンプル 参考情報 概要 いつも使いたいときに忘れているので、ここにメモメモ。。。 commons-ioのFileUtils使えって言われればそうなのですが、自力でやらないといけないときもあります。 C#とかだと、Directory.Delete(path, true) ってやるとバサー…

Goメモ-221 (構造体のタグ情報(Struct Tag)を取得)

概要 サンプル 参考情報 概要 Go には構造体のフィールドにタグをつけることができます。一種のメタ情報ですね。 jsonやxmlやyamlを処理する際によくお世話になる `json:"id"` とかのやつです。 基本的に利用するライブラリが定義しているタグを指定して使う…

gocloc (Goで作られた cloc クローン)

概要 サンプル 参考情報 概要 Goで作られた cloc クローン。使いやすいですねー。作者さんに感謝です。 github.com サンプル 試しに、自分のリポジトリ でやってみたら、以下のように出力されました。 gitpod /workspace/try-golang (master) $ go run githu…

vim 9.0 がリリース

vim

概要 参考情報 概要 いつのまにか、vim 9.0 がリリースされていた。 vimスクリプトに大きな改善が入って、速度がとても上がったみたいですね。 まだ、使えてないですが、後から調べられるよう情報メモメモ。。。 Vim 9.0 : vim online Vim: version9.txt vim…

vim 直近の検索パターンを使って置換処理

vim

概要 参考情報 概要 よく忘れるのでここにメモメモ。。。 先日の以下の記事と同じテクニックになるのですが devlights.hatenablog.com 一旦検索した後に、同じ検索パターンで置換したい場合が結構あったります。 以下のようにすると、直近の検索パターンを使…

iOS Safari で window.innerWidthとinnerHeight が微妙にずれる (縦横の向きを切り替えたとき)

web

概要 参考情報 概要 忘れないうちにメモメモ。。。 現在、使っているのは iOS 15.5 です。 Web画面作っていて、端末の向きを縦横変更した際に何故か window.innerWidth と window.innerHeight が微妙にずれた値になる・・・という現象が発生していました。 S…