詩と創作・思索のひろば

ドキドキギュンギュンダイアリーです!!!

Fork me on GitHub

エンジニア立ち居振舞い: 属人性を減らす

お題「エンジニア立ち居振舞い」 おもしろそうなお題なので乗ってみる。自分は今は技術組織のとりまとめをしているけど、会社の古めのプロダクトの面倒を見る仕事もしてきた。時を経てサービスに携わる人が変遷し、コードの歴史も重層的で一筋縄ではいかない…

型と名前によるGoのコード探索 ― gofind

Go

思いつきでツールを作ってはリスのように忘れ、再発見しては新鮮な気持ちで便利に使う日々です。 一般にプログラミングにおいては、ソースコードを読むことに意外とばかにならない時間を使うもの。特に Go ではデフォルトで標準ライブラリのソースコードが手…

人間と証明とプログラム: 『コンピュータは数学者になれるのか?』を読んだ

ウィッシュリストに入れていたのを知人に頂いた。数学基礎論とコンピュータ科学をつなぐ啓蒙書、という立ち位置の本なのだけど、自分はコンピュータ科学のバックグラウンドとしての数学基礎論、というとらえ方で読んでいった。専門的な概念とか簡単な証明と…

Router::Simple::Reversible という Perl モジュールを書いた

https://metacpan.org/pod/Router::Simple::Reversible だいぶ昔に書いていたのを shipit しました。tokuhirom さんの Router::Simple に、いわゆるリバースルーティングを足しただけのモジュール。Router::Simple を継承しているので、bless しなおすなりし…

A Tour of Go のその先: 『みんなのGo言語【現場で使える実践テクニック】』

著者の一人であり、同僚でもある songmu さんに『みんなのGo言語』をいただきました。Go言語界隈の有名人がずらりと顔を並べていて豪華。拙作のツールも大きく取りあげていただいて、ありがたいです。 自分もGoという言語が好きで、趣味ではよく書いている(…

はてなの3代目CTOに就任しました

はてな退職の辞 - stanaka's blog にある通り、id:stanaka の引退に伴い、2016年8月1日付で私の勤務する株式会社はてなのCTOに就任いたしました。初代のはてなCTOが id:naoya でしたので、3代目のCTOということになります。 はてなで働きはじめたのは2006年…

Alloy をコマンドラインから実行できるツールを書いた

先日触れた Alloy は、エントリの最後に書いたようにインクリメンタルなモデリングを行うためのものだけど、基本的に提供されているインターフェイスが GUI なのが少し不便だった。全てのコマンドを実行するショートカットキーがなく、メニューから選ばなく…

OAuth2 のフローを Alloy Analyzer でモデリングする

趣味でウェブの認証 API を地力で設計しようとしていたときに、認証フローの仕様を頑張ってこしらえたとして、その正しさをどうやって保証するんだろう? と疑問に思い、調べていたところ、「形式手法」というのに行き当たった。 形式手法というのはシステム…

Go 言語における並行処理の構築部材

Go

5年前に買った『Java並行処理プログラミング ―その「基盤」と「最新API」を究める―』をようやく読んだ。買った頃には Perl やシンプルな JavaScript ばかり書いていたので並行プログラミングなんてほとんど気にすることがなく、実感がなくて読むのも途中で止…

AsciiDoc(Asciidoctor)の文書をtextlintで校正する

AsciiDocはMarkdownのようなテキストマークアップ言語のひとつで、ページ内リンクや脚注などかなり機能が豊富なので、大きめのドキュメントを本腰を入れて書くなど、表現したいものがある程度複雑なときに便利。DocBookというフォーマットを通じて、HTMLだけ…

第三者のための『リーダブルコード』

新人エンジニアにオススメの本のひとつだよねー、などと言いつつ自身は読んだことがなかったので慌てて買って読んだ。 お題「リーダブルコード」 リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)作者: Dust…

リスクを直視しないという罪:『熊とワルツを』

ウィッシュリストに入れてたのを同僚が贈ってくれた。 熊とワルツを リスクを愉しむプロジェクト管理作者: トムデマルコ,ティモシーリスター出版社/メーカー: 日経BP社発売日: 2013/09/12メディア: Kindle版この商品を含むブログ (4件) を見る リスクのある…

lgtm.sh をバージョン 0.4.0 にアップデートした

lgtm.sh をバージョン 0.4.0 にアップデートした。 motemen.hatenablog.com homebrew でインストールできるようになった homebrew-motemen/lgtm.sh brew tap motemen/motemen brew install lgtm.sh でインストールできる。もともとのスクリプトの性質上 /usr…

git fetch の裏側では何が起こっているか

Git

git fetch の裏側でどんな通信が行われてリモートリポジトリの内容が取得できるのか調べたのでまとめる。もともとは git の HTTP や SSH といったプロトコルでどのように実現されているか、というところに興味があった。Git v2.7.1 を基にしている。 事前準…

sbt の依存ライブラリを一括 ghq get する

Scala を書くときは IntelliJ Idea みたいな IDE を使っていればドキュメントを確認しやすいのだけど、やっぱ手慣れたものを使いたい。というわけでだいたいの時間はテキストエディタ(Vim)を使っている。そういう時、ソースコードが手元にあると開発の助け…

『圏論の歩き方』が難しかったので『Basic Category Theory for Computer Scientists』を読んだ

先日ウィッシュリストから『圏論の歩き方』を贈ってもらいました。圏論を使っているさまざまな分野の若手研究者がオムニバス形式でその紹介をするというもので装丁も可愛らしくとっつきやすそうな感じ(という甘い考えはすぐに砕かれますが)。 圏論の歩き方…

sbt で Vim のスワップファイルが watch されるのを抑制する

Scala の話。sbt で ~compile とかしてるときに Vim で新しいファイルを編集しはじめるとコンパイルが始まってなんだこりゃとなることがある。いまいちまとまった情報がないのでここに記しておく。 こういう場合 watchSources というキーに変更を加えてやる…

2015年に作ったもの20点(セルフレビューつき)

いちおう振り返っておかないと 2016 年を迎えられないという心持ちになったので、全部ではないけど列挙する。また、作ってブログに書いたけど自分では使ってません、というのも無責任なので、現在自分で利用中かどうかも添える。 go-typeswitch-gen (Go、コ…

任意の入力を human-readable にする humr ってツールを書いた

Web サーバのアクセスログを tail してながめている時にパーセントエンコーディングされた文字列をデコードしたり、コマンドラインで数字を sort -n したあとにでかい数字を丸めて表示したり("1234567" を "1.2M" に、とか)したくなることが多かったので、…

goiferr で Go のエラー処理コードを自動挿入する

Go

Go 言語には例外機構が備わっておらず、関数や手続きのエラー的な状況を表すには、返り値を多値にして本来興味ある結果とともに error インターフェイスを返す、というのが一般的です。例をあげるまでもないですが、ファイルを開くという(失敗する可能性の…

Slack のログを自動で Google Spreadsheet に保存する

2020-05-12 22:50 追記 2020-05-05 より、Slack のトークンは作れなくなってるので、このエントリの方法ではストレートに実現できなくなっています。トークンの代替方法についてはサポートしかねる(というか知らない)ので、各自がんばりましょう! 2015-11…

ISUCON5 本選に参加して7位に終わりました #isucon

表題のとおり、ハロウィンの夜ゾンビ化した渋谷の街でヒカリエに取り残された俺たちは、ISUCON5本戦に参加してきました。 予選はこちらをご覧ください: motemen.hatenablog.com チームは id:wtatsuru (たつる先生)と id:ichirin2501 (いちりんちゃん)と…

Qiita 記事中のコード片をダウンロードするツール

Qiita に書かれた記事、とくにシェルスクリプトに関するものはローカルに保存して実行できる便利な「おみやげ」が含まれているものも少なくない。そして多くの場合そのソースは当該記事そのものであって、Gist にアップロードしています、というようなものは…

git commit --fixup とは何か

Git

git commit --fixup というオプションの存在を最近知って調べた。 ヘルプとリリースノートより "git commit" learned the --fixup and --squash options to help later invocation of interactive rebase. Git v1.7.4 Release Notes --fixup=<commit> Construct a co</commit>…

Electron で AdSense のレポートをメニューバーから確認できるアプリを書いた

ぼくはその日を善く生きたかどうかは AdSense の収益で決まると思っているので、以前にも AdSense のレポートを CLI で確認できるツール を書き、この記事にもあるように tmux のステータスバーに収益を表示していつでも確認できるようにカスタマイズしてい…

ISUCON5 予選通過したが若手に負けました #isucon

表題のとおり、ISUCON5 予選日曜の部にチーム「2nd party cookies」として参加し、17609点の総合10位で本選出場となりました(http://isucon.net/archives/45532743.html)。 それは良かったのだけど、実はうれしさも8割引きで、というのも同日に参加し3位で…

Go のシンプルかつ明快な SQL クエリビルダ go-sqlf

Go

Go でリレーショナルデータベースを利用したアプリケーションを書いているとき、動的に SQL を組み立てたい場合には、いくつかの方法が考えられます: クエリビルダを使う。世の中にすでにいろいろ存在します。(そのためのライブラリなので)動的に生成する…

YAPC::Asia Tokyo 2015 に行ってきた #yapcasia

YAPC::Asia Tokyo 2015 今回はキャパも拡大し、あぶれることがあまりなかったのがよかった。それでも立ち見だったり入れなかったりがあるのはさすがの人数。これだけの人間を動かすスタッフのみなさんには困難も多々あったのだろうと思いますがおかげさまで…

Git config から struct に読みこむ Go パッケージを書いた

Git や GitHub にまつわるツールは gitconfig に値を格納することにしておくのがユーザにも便利で、よく使っているし広く使われているとおもう。いっぽう YAML とか JSON とか設定ファイルによく使われるフォーマットは構造体に値をまとめて読みこむのが普通…

Go プロジェクトのバージョニングとリリースを CI で自動化する

Go

gobump で Go プロジェクトのバージョニングをおこなう の続き。すっかり書くのが遅くなってしまったけれど、別にもったいぶるような特別なことはないです。 ここでは、Pull Request のマージを契機に、バージョンを進めるコミットをし、push して、GitHub …

はてなで一緒に働きませんか?