2016年第2四半期振り返り
おはようございます。最近、長男が気づくと、床の上で寝ています。(ベッドからの落下に備えて敷いてある、掛け布団の上です。)@kjunichiです。
良かった点
Blender+Python
そこそこ、自分がやりたいことが、BlenderでPython使って記述出来るようになってきた。
Blenderでの流体や剛体のアニメーションがなんとなく作れるようになり、これをPythonスクリプトでアニメーション作成まで 自動化したい。
RustでOpenGL
gliumのチュートリアルを少しだけやった。
Bonjourがすこし分かってきた。
コマンドやAPIが少し分かった。
OSXの非公開APIをC++から叩けた
screenresをnode v6対応して、その後、Retina対応を進める際に学べた。
Githubのリポジトリのメンテが出来た
反省点
- イギリスの国民投票の際のユーロの値動きを機械学習させられなかった。
- 縦スクロールシューティングゲーム風の背景の電車を走らせることが出来なかった。
- dns-sdをあつかえるmrubyのmrbgemを作りそびれた。
- Keycast.jsで今度のmacOSでSiri呼び出しのショートカットであるfn+SPCを表示したかったが、fnキーの検知ができずじまいだった。Keycodeは 決まっているようだが、これがNSEventで来ない感じ。
月別サマリ
4
5
6
- CドライブのSSDが故障して週末が溶けた件
- mruby-webcamをヘッドレス対応した
- Electron 1.2系だとNodObjCが多分使えない
- mrubyでPostgres.appを使って、LOBも扱ってみた
- まさかPostgreSQLを触って、IPv6の知識が増えるとは
- HTTP2でexpressを動かす
RustでOpenGLを再び、今回はgliumのチュートリアルを少しだけやった。
関連記事
11年前の記事
- 人工無脳へのながーい道のり
- HDDを4台搭載可能なUSB2.0外付けHDDケース「ドライブドア」がパワーアップ! 「ドライブドア テラボックス」が発売
- GET /~ss.jpg HTTP/1.1 の謎が解けた
2年前の記事
2年後の記事
4年後の記事
mruby-juliaでPythonもmrubyから呼び出せるようになった
背景
rubyとpythonについて、自分のツイッターのTLで盛り上がっていたので、 gistをブックマークしたところ、早速
!!?? “numpyとかPythonのすごいライブラリをmrubyから扱えすることmrubyでの科学技術計算関連への 応用を探る。 ” / “mruby-python · GitHub” https://t.co/OxikJjX18v
— 松本 亮介 / まつもとりー (@matsumotory) 2016年6月17日
その後、
link: mruby-python: https://t.co/h5KRg0Jk1K
— Yukihiro Matsumoto (@yukihiro_matz) 2016年6月17日
どうしようか悩んでいたが、Edge.jsを知って、やってみることにした。
ちょっとやってみた
Pythonよりも速い、Julialangを呼び出せるようにしたので、PyCall使って、Pythonもmrubyから呼び出せるように なった。
結果
mrubyからpythonもさらにnumpyも呼び出せるようになった。 pic.twitter.com/9vzrs0o8Sa
— kjunichi (@kjunichi) 2016年7月2日
学べたこと
関連記事
- Windows(MSVC)でmrubyからGPU対応のTensorflowを動かせた
- JulialangにHTTP2サーバーをさせたら
- aobenchをjuliaでやってみた
- Windows(MSVC)でmrubyからGPU対応のTensorflowを動かせた
- WindowsでDLLを作ろうとしてmrb_context_runの歴史を調べた
- Julia言語からmruby-webcamを使ってWebカメラの画像を取得した
12年前の記事
11年前の記事
4年前の記事
2年前の記事
Node v6系で動かないOSX向けモジュールを動かせるようにした際に見つけたrobotjs
おはようございます。本日、海外出張から奥さんが帰国するに伴い、実家から、子供達と引き上げます。心配していた便秘の次男のウンチ問題も、実家滞在中にも複数回、トイレで出せて、ホッとしています。@kjunichiです。
背景
screenresというnode.jsでディスプレイの解像度を変更するモジュールを見つけたものの、 nodeのv6ではnpm installしたらビルドエラー
nanを最新化して、ネイティブコードの該当箇所を対応して、.nodeモジュールを作れたが、 実行すると
dyld: lazy symbol binding failed: Symbol not found: _CGMainDisplayID Referenced from: /Users/kjw_junichi/work/nodejs/screenres/node_modules/screenres/build/Release/screenres.node Expected in: flat namespace dyld: Symbol not found: _CGMainDisplayID Referenced from: /Users/kjw_junichi/work/nodejs/screenres/node_modules/screenres/build/Release/screenres.node Expected in: flat namespace Trace/BPT trap: 5
とシンボル参照エラー
そこで、Cocoaのframeworkを使ったnpmモジュールのリンク方法を参考にすれば、 問題が解決の糸口が見つかるとの期待で、Cocoa APIをつかったnpmモジュールを探した。
robotjsというマウス操作がjsで行えるモジュールを発見
マウスを矩形波の軌跡を描くように動かす
//Move the mouse across the screen as a sine wave. const robot = require("robotjs"); function myFunc(x,width) { const twoPI = Math.PI * 2.0; const xx = (twoPI * x) / width; let ans=0; for(let k =1; k < 16; k++) { ans = ans + Math.sin((2*k-1)*(2*Math.PI*xx*0.5))/(2*k-1) } return (2/Math.PI)*ans; } //Speed up the mouse. robot.setMouseDelay(2); const screenSize = robot.getScreenSize(); const height = (screenSize.height / 2) - 10; const width = screenSize.width; for (let x = 0; x < width; x++) { y = height * myFunc(x,width) + height; robot.moveMouse(x, y); }
元々の作業進捗
node v6対応に加えてRetina対応もできた。あとはコードの清書。 / “GitHub - kjunichi/screenres at node-v6” https://t.co/BfG8wPxwsn
— kjunichi (@kjunichi) 2016年6月24日