深夜番組の場合

録音しているラジオのファイルネームに日時-時間を使っているのですが、
深夜の場合、〜30:00(5時台まで)は前日の日付に手動で置き換えていました。
最近は新たな番組を探すことも多くなったので、
ここらへんもスクリプト化しました。
# 2018. 5. 2 修正
20180502-0230 -> 20180501-2630

tmpHour=`date '+%H'`
tmpMin=`date '+%M'`
#date=`date '+%Y%m%d-%H%M'`
if [ ${tmpHour} -le 5 ]
then
#echo "1 day ago"
date=`date '+%Y%m%d' --date '1 day ago'`
tmpHour=$(expr $tmpHour + 24)
else
#echo "today"
date=`date '+%Y%m%d'`
fi
date=${date}-${tmpHour}${tmpMin}

node.js で遊ぶ

先月まで遊んでいたことの小まとめ。
とりあえず、node.jsでローカルのコマンド(スクリプト)を実行する。

目的: port 2100 で fetchmailをできるだけ簡単に動かすこと。

// checkMail.js

// check mail
// sync
const execSync = require('child_process').execSync;
// web
const http = require('http');
const port = 2100;
//var fs = require('fs');
var server = http.createServer(
(request,response)=>{
try {
result =  execSync('/usr/bin/fetchmail').toString();
} catch (err) {
result = err.stdout;
}
response.setHeader('Content-Type', 'text/html');
response.write('<html>');
response.write('<head>');
//    response.write('  <script type="text/javascript" language="javascript">setTimeout("location.reload()",5000);</script>');
response.write('<meta charset="UTF-8" />');
response.write('</head>');
response.write('<body><h1>Mail checked</h1>');
response.write(result);
response.write('</body></html>');
response.end();
//    console.log(result);
}
);
server.listen(port);

スタートは
$ forever start checkMail.js

動いているnode.jsの一覧は
$ forever list

終了は
$ forever stop checkMail.js

これで次のようにアクセスすれば、
http://(local ip):2100
fetchmailが動き、ブラウザに結果が表示される。

先月にやっていたことのまとめだけ。
http serverを動かす必要もなく、nginxが動いていても同居でき、お手軽ですね。

もう少し、
・構成的にして、
・セキュアにして、
・外向けにportを開いて、
・IFTTTのmaker channelでアクセスすれば、
Google Homeから音声でサーバのコントロールができる。

初、3Dプリンタ製品

買ったモノはGoogle Home mini用の壁掛けフォルダ。
購入先はDMM.make、3D プリンタの製品を販売もしているんですね。

以前は置いて使ってました。

フォルダの実物はこんな感じ。

設置した様子。
ホッチキスでうまく固定できなかったので、(両面)テープで止めました。
テープが適切な大きさではなく少しフォルダがたわんでいるので、
後日テープを張り替えるかも。

terminal modeを実装

michi にterminal modeを実装して、コマンドラインから実行できるようにしました。
次のようにタイトル/年/ログファイルを指定して実行する。
> michi.exe “海沿いコース” 2018 WG20180303012704.log WG20180303024920.log
なお、年の指定はログファイル名に年号を含まない場合にのみ有効になります。
# 上の例では、1940などを指定しても単純に無視される。
これでスクリプト処理できるようになりました。

最近のTV事情

なんとなく、最近のTV周りの小まとめ
最近は「TV放送」 < 「chromecast」な感じでTV(もはやディスプレイ)を使ってます。 金沢ではniconicoでアニメを見ることが多かったのですが、 # そもそも金沢では放映されない番組が多かった。 それがAbemaTVに変わりました。
録画機器を持っていないので、リアルタイムで見ないので、
むしろAbemaTV、GyaoとかAmazon prime Videoの方が楽ですね、週に2,3本くらいです。
あと、今の部屋(2017. 7〜)では、
衛星のアンテナが無いですが、特に困っていない感じ。
他には、HDMIケーブルでフルHDのディスプレイとして使用できますが、
あくまで非常用で、今の所は常用はしないかな。
Dsub15ピンの旧ディスプレイはもう捨ててもいいかも。

Movable Type 6 で記事のカテゴリ表示を複数にする。

デザイン/テンプレート/[記事|記事の概要]
の該当部分を次のように変更する。

<mt:IfArchiveTypeEnabled archive_type=”Category”>
<mt:If tag=”EntryCategories”>
<li class=”asset-meta-list-item”>カテゴリ <mt:EntryCategories> / <a itemprop=”articleSection” rel=”tag” href=”<$mt:CategoryArchiveLink$>”><$mt:CategoryLabel$></a></mt:EntryCategories></li>
</mt:If>
</mt:IfArchiveTypeEnabled>

・元のEntryPrimaryCategoryだと最初のカテゴリしか表示されないので、EntryCategoriesに変更。
・複数表示するのでセパレータ「:」を削除し「 / 」にする (趣味ですが)。

Google maps API変更の後始末

1年ほど前にGoogle Maps APIが変更になり、
再びkeyが必要になりました。
新しく生成するログについては、新APIに対応したテンプレートで作成していました。
しかし、以前のログはほったらかしにして、見られない状態のままでした。
スクリプトで一括変換しようかと思いましたが、
・変換後に手動で修正しているものもある。
・そもそもGPSログが残っていないものもある。(轍で作っていたもの)
・michi(ログ フォーマッタ)のコマンドライン実行部分を作ってなかった。
などの理由で、手動で変換しました。
 http://riverotter.xsrv.jp/bicycle/index.html
古いログはしょうがないけど、スクリプトで一斉変換できる環境を作っておこう。
要件は
・作成時の入力部分を別ファイルに保存して、再利用できるようにしておく。
  タイトル、年号を持たないGPSログの年号
・1日1ログの前提を拡張する
  フォーマットを年月日から年月日[時間]に拡張する

sshログアウト時にterminalが固まる

sshのログアウト時にterminalが固まる。
terminalを終了すれば終わり、なのですが気持ち悪い。
●環境
server: debian Jessie
client: debian, ubuntu, Android(?)
色々と対処はあるようですが
・タイムアウト時間を短くする
・[ctrl]+s で切断する
次の方法で正常に切断できるようです。
参考: http://linux.just4fun.biz/?Debian/shutdown%E3%82%84reboot%E3%81%99%E3%82%8B%E3%81%A8ssh%E6%8E%A5%E7%B6%9A%E3%81%AE%E7%AB%AF%E6%9C%AB%E3%81%8C%E3%83%8F%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B
次を実行する。
$ sudo apt-get install libpam-systemd dbus
このことは何度かググっては忘れていたのでメモ。

Waylandなのか?

clientをdebianにしてから、時々画面が乱れるようになった。
とりあえずは、カーソルを画面左上に持ってくると正常に戻ってくれる。
特にterminalで発生し気になりだしたので、原因と回避策を探してみた。
恐らく、XorgとかWaylandの問題だろうと当たりをつける。
確認の仕方は、
$ echo $XDG_SESSION_TYPE
$ x11
どうやらデフォルトはXorg?
ログインの項目ではWaylandの項目が表示されず選択できない。
ググってみると、
$ sudo vi /etc/gdm3/daemon.conf
で、次の行のコメントを外す。
# WaylandEnable=false
一旦ログアウトして、再びログインすると、
次の項目が選択できるようになった。
System X11 Default

色々いじっていると、on Waylandも表示されるようになった。

on Waylandを選択すると、
$ echo $XDG_SESSION_TYPE
$ wayland
ただし、[ctrl]+[space]に割り当ててある日本語変換が効かなくなってる?
今日はここまで。