CouchConf Tokyo参加。¶
朝からCouchConf Tokyoに参加してきました。
参加者50人いれば多い方だなぁと思って行ってみたら、意外にも100人くらいの参加者で満席でした。エンジニア向けのカンファレンスでしたが、スーツの方もちらほら。通常のカンファレンスよりも、かなり外国人の方の割合が高く、Couchbaseの中の人を除いても2割強くらいいました。やはり海外では注目されているんだなぁと実感しました。
管理コンソール凄い!¶
興味を特に持ったのは二つ。管理コンソールとMobile Syncpoint。前者は最初、Futonの拡張くらいかなぁと思っていたら大違いで、Futonでできることはもちろん、ノードの追加、リバランス、データセンター間レプリケーションの設定といった操作に加え、80種類もの統計情報をグラフ化してくれるという。バックアップやバージョンアップもリバランスで外してできるので、至れり尽くせりな印象ですね。ちなみに情報の取得や操作は全てREST API経由で行っているので、スクリプトベースで自動化しようと思えばできるとのこと。
Mobile Syncpoint熱い!¶
後者のMobile SyncpointはデバイスにCouchbase Serverとのレプリケーションを実現する、というところは以前公開されたCouchDB for Androidでも出来たことですが、パブリック向け、シングルユーザーで利用、マルチユーザー向け、などのいろんなレプリケーションの方法をChannelによりも実現し、受け取り側のユーザーはあくまで自身のinboxを見るだけ、という仕組みを提供するらしい。データの制御はデバイス側で行い、受信側は自分のinboxを見るだけなので複雑なセキュリティモデルが不要になるそうです。データストアは以前のようにSDカード領域にCouchDBまるごとインストールしてそこから起動するからI/O遅くて使い物にならん、ということはなく、SQLiteとJavaでネイティブアプリに書き換えたので問題ないよ、とのこと 1 。OSSで公開しているそうなので、試して遊んでみようと思います。
Chris氏!¶
懇親会ではChris氏と挨拶して、少しお話出来たので行けて本当に良かったです。彼がメンテナンスもしているCouchAppは今後もちゃんとメンテナンスされるそうです。良かった良かった。
立ち上げ!¶
あと昨日急遽、 Couchbase JP の立ち上げが決まったそうです。CouchDBをサーバで使うにはまだ様子見だなぁと思っていた方や、サーバだけでなくモバイルデバイスまで一気通貫でやりたいと思っている人は参加してみると良いのではないでしょうか。
あざす!¶
面白い話をしてくださったCouchbaseの皆さん、河村さんをはじめとするスタッフの皆さん、ありがとうございました。河村さんは特にお疲れでした。
- 1
iOS版はObjectiveC+なんでしょうかね。
unified 形式のpatchファイルを修正する。¶
要約すると、unified形式のdiffの出力する、hunkごとの数字の意味をきちんと理解してなかったので苦労したよ、という話です。
経緯¶
あるOSSでバグがあるのでpatch作って、git format-patchで投げてやろうと、developブランチをベースにしたトピックブランチでpatchを作成していました。ただ、実際にプロダクション環境で使うのはmasterブランチです。masterにbackportして実際に動作させてテストするのに、手元の開発環境からとりpatchだけ生成して、検証環境にパッチだけscpしてやり適用した際のお話。
適用に失敗したhunkの内容。¶
hunk単位ではちゃんと適用できるものと、失敗するものとがあったので、コードを比べてみたら、一つは変更途中に一行だけmasterブランチに存在しないコードがpatchには存在していました。もう一つは、同じファイルの一番最後に追加した変更だったのですが、masterとdevelop ブランチとで明らかに行数が違っていました。masterブランチのHEADからdevelopブランチのHEADのコミットの差は、ちょうどそのファイルに対する変更だったようです。
一つ目のhunkの修正。¶
とりあえず、適用に失敗した一つ目のhunkは、開始位置は変わっていなかったので、対象範囲の行数を-1することで適用出来ました。
二つ目のhunkの修正。¶
問題は二つ目です。開始位置がそもそも全然違うので、masterブランチの方で該当する位置の行数を確認します。変更内容自体は追加だけだったので、変更前後のhunkの行数は変わらないのに、その意味を理解してなかったので、範囲指定の行数を闇雲に変更してしまい、”malformed patch”でエラーを何度も吐いていた、という次第です。
まとめ。¶
今までその辺ちゃんと勉強せずにきたので、理解できてちょうど良かったですが、こういう基本的なことで理解してないことはまだまだ沢山あるなぁ、と反省した帰り途。
雪で筋肉痛。¶
この二日間、久々にスキーに行く時にしか履かないブーツ履いて、滑らないように気をつけて歩いていたせいか、太腿が若干筋肉痛になりました。ちょっと運動しなさ過ぎです、ワシ…。そろそろジム通いを再開しないとなぁ、という感じです。
warning混ぜると危険。¶
今回記録しておくのは、仕事で使用しているストレージのモニタリングツール(non free)で遭遇した世にも恐ろしい事象です。
ストレージのファームウェアアップデートに伴い、モニタリングツールも依存関係でアップデートした際、ストレージからsyslog経由で受け取ったログを表示するログビューワに、『ストレージ側でsyslogの設定がされてないかポートブロックしてねぇか確認しやがれ、コンニャロめ!』(超意訳)と表示されました。おかしい。アップデートのバグで設定が変更されてしまったのだろうか…、いや変更されてない。再設定すれば直るだろうか…、ダメだ。ドキュメントには特にそんな記載ないし、ソースコードは無論公開されてない。
仕方ないのでサポートに問い合わせしたのですが、サポート側でも再現せず、いろいろ提案された方法試してもダメ。さて困ったなぁと思って、何気なく表示時間帯の範囲指定を変えたら過去ログが表示されるではないですか。まさかと思い、syslogのpriorityを変えてみたら、表示されるではないですか…。アホやワシ…。
とはいえ、表示されるwarningが未設定状態の時と全く同じなのは良くない、エラーの元です。ということで、サポートの方に改善要望を伝えておきました。サポート側で気づかなかったのは、きっと普段からinfoレベルでログ飛ばすようにしてるから、モニタリングツールにログが表示されない時間帯は無かったのでしょうね…。
結論¶
混ぜるな危険!
non freeなソフトウェアは辛いすな…。(モチベーション的な意味で)
git-buildpackageで作成したソースパッケージがアップロードされない。¶
git-buildpackageを使って作成したソースパッケージを、mentors.debian.netにdputするとコマンド自体ではうまく行っているようなのですが、実際にはアップロード完了のメールがこないし、mentors上のステータスも変わりません。なんか手順が間違っているんだろうなぁ…。時間があるときに マニュアル を読んでみることにします。