投稿

12月, 2013の投稿を表示しています

Pythonと++(increment)

PythonへJavaやC++のコードをポート(移植)するメリットはほとんど場合、コードが短くなり、シンプルになってアルゴリズムに集中できるからだ。そして高速にテストが出来るためとても便利である。しかも、最近はBlender 3D上でのシュミレーションも可能で実験するのに便利だ(bulletも含め)。ボクは主にAIやPhysicsの分野で役立てている。 で、ポートの際、バグが入ってしまうのは、instanceのコピーや参照、テンプレート(*)やオーバーロードの問題もあるが、簡単なものでは++iという数式がエラーを発生しない問題がある。 javaやC++で以下の行があるとする。     i=0;     ++i; ご存知の通りiは+1されて1になる。 python(2.xや3.x, ボクは現在3.3.2を利用)では。     i=0;     ++i; エラーが表示されず、単にiは0のままになっている。 理由は +(+i)と認識し、結果的にiが書かれているとpythonは認識するからだ。 正しくは...    i=0;    i+=1; と書くと正常にポートできたことになる。(もちろん;は不要、念の為) したがって、++iなどがあればi+=1に全て書きなおすことを忘れないようにしなければならない。 最後に、短いコードではすぐにこの手のバグは発見できるが、  数千、数万行単位になると発見しにくいので注意しなければならない。 P.S. lint( pylint )も役立つと思われる。 例えば以下のようなエラーを表示してくれる。 W:617,12:GameWorld.Render: Statement seems to have no effect E:617,12:GameWorld.Render: Use of the non-existent ++ operator 参考: http://stackoverflow.com/questions/1485841/behaviour-of-increment-and-decrement-operators-in-python * ついでだが個人的に何度も使わされたことがあるテンプレートは嫌いな機能で複雑になる割にメリットが少ないと思っている。一部の設計者の

1st generation ipadと無料になったGarage Band

イメージ
1st iPad+Apple Camera Connection Kit+Korg nanoKey2 ボクのiPadはいまだに初代iPadである。メモリは奮発して64Gのものにしたし、特にカメラが必要とも感じないので利用方法も最新のiPadができて1stでできないことはないとほぼないと思う。そのため、ああだ、こうだで、すでにiPadも5世代(iPad airを含めると)ぐらいになってしまているが特に欲しいと思わない。(ちなみにDAW SoftwareであるStudio one, TracktionをコントロールするV-ControlなどはWifi経由で接続されるのでLightningは不要) そんなときに、ご存知のようにGarageBandが無料になったため、Downloadを試みたが最新版はiOS7以降でなければインストールが不可能とあった。しかし、互換性のあるiOS5.1.1に対応したダウンロードが出来るとダイアログ・メッセージが表示され、それを使うことにした。 GarageBandを無料にしても、結局は最新版は最新のiPadやiPhoneでしかできない。ユーザーに最新ハードを買わせるよう、もしくは追加の音源で収入を得るようにしただけなので、ビジネスモデル的にDeNAやGREEがやっていることとあまり変わらない。それが見えてしまうので、馬鹿喜びはしたくはないが過去のバージョンを使えるようにしている点は良かったと思う。 まぁ、iPadにはMusic Studioというしっかりしたソフトウェアがあるので、GarageBandがなくなってもしばらくはいろいろと利用できそうだ。

Zoom G5 Edit&ShareとLinux

イメージ
Zoom G5 は安価で高性能なギター用マルチエフェクターである。かなりの応用性があり、アイデア次第でいろいろ遊べる。私のお気に入りのデバイスだ。そのエフェクトはPC上でG5本体と同期しながら編集が可能である。正直な話、G5にLCDディスプレイがなくてもほぼ問題ないぐらいに直感的に操作が可能だ。 対応OSはWindowsとMacOS X。しかし、Wine(1.6)を使って起動するとUbuntuでは問題なく編集作業が可能である。一点、パッチのDrag&Dropが思うように動作しないバグがある(Ubuntu12.04LTSは 問題無さそう ,Ubuntu13.10に対しては私がレポート済)。とはいっても、クラッシュは経験していない。 注意が必要だが、Edit&Shareは元々, WindowsやMacOSXでもレジュームやサスペンド非対応なのでそれを行うと不安定になる、って対応するのが普通だが... (当たり前だが、サポート外のため、Linuxで動作しないとZoomサポートへ電話しても相談には応じてくれないので注意することw) 画像はUbuntu 13.10とZoom Edit&Share for Windows(5.x)上で、Sound DeviceとしてもLinuxに自動認識された様子(ドライバ不要)。 UbuntuのサウンドをUSB経由でG5へ出力し、G5 Outputから音が拾うことも可能である。もちろん、逆も可能だ。 尚、LinuxはG5をMIDIとしても認識し、 JACK Audio Connection Kitでも認識しているが、実際は何もできなかった。(G5はMIDI非対応のため,当然だが)