つれづれ日記 2010年7月

予定

毎日


2010年7月31日 (土曜日)

10:45:03 # Life 久しぶりにtex4htを使ってみる。 tex4ht は latex のドキュメントをHTMLに変換するもの。一旦latexにDVIファイルを生成させてから処理する仕組み。 Debian勉強会資料はこのツールを使ってHTMLでも公開しているんだけれども、最近スクリプトを実行していなかったので数年前の資料しか公開されていなかったのが現状でした。 ということで久しぶりにスクリプトを実行してみました。 tokyodebian.git の publish-html.sh スクリプト。 ずいぶん放置していたわりにはそれなりにちゃんと動いているっぽい。 jpgファイルが./debianmeeting1.jpgとかになっているので同じ名前のファイルがあると衝突するなぁ、とおもいながらもとりあえず一通り実行してみてから問題を洗いだしてみます。 普段はplatexを使っているのだけれどもptexはdvi形式に手を入れているのでtex4ht がそのdviファイルを処理できない、ということでplatexの出力をdvi2dviを使って あらためてjlatexの出力に変換してたり、 tex4htが日本語の漢字とひらがなのくぎりとかにやたらと空白を入れたがるのでそれをあとでsedで削除していたりとかなんかあやしいworkaroundをしています。

2010年7月17日 (土曜日)

13:25:44 # Life Debian勉強会予約システム利用者の脆弱性について。 Appengineにログインしていない状態で 東京エリアDebian勉強会の予約ページを見ると、iframeでAppEngine にログインするようにと促す画面が出ます。 iframeの中でログインすることになります。 もちろん、ITリテラシーの高いDebian勉強会の参加者はiframeの中のURLを確認し、Googleアカウントのパスワードを入力してよいかどうかを確認してから 参加することを常識としてらっしゃるでしょう。たまにトラップで違うドメインにパスワードを飛ばされてないとも限りません。 しかし右クリックを毎回するのも面倒な手続きで、飽きてきたので挙動をかえてみました。 ログイン状態にない場合は、iframeの外でログイン画面に入れるようにしてみました。 変更点としては、/eventを/eventsimple に変更して、eventsimple はlogin: required でなくして、 自前でtarget を指定して飛ぶようにしています。 いやしかしこのデフォルトはいかんだろう。login: required のページを iframe の中でご利用の方はご注意ください、ということで。 ひょっとしてなんかオプションがあるのかもしれませんが調査してませんです。

2010年7月12日 (月曜日)

21:24:52 # Life vector bool は bit vector なんだろうか。 ふと疑問に思ったので確かめようかとおもって適当にコードを書いてコンパイルしてデバッガにかけてみた。 手元にはg++ (Debian 4.3.2-1.1) 4.3.2M-x gdb してからソースコードの当該の行でM-x gud-breakして、gdb のプロンプトからrun。 disassembleの出力をc++filtしてみたら、 vector::operator[](unsigned int)に対して std::_Bit_reference::operator=(bool)というのが呼ばれているようだ。 /usr/include/c++/4.3/bits/stl_bvector.hあたりをながめてみるにビットマスク演算とかしてるっぽいところをつきつめたところで満足。

(gdb) info program
Using the running image of child process 3401.
Program stopped at 0x80488d5.
It stopped at breakpoint 1.
(gdb) disassemble
.
.

	

22:03:17 # Life 東京エリアDebian勉強会キャンセル。 夏の始まりの三連休の初日に会議室でDebianについてむさくるしく語ることはないだろう、ということで今月はまだ参加表明している人が一人しかいないので、キャンセルしてみることに。 海だよ海。

22:16:39 # Life realloc. メモリをmallocで確保して、reallocでリサイズしてget()でアクセスできる、スマート?なポインタを実装してみた。 しかしこれを使えるSTLを実装するにするにはどうしたらよいものか。

2010年7月11日 (日曜日)

18:40:15 # Life STLのmanpage. よいやつを探しているのだが、stl-manualにあるHTMLのが一番よいきがする。 libstdc++6-4.3-doc にあるのは自動生成doxygen な香りがしてあまりつかいやすくない。

2010年7月8日 (木曜日)

07:38:35 # Life stl. よくわかっていないので、algorithm.h について勉強してみた。 そういえばmem_fun_ref ! mem_fun_ref!ってH庄さんが温泉で騒いでいたのが 思い出される。よくわかってなかったですごめんなさい。 しかしなんというか、はやくlambdaこい、という感じではある。 しらべてみるとlamba が くるのは gcc 4.5かぁ。

Debian sid のgcc-snapshotパッケージはgcc 4.5らしい。 LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib PATH=/usr/lib/gcc-snapshot/bin/:${PATH} ./for_each_lambda.cc hello world な感じで実行してみた。

/*BINFMTCXX: -std=gnu++0x

PATH=/usr/lib/gcc-snapshot/bin/:${PATH} ./for_each_lambda.cc

An example code to use lambda
 */
#include <algorithm>
#include <string>
#include <vector>
#include <iostream>

using namespace std;

int main(int argc, char **argv) {
  vector<string> command;
  for (int i = 0; i < argc; ++i) {
    command.push_back(argv[i]);
  }

  for_each(command.begin(), command.end(),
	   [](const string& s) {
	     cout << s << endl;
	   });
}
	

2010年7月3日 (土曜日)

23:07:03 # Life c++filt. gcc は -S をつけるとアセンブラ出力を出してくれます。Cの場合は理解可能な出力を出すのですが、c++ のソースコードの場合には名前がmanglingされていてかなり理解不可能です。 そこでc++filtというツールを使います。 manglingを解除してくれるものです。 g++ -S hoge.cc -o - | c++filt という感じで使えば大丈夫。


Junichi Uekawa

$Id: 201007.html.ja,v 1.11 2010/07/31 02:58:50 dancer Exp $