問題: Microsoft Flow で二つの日時間の日数を求めよ (解答あり)

Microsoft Flow で使っているワークフロー定義言語には、日時を増減する関数はあるものの二つの日時からその間の時間を求める関数がありません。

Azure Logic Apps のワークフロー定義言語スキーマ

そこで知恵を絞って「作成」(Compose) アクションに次のように入力して解決しました。

"@div(sub(ticks(date-1), ticks(date-2), 86400e7)"

ticks 関数が 100 ns 単位のティック数を返すことに気付かなければ大変な手間になるところでした。

これを応用して 1900-01-01 からの日数を計算すると、 Excel 日時も算出できます。むしろこちらが目的だったのですがね。

RT58i と rsyslog を使って発信者番号をメール通知

ヤマハの RT58i には着信した電話の発信者番号を syslog に出力する機能があります。そして syslog デーモンの一種 rsyslog にはログをメールで送る機能があります。

そこでこれを組み合わせたら、着信した電話の発信者番号をメールで通知することができるのではないかと考えて試してみたので設定を紹介します。

前提条件

今回試した設定では以下のバージョン (リビジョン) を利用しました。

  • RT58i: ファームウェア Rev.9.01.51
  • rsyslog: バージョン 8.4.2 (Debian 8 収録のもの)

準備

RT58i でログを別ホストに送信する設定

まず RT58i でログを別ホストに送信するように設定します。以下のようにホスト名なり IP アドレスなりで rsyslog の動作するホストを指定します。

syslog host syslog.example.com

これを設定したら save を忘れずに。

rsyslog で別ホストからログを受信する設定

rsyslog.conf (Debian の場合は /etc/rsyslog.d 以下の任意の example.conf ファイルに記載するとよいでしょう。) に以下を記述して UDP 受信を有効にします (ここでは legacy configuration で記載しています。)。

$ModLoad imudp
$UDPServerRun 514

ここまで設定して service rsyslog force-reload を実行すれば、RT58i のログが rsyslog で記録されるようになるはずです。

rsyslog で着信電話の発信者番号をメール送信する設定

RT58i では電話の着信があると以下のようなログを残します。

TEL[**/*] InComing Call from 0ABCDEFGHIJ

そこでまずこれを抜き出すために以下のような正規表現を使ったフィルターを使います (まあ国内の電話番号なら必ず 0 で始まるはずなので [0-9] は余計かもしれませんが念のために入れておきました。)。

:msg,regex,"InComing Call from [0-9]" action

rsyslog の仕様なのか TEL[…] の部分は msg プロパティーには含まれないので正規表現には含めていません。

次にこのフィルターを利用して以下のように発信者番号をメール送信するように設定します。

$ModLoad ommail

$template MailSubject,"Got an incoming call"
$template MailBody,"From %msg:R,ERE,1: from ([0-9]+)--end%"

$ActionMailFrom nobody@example.com
$ActionMailTo somebody@example.com
$ActionMailSubject MailSubject

:msg,regex,"InComing Call from [0-9]"   :ommail:;MailBody

ここまで終わったらもう一度 service rsyslog force-reload を実行して新しい設定を有効にします。

最後に自分の携帯電話から発信するなり誰かに発信してもらうなりして実際にメールで発信者番号が通知されることを確認すれば作業は終わりです。

たぶん後継機種の NVR500 でも同様にできると予想しますが、そこは自己責任でお願いします。

Google Cloud Storage Nearline を使ってみました

Google Cloud Platform に Cloud Storage Nearline というサービスがあるのに気づいたので Turbo NAS のバックアップ用に使ってみることにしました。

Developers Console から、ストレージ クラス Nearline を選択して Cloud Storage にバケットを作成するだけで、後は通常の Cloud Storage を使うバックアップと同じ設定であっさり成功してしまいました。ほぼ同じ料金の Amazon Glacier と違って、バックアップした内容が Developers Console から確認できるほか、不要になったバケットやフォルダーの削除も何時間も待つことなく可能なので、使い勝手は格段に良いです。

しばらく使ってみて、料金的に問題が発生しないようなら、比較のために同時に設定してみた Glacier を使ったバックアップは取りやめにしようかと考えています。

AWS Elastic Beanstalk に WildFly を載せてみました

Amazon Web ServicesElastic Beanstalk というサービスがありますので、試しに WildFly を載せてみることにしました。

まず AWS コンソールから Elastic Beanstalk で Create New Application を選択すると、いくつかの構成の中から環境  (Environment) を作成できるようになっているのですが、残念ながら WildFly の構成はないので、今回はお試しということで Docker の構成を選んで Single instance の新しい Web Server Environment を作成することにしました。アプリケーションの選択時に WildFly の Dockerfile をアップロードすることで、とりあえず WildFly 単体の稼働は確認できました。

WildFly の Dockerfile は、http://www.jboss.org/docker/ から入手可能になっていますが、これだけだと自前のアプリケーションが載せられないので、実用的には Dockerfile に何らかのカスタマイズが必要になってきますね。

Elastic Beanstalk の環境を作成した後で、AWS コンソールで EC2 を確認すると新しいインスタンスが作成されていました。また Elastic Beanstalk を使うためにはどうやら Elastic IP も必須なようです (自動的に割り当てられます)。

パスワード管理のあれこれ

今や多くのインターネット サイトでユーザー認証でパスワード入力を求められる時代になってますが、安全のために同じパスワードを使い回すなと言われるものの、全く異なるパスワードをサイトごとに覚えられるほどの記憶力のない人は、自分なりにマイ ルールを作って覚えやすくしてたりすると思います。

しかしサイトによって許されるパスワードに制限があったりして、なかなかマイ ルールどおりにならなかったりもしばしばです。良くあるパターンは英数字で大文字と小文字は区別するのだと思いますが、たまに大文字と小文字と数字をそれぞれ1個以上入れろだの、さらに記号も入れろだのとか言われると覚えるのが面倒になってきます。全部記号入りにすれば解決するかと言えば、記号を拒否するところとか、挙句の果ては最長でも8文字しか使えなくて、セキュリティを軽視してるのかと言いたくなるところもあって、なかなか解決しそうにありません。

秘密の質問というのも実際上は追加のパスワードを設定するだけなので、有効かどうか怪しいものですし、信頼できるサードパーティに認証を委ねてしまうのも一つの手なのかとも思ったりしますね。

REGZA 録画用ハードディスク入れ替えの顛末

先の休日に新しいハードディスクを入手したので、今まで使っていた据え置きハードディスクからの入れ替えを実行

テレビ側の録画用 USB ポートが一つしかないので、セルフパワーのハブを探してきてダビングを開始するも、しかし早々に問題が発覚

異様にダビングが遅い

なんとハブが USB 1.1 だったよ。AC アダプターまで探してきたのにね……

仕方がないので使用中の USB 2.0 ハブを一時拝借してダビング再開

まあそれでも 500 GB のムーブには時間もかかるし、ダビング中は録画番組の再生もできないので、結局 小分けにしつつ二日がかりでどうにか入れ替え完了

録画予約の保存先だけの変更はできなかったので、全部予約しなおしが必要になったけど、テレビ周りのコンセントに一つ空きができたので これでよしとしておこう

Flash Player自動アップデートの手動実行

Flash Playerの自動アップデートは, Windowsではログオンしたタイミングでしか通知してくれないので, 普段はスリープか休止状態にしてログオンしたまま使ってると一向にアップデートされないので, Adobeのサイトに行って更新するという面倒があるんだけど, 手動で簡単にアップデートを実行できる方法があるので書いておく。

とりあえず簡単に書くと,

C:\windows\system32\macromed\flash\flashutil*_activex.exe -update activex

でActiveXバージョンが,

C:\windows\system32\macromed\flash\flashutil*_plugin.exe -update plugin

でPluginバージョン (Internet Explorer以外) の更新が実行できる模様。64ビットWindowsの場合はsystem32ではなくsyswow64の下ね。*のところはそのときにインストールされているバージョンによって異なるので適当に対処するように。

ただし, この方法は実際に新バージョンがなくても更新しようとするので, セキュリティアップデートが出たときに限るのが賢明かな。ちなみに, どちらのexeを使っても引数でアップデート対象が決まるみたいなので, どちらを使ってもOKみたいな。

リンク: Adobe – Flash Player:ヘルプ – Adobe Flash Player のアップデートについて.

富士見ミステリー文庫

Amazon.co.jpの自分のインスタントストアで「富士見ミステリー文庫特集」というのを始めてみたね。新本では変えないので中古書店とかで探してみてね (Amazon.co.jpで買ってくれないと紹介料が入らないんだけど[E:coldsweats01])。

レーベル自体消滅してしまって, 富士見書房としては黒歴史状態の (なかったことになっている) 文庫なんだけど, 今アニメ化されて話題のGOSICKシリーズも元は富士見ミステリー文庫だったぐらいなので, レーベルが変わることになってもいつか復刊しないかと期待してるんだけどね。表紙イラストは残してほしいなぁ。

[追記] 誤字を訂正した。恥ずかしい。