Decremented Blog

プログラミング、釣り、工作など、ジャンルを特に定めず、適当に書かれたブログです。

[04WebServer] 1.92リリース

2011-09-03 23:59:18 | プログラミング・開発
04WebServer 1.92をリリースしました。
今回の更新では、長期的なサーバの安定性向上のための改修と、ダイジェスト認証への対応が主な修正点となっています。
更新点の詳細については、8/28の投稿を参照ください。

本バージョンから、通信周りのコードが2.0用に開発していたコードへ変更されています。
オーバーラップI/Oを利用するようになったため、通信効率が改善されています。
また、通信周りのコードを整理して見通しを良くしたため、以前のコードよりは安定性を高めやすくなったと考えています。
ただ、動作実績がないため、当面はおかしなバグが出る可能性があります。

[04WebServer] 1.92リリース準備中

2011-08-28 23:18:55 | プログラミング・開発
次期バージョン(1.92)をリリース準備中です。
ある程度動作テストを行って、問題なければリリースします(本日から一か月以内にはリリース予定)。

次期バージョンでは、サーバの安定性向上のために、サーバコアを改修しました。
しばらくは、変なバグが出てしまう可能性があると思われます。
既存の枯れたコードが良いのか、将来的な安定性向上を目指し、より安定動作しやすい新しいコードが良いのか、難しい所ですね。

ダイジェスト認証に関しては、これまでBasic認証+SSLで十分なセキュリティ強度が保てるため、対応していませんでした。
しかし、最近利用が増えたiPhone等のモバイル機器では、正式なサーバ証明書がないとSSLが利用できず、SSLの敷居が上がってしまったため、SSL無しでもある程度セキュリティを保てるように、ダイジェスト認証に対応しました。
ただ、ダイジェスト認証でも、パスワードが抜かれないだけで、ファイル等の通信内容は相変わらず丸見えです。


次の次のバージョンでは、問題の多いCGI周りの修正を行う予定です。
時間に余裕があれば、FastCGIに対応するかもしれません。

[主な修正点]
・ダイジェスト認証に対応
・高速回線利用時のデータ転送効率を向上
・ネットワークエラーやシステムエラー発生時の動作を改善
・サーバが過負荷状態となった場合の動作を改善
・複数の待ち受けポートを利用できるように修正(ポートの設定で、","区切りで複数のポートを指定)
・標準の最大接続数を50接続から100接続に変更。
・ディレクトリ設定の上下移動が保存されない不具合を修正

[内部的な修正点]
・ネットワーク通信にオーバラップI/Oを利用するよう修正
・OpenSSLとのインターフェースに独自のBIOを利用するよう修正
・サーバ負荷限界の判断ロジックを修正(処理中の接続数が最大接続数の90%を超えるか、未処理の接続数が最大接続数を超えると過負荷と判断)
・サーバ負荷限界を超えると過負荷モードに移行するよう修正(一定時間、すべてのアクセスが503エラーとなる)
・サーバ負荷限界を超えて503エラーとなっても、アクセスログが残るよう修正
・サーバ負荷限界を超えて503エラーとなっても、カスタムしたエラーページを返せるよう修正

[04WebServer] ダイジェスト認証とrealm

2011-08-28 00:46:06 | プログラミング・開発
04WebServerのダイジェスト認証への対応を行っています。
Basic認証でもSSLを使えば問題ありませんが、SSLはサーバ証明書の問題がありますので。

04WebServerでは、認証のrealm(認証場所の名前)にディレクトリ設定の名前を使っており、日本語の利用が可能です。
ダイジェスト認証では、認証のロジックにrealmが組み込まれているため、realmに日本語を指定すると、一部のブラウザで正常に動作しないようです。

IE8だと、SJISでrealmを送ると、文字化けせずに表示できますが、なぜか認証情報を送ってきません(UTF8だと文字化けしますが、認証は正常に行われます)。
Firefoxだと、SJISで送っても、UTF8で送っても文字化けする上に、こちらもに認証情報を送ってきません。

まあ、HTTPヘッダには、マルチバイト文字使ってはいけない事になってるので、しょうがないです。
apacheでも試してみましたが、同じような動作になるようです。

HTTPヘッダをUTF8に対応するRFC5987が出ていますが、対応している主要なブラウザはまだ無いようです。
FirefoxやChromeの次期バージョンでは対応しているようです。

[04WebServer] 04WebServer 1.91をリリースしました

2011-08-14 01:38:19 | プログラミング・開発
04WebServer 1.91をリリースしました。
更新点などは、ホームページをご覧ください。

今回の更新は、作者の自宅サーバが3/11の地震で壊れたため、そのリプレースに伴うものです。
サーバをWindows 7に入れ替えたため、04WebServerもWindows 7対応としました。
また、iPhoneからアクセスすることが増えたので、SSLの中間証明書対応と、WebDAVの互換性強化を行いました。

やっぱり、自分が必要としないと、開発するモチベーションが維持できないですね。
節電の関係で残業が減り、開発時間が確保できるようになったのも大きいですが。

ビルド環境の整備と、Webリリースマネージャの導入を行ったので、だいぶ修正→公開が楽になりました。
今後は気が向いたら修正して、リリースするかもしれません。
まあ、もう需要もあんまりないと思いますが。

[WiX] VisualStudioのセットアップ・プロジェクトからWiXへ移行する上で発生した問題

2011-07-31 22:17:46 | プログラミング・開発
04WebServerのインストーラを、VisualStudioのセットアップ・プロジェクトから、WiXに移行しているのですが、2件ほど困った問題が起こりました。

■一個の実行ファイルを、サービス/アプリケーションどちらとしても利用する
04WebServerは、システム・サービスとしてもアプリケーションとしてもインストール可能です。
インストール時にユーザが選択するようになっているのですが、WiXで実現しようとすると上手く行きませんでした。

サービスとして登録するコンポーネントと、アプリとして登録するコンポーネントを作り、ユーザの選択によって、インストールするコンポーネントを変えるようにしましたが、2個のコンポーネントから同じファイルを参照してるため、エラーとなってしまいます。
WindowsInstallerの概念的には、ファイルを配置するコンポーネントを別に作って、サービス/アプリどちらのインストールモードでもインストールされるよう作るのが正しいのですが、WiXの<ServiceInstall>が、ファイルの参照に対応していないので、この方法では無理でした。

結局、サービス/アプリで、実行ファイルのファイル名を変えて登録するようにしました。
ちょっと気持ち悪いですが、まあ、仕方ないですね~


■インストールタイプ(Per-Machine/Per-User)が異なる場合の、インストール済みプロダクトの検出
WindowsInstallerでは、UpgradeCodeを利用してインストール済みの過去のバージョンを検索しますが、インストールタイプ(特定ユーザを対象にインストールするか、コンピュータの全ユーザ対象にインストールするか)が異なると、この検索に引っかからなくなります。

WiXのMLを見たりしましたが、現在のところ、素直な解決方法は無いようです。
結局、DLLを作って、カスタムアクションで過去のバージョンを検索するようにして解決しました。
ソースは、sf.jpのsvnに上がってますので、そちらを参照ください。

下記を参考にしました。
Advanced Installer • View topic - Uninstall previous version, regardless of installation type?:

[iPhone] iPhoneシミュレータに画像をまとめて転送

2011-04-30 16:25:58 | プログラミング・開発
iPhoneシミュレータに画像をまとめて転送する方法を探していたんですが、全然無かったので、自分がやった方法をまとめておきます。

[1] iPhoneの実機から、Macに写真をまとめてコピーしておく
特別な手段を取る必要はありません、普通にUSBで接続して、デジカメ扱いで接続されているのを取り込みます。

[2] iPhoneシミュレータの写真DBを消す
4.2の場合は、下記を削除。念のため、PhotoData_oldとかにリネームしておくのがおすすめ。
ユーザ/<ユーザ名>/ライブラリ/Application Support/iPhone Simulator/4.2/Media/PhotoData

[3] 写真をコピー
4.2の場合は、下記の場所に写真を全部コピーします
ユーザ/<ユーザ名>/ライブラリ/Application Support/iPhone Simulator/4.2/Media/DCIM/100APPLE

[4] シミュレータ起動
シミュレータ起動して、写真ライブラリにアクセスすると、自動的にライブラリが再構築されます。
これで、写真の転送完了。

[CF-R3] EMチャージがとっても安い

2009-03-29 22:29:29 | プログラミング・開発
モバイル環境構築のために、WANカードを購入しました。
au、DoCoMo、Willcom、E-mobileと色々比較してみた結果、E-mobileのプリペイド(EMチャージ)にすることにしました。
カードはD01NXをアウトレットで購入しました。
5000円の通信料付きで、9800円です。

私の場合、月に数度しか使用しないと予測されるので、プリペイドが最適です。
特に、EMチャージだと、通信カード経由のオンラインで一定期間(1時間、1日、1週間、1月)の定額契約ができるため、使い方によってはとってもお得です。
ちなみに一日定額は630円です。

通信速度は、一世代前の3.6MBPSのカードですが、正直、十分早いです。
レスポンスは多少悪いですが、以前使っていたDoCoMoのPHSのカードなどに比べれば、遥かに早いです。(横浜市の某所でテスト)
動画のストリーミングも、ビットレートがそれなりなら、十分可能でした。


[CF-T1/R3] モバイル環境の構築終了

2009-03-29 22:15:41 | プログラミング・開発
CF-T1のオーバーホールと、CF-R3の新規作成?が一通り終了しました。
一ヶ月ほどかけ、以下のような作業を行いました。

■CF-T1(予備機)
1.マザーをCF-T2へ載せ換え
2.HDを160Gへ載せ換え
3.バッテリーのセル載せ換え

バッテリのセル入れ替えの結果、5時間以上連続稼動するようになりました。
元のセルは公証電圧が3.7Vの物でしたが、載せ換えに使用したセルは3.6Vの物です。
リチウムイオンバッテリの場合、充電電圧が同じであれば、多くの場合、載せ換え可能です。
今回は共に4.2V充電でしたので使用できました。


■CF-R3(モバイル用)
1.壊れた2台を組み合わせて1台作成(液晶割れ+マザー死亡)
2.HDをSSDへ変更

SSDと合わせて、\25000ほどかかってしまいましたが、まあ、軽くてバッテリの持ちが良いので満足してます。
さすがにSSDにしたおかげで、メインで使っているAthlon 64 X2のマシンより快適です。
メモリが768Mしか無いのが辛い所ですが。
バッテリはジャンクに付いてきた物が、何故かほぼ劣化なしで、ラッキーでした。
2台から綺麗なパーツを選んで使用したため、なかなか良い状態に仕上がりました。


PhotoFast 64MBのキャッシュ搭載のIDE G-Monster SSD IDE V2を発表

2009-03-24 21:12:29 | プログラミング・開発
PhotoFastから、64MBのキャッシュ搭載の2.5インチIDE SSD「G-Monster SSD IDE V2」が発表されました。
http://www.news-on.jp/info.php?type=press&id=P0001126&all=true

これって、Vertex + SATALinkだよなあ・・・
自分で作った漏れ涙目(w

まあ、しばらくは高いんじゃないかな。
きっと・・・(涙

[04WebServer] 2.0 開発状況(2009/03/11)

2009-03-12 00:12:44 | プログラミング・開発
04WebServer開発状況です。

1月の終わり頃から仕事が忙しく、開発が進みませんでしたが、最近は多少時間が取れるようになりました。
現在、MFC/ATL依存部分の排除と、内部のUTF8化を行っています。
MFC/ATL依存部分の排除はほぼ完了しましたが、UTF8化にもうしばらく時間がかかる見込みです。