今風の更新チェッカーの話

大昔にwgetを利用したWeb更新チェッカー作ってたんだけど、同じ事を今やろうとしたら大変なのを最近知った。

主に以下の理由なんだよね。

・Ajax使ってるところは素直にとれない。

小説家になろうサイトみたいに素直な構造ならいいけど、世の中そう単純ではないらしい。
これ対策として、以下を実際に試作してみた事がある。

★Windows上でミニマムなダウンローダを作り動作させる。

異種OSで再現に四苦八苦するより、こっちが楽で確実ですわな。
ただし全部Windowsで書くのも面倒なんで、大部分はUNIX likeですませましたんで、
Windowsなのにcygwin+Apacheがいるという妙にクリティカルなシロモノになりましたが ^^;;

1.概要

チェッカーのアクセス部にwebBrowserコンポーネントを使う。
これはIEの部品そのものなんで、あとはレジストリで「うちはIE10ナリ」と言い放ちながらアクセスさせたんですね。

それから、Ajaxなどの対策に、単にロード完了を待つだけでなく、しばらく待機して処理完了を待つ。
(ロード完了は単にダウンロード完了なので、各種プログラムの動作完了にはもう少しかかる。テキストの変更待ちをすればいいみたい)
このあたりは泥臭い処理になるけど、まぁブラウザ対応なんて昔から泥臭いもんですし。
で、あとはそのゲットしたものをあれこれ比較して履歴をとり、更新チェッカーに用いるわけですな。

全体の実装方法は色々あるんですが、制御はRubyでやりました。
これはRubyのユーザスレッドを使いたかったからですね。
Rubyも最近はネイティブスレッドがあるけど、環境問わず類似の結果が得られるユーザスレッドが僕は好きです。

んー、まじめにゼロから作り直そうかな。
でも需要ないよなぁ……。

[C#] オブジェクトの動的追加

ネットで、[C#] コントロールを実行時に作成する – コントロールの動的生成って記事を見つけた。ちょうど自分でもやっているところだったので、うちでハマったフォントの設定も付け加えて保管しておく。
(GUIはさっぱりだ……。だけどフロントエンドの作成等、GUIができるかどうかの差異は大きいですね。特に近年)

TextBox tb = new TextBox();
tb.Left = 10;
tb.Top = 64;
tb.Width = 400;
tb.Height = 24;
tb.Font = new Font("МS ゴシック", tb.Width / 16, FontStyle.Bold);
Form1.Controls.Add(tb);

Form1の下に張り付けようとすると、こうなる。
もしパネルの下なら、そのパネルの名前にすべきだろう。