Myページ
ホーム
コミュニティの人々
ソフトウェア
技術紹介
適用分野
Tyzohとは
ご意見お問い合わせ

kkatoのブログ

2008年4月アーカイブ

PHPは嫌いですが

ギークなお姉さんは好きです。

ギークなお姉さんは好きですか

この人、PHPプログラマーのようなので。
一応フォロー。

kkato (2008-04-28 11:09) | コメント(0)| トラックバック(0)

今度はVista+PostgreSQLでハマった

最近毎週一ハマりくらいのペースでハマってます。

今度はWindows Vista + PostgreSQLで。

ローカルからの接続ではパスワードを聞かないように設定しようとpg_hba.confに
host all all 127.0.01/32 trust
と設定したのだが、うまく機能せず。散々迷った末、
host all all ::1/128 trust
としたらうまくいったのでした。

つまり、Vistaはローカルのソケット通信もIPv6が標準(!!)なんですね。
さすが新しいテクノロジーを積極的に取り入れているVistaだけのことはある!
いや〜すばらしい。
いやほんとにまいった。

ぎゃ〜〜

kkato (2008-04-25 22:10) | コメント(2)| トラックバック(0)

phpとelectric-fenceの食い合わせ

どうやら、また食い合わせの良くないものを喰らってしまったようです。

phpのクラスライブラリをC言語で書いていたら、いつまでたっても、ElectricFenceのエラーが消えません。ちなみにgccで-lefence指定でコンパイルしていました。

散々調べてわかったのですが、問題だったのはphpのフレームワークが用意しているINIT_CLASS_ENTRYというマクロでした。このマクロ展開の中にstrdupなんて関数が入っているのがまずかった。

MyModuleがstrdupを呼ぶ→これはefence経由でmallocする
そうやって作られた文字列は、phpの本体が解放する→これは標準のfreeが使われる
→ぎゃー!

ということでした。これで丸一日くらいつぶしました。ますますphpが嫌いになった。

さて、悪いのは誰でしょう?
・マクロ展開の中でstrdupを呼ぶなんてキモいこと平気でやるphpな人たち
・常に-lefenceでコンパイルする軟弱な私
・私のところにphpを使う案件を持ってきた人
・太陽のせい

kkato (2008-04-21 16:42) | コメント(2)| トラックバック(0)

活動をもうちょっと「見える化」したほうがいいのでは?

いかちょーさんからもきつーいお言葉をいただきましたが、このリニューアル版tyzohを使っててイライラする原因は、サイト運営の人の活動がよく見えないところにあるのでは。

いかちょーさんが言うように「やる気があるのかどうかわからない」という点は、トップページ以外にも、不具合報告要望事項を見ても同じような印象を受けます。

いやべつにバグが多いからだめだといっているわけではなくて、むしろ逆で、ここの住民の人たちはシステム開発において百戦錬磨な人が多いと思うので、バグについては寛容な方だと思います。バグを探すのは大好きな人が多いと思いますが、たくさんバグを見つけたからといって「だからダメ」ということは言わない人たちでしょう。(そんなこと言ってたら自分に返ってきますしね)

そこで提案なのですが、不具合、要望を含めて、どの問題の優先順位が高いと思っているのか、いまどの問題に取り組んでいるのかを見える化するのはどうでしょう。それだけで、かなり安心感がますと思いますし、不具合を報告してくれた人の満足度も上がると思います。自分が報告した不具合が確信犯的に無視されるのはいいんですよ。でも、無視されているのかどうかもわからないのが一番困る。

せっかくdev.tyzoh.jpにはtracという仕組みがあるんですから、それを利用して状況を整理してはどうでしょう。

kkato (2008-04-18 11:15) | コメント(0)| トラックバック(0)

Vistaの歌

クリーンインストール直後でもウィンドウズアップデートは動かず
ぢっと手を見る

kkato (2008-04-17 09:43) | コメント(0)| トラックバック(0)

Windows Vistaの不思議なパーミッション管理

Windows Vistaを使っていて、.NET Frameworkがまともに動かなくなったので、再インストールしようということになりました。

ところで、アンインストールがうまくできない。

なので、ファイルを手で消すという荒技にでることにしました。
それで、不思議なパーミッション管理を見つけました。

1.
C:\Windows\Microsoft.NET\framework
(の一部)を消そうとしても消せない。

2. ファイルの所有者がTrustedInstallerになっているので、Administratorに変更しようとしたところ、フォルダ単位だとできない

3. でもなぜかファイル単位での所有者の変更はできる

4. セーフモードで起動して(サービスが立ち上がってない状態で)、frameworkフォルダのファイル名変更はできる(でも消せない)

5. frameworkフォルダを他のフォルダに「移動」はできる

どういう意図のガードをかけているのかは、この動きからはまったく理解不能です。

kkato (2008-04-16 17:53) | コメント(0)| トラックバック(0)

しゃべれないけど読み書きできる言語:中国繁体字

ukonさんのタイトルにつられてみました。

私は特別な訓練をしてないのですが、中国繁体字は読めます。日本人ならみんなそうだと思っていたのですが、どうやらそうではないみたいですね。妻と台湾旅行したときに気付きました。私は看板を見ればなんの店か大体わかるんだけど、妻にはわからない。

書くほうは、それほど自信はないけど、でもそれなりにはいけます。(それ以前に日本語の漢字も最近書けなくなりつつありますが)

特別に訓練を受けたつもりはないのに、繁体字の読解能力にこれだけ差がついているのは、大学入試で漢文があったおかげかなと思ったり、丸谷才一のファンだったりうするおかげかなと思ったり、でも理由はまだはっきりわからないです。

考えてみると、子供のころに国語の時間になにをやったかなんて覚えている人、少ないですよね。数学(算数)とか、社会とか、なら「あのとき苦労したなあ」とかそれなりに思い出のある人も多いと思いますが、国語となるとかなり影が薄い。でも、漢文教育のおかげで繁体字が読めるようになったとしたなら、やはり国語教育って影響が大きいんだなあって思っちゃいます。

ちなみに、うちには台湾で買った「繁体字簡体字字典」があって、これ一冊あれば、簡体字の方も簡単に読めます。便利です。

注:
繁体字とは、おもに台湾と香港で使われている漢字で、日本で昔使われていわゆる旧漢字とほぼ一致する。それに対し、中国本土(北京、上海など)で使われている漢字は簡体字と呼ばれ、略字体が使われる。
(常識かもしれませんが、念のため解説しました)

P.S.
「丸谷才一」で検索したのがきっかけで、丸谷君という旧漢字辞書を見つけました。これ、かなりいいですね。萌え~

kkato (2008-04-16 10:02) | コメント(0)| トラックバック(0)

地球の半径

GIS関連の仕事をやっている関係上、急に地球の半径が知りたくなりました。

そこで「地球の半径」でググってみると...
なんと、Googleの電卓機能に組み込まれているんですね。

なので
「4/3*pi*地球の半径^3」
で検索すると、地球の体積がわかります。

(ちなみにこの記事を書くにあたり、球の体積の公式を忘れたので、積分してみた)

kkato (2008-04-11 17:52) | コメント(1)| トラックバック(0)

エンディアン変換とgccの最適化


あいかわらず空気を読まずに技術的にマニアックな話します。

postgresのデータベースからselectした内容をバイナリで取ってくるコードを書いていましたが、どうやらpostgresはビッグエンディアンで保存しているようなので、リトルエンディアンに変換する必要があります。普通にlinux(amd64)で開発しているので。

とくにdouble型をエンディアン変換するのに次のようなコードを書いてみました。


double pgPtrToDouble(char *ptr)
{
  unsigned char tmp[8];
  *(uint32_t*)&tmp[4]=ntohl(*(uint32_t*)ptr);
  *(uint32_t*)&tmp[0]=ntohl(*(uint32_t*)(ptr+4));
  double d = *(double*)tmp;
  return d;
}
引数がchar*になっているのはpostgresの戻り値がそうなっているからです。これで動かしてみたのですが、うまく動きません。

これにはハマりました。いろいろと調べた結果、アセンブリ言語に変換してみたら原因がわかりました。上記コードはgccで-O2(最適化最大)オプション付きでアセンブリに変換すると、こんな感じに(主要部分以外略)

        movsd   -24(%rsp), %xmm0
        ret

アセンブリがよくわからない人に説明すると、このコードはC言語だと
 

  unsigned char tmp[8];
  return *(double*)tmp;
にあたります。つまり、メモリの中のゴミを返しているだけ。コンパイルの最適化によって途中の処理はすべて消されてしまっています。

コンパイラのキモチになって考えてみましょう。元のコードの最後の2行


  double d = *(double*)tmp;
  return d;
を見ると、dなんて余計な変数は必要ないからそのままtmpを返せばいいなということになると思います。でもその前の

  *(uint32_t*)&tmp[4]=ntohl(*(uint32_t*)ptr);
  *(uint32_t*)&tmp[0]=ntohl(*(uint32_t*)(ptr+4));
を見るとtmpには明示的には何も代入されていない(&演算子を使って間接的には書き換えられてますが)ので、tmpの値は何も変わらない(と思い込む)。
なので、なにもしていないのと一緒だからtmpをそのまま返せばいいということになるんでしょう。

これはgccの「仕様」なんでしょうか?

&を使わないように


double pgPtrToDouble(char *ptr)
{
  uint32_t tmp[2];
  tmp[1]=ntohl(*(uint32_t*)ptr);
  tmp[0]=ntohl(*(uint32_t*)(ptr+4));
  double d = *(double*)tmp;
  return d;
}
としたらうまくいくかと思ったのですが、なぜか同じ結果になりました。
あれ?私の理解が足りない?
ちゃんとコンパイラのキモチがわかってないんでしょうね。

とりあえずはunion型を使うことでしかるべき実装はできましたが、この最適化の振る舞いは気持ち悪いのでちゃんと理解したいです。

kkato (2008-04-09 16:35) | コメント(1)| トラックバック(0)

博士課程3年を終えて

私は、社会人でありながら3年間大学院博士課程に在籍していて、今春に卒業しました。

その3年間の総括らしきものをここにまとめてみようかと思います。

 

良かったこと:

  • とりあえず社会人になったからの再入学だったので、勉強・研究が楽しくてしょうがなかったです。学生時代とはかなり違う感覚で勉強できたと思います。
  • 多くの学生や研究者の方と接することができ、世界が広がったと思います。社会人のほうが学生より世の中のことをよくわかっているというのは、正しくもあり間違えでもあり、社会人として一つの会社でずっといると学生以上に世界が狭くなってしまうこともあると思います。特に言葉の使い方の面で、IT業界独特の用語は全く通じないことが多いというのは再認識しました。
  • 世界が広がったというのとほぼ同義ですが、ハッカー文化というか、違う文化の人たちと仲良くできたことがよかったと思います。普段私が接してきた普通のプログラマやSEとは全く別な、でもコンピュータに関して非常に高い能力を持った人たちと接することができたのは良かったです。
  • 研究の作法というか、他の研究者と会話できるためのコツとか、そういう点はすごく学べたと思います。入学する前と比べてかなり考えが変わったのは、たとえ理論的なコンピュータサイエンスをやっている人でもかなり「社会性」ということを意識しているんだなあということ。どんなに良い結果でも、社会的インパクトを説明できなければ意味がないということを感じました。そういう点も、普通のSIerに勤めるSEが学ぶべき面があるように思いました。
  • なぜか「さよなら絶望先生」が研究室に常備されてあったので、いつでも読めた。
  • 東大生特権で、上野の国立博物館にタダで入れた。

 

意外と良くなかったこと:

  • もうちょっとコンピュータサイエンスに関する幅広い知識が身につくかと思ったが、その点ではあまり成果は芳しくなかったように思います。もちろん新しく学んだことも多いんですが、やはり博士課程だと狭い分野を深く学ぶことが多いです。博士課程の本分は「勉強」ではなくて「研究」なので、しょうがないといえばしょうがないのですが。
  • 女子大生との合コンはなかった。

 

悪かったこと:

  • 普段学生と接していたせいか、時間管理がダメダメでした。もちろんまわりの学生のせいにするつもりはなくて、私個人の問題なんですけど。元来ぐーたらな性格なもので、会社に入ってからまともな社会人みたいになるべくちょっとずつ改善していたのですが、大学に入ってまたリバウンドしたような気がします。それでも、平均的な学生よりはずっとましだったとは思いますが。

 

ということで、3年間非常に恵まれた環境で研究活動ができ、博士号もとれたわけですが、残念ながら博士号をとったからといって突然急激にグレードアップしたというわけではないです。でも、自分の持っている能力の引き出し方をもうちょっと多角的に考えることができたということが大きな収穫だったと思ってます。

kkato (2008-04-02 16:45) | コメント(0)| トラックバック(0)

« 2008年3月 | メインページ | 2008年5月 »

プロフィール

kkato

・10年以上前からのdebian使いです。
・C++, Ruby, perl, ocamlなどの言語をよく使います。
・数値計算などが得意です。
・スパムメールの文面をよく読むのが好きです。
ホームページ:
http://sites.google.com/site/kimikazu/

カテゴリ

RSSフィード

コミュニティの人々 | ソフトウェア | 技術紹介 | 適用分野 | Tyzohとは | ご意見お問い合わせ

Copyright (C) 2004-2011 Nihon Unisys, Ltd. All Rights Reserved.
Powered by Movable Type Open Source