2007-12-01から1ヶ月間の記事一覧

リングワールド

なんか回収されてない伏線がいっぱいあるような。 結局リングワールドとは何だったのだろう? リングワールドの住人と地球人の関係は? 些末なことだが、自動翻訳装置が翻訳可能になるまでの言語データの収集はどういうアルゴリズムになってるのかが気になる…

バージョン1.9.0

Ruby1.9.0が出たのでちょっと試してみた。 クロージャ irb> RUBY_VERSION => "1.9.0" irb> x = 100 => 100 irb> makeplus = lambda{|x| lambda{|y| x+y }} => #<Proc...> irb> plus1 = makeplus.call(1) => #<Proc...> irb> x => 100 #今まではここで x が 1 になってた。 irb></proc...></proc...>…

メトロノーム

簡単そうなので久しぶりにMIDIで書いてみる。 GM規格ではチャンネル10はリズム(パーカッション)音色に固定され、各音階(ノート番号)が、それぞれのリズム音色に対応しています。 http://www.pluto.dti.ne.jp/~daiki/Midi/AboutMidi_Program.html 10=0…

文字列連結

文字列連結の中置演算子に+の記号を割り当てた言い出しっぺは誰なのか知りたかったので、 各言語で文字列連結演算子に何の記号が割り当てられているか調べてみた。 いまのところBASICの線が濃厚。 (あんまり検証してないので間違いがけっこうありそう) FOR…

メソッド未定義時のフック

わざと存在しないメソッドを使って、 1 foo: 2 bar: 3をDo itしてみる。当然エラーになるので、デバッガのボタンを押す。 見ると最後は doesNotUnderstand: aMessage というメソッドが実行されていることがわかる。 ということは、これがrubyのmethod_missin…

WIN32OLE

Comパッケージのデフォルトの使い方では、以下のように使いたいアプリケーション毎にクラスを定義するような感じのようだ。 ie := Examples.InternetExplorerApplicationController new.なのでrubyと同じようにnewするときにProgIDを引数に与えられるWIN32OL…

リアルタイムキースキャン

VBA

以下の宣言を書くとVBA中でGetAsyncKeyState(キーコード)という関数が使えるようになる。 Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long 残念ながらエクセルとエクセルマクロ(VBA)の基本機能だけでは、どのボタンが押さ…

モナドと群・環・体

いつも忘れる群・環・体。モナドを例に考えると実感がわくかな? 1. (return x) >>= f == f x 2. m >>= return == m 3. (m >>= f) >>= g == m >>= (\x -> f x >>= g) 最初の規則は return が >>= に関して左単位元に なっていることを要請しています。二番目…

repeat,cycle,iterate

repeat,cycle,iterateでrepeat,cycle,iterateを定義してみる --repで定義したrep rep x = x : rep x --cycで定義したrep rep_cyc x = cyc [x] --iterで定義したrep rep_iter = iter id --cycで定義したcyc cyc xs = xs ++ cyc xs --repで定義したcyc cyc_rep…

Sendkey

vim

vimから他のアプリケーションにキーシーケンスを送って制御する関数を作った。 って、単にWScript.Shellを呼び出してるだけだけど。 使い方 :call Sendkey('対象アプリケーションのウインドウタイトル','送信するキーシーケンス') コード本体 function! Send…

リスト内包表記の舞台裏

以下のリスト内包表記が実際にはどう動いているのかを確認する。 [ (x,y) | x<-[1..3], y<-[1..3] ]内包表記をdo記法に変形 do x<-[1..3]; y<-[1..3]; return(x,y)do記法を>>=演算子に変形 [1..3]>>=(\x-> [1..3]>>=(\y-> return(x,y)))m>>=f を concatMap f…

空リストのエラー

haskellの型でハマった事例その3 main = print []これを実行すると以下のようなエラーになる。 Ambiguous type variable `a' in the constraint: `Show a' arising from use of `print' at a.hs:1:7-11 Probable fix: add a type signature that fixes these…

拡張子とファイルタイプ

vim

拡張子とファイルタイプの対応づけは$VIMRUNTIME/filetype.vimに定義されているようだ。 Vim documentation: filetype 詳細: ":filetype on"コマンドは次のファイルのうち1つをロードする。 MS-DOS $VIMRUNTIME\filetype.vim Unix $VIMRUNTIME/filetype.vim …

順列

自分でチャレンジしてみたけど、書けなかったのでカンニング。 permutation(,). permutation(Xs,[Z|Zs]) :- select(Z,Xs,Ys), permutation(Ys,Zs). select(X,[X|Xs],Xs). select(Y,[X|Xs],[X|Ys]) :- select(Y,Xs,Ys). http://it.wikipedia.org/wiki/Prolog …

Lisp-1とLisp-2

今までScheme系とCommonLisp系って勝手に呼んでたけど、こういう用語があったのか。 最近、「CommonLispはLisp-2で、SchemeはLisp-1である」という文章を読んだ 名前空間がひとつ(関数と変数に区別がない)のがLisp-1で、 区別があるのがLisp-2であるというこ…

Haskell mode for Vim

vim

omni補完、ヘルプ、デバッグなどお便利機能満載。 Haskell mode for Vim いい感じかも。 激しく使えそうなコマンドが、 :GHCi main ghciで関数mainを作用させられる。 http://d.hatena.ne.jp/tanakaBox/20071018/1192653919 良さそうなのでインストールして…

順列

とりあえず3個の要素決めうちバージョン perm xs = [ [a,b,c] | a<-xs, b<-xs, c<-xs, a/=b, b/=c, c/=a ] main = print $ perm [1..3]実行結果 [ [1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] ]うーん、これをどうやって3個以外の場合に一般化すればい…

ウェブブラウザ

VisualWorksのウェブブラウザTwoflowerが動かなかったのでデバッグしてみた記録。 Message not understood: #createDocument htmlString: aString self htmlAspect value: aString. self createDocument.クラスは Twoflower.TfDocumentModel createDocument …

Normarize + AAC

全然動画に関係ないけど、wavファイルをノーマライズして128kbpsのm4aに変換する設定を書いた。 coresディレクトリにwaveflt2.exeをコピーしてノーマライズに使っている。 [Item0] Title=Normarize + AAC(M4A) 128kbps TitleE=Normarize + AAC(M4A) 128kbps …

regeditの代替ツール

以下のようなHTAを書き始めようとしてたけど、 <form name=f> <input name=i size=80> <input type=button value=read onclick='alert(new ActiveXObject("WScript.Shell").RegRead(document.f.i.value))'> </form>普通にいいツールがあることを教えてもらった。 激動たる俺RegEdit改 http://textexpage.s154.xrea.com/software/gekiorekai/

無限リスト

エラトステネスの篩のGauche版を書いてみる。 (use util.stream) (define (mod? x y) (not (zero? (modulo x y)))) (define (sieve l) (stream-cons (stream-car l) (sieve (stream-filter (cut mod? <> (stream-car l)) (stream-cdr l)))))実行結果 gosh> (…

「プログラムから開く」でプログラムを参照できない

まさにこれにはまった。 関連づけに使うプログラムはバージョン番号が入ったフォルダに展開しちゃダメだ。 「プログラムから開く」一覧を生成する際に「参照先が存在しない」として表示されません。 さらにまずいのは、エントリ自体はすでに存在するため、「…

HIG(Human Interface Guidelines)

Appleのは有名だが、GNOMEのも同じ名前であるとは知らなかった。 Apple Human Interface Guidelines: Keyboard Shortcuts Quick Reference http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGKeyboardShortcuts/chap…

CUA(Common User Access)

こんな用語があったのか。知らなかった。 IBM Common User Access - Wikipedia, the free encyclopedia # In WordPerfect, the command to open a file was [F7], [3]. # In Lotus 1-2-3, a file was opened with [/] (to open the menus), [W] (for Workspa…

bash.chm

chm

bash.chmを作ったのでそのメモ。 本体のhtmlファイルの他に、プロジェクトファイル(hhp),目次ファイル(hhc),インデックスファイル(hhk)の3つを用意すればよい。 念のため、各ファイルはSJISに統一した。 bash.hhp 全体的な設定を書くファイル [OPTIONS] Comp…

簡易ワークスペースを作る

やっぱり新しいバージョンのSeaSideが使えるsqueak版に乗り換え 80番起動 一旦停止させて80番で再起動 KomSeasideJ stop. KomSeasideJ startOn: 80. 今回のコード formを作ろう http://d.hatena.ne.jp/minekoa/20061002/1159813201 目的そのままなので、ここ…

letのマクロ

letのマクロがどう展開されるか実験する。 本節では、導出式型をプリミティブ式型(リテラル、変数、手続き呼び出し、lambda、if、set!)に置き換えるマクロ定義を示す。 http://www.swiss.ai.mit.edu/~jaffer/r5rsj_9.html#SEC81 Gaucheのletは組み込みのSpec…

httpアクセス

awk

ソケット通信の練習としてhttpアクセスをやってみる。 3.8.9 getline を使ってコプロセスから入力する gawkはコプロセス(coprocess)を起動して 双方向の通信を可能にすることができる。 これは`|&'演算子を使って行う。 典型的には、以下の例のように データ…