2023-01-01から1年間の記事一覧
特に bash のみで作る理由はないですが、こんなことも出来るんだという紹介です。 [目次] echo のオプション r c progress bar 実装
この記事は Go 言語 Advent Calendar 2023 シリーズ 2 の 10 日目の記事です。 openapi から Go のコードを生成するツールとしては、oapi-codegen, ogen などが勢いありますが、今回は openapi generator にまつわる話をします。 このライブラリで生成された…
Golang で Dockerfile を Multi-stage builds で作成した際に、 docker run すると『version `GLIBC_2.34' not found』のエラーが出ることがありました。 今回はその原因と解決策について共有します。 事象 環境 Host mac m2 Docker v24.0.7 Dockerfile buil…
課題 terminal 上のコマンドは実行履歴が残っており、それを shell の history と呼ぶのですが、そんな history は情報の山となってます。 自分は主に『過去のコマンドを history から呼び出し fzf で曖昧に検索する』みたいな用途で使っているのですが、そ…
『Kubernetes と名前解決』という記事が非常に面白くためになったため、自分なりに実験したものもまとめさせていただきます。 [目次] まとめ DNS をみるための準備 環境 サービスを持つ minimum の k8s 構成を kind と helm で作成する サービス名で名前解決…
まとめ GitLab の Go module には、リポジトリの終わりに .git をつける GitHub の Go module には .git をつけない
原因 pyenv で複数のバージョンを使っており, VSCode の解釈する python のバージョンとターミナル(実際に実行する部分)でのバージョンに差異があったことが原因。 解決方法 VSCode で python のプロジェクトを開いてる時、下のバーに python Interpreter …
どうしてもヌルバイト (NUL) を出力・使用したいことがあったで、その時の出し方についてメモしておきます。 [目次] ヌルバイトとは ターミナルからの出力 どんな問題が? db: postgresql コマンドの結果が期待値とならない シェル設定によってはセパレータ…
典型的な『worker pool』パターンを実装するのに便利な semaphore の紹介です。 チャネルを使った流量制御のパターンと比べ、デフォルトで ctx のキャンセルに対応していることを実動で確認します。 [目次] channel パターン sync/semaphore パターン おまけ…
HTTP サーバーってどんな仕組みで動いてるのかずっと気になっていたのですが、 『ふつうのLinuxプログラミング』に説明 + c での実装があったため、その理解を元に適当に Go でやってみました。 ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べるg…
lsof を使うのが簡単で良さそうです。 lsof -i:8080 $ lsof -i:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME main 77228 kokoichi 4u IPv6 0x50df81af803226e5 0t0 TCP *:http-alt (LISTEN) # その後該当プロセスを削除する場合。 # 77228 は上…
最近 pixel watch を買ってみたので WearOS を少し触ってみています。 今更ですが『Jetpack Compose で始める WearOS 開発入門』という内容で、Android 開発との違いに焦点を当てて記事を書いてみます。 (Jetpack Compose での wear os 開発の基礎となる an…
パイプの中身をシステムコールレベルで理解・実装する 『ふつうのLinuxプログラミング』を読んで勉強させてもらったメモになります。 コードは載ってなかったため自分で実装してみました。 ふつうのLinuxプログラミング 第2版 Linuxの仕組みから学べる…
k8s の cpu limit をつけることで、実行時間が見事に遅くなってしまったのでその成果発表です。 (参考記事) [目次] 背景 調べたこと k8s が CPU を割り当てる方法 マルチコアの場合 Go のコンテナで動かしてるんですが
go での panic recover 基礎 gin のケース goroutine 実行の考慮 おわりに
公式に書いてあるのでそれを使います。 下記の compose ファイルで mongodb と web UI である mongo-express が起動できます。
非常に今更ですが、徳丸本 §3.1 ででてきたため、実際に手を動かして確認してみました。 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版[固定版] 脆弱性が生まれる原理と対策の実践新品価格¥3,344から(2023/10/18 00:27時点) 目次 まとめ おさら…
Android の ImageLoader ライブラリとしては Picasso や Glide などがありますが、今回は Compose と相性がいい Coil を使います。 環境 io.coil-kt:coil-compose:2.4.0 compose-bom:2023.06.01
特に深いことは語れないのですが、安全な SQL の呼び出し方を読んで気づきがあったためメモしておきます。 まとめ SQL の構成要素(以下を意識して区別する!) キーワード(予約語): SELECT, WHERE, AND, ... 演算子など: =, >=, ... 識別子: テーブル名、…
VSCode にはユーザー独自のスニペットを作る機能があり、prefix に反応して補完する機能であれば Snippets の機能を使えば簡単にできます。 例えば workspace でのみ有効なスニペットを定義するには、.vscode フォルダ内に拡張子を code-snippets にした以下…
はてなブログ API を叩いた時の備忘録と、その際 jq を使ってみたのでそのメモになります。 レスポンスが xml だったので、xq と sed と jq を使って一歩ずつ理想とする形に近づけました。 結論 xq を使って xml を json にしたら要素が 1 つの時は string, …
複合インデックスとは 複合インデックスは、2つ以上のカラムを組み合わせて作成されるインデックスのことを指します。 DB スペシャリストの問題文にあったため 複合インデックスの定義順によってはインデックスが使われたり使われなかったりするらしいと知っ…
一般に『多対多の時は中間テーブル(連関エンティティ)を作成せよ』とあると思うのですが、今回は、中間テーブルの存在意義を正規化の観点から考えてみました。
今回初めて VSCode の拡張機能を作ってみたのですが、予想より簡単で面白かったためその紹介です。
最近は N 年間放置していた徳丸本を真面目に読み進めており、今回はその §3.3 CORS についてのアウトプットになります。 ぜひ皆さんも一緒に読み進めていきましょう。 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版[固定版] 脆弱性が生まれる原理…
広告の配信 Google アドセンスなど
標準パッケージ sql は一般的な SQL のインタフェースを提供しています。 使用する際は各ベンダーの用意するドライバーと共に使うことが必要で、諸々の使い方は go の wiki にも書いてあります。 今回はこの sql パッケージで注意が必要な点(と自分が今認識…
material3 のドキュメントでいう『Swipe within the content area』を compose で実現する方法が v1.1.1 の compose.material3 にはなさそうだったため、その実装方法のメモです。
https://example.com/hoge()pi のようなリンクがある時、ナイーブに [title](https://example.com/hoge()pi) としてしまうと、titlepi) のようになります。 表示も期待値ではないし、リンクも正しくありません。 そんな時は URL 部分を パーセントエンコーデ…
json パッケージが最終的に Tag を解釈しているところまでに、以下のような関数呼び出しが発生します。 Marshal > marshal > reflectValue > valueEncoder > typeEncoder > newTypeEncoder > newStructEncoder > cachedTypeFields > typeFields