Excel関数にすると気になっちゃうのがEの処理。
文字列引数を受け取る関数にしたんだけど、ある程度の桁数の数値を引数に指定すると、E付きの文字列になっちゃう。
できればEを有効に読み取ってあげたいところ。
もうちょっと時間を掛けよう。
Excel関数にすると気になっちゃうのがEの処理。
文字列引数を受け取る関数にしたんだけど、ある程度の桁数の数値を引数に指定すると、E付きの文字列になっちゃう。
できればEを有効に読み取ってあげたいところ。
もうちょっと時間を掛けよう。
ので、少しうれしい。
何でもそうだけど、実際にやろうとすると、意外に手間取るよね~。
一応、走査回数は標準2回(最悪n^2オーダーになる条件が含まれるけど)でパースできるようにした。
#本当は1回でやるべき。
符号は数値前のものだけ。
でも複数連続符号も認識できるように。
数値中のカンマや空白の読み飛ばし機能とか、数値前後の文字列を無視する機能とか、そういうのも実装。
ってことくらいは知ってる。
MCDBAも持ってるし。
ただ、どの情報の格納にデータベースを使えばよいかの判断について、皆目不明瞭だった。
情報を格納するのなら、ファイルでいい。
#広義ではファイルシステムもデータベースだけど。
テキストファイルで良いのなら、その方が分かりやすい。
typeコマンドやメモ帳など、中身を見る手段はいくらでもある。
多量の情報を処理することも、一度プログラムを組んでしまえばどうということはない。
いくらISV試験を受けても、こういう実に基本的な事柄ってやつは、出てこないし、解決されない。
データベースというものがあって、どういうものかも分かる。
確かに情報を格納したり参照するといった処理をするのには便利な機能がいっぱいだ。
でも、今ここにある情報をデータベースに格納する意味はあるのかと。
何が起きてるか分からんけど、どうやら、IISワーカープロセスが無応答になるらしい。
ワーカープロセス数を増やせば、ある程度抑制できるが、・・・
やはり、: Stream, IHttpModuleってのがマズイのかも。
と、思って、分離したんだけど、やはりダメ。
いや、発覚したからといってすぐに改修するわけではないが。
「/」へアクセスすると、何らかの既定ドキュメントを返すのはWWWサーバなら大抵持っている機能だけれど、IIS7.5ではどうやらモジュールがこの役割をしている・・・らしい。
#そんな名前のモジュールが見えるよね。
で、これ、リダイレクトをさせるのではなく、また、ハンドラのように、自分で何か取ってくるわけでもなく、モジュール内でリクエストを繰り返しているっぽいんですよ。
詳しく調査したわけじゃないから、違うかも知れないけど。
ってか、もう少し早く気付けよってことで。
モジュールで受け取れるリクエスト情報にはクライアントのIPアドレスとそのホスト名があるんだけど、これ通常どちらも同じ情報が含まれている、というか、名前解決のコスト削減ってことなんだけどね。
だから、IPアドレスからホスト名を引っ張ってくる処理を入れてたわけ。
これが遅かった原因。
ログ書きをスレッド化したんだけど、そのスレッドに渡す変数(クラス)オブジェクトを構築する際にDNS引いてたから遅かった。
ログ書きスレッド内でDNS参照を行うよう変更したら、嘘のように軽くなった。
マジで、嘘みたいに軽い。
実際、カウント数集計と、レコード書き込みはどっちが先に行われているかは分からないけれど、あまり気にすることはない。
これなら、twitterの内容埋め込みもできそうな感じ・・・
#twitter内容を定期的にローカルへ蓄えておく必要がありそうですが。
レスポンスのContent-Typeとステータスから条件判断してから、DBへのLog書きをThreadPoolに委託、フィルタチェイン構成となるよう、モジュールイベントを構成したんだけど、やはり遅い。
#少しは改善したような気がしなくもないけれど。
さらにDB処理を削っても遅いため、恐らくDB処理は無関係だと思われる。
ならば、残りのフィルタStream自体が問題と思われる。
思われ・・・る・・・
このブログにカウンタを付けてみようかと思っていた。
普通はカウンタって、たとえば、imgタグで動的に画像を返すとか、JavaScript使ったりすると思うんだけど、それは、再リクエストを期待しないと無効なわけだし、レスポンスを返す時点でカウンタ値は決まっているわけで、いろいろと無駄があると常々思っていた。
たとえ、レスポンス一発であっても、CGI使うとか、サーバサイドインクルードとか、静的コンテンツには不向きだったりする。
前記事のとおり、IISならフィルタでレスポンス書き換えできるので、これでやってみようと思ったわけ。
.NET Frameworkでは、IHttpModuleを実装すると、IISを通過するリクエストやレスポンスを操作できるモジュールを作成できます。
たとえば、リクエストに合わせてレスポンス内容を変化させるなんてことも・・・
そう、いつも通り簡単にできるだろうと思っていました。
HttpResponse.OutputStreamの中にはレスポンスコンテンツが蓄えられるはずです。
これを読み取って、書き換えてしまえばよい、そう思っていました・・・
クッキーレスセッションを使ってみた。
WEBサーバのセッション内に一時的に記憶するメモ。
クッキーレスで、モバイル対応にした(つもり)なので、ブラウザを跨いで、各種ケータイでも使えるはず。
たとえば、
なんてことができたりする(には少し機能が足りてないかも)。
一応QRコードを出してはいる(が、内容の有効性については未確認)。
#PNG固定(Powered by Google API)なので、PNG非対応機の場合は見えないかも。
暗号化や認証は無いので、URLバレしたらヤバい。
けれど、セッション潰す機能を付けたので、ケータイで画面メモとかしたら消しちゃえば安心。
最後のアクセスから60分、または、サーバメンテナンス等で消えます。