Golang: 構造体がインタフェースを実装しているかコンパイル時にチェックする

Go

構造体がインタフェースを実装しているかコンパイル時にチェックする話。公式のFAQ [1] や Effective Go [2] ではすでに説明されているが、知らなかったのでメモ。 go1.0.3 を想定。以下のような Animal インタフェースがあるとする。 type Animal interface…

ブラケット表記された句構造木をtikz-qtree形式に変換するツールを作った

ブラケット表記された句構造木を tikz-qtree 形式 (正確には Qtree 形式) に変換するツールを作りました。ネーミングが微妙ですが...。出力された LaTeX ファイルを pdflatex などでコンパイルすると上図のような構文木が得られます。 https://github.com/te…

CoNLL-X フォーマットの依存構造木のデータを tikz-dependency で描画するためのツールを作った

最近朝晩はめっきり寒くなってきました。CoNLL-X フォーマットの依存構造木のデータを tikz-dependency で描画するためのツールを作りました。 https://github.com/tetsuok/conllx-to-tikz-dep 機能は単純で入力として CoNLL-X のデータを与えると、latex の…

LaTeX で画像だけの PDF を生成する

LaTeX のソースで \documentclass で standalone クラスを指定して pdflatex や xelatex でコンパイルすると, TikZ などで図を作るときに図の周辺の余白を切り取った pdf ファイルを生成してくれるので便利です [1,2]. 図は日本語と英語の文に対して単語ア…

OS X で gdb 7.4 がクラッシュする話

OS X で gdb 7.4 をビルドして C/C++ のプログラムをデバッグしていると, 同じセッションで2回プログラムを実行すると悲しいことが起きます: 長らく何でだろうと思っていたところ, [1] でバグとして報告されていました. エラーを見ると分かると思いますが, m…

golang でビルド時に最適化をオフにする

Go のプログラムのデバッグ時に gdb が便利だよということは Debugging Go code with GDB に書いてあるのですが, gdb で変数の調査をしようとしたときに, ローカル変数の値がレジスタに載っていて表示されない場合があります. もちろんレジスタを見れば分か…

TikZ-dependency で 係り受け木を描く

自然言語処理の本や論文を読んでいると, 綺麗な曲線で係り受け木を描いてあるものがあります. 一体どうやって書いているんだろうとずっと以前から思っていたところ, 先日 tikz-dependency という LaTeX のパッケージを見つけました. これは PGF/Tikz (以下 t…

cat コマンドを Go で実装してみた

Go

とあるコードのプロトタイプを作るがてら、簡易 cat を Go で書いてみた。C++ の template まわりのエラーとサーバーに混在する Boost のリンクエラーにめげそうになっていたので、やる気を取り戻せたかも。

Ubuntu の /bin/sh が /bin/dash へのシンボリックリンクになっている話

リンクエラーで困っていた時に起きた話です。知っている人はちゃんと対処しているのかもしれませんが。研究室で使っている他の Linux ディストリビューション (例えば Arch や Gentoo (アルファベット順)) では /bin/bash へのシンボリックリンクに設定(し…

Gnuplot で色々な部分の色を変更する

Gnuplot を使っていて、プロットする点や線以外の部分(凡例や軸など)の色を変えたいということがあったのですがいつもその場しのぎでやっていたので、備忘録的にコードとして残しておきます。以下のコードでは、軸などの部分を白にした sin(x) のグラフを …

ar と ranlib で GW の1日潰した話

とある翻訳デコーダを gcc だけでなく clang でもコンパイルできるようにしようと思い、KenLM の人に連絡したところ、ビルドツールをサクッと変更してくれて、ついでにヤバい警告が起きているコードも修正することができ、「Linux の clang でコンパイルが通…

GIZA++ の移植性が1ポイント向上した話

先日 GIZA++ の maintainer の Chris D. 氏に「OS X Lion 上で Apple の clang 3.1 でコンパイルがコケる* ので、送ったパッチを反映してほしい」と頼んだら、送ったパッチよりも更なる変更を加えてチェックインしてくれました。これで OS X Lion でも特にコ…

引っ越し

tettsyun という hatena id を使っていたが、タイポされやすく、はてな Blog が誰でも作成できるようになったのでお引っ越し。