駄文型

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

システムコールだけ使って素朴すぎる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/
続きを読む

Pandas.DataFrame (Python) 風のクラスを作って rubygem として公開した

ruby には CSV::Table があるので、基本的なことはできるが、 PandasDataFrame.read_csv のように多機能な CSV の読み込みメソッドが(多分)なかったので、 Pdtable::Table という CSV::Table を拡張したクラスを Gem で作って公開した。はじめは CSV の読み込みを行うメソッドだけのモジュールとして作っていたが、拡張して Pandas の DataFrame のように多機能なクラスにすることもあるかも、と思って CSV::Table の拡張クラスとした。

github.com

pdtable | RubyGems.org | your community gem host

続きを読む

なぜ日本の「ものづくり」は復活しないか

GE 巨人の復活 シリコンバレー式「デジタル製造業」への挑戦 という本を読んだ。 2015年に160億ドルの特別損失を計上したゼネラル・エレクトリック(GE)が、いかにして復活を遂げたかをまとめたものだ。 GE はベイエリアシリコンバレーと呼ばれる地域のテクノロジー企業の文化を模倣し、復活した。ベイエリア式の文化とはすなわち、「リーンスタートアップ」であり、「デザイン思考」であり、「アジャイル」であり、「OSS」である。

続きを読む

ITエンジニアが採用試験の技術課題に挑む前に確認すること

https://www.flickr.com/photos/149902454@N08/34159773513

ITエンジニアの中途採用において、多くの会社は技術問題を課したり面接で技術的な知識があるかどうか確認する。コンピュータサイエンスのすべての分野に精通している必要はないが、基本は抑えておきたい。前回の転職で得た知見をまとめておこうと思っていたのだが、1年経ってしまった。

ここで挙げている項目は、ややデータエンジニアよりの内容だが、開発系のエンジニアにも参考になると思う。

続きを読む