2008-06-01 [長年日記]
@ [mysql] レプリケーション遅延の秒数を表すSeconds_Behind_Master
今までレプリケーションの遅延をExec_Master_Log_Posを見て一定以上遅れてないかを判定していたのですが、show slave status; して取得できるSeconds_Behind_Masterにはマスタからのレプリケーションの遅れの秒数が入っていて、こっちを見たほうが良さそうなことに気付きました。ちなみにこのフィールド、MySQLのマニュアルを見ると
スレーブ SQL スレッドによって実行された最後のマスタイベントのタイムスタンプから経過した秒数。まだイベントがまったく発生していない場合、あるいは CHANGE MASTER および RESET SLAVE からイベントが発生していない場合は NULL 値となる。このカラムにより、スレーブがどれだけ ``遅い'' かを知ることができる。マスタとスレーブで同一の時計を使用していなくても問題ない。
このフィールドは MySQL 4.1.1 で導入された。
とあり、4.1.1以前ではなかったんですねぇ。
2008-06-17 [長年日記]
@ [book] マンガでわかる統計学
あまり真面目に統計学を学んだことがないのと、仕事で数値を分析したりする際に知識があった方が良いかなと思って買ってみました(会社のお金で...)。
まだ全部読み終わってないのですが、理解が曖昧だった標準偏差や基準化がわかりやすく説明してあり滑らかに頭に入っていきました。また、相関関係を推測するためのテクニックである「検定」など、今までまったく知らなかったものも学べるので統計学初心者にはかなりお奨めです。
2008-06-20 [長年日記]
@ [firefox] 常用しているアドオン
Firefox3がめでたくリリースされました。レンダリング速度、メモリ消費量が2.0に比べて劇的に改善されていてかなり快適です。世の中では自分の使っているアドオンを晒すのがはやっているようなので、自分のメモ用に晒してみます。
- 2008/7/26: Tab Mix PlusとFoxmarksを追加しました。
- 2008/10/19: WebDeveloperとFireMobileSimulatorを追加しました。
- FireGestures
- マウスジェスチャ
- FireBug
- JavaScript、CSSのデバッグの最強ツール
- Ctrl-Tab
- サムネイル形式でタブが切り替えられます。
- Live HTTP Headers
- HTTPヘッダーの調査に使います。
- GreaseMonkey
- ユーザースクリプトを実現するためのエクステンション。AutoPagerizeとLDRizeを使うためにインストールしてます。この2つがあるとlivedoor ReaderのようにキーボードキーだけでWebページをずんずん読み進めることができて非常に快適です!また、ALC Search Popupなんていうものもあります。英単語を選択するとポップアップで意味が出てきます。
- Tab Mix Plus
- タブの操作がデフォルトより快適になります。
- Foxmarks
- Firefoxのブックマークをサーバ上に保存し、異なるマシン間のFirefoxで同期をしてくれるアドオン
- Web Developer
- Cookieを見たりとかHTMLのバリデーションをかけたりとか、Web開発にあるとよいツール。
- FireMobileSimulator
- 日本のケータイ用のUserAgentや端末IDの設定、絵文字の表示などができる素晴らしいアドオンです。
2008-06-22 [長年日記]
@ 自宅サーバのOS入れ替え
ちょっと時間がかかってしまいましたが、この日記のサーバのOSをDebian etchからUbuntu 8.04にしました。このtDiaryを動かしているApacheもmod_fastcgiからmod_fcgid(static link)に変更してみましたので、覚書としてやり方を書いておきます。
apacheとmod_fcgidをダウンロードして解凍します。
$ tar xvzf httpd-2.2.9.tar.gz $ tar xvzf mod_fcgid.2.2.tar.gz $ cp mod_fcgid.2.2 httpd-2.2.9/modules/mod_fcgid/ $ cd httpd-2.2.9 $ sh buildconf $ ./configure --prefix=/usr/local/mod_fcgid \ --with-program-name=mod_fcgid \ --with-mpm=prefork \ --enable-shared \ --enable-so \ --enable-fcgid \ --disable-asis \ --disable-cgid \ --disable-proxy \ --disable-proxy-connect \ --disable-proxy-http \ --disable-proxy-balancer \ --disable-proxy-ftp \ --disable-proxy-ajp \ --disable-userdir \ --enable-modules='cgi' \ --enable-mods-shared='rewrite include host-alias' $ make $ sudo make install
これで /usr/local/mod_fcgid にmod_fcgidがstatic linkされたApacheがインストールされます。あとは下記のようにfcgiの設定をすると、tdiaryをFastCGIで動かすことができます
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
SocketPath /dev/shm/mod_fcgid
IPCConnectTimeout 5
IPCCommTimeout 60
</IfModule>
2008-06-25 [長年日記]
@ [shibuya.pm] Shibuya Perl Mongersテクニカルトーク#9 (XS Nite)に行ってきました
久々にテクニカルトークに行ってきました。レポートというかまとまっていないログと感想ですが、記録のために残しておきます。
- # はじめてのXS (hirose31さん)
- 10分遅れで参加したので最初のほうを聞けなかったのですが、XSだとメモリリークの問題があるよ〜、と言っていました。malloc/freeのように、New〜したものはSafefree()、newSV〜したものはsv_freeをして解放しないと駄目ですよと。プロファイリングにはgprofは使えないのでvalgrindを使うと良いらしいです。最後のdankogaiさんの質問が厳しかったです。
- # Perl 5 Internalsの世界にようこそ (Daisuke Makiさん)
-
- XS / XSUB: CとPerlの橋渡し
- 実装がわかると世界が変わる→パフォーマンスチューニングがしやすくなる
- 基本的な構造体 - SV,AVなどなど
- 何はともあれSV - スカラー値。なんでも入る入れ物
- SVの種類: IV,UV,NV,PV,RVなど
- SVの構造
- ANY:ポインタ
- REFCNT:参照回数
- FLAGS:文字列かどうかなどのフラグ
- SV以外の型 - AV:配列
- Structural Equivalencce
- 構造体内のバイトオフセットを調節することによってC++ライクなキャストができる
- AVのポインタをSVのポインタにキャストするとか
- REFCNT: 参照回数
- SvMAGIC: Perl内部で何かが起こったときに呼ばれるハンドラを登録することができる
- tieの仕組み - tieするとポインタの型が変わる(MAGICが使えるようになる)
- 'ext' MAGIC
- 一部の人に説明しろってYAPCでいわれた。
- しかし当の本人たちはきていないらしいw
- SV操作をいくらCでやっても意味がない。5%ぐらいしか早くならない
- C Library: Cだけでできることをおこなう
- XS: PerlからCを呼ぶため(またはその逆)のアダプタ
- Perl: XSで定義されたAPI
- XS関数処理の流れ: XS関数->xsubpp->Cプリプロ->コンパイル
- XSセクション: xsubppによって展開される
-
Typemap
- Perl <-> C 型の自動変換
- カスタムコードも差し込める!
- Typemapをうまく使えば、XSコードはほぼ消せる
- Typemapの使用例: Text::MeCabなど
- Devel::Peek: REFCNTなどがわかるのでメモリリークも見つけられる
- # Inside Ruby.pm (藤 吾郎さん)
-
- Ruby.pmの機能
- PerlからRubyの機能を呼び出す
- PerlによるRubyの実装ではない
- Rubyソースコードの基礎知識
- VALUE: XSのSVみたいなもの
- Qnil: Ruby上のnil
- Qtrue,Qfalse: Ruby上のtrue,false
- ID: 文字列に対するユニークな整数値
- 以降、えんえんとRuby.pmの実装の説明
- 単純にRubyのメソッドを動かすのであればすごく簡単にできる
- Rubyには例外がありこれを捕捉するのが難しいのでコードが複雑になっている
- Ruby.pm は現状Cygwinでしか動かない
- Ruby.pmの機能
- # Perlマシン(PerlMachine) (wakaponさん)
-
- PerlMachineとは?: 特定のプログラミング言語を専用に動作させることを目的とした計算機
- PerlMachineの構成
- grub: ブートローダ
- microperl: 組み込み用Perl
- newlib: 組み込み用のlibcライブラリ
- FatFS: 汎用FAT
- Lightning Talks
-
- autobox internals (tokuhiromさん)
- "foo"->length: Syntax上は問題ないがRuntime Errorになる
- →autoboxはVMをハックして実現している。変態的。
- PL_check hacks (yappoさん)
- PL_checkとは?:関数のフックテーブル
- arguments::callee (takesakoさん)
- my $f = sub { $f->(); } がPerlだとできないという問題があったのでarguments::callee を作った
- xs on mod_perl (stanakaさん)
- mod_perlでプログラムを実行中に問題があったときにgdbで原因を調べる
- Abstract Script Engine (higuchiさん)
- 各種スクリプト言語やランタイムを混ぜて使える環境
- Unix,WIndowsで動作
- スクリプト言語
- Perl5VM Golf (tokuhiromさん)
- 1000opを目指す短いコードの数々w
- ループは大量のopコードを生成してくれる
- autobox internals (tokuhiromさん)
全体的にPerlの話というよりかはCとPerlをうまく組み合わせてどうこうするという話だったので、Cを忘れかけている自分にはやや辛い内容でした。ただ、こういう話を聞かないとずっとPerlばっかりでXS使おうとか思わないので、そういう点ではいい内容だったと思います。ちなみにdankogaiさんが異様に突っ込みを入れていたのが一番印象に残りました。あれぐらいの規模だと話中に突っ込んじゃうのですねぇ。
2008-06-29 [長年日記]
@ [emacs][tokyo-emacs] tokyo-emacsに参加してきました
hayamizさん主催のemacsの勉強会に行ってきました。emacsって息は長いけどこういう表立った集会は初めてだった気がします。とても新鮮でした。また、会場のMiracle Linuxのセミナールームは電源もあり非常によいところでした。ちょっと早くついてしまったのですが、アイスブレイク的に自己紹介をやろうということで早く行ってよかったです。思った以上に若い人(学生さん)が多くてびっくりです。
ちなみに懇親会にも行ったのですが、普通であれば話すことのない86世代の方々や吉岡さんと話せてとてもよい刺激になりました。ぜひ#x02も参加したいと思います。皆さんお疲れ様でした!
- 何年もemacsを使っているけど使いこなせている感じがしない
- emacsの基本を勉強しなおそう市民連合発足
- 勉強会のススメ
- IT勉強会カレンダーをみれば山のように勉強会がある
- 勉強会はブログでレポートを書くまでが勉強会
- 想定ターゲット: ネット上に転がっている.emacsをコピペしているような人たち
- Lesson1: Emacs Lispは怖くない
- Lisp的な難しいものはEmacs Lispには全部ないよ
- 継続とか末尾再帰とか
- Lesson2: カッコは空気w
- 括弧:見た目が馴染みの言語と違う
- Emacs Lisp: 括弧を除いたら普通の言語。C言語のように考えよう
- Lesson3: EmacsのことはEmacsに聞け
- M-x describe-bindingsでキーバインドがわかる
- C-h fで関数の説明が出る
- apropos系コマンド:いろんな項目の部分一致検索
- Lesson4: Lispは単純
- (<何か> <引数1> <引数2>...)→普通のプログラムだと <何か>(<引数1>,<引数2>, ...)
- letは代入。while:ループ、if:条件みたいな感じ
- macroと関数の違いは?:macroはCのマクロみたいなもの。文法を自分で拡張することができる
- .emacs分ける派?分けない派?
- 20個以上に分ける派:二人ぐらい
- Lesson5: List
- いろんな表現ができる
- '(1 2 3)
- (list 1 2 3)
- (cons 1 '(2 3))
- (cons 1 (cons 2 (cons3 ())))
- よくあるidiom
- (setq load-path (cons "/home" load-path)
- → load-pathに"/home"を追加
- → add-to-listの方がよい
- ドット対
- 連想リスト(alist): key, valueのペアのリスト
- ペア=ドット対をリストにすればいいじゃん
- (setq auto-mode-alist (cons '("\\.rb$" . ruby-mode) auto-mode-alist))
- Q.デバッグはどうやるの?
- (prin1-to-string)
- message関数を使うとメッセージバッファに出力される
- まとめ
- Lesson1〜5までのことがわかれば.emacsは読める!
- わからない関数があればhelpを見ればわかる
- 実際に.emacsを眺めてみよう
- (setq debug-on-error t):落ちたときにデバッガが起動される
- x-display-list: X経由で起動しているかわかる
- browse-url-browser-function
- skk-show-tooltip: 変換候補をツールティップ的に表示
- sdic: 辞書
- defun upcase-backward-sexp:直前のS式をすべて大文字にする関数
- defun shellモード→ansi-termというShellモードのいい版もあるよ
- もっとEmacsを勉強したい
- Emacs Lisp以外のLispを勉強しましょうw
- Emacs Lispはクソです。
- Schemeを勉強するとよいです
- もうひとつのScheme入門(Web)
- 独習Scheme三週間(Web)
- プログラミングGauche(書籍)
- いろんな表現ができる
- 標準添付のelispはドキュメントが充実している
- ソース(実装)の前にドキュメントを読もう
- ソースを読んでいくと、C-x C-f *.elでファイルが開けることを知った(これは知らなかった!)
- interpreter-mode-alist:shebangをみてメジャーモードを判断する
- moz.el
- Firefoxの遠隔対話的操作がEmacsからできる
- .htmlや.jsファイルを保存したときに自動でブラウザをリロード、みたいなこともできる
- pabbrev.pl
- いわゆるテキスト補完
- 動的に略語を登録し動的に略語を表示する
- アイドリング中に単語を収集(自動)
- drill-instructor.el(鬼軍曹.el)
- 不便ですw
- 小指が痛くなりますw
- マイナーモードを作るにはよいサンプル
- sense-region.el
- 矩形選択をよりやりやすくする
- "once"と入力するとCのインクルードガードが!すごい!
- snippetを登録して呼び出す仕組み
- snippet.elだとコードテンプレートの記述がS式のみで使いにくい
- yasnippet.elはもうちょっと記述方法が楽
- codereposでsnippetが公開されている
- 存在意義:faceをいちいち手で設定するのが面倒
- Themeえらびのtips:Themeテストのページがある
- Emacsは忘れたほうがいい→すいません、忘れません
- perl-completion.el を作ったりしています
- anythingはフレームワーク
- perl-completion.elもanything.elのインタフェースを使っている→補完がすごい
@ yatex.el+reftex.el(Mishoさん)
yatexの補完、プレビュー
- pdic-mode
- .emacs晒し