BOMつきUTF-8をJSON.parse()で読み込めなかった

なんか最近いろんな言語でJSON扱う敷居が低くなってきたので、ファイルでデータを受け渡す時も割とJSONを使ったりする。こないだ他の人が作ったアプリが吐き出したJSON読む案件があって、こちとらElectron(Javascript)でデスクトップアプリ作ってるので、ファイル読み込んでからJSON.parse()すれば楽勝じゃね?てな感じでサクッとfs.readFile()やってみたわけですよ。

Uncaught SyntaxError: Unexpected token  in JSON at position 0

そしたら「ファイルの先頭に変なんあるよ!!」っぽい事を言われてパースしてくんない。まさかJSONのデータフォーマット腐っとるんちゃうか?と思ってチェッカーに入れたけども、問題なし。不審に思いながら、バイナリエディタでファイル開いてみたところ、データの先頭に「EF BB BF」が入ってた。うわぁ、BOMつきUTF-8だこれ!

続きを読む BOMつきUTF-8をJSON.parse()で読み込めなかった

Electron(+Vue.js)で外部アプリの進捗を表示する

最近はElectronでデスクトップアプリ作ってるのだが、どうしても他の言語で作られたアプリを呼び出さにゃいかん感じになった。大抵の言語で外部プロセスを呼び出す仕組みはあるものだけれど、Node.jsの場合は「child_process」とかいうモジュールを読み込んでくればそれっぽい事が実現できるらしい。

まあ外部アプリを呼び出すだけなら良いのだけど、その外部アプリが結構重い処理をやってるので、バックグラウンドで動いてるかどうかをElectron側で表示したい。ということは、外部アプリが標準出力に出している内容を何らかの手段でフックして、そいつをリアルタイム表示すればよさそう。というわけで、絶賛お勉強中のVue.jsと組み合わせて試してみた。
続きを読む Electron(+Vue.js)で外部アプリの進捗を表示する