我が家の炊飯器が壊れた
おはようございます。今週は、奥さんが早出だったので、久しぶりに、子供たちを保育園に登園させました。朝の登園で父親とは、あまりないので、奥さんが登園させるよりスムーズにできました。(もちろん奥さんが登園準備に協力してくれているのも要因ですが)@kjunichiです。
新婚生活とほぼ同時にかった炊飯器が寿命を迎えた
以下のリンクでPDFマニュアルを見つけて、緑と赤のランプの点滅は故障の知らせと分かった。 これは寿命と判断した。
6年ほど頑張って我が家の食事を支えてくれました。ありがとう!
1~5.5合(0.18~1.0L) 電子ジャー炊飯器 SR-LU101 商品概要 | ジャー炊飯器 | Panasonic
新しく購入した炊飯器
関連記事
11年前の記事
10年前の記事
8年前の記事
4年前の記事
Windowsでlablglを使う
おはようございます。次男のしばらく遊ばなかった折り紙を再利用して長男とスポーツカーを折ったら、次男が激怒してました。@kjunichiです。
前提
なりでutopが動く程度に環境が整備されていること。
Cygwinのターミナルを開いて作業
.bashrc
export PATH=$PATH:$HOME/.opam/system/lib/stublibs export OCAMLLIB=C:/OCaml/lib
install
opam depext lablgl.1.05
opam install lablgl
REPLモードでlablglを使う
折角前回入れたutopで以降は作業する。このため、cygwinのターミナルから cmdを起動して、以降はこちらのコマンドプロンプトで作業を行う。
utopだとlablglutコマンドとは違い、タブの補間が効いたりと便利なことも多い。
cd $HOME && cmd /c start cmd utop
#require "lablgl";;
#require "lablgl.glut";;
これで対話的にlablglが使える。
以下のようにウィンドウを表示できた。
Glut.init Sys.argv;; Glut.createWindow "LablGL: aiueo";; Gl.enable `lighting;; GlLight.light 1 (`diffuse (0.7, 0.9, 0.7, 1.0));; GlLight.light 1 (`position (2.0, 0.2, 0.0, 0.0));; Gl.enable `light1;; let display () = GlClear.color (0.0, 0.0, 0.0); GlClear.clear [`color]; Glut.solidTeapot 0.3; Gl.flush ();; Glut.displayFunc display;; Glut.mainLoop ();;
書いたコードを動かすには
ocaml -I "C:/tools/cygwin/home/kjw_j/.opam/system/lib/lablgl" lablgl.cma lablglut.cma fern.ml
exeをつくるには
ocamlfind ocamlopt -o fern -linkpkg -package lablgl,lablgl.glut fern.ml
ソース
表示結果
改めうごかすと動かない問題
この問題は、この記事の.bashrcの設定を行っていれば起きない。
- dlllablgl.dllが開けないエラー
パスが通っていない
- Fatalエラー
Fatal error: exception Typetexp.Error(_, _, _)
OCAMLLIBが設定されていないと、これが出る模様。
あとがき
実は、この記事の書いてる際にlablgtkを使おうとしたら、上手くいかず、最近はOCaml for Windowsを使うようになった。 こちらでも、lablgtkに加え、lablglも動いている。
関連記事
11年前の記事
10年前の記事
8年前の記事
4年前の記事
node.jsでシェーダーからGIFアニメを生成するツールglsl2imgにプルリク出した件
おはようございます。週末は保育園の同じクラスのお父さんの主催のBBQに行ってきました。 長男は同じクラスの大好きな女の子も一緒に来ていたので、楽しんでいました。一方、次男は迷子放送で呼び出されていたようです。@kjunichiです。
TL;DR
node.jsのリポジトリにWindows対応のプルリクを出した結果以下が分かった。
背景
を読んだ。自分はこのGLSL分野?に興味があり、昨年はmrubyのアドカレで
なる記事を投稿してたりする。同じサーバサイドで使えるツールというこで大変興味を持った。
プルリクの内容
Windowsで動かせないかなぁと、package.jsonをながめていたら、自身はピュアjsでかつ、node-canvasつかっての画像出力で これなら、Windowsで動かせそう!と試したら、
execFileSync( `${__dirname}/wrapper.js`, [width, height, file, time, uniform, out], { stdio: cli.flags.verbose ? 'inherit' : 'ignore' } );
の箇所でエラー。Windowsではシェバングが使えない為、execFileSyncで.jsファイルを指定して起動することが出来なかった。
batファイルをかます
Windowsプラットフォームでは
require('child_process').execFileSyncを require('child_process').spawnSync に変更して、cmd.exe経由でbatファイルを起動してそこからnode.exeを起動するように以下の様に変更を加えた。 (この対応自体も、node.exeにjsファイルを直接渡せばよかったのではと、この記事書きながら反省してます。。)
if (process.platform !== 'win32') { execFileSync( `${__dirname}/wrapper.js`, [width, height, file, time, uniform, out], { stdio: cli.flags.verbose ? 'inherit' : 'ignore' } ); } else { const spawnSync = require('child_process').spawnSync; spawnSync( 'cmd.exe', ['/c', `${__dirname}\\wrapper.bat`, `${__dirname}\\wrapper.js`, width, height, file, time, uniform, out], { stdio: cli.flags.verbose ? 'inherit' : 'ignore' } ); }
プルリク不採用でした
However, I'm little afraid to write OS-specific code by myself. I'm gonna find some npm package which takes care of enviroments.
OS依存のコードは避けたく、問題の箇所をWindowsプラットフォームでも扱える パッケージ探して対応して頂けるとのことでした。確かにその方が後々のメンテのコストも増えずに済みますから その方が良いなぁと。
そして、execaなるnpmパッケージでこの問題が解決し、Windowsでもglsl2png,glsl2gifコマンドが動くようになりました!
学んだこと
プルリクはマージされませんでいたが、いろいろ手を動かした分学びがありました。
Batファイルで受け取った引数の参照方法
MSX-DOSしか知らないし、さすがに当時の事はすっかり忘れており、 MS-DOSは詳しくないので、今回のBatで必要になった、受け取った引数を さらに別のコマンドに引き継がせる記述を学べた。
「%*」で全ての引数が渡せる。今回のケースでは、1つ目が不要なので、shiftをして削除している。
shift node.exe %*
カバレッジ対応が課題
自分の出したプルリクだと、coverallでカバレッジ率が下がったと通知を受けるも、 これをどうやって、もとのカバレッジ率に戻すのかが分からなかった。。
appveyor.ymlの書き方
GTKを使ったnpmモジュールを使ったリポジトリのappveyor.ymlの書き方を勉強させてもらえた! 自分のプルリクではこの辺りの対応も含むことが出来ずだったので、おいしい思いが出来た。
英語でのコミュニケーション
mrubyのリポジトリ同様に英語表記であり、なんとなく日本語がネイティブレベルに通じる方の気がしつつも、 これに合わせて、こちらも英語でやり取りを試みた。
感想を伝えたかった
表現したかったこと
- すごい、興味を持った!
分かりました
I got it.
がまっ先に思い付いたが、どうも、砕けた表現っぽい評価を見かけたので、 Understandを使おうとして勉強になった。
I understood.
でも本当は、Understoodを使うのであれば、
(It is) understood (by me).
とするべきで、I understoodはこの場合は英語として駄目っぽかった。
対応への感謝
さすがに、Thanks.だけだと味気ないので、githubでFixした際のやり取りを検索して、 以下の表現で返信させてもらった。
it works like a charm.thank you!