2012-01-01
■[報告]DeNAに入社しました。
新年あけましておめでとうございます。id:rokujyouhitomaです。
昨年、2011年8月末に前職のRememberTheMilkの職を離れることになり、
2011年10月1日より株式会社ディー・エヌ・エーに入社しました。
2011年は私にとって激動の年であり、バイドゥ=>RTM=>DeNAと職を転々とすることになりました。
転職の流れ
RTMを去った後も海外で働く意欲があったので、身の回りのエンジニア、企業にご挨拶するとともに相談に乗って頂きました。
本当にありがとうございます。
海外の企業を落ち続け、国内の企業を模索していました。
その過程で、好意を仇で返してしまった方々もいます。頭を下げることしかできません。
DeNA
DeNAは変化が激しい企業でやりがいのある企業です。
特にグローバル化を推し進めている最中で、海外との業務の連携をしています。
技術
技術面ではまだまだ精進が必要なので見守ってください。
素振り素振り。
語学
英語は必須の業務であると改めて認識しています。
関連
2011-12-26
■[pypy] jvmバックエンドに完敗 PyPy Advent Calendar 26日 + 1日目(27日目?)
まさかのPyPy Advent Calendar 2011 26日 + 1日目(27日目?)。
この記事はaodagさんのpypy cliバックエンドに完敗 aodag’s posterousにインスパイヤされて書かれてます。
結論書くとjvmバックエンドに完敗:(
追記
この記事での敗北はid:shomah4aさんが勝利を収めました。
下記がそのまとめ記事です。
事前準備
以前、PyPyのRPythonToolChainで実装したOok!を使います。
hg clone https://bitbucket.org/rokujyouhitoma/lang-ook
- PyPyでOok!を実装してみた。 rokujyouhitomaの日記
- RPythonToolChainでOok!を実装した時のノウハウ紹介。PyPy Advent Calendar 2011 7日目 rokujyouhitomaの日記
また、PyPyのリポジトリに入ってるtranslate.pyを使うのでPyPyのリポジトリをcloneする必要があります。
$ hg clone https://bitbucket.org/pypy/pypy
環境
ビルド
(_)ike-no-MacBook-Air% python ~/workspace/pypy/pypy/translator/goal/translate.py --backend=jvm ook.py [platform:msg] Setting platform to 'host' cc=None [translation:info] Translating target as defined by ook [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/gcctest.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/gcctest.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/gcctest.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/gcctest [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_0.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_0.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_0.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_0 [translation] translate.py configuration: [translation] [translate] [translation] targetspec = ook [translation] translation configuration: [translation] [translation] [translation] backend = jvm [translation] [backendopt] [translation] clever_malloc_removal = False [translation] constfold = False [translation] continuation = False [translation] gc = boehm [translation] gcremovetypeptr = False [translation] gcrootfinder = n/a [translation] gctransformer = boehm [translation] list_comprehension_operations = True [translation] type_system = ootype [translation] withsmallfuncsets = 5 [translation:info] Annotating&simplifying... [translation:info] with policy: pypy.annotation.policy.AnnotatorPolicy [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_1.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_1.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_1.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_1 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_2.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_2.o [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_3.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_3.o [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_4.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_4.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_4.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_4 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_5.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_5.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_5.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_5 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_6.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_6.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_6.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_6 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_7.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_7.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_7.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_7 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_8.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_8.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_8.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_8 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_9.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_9.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_9.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_9 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_10.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_10.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_10.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_10 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_11.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_11.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_11.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_11 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_12.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_12.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_12.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_12 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_13.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_13.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_13.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_13 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_14.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_14.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_14.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_14 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_15.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_15.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_15.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_15 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_16.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_16.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_16.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_16 [platform:execute] gcc-4.2 -c -arch x86_64 -O3 -fomit-frame-pointer -mdynamic-no-pic /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_17.c -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_17.o [platform:execute] gcc-4.2 /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_17.o -arch x86_64 -o /var/folders/lc/vw5blb150gxd3_xwxj2k3s080000gn/T/usession-default-0/platcheck_17 ...+++++++++++ [translation:info] -- someobjectness 0% (0 of 14 functions polluted by SomeObjects) [translation:info] ootyping... ...+++++++++++++++*************************% [rtyper] specializing: 100 / 204 blocks (49%) [rtyper] specializing: 200 / 204 blocks (98%) [rtyper] -=- specialized 204 blocks -=- ... [rtyper] -=- specialized 8 more blocks -=- [translation:info] ootype back-end optimisations... [backendopt:inlining] phase with threshold factor: 32.4 [backendopt:inlining] heuristic: pypy.translator.backendopt.inline.inlining_heuristic ...+++++++++++++++*************************% [backendopt:inlining] inlined 75 callsites. [backendopt:malloc] starting malloc removal ...+ [backendopt:malloc] removed 6 simple mallocs in total [backendopt:mergeifblocks] starting to merge if blocks [translation:info] Generating JVM source... ...++++++++ [rtyper] -=- specialized 22 more blocks -=- [translation:info] Wrote JVM code [translation:info] Compiling JVM source... [jvm] Compiling java classes [translation:info] Compiled JVM source [translation:info] Creating jar file [Timer] Timings: [Timer] annotate --- 2.7 s [Timer] rtype_ootype --- 2.2 s [Timer] backendopt_ootype --- 1.1 s [Timer] source_jvm --- 0.7 s [Timer] compile_jvm --- 4.5 s [Timer] ========================================= [Timer] Total: --- 11.2 s
ビルドは順調に10秒ちょいで終わり。
ook-jvm
ook-jvmはバイナリかな?とのぞいてみると、シェルスクリプトでした。
(_)ike-no-MacBook-Air% cat ook-jvm #!/bin/bash LEDIT=`type -p ledit` EXE=`readlink $0` if [ -z $EXE ] then EXE=$0 fi $LEDIT java -Xmx256m -jar $EXE.jar "$@"
実行
さて、ook-jvmを実行してみる。
(_)ike-no-MacBook-Air% ./ook-jvm Exception in thread "main" java.lang.VerifyError: (class: pypy/ConstantInit_0, method: constant_init signature: ()V) Expecting to find long on stack at pypy.ConstantInit.init(ConstantInit.j:6) at pypy.Main.<clinit>(Main.j:26)
java.lang.VerifyErrorが発生...。
jarを直接実行
(_)ike-no-MacBook-Air% java -jar ./ook-jvm.jar Exception in thread "main" java.lang.VerifyError: (class: pypy/ConstantInit_0, method: constant_init signature: ()V) Expecting to find long on stack at pypy.ConstantInit.init(ConstantInit.j:6) at pypy.Main.<clinit>(Main.j:26)
うーむ...。"java.lang.VerifyError"をGoogle先生で聞いたら、pypy-devのMLにたどり着く。
I suppose it's a 32/64 bit issue again: the problem is that when you run
./translate.py with a 64 bit python, it assumes that 'int' variables are 64
bits, but on the JVM they are always 32 bit. For what I know, the CLI backend
has exactly the same problem.
http://mail.python.org/pipermail/pypy-dev/2009-December/005593.html
32bitじゃないといけないの...( ̄д ̄)エー
>プロセッサ名: Intel Core i5
だから...マイマシンは64ビットで間違いない。
プロセッサ名 32 ビット/64 ビット
Intel Core 2 Duo 64 ビット
Core i3 64 ビット
Core i5 64 ビット
Core i7 64 ビット
http://support.apple.com/kb/HT3696?viewlocale=ja_JP&locale=ja_JP
32bit環境無いので機会があれば試す。
(CLIに似たような問題があるって書いてある...φ(..)メモメモ
追記
下記のご指摘頂きました!
- class file レベルで 32 bit とか関係無いような…… (匿名ペンギンさん)
- あの引用されてる英文読むと, "64bit" は Python にかかってます(匿名ペンギンさん)
- そもそも JVM 上で 32/64 bit の差はほとんど無いはずです(匿名ペンギンさん)
- 64bit python では int は 64bit(匿名ペンギンさん)
参考
2011-12-07
■[PyPy]RPythonToolChainでOok!を実装した時のノウハウ紹介。PyPy Advent Calendar 2011 7日目
この記事はPyPy Advent Calendar 2011 7日目の記事であるとともに、仕事で来ているサンフランシスコのホテルでまさに書いています。
明日は id:jbking です!よろしくお願いします!
http://d.hatena.ne.jp/ymotongpoo/
前日の id:ymotongpoo からid:jbkingにバトンが渡る予定でしたが、割り込みしました。
RPythonToolChain
以前、Brainf*ckの類縁Ook!をPyPyのRPythonToolChainを利用して実装しました。
その時溜まったノウハウを紹介しようと思います。
RPythonToolchainで実装している処理系のログ
RPythonToolchainで実装している処理系のログを出力する方法を紹介します。
ログの出力については下記に書かれている通りです。
jit組み込みの例。
def get_location(pc, program, bracket_map): return "%s_%s_%s" % ( program[:pc], program[pc], program[pc+1:] ) jitdriver = JitDriver(greens=['pc', 'program', 'bracket_map'], reds=['tape'], get_printable_location=get_location)
上記のget_locationとjitdriverが組み込まれたOok!はこちらです。
実際にook-jit-debug.pyをtranslate.pyでコンパイルしてバイナリを作成します。
$ hg clone https://bitbucket.org/rokujyouhitoma/lang-ook $ python /path/to/pypy/translator/goal/translate.py --opt=jit ook-jit-debug.py
ログファイルを出力して実行しましょう。
$ PYPYLOG=jit-log-opt:logfile ook-jit-debug-c samples/mandel.ook
生成されたlogfileはこちら。
pypy/tool/logparser.py
pypy/tool/logparser.pyを使うと、logファイルを画像ファイルに変換し、GCやJITの発生を時間軸を元に視覚化することができます。
先ほどのlogfileを実際に試しに視覚化してみましょう。
事前準備
- PILのインストール
- PyPyの環境にPILをインストールする際にはまったので。virtualenv + pypyの環境でpip installでPILをインストールする
生成物の例
使い方
$ python /path/to/pypy/tool/logparser.py draw-time logfile out.png
"logfile"はログファイル。"out.png"は出力する画像ファイル名。
- 緑色がjit
- 更に、jit-optimize, jit-tracing, jit-backendが細かく色分けされている。
- 赤色がgc
ook-jit-debug-cのlogfileを視覚化。
先ほどのook-jit-debug-cが生成したlogfileの場合は次の通りです。
バトン
それでは、次はid:jbkingにPyPy Advent Calendar 2011のバトンを渡そうと思います。
参考
- PyPyでOok!を実装してみた。
- virtualenv + pypyの環境でpip installでPILをインストールする
- PyPy を使ってインタプリタを書く デバッグとトレースログ
- Lost in JIT Analysing python’s performance under PyPy
memo
2011-12-06
■[JavaScript]組み込みのErrorを拡張したErrorオブジェクトを実装する。
本コンテンツの一部は、業務時間内に調べた内容を含んでおり、株式会社ディー・エヌ・エーの提供でお送りしております。
構成
/ |- MyError.js `- MyError_spec.js
MyError.js
/** * @class * @constructor */ function MyError(message) { Error.call(this, message); if (message !== undefined) { this.message = String(message); } }; MyError.prototype = (function(base) { var Inheritor = function(){}; Inheritor.prototype = base.prototype; return new Inheritor(); })(Error); MyError.prototype.constructor = MyError; MyError.prototype.name = "MyError"; MyError.prototype.message = ""; MyError.prototype.toString = function() { return "[object " + this.name + "]"; }; exports.MyError = MyError;
上記実装だと、instanceofでErrorとMyErrorがそれぞれtrueになる。
MyError_spec.js
var MyError = require("./MyError").MyError; describe("MyError packages called new", function() { var e; beforeEach(function() { e = new MyError("throw new MyError"); }); it("type of", function() { type = typeof e; expect(type).toEqual("object"); }); it("instance of MyError", function() { expect(e instanceof MyError).toEqual(true); }); it("instance of Error", function() { expect(e instanceof Error).toEqual(true); }); it("throw new MyError", function() { try { throw e; } catch (e) { var name = e.name; var message = e.message; expect(name).toEqual("MyError"); expect(message).toEqual("throw new MyError"); } }); it("toString method", function() { var str = e.toString(); expect(str).toEqual("[object MyError]"); }); });
追記
特になし。
2011-12-03
■[PyPy]早速PyPyでIPython使ってみた。
PyPy Advent Calendar 2011で@iizukakさんがPyPyでIPythonの導入について書いています。
せっかくの機会なので導入してみた。
ついでに、id:nishiohirokazuさんがnumpyを試してたので、PyPy1.7から入ったnumpypyで試してみる。
環境
- Mac OS X 10.7.2
- virtualenvでPyPy1.7の環境構築済み
- rokujyouhitomaの日記 Python実装としてPyPy1.7をインストールする。
$ python --version Python 2.7.1 (7773f8fc4223, Nov 18 2011, 22:15:49) [PyPy 1.7.0 with GCC 4.0.1]
% pip --version pip 1.0.2 from /Users/rokujyouhitoma/.virtualenvs/_/site-packages/pip-1.0.2-py2.7.egg (python 2.7)
IPythonのインストール
IPythonをインストールする。
$ pip install ipython
バージョンの確認をする
$ ipython --version 0.11
IPythonを起動する
% ipython Python 2.7.1 (7773f8fc4223, Nov 18 2011, 22:15:49) Type "copyright", "credits" or "license" for more information. IPython 0.11 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]:
numpypyを試す
In [1]: from numpypy import array In [2]: x = [[6, 5], [4, 3], [2, 1]] In [3]: y = array(x) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) /Users/rokujyouhitoma/<ipython-input-3-0c58b1f2d887> in <module>() ----> 1 y = array(x) TypeError: unsupported operand type for float(): 'list'
ああれ...?TypeError....。
うーむ。この時点でid:nishiohirokazuさんが試したコードを試すことができず。
numpypyをもっと調べねば。
追伸
numpypyの詳細は、PyPy Advent Calendar 2011で@iizukakさんが記事を書いてくれるはずなので、楽しみにしてまっていましょう!


