ifttt の maker channel から irkit の api に request を投げる

  • url: https://api.getirkit.com/1/messages
  • method: post
  • content type: application/x-www-form-urlencoded
  • body: clientkey=xxx&deviceid=xxx&message={"format":"raw","freq":...,"data":[....]}

こんな感じで ifttt の maker channel を action として設定すると irkit の操作が出来るので便利そう。 request を受け付けることも出来るのでもうちょっと違うものと繋げることも出来るのかもしれない。

https://dl.dropbox.com/s/zzxo84onn2v5037/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202015-06-23%2012.35.41.png

なので IFTTT/IRKit Integration のような wordpress hack はしなくてよさそうということになった。

go で雑に mysql の schema をパースして雑に2つの schema から差分を埋める sql を生成する

先日たまたま Lexical Scanning in Go, Handwritten Parsers & Lexers in Go という記事を見つけ面白そうだなと思ったので自分でも何かパースしてみるかという気持ちになった。

ただパースしたいものが特になかったのでなんとなく mysqlスキーマをパースしてみるかという気持ちになって

github.com

こういうものを書いてみた。が、思ってた以上に mysql の schema が省略とかが可能でめんどくさくなったのでなんとなく動く感じのところで一旦辞めた。なので雑にパースするということになってる。

一応雑にパース出来るようになったので雑に diff も生成するようにし、gitddl 的なのも一応

github.com

こういう感じで書いた。

mysqld を使ったテストの際に test database がなくてハマった

go で perl でいう test::mysqld のようにテスト用の mysqld プロセスを立てるには github.com/lestrrat/go-test-mysqld を使っている。

しかし、手元だと走るテストが wercker で実行すると test database がないと言われてどうしたものかと思ったら

http://changelogs.ubuntu.com/changelogs/pool/main/m/mysql-5.5/mysql-5.5_5.5.37-0ubuntu0.12.04.1/changelog

こういうことらしく test という名前の database が作られなくなっていた。なので

func TestHoge(t *testing.T) {
    mysqld, err := mysqltest.NewMysqld(nil)
    if err != nil {
        t.Fatal(err)
    }
    defer mysqld.Stop()

    db, err := sql.Open("mysql", fmt.Sprintf("root:@%s/", mysqld.ConnectString(0)))
    if err != nil {
        t.Fatal(err)
    }
    defer db.Close()

    if _, err := db.Exec("CREATE DATABASE IF NOT EXISTS `test`"); err != nil {
        t.Fatal(err)
    }

    if _, err := db.Exec("USE `test`"); err != nil {
        t.Fatal(err)
    }

        .....

こういう感じで database 名を指定せずにつないで test という名前の database を作るようにした。

inFAMOUS Second Son

割りとすぐクリアした。 死んだ時によくわからないけど話進んでるみたいなのがあって困惑した。