駄文型

プログラミングとか英語とかの話題を中心にした至極ちゃらんぽらんな日記です。

システムコールだけ使って素朴すぎるHTTPクライアント/サーバーをGoで実装した

実装してみた。素朴すぎてタイムアウトの設定もできないし自動でヘッダーを付与してくれる機能もない。IPv6にも対応してない。

github.com

[追記]クライアントだけでなくサーバーも実装できるようにした。公式のnet/httpのようにHandleFuncListenAndServeでサーバーが立ち上がる。開発関連のまとめツイートは↓

net/httpと同じようなインターフェースで使える

tr;dr

  • ネットワークに苦手意識があったので勉強しはじめた。
  • 勉強のためにシステムコールを直接使ってTCP通信を行うHTTPクライアントとTCPクライアントを作ってみた。
  • ついでにUDPクライアントも作った。
    • 名前解決はDNSパケットを作ってUDPDNSサーバーに投げてる。
  • HTTPサーバーも作った。
  • カーネルすごい。インターネットすごい。
続きを読む

ヌーラボに入社して1年がたった

自分自身でもヌーラボCacoo チームに Go エンジニアとして入社してもう1年たったことに驚いている。また nuice なヌーラバーたちと素晴らしい1年を過ごせたことに感謝してます。彼らには常にサポートしてもらったし、一緒に楽しく働いて楽しく遊ぶことができた。そして僕らはこの1年でさまざまなことを達成した。

This article is originally posted here.

medium.com

続きを読む

Go の strings パッケージを読んでみる

Go の標準パッケージのコードを読んでみる。まずは読みやすそうな strings パッケージ からはじめてみる。

github.com

Homebrew で Go をインストールしている場合は /usr/local/opt/go/libexec/src/ にコードがあるはずなのでまずはエディタで開く。現在のバージョンは 1.11.2。

$ go version
go version go1.11.2 darwin/amd64
$ code /usr/local/opt/go/libexec/src/
続きを読む

娘が社会人になった

長女が幼稚園の2歳児クラスに通い始めた。週に2日の3時間程度のクラスだけど、娘にとってははじめての親と離れた集団生活になる。1回目のバス登園のときは、わけもわからずバスに乗せられて、ずっと泣いてたらしい。2回目はちゃんと泣きやんだそうだ。

きっと僕の知らない歌を覚えてきたり、同級生と一緒に遊んだりケンカしたりするんだろうな。

親戚の家の畑で農業体験したときの写真