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)で外部アプリの進捗を表示する

Node.jsでメモアプリを作って遊ぶ(そのさん)


前回の時点でひとまずメモアプリっぽい何かは作れたんだけれども、jQueryでゴリゴリ書いてた部分をナウいライブラリ「Vue.js」に置き換えて遊んでみようと思う。

もともと俺がjQuery使い始めた理由ってのも、6~7年前ぐらいにモダンブラウザとレガシーブラウザが入り乱れた状況を打開するためだった気がする。まあ、IE6~8あたりのバグ対応でCSSハックせざるを得なかったけどな。今まで惰性で使い続けてきたのだけれども、今ではモダンブラウザで動けばOKな風潮だからなー。

そいで今どきのトレンドを軽く調べてみると、Googleさんが作ったAngularとか、Facebookさんが作ったReactとか色々あるのだけれど、jQueryを置き換えるのであればVue.jsが手っ取り早いという噂だ。まあ、WEB上の自信ニキ達がそう言っているだけであって俺は知らんのだが、全部触ると学習コストがパない感じになりそうなので、とりまVue.js触ってみまちゅか。

さっそくKindle Unlimited漁っていい感じの参考書をGETしたので、こいつを頼りに手を動かしてみる事にした。斜め読みした上での実装なので不安ではあるが、まず手を動かして糞みたいなコードでも作り上げる所がスタートラインだと思うんや。とりま動けば大正義(暴論)
続きを読む Node.jsでメモアプリを作って遊ぶ(そのさん)

Node.jsでメモアプリを作って遊ぶ(そのいち)

最近Node.jsにハマっててお仕事で使い始めたのだけれど、普段デスクトップのツール開発目的で使ってるもんで、サーバアプリなんざ作ったことねえんだよな。いかんいかん、このままでは時代の波から取り残されちまうぞ。しかしまぁ一体全体、どこから始めればいいのやらさっぱりだぜ。こういうときはまず参考書漁りからスタートだな。

おいらはAmazon様の奴隷なので、もちろんKindle Fire(やっすいタブレット)も持っているしKindle Unlimited(月額1000円ぐらいでいろいろ読み放題サービス)にも加入しておるのだが、こういうときは割と個人出版っぽい参考書がサクッと読めるし分かりやすいので最近お気に入り。とりあえず今回は、上記の本に書いてある内容をベースに練習でメモアプリを作ってみた。

結果、半日ぐらいかけてEvernoteを極限まで糞にしたようなしょぼいメモアプリが出来上がった。プレーンテキストの書き込み、読み込み、削除ができるだけだ。エラーハンドルとか全力で放棄しまくってるのでちょっとした事でバグると思うが細かいことは気にするな!ソースコードはGitHubに上げといた。何気に、GitHubにちゃんとした(?)プロジェクトうpするの初めてな気がする。

ちなみに参考書は1時間もあれば読破できるぐらいのボリュームなので、通勤電車とかでサクッと読めちゃうゾ。さっきの参考書に書いてあるまんまなのだが、バックエンドはNode.js、テンプレートエンジンは「EJS」、フレームワークは「Express」ってな感じで色々と組み合わせて作ってみた。いろいろ試行錯誤もあったので、あれこれ残しておこう。
続きを読む Node.jsでメモアプリを作って遊ぶ(そのいち)

Electronでデスクトップアプリを作ってみる

いつもお仕事のデスクトップアプリはC#のWinFormで開発してるのだが(WPF?UWP?知らない子ですね…)、なんか最近マンネリ化してきてるので、たまには新しい環境で開発したいなーって思った。いろいろ調べてみると、どうやら我らがGitHub大先生が「WEBの技術をそのまんまデスクトップアプリに流用できる」というイカしたフレームワークを出してるらしい。それがElectronというやつだ。しかも、俺がお仕事で使ってる「Visual Studio Code」も何気にElectron使って作られてるらしい。ぱないの!

しかしこのElectron、面白そうではあるのだが、実務レベルで使えるものかは未知数だ。まあ、兎にも角にもやってみない事にはなんとも言えんだろう。とりあえず試してみようじゃまいか。
続きを読む Electronでデスクトップアプリを作ってみる

Node.jsでシリアル通信(Windows環境)

シリアル通信(UART)でPCと組み込み機器のデータ入出力をやる機会がたまーにある。Vectorとかでシリアル通信のGUIツールを落としてきて確認するのが手っ取り早いのはあるんだけれども、もっとシンプルでいい。なんならCUIでいい。

言語だとか環境はなんでもよかったのだが、そろそろnode.js大好きおじさんになりたいと思ってるので、そいつ向けのプラグイン的なやつでやってみることにした。すると、「serialport」とかいう読んで字の如くなやつがあるそうだ。

しかし俺がやろうとしてる事がニッチすぎるせいか、日本語かつWindows環境の情報が少ないやね。まー、世の中のギークボーイ達はみんなLinux使ってるからしゃーない(勝手な偏見)。そんなときはとりあえず「Google翻訳を使いながら公式のドキュメントをさらえ」ってばっちゃが言ってた。
続きを読む Node.jsでシリアル通信(Windows環境)