Router::Simple::Reversible という Perl モジュールを書いた
https://metacpan.org/pod/Router::Simple::Reversibleだいぶ昔に書いていたのを shipit しました。tokuhiromさんの Router::Simpleに、いわゆるリバースルーティングを足しただけのモジュール。Router::Simpleを継承しているので、blessしなおすなりして使えばよいかと思います。新しく生えるメソッド...
View Article人間と証明とプログラム: 『コンピュータは数学者になれるのか?』を読んだ
ウィッシュリストに入れていたのを知人に頂いた。数学基礎論とコンピュータ科学をつなぐ啓蒙書、という立ち位置の本なのだけど、自分はコンピュータ科学のバックグラウンドとしての数学基礎論、というとらえ方で読んでいった。専門的な概念とか簡単な証明とかはバンバン出てくるので基礎を抑えておかないと読むのには難儀しそう。以下、おもしろかった部分を整理がてらかいつまんで説明してみる。あまり丁寧ではないけど、間違ってい...
View Article型と名前によるGoのコード探索 ― gofind
思いつきでツールを作ってはリスのように忘れ、再発見しては新鮮な気持ちで便利に使う日々です。一般にプログラミングにおいては、ソースコードを読むことに意外とばかにならない時間を使うもの。特に Go ではデフォルトで標準ライブラリのソースコードが手元にあり、コードを書く際よい教科書になるので、これを読むことも多いはず。Go...
View Articleエンジニア立ち居振舞い: 属人性を減らす
お題「エンジニア立ち居振舞い」おもしろそうなお題なので乗ってみる。自分は今は技術組織のとりまとめをしているけど、会社の古めのプロダクトの面倒を見る仕事もしてきた。時を経てサービスに携わる人が変遷し、コードの歴史も重層的で一筋縄ではいかないことが多い。仕事で触れるプロジェクトが多いので、ひとつのプロジェクトに関する知識を深めづらい面もある。属人性を減らすさまざまなタスクを通じてプロダクトに触れるうちに...
View ArticleGoogle App EngineでGoを動かすときに知っておくべきこと(ソースコード・ビルド編)
Google App Engine(GAE)で Go 製のウェブアプリを動かしたかった話。いっぺん動かしてみると GAE/Go はウェブアプリを動かす環境としてはとてもいい。ただ、中途半端な知識だけで始めると開発者としてはつまずくことが多かったので、分かりにくい点をまとめておく。Google App Engine Go Standard Environment についてgoapp は $GOPATH...
View Articleなぜプレゼンで失敗するのか
自分も大方の人間と同じように人前で喋るのは苦手で、可能であれば避けたいと思っているけれど、一方でこの業界で生きのこる方法のひとつとして避けられないものでもあると思っている(ので苦しい)。若かりしころ手痛い失敗をしたこともあって、かなり苦手意識を持ちつづけていたが、最近はわりかし上手く付き合えるようになってきたかなとふり返って思う。今もうまいプレゼンテーションをする方法は知らないし、それを僕から知りた...
View Article直感的なグラフを簡単に作れるウェブアプリ
を作った。どうぞご利用ください。The Beautiful Graph Maker下の画像のようなグラフを簡単に生成できます。🙁 から 😊 になったことがひと目でわかりますね。説得力もあるのではないでしょうか。矢印やY軸のラベルはクリックで変更できます。実装には Elmを使ってみた。アーキテクチャが強制されるせいか、予想以上に書きやすかった。prompt()したいだけのところが妙に面倒で...
View Articleエンジニアがチームで価値を発揮するために気をつけたいこと
この記事は、はてなディレクターアドベントカレンダー2016の17日目のエントリです。(昨日は id:daiksyの『嫌われない勇気』でした。)id:motemenです。過去には立ち上げ期の Mackerelチームのディレクターをしていましたが、当時のことは 過去の記事にあるとおりで、あまりディレクターとしてほかに書けることもないので違う話を。今年のはじめごろに...
View ArticleGoogle Apps Script を使ってブックオフオンラインで購入した書籍を Google Spreadsheet に記録する
今年は読んだ本をちゃんと記録していくぞ! と思ったものの読書管理系のサービスは記録が面倒で続かないことが目にみえている。とりあえず買った本だけでもどこかで一覧できればよいのでは? ということで、Gmail に届くレシートから Google Spreadsheet...
View Articlego-sql-driver/mysql の接続に SOCKS5 プロキシを利用する
Go では proxychains みたいな方法が利用できないので、プログラム側で対応してやる必要がある。Go で SOCKS5 プロキシを利用する - 詩と創作・思索のひろばと同様に golang.org/x/net/proxyを利用して実現できる。import (...
View ArticleYAPC::Kansai 2017 OSAKAで『はてなシステムの考古学』というトークをおこないました #yapcjapan
先日開催された YAPC::Kansai 2017 OSAKAで、『はてなシステムの考古学』というタイトルで発表しました。スライド中のリンクが効かないのであまり意味がないのですが、一応 Speakerdeck にも上げてあります: はてなシステムの考古学 / History of development at Hatena // Speaker Deckはてなの開発の歴史を Perl...
View Articleはてな記法 ⇔ Markdownコンバータ(pandoc のはてな記法対応)
最近の若者ははてな記法を書けないらしい……などと言っているだけではアレなのでコンバータを書いてみた。リストを書こうとして見出し(*)になっちゃうんですよね。あるある。タイトルにあるとおり、pandocという有名なマークアップコンバータにはてな記法を実装してみた形です。github.comフォークした1ブランチとしてソースコードがあるのみで、バイナリの配布とかはしてない。Haskell 製なので...
View ArticleGoogleカレンダーとSlackステータスをワンクリックで連携できるアプリをGoogle Apps Scriptで書いた
Googleカレンダーで現在進行中のイベントをSlackステータスに反映させるようにしておくと、チームメンバーに、移動中や不在やミーティング中といった状況を自然に共有できるので便利ですね。そのように設定している人も多いと思います。似たアイコンが並んでいるように見えますが一方はモザイクです巷では Google Apps Script...
View Article指定された型からswitch文を生成するgo-switchgenと、そのコーディング動画
GitHub - motemen/go-switchgenある日 Go で reflectパッケージを使ったプログラムを書きたい! と思い立ち、となると reflect.Kindで swtich したいわけで、ありうる case 節を全部書きつくすのは大変だ、というわけで switch 文を生成する簡単なプログラムを書きました。パッケージ名と型を指定すると、その型における switch … case...
View ArticleGraphQLのレスポンスJSONに対応するstructからクエリを生成できるgo-graphql-query
このあいだ GitHub が公開していた GraphQL APIが便利そうだったので使おうと思ったのだけど、求めたライブラリがなかったので作った次第です。ここで GraphQL についての説明はしませんが、結果の JSON とクエリが同じ形を持っているのが便利で美しいですね。ということは API の結果の JSON を受け取る struct から GraphQL...
View Articlego get gobin.cc/PROGNAME でプログラムをゲットできる URL shortener っぽいサイトを作った
夏休みの自由研究です。ghrを go get したいんだけど作者の e の数って何個だったっけ……と悩んでいたらそもそも違う ID でした、けどそれも思い出せない! って経験ありませんか? たいていの場合、プログラム名だけは覚えていて、その正確なパスまでは覚えていないものです。そこでその名前だけから欲しいプログラムを go get できる gobin.ccというサイトを作りました。一種の URL...
View Articleprchecklist でリリース Pull Request のチェックフローをスムーズに行う
背景GitHub を使った開発では、master ブランチがいつでも本番に出せる状態として、master から切った develop ブランチを開発のベースとし、各フィーチャは develop から切って develop にマージし、リリースのタイミングで develop を master にマージ、リリース……という流れを pull request...
View Article最近のGoプロジェクトのMakefile
最近は仕事でも新しくGoのプロジェクトをイチからはじめることが増えてきて、コピペ元が欲しくなるので、スナップショットとして残しておきます。とくに Go でウェブアプリケーションを書くような場合を想定していて、npm エコシステムにも乗っていきます。大まかな方針としては、self-contained...
View Articleチャンネルを使って、決まった数のリソースをgoroutine間で共有するパターン
生成が重いリソース(や重い処理の実行権)を goroutine 間で共有し使いまわすようなパターンです。よく知られていて名前がついていそうだけど、ぐぐっても分からなかったので書いておく。コネクションプールに近い感じで、最初にリソースを生成したあと、それらを大事に取り回します。リソースが空いてなかったら goroutine は待つことにする。sync.Pool...
View Article