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…

http://www.prothon.org/早速コンパイルして使ってみた。 コンパイル時に躓いたのは、外部ライブラリとGCCのバージョン ApachePortableRuntime library BoostRegex library GCC3 (古いバージョンではC99に対応していなかった) configureでは(未だ?)チェッ…

Y-combinator みたいなもの

# fact(5) print &{$_ = sub{ ($_[0] ($_[0]-1) }}(5);

fact = 0 -> 1 n -> n * fact(n - 1) 10.fact.to_string.println #virtical layout (like Python, Haskell) my_print = n -> n.to_string.println #horizontal layous (1+2 * 3).my_print 数字と文字列が入り交じったリストをprinしたかったんだけど、 softt…

PyScheme - is an implement of Scheme in Python. http://hkn.eecs.berkeley.edu/~dyoo/python/pyscheme/

merd

OCamlで書かれた言語。見出しにはRuby+Haskellと書かれてあったので興味あり。 Language study のページには各言語の文法の比較が載っている。 前にも書いたかもしれない。 println("Hello, world") "Hello, wordl".println # in cookbook. (but not impleme…

Mail for Hina chan

from poplib import POP3 def biff(hostname, username, password): try: pop3 = POP3(hostname) pop3.user(username) pop3.pass_(password) mails,bytes = pop3.stat() pop3.quit() except: mails = -1 # error code return int(mails) notes: Hina chan wa…

なんとか簡単な画像出力までたどり着けた。 効率わるいけど、学習用なので解りやすさ重視。

Select based server

import socket import select import thread def service(server): iw = [server] ow = [] data = {} while 1: (ins, _, exs) = select.select(iw, ow, iw) if exs: break if ins: for i in ins: if i == server: # client 接続 client,addr = server.accept…

wxPython で簡単な共有黒板を作る。

ネットワーク経由で描画領域を共有するプログラム draw関連のプログラムは組んだ事がなかったので、 まずはDCの使い方から学習し始める。(wxPythonで) def drawPoint(self, x, y): """panelに描画する""" dc = wxPaintDC(self.panel) dc.SetPen(wxPen("BLACK…

[TRPG][wxWindows][wxPython]

online TRPG 用途に使える、CHAT system を作ってみる。LIST CHAT server/client CHAT 上での DICE 機能 黒板機能 開発 iteration 1. wxPython でプロトタイプ作成。 2. wxWindows でサンプル実装。wxPython から wxWindowsに移植の際に、 Pythonの機能を使…

今更だけど、Chat server を作ってみる。

[*] 並列処理の学習。 [*] select, poll システムコール。 Windowsではsocketのみがselectの管理対象に。 [*] python 標準モジュール内のSocket関連のクラスを調査。 SocketServer asyncore, asynchat サーバーはスレッドを使わない。select basedの並列処理…

C言語等にある3項演算子。

foo = (bar > 10) ? a : b; 便利なので、Pythonでも使える方法はないかなと考えてみた。 foo = ((bar > 10) and A) or B これでは、Aが0や空の時に常にBが代入されるのでバグの原因に成り得る。 True=1, False=0 を利用して、bool値をtupleのインデックスと…

各言語のsyntax http://merd.net/pixel/language-study/syntax-across-languages/

debian に J2sdk1.3(blackdown) をインストール

apt line (source.list) に追加 deb http://www.tux.org/pub/java/debian woody main deb http://www.tux.org/pub/java/debian woody non-free # apt-get install j2sdk1.3

E言語?

http://www.erights.org/elang/ Hello world を書く前に、インストール出来るかな。 依存関係を見てみると、1.3.1 以降 1.4.0-rc 以前の JDK が必要らしい。 サンプルコードがpython ライクだった。(重要) Smart Contrast Ada, や Eiffel にも影響を受けて…

前にPython/AOP/DesignPatternを試みていた時の情報元。Java/AspectJによるGoFパターンの例 http://www.cs.ubc.ca/~jan/AODPs/MetaClassを利用したAOPアプローチ http://mail.python.org/pipermail/python-list/2002-June/111061.htmlaop.pyはここ http://py…

#!/usr/local/bin/gosh (define (main argv) (display "Hello, world") (newline)) Gaucheは、デフォルトでmainを実行してくれるみたい(嬉)in main.c GuileのSharpBang lineは未だ好きになれないなぁ。!# って。

QSocket

QSocket class (意訳) QSocket クラスはバッファーを用いたTCP コネクションを提供します。 非ブロッキングQIODeviceを提供し、QIODeviceのAPIをソケット特有のコードに修正・拡張します。頻繁に呼びそうな関数は、connectToHost(), bytesAvailable(), can…