Swift っぽい UserDefaults

Swift 3 の Notification

Swift 3 から Notification.Name 型が追加され、Notification の名前に生の文字列ではなく Notification.Name 型の値を指定できるようになった。

extension Notification.Name {
    static let userLoggedOut = Notification.Name("UserLoggedOut")
}
let n = Notification(name: .userLoggedOut, object: nil)

参考: Swift 3 以降の NotificationCenter の正しい使い方

Swift っぽい UserDefaults

UserDefaults のキーはまだ生の文字列を使っているけど、新しい Notification のようなインターフェイスで扱えたらうれしいなと思って薄いライブラリを書いた。

github.com

続きを読む

遺伝的アルゴリズムでやっていく Mario AI Competition 2009

この記事は CAMPHOR- Advent Calendar 2016 19日目の記事です。

Mario AI Competition 2009 とは

Mario AI Competition 2009Sergey KarakovskiyJulian Togelius という研究者の方が主催していたらしい大会で、スーパーマリオブラザーズ(を模したゲーム)を自動操作する AI を作ってスコアを競うというもの。スーパーマリオランではありません。

続きを読む

Xcode プロジェクトをシュッと開く Alfred Workflow

中で mdfind を叩いて *.xcworkspace *.playground *.xcodeproj を検索し、選択したファイルを Xcode で開く Workflow です。

iOS 開発者の方には最高便利だと思うのでお使いください。

Download

f:id:morishin127:20160910234218p:plain

Docker と nginx-proxy で自分だけの nbviewer をシュッと立ち上げる

jupyter notebook を他人と共有したい時には nbviewer が便利ですよね。公式のページ もあるのですが簡単に Docker でドーンできるようなので自分のを作ってみました。

  1. お使いの DNS の設定で Docker ホストの IP アドレスに対し nbviewer.example.com 的なレコードを設定する。
  2. 公式の README 通りに nginx-proxy を立ち上げる
    $ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
  3. VIRTUAL_HOSTドメインを指定して nbviewer を立ち上げる
    $ docker run -d -e VIRTUAL_HOST=nbviewer.example.com -e GITHUB_API_TOKEN=<YOUR_API_TOKEN> jupyter/nbviewer
  4. ブラウザから http://nbviewer.example.com を開く。

以上です。nginx-proxy すごい。

Haskell でマルコフ連鎖を用いたポエムの自動生成

poem-generator

Haskell の勉強のためにポエムを自動生成するプログラムを書いてみました。
初めて書いた Haskell のプログラムなので拙いコードだと思いますが、どう実装したかを記事にしておこうと思います。

リポジトリはこちらです。

続きを読む