DirectShowサンプル

DirectShowのサンプルをダウンロードしようとして、DirectX SDK をダウンロードしたら「DirectShowのサンプルは古いSDKを見てね」ってことになっていました。なんじゃぁ?と思うと、DirectX の .NET 版も廃止。

というか、.NET版のDirectXは、XNA http://msdn.microsoft.com/ja-jp/xna/default.aspx に統合(?)されています。

XNA Game Studio 3.0 をダウンロードすると、Visual Studio 2005/2008で XNA のプロジェクトが作成できます。
XNA が何かと簡単に言えば、Xbox360のゲームを作るSDKなのですが、PCのゲームも作れます。というか、ゲーム関係のAPIが揃っています。当然、DirectX関係がごっそり入っているので、このSDKを使えば通常のアプリで作るのも問題ない、と思うのですが(多分)。ただ、普通のWindowsアプリケーションのUIならば、WPFの方が楽だろうなぁ、やっぱり。

20090612_01

プロジェクトを作って、ビルドをしてみたが、何をしていいものやら・・・。

 

さて、旧DirectXのSDKを落として来て、解凍します。
http://www.microsoft.com/downloads/en/resultsForCategory.aspx?nr=50&sortOrder=Ascending&sortCriteria=Popularity&categoryId=2&stype=ss_pd&sterm=DirectX

DirectX 9.0c Redistributable for Software Developers
http://www.microsoft.com/downloads/details.aspx?FamilyID=03c30962-4b78-4e59-8c70-32998dceffe5&DisplayLang=en

MSDN サブスクリプションからダウンロードしてきたので、上記のものと違いますが、多分大丈夫なはず。

この中にある

C:\dx9sdk\Samples\C++\DirectShow\Capture\AMCap\

が、WEBカメラの表示になります。。。って、このサンプルはELECOMのドライバに同封されていたものと全く同じ。な~んだ。
以下、雑談

旧式のPDAの場合、フラッシュプレイヤーや新しいストリーミングのフォーマットに対応していないわけですが、考えてみたら PC のほうにプロキシを立ててやって、内部でPDAで表示できるように変換させればよいのでした。
つまりは、

– 非力なPDAに無用なエンコーディングをさせない。
– PDAをサブ画面として使う。
– PDAとPCは無線LANかBluetoothで繋ぐ。

ということができればOK。あと、

– サブ画面(PDA)への操作は、タッチパネル以外の操作は行わない。
– キーボード操作が必要であれば、別途PCで操作する。
– PDA に nanoHTTP を入れ込む。

とする。

例えば、ニコニコ動画を見るためには最新の Flash Player が必要なのですが、旧式のPDAでは対応できない。ポーティングしてもよいが、手間も時間も掛かるし、第一 CPU が貧弱なのでエンコード等に PDA が耐えられない。また、ニコニコ動画のコメント機能を PDA から入力するとは考えにくい。主に閲覧に特化するだろう。そうであれば、Flash 形式ではなくて、PDA が扱える wmv 形式のストリーミングで流してやればよい。エンコードに時間がかかるよりも、読み捨てのストリーミングにして無線LANかBluetoothへの負荷を増やしたほうがよいだろう。

同様な方法は、twitter の閲覧ソフトを PDA で作るときにも言える(と思う)。twitterへの返信/問い掛けはPCでキーボードを打つほうがよい。あるいは、携帯電話か Android の形式の入力を考えたほうがよい。というか、PCのサブ画面としてPDAを使うのだから、PCのキーボードで打つほうが早い。つまり、PDA で twitter などを流す。ニュースサイトでも何でもよい。そして、PCでコメントする。この間のPDAとPCの連携を考えたほうがよい。PCではキーボード=入力担当で、PDAでは閲覧担当とか。マウスでPDAの画面を操作するようなミニ画面がPCで出る、あるいは、直接マウスでPDAの画面を操作する、あるいは、PDAを直接タッチするとか。タッチした情報は、PCに送られて該当するコメントが開かれる、とか。

今思い出したけど、これは SideShow http://trendy.nikkeibp.co.jp/article/rev/20070322/121308/ だったり。

カテゴリー: 開発 | DirectShowサンプル はコメントを受け付けていません

UCAM-E130SHSV

近くのヤマダ電器に行くと改装中…がっくし、だったのでサティのCadenへ。

Skypeフル活用パック 130万画素Webカメラ+イヤホンマイク – UCAM-E130SHシリーズ
http://www2.elecom.co.jp/multimedia/pc-camera/ucam-e130sh/
Amazon.co.jp: ELECOM Skypeフル活用パック UCAM-E130SHSV: 家電・カメラ
http://www.amazon.co.jp/%E3%82%A8%E3%83%AC%E3%82%B3%E3%83%A0-UCAM-E130SHSV-ELECOM-Skype%E3%83%95%E3%83%AB%E6%B4%BB%E7%94%A8%E3%83%91%E3%83%83%E3%82%AF/dp/B000N8UUGI

買ってしまいました。ELECOM製のWEBカメラ。
なんか安売りしていて1,250円でした。これぐらいならば、まぁいいか。

20090611_01

USB 1.1/2.0接続で130万画素だそうです。動かしてみると結構きれい。
つーか、動かしてみて思い出したのですが、VAIO type-T にはカメラが付いているのでした、、、DirectShow のテストをするだけならば、これでも良かった、、、のですが、まぁいいか。デスクトップにも使えるし。というか最終的にはゲーム画面をキャプチャしないと駄目だし。

USBバスパワーなのですが、箱の説明書きには「5V/500mAが必須」って書いてありますが、中の説明書には「100mAでも大丈夫」って書いてあります。なので、USBハブを通しても大丈夫。

LiveCapture2
http://www2.wisnet.ne.jp/~daddy/index.html

フリーでの画面キャプチャソフトも動いたので動作確認は終了。
LiveCapture2 の場合、VAIO type-T に付属しているカメラの動作は危ういのですが、ELECOM のほうはスムースに動いています。これもドライバー関係なんでしょうね。

ひとまず、これで DirectShow 関連のテストができそう。

カテゴリー: 雑談 | UCAM-E130SHSV はコメントを受け付けていません

ビデオ入力を変換

ゲーム画面をキャプチャしながらゲームするプログラム http://www.moonmile.net/blog/?p=252 の続き。

WEBカメラからの入力をUSBで受けて、動画として保存するには色々手段があるのだが、今回の場合はリアルタイム(できれば10フレーム/秒単位)で画像解析をしたい。すると、直接WEBカメラの画像を個々の静止画に落とす必要がある。

DirectShow キャプチャ – Google 検索
http://www.google.com/search?q=DirectShow+%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3&rls=com.microsoft:ja:IE-SearchBox&ie=UTF-8&oe=UTF-8&sourceid=ie7&rlz=1I7SNYL
DirectShow Capture
http://vision.kuee.kyoto-u.ac.jp/~hiroaki/firewire/directshow.html
DirectShow でビデオキャプチャ(前編) – 大阪府立大学 総合教育研究機構 第3教室 青木茂樹
http://www.las.osakafu-u.ac.jp/~aoki/cgi-bin/wiki.cgi?page=DirectShow+%A4%C7%A5%D3%A5%C7%A5%AA%A5%AD%A5%E3%A5%D7%A5%C1%A5%E3(%C1%B0%CA%D4)
PCカメラからのキャプチャ – C++&DirectShow
http://www.hyuki.com/yukiwiki/wiki.cgi?PC%A5%AB%A5%E1%A5%E9%A4%AB%A4%E9%A4%CE%A5%AD%A5%E3%A5%D7%A5%C1%A5%E3
Geekなぺーじ : DirectShowプログラミング [VC++]
http://www.geekpage.jp/programming/directshow/

DirectShow を使えば画面の描画/キャプチャができるようだ。
C++ での解説が多いが、今だと DirectX の .NET 版もあるので、C#から扱えると思う。まぁ、高速な画像解析をC#でやろうとするのはどうか、という問題はあるけど。C++/CLIで解析部分はラップするのがいいかもしれない。対戦アルゴリズム自体は C# や Lua で作るのでもよいし。

さて、WEBカメラだと画質が悪いので、ゲーム機のビデオ出力をパソコンで表示してそこから取り込むという方法もある(ただし、今回の目的は「画質が悪くても」のところに焦点を当てるので、画質にはこだわらない。というか、画質は多少悪くても「できる」ようにしないと。スペック的には 320×200 のような 低解像度のTV出力と同じレベルを考えている)。

PS2やPSPの場合はビデオ出力の端子があるので(残念ながら手持ちのDSiには無い…)、ビデオ出力をパソコンに取り込めれば良い。普通はVHSのビデオをDVDに変換するのが目的なのであるが、今回の場合はリアルタイム入力なので、取り込み画像を画面に出力させているものが望ましい。

ビデオカードを入れるっていう手もあるけど、最近は USB に変換してくれる出物がある。

PCA-DAV2
http://www.princeton.co.jp/product/multimedia/pcadav2.html

(amazonの評判では)画質的にはあまりよくないそうだが、これで十分だと思う。ArcSoft ShowBiz が付属しているからビデオ編集には持ってこい。って、ビデオ出力はできるよね?

ArcSoft ShowBiz DVD のマニュアル
http://www.princeton.co.jp/product/multimedia/img/pcadav2/ArcSoft%20ShowBiz%20DVD%202.2%20Manual%20Japanese.PDF

マニュアルを読むと「プレビューウィンドウの下に表示されている赤いボタンを~」となっているので、リアルタイムに表示はできる模様。となると、先のDirectShowを使って画面をキャプチャすることは可能なはず。

で、肝心のWEBカメラのほうは手持ちがないので、どうでもいい安物を物色中

価格.com WEBカメラ
http://kakaku.com/camera/web-camera/

Qcam Connect
http://www.logicool.co.jp/index.cfm/webcam_communications/webcams/devices/222&cl=jp,ja

なんて投げやりな値段と「ファン・フィルター」でいいじゃないでしょうか?…って、ロジクールストアで買うと在庫がないって言われるし。

DirectShow で操作可能な機種に限るので、Windows Driver Modle に従ったドライバーが出てないといけないんだが、まぁ、この時期に対応していないとは思われないので、どれでもいいのかな。

画像処理に関しては、DirectXのフィルタを直接使ってもいいのだが、手持ちの

実践画像処理入門
http://www.amazon.co.jp/dp/4563015725

を見ると、
3.濃度値変換による画像の強調
6.6 LOGフィルタとゼロ交差によるエッジの検出
12.色変換
14.テンプレートマッチングによる対象物の検出
15.ブロックマッチングによる差分画像の生成

が参考になると思う。

OpenCV プログラミングブック
http://www.amazon.co.jp/dp/483992354X

OpenCV http://opencv.jp/ のほうも調べてみるといいのかしらん?

カテゴリー: 雑談 | ビデオ入力を変換 はコメントを受け付けていません

ゲーム画面をキャプチャしながらゲームするプログラム

ってのを考えました。つーか、随分前から考えていたのですが、

– アルゴリズム部分を作ったグラフィカルな対戦ゲーム
– 以前あった、java プログラミングのタンク対戦ゲーム

を前々から作ってみたかったのです。で、最近

Blunderについて via やねうらお
http://d.hatena.ne.jp/yaneurao/20090510
コンピュータ将棋wiki
http://shogi.yaneu.com/

のような正当な(まぁ真っ当な)アルゴリズムを見ていて、私のやりたいのは(というか対抗できそうなのは)アルゴリズムの部分ではなくて、その他なんだなぁ、ということが分かりかけまして。

ならば、対戦用のプログラム(場)を作るのではなくて、既存のゲームに対してあれこれやればいいじゃん、と思い至りました。
というわけで、以下、妄想。

1.画面キャプチャをしながら、画像解析して、コントローラを動かす。
2.画面キャプチャ部分が重いし、PS2のような専用ゲーム機ではわざわざパソコンでキャプチャしないといけない。
3.本体のゲームと、画面キャプチャ&アルゴリズム部分を切り離せばよい。
4.ならば、人と同じに、TV画面から取ればいい。
5.面倒だから、WEBカメラを使ったらどうか?
6.解像度の低いWEBカメラでも認識できるように、画像解析できればよい。
7.実は、ゲーム画面は人に認識しやすく作ってあるので、
 7.1 輝度の差が大きい(グレー変換)
 7.2 縁処理で認識(エンボス)
 7.3 色/形状認識を同時にやって、自/敵キャラクタを認識
8.PS2のコントローラはUSB接続させることができるので、
 8.1 USB から変換させるか、
 8.2 USB の HID を使って、コントローラに直結(笑)させるか。これが簡単そう。

たとえばこんなのとか
http://www.amazon.co.jp/dp/B000E5GR4E

の場合は、アルゴリズムの部分は将棋ソフトよりも簡単(になるのか?)かな?

多分画像処理部分である7をどれだけ早くこなして、動態認識をするかにかかっているわけで、このあたりは人間と同じで多少「反応」に任せたり、人間らしく(?)コントロールするためには画面外からの「推測」が必要になってくるはず。
もう少し煮詰めよう。

インスパイア元はこちら↓(かも)

11歳天才少年「テレビゲームは人類にとってなんの助けにもならない。時間の無駄」 http://blog.livedoor.jp/dqnplus/archives/1271438.html

カテゴリー: 雑談 | ゲーム画面をキャプチャしながらゲームするプログラム はコメントを受け付けていません

ブログ検索(仮2)

http://www.moonmile.net/blog/?p=239 の続き

にほんブログ村
http://www.blogmura.com/

からぽちぽちと手動で検索した結果をまとめたもの。

cci20090608_00000

 

ブログ検索の場合、2つの検索があって、

a) 新しいもの(流行りもの)を検索する場合
b) 過去の詳しいデータを検索する場合

がある。a) の新着記事の場合は、各ブロガーが書いた途端に ping サーバーに飛ばし、その時点で検索できる必要がある。アニメやらテレビの批評やらがそれ。あとニュースとか。

もうひとつは一人のブロガーがコツコツためた記事を検索する場合で、過去の書評とかプログラミングの記事とか、なんかのFAQとかがそれにあたる。

で、google とか他のブログ検索と似たようなことをやると、似たような結果しか出てこないので(社会学/資本主義としてはそれでいいのだが)、所謂ニッチなところ、所謂「進化の谷間」を狙わないとだめなので、google 検索やにほんブログ村の逆をやらないといけない。

ということは(仮定として)

1) ページランキングを付けない。
2) カテゴリ分けをしない。

ことになる。

ページランキングをすると、ランキングの上位に来るように SEO 対策を行われる。他からのリンクが多い(参照が多い)ほうが他の人は参照するだろう、というランキングは、たくさんのところからリンクされるようにするという手法が発生してしまう。なので、そもそもランキングを付けないのが正しい、と思われる。
仮定としてだが、検索結果をパッと見て100件あれば十分だろう。また具体的なものを探すのであれば、10件あれば十分。逆に言えば、10件以外は目的に沿わない、検索者にとってゴミデータということになる。

カテゴリ分けをしない、のは、カテゴリを分けると探すのが大変だから。また、カテゴリを分けるのであれば、大手のものをそっくり真似してしまうと良い。
たとえば、トップからのカテゴリを10個作って、その中にカテゴリを10個作ると、全体で100個のカテゴリができる。こんなに分けても検索者には覚えきれないし、最初に「カテゴリ」を見つけることは不可能。
ならば、逆に数で分けてカテゴリを分けるか(100個にならないとカテゴリに昇格しないとか)、そもそも「何故カテゴライズが必要なのか?」を考え直す必要がある。

で、それが2枚目の思考で。

ccf20090608_00001

・新刊が出たとき
・子育てでアトピーについて調べたいとき
・新しいパソコンが発表されたら

と3つ試してみると、それぞれ行き着きたいサイトが異なる。
# 日記ブログの場合は社会コミュニケーションの一環として行われるので、この検索には当てはまらない。

こうなると、google で書評を検索しようとして amazon や bk1 がトップに来るのは「困る」ってのはどうしてなのかが見えてくる(と思う)。それは、google や amazon に取っては、(当たり前だが)モノを売るという商業主義が前面に出てくるのに対し、検索する人の第一目的は「モノを買わない」という場合もあるためだ。

本を買うときは「書名 amazon」なんてやると大抵は一番最初に出てくる(site: を使ってもいいけど、面倒なので)。が、書評なんてのは難しい。価格.com を含めたい場合は「製品名 価格」なんかでトップに出てくるからいいけど、比較したりスペックを調べてるときはちょっと手間だ(最近は価格.com から仕様でジャンプするのが早いことが分かった)。

だから、モノを調べるときに、最終的にその人が「買う」のか「比較したい」のか「興味だけがあるのか」、「もっと安いものを知りたい」のか、「買いたくない」理由を探しているのか、あるいは、対処法を探しているのか、類書を探しているのか、なんて具合に、最終的に何がしたいのか?を思い遣らないと、うまく検索結果をその人にマッチさせることはできない。
という訳で単純な全文検索(マッチングとランキング)だけでは、目的に辿りつかないことが分かった(納得できた)ので、次の手を考える。

情報検索入門ハンドブック 

books.or.jp
http://www.books.or.jp/ResultDetail.aspx?IdString=0%2cMAIN%2cNODE%2c430687&scode=&searchtype=0&title=%8f%ee%95%f1%8c%9f%8d%f5%93%fc%96%e5%83n%83%93%83h%83u%83b%83N&writer=&syuppansya=&showcount=20&startindex=0&SyuppanCode=7621
amazon
http://www.amazon.co.jp/dp/4585071245
勉誠出版
http://www.bensey.co.jp/book/2036.html
bk1
http://www.bk1.jp/product/03036231
google ブログ検索
http://blogsearch.google.co.jp/blogsearch?hl=ja&ie=UTF-8&q=%E6%83%85%E5%A0%B1%E6%A4%9C%E7%B4%A2%E5%85%A5%E9%96%80%E3%83%8F%E3%83%B3%E3%83%89%E3%83%96%E3%83%83%E3%82%AF&btnG=%E3%83%96%E3%83%AD%E3%82%B0%E6%A4%9C%E7%B4%A2&lr=lang_ja

な感じにまとめてくれるといい。
# ちなみに↑のリンク先に有用な情報は少ない…。

この本は図書館で借りてきた。結局のところ、検索技術ってのは図書館で館員に「こんな本がありますか?」と尋ねるのと同じなので、いくつか図書館に関する本を読んでいる。
この本は多少書籍検索に偏ってはいるけれど、特許の検索とか政府刊行物とか。
おまけ、
地図閲覧サービス(ウォッちず)
http://watchizu.gsi.go.jp/index.html
電子国土
http://portal.cyberjapan.jp/index.html

国土地理院が「試験的」に出しているサービスで、電子国土webシステムってのがある。
google map に押されている(って当たり前か)けど、電子国土ってのは、ロゴを表示すれば自由に利用できる模様。

# 地図の出来としては、google map に提供しているゼンリンのほうが格段に上。

カテゴリー: 雑談 | ブログ検索(仮2) はコメントを受け付けていません

Bug labs

今月のSoftware Design を立ち読みして、

オープンソース・ハードウェアのBug Labsから最初の写真
http://jp.techcrunch.com/archives/first-pics-of-bug-labs-open-source-hardware/
Bug LabsのモジュラーなデバイスでGoogleのAndroidが走るらしい
http://blog.browncat.org/2007/11/bug_labsgoogleandroid.html
Bug Labs: modular, open source hardware
http://www.buglabs.net/
BUGbase 先行出荷版はWiFiなし、「Hiro P」バージョン
http://japanese.engadget.com/2008/01/21/bugbase-wifi-hiro-p/
LEGOのような組立ガジェット「BUG」- 開発者向けの予約受付開始 | パソコン | マイコミジャーナル
http://journal.mycom.co.jp/news/2008/01/23/005/index.html
【ETech続報】まだまだ進化途上にある“オープンソース・ハードウエア”,効果はこれから… – 家電・PC – Tech-On!
http://techon.nikkeibp.co.jp/article/NEWS/20080311/148822/
Latest BUG Releases – BUG Wiki
http://bugcommunity.com/wiki/index.php/Latest_BUG_Releases
Showing posts » BUG Community | Bug Labs
http://community.buglabs.net/blog

2008年だから2年程前になるけど、レゴブロックみたいに組み上げるモバイルデバイスの話。

– 組み込み Linux で動作
– API は Java を使う。
– 主に Eclips 上で開発
– サイト http://www.buglabs.net/products に行けば日本でも買えるみたい。
 — Bugbase(必須)$249.00(値下げしている)
 — BUGview(ディプレイぐらいは必要?)$119.00 タッチスクリーン(320×240)だそうだ。

無線LAN(WiFi)が無い。初期バージョン「Hiro P」から2年程経っているが未だに次のバージョンが出ていない。

What About WiFi?
http://bugblogger.com/what-about-wifi-84/

のエントリーを読むと、無線LANのオープンソース化が難しいってのが書いてある。

In a pure, GPL, open source world, getting Wifi working is tricky. In fact, it’s almost impossible. Not because the hardware isn’t available, though getting a vendor to even talk to you as a small company is difficult, it’s the software drivers. Until recently, they simply haven’t existed in a form we could use. I won’t go into all the
technical reasons why (I’ll leave that to the forums) but suffice to say, we couldn’t get it ready in time for our first committed ship date while remaining true to our commitment to stay 100% open source.

BUGBase のスペックをみると、
http://www.buglabs.net/bugbase

USBは付いているのでUSBの無線LAN付きなら差し込めると思うし。

と思ったら、WiFiモジュールはあるみたい。

Bug Labs オープン・ソースハードウェア新5機種http://www.slashgear.jp/2009/01/post-3348/
# でも、Bug Labs Store では買えない…
組み込みLinux系の勉強にはちょうどいい機器だと思う。
API が Java なのがアレですが(私がJavaから遠いのが原因なんだけど)、Android USB化もうまく起動できない(たぶん、USBメモリへのインストールの仕方が問題なだけだろうけど)ので、お試し開発/練習用としては3万円で買うのはいいかもしれない。

カテゴリー: PDA | Bug labs はコメントを受け付けていません

メモリ&HDD増設完了

というわけで、インストールマニアックス参加賞の NEC Express5800/110Ge を増設。

NEC Express5800/110Ge まとめwiki
http://wiki.nothing.sh/page/NEC%20Express5800%A1%BF110Ge

を参考にして、

W2U800CQ-2GL5J を購入しました。non-ECC だけど、動作確認は取れている模様。
現在換装後、2GBを2枚差しで4GBで動作しています。ECCの半額なのでリスク込みで、ということで。HDD は日立の製品を買って1TBまで増設。
両方合わせてクレバリーで1万円ちょっとでした。
このサーバー機、外部のファンが2つ、電源が1つ、CPUのが1つついているわけですが、結構うるさい。試しに外部のファンを止めてみたのですが、それなりにうるさいのでCPUのファンがうるさいみたいですね。仕方がない。機会を見てファンを変えるか。マシンを変えるか(苦笑)。

さて、ブログ検索の計画でも立てよう。

カテゴリー: インストールマニアックス2009 | メモリ&HDD増設完了 はコメントを受け付けていません

ブログ検索(仮)

ブログ検索 http://www.moonmile.net/blog/?p=116 の続き。

perlのspideringを使ってブログ個別にクローリング、ってのを考えてみたものの、クローリング自体が重たい処理になってしまうので、ちょっと考える。

最近/当初も?ブログを登録すると当然のようにpingサーバーに通知するようになっている。大手のところに登録すると、検索ができたり、ランキングしたり、なんかカテゴリにまとめてくれたりする。普通はブログのアクセスアップに使われるのだが、これを利用する。
# 本当は ping を受け付けてもいいのだが、大手でもないし実験だし。なので大手のものを利用する。
日本ブログ村
http://www.blogmura.com/
Googleブログ検索 BETA
http://blogsearch.google.co.jp/
ブログ更新通知pingの送り先リスト(参考に)
http://vivablog.net/seo/kiji14/

この中から、
1.直近10~30分ぐらいの間隔で、新着エントリのURLを取得する。
2.指定URLへエントリを取りに行く。
3.データベースに貯め込み、検索用にごにょごにょする。

ってな感じでOK。
対象は日本語で書かれたブログがいいので、数は相当少なくなるはず。
検索に引っかからないブログやpingしていないブログがあるので、これは個別に取りに行く必要がある。が、当面はpingサーバーで取れるものだけで実験ができるだろう。

あと、私的には英語のプログラミング技術情報も押さえておきたいので、これは別途検討。
そう、新商品の発表なんかは昨今twitterが利用されている(のかな)らしいので、こっちも同時に拾うといいのだけど、手広くなってしまうので今のところパス。PDAでリーダーだけは作ってみたいな(iPhone風のインターフェースで)。Windows CE でも DirectX が使えるので、透過とかの真似はできるはず。できなかったらビットマップで切り替えればいいし。

カテゴリー: 開発 | ブログ検索(仮) はコメントを受け付けていません

インストールマニアックス予選落ち

「落ち」たので記録しておく。自分に対して(苦笑)。
さすがに30個ぐらいでは無理ね~。SQL Serverで動かそうとやっきになってしまい、ついつい数が御留守になってしまいました。50個ぐらいが予選のボーダーラインだと思ったのですが、もっと上っぽいですね。60個以上は入れないと駄目だったみたい。

まぁ、私としてはプログラマだけど
– 色々インストールすることができて他のOSSを見ることができた。
– PHPの設定は大丈夫になった(と思う。初心者だが)
– PHPは意外と(誤解していてごめん>PHP)使えることが分かった。
– 本格的にOSSを組み合わせようという気になった(かも)

ってなところです。

ひとまず、手持ちのサーバーは平日昼間運用に移行(ファンがうるさいし、電気代がもったいないし)することに決定。そして、メモリを増設する(4GB)ことに決定。HDDも増設(1TB)に決定。最初は CPU を変えて Hyper-V を動かそうと思ったけど、やめ。しばらくは、Windows Server 2008 Web Edision のまま運用。
今、考えている用途としては、

■ASP.NETの○意

これは数年前からやりたかったページで ASP.NET Quickstart Tutorial http://quickstarts.asp.net/QuickStartv20/aspnet/ のように ASP.NET のソースが眺められて、さらに動かして確かめられるという代物。○意は本でCD-ROM収録でもいいのだが、実際にブラウザで確かめられるほうがお手軽だし、インストールいらずなので。ASP.NET を動かせるところを借りてもいいのだが維持費が高いのでパスしていた。

■ブログ検索用のspidering

ブログ検索 http://www.moonmile.net/blog/?p=116 の続き。
考えてみたらブログの場合は、ping サイトに通知していることが多いので、ping サイトから最新のURLを引っ張ってくればよいことが分かった。そのあとは、どうやって数時間前のものを拾ってくるかはひと工夫必要なんだが、これは別に考察する予定。

■PHPの実験場

PHP自体はここの外部ホスティングでも動くので、その前の実験場として。
サーバーの管理や電源供給を考えると、外部サーバーのほうが手間もお金も掛からない。ただ、あれこれデバッグするとなると手元のマシンにあるほうがいい。拡張モジュールを試したりするとか。

なところ

カテゴリー: インストールマニアックス2009 | インストールマニアックス予選落ち はコメントを受け付けていません

PDAからPCへリモコン操作

PDAで無線LANを扱う(仮) http://www.moonmile.net/blog/?p=208 の続き

PDAがクライアント、PCがサーバーのパターンとして、PDAからPCをリモコン操作することを考える。つまりは、クラサバを作ってやれば良いわけで、作ってみたのがこれ。

09-06-01_11-07

09-06-01_11-08

PDA クライアントのソースはこちら

using System.Net;
using System.Net.Sockets; namespace RemoCon01
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }         private void Form1_Load(object sender, EventArgs e)
        {
            this.pictureBox1.Size = this.Size;
            this.pictureBox1.Image = Properties.Resources.peorth;
        }         private string HOSTNAME = "192.168.0.7"; // "iomante-pc";
        private int PORT     = 9000;         private void pictureBox1_Click(object sender, EventArgs e)
        {
            int n =
                MousePosition.X / (pictureBox1.Width / 3) +
                MousePosition.Y / (pictureBox1.Height / 3) * 3;             //PCにコマンドを送る
            TcpClient tcp = new TcpClient();
            try {
                tcp.Connect(HOSTNAME, PORT);
                NetworkStream stream = tcp.GetStream();
                byte [] buffer =
                    System.Text.Encoding.ASCII.GetBytes(
                    string.Format("R{0}", n ));
                stream.Write( buffer, 0, buffer.Length );
                tcp.Close();                 MessageBox.Show(string.Format("送信 R{0}", n));             } catch ( Exception ex ) {
                MessageBox.Show( ex.Message );
            }
        }
    }
}

PC サーバのソースはこちら

using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace RemoCon01PC
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }         private void Form1_Load(object sender, EventArgs e)
        {         }         // ワーカースレッド
        private Thread work;
        private TcpListener server;         // サーバを開始する
        private void button1_Click(object sender, EventArgs e)
        {
            // ワーカースレッドの作成と開始
            work = new Thread(DoWork);
            work.Start();
        }
        // サーバを終了する
        private void button2_Click(object sender, EventArgs e)
        {
            server.Stop();
        }
        // ワーカースレッド
        private void DoWork()
        {             // リスナーを作成する
            server = new TcpListener(IPAddress.Any, 9000);
            // リスナーを開始する
            server.Start();
            textBox1.Text = "サーバー開始";
            try
            {
                while (true)
                {
                    // クライアントからの接続を受け付ける
                    TcpClient client = server.AcceptTcpClient();
                    NetworkStream stream = client.GetStream();
                    // 受信データの読み出し
                    byte[] data = new byte[100];
                    int len = stream.Read(data, 0, data.Length);
                    string str = System.Text.Encoding.ASCII.GetString(data, 0, len);
                    textBox1.Text = "受信データ:" + str;
                    client.Close();
                }
            }
            catch (Exception ex)
            {
                textBox1.Text = "サーバー終了";
            }
        }
    }
}

本当は.NETリモートでやりたかったのだが、なんと!.NET Compact には.NETリモートが無い。ので、仕方がないので、TCP/IPで接続。IPが直書きになっているけど、気にせず。

TCP/IPで接続しているので、いろいろ送ることができるのだが、PDAの操作は決まっているので単純な(あまりにも単純な)コマンドを送っているだけです。PDAの画面を9分割して、タッチされたところの番号をPCに送ります。PCのほうは、コマンドを表示しているだけです。これに対応した「何か」を動かせばOK。
ブラウザの前/後へを考えたけど、画面をクリックしないと駄目なのでパス。DVDの出し入れとか、音量とか、なんかのアプリ起動に使えるだろう。

以下、エミュレータを使ったときの注意点。

最初、エミュレータでTCP/IP接続を確認していたのだが、

「エミュレータのネットワークを有効にする」

ことを忘れて、半刻ほど悶絶。

[ファイル]→[構成]で「エミュレータのプロパティ」を開いて「ネットワーク」タブで、ネットワークアダプタを有効にしないといけない。

09-05-28_11-202

後、エミュレータで直接Socketを使うと非常に遅い。Connect時にハングアップしたんじゃないかというほど遅く、1分ほどかかる。これは実機のPDAでやるとすんなり繋がるので、エミュレータの問題かな?

ボタンの位置を MousePosition で取得していのだが、エミュレータだと、本当のマウスの位置(笑)が取れる。エミュレータのウィンドウの左上ではなく、ディスプレイの左上からの位置が取れる。なので、マウスクリックを取る場合は、エミュレータの位置を左上にしないといけない。

カテゴリー: PDA | PDAからPCへリモコン操作 はコメントを受け付けていません