読者です 読者をやめる 読者になる 読者になる

契約による設計と名前による型づけ, およびオブジェクトの不変性

契約による設計と名前による型づけ 最近, 社内で契約による設計の話が雑談として何度か出ていて, id:hakobe932さんが社内勉強会で紹介していたり, id:shiba_yu36さんがWEB+DB PRESSでSmart::Argsで制約をチェックする記事を書いていたり, 活発な議論になって…

正規表現の名前つきキャプチャを便利にする

Java 7から正規表現で名前つきキャプチャが使えて, Scalaのscala.util.matching.Regex.Matchでもそれに相当する機能がある(インタフェースや実装はJava標準のものとは別)けれど, ちょっと不便なところをどうにかしているうちに, インデックスによるキャプチ…

APIへのPUTやDELETEもブラウザから試す

APIサーバを作っているととにかくcurlで叩いてレスポンスを| jq .して見て, とやっていてリクエストボディのJSONの中括弧や引用符の対応がとれてなくてイライラしたり, 必要なヘッダをつけ忘れていてハマったり, とにかく非効率な感じがしてきたので, ブラウ…

はてなブログに移行した

ようやく, このブログをはてなダイアリーからはてなブログに移行した. これまでなかなか移行できていなかった理由や, 移行を機に改めた点についてまとめておく.

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

Scala関西 Summit 2015での発表で触れていたN+1クエリ問題をなんとかするためのライブラリを公開した.発表は以下のもので, ここでは「関係モナド」という名前で紹介していたけれど, これは口頭でも説明したように便宜上てきとーにつけた名前であって, とくに…

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

新しい言語をさわったらとりあえずラムダ計算のインタプリタを実装するよね! Scalaでふつうにラムダ計算のインタプリタを実装するのはあまりに簡単*1なので, 型レベルでやってみた.まじめな話をしておくと, C++のテンプレートがチューリング完全なのは有名な…

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

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

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

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

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

BrandSafe はてなで使われている技術についてアドテク系の勉強会で発表してきました. 『BrandSafe はてな』のアドベリフィケーションのしくみ from Lintaro Ina

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

id:hatz48さんからバトンがまわってきました.前々から個人的に興味があったので, 社内で言語の話題が出る度に「Haxe, Haxe」と言っていたら, 「Haxeと言えばtaraoさん」みたいになってて, なぜかHaxeについて書く羽目になってしまった. Haxeなんて1ミリも書…

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

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

Evil: EmacsをVimのごとく使う - 付録 (カスタム変数一覧)

Evilのカスタム変数の一覧です.

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の機能との相互運用性を重視…

Evil: EmacsをVimのごとく使う - 導入編

You underestimate the power of the dark side. Star Wars: Episode VI - Return of the Jedi EmacsはLispで自由自在に拡張でき, エディタの枠におさまらず, コンピュータ上でのあらゆる創造的活動のための環境として発達してきました. しかし, 少なくとも…

はてなダイアリーにEmacsから投稿

Emacsからはてなダイアリーに投稿できるようにする試みはやり尽くされている感じがするけれど, 古すぎたりどうもしっくりこなかったりしたので, 自分で一から実装した.

ノートPCでLinuxの仮想化

いままではノートPCではWindowsを使ってきた. なんだかんだで使い慣れて*1いたり, あるいはハードウェア機能をフルに活かすためには他に選択肢が無かったりした. でも最近はペンタブ搭載機でもLinuxがふつうに動いたりするし, Windowsを使っていてもどうせ仮…

ペンタブノートPCでLinuxを使う

ThinkPad X201 TabletとThinkPad X220 TabletにLinux (Debian sid)をインストールして, なかなか快適に使えるようになってきたので備忘を兼ねて設定方法を書いておく.

Emacs上のターミナルを最強に: term+.el

第6回関西Emacs勉強会で, Emacs上で最強のターミナル(端末)環境を実現する話をしてきました. 以下がそのとき用いたスライドです. Emacs上のターミナルを最強に from Lintaro Ina このスライドだけでは, とりあえず使ってみるのではなく常用したい場合にどう…

Maybeに限らずJavaで直和型を実現できるか

JavaでMaybeを説明した以下の記事について, id:tozimaさんと某所*1でやりとりしていたら, 有益な話が出てきたのではないか, ということになったので, 紹介. *1:非公開なところ.

LaTeXでオブジェクト指向プログラミング

LaTeXのコマンドは複数の単語のものも一続きにしないと一つのシンボルと見なしてもらえないのが不便だったので, 名前空間が使えるというか, 記号で区切った後にサブコマンドを続ける書き方をサポートするものを作っていた. そうしたらいつの間にかオブジェク…

Emacsでプレフィックスキーにもコマンドを割り当てる

Emacsでは, たとえばC-c C-jにコマンドが割り当たっているとすると, C-cまで打った時点では入力待ちになる. 慣れてくるとC-c C-jは素早く打てて, C-cを押して次が何のキーだったか迷うようなことはなくなってくるので, C-cを押してしばらく(0.5秒とか)経った…

クロスドメインXHRのためのApacheプロキシ

web

XMLHttpRequestがsame origin policyに縛られているのをなんとかするためのプロキシをmod_proxyだけでやるという話.

C++のテンプレートでラムダ計算と型推論

C++のテンプレートを, コンパイル時に走るプログラムを記述するための言語だと思うと, この言語はチューリング完全なので, 当然ラムダ計算のインタプリタを実装できるし, そのラムダ計算の項の型を推論することもできる. できるからと言って馬鹿みたいにやっ…

Emacsで状態に応じてモードラインの色を変える

モードラインの色を自動的に切り替えるためのマイナーモードをだいぶ前に作ってあったので, 使用例とともに紹介.

Rubyで関数型プログラミング

Rubyでの快適関数型プログラミングライフを追求するあまり, 使えるのか使えないのかよくわからないものを作ってしまったという話. Rubyに不慣れな人や関数型プログラミングに不慣れな人に対して酷なのはまだわかるとしても, C++(というかboostでの関数型プロ…

Vimperatorのコマンドラインで自動的にIMEをオフにする

VimperatorのコマンドラインでIMEがオンになっていると, f等でヒントを選択できなくて困ることがある. 32ビットのWindows XPを使っていたときは, ime_controller.jsを使うことでコマンドラインや挿入モードでは自動的にIMEをオフにすることができたけれど, …

「当選確率が2倍に!」の解釈

「MacBook Air 11インチ欲しい!」のキャンペーンページに, はてなブックマークを使って当選確率UP!さらに、このキャンペーンページをあなたのはてなブックマークに追加すると、当選確率が2倍に!この機会にぜひはてなブックマークもご利用開始ください。※…

GNU screenのattach時に環境変数を自動的に引き継ぐ

GNU screenを使っていれば, 作業の途中でログアウトするときにdetachしておいて, 作業を再開するときにattachすれば, 作業途中の端末の状態がそのまま維持されるのでとてもべんり. たとえば, 最初作業していたのとは別のホストからsshでログインしてattachな…

Yet another icomplete

icompleteの縮小版のようなものを作った.

オペレータが入力されたら相対行番号を表示

Yokohama.vimの行削除のスライドみてて、オペレータが入力されたら、その行から相対的行番号を一時的に左側に表示すればいいんではないかと思った。Vimスクリプトでそんなことできるかどうかは知らんけど。— m2ym (@m2ym) September 26, 2010という話があっ…

マルチモニタ環境でウィンドウが画面外にはみ出すのを防止

最近はディスプレイも安いので, ディスプレイを複数台並べて広い作業環境を確保している人も多いはず. うちの自宅環境も, 24インチワイドディスプレイの隣に21.5インチワイドディスプレイを縦置きにしている. 縦置きする理由は, Webブラウザを最大化表示して…

auto-fu.zshでコマンドを確定するときに不完全な補完サフィックスを無視する

zsh

auto-fu.zshのちょっとした改善.

Emacs (Viper/Vimpulse)で日本語の文節を扱う

というか、Emacsだとうまく文節ごとに削除してくれたりするんだろうか。それだったらすごいな。2010-07-30 15:38:47 via Termtterという話があったので, どうなっているか調べてみた. まず移動に関して, Emacsの単語移動コマンドforward-word/backward-word …

スマートポインタのつくりかた

cpp

2年ちょっと前にC++で書いた非侵入的参照カウント方式のスマートポインタ実装を発掘した. スマートポインタの実装にはC++の様々なマニアックな実装手法が隠れていて面白い. せっかくなので, 解説つきで晒すことにした.このスマートポインタはboost::shared_p…

Emacs (Vimpulse)でtextobj-between

textobj-between 書いた - 永遠に未完成のtextobj-betweenをEmacs+Vimpulseでも使えるようにしてみた.

Emacs (Vimpulse)でtext-objectでも使えるコメントアウトoperator

EmacsでviをエミュレートするViperを強化してVimをエミュレートするようにしたのがVimpulse. ここ最近開発が活発で, 設計もかなりスマートになって, ゆくゆくは本家Viperを置き換えることを目指すまでになっている. 入れる場合は最新版をgit cloneする.ぼち…

ThinkPad X201 TabletをSSDに換装

購入時に選択できるSSDはとても高かったので, 320GB SATA HDDを選択して購入して, 後で自分でIntel X25-M SATA SSD 80GBに換装した.

このブログのデザインを変更した

いまさらながら, デザインをいじってみた. Hatena2-darkgrayを基本として変更.

auto-fu.zshを使う+キャンセルできるようにする

zsh

zshで自動補完したい - hchbaw記を使ってみた. これはすごい!

我こそは無頼漢

新風館で地ビール祭があるというので腹も空かせたまま駆け付けてみると, 普段の夜の閑散とした物悲しさが嘘のように, ビールを飲む日本人と日本人以外のビールを飲む人々でごった返していた.

zshの履歴検索にanything.elを使う(ターミナル版)

anything.elを使ってzshの履歴検索をする - http://rubikitch.com/に移転しましたを参考に, ポップアップせずにターミナル内で動くようにしてみた.

複数のメジャーモードを文脈に応じて切り替え

multi-mode.elを使うと, 一つのバッファ内で文脈に応じてメジャーモードを切り替えることができる. けれど, カーソル位置を受け取って, 切り替えるべきメジャーモードとその有効範囲を返す関数を定義しないといけなくて, 使い方が難しい.そこで, 開始・終了…

最小限のJavaで素数を列挙(Javaで無限リスト)

以前書いた「ラムダ計算基礎文法最速マスター」では, ラムダ計算に自然数やデータ構造, 条件分岐, ループが用意されていないため, これらをラムダ項を使って模倣する方法を紹介しました. このようなことはどんなプログラミング言語でも起きうることで, たと…

はてなグループ日記でプレゼンモード

はてなグループのキーワードで使えるプレゼンモードはちょっとしたスライドを作るときにとてもべんり. でも, はてなグループを無料で使っているとキーワードはパブリックになってしまうので, あんまり馬鹿なスライドを作って公開してしまうわけにもいかない.…

Emacsサーバを適切に終了する

emacs --daemon でサーバを起動しておいて, 複数のターミナルウィンドウから emacsclient -nw することで, ターミナルモードでも単一のEmacsプロセスで複数フレームの編集ができる. これはとてもべんり. でもごく稀にサーバを再起動したいことがあって, kill…

JavaScriptで読む「ラムダ計算基礎文法最速マスター」

以前書いた「ラムダ計算基礎文法最速マスター」(以下「最速マスター」)は, 予想以上に多くの人に興味を持ってもらえたようですが, 同時に難しくてわからなかったという人も多かったようです. 反響から察するに, 構文を見慣れていない(と錯覚してしまう)こと…

GNU screenのウィンドウタイトルを自動設定

screenで開いているウィンドウの数が増えてくると, どれがどれだったか分からなくなってくる. かと言って, いちいちウィンドウに名前をつけるのも面倒. いまいるディレクトリや, 起動しているプログラムに応じて自動的に名前がついて欲しい.zshを使っている…

ラムダ計算基礎文法最速マスター

ラムダ計算は, 多くのプログラミング言語, とくに関数型言語の原形になっています. ラムダ計算について理解しておくことは, 多くのプログラミング言語の習得に役立つでしょう.ラムダ計算はチューリング完全で, 計算能力としてはふつうのプログラミング言語と…

imageLoaderをVimperatorから使う+α

d:id:tomo_snowbug:20090619:1245430454 のimageLoaderというGreasemonkeyスクリプトがなかなか素晴しいので, Vimperatorから使えるようにするついでに機能拡張してみた.