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

[Prolog][Tips] 美しいPrologのコードの書き方(1)

Prologのコードを美しく書くにはどうしたらいいか?。少々ボリュームがあるので、根気のある人だけ読んでくださいw。でもきっとためになります。

DVD ドライブにアクセスすると電源が落ちる

Old いろいろ原因を調べたら、最近入れたAdaptecのASPIドライバが悪さをしていたようだった。そこで「ForceASPI」というフリーソフトを落とし、中にある「killASPI.bat」を実行してアンインストール(デフォルトではアンインストール方法がなかった)。する…

RubyでBOM付きファイル出力

間抜けながらはまったこと。 $KCODE="u" lines = ["ほげ(X).","ほんげげ(X)."] io = open("result.txt","w") lines.each{|line| io.print(NKF.nkf("-W8 -w16L",line)) } io.close なんてやってて、SWI-Prologで読み込ませると怒られていた。「なんだよーUnic…

PrologでModuleの取り扱い(1)

PrologでModuleを使っていると、Namespaceの扱いがやや面倒になります。たとえば、「data/2」というファクトを処理する述語「process_data/1」というのを、「process」と云うModuleで定義したとします。 :-module(process,[process_data/1]). process(DataNa…

Writing style(書き方テク)

しょうもないことですが、 hoge(X):- foo(X), bar(X). と言うのを、 hoge(X):- foo(X), bar(X), true. と書くようにしておけば、Emacsで書くとき、「Ctrl+k」で述語を行単位で編集しやすいです。「,」と「.」の書き換えが面倒な人へ。

Requireについて

なれてる人は当然のことだと思うけれど、何となく書いてみます。それは、「Require」の書き方。 普通は(本当に普通なのか知らないけれど)、以下のように書きますよね? require 'nkf' class Hoge def utf8(str) return NKF.nkf("-w8",str) end end まあ、P…

MX-R

指の力が弱いのが原因なのか、分かりませんが、とうとう恐れていたことが。 MX-1000→MX-1000→MX-R と保証期間内にチャタリングが原因で交換をし続けているのですが、たった2ヶ月で右クリックがチャタリングを7%の確率で起こすようになってしまいました。 レ…

Prologの述語の書き方

Prologは「実行速度遅い」、「書きにくい」*1、「古い」*2と、三重苦な言語ですが、非常に便利で面白い言語です。 *1:ただし、慣れたら書けます *2:古いけど新しいとも云う

演算子の定義

リファレンスからのコピペだけど、これさえ知ってればOKかな。 つまり、 Rubyで二項演算子は左結合 単項演算子定義の時、「@」がselfになる(普通のメソッド定義でも使えそうだな。意味ないけど) '[' と ']' のような対が必要な演算子は、引数が間に入る '[…

Subclipse 1.4.6

久々にUpdateかけたら、 「まあ♪ Buckminster.coreがテラありませんわ♪」 とか云う。 以前、「まあ♪ Mylynがギガありませんことよ♪」と云われたとき並に何かむかつく。毎回、不親切なんだよなぁ。OpenSourceの暗黒面か。 そこで、きちんと入れている人もいれば…

Type of Programmer

面白いw。しかし、これそのものが「経験カルト」という気もしますが。 出典(スラッシュドット) (#1275148)より引用 ざっと訳してみました 間違いあったら訂正よろしく #タレコミ時には訳もつけとけよ 経験カルト 経験カルトのメンバーは、昔にやったこと…

クラスメソッドの呼び出し制限設定

class Test def Test.foo; end private_class_method :foo end で、クラスメソッド foo は Private になる。普通の privateじゃ駄目だそうな。 追記 リファレンスマニュアルのFAQに載ってたけど、これ、「クラス・モジュールの定義」の章に書くべきじゃない…

rubyw: No such file or directory(load error)

Cygwinのコンソールで実行できるからいいやと、放置していた問題を解決。

Rubyの実行ファイル化

メモ。 http://blog.livedoor.jp/cannondalekota/archives/50060269.html RubyScript2Exe まず、rubyscript2exe.rbをEXE化したいrbファイル(ここではapplication.rbとする)のあるフォルダにコピー。 次に ruby rubyscript2exe.rb application.rb と実行す…

Rubyの環境再構築

Eclipse 3.3.1.1*1と、RDT 0.9(Nightly Build)を使っていたのだけれど、どーにもRDTの挙動不審さに我慢がならなくなった。 *1:3.3.1のままだとクリップボードの内容の先頭から2バイト欠落するバグがあります。3.3.1.1を使いましょう