kawasin73のブログ

技術記事とかいろんなことをかくブログです

The fastest HTTP parser of Rust

速さは正義。どうも、かわしんです。 Rust で一番速い HTTP パーサーは C で書かれた picohttpparser の Rust バインディング、picohttpparser-sys です。ガハハ。 $ RUSTFLAGS="-C target-feature=+sse4.2" cargo +nightly bench Finished bench [optimized…

SIGSTOP シグナルは EINTR を発生させるのか

エラーハンドリングはヌケモレなく、どうもかわしんです。ちゃんとエラーハンドリングしてますか? 以前のブログでも書いた通り、プログラミングする以上発生しうるエラーのうち回復可能なエラーは必ずハンドリングするべきです。 kawasin73.hatenablog.com …

OS はキャッシュのライトスルーを選ぶのか

メモリとキャッシュと整合性。どうも、かわしんです。 最近「詳解 LINUX カーネル」という分厚い本を読んでいるのですが、割と序盤の第 2 章で気になったことがあったので調べてみました。 ライトスルーとライトバック ご存知の通り、CPU にはキャッシュがあ…

新しい技術を追わない

時代はワークライフバランス。どうもかわしんです。 新しい技術は追わない。これは僕の個人的な方針です。別に最先端を追い続けることを否定するわけではありません。 ここでいう新しい技術は、web 界隈の新しいフレームワークとかライブラリとか SaaS とか…

新卒で入社して1年が経った

お久しぶりです。どうも、かわしんです。前回の投稿から丸々1年が経ったのでブログを投稿したいと思います。 1 年間何をしてたのか 1 年前、新卒として某外資系 IT 企業にソフトウェアエンジニアとして就職し、それから某 Android アプリを開発するソフトウ…

原因不明のエラーなどない

お前のいう想定外はただの調査不足。どうも、かわしんです。新年度が始まり周りのみんなは働き始めているのを感じますが、僕は4月6日入社なのでもう少しモラトリアムを満喫します。 さて、去年開催された GoCon 2019 Spring で「エラー設計について / Design…

失敗した AWS Batch ジョブを Slack に通知する (Terraform を使って)

サーバーレスでピタゴラスイッチ。どうも、かわしんです。イベントをサーバレスで繋げてピタゴラスイッチを作るのって案外楽しいもんですね、GUI コンソールで作ってる限りは。 さて、今回は AWS Batch のジョブ実行が失敗した時に Slack に通知する機能を作…

SQS を使った Python の非同期ワーカーは ndkale しかない

誰一人見捨てない!!! どうも、かわしんです。Celery は見捨てるんです。 この記事は Pythonその2 Advent Calendar 2019 の 15 日目の記事です。 やや強めのタイトルですが、AWS SQS を使った非同期ワーカーでまともな実装は ndkale しかないという内容です。…

golang.tokyo #28 で登壇して賞品をいただきました

限りある時間を大切に。どうも、かわしんです。情報洪水の現世をスマートに生きていきましょう。 さて、去る 12 月 4 日に開催された 「golang.tokyo #28 ~年末だよ!Go大忘年会&LT大会!~」 で LT をしてきました。 golangtokyo.connpass.com 発表資料はこ…

Go でトランザクションをフルスクラッチで実装した

一歩ずつ一歩ずつ前へ進んでいく、確実に。どうも、かわしんです。 到底 1 記事に収まるような内容ではなく長いので、トランザクションの作り方に興味のない方は途中の「なぜ Go なのか」まで読んでいただければ嬉しいです。 この記事は、Go2 Advent Calenda…

Go で昇格可能な RWMutex を実装した

順番は守りましょう。どうも、かわしんです。トランザクションを実装中です。 さて、先日トランザクションの並行制御アルゴリズムである「S2PL (Strict Two Phase Lock)」を実装した 1 のですが、Read オペレーションでは Read Lock を取った後にすぐに解放…

Go : Mutex は channel の 4 倍速い

Go

速ければ速いほど良い。どうもかわしんです。トランザクションを実装中です。 トランザクションの並行処理で S2PL (Strict Two Phase Lock) を Go で実装しようとしているのですが、どうしても昇格可能な Reader Writer Mutex が必要になり、Github にいい実…

MySQL は Rigorous ではない

トランザクションは慎重に。どうも、かわしんです。今トランザクションを実装しています。 タイトルは釣りです。MySQL のデフォルトのトランザクション分離レベルである REPEATABLE READ での話です。後、確かめた訳ではないですが MySQL に限った話ではない…

WEBエンジニア勉強会 #15 で登壇しました

プログラマーあるある、なにかと独自のミニ言語を作りがち。どうも、かわしんです。 昨日、11 月 16 日に開催された WEBエンジニア勉強会 #15 の LT 10 分枠で「ネストした JSON を CSV に自動変換する Python ライブラリを作った」というタイトルで登壇して…

メモリアロケーションに対する罪悪感

いつも心に省メモリ。どうも、かわしんです。今日はメモリアロケーションについてのポエムを綴ります。さらっと流してください。 ちなみに、ここでいう省メモリとはメモリサイズだけの話ではありません。 メモリをアロケート(確保)するとき、あなたはどん…

ネストした JSON を CSV に自動変換する Python ライブラリを作った

プログラマーあるある、なにかと独自のミニ言語を作りがち。どうも、かわしんです。どうしても簡潔にやりたいことを表現するためにミニ言語つくりがちですよね。JSON で構文作ると長いし。 さて、ACES Inc. という東大の松尾研究室発の AI ベンチャーがある…

GitHub Actions Meetup Tokyo β で登壇しました。

先頭を 駆くる者には 落とし穴 ハマっては埋め ハマっては埋め どうも、かわしんです。昨日サイボウズ株式会社で開催された「GitHub Actions Meetup Tokyo β」という非公式の Github Actions の勉強会で LT をしてきました。 gaugt.connpass.com 発表スライ…

Github Actions でハマった点と解決方法

先頭を 歩く者には 落とし穴 ハマっては埋め ハマっては埋め どうも、かわしんです。先駆者ってのはかっこいいとは思いますが、僕自身は新しい技術は流行り始めてから少し待って、落とし穴が一通り埋め尽くされたあたりで使い始めて爆速で開発するのが好きで…

Pipenv と Docker を使った開発環境のベストプラクティス

イテレーションの速さがあなたの生産性を左右する。どうも、かわしんです。生産性の高いプログラマって1つ1つの試行が素早い(自動化しているかツールを使っている)ためにものすごいスピードで開発できていると思うんですよね。 さて、最近 Python で開発…

UDP の Length はなんのためにあるのか?

1 バイトの無駄も許さない。どうも、かわしんです。1024 回繰り返すと 1 KB の無駄になります。 先週 TCP/IP スタックを自作した 1 のですが、その講義中ずっと気になっていたことがあったのでそれを深掘りします。 TCP / IP スタックを自作した人なら誰でも…

FIN -> FIN/ACK -> ACK という TCP の幻想

掴んで離さぬコネクション。どうも、かわしんです。しがみつかずに適切なタイミングで離しましょう。 この1週間で RFC を読みながら TCP/IP プロトコルスタックを自作した 1 のですが、その時にコネクションの終了処理でハマったので後学のために書き残して…

TCP/IP プロトコルスタックを自作した

RFC は裏切らない。どうも、かわしんです。僕は RFC に裏切られました。 さて、今週の頭から4日間開催された KLab Expert Camp に参加して、TCP/IP プロトコルスタックを実装してきました。今回はその体験記を書いていこうと思います。 成果物ですが、こちら…

ロバストなプロトコルを設計して実装した

どうも、ロバストと愉快な仲間たちのロバストこと、かわしんです。そうです、私がロバストです。 さて、8 月 13 日から 8 月 17 日までの 4 泊 5 日で セキュリティネクストキャンプ に参加してきました。 セキュリティネクストキャンプとは、セキュリティ・…

JWT はユーザに渡すな

JWT とかいてジョットと詠む。どうも、かわしんです。タイトルは釣りです。 この記事は、JWT はログアウトが大変 という内容です。以下で挙げるデメリットを許容できるなら JWT をユーザに渡してもいいと思います。 ログアウトとは、管理者による強制ログア…

55 日かけて OS を作った

整骨院は保険がきく。どうも、かわしんです。 突発的な不調の場合は整骨院は保険が適用され 3 割負担になります。慢性的なもの(肩こり)には適用されません。 さて、5 月 20 日に以下のように宣言して作り始めた OS が、昨日ようやくひと段落したのでまとめ…

Twitter をフィルタリングする Twilter を作った

あなたとわたしと Twitter。どうも、かわしんです。 今週の頭の日曜月曜火曜の 3 日間かけて Twilter というコマンド(?)サービス(?)を作ったので、その紹介をしたいと思います。 Github リポジトリはこちらです。star をつけていただけると喜びます。 …

Go Conference 2019 Spring で登壇しました

困った時はドキュメント、どうもかわしんです。 去る 2019 年 5 月 18 日に開催された Go Conference 2019 Spring に LT 枠で登壇してきました。 数百人規模のカンファレンスで登壇するのは初めてだったのでいい経験になりました。ありがとうございました。 …

DMM を卒業しました

初春の令月にして、気淑く風和らぎ、梅は鏡前の粉を披き、蘭は珮後の香を薫らす 1。どうもかわしんです。新しい元号、令和の 3 日目です。頑張っていきましょう。 さて、去る平成の 31 年 4 月 25 日にインターンしていた DMM を卒業しました。1 年と 11 ヶ…

Go 言語でタイムアウト付きのファイルロックを実現する

言語の壁をぶっ壊す。どうも、かわしんです。 プロセス間の待ち合わせの手法としてファイルロックがあります。このファイルロックをタイムアウトでキャンセルすることを可能にするために以下のライブラリを作ったのでその解説をしたいと思います。 github.co…

未踏 Demo Day に行ってきた

ビールは 1 日 4 缶まで。どうもかわしんです。 2018 年度の未踏プロジェクトの Demo Day という名の成果発表会が秋葉原で 2/16 と 2/17 の2日間に渡って行われ、中高の同級生が未踏プロジェクトに採択されて発表するというので聞いてきました。 MITOU2018 D…