ちりもつもればミルキーウェイ

好奇心に可処分時間が奪われる

2022-01-01から1年間の記事一覧

gRPCのメッセージをJSONシリアライズしたい

はじめに 最近こういう記事を書きました convto.hatenablog.com 記事の内容としては、メッセージエンコーディングにはいろいろと種類があり、それぞれ特性があるのでいい感じに使い分けようねみたいな感じでした。 こんな記事を書くくらいなので最近メッセー…

2022年の振り返りと来年の抱負

はじめに 2022年はこういう年にしたいな〜というのは年初にいろいろ考えてたんですが、いろいろ状況が変わってドタバタしたのでほぼ未達成でした。 抱負とかいうやつ、1年に1回だけ目標たててその目標を微調整する機会もないロックンロールな立て付けなので…

json/protobuf(wire)/gobをバイナリ効率とかの観点から比べてみる

はじめに どうも @convto です。 以前に protobufのwire encodingについて遊んた ことや gobについていろいろ仕様を調べて遊んだ こととかがあったので、いっちょいい感じの比較ができるんではということでやっていきたいと思います。 ついでにgobについては…

Goの最近のおもしろCVEとその対応を眺める

はじめに どうもみなさんお世話になってます @convto です。 最近ちらちら直近のGoのCVEとかみてるので、危険度は度外視してパっとみて面白かったCVEとそのパッチの感想みたいなのをまとめつつバージョンアップを啓蒙していきます。 みんなバージョンアップ…

limaつかってdocker環境作るぞ

はじめに あたらしいPCセットアップしてて、せっかくなのでdocker-cli + limaとかでdocker環境整理しようかなーと思い立ちやってみた。 まだガッツリ使い込んでないのでこれから問題でるかもだけど、現状いい感じに利用できているます。 lima is 何 これ git…

gofrs/uuidに出してたパッチがマージされたよ(そしてあとから気づいた細かいパッチをまた出したよ)

Go

はじめに だいぶ前パッチ出した記事書きました。 https://convto.hatenablog.com/entry/2022/06/08/011812 具体的な話はそちらに譲るとして、マージされたんでその話と、関連する修正も出したのでその話をしようと思います。 やりたいこともまだあるにはある…

google sign inでiOS/Androidのclient SDKを使うとnonce指定できなくねという話

はじめに タイトルまんまなんですが困っています。世界の人たちどうしてんの こんばんはconvtoです。故あってgoogle sign inの仕様について調べてたんですが、表題通りの問題を見つけて頭を抱えています。 お客様の中に医師免許を持った有識者の方いらっしゃ…

gobエンコーディング頑張って調べる回

はじめに 以前gobについてどういうところが嬉しいんだっけ?みたいなのをまとめました https://convto.hatenablog.com/entry/2022/05/22/104428 メリットもわかったところであとはバイナリとダンスするだけなので、いくつかに分けてgobと戯れてそのうちしっ…

picoCTF Transformation writeup

CTF

はじめに picoCTF Transformation 解いたのでwriteupかく 自力でやりたい方はここでページを閉じてください 問題 I wonder what this really is... enc というコメントとともに以下のコードが書かれている ''.join([chr((ord(flag[i]) << 8) + ord(flag[i + …

picoCTFでMod 26といた

CTF

はじめに 気になってた picoCTF をはじめてみた 手始めにいくつか問題といたんだけどcryptoの1問め?のMod 26がおもしろかったのでメモ こういうプログラムパズルみたいなのめっちゃ好きなんだよな ちなみにネタバレを含むので自分で解きたい人はブラウザバ…

Go1.19のcrypto/randではunix環境のReadで内部バッファがなくなるので色々しらべた

Go

はじめに 先日なんとなしに go.1.19 release note よんでたら、crypto/randの項目で興味深い一文を見つけた Read no longer buffers random data obtained from the operating system between calls. 当時の僕も気になっていたよう ざっと見たけど crypto/ra…

Genericsをつかってcomparableなpointerの値が等価かどうか判定したいよ〜

Go

はじめに 今回は軽めな回です。 そもそもpointerはcomparebleであり、面倒なことをせずとも == にて比較可能です。 https://go.dev/ref/spec#Comparison_operators Pointer values are comparable. Two pointer values are equal if they point to the same …

gofrs/uuid にパッチをだした

はじめに どうも皆さんconvtoです。 最近UUIDとかをドカっと調べて色々比較するみたいな記事を書きました。 convto.hatenablog.com で、このとき実はつかってるOSSへのcontributionチャンスを発見していて、今回はそのパッチを上げたぞ(マージされるかはわか…

CVE-2021-3538 をちゃんと読む

はじめに CVE-2021-3538 は https://github.com/satori/go.uuid についての脆弱性で、uuidが攻撃者にとって予測可能になる場合があるでというやつです trackerへの登録はこれ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3538 仕事で使ってた…

グローバルなid生成器(UUID v4とか)の比較

はじめに 分散システムやってるとどこからでも安全に採番できる強い衝突耐性をもったuuid的なほげほげidがほしくなります。 世にほげほげidはたくさんありますが、適当にREADMEとかよんでもみんな「これイケてるで!」「uuidとかより文字数すくないで!」「s…

gobのモチベとか、現代的な観点からのメリットとか

はじめに gobのことを最近いろいろ調べてるんですが、そもそもなんでわざわざ言語側でメッセージ用のバイナリエンコーディング持ってるんだっけ?というのが気になったので、自分むけの整理用に使い方眺めつつこういうメリットありそうかなーとかそういうの…

バイナリのbit表現を得られるencodingパッケージ作った

動機 連休中はバイナリとダンスして遊んでたんですが、Goプログラムから柔軟にバイナリをbit表現で出力できないのがちょっと不便でした。 たとえば標準の機能で for i := 0; i < len(src); i++ { fmt.Printf("%08b", src[i]) } のようにすれば、1byteごとにp…

フェイクにならない強い意思

真摯に向き合うこととフェイク こんばんはみなさん。ガチンコしてますか?ぼくはぼちぼちです 突然ですが僕はものを作ったりするのが好きです。そこから転じてものの仕組みを追いかけたりするのも好きです。 興味があって調べてたら思ったより時間つかっちゃ…

go build せずにバイナリをつくって linkname を理解する

Go

概要 なんかいろいろgo tool調べてたら go tool compile と go tool link つかって手動ビルドできそうだったのでやってみるというやつ。 go tool compile するとobject fileなり(オプション指定すれば)archiveつくれたりする。 go tool link すると↑の成果物…

Goのbuiltin/unsafe関数の実装追いかけ方メモ

Go

はじめに Goのbuiltin関数やunsafeパッケージの直接の実装はそれぞれのパッケージには関数とドキュメントしか配置されてません https://pkg.go.dev/unsafe https://pkg.go.dev/builtin これらはアセンブリで実装されているわけでもないです。 じゃあどこでこ…

karatsuba法

はじめに これは RSA完全理解 Advent Calendar 2021 の16日目の記事です。 前回は多倍長整数の四則演算をやりました。乗法は だったので、少し効率の良いアルゴリズムを紹介します karatsuba法 桁数nの整数 があったとします。 これらをそれぞれ ずつに分割…