その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

DBのcolumn名や、何らかドメインの意味を持つ概念に `type` を名付けない方が良いのではないか

type そのもの、 あるいは _type のようなsuffixを持つ名前を変数や、構造体・クラスのメンバーや、データベースのcolumnなどに付けてしまうことがしばしばあると思うのですが、個人的にはあまりこれはやらない方が良いのではないかと考えています。理由とし…

Kaigi on Rails 2025でasync gemを使ってSSE機能をRails Appで作るという話をしました #kaigionrails

speakerdeck.com発表資料はこちらです。以下に資料に入れそびれた・話しそびれたことを以下に記しておきます。 実際のところSSEを導入したのはなぜなのか 今回例示したような「長い時間がかかる処理の進捗報告・完了通知」のような機能はポーリングでも実現…

[令和最新]Resemblaをビルドして動かす方法

github.com類似文字列検索ライブラリであるところのResemblaですが、利用に際してはビルド済みのパッケージが配布されていないため自分でビルドする必要があります。 が、Wikiに書かれているインストールドキュメントがCentOS 7のものになっており *1 、現代…

be-let-it-be書いた

github.combe-let-it-beというコマンドラインツールを書きました。これはRSpecのスペックファイル中に存在する let や let! を自動的に可能な限り let_it_be に書き換えるというものです。 $ be-let-it-be convert path/to/your_spec.rbというふうに簡単に使…

openapi-fetch-genを作った

English article is here: openapi-fetch-gen – Generate TypeScript API client from OpenAPI TypeScript interface definitions created by openapi-typescript - DEV Communitynpm registryにも公開されています。従って以下のようにダウンロード可能です…

GNU Goldのリンカがdeprecatedになる予定だそうなので暫定的にcgoでGNU ldの利用を明示する

www.phoronix.comということで、GNU Goldのリンカがdeprecatedになる予定だそうです。arm64環境のgo *1 でcgoを利用しようとするとデフォルトでgoldのリンカを利用しようとするので、これをGNU ldを使うようにしたいという話です。かつてのGNU ldにはshow st…

所属変更のお知らせ

2024年6月1日より下記の通り所属が変更されます。旧: SB Intuitions株式会社(ソフトバンク株式会社からの100%出向) 新: 株式会社スマートバンク前回の所属変更からわずか2ヶ月しか経っておらず非常に気まずい状況ですが解雇ではありません。色々ありました…

所属変更のお知らせ

2024年4月1日より id:moznion の所属が以下の通り変更となります。旧: 株式会社ソラコム 新: ソフトバンク株式会社 (SB Intuitions株式会社出向)以上となります。 引き続きよろしくお願い申し上げます。 ソラコムには大体6年半くらいいて、実際数えきれない…

GitHub Actionsで複数のworkflowを連携する時にハマったあれこれ

GitHub Actionsで或るworkflowが終わったら別のworkflowを動かす、みたいなことをやりたくなった時にちまちまハマったのでメモとして残します。 workflow_run で呼び出されたworkflowで前workflowのステータスを取る これはハマったことというか「こうやれば…

Linuxでdocker loginした際、passを使ってcredentialsを管理することで情報をファイルに残さないようにする

docker login するとデフォルトの状態では $HOME/.docker/config.json の .auths にcredentialsが保存されます。credentialsが平文で保存されるというのもナンなのでこれをパスワードマネージャを介すように変更しましょう。パスワードマネージャには手っ取…

NetworkManager 1.36においてL2TP/IPSecのトンネルが上手く張れない問題

NetworkManagerのversion 1.36においてL2TP/IPSecのトンネルを張ろうとすると上手く張れないという問題があります。 自分が使用しているUbuntu 22.04ではL2TP接続は標準では提供されていないのでnetwork-manager-l2tpパッケージをapt等でインストールする必…

Linux DesktopでIntelliJ IDEA 2023.1を4Kディスプレイ上で表示すると色々デカくなって困る

IntelliJ IDEAを2023.1にアップグレードして4Kディスプレイ上で起動したところ、スケールの設定がおかしいのかすべてがデカくなり、相対的に作業領域が狭くなって困っています。たぶんLinux Desktopでだけ発生している問題のようで、同じような症状が既にレ…

#yapcjapan YAPC::Kyoto 2023に行ってきた・喋ってきた

yapcjapan.org2023年3月19日に開催されたYAPC::Kyoto 2023に参加してきました。もう2週間も前の話になるんですね......USに戻ってきてから色々あり、すっかりブログを書くのが遅くなってしまいました。YAPC::Kyotoの様々な感想については「にゃんこ酒場.fm」…

地獄! YYYYMMDDだと思っていたらYYYYMDとして扱われていた情景

たとえば 2023111 という日付が登場した時、これは 20230111 とも 20231101 とも解釈がされうるということです。 にわかには信じがたい出来事ですが太古のコードを眺めているとそういうことがあります。大変ですね。これが生きるということと言うこともでき…

YAPC::Kyoto 2023で話します! そしてチケットを今すぐに購入しましょう!!

YAPC::Kyoto 2023の採択トークが決まったようですね。面白そうなトークが沢山あってすごいですね。blog.yapcjapan.org僕のトークが採択されていない......というのはトリックで、今回は畏れ多くもゲストスピーカーとして招待されましたので、そちらの枠でお…

GoのHTTPクライアントがAWS NLB配下にあるコンポーネントと通信するときに5-tupleが分散しないので特定のインスタンスにしか負荷分散されないという話題

Microservicesのようなものを考えた際、Goで書かれたコンポーネントがHTTP(S)を使って他のコンポーネントと通信するという場合があると思います。 その「他のコンポーネント」がAWS NLBの配下にある時、GoのHTTPクライアントがTCPコネクションを使い回す場合…

IP Routing TableのGo実装 "go-iprtb" 書いた

GoのIP Routing Tableの実装について調べてみたところ、だいたいOSのRouting Tableを操作する系のライブラリがヒットし *1、そうではなくユーザー側コードでRouting Table相当の実装・処理をしたい時に使えそうなライブラリがパッと見当たらなかったのでそれ…

CのShared LibraryにしたGoのコードで簡単にダングリングポインタを発生させる

例えば以下のようなGoのコードを書き、 package main import "C" import ( "fmt" ) //export DoSomething func DoSomething(cstr *C.char) { fmt.Printf("Go: %s\n", C.GoString(cstr)) } func main() { } go build -buildmode c-shared -o libdosomething.s…

ts-dynamodb-attributes-transformer - TypeScriptオブジェクト向けDynamoDB Attributes変換器

TypeScriptのオブジェクトをAmazon DynamoDB Attributes (正確には aws-sdk-js-v3 がサポートする Record<string, AttributeValue>) に自動変換するTypeScript Transformer Pluginであるts-dynamodb-attributes-transformerをリリースしました。npmからもご利用いただけます。これはT</string,>…

docker composeでワンショットタスクを実行する

TL;DR docker compose up --abort-on-container-exit[追記]docker compose run だとredis serviceがstopしないからダメ的な話?— r7kamura (@r7kamura) 2022年9月19日 docker compose run --rm ${service_name} で良かった...... [追記ここまで] 例えばなん…

特定のユーザーのイベントによるGitHub ActionsのActionを保留状態にしておき、後で手動実行できるようにする

dependabotだとかrenovateだとかを使ってライブラリのバージョンアップのpull requestを自動的に送ってもらう、というような機構を利用されている方が多いと思います。 常にこれらのpull requestに目を光らせておいて常に取り込み続けるというのが理想的な形…

zigコードから生成したdynamic libraryおよびstatic libraryをCでコンパイルして使う

zig

TL;DR zig ccを使うと色々と簡単、特にstatic linkをする場合はハマりにくく楽なので、使える場合は使うと良さそうです。 zig cc自体、gccやclangのdrop-in replacementを目的として出来たCコンパイラなので多くの場合はそのままポンと乗せ替えができそうで…

令和最新! Linux Desktop環境上の tmux (3.3a) でOSのクリップボードとtmuxのコピペバッファを直結する

Linux Desktop上でterminalを使っている時にOSのクリップボードとtmuxのコピペバッファを直結させたいという話です。 つまり Prefix + [ 等でtmux上で範囲選択してEnterを叩いた時にその内容がOSのクリップボードに格納され、Prefix + ]でペーストする時はOS…

S3にホストされているMaven RepositoryをMaven (pom.xml) から参照する

S3にホストされているprivateなMaven Repositoryというものがあり、それをMaven (pom.xml) から参照する必要があったのでの方法についてのメモ。Gradleとかsbtとかからは割と使ったことはあったのだけれど、Mavenからは無かったので…… <project> ... <repositories> <repository> <id>your-repositor</id></repository></repositories></project>…

Zigのビットシフト演算がちょっと面白い

zig

なんとなくZigを触っているのですが、ビットシフト演算が独特の挙動で面白かったです。 const n: u8 = 0b00000001; const shifted: u8 = n << 1; std.debug.print("{b}\n", .{shifted}); // => 0b00000010 これは直感的なコードでしょう。n が1バイト左にシ…

書評: ISUCONを「ゴール」で終わらせない。『達人が教えるWebパフォーマンスチューニング ~ISUCONから学ぶ高速化の実践』

達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践作者:藤原 俊一郎,馬場 俊彰,中西 建登,長野 雅広,金子 達哉,草野 翔技術評論社Amazon著者のid:catatsuyさんよりご恵投いただきました。ありがとうございます。実は著者の方から本を…

protoc-gen-java-dynamodb書いた / protoc pluginはじめて書いた

protobufでスキーマを書いて protoc-gen-java-dynamodb に食わせると、そのスキーマのJavaの生成コードに「生成されたDynamoDBのエンティティクラスのコード」を良い感じにねじ込んでくれるというprotocプラグインを書きました。 syntax = "proto3"; package…

一定のインターバル期間中に stdin に何かが来る、あるいは来ない時に任意のコマンドを実行するツール "conk" を書いてた

github.comこれ去年書いたツールなのでいつの話をしておるのかという感じですけれども、一定のインターバルの間に stdin 経由で何かデータが来た時あるいは来なかった時に任意のコマンドを実行するツールを書いていました。使い方の例としては $ ./do_someth…

openapi-generator を使って go のファイルを生成した時に出てくる `var _ context.Context` の謎

openapi-generator を使って go のコード生成をすると、 // Linger please var ( _ context.Context ) という一見不要そうな変数宣言がコード中に出てきます。これはなんなのでしょうか? 「残しておいてね」とは書いてありますが…… TL;DR たぶんこれ過去の…

API越しでタイムスタンプをやりとりする時のフォーマットをどうするべきか

APIのリクエストにせよレスポンスにせよ、タイムスタンプを利用するというのはよくある話です。 この時、そのタイムスタンプのフォーマットをどうするのが良いのかという話題です。IDLを使って縛るというというのは良い考えだと思いますが、IDLを使うにせよ…