bullet-scala: N+1クエリ問題を回避する

Scala関西 Summit 2015での発表で触れていたN+1クエリ問題をなんとかするためのライブラリを公開した.

発表は以下のもので, ここでは「関係モナド」という名前で紹介していたけれど, これは口頭でも説明したように便宜上てきとーにつけた名前であって, とくにそういう名前のよく知られたモナドがあるというわけでもなければ, そもそもモナドであるかどうかはあまり本質的ではない. この発表のあとに, Rails (Active Record)でのbulletのようにN+1問題の検出をScalaでやる方法はないだろうか, と言っている人がいたので, そういうものを探していて辿りつけるとよかろうということで, bullet-scalaという名前にした. もちろんN+1問題の検出のためのライブラリというわけではないし, 動的に検出するのではなく原理的に問題が発生しないようにするものなので, 思想は全く異なる.

続きを読む

Scalaで型レベルのラムダ計算

新しい言語をさわったらとりあえずラムダ計算のインタプリタを実装するよね! Scalaでふつうにラムダ計算のインタプリタを実装するのはあまりに簡単*1なので, 型レベルでやってみた.

まじめな話をしておくと, C++のテンプレートがチューリング完全なのは有名な話だけど, Scalaではどうなのか気になった. 以前C++のテンプレートでラムダ計算のインタプリタを実装したのと同様のことができるか思考実験してみると, だいたいできそうに思えたのでやってみた.

*1:ケースクラスの公式ドキュメントに途中まで実装が書いてあるレベル

続きを読む

Scalaで生SQL - SlickのSQL補間子にリストを渡す 他

ScalaSQLを書くのにSlickで便利にやる話. Slickでは生SQLを補間子(sql"...")で書けるけれど, リストが渡せなくてWHERE column IN ($list)できなかったり, 他にもいくつか不便なところがあったのでなんとかした. 最近になってScalaを書き始めたのでScala力を上げるための練習も兼ねている.

続きを読む

Caskはもう古い、これからはEl-Get - いまどきのEmacsパッケージ管理

秘伝のタレとなったEmacsの設定をgitで管理するなどして, 複数の環境で同じ設定を使うようにするのはかなり一般的になってきました. ただ, 使っている非標準パッケージも含めてきちんと管理しようと思うとけっこう大変です. とくに, 以下のような点はぜひとも実現したいところですが, (これまでは)なかなか難しい部分もありました.

  • 使っているパッケージのインストールを自動化したい
  • いろいろな配布元(GitHub, Emacs Wiki, 個人Webサイト, etc.)からインストールしたい
  • きちんと動くことがわかっているパッケージバージョンに固定したい
  • 新しいパッケージを簡単に試したい
  • パッケージと設定の対応をわかりやすくしたい
続きを読む

『BrandSafe はてな』のアドベリフィケーションのしくみについてアドテク系勉強会で発表しました

BrandSafe はてなで使われている技術についてアドテク系の勉強会で発表してきました.

続きを読む

【はてなスタッフ非公式ブログバトン】 Haxeの善し悪し

id:hatz48さんからバトンがまわってきました.

前々から個人的に興味があったので, 社内で言語の話題が出る度に「Haxe, Haxe」と言っていたら, 「Haxeと言えばtaraoさん」みたいになってて, なぜかHaxeについて書く羽目になってしまった. Haxeなんて1ミリも書いたことないのに! この記事は http://try.haxe.org/ でちょっと遊んだ程度のにわか知識で書かれております.

もともとはよさげなAltJSを紹介していくみたいな文脈のようだけど, 個人的には特殊用途以外では素のJavaScript書いてりゃいいんじゃね, と思うので, 文脈無視で単純に言語/処理系の善し悪しについて書くよ!

続きを読む

anythingでgitリポジトリ内のファイルの全列挙をきちんとやる

anythingでgitリポジトリ内のファイルを列挙するなんていうのはやり尽くされている気がするけれど, きちんとやっているものは意外と少なかったので, フルスクラッチで書いた.

続きを読む

Evil: EmacsをVimのごとく使う - 拡張編

Roads? Where we're going we don't need roads.

Back to the Future

Evilの真髄はその拡張性です. 本稿では主にチュートリアルを通して, Evilを拡張する方法を解説します.

続きを読む

Evil: EmacsをVimのごとく使う - 設定編

Then you will see, it is not the spoon that bends, it is only yourself.

The Matrix

EmacsあるいはVimに慣れ親しんでいれば, Evilを使うのにある程度は勝手がわかるものの, 逆にしっくりこない点も多いでしょう. EvilはEmacsの機能との相互運用性を重視していることから, Vimユーザにとって不慣れな点が生じることは避けられず, EvilがVimをエミュレートする以上, Emacsユーザにとって不慣れな点が生じることも避けられません. 本稿では, どちらに慣れ親しんだユーザにとっても快適に使えるようにEvilをカスタマイズするためのヒントを紹介します. ただし, いくらカスタマイズしても完全なVimや完全なEmacsになることはありません. 使い勝手をよくして自分の好みに合わせながら, できるだけEvilのやり方に慣れていくように努めることが大切でしょう.

続きを読む