2018年05月15日

さっそくNode-REDの書き方で躓いてしまった…。定数的な変数の保持と再利用ってどうすんだろ

昨日、Node-REDを覚えたので使いたいなぁ…なんてことを何気なく書きまして、色々実験していました。
現在、自宅内のRaspberry Piで行わせている処理の中に次のような流れのものがあります。

(cronで特定の日付日時で起動開始)
  1. 特定のIDと本日日付時刻を利用して作成した文字列でファイル名を作成し、変数Aにファイル名に入れる。
  2. ffmpegで音声ファイルをm4aファイルに変換し、変数Aの名称で保存する。
  3. 変数Aの名称のファイルを、scpでサーバ上へアップロードする。

実際にはもう少し複雑なことをやっていますが、単純かして上のような流れです。これを、Node-RED化したい。
考えた流れは次の通り。

injectで特定のIDを文字列として日時指定起動。
1でファイル名を作成し、msg.payloadに入れる。
2は[exec]でffmpegを実行し、出力ファイル名はmsg.payloadを引数として渡すようにする。
3は[exec]でsshpass&scpを実行し、転送元ファイル名を………どうやって渡そうか……?

いきなり困ってしまった。2でmsgは[exec]の出力(標準出力か、標準エラー出力か、戻り値)になってしまっているので、それを3に渡すことはできない。
何かmsg.payloadを保存しておく方法は無いか…と考えて、globalというものがあることを知った。


injectで特定のIDを文字列として日時指定起動。
1. ファイル名を作成し、msg.payloadに入れる。
2. msgをglobal内の変数に保管する。
3.[exec]でffmpegを実行し、出力ファイル名はmsg.payloadを引数として渡すようにする。
4.globalからmsgに変数に内容を復元。
5.[exec]でsshpass&scpを実行し、転送元ファイル名はmsg.payloadを引数として渡すようにする。

と、これで上手くいきそう。

と思ったのだが、よくよく考えてみたら、この流れは最大3多重で発生する可能性がある。つまり、後から実行された流れがglobalに保存したmsgを上書きしてしまう。コレじゃダメだ。

調べてみると、uuidを設定してその値ごとに保存/復元する方法等、いくつか方法はあるらしいけど、なんだか元々のシェルで書く方法より難しくなりそうな気がしてきた。できれば、こういった技術は物事を単純化させるために使いたい。

うーん、こういう混み入った場合の書き方のベストプラクティスを収集しておく必要がありそうだなぁ。

続きを読む
posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | プログラミング

2018年05月14日

せっかくNode-REDを覚えたので家庭内インフラの実行環境を切り替えたい

先日、Node-REDの使い方を覚えてきました。こりゃ面白い。

現在、家庭内インフラの処理はほぼ、シェルスクリプトで作っちゃっているのですが、あまりエンジニアリング的なことができていないのが実情。仕事じゃないし。ならいっそのこと、Node-REDに移行できるところは移行したい。

ただちょっと心配なのは、メモリ使用量。
Node-REDはメモリを大きく食うそうなので。

いちおう、手元のRaspberry Pi 3(model B)は1GBのメモリを搭載していること、Raspberry PiのNode-REDではnode-red-startコマンド内でメモリ256MBに制限するパラメタが指定されていることとを勘案すれば、すぐにメモリが足りなくなることはないと思いますが、現在の運用では、金曜日の深夜にffmpegを3つ同時に立ち上げている部分があるので、このときに足りなくなるんじゃないかと、ちょっと心配。事前検証した方が良さそうな気がしています。


続きを読む
posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | PC

2018年05月13日

今日こそmixi退会するか

昨日、久々にmixiの名前を聞きました。
使用ていないmixiアカウント同士でスパムが飛んできている現象を目にしているって。

mixiでは、コミュニティに参加することもなく、サンシャイン牧場でばかり遊んでいた記憶がありますね。
男性タレントアイコンの人から、謎の仕事のお誘いみたいなのが来たこともありましたが、明らかに一斉送信の内容で、検討に値するものではなかったこともありました。

mixiを最後に活用したのは、たしか、ねこねこソフトさんと音ゲーを作った時だったと記憶しているので、6年ちょっと前。
その後、mixiだけしか使っていない人とのメッセージのやりとりが年に1回程度の頻度であったこともありましたが、それも過去の話。

最近ではTwitterで投稿した内容が、ただ単にmixiに流れ込んでいるだけになっていて、もしかしたらmixiが盛り上がっているように思えるかもしれませんが、実際にTwitterから投稿を流し込んでいる人がmixiを見ることはないでしょうし、無駄に寂しい空間と化したような気がします。もしかしたら、無駄に飛んでいくつぶやきにより働くCPUがサーバの温度を上げ、mixi社内の暖房として機能しているかもしれませんが、これからの時期は冷房に活躍して欲しいでしょうし。

無駄にスパムが飛び交う空間のアカウントを残しておくというのも、無駄にリスクを抱えるだけだと思いますので、mixiアカウントは削除しようかと思います。
ついでに、個人的に管理している親戚間メーリングリストも、何の拍子に乗っ取られてスパムの温床になるかわかりません。ここ数年は皆スマホ化して、連絡手段はLINEに移行し、キャリアメールを使わないようになってしまいました。これも無駄にリスクを抱えるだけになってしまいましたので、削除で。

posted by ayacy at 05:41 | Comment(0) | TrackBack(0) | 日記