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

遅延リスト

Haskell [0..10] ++ [20..30] Python import itertools ietrtools.chain(xrange(0,11), xrange(20,31)) xrangeは厳密には違うらしいけど、似たような動作をするものという事で。 ここでの利点は、リストの生成を遅らせる事で一時的なメモリの使用量を抑える…

Ruby ビットフィールドをpack

packがArrayのメソッドだから。 bitfield.pack("B*")みたいなの期待したけど、無理だった。 [bitfield.join].pack("B*") bitfield.join.to_a.pack("B*") そういえば、packやprintfの書式も独自のルールもっているよな。packの拡張って出来るかな。TODO

文字列を n バイト毎に分割

前にRubyで手続で書いたけど、改良。 foo = "...適当に長い文字列..." foo.scan(/.{1,#{n}}/) 例を上げると。 foo = "foobarhoge" p foo.scan(/.{1,3}/) ["foo","bar","hog","e"] ところで、これは正規表現にマッチしたものを リストで返しているのだと思う…

KJSEmbed

QComboBoxの件はバグだったらしく、cvsではfixされている。 cvsで最新版(HEAD)をダウンロードした。 QComboBoxは表示されたが、Itemが表示ない。 開発者の人にリポートしようとメール書いてたら、 いつの間にか、最新のCVS版では直ってる。(THX) #/usr/bin/e…

minimum KDE application

コンパイルするには、KDEとQTのincludeを含める。 lkdecore -lkdeui -lqt(-lqt-mt) をリンク。 #include #include int main(int argc, char **argv) { KApplication app(argc, argv, "Hello, world"); KLineEdit *entry = new KLineEdit; entry->setText("He…

Objective C

#include の代わりに #import #import は、Cのヘッダでは必須のマクロ。 #ifndef __foo_h ... #endif // __foo_h の代用になるらしい。なんてICQで友達が話してた。 折角、GCCをフルインストールしたので試してみる。 #import int main(int argc, char **arg…

POD2HTML

古いpod2htmlでは、=begin html 内のHTMLもエスケープしてしまう。 5.8.2 の pod2html を使うと問題なし。 でも、preタグ内で # 前後の改行が無視される。

Mono

インストールした。 $ mcs HelloWorld.cs で、C#のソースをコンパイル。 $ mono HelloWorld.exe で実行。 DLLを作るには、コンパイルオプションに -target:library を設定。 ライブラリのパスは、-lib:PATH1,PATH2 で追加設定し、 アセンブリ・リファレンス…

KJScmd

kjscmd --exec でGUIのコンソールを起動できた。 kjscmd --console はエラー。kjscmd --exec --console は OK。 kjscmd --exec --nogui は、反応なし。

Mailing list

KDEのメーリングリストで、 qtを-qt-git付きでりビルドしてもkonquerorでGIFが表示されないとの投稿を読む。 まだqtのりビルドしてないけど、同じ症状かもしれない。

KOffice の依存ライブラリをインストール(予定)

ImageMagick-6.0.6 Aspell fontconfig wv2 libgsf configure / compile libgsf は *-configファイルがなかったので、*/lib/pkgconfig/*.pcファイルを /usr/lib/pkgconfigにコピー。 fontconfigも/usr/local/bin/fontconfig-configシェルスクリプトを削除し、…

KDE関連のメーリングリストに参加

KMailでメーリングリストのフィルタを登録。

KJSCMDがコンソールで起動しない?

正確には、GUIを生成する命令がコンソール上で機能しないらしい。 スタートメニューからは起動できる。 コンソールに出力するスクリプトは実行できた。 *.uiファイルを読み込んでGUIを表示する事は出来る。 メーリングリストなどを調べたが、同様の報告は、 …

TODO

Kommander Editor ... QSA - Qt Script for Application ... コンパイル失敗した

KOrganizerのJurnal と Hatena diary の同期を取る。

まずは、KOrganizerを起動し、オブジェクトの名前を調べる。 kdcopで korganizerのツリーを調べる。 # Journal のパネルを表示 dcop korganizer "KOrganizer MainWindow" activateAction view_journal # 今日の日付へ dcop korganizer "KOrganizer MainWindo…

Desktop COmmunication Protocol

コンソール上で使えるコマンドを適当にchoice。dcop の object の部分は、アプリケーション名-プロセスID KMAIL=`dcopstart kmail`の様にして値を得る。 もしくは、kdcopやdcopコマンドで確認。 (dcopの引数を省略するとリストを表示する。) # メール送信 dc…

and [Jako]

そういえば、 ParrotとJakoのHelloWorldプログラムを載せていなかった。Parrot print "Hello, world\n" end こっちはJako. use sys; sys::print("Hello, world\n"); .... HelloWorldって処理系が動くがどうか確かめる為のモノで、 言語の概観を紹介するのに…

infinity loop

久しぶりに、はまったのでメモ。 size_t i; for (i = 10; i >= 0; --i) { do_something(); } i > 0 だと正常に動作するけど、 i >= 0 だと無限ループ。 size_t が unsigned な処理系は注意。

parrotをコンパイルしてて気がついた、 コンパイラのオプションで ...(前後省略) -Dan_Sugalski -Larry -Wall 思わずgrep掛けてしまった *lol*

PHP

PHP5より、rangeで第三引数stepが指定できるらしいので。 function slicer($str, $step) { return array_map( create_function('$x', "return substr($str, \$x, $step);"), range(0, strlen($str)-1, $step)); } 追記:2004-04-14 Rubyで、Array#map使えばO…

Perl

Perlのrangeは、間隔が指定できなかったはずなので、 FPっぽくrange関数を定義。 sub range($$$) { my ($begin, $end, $step) = @_; return ($begin

Ruby

"map"っぽく使いたかったのだけど、無理だったので手続で。 def slicer(pieces, n) result = Array.new (0..pieces.length).step(n) do |i| result

Python

BitTorrentで見かけたコードの断片を関数化。 他の言語でも使い回そうと思い、ユーティリティに追加。 def slicer(pieces, n): return [pieces[x:x+n] for x in xrange(0, len(pieces), n)]

ロギングや同期処理をアスペクトにまとめる。 require 'thread' require 'aspectr' include AspectR class MutexArary Aspect def lock(method, object, status, *args) object.mutex.lock end def unlock(method, object, status, *args) object.mutex.unlo…

BitTorrentのメタ情報ファイルや、 トラッカーの応答メッセージで使われている BEncode(bee-encodeと発音する)をRubyで実装してみた。Rythonは、オリジナルのスクリプトに含まれているし、 Perl, OCamlによる実装はすでにあるらしい。&& PHPには、若干仕様が…

WebSVN

http://websvn.tigris.org/日本語パッチ(EUC-JP)をポストしてみた。

良く使うアルゴリズムをC言語で書く [CRC32]

目的 - 頻繁に利用する処理をC言語で記述し、 各言語でC言語のライブラリを使う為のラッパーを記述する事で、パフォーマンス&再利用生の向上を図る。JAVAVM, Parrot, Rotor(EMCA-335 CLI)等、複数の言語の 言語中立のランタイムを提供するものは幾つかある…

単体で使いたかったので、Mozillaのをコンパイルしてみた。 http://lxr.mozilla.org/mozilla/source/js/src/README.html #!/usr/bin/env js function HelloWorld() { this.sayHello = function() { print("Hello") } } var world = new HelloWorld() world.s…

E言語. Javaのバージョンを上げたのでついでに試してみた。 #!/usr/bin/env rune println("Hello E language.") URIリテラル var txt := http://d.hatena.ne.jp/teamikl.getText() .makdir() .setText(txt) URIだけでなく、Javaのクラスやリモートオブジェク…

Loggerにつかえるアスペクト・メタクラス(?)を書いてみた。 (何度目だろう ... ) class HelloWorld: def sayHello(self): print "Hello, world" class HelloWorldAspect(Aspect): _target_class = HelloWorld def before_sayHello(self, *args, **keys): pr…