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

Flex Builder Public Beta 3 is available

http://labs.adobe.com/technologies/flex/flexbuilder3/リリース前最後のベータバージョン. パフォーマンスの向上が目的のリリースなんだそうですよ.

ActionScriptでのSingletonパターン実装

AS3でSingletonパターンを実装しようとしてみた.まずはJavaでよく使われる手法をつかってみましたが,うまくいきませんでした. package test; { public class Singleton { private var count:int; private function Singleton(){ this.count = 0; } public…

Treeコントロール上のアイコンを変更するには

FlexのTreeコントロールは特にアイコンを用意しなくても,子要素があるものにはフォルダのようなアイコンを,そうでないものにはファイルっぽいアイコンを表示します.それを自分好みのものに変えたい時というのはありますよね.そんなときは,次のどちらか…

ActionScript:Treeの使い方

TreeのdataProvider属性にArrayなりArrayCollectionなりを指定すれば, Treeに要素を羅列することはできる. var tree:Tree = new Tree; tree.dataProvider = ["aaa", "bbb", "ccc", "ddd"];ただTreeで階層的に表示するには,ちょっとしたこつがいるのだ. …

ActionScriptでインクリメンタルサーチ

AJAX関係でよくあるインクリメンタルサーチのActionScript版. これもArrayにあるfilterメソッドの練習として作ってみました. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp()"> <mx:ArrayCollection id="a" /> <mx:Script> </mx:script></mx:arraycollection></mx:application>

はてな記法

はてな記法にはActionScriptは無いのね.

ActionScript:ArrayCollection aの要素からArrayCollection bに含まれるもののみを抜き出すには

var a:ArrayCollection = new ArrayCollection(["aaa", "bbb", "ccc", "ddd", "eee"]); var b:ArrayCollection = new ArrayCollection(["bbb", "ccc"]); var result:Array = a.toArray().filter( function(item:*, index:int, arr:Array):Boolean{ item = it…

yaml2json

PerlでYAMLからJSONへ変換するスクリプトを書いてみた. !/usr/bin/perl use Getopt::Long; use YAML; use JSON; my $infile = undef; my $outfile = undef; sub main{ my $in = STDIN; my $out = STDOUT; if($infile && $infile ne ''){ open($in, $infile)…

Ackermann関数(その2)

再帰の高速化では常套手段のメモ化してみる. 今回はack関数の引数をキーにして,計算結果を保存する辞書を作ってみた. !/usr/bin/python memo = {} def ack(m, n): if not(memo.has_key((m,n))): if m == 0: memo[(m,n)] = n+1 elif n == 0: memo[(m,n)] =…

Ackermann関数

def ack(m, n): if m == 0: return n +1 elif n == 0: return ack(m -1, 1) else: return ack(m - 1, ack(m, n-1)) for m in range(1,10): print ack(m, 1) ナイーブ過ぎて,スタックオーバーフローしますねえ.

デザイン変更

Polyrithmというのにしてみました.デザインがかわると,気分も新たになります.

PythonでFactory Methodパターン

Factory Methodパターンを使うと,実際に作成するオブジェクトの種類や作成手順を隠蔽できます. たとえば次の例だと,Counterオブジェクトが生成されるのか,それともCounterWithRealNumberオブジェクトが生成されるのかを,そのオブジェクトを利用する側で…

PythonでPrototypeパターン

Prototypeパターンではあるオブジェクトをコピーすることで新しいオブジェクトを作成する. 実装するには,属性値をコピーして新しいオブジェクトを返すメソッドを定義する. #!/usr/bin/python class Prototype(object): def __init__(self, prototype = No…

PythonでSingletonパターン

#!/usr/bin/python class SingletonClass(object): __instance = None; def __new__(cls): if not cls.__instance: cls.__instance = object.__new__(cls); return cls.__instance; def __init__(self): self.value = 0; def increment(self): self.value +=…

しばらくPythonから離れていました.デザインパターン復習中です.昔Javaで覚えたので,Pythonでリハビリします.

help(object)

今更ながらPythonにhelpという関数があるのを知る. 引数にオブジェクトを与えると,解説を表示してくれるという便利もの.次はintオブジェクトの解説: >>>a = 1 >>> help(a) Help on int object: class int(object) | int(x[, base]) -> integer | | Conve…

listをstackとして使う

pythonのドキュメント第5章より >>> stack = [] >>> stack.append("aaa") >>> stack.append("bbb") >>> stack.append("ccc") >>> stack ['aaa', 'bbb', 'ccc'] >>> stack.pop() 'ccc' >>> stack ['aaa', 'bbb'] >>> stack.pop() 'bbb' >>> stack ['aaa'] >>>…

リスト内包表記その2

リスト内包表記を知った時は,「なんだmapを別のやり方でしかないんだな」と思っていました. が,実際は「からではないリストを作る」ための記法なのだろう. self.adjmat.append([0 for x in range(size+1)]); といったように,forの前には何もxに対する操…

TypeError: "instancemethod" object is not iterable

for v in g.getVertexList: print v.getName; と書くとタイトルの通りのエラーが. 原因はメソッド呼び出しなのに,()をつけ忘れたこと. 最近Perlを書いていたので,そっちに引っ張られたようです:)どういうプログラムかは以下を参照のこと. class Verte…

行列その1

グラフに関する基本的なアルゴリズムをpythonで勉強してみようと思い立つ. 隣接行列をListのListとして表現するとどうなるか,ということをやってみた. def addV(): size = len(adjmat); for i in adjmat: i.append(0); adjmat.append([]); for i in range…

TRUE, FALSE, NOT in C

友達と話題になったので、記録しておこう。 #define TRUE 1 #define FALSE 0 #define NOT(b) b ^ 1よくやりますよね。こういうの。 テストコード: #include <stdio.h> #define TRUE 1 #define FALSE 0 #define NOT(b) b ^ 1 int main(int argc, char** argv){ printf</stdio.h>…

Emacs21でWnnを使って日本語入力

Debianでの環境 apt-get install egg .emacsもしくはsite-start.elに次のように書く (setq default-input-method "japanese-egg-wnn") (setq wnn-jserver "hostname op your jserver") あと、これは私の趣味 ;; ``nn" → 『ん』 (setq enable-double-n-syntax…

Hatena::API::AuthをDebianマシンに入れる

とはいっても、aptをつかったわけではなくてCPANモジュールを使ったのですけれど。 install Class::Accessor::Fast install Class::ErrorHandler install URI install LWP::UserAgent install JSON install JSON::Syck LWP::UserAgentが入っていなかった… こ…

built-in method と method-wrapper

記述発見:http://www.velocityreviews.com/forums/t333435-ltmethodwrappergtself.html I *think* method-wrapper's are wrappers around type methods, aka tp_wotsit slots at the C level. builtin-methods are, well, builtin methods, similar to meth…

リスト内包表記

id:bonlifeさんに教えていただいたので、実験。 >>> [str(x) for x in range(10)] ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] >>> d = {} >>> d['abc'] = 'hogehoge' >>> d['efghij'] = 'hogehoge' >>> d['asdljfa;lsjfa'] = 'hogehaofjdas;lj' >>…

続:インスタンスを指定するとメソッドと引数の一覧を出力する関数

id:bonlifeさんにいただいたコメントをもとに書きなおしてみました。 コメントありがとうございます。 import inspect import string def getLongestKeyLength(dic): return max(map(len, dic.keys())) def formatDictionary(dic): maxkeylength = getLonges…

インスタンスを指定するとメソッドと引数の一覧を出力する関数

ドキュメントがないオブジェクトにぶち当たったので,書いてみた. 誰かが書いているかもしれないけれど,まぁ,練習になるからよし. def getLongestKeyName(dic): longest = "" for i in (dic.keys()): if(len(i) > len(longest)): longest = i return lon…

Pythonで初のクラス宣言

Javaに慣れてしまうと1クラスにつき1ファイルを作ってしまうが, Pythonにはそんな制約はない.とりあえずお決まりの分数クラスをつくってみました. 分母に0を入れた場合の処理を書いていないなど,かなり手抜き. class myFraction: def __init__(self, nu…

Webページのハッシュ値を求める

md5とurllibを使って作った. 単純. import md5 import urllib import sys def main(url): web = urllib.urlopen(url).read() d = md5.new(web).hexdigest() print(url + "is digested to " + d) if(not(len(sys.argv) == 2)): print("usage: " + sys.argv[…

MD5ハッシュを使う

PythonでMD5ハッシュを使うにはmd5というを使う. 注意するべきは,このモジュールは内部状態をもつということ. 次のm1とm2は同じ値を出力する. import md5 m1 = md5.new("abcdefg") m2 = md5.new() m2.update("abcd") m2.update("efg") print(m1.hexdiges…