イミテーション・ゲーム/エニグマと天才数学者の秘密

2014(5?)年の映画。Amazon Primeで視聴。なかなか面白かった。
ドイツのエニグマ暗号は、セッティングだけで159x10**18あるため、人による作業では解読できない。そこで、解読するための機械を作るという話。 クロスワードで人員募集、暗号解読の瞬間、MI6とロシアスパイとの関係、解読後にドイツに悟られることのないように統計を用いた話などとても面白かったです。
エニグマ解読は、戦争の終結を2年以上早め、1400万人以上の命を救ったと言われているということがエンドロール前に表示されます。すごい時代だったんだと、これらが事実に基づいた話だったんだというのが頭に残ります。

好きなセリフ

何度か登場するこの言い回し。
アランとジョーン(キーラ・ナイトレイ)で若干セリフが違うように聞こえるのですが、まぁほぼ同じです。

Sometimes it is the (very) people (who) no one imagine anything
 of who do the things no one can imagine.
時として誰も想像しないような人物が想像できない偉業を成し遂げる

tsvを mask するスクリプト(勝手にリファクタリング)

はじめて触ったRubyでTSVをマスキング処理。 | Developers.IO
を見ていて、(初めてという記載があるので、全然致し方ないと思います。斧投げてるつもりは全くないです。頑張って欲しいです。)全然rubyっぽくないscriptだったので、反射的にリファクタしてみました。
 

  • 色々問題あり(ここはruby関係ないですが、スコープが大きい、メソッドがない、変数名が微妙など)
  • eachが使われていない(headerとdata部分を分けて扱うことを検討した結果、forを利用しているようですが、基本for無しでいけます。)
  • 元の書き方ではoutputのclose処理が不要

やってみた

class MaskingTsvFile
  OUTPUT = "masked.tsv"

  def exec(input_file)
    lines = open(input_file).readlines.map(&:chomp)
    out = open(OUTPUT, "w")
    out.puts lines[0]
    lines.shift

    lines.each do |line|
      fields = line.split("\t")
      masked_fields = fields[0...-1].push(mask(fields.last))
      out.puts masked_fields.join("\t")
    end
    out.close
  end

  private
    def mask(unmasked_val)
      vals = unmasked_val.split("-")
      vals.map!.with_index do |val, i|
        (i != vals.size - 1) ? "*" * val.size : val
      end
      vals.join("-")
    end
end

if $0 == __FILE__
  MaskingTsvFile.new.exec(ARGV[0])
end

Macに関西弁でトランプ大統領就任演説を喋ってもらう

トランプ大統領就任演説 関西弁訳 全文 - ベンチャー役員三界に家なし

を読んでいて、読むのが面倒だなぁと思ったので、音声合成APIとか試していたのですが
量が多いとうまく動作しなかったりしたので、MacのOtoyaさんに読んでもらいました。 
 
もう少し精度上がって欲しいという印象ですが、モヤさまっぽい感じで楽しめました。
速度調節ができるのも良いです。
 

設定方法

System Preferences > Accessibility > Speech
f:id:rochefort:20170205173313p:plain
 
ブラウザで選択してStart Speekingするだけ。 f:id:rochefort:20170205173402p:plain