〜2015年10月下旬〜
rate()とcron()の2種類。このドキュメントは
Walkthrough 5: Using Lambda Functions to Process Scheduled Events (Python)が詳しい。
rate()はそのままなのでわかりやすい。
ただ5 minutesと指定しても0,5,...のような時刻にはならない。
2:10,7:10,..のように5分置きにはなるが始まりがきっちりとした時刻にはならない。
なぜか秒まで指定される。これはevent sourceとして取得できる。
きっちりさせたければcron(0/5 * * * ? *)とする。
cronの初期は以下の通り。
cron(Minutes Hours Day-of-month Month Day-of-week Year)
crontabと違って最後に年も指定できる。
それとこれは重要で日付か曜日のうち使わなかったほうは?で埋める。
One of the day-of-month or day-of-week values must be a question mark (?)
つまり両方指定することはできない。
crontabだとORになるので意味不明な指定になるが、それをあらかじめ禁止しているのだろう。
曜日は3#2もしくはTUE#2とすれば第2火曜日と指定できるらしいので結構便利かもしれない。
最終火曜日のような指定はできないのでfunction側で対処する必要がありそう。
CygwinにもGnuPGがあるんだからgpg-agentをssh-agentの代わりにすればいいんじゃないか。
早速setupを実行してみるも、なぜか存在しなかった。残念。
例によってsudo do-release-upgradeしたら3時間ほどですんなり終了。
Orageパネル時計がなぜか1行になってしまったが、
プロパティの「線を縦に表示する(V)」をチェックしたら直った。
今のところ変だったのはこれだけだな。
そろそろSolydxに乗り換えたいんだけど、なかなか。
これはどうなってんだろう。
ffmpegからavconvになったと思ったら、15.10ではffmpegに戻ってるような。
しかももうavconvが跡形もない。
オプションが微妙に違うから面倒なんだけどねえ。
てっきりYahoo! Pipesと同時に終了しているのかと思ったらYQLは生き残っていた。
これって登録なしにURLでqueryを書けばいきなり使えてしまうわけで、
RSSをうまいこと吐かせられればIFTTTとつなげられるような。
ちょっと試してみよう。
tsvncはxtermが立ち上がりメッセージを表示してくれるが、
最終的には勝手に閉じてしまうのでなにか起こったときに役に立たない。
しょうがないのでx11vncを直接起動してメッセージを確認してみると、
こんな感じで終わっていた。
26/10/2015 11:55:30 shmget(scanline) failed. 26/10/2015 11:55:30 shmget: No space left on device
何かが足りないようで。ぐぐるとshmmniを増やせってことなので2倍にしてみた。
% sudo cat /proc/sys/kernel/shmmni 4096 % sudo sysctl -w kernel.shmmni=8192
これで一応動くようになったが、comixが駄目だったので念の為16384まで増やした。
AWSコンソールからタイムアウトを1分から5分へ変更しようとしたら、
There was no uploaded file or code found in the editor to be saved.
と言われて保存できない。
一々アップロードからしないといけないようで。
しょうがないのでawscliでコマンドラインからやるしかない。
下一桁はチェックデジットなので適当に12桁の数字を表示するだけじゃだめみたいだよ。
これはシェル芸の題材としては面白そうだが、
今週末の勉強会で出題されるもしれないので、
のんびり考えよう。
計算方法があるのでawkで実装。
BEGIN { FS = "" } { org = $0 last = $NF s = 0 for (i = 1; i < NF; i++) s += $(NF-i) * ((i-1) % 6 + 2) s %= 11 check_digit = s <= 1 ? 0 : (11 - s) print last == check_digit ? "OK" : "NG", org }
マイナンバー制度の最大のデメリット!金融資産課税の恐怖にあるゾロ目っぽい有効なマイナンバーで検証。
% printf "%s\n" 111111111118 222222222225 333333333332 444444444440 555555555557 666666666664 777777777771 888888888889 999999999996 111111111111 | awk -f check-digit.awk OK 111111111118 OK 222222222225 OK 333333333332 OK 444444444440 OK 555555555557 OK 666666666664 OK 777777777771 OK 888888888889 OK 999999999996 NG 111111111111
いい感じだ。実際に来たらチェックしてみよう。
やたらとタイムアウトエラーが頻発。
違うapiは調子よかったりするのでなんだかよくわからない。
一度そうなると復帰しないっぽいしなあ。
例によってUstで参戦。twitterとはなるべく別解を。
これはPS1を使うのがいいんだろうな。
% test -n "$PS1" && echo 1ppm || echo 40ppm
SHLVLは端末だと1、シェルスクリプトだと2になるので、1と40になるように計算するのもあり。
% echo $[(SHLVL-1)*39+1]ppm
readで変数に代入するのが簡単。zshで。
% echo 1 4 | ( read a b; print -l {$b..$a} {$[a+1]..$b} )
bashとは違いevalしなくても{$a..$b}のようなことが可能。
print -lも便利。
seqとsedで。
% seq -w 0 999 | sed h`seq -f ";g;s/.\{%g\}/&1234567890/;" -s p 0 3`
sedの命令には
h;g;s/.\{0\}/&1234567890/;p;g;s/.\{1\}/&1234567890/;p;g;s/.\{2\}/&1234567890/;p;g;s/.\{3\}/&1234567890/;
を渡している。hで入力をホールドスペースに保存、gでパターンスペースへ取り出すのが肝。
あと.\{0\}はこの場合^と同じ意味になる。
sedにいつのまにか追加された-zを使うと入力をまとめて処理できる。
あとは「すっとこどっこい」の間に\n*あたりを埋め込めば正規表現は完成。
% sed -z "s/`sed 's/\B/\\\n*/g'<<<すっとこどっこい`/朴念仁/g" Q4
base64 -dが基本だが、実はconvertでも画像のdata urlは変換できる。
% curl -sL 'https://blog.ueda.asia/?page_id=7123' | grep -Po 'img src="\Kdata[^"]*' | convert inline:- img.png
PerlとかRubyにはpackがあるので簡単。
% perl -pe '$_=pack("B*")' Q6 | nkf % ruby -pe '$_=[$_].pack("B*")' Q6 | nkf
ファイルに書いて実行だと確かに面白くないねえ。
[ $SHLVL = 100 ] && echo $SHLVL && exit; bash $0
yesを使った素晴らしい解をちょっといじった例。
% yes bash | head -n 98 | (cat; echo 'echo $SHLVL') | bash % (jot -b bash 98; echo 'echo $SHLVL') | bash
Ubuntuだとathena-jotパッケージを入れればjotは使える。
なんかひどいというか間違った解を
twitterにポストしてしまったが、
その後、何度もリセットするはめに陥ったため変数を使った方法は断念。
倍々で増えるんだから10回で終了させればいいんだろうけど。