二重connect
Kamaitachi入門(その4) - ダウンロードたけし(寅年)の日記
なのでconnectについてはKamaitachi側ではon_connectとon_invoke_connectの2つをdispatchしていることになりますね。なんで2重に待ち構えるような構成にしてるんだろ?なにか意味があるような気がしますが、よくわかりません。
on_connect
はTCP接続確立時のハンドラ、on_invoke_connect
は他の関数呼び出しと同様 Flash Player から connect 関数がよばれたときに呼ばれるハンドラです。
RTMP は正直なんでこうなんだろーっていう理解不能な仕様が結構ありますのでサーバー実装だけみてると結構混乱すると思います。
クライアント側も参照すると多少マシになります。
いまは Flex SDK を使用すればフリーで as3 な swf をつくることができますので、RTMP 実装で学ぶ as3 入門というのはどうでしょうか。
あ、wonderfl もオススメですよ。
CarbonEmacs + CodingFontTobi
フォント設定もさらしておく。
`~/.emacs.d/conf/carbon-emacs-05font.el
;; i <3 bitmap font
(setq mac-allow-anti-aliasing nil)
(create-fontset-from-fontset-spec
(concat
"-*-fixed-medium-r-normal--10-*-*-*-*-*-fontset-tobi"
",ascii:-apple-codingfonttobi-medium-r-normal--16-120-72-72-m-120-*-*"
",japanese-jisx0208:-apple-osaka-*"
",katakana-jisx0201:-apple-osaka-*"))
(create-fontset-from-fontset-spec
(concat
"-*-fixed-medium-r-normal--10-*-*-*-*-*-fontset-proggy"
",ascii:-apple-proggycleanttsz-medium-r-normal--16-120-72-72-m-120-*-*"
",japanese-jisx0208:-apple-osaka-*"
",katakana-jisx0201:-apple-osaka-*"))
(set-default-font "fontset-tobi")
CodingFontTobi と Proggy のフォントセットを定義して気分で使い分けてる。
デフォルトの Monaco+ヒラギノ も捨てがたく、たまに使いたくなったりするのでアンチエイリアスは
;; アンチエイリアストグル
(defun my-mac-toggle-antialias ()
(interactive)
(if mac-allow-anti-aliasing
(setq mac-allow-anti-aliasing nil)
(setq mac-allow-anti-aliasing t)))
こんなんでトグルできるようにしてる。この関数よびだしたあと画面が更新されると反映される。
こういう環境依存のコードは今までは自前で環境見てロードしていたのだけど、id:IMAKADO さんが公開してくれた init-loader 使うと carbon-emacs-*
とか言うファイルは CarbonEmacs の時だけ読む、とかできて便利。
CarbonEmacsを使ってみる
先週 id:IMAKADO さんにあって、emacs
使いこなしててかっこよかったので影響されて僕も GUI な emacs が使いたくなったのでこの間書いた Cocoa Emacs を使い出そうとしたんだけど、なんかどうがんばってもバッファを縦分割したときのボーダーを表示させることが出来ないという理由であきらめた。(フリンジは消したかった)
なので CarbonEmacs を入れた。こっちはなんかボーダー出た。
Cocoa Emacs なら multitty で端末内でファイル開いちゃえばいいんだけど、CarbonEmacs にはそれがないので普通に emacsclient で開き、閉じたら端末にフォーカスが戻るという設定を書いた。
具体的には emacsclient で開いたときは勝手に CarbonEmacs がアクティブになるので、CarbonEmacs 側で閉じたときに端末に戻るように、
;; emacsclientで開いた端末をアクティブにする。とりあえずiTerm決めうち
(add-hook 'server-done-hook
(lambda ()
(do-applescript "tell application \"iTerm\"
activate
end")))
とするだけでOKだった。
TypePad Connect の使い方がわからない
TypePad Connect よさそうなので使ってみようと思ったんだけど、発行されたコード貼り付けてもなんにも出ない。
Firebug でみると embed.js というのが 500 になってるっぽい。なんか手順ちがうのかな、それともサービス側の問題なのかなぁ。
とりあえず、このサイトの既存のコメント欄の下にコード貼り付けてみてあるんだけど、なんにも出てない状況。わかる人教えて!
追記
なんかおかしかったっぽい。直してもらった!
最後のタブ閉じたとき about:blank を開く設定
OSX にしてから Firefox で最後のタブを閉じたときにウィンドウが消えてしまうのが嫌だなーとおもっていたけど、いまふと about:config を close で検索してみたりしたら
browser.tabs.closeWindowWithLastTab
という項目が見つかったので、試しにそれをトグルしてあげたら希望通りの動作になった。
これがしたかった。満足。
outputzのdailyランクをgrowl通知するスクリプト
emacs と irssi で入力した文字数を outputz に投稿してるわけですが、outputz での順位を定期的に通知されたらやる気が出るんじゃないかなーとおもってoutputzでの順位をgrowl通知するスクリプトを書いてみた。
こんな感じになる。
あとはこれを CRON かなんかで回せば OK。
git-svnなgitレポジトリをcloneするの法
git svn clone
は svn ログをたどるためでかい svn レポジトリになるととんでもなく時間がかかります。
なのですでに clone 済みの git レポジトリから clone したら簡単じゃんと思って素直に clone してみたのだけど、そのままじゃうまく clone 出来なかったのでメモ。
こんな感じでやればおk
# とりあえずレポジトリ作る
mkdir test
cd test
git init
# clone
git remote add origin http://co-workers-pc/dev/project/.git
git config --add remote.origin.fetch '+refs/remotes/*:refs/remotes/*'
git fetch
git reset --hard trunk
# git svn の remote を再設定
git svn init -s http://yourrepos/svn/project/
git svn rebase
なんだか手間かかるけど git svn clone
するのと比べると圧倒的に速い。
いきなり clone しないで remote add
して config を追加してあげたあと fetch するのがポイントか。
master を trunk として使わないなら git reset
はいらんかな。あと、svn init
で -s
してないときはそもそも trunk ブランチとかないので注意。
今年も終わりますね
来年もよろしくお願いします。
まとめエントリを書こうと思ったけど、実家のネットが遅すぎて(ISDN!)書く気になれないのでこれにて。ここはssh経由のemacsで書いているのです。
今年末は原点に返ってblosxomをいじっております。
lighttpd 1.4.20 は CGI の STDERR をエラーログに出してくれない。
のでちょっとはまった。なんなんだ。
コードを見るとなぜか /dev/null
にリダイレクトしちゃっている。
ログを追うと、
http://redmine.lighttpd.net/repositories/revision/lighttpd/2163
この変更によるものらしいが、正直何してるのかよくわからない。
とりあえず STDERR が闇に葬られるとか不便すぎるので
diff --git a/src/mod_cgi.c b/src/mod_cgi.c
index 6f27f8b..18f88c2 100644
--- a/src/mod_cgi.c
+++ b/src/mod_cgi.c
@@ -987,8 +987,6 @@ static int cgi_create_env(server *srv, connection *con, plugin_data *p, buffer *
*c = '/';
}
- openDevNull(STDERR_FILENO);
-
/* we don't need the client socket */
for (i = 3; i < 256; i++) {
if (i != srv->errorlog_fd) close(i);
などとしておいた。1.4.x 系では今のところ最新の 1.4.20 だけがこうなってる。
チケット作っとこうとしたらもうあった。
次のバージョンでは直ると良いね。