ES6 Classの小ネタ
当たり前っちゃ当たり前なんだけど、以下のような状況でselfもといthisがundefinedだと怒られる。実体はprototypeと何も変わらない。
class Foo { constructor() { this._foo = "Hello"; } funcA() { let self = this; console.log(self._foo); } } function gFunc(func) { func(); } var foo = new Foo(); gFunc(foo.funcA);
インスタンスから呼んでるんだからbindしといてくれてもいいのにと思ったんだが、そうはいかないみたい。次のように明示的にbindするとうまくいく。
class Foo { constructor() { this._foo = "Hello"; } get funcA() { return this._funcA.bind(this); } _funcA() { let self = this; console.log(self._foo); } } function gFunc(func) { func(); } var foo = new Foo(); gFunc(foo.funcA);
Ubuntu 14.04 on Fake RAID
普通の人はLinux Software RAIDを使えば楽だと思いますがどうしてもFake RAIDを使いたいという奇特な人のためにメモ。
- Live CDから普通にインストールしようとするとコケる。デモ環境に移行したあと、GPartedで手作業でパーティションを切ること。ちなみにLive CDはdmraidがデフォルトで機能している。
- インストーラから予め切ったパーティションを使ってインストール。GRUBはdmraidでマッピングされたRAIDドライブにそのまま入る。
- インストール終了後、インストール先にchrootしてapt-get install dmraid。(←これを忘れると起動できない。)
無事動きましたとさ。おしまい。
犬とパンダ
積み基板に埋もれている貴方の犬やパンダでもう一度遊んでみよう!という趣旨です。
Debugging FRDM-KL02Z with Eclipse
FRDMボードをEclipseでデバッグしてみた。たまたま珍しいKL02Zボードが手に入ったのと、GNU ARM Eclipse Pluginという便利なものを発見したので使ってみたメモ。
- ボード側にはJ-LinkのOpenSDAファームウェアを入れておく。
- EclipseはKepler(4.3.1)を使用。
- プラグインはここから(デバッグ用にJ-Link Debugging Supportも入れておくこと。):http://gnuarmeclipse.livius.net/blog/
- ToolchainはLinaroのgcc-arm-gnu-eabi-4_7-2013q3
- CMSISとスタートアップコードはここから:https://github.com/0xc0170/kinetis_klxx_gcc
プラグインは非常に優秀で、プロジェクト作成も楽ちん。
プロジェクト作成時のメモ。
- デフォルトで小文字sの拡張子をアセンブリファイルとして認識しないので、C/C++ General -> File Typesで追加しておく。
- デフォルトでCPUがcortex-m3になってるので気をつける。
デバッグの設定時のメモ。
- Device nameはMKL02z32xxx4のようにzを小文字にするらしい。
- Enable SWOのチェックを外す。
Iguana Radioactive Atomic Pepper Sauceレビュー
太陽をいっぱいに浴びたトマト畑が現れた - トマト、清潔なトイレ、病院、洗いたてのシーツ、枯れた草、そしてトフィーを感じる。
口に含むと、私たちは森のなかのバーベキュー会場へ招待される!- 焼いたカニ、ホタテ、焦げたズッキーニ、ソーセージ(ハーブをふんだんに使った)、ラム肉。焼きたてのうちにオレンジかライムを絞った。
味は鉄、焼きそば、トフィーを伴った。
フロリダ州アトランティック・ビーチのメーカーから。
http://www.halfmoonbaytrading.com/sauces/iguana-radioactive-atomic-pepper-sauce
OpenJFX8 on Pandaboard
やったこと(OpenJFX 8 b118時点で):
- RobClark神が書かれたkmscubeを参考にDRM/KMS関連のコードをlensport内のwrapped_functions.cに突っ込んだ。元々wrapped_functions.cはRPiで動かすためにEGLのいくつかのコールをフックしてBroadcom関連の初期化ルーチンを呼び出している。ので、この仕組を使えば基本的にどんなデバイスでもポーティングは容易にできるようになっている。
- 特にeglSwapBuffersをフックするためにその他のヘッダ等に数行手を入れた。
基本的にkmscube以上のことはしてないです。というかこれで動くんだ・・・RobClarkすげえ・・・という感想しかないです。
https://github.com/robclark/kmscube
パンダのカーネルは3.4(ti-ubuntu-3.4.0-1491.3)、ディストリビューションはPokyですが、たぶんUbuntuでもいいでしょう。
パッチはそのうちGistあたりにupすると思います。
*追記:パッチをうpしました