Just another Ruby porter,

〜2015年12月中旬〜


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

2015-12-11 (Fri)

RubyKaigi 2015 1日目

天気が不安定で上野東京ラインの直通運転も中止と聞き早めに出たのに、
非常停止ボタンを押されてたりホームのモニターが曇ったりとトラブル続きで、
Matzのキーノートに間に合わず。しかもHall Aは満席でHall Bで中継を見た。
内容はすでにRebuildとかでも話していたので目新しいものはなく2.0の3倍ということで。

隠居コミッタの老眼化が進む。そうMatzもNobuもすでに50代なのだ。
それはそれとしてコミッタに若い人がいい感じで入ってきているのは幸い。

TRICKは難読化している作品は評価が低くなった。もはや驚かないから。
とか言うべきじゃなかったよなあ。反省。
円周率おぼえ歌は242/77=22/7が出てくる点がもう怖いくらい。そこまでやるか。

ああ、せっかく本を買ったのにサインしてもらうの忘れた。


2015-12-12 (Sat)

Squiggly heredoc

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

2015-12-13 (Sun)

RubyKaigi 2015 3日目

コミッタはコンテンツなのでvs the Worldに出席。
librubyのバージョンチェック方法が面白かった。
そういえば昔はABIが変わらなければ拡張ライブラリも使えてたから、
rvmはそのままコピーしてるのかもしれないと思った。
Threadがらみの話が2つあったが、なかなか興味深かった。
最後のKeynoteは見れず帰宅。


2015-12-14 (Mon)

dateコマンドで閏年の判断 #シェル芸

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

2015-12-15 (Tue)

torneが赤くなる

HDDの残り容量が少なくなると赤くなる。
何%で赤くなるのか謎だったが、
%じゃなくて単に今予約してる分が録画できるかどうかで決まるようだ。
繰り返しは考えずに。


2015-12-16 (Wed)

docker inspectの結果からIPアドレスを抜き出す

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-12-17 (Thu)

マヨイドーロ問題 #シェル芸

入力が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')

かなり無理矢理感があるが。


2015-12-18 (Fri)

gawkでbignum

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版とほとんど同じ。


2015-12-19 (Sat)

「Firefoxでの使用が検証できないため無効化されています」をなんとかする

アドオン/拡張機能への署名によると、43ならabout:configで
xpinstall.signatures.requiredをfalseにすれば無理矢理使えるようにはできる。
44からはこれも使えなくなるけど、それまでには署名されるかな。


<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!