2011-01-01から1年間の記事一覧

記号の幅をいいかんじに揃える

LaTeX で BNF 的なものを書くときに,::= や | の記号をいいかんじに揃えたい.縦に並べるだけなら eqnarray 環境でやればいいかんじに揃う. \begin{eqnarray*} t &::=& x \\ &|& t + t \\ &|& t - t \\ &|& t \times t \\ &|& t \div t \\ \end{eqnarray*}…

ハッシュの衝突

http://events.ccc.de/congress/2011/Fahrplan/events/4680.en.html おもしろい. ウェブアプリケーションフレームワークのほとんどはパラメータを勝手に解析してハッシュテーブルに突っ込んでいるけど,ハッシュが衝突するようなキーを意図的に大量に送りつ…

unite-haddock 書いた

http://d.hatena.ne.jp/kitokitoki/20111217/p1 の「ghc-browse-document の anything 化」が便利っぽかったので同じようなものを書いた. https://github.com/eagletmt/unite-haddock ghc-mod が必要.cabal install ghc-mod でインストールできる.Vim 内…

grundy number

grundy number について知ったのでメモ.これは ある完全情報ゲームについて,両プレイヤーが勝つために最善の状態遷移を選択したとき,与えられた初期状態から先手が勝つか後手が勝つかを答えよ. というような問題を解くときに使えるかもしれない考え方.…

ランタイムに失敗しないインデックス演算子

前回の発展のようなかんじで,GADT を用いて型レベル自然数同士の大小関係を表現する項を作れるようにし,「n が m より小さい」ことを示す項と Vec m a を受け取って n 番目の要素を返す関数を定義してみた. 例によって一度ランタイムに compare して LT, …

ランタイムのチェックを一度で済ます

http://d.hatena.ne.jp/Lost_dog/20111128/1322504143 reify_integer がおもしろいなーと思った. これと同じ雰囲気で, dependent type の例によく出てくる「長さ n のベクトル型 Vec n a」についてこんなのが書けそう. 同じ長さ n のベクトル同士だけ zip…

GHC API を使ってある型コンストラクタのデータコンストラクタを得る

neco-ghc などで,Haskell 用の補完候補をより正確に計算するときに活用できないかなーと思った. GHC 7.0.3 で試した. あるモジュールがエクスポートしている名前は modInfoExports でとれる. そのモジュールで定義されていれば modInfoTyThings で TyThi…

型エラーとして FizzBuzz を出力

GHC で以下のコードをコンパイルしようとすると,型エラーとして FizzBuzz 的なものが出力されます. 出力を見やすくしようとして Template Haskell を使ったら比較的最近の GHC でないとコンパイルできなくなってしまった… 手元の GHC (7.0.3) だと OK で,…

ext3 から ext4 へ

パーティションの内容を保持しつつ ext3 から ext4 へのマイグレーション. 今回はルートパーティションの /dev/sda7 について作業した. 基本的には ArchWiki に書いてある通りに. https://wiki.archlinux.org/index.php/Ext4#Converting_ext3_partitions_…

プログラミングコンテストの記録

そういえばこんなかんじにネタバレを書いてます. http://eagletmt.github.com/contests/ POJ, AOJ を中心に,AC したコード + 簡単な解法の説明. 今のところ POJ 200問くらいと,AOJ 30問くらいを書いてる. まぁ自分の実力は高くないので,どれくらいの人…

uim-skk で server completion

SKK

そういえば,以前書いたパッチ http://d.hatena.ne.jp/eagletmt/20110615/1308162572 がちゃんとまともに書き直されて,本家のリポジトリに取り込まれました. http://code.google.com/p/uim/source/detail?r=7278

夏ゼミ2011

9月8日から10日まで,諏訪湖の近くで行われた研究室の夏ゼミに参加していた. 各自が情報工学に関する何かについて自由に発表するというもので,俺は型レベルプログラミングについて話した. FunctionalDependencies, FlexibleContexts, FlexibleInstances, …

C80

院試が控えているので(?)ビッグサイトへは行かなかったけれども横浜のメロンととらへは行った. 比較的読みたい度が高くて店頭で見つけられたものから.なんと5冊. 現地行くとおまけ貰えたりグッズとかもちょっと買ったりするんだけど,そういうのが一切な…

Linux 3.0 で SBCL 1.0.50 が起動直後に Segmentation fault する問題

Arch では Linux 3.0 が core に入った. http://www.archlinux.org/news/changes-to-kernel-package-and-filenames/ これに関連してドライバの問題やブート時の問題が結構 bug tracker に報告されているけど,自分の環境ではそういった問題は起こっていない…

Arch Linux で PT2 (DVB 版ドライバ earth-pt1 + fuse_b25)

以前 Arch Linux での PT2 環境のセットアップをまとめた.そこでは chardev 版のドライバを利用していた. http://d.hatena.ne.jp/eagletmt/20110307/1299492620 が,BKL が削除されたことによって最近の Linux だとそのままではコンパイルできなくなってい…

ICPC2011 国内予選

haskell-lover というチームで参加していた.メンバーは俺と id:osa_k と id:draftcode. 結果は全体で10位,学内で1位になれました. http://icpc2011.ait.kyushu-u.ac.jp/icpc2011/common/guest_standings_ja.php http://imoz.jp/icpc/2011-domestic.html …

uim-skk で server completion を利用する

SKK

http://gihyo.jp/admin/serial/01/ubuntu-recipe/0175 で SKK の server completion というものを知った. yaskkserv + DDSKK でそれなりに便利なかんじだったので,uim-skk でも使えるようにするパッチを書いた. https://github.com/eagletmt/uim-skk-serv…

Ricty のビルド中に fontforge が segmentation fault でクラッシュする問題

ホームページで触れられているのは Mac OS X についてだけが,Linux においても Ricty のビルド中に fontforge がクラッシュする環境がある. http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/ricty.html どうやら RemoveOverlap() という操作の最中にクラッシ…

reverse

Coq

関数型言語で reverse を書くときは let rec reverse1 = function | [] -> [] | x::xs -> reverse1 xs @ [x] ではなく let reverse2 = let rec aux xs = function | [] -> xs | y::ys -> aux (y::xs) ys in aux [] と書け,という話はまぁよく例として聞く気…

coqtop を Vim の中で動かして連携させる

http://www.iij-ii.co.jp/lab/techdoc/coqt/ を読んでいたらいつのまにかそんなかんじのを書いていた.どうしても Vim で書きたいかわいそうな人以外は普通に CoqIDE や Proof General 使ったほうがいいと思います. https://github.com/eagletmt/coqtop-vim…

ssh 活用

dynamic port forwarding ssh -D 1080 remotehost とか,~/.ssh/config に Host remotehost DynamicForward 1080 と書いて ssh remotehost すると,1080番ポートで SOCKS プロキシサーバを立てられる. firefox のような SOCKS プロキシに対応したソフトウェ…

きょうのめんま

http://www.anohana.jp/menma/index.html #!/bin/sh DATE=$(date +%m%d) rtmpdump \ --rtmp "rtmpe://fms30-cache.stream.ne.jp:1935/aniplex-bc/_definst_/sound/anohana/menma_$DATE" \ --swfUrl 'http://www.anohana.jp/menma/voicePlayer.swf' \ -o $DAT…

recpt1ctl --channel に対する recpt1 の動作を改良

PT2

してみた. http://d.hatena.ne.jp/eagletmt/20110307/1299492620 で recpt1 が死んでいたのは,/dev/pt1video* を close(2) した直後に open(2) すると,終了処理に時間がかかっているのかそのデバイスが使用中のときと同じように EIO で失敗するのが原因だ…

ja_JP ロケールにおける wctype(3)/iswctype(3), wctrans(3)/towctrans(3)

wctype(3) は引数として渡された名前に対応した property を返し,これを利用して iswctype(3) である文字がその property を持っているかどうか判定する.どんな property があるかはロケールに依存しているが,alnum, alpha, blank 等の全てのロケールで使…

gem2arch

実家に帰ってきているんだが,対応を誤って輪番停電により下宿のマシンが起きてこなくなってしまったためやることが無くなり,なんとなく gem を Arch のパッケージマネージャで管理しようとした. 同じような PKGBUILD を手動で書くのはタルいので cabal2ar…

Arch Linux で PT2

PT2 を手に入れてしまったので Arch Linux で使えるようにした作業メモ. マシン環境は % uname -a Linux reinforce 2.6.37-ARCH #1 SMP PREEMPT Fri Feb 25 07:53:43 CET 2011 x86_64 Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz GenuineIntel GNU/Linuxカード…

EM::DefaultDeferrable の使い道

というわけで http://d.hatena.ne.jp/eagletmt/20110211/1297413439 は class HtmlDocument include EM::Deferrable ... で良いのであった… では EM::DefaultDeferrable は何のために提供されているのかというと DefaultDeferrable is an otherwise empty cl…

include / extend と super

勘違いしてた.include / extend したメソッド(?)を上書きしたときも,上書きされたメソッドを super で参照できるのか. extend と super を使ったどーでもいい例. def mod(i) Module.new do define_method :f do super() + [i] end end end module B def …

/proc/$PID/fd とテンポラリファイル

http://memo.officebrook.net/20110211.html を見て,なるほどそうやってファイルを取り出せるのかと感心した. UNIX では open(2) で既に開かれているファイルを unlink(2) してもファイルディスクリプタは有効であり続け,実際に消えるのは close(2) され…

既存の EventMachine::Deferrable なクラスを薄くラップする

本格的に Deferrable なクラスを作りたいときは include EM::Deferrable するけど,そうではなく既存の Deferrable の上にちょっと乗せるだけみたいなときは EM::DefaultDeferrable を利用するといいらしい. em-http-request を利用して非同期にリクエスト…