〜2015年12月中旬〜
天気が不安定で上野東京ラインの直通運転も中止と聞き早めに出たのに、
非常停止ボタンを押されてたりホームのモニターが曇ったりとトラブル続きで、
Matzのキーノートに間に合わず。しかもHall Aは満席でHall Bで中継を見た。
内容はすでにRebuildとかでも話していたので目新しいものはなく2.0の3倍ということで。
隠居コミッタの老眼化が進む。そうMatzもNobuもすでに50代なのだ。
それはそれとしてコミッタに若い人がいい感じで入ってきているのは幸い。
TRICKは難読化している作品は評価が低くなった。もはや驚かないから。
とか言うべきじゃなかったよなあ。反省。
円周率おぼえ歌は242/77=22/7が出てくる点がもう怖いくらい。そこまでやるか。
ああ、せっかく本を買ったのにサインしてもらうの忘れた。
Ruby 2.3では<<~でインデントを消してくれるheredocが追加される。
% cat tilde.rb puts <<~EOM hoge foo bar EOM % ruby tilde.rb hoge foo bar
<<-と同じようにEOMがインデントされていてもいい。
最初の行ではなく一番短いインデントの行の深さが使われる。
% cat tilde.rb puts <<~EOM hoge foo bar EOM % ruby tilde.rb hoge foo bar
コミッタはコンテンツなのでvs the Worldに出席。
librubyのバージョンチェック方法が面白かった。
そういえば昔はABIが変わらなければ拡張ライブラリも使えてたから、
rvmはそのままコピーしてるのかもしれないと思った。
Threadがらみの話が2つあったが、なかなか興味深かった。
最後のKeynoteは見れず帰宅。
dateにやらせてしまう方法がある。
% date -d 2012-02-29 +%Y 2012 % date -d 2013-02-29 +%Y date: `2013-02-29' は無効な日付です
無効な場合は標準エラー出力に吐く。
さらに-f-とすれば標準入力から複数の日付を受け付けてくれる。
というわけでこうすれば閏年だけ抜き出せる。
% seq 1900 2400 | sed 's/$/-02-29/' | date -f- +%Y 2> /dev/null
HDDの残り容量が少なくなると赤くなる。
何%で赤くなるのか謎だったが、
%じゃなくて単に今予約してる分が録画できるかどうかで決まるようだ。
繰り返しは考えずに。
jsonなのでjqを使えば簡単。
ホスト名としてnameを使って/etc/hostsに使える形式に変換するならこんな感じ。
% docker ps -q | xargs docker inspect > ubuntu-inspect.json % jq -r '.[]|"\(.Name|ltrimstr("/")) \(.NetworkSettings.Networks.bridge.IPAddress)"' ubuntu-inspect.json suspicious_bardeen 172.17.0.3 reverent_kowalevski 172.17.0.2
入力が2015だとbignumが必要なのでbcとかが必須になる。
というわけでシェル芸というよりは実はbc芸だ。
% cat mayoi.bc n = (read() + 1) / 2 a = 1 b = 1 while (n--) a += b += a a - 1 % echo 2015 | BC_LINE_LENGTH=0 bc mayoi.bc 24410294683171395267259945469996127000411199333760853190535535281681195871429510314079442068798555059453792431772087225245168879580469159794544170936403149540819320510882801573596907938222922817134288725100817648047405608500267748766714030468003650259685406411646787207097050545802045736020993909154298598218721111963426993884619351338577630868510716463423585020972878819198991971234596733617320373133963970742975210614208
ginjiroさんの 解をぎゅっと縮めた(aとbを入れ替えている)。one-linerならこんな感じ。
% echo 2015 | BC_LINE_LENGTH=0 bc <(echo 'n=(read()+1)/2;a=b=1;while(n--)a+=b+=a;a-1')
かなり無理矢理感があるが。
gawk 4.1.0からはMPFR拡張が標準で入った。使えるかどうかはversionを確認する。
% gawk --help | grep bignum -M --bignum % gawk -V | head -1 GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.3, GNU MP 6.0.0)
()のような記述があれば利用可能。
つまりマヨイドーロ問題も解ける。
% cat mayoi.awk { n = int(($0 + 1) / 2) a = 1 b = 1 while (n--) a += b += a print a - 1 } % echo 2015 | gawk -f mayoi.awk inf % echo 2015 | gawk -M -f mayoi.awk 24410294683171395267259945469996127000411199333760853190535535281681195871429510314079442068798555059453792431772087225245168879580469159794544170936403149540819320510882801573596907938222922817134288725100817648047405608500267748766714030468003650259685406411646787207097050545802045736020993909154298598218721111963426993884619351338577630868510716463423585020972878819198991971234596733617320373133963970742975210614208 % echo 2015 | gawk -M '{n=int(++$0/2);a=b=1;while(n--)a+=b+=a;print a-1}'
-Mオプションを指定すればオーバーフローしない。実は昨日のbc版とほとんど同じ。
アドオン/拡張機能への署名によると、43ならabout:configで
xpinstall.signatures.requiredをfalseにすれば無理矢理使えるようにはできる。
44からはこれも使えなくなるけど、それまでには署名されるかな。