この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。
xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法やインストールメモやXREA + tDiary + Namazuをどうぞ。
nadoka の開発用レポジトリを rubyforge の svn から github の organization に移行しました。
まず organization account 用のメールアドレスを用意してから、 https://github.com/blog/674-introducing-organizations の下の方の「Create a new organization now!」から作成しました。
https://github.com/organizations/new で Organization Name は nadoka で Organization Email に先程作成しておいたメールアドレスを入れて Choose the organization’s plan は Open Source ($0/month) にしました。
次に svn から git への変換をしました。 http://progit.org/book/ja/ch8-2.html を参考にしました。
すでに git-svn を使っていたので、コミットしたメンバーを調べてみると 3 名でした。
% git shortlog -sn
163 ko1
76 znz
3 naruse
1 (no author)
次に試行錯誤しやすいようにローカルに svnsync でミラーしました。 以下のシェルスクリプトを2回実行してミラーしました。
% cat svnsync-nadoka-repos-mirror.sh
#!/bin/sh
set -ex
cd $(dirname $0)
DIR=$(pwd)
REPODIR=$DIR/nadoka-repos-mirror
if [ -d "$REPODIR" ]; then
svnsync synchronize "file://$REPODIR"
else
svnadmin create "$REPODIR"
echo '#!/bin/sh' >"$REPODIR/hooks/pre-revprop-change"
echo 'exit 0' >>"$REPODIR/hooks/pre-revprop-change"
chmod +x "$REPODIR/hooks/pre-revprop-change"
svnsync init "file://$REPODIR" svn+ssh://rubyforge.org/var/svn/nadoka
fi
最初に no author は放置して変換できないか試してみました。
% cat nadoka.svn.authors ko1 = ko1 <ko1@atdot.net> znz = Kazuhiro NISHIYAMA <zn@mbf.nifty.com> naruse = NARUSE, Yui <naruse@airemix.jp> % git svn --authors-file=nadoka.svn.authors clone file://$REPODIR nadoka-git-svn
「Author: (no author) not defined in nadoka.svn.authors file」で止まってしまいました。 no author はコミットされた時期から考えて ko1 に割り当てれば良いとわかったので、そうしました。 「-s」も忘れていたので付け足しました。 Pro Git を参考にして「--no-metadata」も付け足して、変換後のタグやブランチの移動などもしました。
% cat nadoka.svn.authors ko1 = ko1 <ko1@atdot.net> znz = Kazuhiro NISHIYAMA <zn@mbf.nifty.com> naruse = NARUSE, Yui <naruse@airemix.jp> (no author) = ko1 <ko1@atdot.net> % git svn clone --authors-file=nadoka.svn.authors --no-metadata -s file://$REPODIR nadoka-git-svn % cd nadoka-git-svn % cp -vRf .git/refs/remotes/tags/* .git/refs/tags/ % rm -Rf .git/refs/remotes/tags % cp -vRf .git/refs/remotes/* .git/refs/heads/ % rm -Rf .git/refs/remotes
この状態で git log や git tag などを見て問題がなさそうなのを確認しました。
次に github のレポジトリを作成しました。 https://github.com/organizations/nadoka/repositories/new で Project Name は nadoka にして Description と Homepage URL は rubyforge を参考にして設定しました。
リモートレポジトリができたところで最初の push をしました。
master ブランチと同じ内容の trunk ブランチが出来てしまっていましたが、 git では不要と考えて master と同じなのを確認して削除しました。
push が出来るメンバーを設定するために Developers team を作成して member と repo を追加しました。
2011-10-29 追記: タグが push できていなかったので「git push --tags」もしました。
日記のタイトルに<script>alert(document.cookie)</script>が含まれると? という話ですが、どっちにしても元でエスケープしていたものがエスケープ解除されているのはバグと言える気がします。
追記: Google Reader で確認したら読めました。
32 ビットの Debian lenny の環境から 64 ビットの Debian squeeze の環境への移行した。
事前に調べた感じでは gdbm ファイルの互換性がないらしく、そのままコピーではダメそうだったので、一度 raw.gdbm の中身をファイルに出力して、それを bin/entry --ml=mlname で取り込み直すという方法で移行することにした。
ファイルにダンプするのは簡単に書いた以下のスクリプトを使った。 最初は exit のところを有効にして 1 ファイルでちゃんと出力されるかを確認してから全体を出力した。
% cat w3ml-dump-raw.rb
require 'gdbm'
GDBM.open('raw.gdbm', 0644, GDBM::READER) do |r_dbm|
r_dbm.each_pair do |key, value|
filename = "%05d.eml" % key
open(filename, "wb") do |f|
f.write Marshal.load(value)
end
#exit
end
end
今回は事前に gihyo.jp の連載 の連載を見たり、LL Blog をチェックしていたので、チケットを忘れていないか何度もしっかりチェックしたり、会場ではテザリングは自重したりした。
早めに会場に到着したので、少し待っていたら10時になって入場できた。
今回の再入場の目印は節電などの影響を考慮して、うちわということだったが、ちょうど数日前の雨以降気温が下がっていて、あまり必要ではなくなっていたので、微妙な感じになってしまっていた。
メタプログラミングの話は、各言語によってメタプログラミングと言える部分が違っていて、認識の共有が難しそうな感じだった。 でも、共通して言えそうなことは、普通のプログラム中では使うべきではなくて、 Rails のようなライブラリの実装に必要なときだけ使うべきという感じに思えた。
昼休みは一般参加者に知りあいがいなさそうだったので、軽くすませて本を見たりしていた。 昼休み以外の休み時間も含めて、わりと暇だったが、スタッフには知りあいがいたので、ちょっと話をしたり本を見たりしていた。
基調講演はいろいろとおもしろかった。
Node.js とかイベント駆動型プログラミングについてはあまり扱ったことがなかったので、おもしろかった。
JavaScript八面六臂については、JavaScript ばっかりでどれがどのプログラムの話だったかよくわからなくなってしまった。
IPv6 ハッカソンは PHP の filter_var とか IPv6 の Any-IP とかいくつか気になるものがあったので、後で調べておこうと思った。
LT については、最初の発表のゲームが気になったけど、会場だとバッテリー切れが気になるので、帰ってからまたやってみようと思った。 新しい言語を作ったとか、高速化とかの話はおもしろいと思うけど、そんなには興味がないので、まあそれなりだった。
最後の抽選では、確率が高かったこともあって、ボールは拾えて、実践 DNS の本が当たった。 気にはなっていたけど、他の本を読んでいたら読む暇がないかなと思ってまだ買っていない本だったので、非常に良かった。
毎回恒例のエンディングのビデオを流し始めたタイミングで無線 LAN のアクセスポイントが撤去されてしまったらしく、ネットワークが切れてしまったので、本を貰って帰った。
他の人の感想などを見て思い出してきたので追記。
sora_h さんの声変わりは以前に何かの ustream 中継を見ていたときに思ったので、今回は変わってないなあと思った。 見た目もちょっと大人っぽくなってるかなと思っていたけど、そんなことはなかった。 あの発表は資料が少なかったのならあきらめて、もう一度始めからとか言わずに、質疑応答の時間たっぷりで良かったんじゃないかと思った。
yhara さんの言っていた他人の作ったもので発表しても良いっていうのは、昔 (ささださんの作った) nadoka さんで発表したのを思い出した。
shugo さんの発表にあった問題は irb でカンニングしてしまったために不正解扱いにした。2問目の方はひっかかったことがあって覚えていたので、簡単にわかったのに。
takaokouji さんの発表の絵のことについて質疑応答のところで質問してみようかと思ったら時間がなくて無理だったので、後できいた。
shelter とかあのあたりの機能は、現状の module が名前空間と実装の include や extend の機能を兼ねていて複雑なのがさらに複雑になるので、なかなか入らないか、入ってもなかなか使われない気がする。
kosaki さんの発表は非常にわかりやすくて良かった。 NUMA と呼ばれる環境があるのは知っていたけど、どういう問題があるのかとか知らなかったので、勉強になった。 (2011-07-21 追記: Ruby でおきていた問題自体は NUMA は関係なくてマルチコアだかららしい)