Where is this?

ようこそ、ここは拙作のソフトウェアやWebサービスを気ままに公開するサイトです。
主にWindows用のツールを更新中です。
気になるものがあれば使ってみてくださいね!
上のメニューからコンテンツを選択してください。


Blog

Flockってすごい

8月 27th, 2006

次世代ウェブブライザと呼ばれるFlockを使ってみました。
まだベータ版で全部英語です。Geckoエンジンがベースみたいです。

一体何が次世代かっていうと、従来のウェブブラウザやと、主にウェブページを読み込んで表示するのが目的ですよね。このFlockもそれは変わりないんですが、そこに加えてWeb2.0的な機能をブラウザから簡単に使おうという機能が色々付いているのです。

例えば写真。Flickrという写真コミュニティサイトと連携して、今表示しているウェブページの画像をドラッグ&ドロップで簡単にアップロードできます。

テキストもドラッグ&ドロップ出来、メモとして置いておけます。そのメモを引用してすぐさまブログを書いたりもできます。今もFlockからブログの記事を書いています。WordPressやMovableType他にも対応しているようです。

なんかウェブの機能にあわせてブラウザも進化したって感じで、すごく新鮮でした。
でもまだまだ使いにくいですね;すぐ慣れるかな。
マウスジェスチャー機能が欲しいなぁ。

ともあれ、これからどう成長していくのか、楽しみです☆

technorati tags:, ,

一回書いたのに消えた。死にたい。

Delphiの話です。
VCLはスレッドセーフではないとヘルプに記述されているが、最近までこれを誤解していた。
VCLとはVisual Component Libraryの略で、つまり主にヴィジュアルなメッセージを処理するコントロールのことを指すようだ。
これを、あらかじめ用意された便利なクラス群全てと勘違いしていた。つまりインスタンス=非スレッドセーフと笑
そうではないと分かったらこっちのもの(分かるの遅い)
TCriticalSectionの使い方もようやく分かった。

クリティカルセクションとは、複数のスレッド内である処理にゲートを設け、その区間内ではどれか一つのスレッドしか処理しないように規制できる機構だ。
つまり、同じデータやオブジェクトを扱う際に、同時に書き込みや操作をしないように出来る。

これを使う上で注意する点がある。
TThreadにはSynchronize関数があり、これはメインVCLスレッド内から同期して関数を読み出せるモノだが、その関数の処理が終わるまで制御は戻ってこない。
ということは、クリティカルセクションに入った状態でそれが実行され、さらに同期されたメインVCLスレッド内からクリティカルセクションに入ると・・
いわゆるデッドロックが起こるんですね。
これは参った。
スレッドに命令したい時はほとんどクリティカルセクションに入るので、これを外すようにするのは困難だ。
今までスレッド内で発生するイベントは全て同期していたが、これをやめ、イベントの処理はスレッドセーフであるということを前提で実装することにした。
そして、イベントを処理するユニットにグローバルなインスタンスのリスト(もちろんスレッドセーフ)を作っておき、タイマーを設けて、簡易なVCLスレッドによるメッセージ処理機構を作った。
そしてスレッドから呼ばれたイベント内で、そのリストにメソッドへのポインタを登録しておく。
処理が終了するのはこれだけでは検知できないが、これでデッドロックは免れられる。

ん~スレッドって奥が深いね!!
頭こんがらがりそうです。

作ってみた。

ついでなので、Amazonへのリンクを自動でつけようと思い、どうやるのかなーと思って検索したらAmazon Webサービスなるものがあることを知り、早速やってみた。
このサービスはAmazonの検索結果をXMLで返してくれるという代物らしい。その上、XSLを使うことでそのデータをHTML形式に変換してから出力してくれたりと、機能が豊富。

ここを参考にやってみた。
が、上手くいかない。
なんかエラー出る。
XSLをコピペして自鯖に置いて実行しただけやのに、

“We encountered an error applying your XSL template. Please retry.”

とか言われる。どうやらAmazon側のパーサが変っぽい。で、出力されるXMLを調べたら、ヘッダが”<?xml version=”1.0″ encoding=”UTF-8″?>”ってなってるのにもかかわらず、要素がShift-JISで返されてるではないか!
そのせいでパーサが読み取りエラーを起こしてるんじゃないかな。自爆してんのかい。
仕方ないので、PHPのSimpleXMLを使って、自分でXMLを読んでHTMLに変換した。
しかしXREAの自分のサーバはなぜかバージョンが4.0.2だったのでSimpleXMLが使えず、仕方なくローカルでスクリプトを実行し、出力してからアップロードした。面倒くせぇ。
一応バージョンアップしてくださいってXREAサポートに要望出してみた。してくれるかな?

そんなわけで一応形にはなったんですが、普段Delphiばっかりしてるだけに、なんか新鮮で楽しかった。
もっと面白いアイデアあったらどんどん作りたいね。
とりあえず今はAmemboの内部大改造中やけど・・^^;
こっちも、かなり安定性上がりそうなので、乞うご期待です。ほぼ全部のモジュールに手加えなあかんけど。。