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

[計画停電] 自動車用バッテリを使った照明装置の製作方法

2011-03-16 22:00:35 | 趣味・その他
3/15より、震災による電力不足から、関東地方での計画停電が始まりました。
夜間の停電では、何らかの照明が必要になりますが、懐中電灯では十分な明るさがなく、また、災害時に重要な物資である乾電池を無駄に消費してしまいます。

そこで、自動車用のバッテリ、照明、充電器を使って停電用の電源装置を作ってみました。
自動車向けの携帯充電器や、ポータブルTVなども利用可能ですし、インバータを使えば普通の家電もある程度使えます。


この照明は、8Wの蛍光灯2本使っていますので、一般的なデスクライトくらいの明るさがあります。
懐中電灯なんて比較にならない明るさです。


■準備するもの
・車のバッテリ(私はドンキで売っていた40B19Rを使っています)
・バッテリの充電器(これとか
・照明装置(これとか
・シガーライタ分配アダプタ(これとか
・ビニールテープ(配線保護用)
・テスター(コードの極性確認)
・半田ごて(無くても可)

■充電器と分配アダプタの改造
分配アダプタは車のシガーライタソケットに繋ぐようになっているので、そのままバッテリに繋ぐことはできません。
逆に充電器は直接バッテリに繋げられるように、バッテリの端子を挟むクリップが付いています。
分配アダプタを改造して、この充電器のクリップを付ければ、分配アダプタをバッテリに直接つなぐことができます。

・分配アダプタの改造
まず、充電器のクリップを20cm位コードを残して切断してしまいます。
同じように分配アダプタのシガーライタプラグも20cm位コードを残して切断してしまいます。
切断した充電器のクリップを、分配アダプタに繋ぎ直します。
極性があるので、注意してください。ソケットは真中が+(赤クリップ)で、外が―(黒クリップ)です。
接続が正しければ、バッテリに接続すると分配アダプタのLEDが点灯します。
車のバッテリはかなりの電力がありますので、必ずコードの接合部はビニールテープで保護してください。


・充電器の改造
分配アダプタに付いていたシガーライタプラグを、今度は充電器に繋ぎます。
今度も極性に気を付けてください。
接続が正しければ、シガーライタプラグを分配アダプタに差し込むと、分配アダプタのLEDが点灯します(バッテリを接続していなくても)。


・ケースに詰める
邪魔にならないように、何らかのケースに入れると便利です。
私は、荷物整理用のコンテナに入れて使っています。

■使い方
・充電する。
分配アダプタをバッテリに接続し、充電器を分配アダプタに接続します。
充電器をコンセントに接続すれば充電されます。
充電の仕方は、充電器のマニュアルに従ってください。過充電に注意。

・照明を使う
分配アダプタから充電器を取り外し、代わりに蛍光灯を接続します。
今回用意した蛍光灯とバッテリだと、30時間くらい連続点灯できる計算になります。

・使わない
使わない時は、分配アダプタのクリップをバッテリから外しておきます。
無駄にバッテリを消耗しますし、ショートさせると火事の危険もあります。

[工作][iPhone][キーボード] iPhone用クラムシェルキーボードを作ってみる

2010-06-20 20:59:34 | 趣味・その他
いよいよ、明日、iOS 4.0が公開されます。
iOS 4.0で、ついにBlutooth用のキーボードが使えるようになります。

私は電車内でiPhoneとキーボードを同時に使いたいと考えているのですが、今のところ、まだそういった製品は発売されていないようです。
まあ、すぐ売りだされると思いますが、それまで待ちきれないので、市販のキーボードに手を加えてちょっと作ってみました。

材料は「IRXON KB850 Mini Bluetooth Keyboard」と、写真の品々。
好きな角度でiPhoneを固定できるよう、トルク蝶番を使いました。
マジックテープとゴム板、木ネジは結局使いませんでしたが。
材料費は、KB:3980円、パーツ:約1000円、ハードケース:1480円



作り方は、アルミ板を金切りバサミで切って、蝶番を取り付け、iPhone用ハードケースを両面テープで張り付けるだけです。
パーツの固定には、2mmのビスとナットを使ってます。
アルミ板は切り口をサンドペーパーで処理しないと、使う時に手を切ってしまうので注意してください。



このように、閉じる事が出来ます。



iPhone用のハードケースを両面テープで固定して完成です。
iPhoneが重すぎるので、ちょっとバランスが悪いです。机の上で自立はしません。後ろに倒れます。



使い心地は悪くありませんが、ちょっと、見た目がアレですね。
電車で使うと、少し目立つかも。

とりあえず、iOS 4.0、早く出ないかなあ・・・

底無し沼にハマる…

2009-06-12 20:22:09 | 釣り
釣りの帰り、車ターンさせようと砂浜に降りたら上れなくなりますた(死
自動車保険会社にロードサービスをお願いして、今待っている所です。
チェーン積んどくんだった…

巨大アサリとハマグリの網焼き

2009-05-25 23:53:44 | Weblog
巨大アサリとハマグリを、網焼きで頂きました。
アサリは少し日本酒を加えて焼きましたが、貝柱がとっても美味しかったです。
ハマグリもウマー