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!
関連記事
11年前の記事
10年前の記事
6年前の記事
5年前の記事
2年前の記事
WindowsでPostgreSQLをソースからビルドした
おはようございます。先週は、なかなか熱が下がらなかった次男ですが、どうやら溶連菌に感染していたようです。が、それいがにも何か別の原因もあり熱があったようでしたが、すっかり回復して元気に保育園に通っているようです。(自分の仕事でトラブル続きでお迎えに行けてない)@kjunichiです。
背景
plv8を以下のサイトよりバイナリで公式が配布している9.6系のPostgreSQLにインストールできた。 しかし、自分でplv8をビルドしてみたくなった。
本記事はその第一歩。とりあえず、手元でPostgreSQLをソースからビルド出来るか試した。
PLV8 binaries for PostgreSQL 9.6 windows both 32-bit and 64-bit - Postgres OnLine Journal
Windows 10でPostgreSQLをソースからビルドするには
まぁ、結論としては、
を読んで作業すれば良さそう。
自分のビルド環境の詳細は
にまとめてある。
ソースをもってくる
以下のページより、
9.6.3を選択して、DLした。Windows向けのzip形式は用意されていないので、tar.bz2、tar.gzを 展開できるツールが別途必要。とはいえ、この手の作業をしようという方は、cygwinなり、mingwなりの 環境がすでに入っているとは思う。
buildはどこだ問題
打ち込むコマンド例が出ているが、そこに出てくるbuildコマンドは一体どこにあるんだ!
少し版の古い日本語ドキュメントを見つけ、そこを注意深く読むと、本文中に src/tools/msvcで作業する旨の記述があり、build.batがこのディレクトリにあった。
bison.exe, flex.exeという名では入っておらず、これらをchocolateyで入れており、win_bison.exe, win_flex.exeで入ったので、 ログには、bisonがないよ的なものが出ていて、心配したが、ビルドは正常にできた。
cd src/tools/msvc build
動かすにはinstallコマンドで適当な場所にインストールする
ソースツリー直下のReleaseフォルダ配下にサブディレクトリ毎に各exeが置かれるが、これを直接実行しても、上手く動かなかった。 公式のドキュメントのインストールを実行し、インストール後のexeを起動すると動いた。(psqlコマンドで試した)
install C:\devpgsql
関連記事
- PostgreSQL 8.0 on XP
- 結局今回も
- PostgreSQLのVACUUME
- PostgreSQL on Mac OS X(Intel)
- PostgreSQLの困ったエラー
- postgresql-8.2-ja.msi
- PostgreSQLの謎
- 64ビット版のVistaでPostgreSQLをODBC経由で使うには
- PostgreSQL 8.4への移行で苦戦中
- PostgreSQL 9.0への移行~失敗編~
- npm install pgだけでは済まない件
- OSXで最速でOCamlでPostgresqlに接続するには
- mrubyでPostgres.appを使って、LOBも扱ってみた
- まさかPostgreSQLを触って、IPv6の知識が増えるとは
- PostgreSQLの機能拡張をWindowsでC++混在で作ろうとするとハマると分かった事2点
- Winodws(MSVC)でplv8をビルドするまで
Windowsでビルドつながり
12年前の記事
11年前の記事
10年前の記事
たぶんGTK2をChocolateyのgtk-runtimeで入れても64ビット環境ではダメな件
こんばんは、次男が熱をだし、通ってる保育園ではインフルエンザが発生しており、自分もひどく体がだるく、次男のインフルエンザの検査を受けたところ、陰性だった@kjunichiです。
node-canvasを入れようとして分かった
node-canvas公式のWindows向けのインストールガイドの
Home · Automattic/node-canvas Wiki · GitHub
ではchocolateyで行けると記述されてますが、確かに昔の32ビットのNode.jsのみだった時代は64ビット機でも この方法で行けたのかもしれませんが、2017現在Node.jsも64ビット版が用意されており、手動で
をDLして、C:\GTKに展開する必要がありそう。