Archive for 12月, 2006

12月 22nd, 2006

Solarisぜ SSLソケット通?

Posted in Solaris by admin

 Solaris上ぜ opensslライブラリを利用したHTTPSクライアントを作成した時、2日間位ボ マってしまった箇所があった。ソケット通信ぜ connect時にエラーが発生してしまう。その? 、エラー? 因がソケットのファイルディスクリプタ操作関数である”fcntl”のオプションによる問題だという事が判昜 しました。

// NG
if (fcntl (sd, F_SETFL, O_NONBLOCK) < 0)
// OK
if (fcntl (sd, F_SETFL, (int) O_NDELAY) < 0)

上記ぜ 1行だけで動作を確? 。理由がはっきりと゜ からないのでメモ。つまり、Solaris(というよりopenssl)ぜ POSIX準拠ではないということか?

O_NDELAY ボ ンブロッキン゜ I/O
O_NONBLOCK POSIX 型 ボ ンブロッキン゜ I/O
O_LARGEFILE ラージファイルを使用可能にしてファイルシステムをマウントし、O_LARGEFILE オプションでファイルをオープンすると、ファイルを 2 GB を超えて? やすことができます。

12月 13th, 2006

配列の初期化パフォーマン゜

Posted in Solaris by admin

Solarisぜ Cコンパイラーぜ char配列の初期化をする場合、方? によってはパフォーマンスにかか゜ るようです。ちなみぜ gccでコンパイルした場合は、全く差は出ませんでした。

各配列の初期化処理を1,000,000回ループで? 行させた経遜 時間。

(1) char cha_str[1024] = { '\0' };
(2) char cha_str[1024] = "";
(3) char cha_str[1024]; memset(cha_str, '\0', sizeof(cha_str) );

(1) 2.742 秒
(2) 2.742 秒
(3) 0.460 秒

(1)(2)の? 果は朮 ど同じです。er_prrintの? 果は以下です。
とにかぜ 遅すぜ る印象がありますし、配列のサイズが大きぜ なるに? って更に劣化します。

朎 他的  包括的  名前
CPU  CPU
秒  秒
2.742   2.742   < 合計>
2.742   2.742   main
0.000   0.000   __collector_ext_mmap_deinstall
0.000   0.000   _exithandle
0.000   0.000   _fini
0.000   0.000   _private_close
0.000   2.742   _start
0.000   0.000   atexit_fini
0.000   0.000   call_fini
0.000   0.000   collector_close_experiment
0.000   0.000   exit
0.000   0.000   update_map_segments

(3)ぜ er_print結果も載せておきます。

朎 他的  包括的   名前
CPU  CPU
秒  秒
0.460   0.460    < 合計>
0.440   0.440    memset
0.020   0.460    main
0.000   0.000    __collector_ext_mmap_deinstall
0.000   0.000    _exithandle
0.000   0.000    _fini
0.000   0.000    _private_close
0.000   0.460    _start
0.000   0.000    atexit_fini
0.000   0.000    call_fini
0.000   0.000    collector_close_experiment
0.000   0.000    exit
0.000   0.000    update_map_segments
12月 2nd, 2006

IEの「名前を付けて画? を保存」

Posted in Web/AP全舜 by tatenaga

 IEの右クリックメニュー「名前を付けて画? を保存」操作をした時、対象画? がjpegやgifであるにも関゜ らず「無? .bmp」として? 存しようとする問題はよく言゜ れています。MSのサポートサイトでも、? 因は? 時ファイル? Temporary Internet Files )の破損であるため、一? Temporary Internet Filesフォルダ内のファイルを削除する対処方? を朏 示しています。

 しかし、IEの「名前を付けて画? を保存」操作仕様が直接サーバから圏 信したファイルを保存するものではなぜ 、単に? 時ファイルから特? のフォルダへのコピー操作であるなら、サーバ側でキャッシュを無効としていた場合にはどうなるか。具? 的に以下のようぜ Apacheで設定している場合です。

<Files ~ "\.(jpg|gif|png)$">
  Header set Pragma no-cache
  Header set Cache-Control no-cache,no-store,must-revalidate
  Header set Expires "Sat, 01 Dec 1990 00:00:00 GMT"
</Files>

 この設定の場合、jpg, gif, pngファイルぜ IEの? 様で? 時ファイルに格? されず、「名前を付けて画? を保存」操作時にやはり「無? .bmp」で? 存しようとします。

 対処方? はいぜ つかあると思いますが、以? のような方? でしょうか・ボ
・「対象をファイルに? 存」する。ただし、IMGタグぜ srcの指定が必要。
ボ CGIで読み込んでからダウンロードHTTPヘッダ(Content-Type, Content-Disposition)とともに出力する