Just another Ruby porter,

〜2015年10月下旬〜


<Older(,) | Newer(.)> | Recent(/)>> | RDF

2015-10-21 (Wed)

AWS LambdaのScheduled EventのSchedule expression

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側で対処する必要がありそう。


2015-10-22 (Thu)

gpg-agent

CygwinにもGnuPGがあるんだからgpg-agentをssh-agentの代わりにすればいいんじゃないか。
早速setupを実行してみるも、なぜか存在しなかった。残念。


2015-10-23 (Fri)

Ubuntu 15.10へアップグレード

例によってsudo do-release-upgradeしたら3時間ほどですんなり終了。
Orageパネル時計がなぜか1行になってしまったが、
プロパティの「線を縦に表示する(V)」をチェックしたら直った。
今のところ変だったのはこれだけだな。
そろそろSolydxに乗り換えたいんだけど、なかなか。


2015-10-24 (Sat)

Ubuntu 15.10にはavconvがなくffmpegになってる?

これはどうなってんだろう。
ffmpegからavconvになったと思ったら、15.10ではffmpegに戻ってるような。
しかももうavconvが跡形もない。
オプションが微妙に違うから面倒なんだけどねえ。


2015-10-25 (Sun)

YQL

てっきりYahoo! Pipesと同時に終了しているのかと思ったらYQLは生き残っていた。
これって登録なしにURLでqueryを書けばいきなり使えてしまうわけで、
RSSをうまいこと吐かせられればIFTTTとつなげられるような。
ちょっと試してみよう。


2015-10-26 (Mon)

tsvncが動かない

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まで増やした。


2015-10-27 (Tue)

AWS LambdaのConfigurationが保存できない

AWSコンソールからタイムアウトを1分から5分へ変更しようとしたら、

There was no uploaded file or code found in the editor to be saved.

と言われて保存できない。
一々アップロードからしないといけないようで。
しょうがないのでawscliでコマンドラインからやるしかない。


2015-10-28 (Wed)

マイナンバーのチェックデジット

下一桁はチェックデジットなので適当に12桁の数字を表示するだけじゃだめみたいだよ。
これはシェル芸の題材としては面白そうだが、
今週末の勉強会で出題されるもしれないので、
のんびり考えよう。


2015-10-29 (Thu)

マイナンバーのチェックデジットの計算

計算方法があるので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

いい感じだ。実際に来たらチェックしてみよう。


2015-10-30 (Fri)

kimono labsの調子が悪い

やたらとタイムアウトエラーが頻発。
違うapiは調子よかったりするのでなんだかよくわからない。
一度そうなると復帰しないっぽいしなあ。


2015-10-31 (Sat)

第19回シェル芸3周年記念勉強会にUstで参加 #シェル芸

例によってUstで参戦。twitterとはなるべく別解を。

_ Q1 1ppmと40ppm:

これはPS1を使うのがいいんだろうな。

% test -n "$PS1" && echo 1ppm || echo 40ppm

SHLVLは端末だと1、シェルスクリプトだと2になるので、1と40になるように計算するのもあり。

% echo $[(SHLVL-1)*39+1]ppm

_ Q2 4321234:

readで変数に代入するのが簡単。zshで。

% echo 1 4 | ( read a b; print -l {$b..$a} {$[a+1]..$b} )

bashとは違いevalしなくても{$a..$b}のようなことが可能。
print -lも便利。

_ Q3 1234567890を含む13桁の数字:

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\}はこの場合^と同じ意味になる。

_ Q4 すっとこどっこい:

sedにいつのまにか追加された-zを使うと入力をまとめて処理できる。
あとは「すっとこどっこい」の間に\n*あたりを埋め込めば正規表現は完成。

% sed -z "s/`sed 's/\B/\\\n*/g'<<<すっとこどっこい`/朴念仁/g" Q4

_ Q5 画像を抜き出して保存:

base64 -dが基本だが、実はconvertでも画像のdata urlは変換できる。

% curl -sL 'https://blog.ueda.asia/?page_id=7123' | grep -Po 'img src="\Kdata[^"]*' | convert inline:- img.png

_ Q6 2進数Shift JIS:

PerlとかRubyにはpackがあるので簡単。

% perl -pe '$_=pack("B*")' Q6 | nkf
% ruby -pe '$_=[$_].pack("B*")' Q6 | nkf

_ Q7 SHLVL:

ファイルに書いて実行だと確かに面白くないねえ。

[ $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は使える。

_ Q8 危険シェル芸:

なんかひどいというか間違った解を twitterにポストしてしまったが、
その後、何度もリセットするはめに陥ったため変数を使った方法は断念。
倍々で増えるんだから10回で終了させればいいんだろうけど。


<Older(,) | Newer(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!