システムコールだけ使って素朴すぎるHTTPクライアント/サーバーをGoで実装した
実装してみた。素朴すぎてタイムアウトの設定もできないし自動でヘッダーを付与してくれる機能もない。IPv6にも対応してない。
github.comシステムコールだけでHTTP、TCP、UDPクライアント作ってみた。 https://t.co/9JzWUAuEf1
— Kohei Kimura (@cohhei) 2020年2月1日
[追記]クライアントだけでなくサーバーも実装できるようにした。公式のnet/http
のようにHandleFunc
とListenAndServe
でサーバーが立ち上がる。開発関連のまとめツイートは↓
Implemented an http server by using only system calls.
— Kohei Kimura (@cohhei) 2020年2月8日
システムコールだけで作るhttpサーバーできたhttps://t.co/mmV5kchMfb pic.twitter.com/N0C987TCzG
tr;dr
- ネットワークに苦手意識があったので勉強しはじめた。
- 勉強のためにシステムコールを直接使ってTCP通信を行うHTTPクライアントとTCPクライアントを作ってみた。
- ついでにUDPクライアントも作った。
- HTTPサーバーも作った。
- カーネルすごい。インターネットすごい。
Go の strings パッケージを読んでみる
Go の標準パッケージのコードを読んでみる。まずは読みやすそうな strings パッケージ からはじめてみる。
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/続きを読む
Pandas.DataFrame (Python) 風のクラスを作って rubygem として公開した
ruby には CSV::Table
があるので、基本的なことはできるが、 Pandas の DataFrame.read_csv
のように多機能な CSV の読み込みメソッドが(多分)なかったので、 Pdtable::Table
という CSV::Table
を拡張したクラスを Gem で作って公開した。はじめは CSV の読み込みを行うメソッドだけのモジュールとして作っていたが、拡張して Pandas の DataFrame のように多機能なクラスにすることもあるかも、と思って CSV::Table
の拡張クラスとした。
pdtable | RubyGems.org | your community gem host
続きを読むなぜ日本の「ものづくり」は復活しないか
GE 巨人の復活 シリコンバレー式「デジタル製造業」への挑戦 という本を読んだ。 2015年に160億ドルの特別損失を計上したゼネラル・エレクトリック(GE)が、いかにして復活を遂げたかをまとめたものだ。 GE はベイエリアやシリコンバレーと呼ばれる地域のテクノロジー企業の文化を模倣し、復活した。ベイエリア式の文化とはすなわち、「リーンスタートアップ」であり、「デザイン思考」であり、「アジャイル」であり、「OSS」である。
続きを読むITエンジニアが採用試験の技術課題に挑む前に確認すること
https://www.flickr.com/photos/149902454@N08/34159773513
ITエンジニアの中途採用において、多くの会社は技術問題を課したり面接で技術的な知識があるかどうか確認する。コンピュータサイエンスのすべての分野に精通している必要はないが、基本は抑えておきたい。前回の転職で得た知見をまとめておこうと思っていたのだが、1年経ってしまった。
ここで挙げている項目は、ややデータエンジニアよりの内容だが、開発系のエンジニアにも参考になると思う。
続きを読む