Visualize real-time data streams with Gnuplot gives us a metod to plot streaming data in real-time with Gnuplot.
Suppose to obtain inverse matrix of "matrix", where "matrix" is an object of boost::numeric::ublas::matrix<double>.
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/lu.hpp>
using namespace boost::numeric::ublas;
permutation_matrix<> pm(matrix.size1());
matrix<double> copiedMatrix = matrix<double>(matrix);
lu_factorize(copiedMatrix,pm);
matrix<double> inverseMatrix(identity_matrix<double>(copiedMatrix.size1()));
lu_substitute(copiedMatrix,pm,inverseMatrix);
The "inverseMatrix" object includes components of the inverse matrix.
『Sorting Algorithms』では、いろいろなソートアルゴリズムが紹介されています。
また、それぞれのアルゴリズムの動作を目で確認することができます。
動作を視覚的に確認してみると、徐々にソートされていくもの、あるとき手品のように一気にソートされてしまうものなど、それぞれのアルゴリズムの特色がよく分かります。
どんなことでもそうですが、感覚的、直観的に理解したものは、本質を理解できているのでなかなか忘れないし、いろいろなことに応用できます。
いかに直感的に理解するか、また伝えられるか、これが重要ですね。
『Conferences Map』が、IEでうまく動作していないことを発見しました。
「Firefox」では動作確認を行っております。
できるだけはやくIEにも対応したいと思います。
取り合えずの機能をつくっちゃいたいなぁとも思ったりも・・・(笑)
チェックボックスを選択したときの動作を変更しました
(変更前) マップ上のマーカのみ表示/非表示が切り替え可能
↓
(変更後) タイムライン上のマーカも表示/非表示の切り替えが可能
次は、マーカをクリックしたときに表示される内容の整形です。
GoogleのGeocodingサービスを利用して、住所から緯度・経度を取得するためのクラス『Geocoder』をRubyで書いてみました。
久々の”プログラミング関連エントリー”ですね~(^^;
『Conferences Map』のデータ作成用です。
○カンファレンスデータのデータ構造を変更しました。
緯度・経度情報をあらかじめ格納するようにしました。
この変更に伴って、Google map上に表示するマーカ作成のプログラムを変更しました。
○分野を選択できるように、トグルボタンを追加しました。
「Engineering」や「Management」といった分野別にマーカが表示できるようになりました。
マーカの色も分野ごとの変更しました。
現在は「Engineering」が青、「Management」が赤のマーカでそれぞれ表示されます。
『LIBSVM』はサポートベクターマシン(SupportVector Machines)のアルゴリズムを利用するためのライブラリです。
サポートベクターマシンは機械学習アルゴリズムの一種で、画像認識やスパムフィルタなどに応用することができます。
『Support Vector Machines (SVM) in Ruby』にサポートベクターマシンの概要と、Rubyから『LIBSVM』を利用する方法が紹介されていました。
サポートベクターマシンの参考サイト
サポートベクターマシンで、情報処理用に自分のコピーが作れないでしょうか・・・
『Conferences Map』が、なんとか動くところまできたのでサンプルを公開しました。
今回の仕事
成果
○国際会議データを取得した
○データの整形するスクリプトが完成した(あとで書き直す)
○住所→緯度経度変換を実装した
はまった点
○コールバック関数の取扱い
具体的には、Geocoder.getLatLng()関数です。
基本的は、「気が向いたときでいいんであとお願いね」って関数かなって感じで理解。
実際に動かしてみると、当然のことながら動かしたからわかる問題点というのが多々出てきます。
たとえば、
○一度にたくさんの住所から緯度・経度を得られない。
○緯度・経度が見つからない住所がある。
○同じ期間に会議が集中すると、タイムラインに表示しきれない。
など。
いろいろいじって、重大な問題点から潰していかねば・・・
次回以降の仕事(あとでまた考える)
○「住所→緯度経度変換」をデータ整形にしておくようにする
今回、はまった仕事がいらなくなる(TT)
○表示する会議が多くなったとき、タイムラインの表示を工夫する
○ドメイン名を考える
○ドメインを取得する
○データベース使う?
○マスコットは?(笑)
○これからの計画を検討する
うぅー、ねむい。。。
国際会議へ参加するとき、その開催地は多くの参加者にとって最も関心あることの一つであることは間違いありません。
英語で発表しなければならない国際会議、どうせ出席するなら国内よりも海外でしょうというのは、私だけではないはず(笑)
そこで、「開催地を基準にして参加する国際会議を決めよう」という発想で、国際会議検索サービスを開発することにしました。
検索といっても、地図上に表示された会議の場所とタイムラインに表示された開催期間の情報をもとに、お好みの会議を探すだけです。
↓大まかなインターフェースが、完成しました。
地図とタイムラインの情報は連動して表示するようにしているので、地図とタイムラインのどちらからでも会議を探すことができます。
今月中には、会議データの追加とドメインの取得をして、世界に向けて公開したいですね。
Classes:
1. Comm - Allows communication between players online
2. Drawing - Plot polygons and images to a drawing canvas
3. ThreeD - 3D matrix math for polygons and hidden surfaces (General)
4. ThreeD - 3D matrix math for polygons and hidden surfaces (FPS optimized)
5. Wiimote - Wii Remote input and motion interpretation
『~「Think Parallel」、並列処理導入の重要性~』というセミナーに参加してきました。
ムーアの法則は依然として健在ですが、シングルスレッドのパフォーマンスは減少しています。
そこで近年、CPUの演算速度を向上させるために、CPUのアーキテクチャーが変わりました。
CPUが複数のコアをもつようになっています。
ジェームス レインダース氏(米国インテル社 チーフエヴァンジェリスト)によれば、コアの数は、5年以内に40コア以上になるとのことです。
また、2010年には全てのPCがマルチコアのCPUに置き換わるという資料が示されました。
したがって、マルチコアを意識した並列処理プログラミングが今後より重要となってくるというわけです。
会場が暗く過ぎるのとお昼を取った直後だったことがあり、開始と同時に昼寝モードへ移行ですzzZ
覚えているキーワードだけ列挙してみます。
○並列には、「タスク」の並列と「データ」の並列がある。
○STLはスレッドセーフでない。
○TBB(Threading Building Blocks)で並列プログラミング
○TBBはスレッドセーフなデータ構造を提供する。
○TBBは、コマーシャルとGPLのデュアルライセンス。
なんとなく面白そう&とっつきやすそうな印象です。
TBBをつかって簡単な並列処理プログラミング挑戦してみようかな。
grepなどの検索系は、激速になりそうですね。
p.s.
会場には、同時通訳のお姉さんがいたのですが、この方がすごい。
テレビ局が時々やる同時通訳は、すごく聞きづらいんですが、
この方の場合は、非常に聞きやすかったです。
プレゼンターの発言を速記している手元が見えたんですが、すごい。
文字じゃないのは分かるんですが何を書いているのかすごく気になりました。
日本語→英語も、質問者の質問が完結するまえに、ガンガン通訳していく。
すごすぎ。
今回のセミナーで一番の注目点は、「同時通訳のお姉さん」でした(^^。
情報(データ)を視覚化するためのライブラリ『prefuse』と『flare』の紹介です。
与えられた情報は膨大だ。
そこからほしいデータをスムーズに取り出したい・・・
さぁ、どうする?
与えられた情報をうまく視覚化する事が一つの解法ではないかと思います。
情報をうまく視覚化することで、情報全体を俯瞰できるようになります。
俯瞰することによって、情報のどの集合のなかに、目的の情報がありそうか見当がつけやすくなるからです。
また、データをいろいろいじっているうちに、新しい発見があるかもしれませんね。
このデータ構造とこのデータ構造は似てるなぁとか、局所的には違うように見えるデータ構造でも、大局的見てみると似ているデータ構造があるぞ・・・なんてかんじで。
前置きが長くなりました。
『prefuse』は、Java用のライブラリです。
ActionScript3用のライブラリとして『flare』が提供されています。
ライセンス形態は、「BSD license」です。
まずは、「visualization gallery」や「demonstration video」で、そのおもしろさを体験してみてください。
p.s.
あー、じっくりプログラミングしたいかも・・・
いろんなことが、Javaだけで簡潔できそうな雰囲気。
やってみないとわからないけどね(笑)
Chart、Graphを描くためのライブラリが紹介されています。
どのライブラリもクオリティが高いですね。
p.s.
ウェブ上で動的なグラフを作成できるライブラリを探していたので、参考にしたいと思います。
マウスでスタイルシート(CSS)を動作を確認できるサイトの紹介です。
『CSS Sandbox』では、CSSのプロパティの種類と設定可能なプロパティの値が確認できます。
プロパティの値をマウスで選択すると、そのプロパティの値が設定され、表示がどのように変わるのかという動作の確認することもできます。
CSSで設定できるプロパティのかなりの数あるので、どのプロパティを変えると、表示がどう変わるのかということをすべて覚えておく結構大変です。
そんな場合、『CSS Sandbox』のような、動作をリアルタイムで確認できるリファレンスサイトは便利ですね。
p.s.
プログラミングの世界では「百”文”は一見に如かず」ですよね。
APIのドキュメントを読んで”想像した動作”と、実際にプログラムを”動かしてときの動作”が違うということを経験されている方も多いのではないでしょうか。
『CSS Sandbox』ような動きが見えるリファレンス、ドキュメントは非常に助かります。
○「30+ Free Three-Column Website Templates」
3コラムのウェブデザインテンプレートが紹介されています。
○「favicon.cc」
faviconを作成できるウェブサービスです。
○「pForm」
フォームを作成できます。
○「Spiffy Box」
丸かどのBoxを作成できます。
あとは、コンテンツ!
これだけは、自分で用意しましょう・・・
「MAsh(仮称)」では、情報を提供してくれるAPIと機能を提供してくれるAPIを組み合わせて、Unixのパイプのような処理を実現することを目的に開発を進めています。
現在は、数値が含まれるデータをチャート形式で表示することに取り組んでいます。
具体例をひとつ考えて見ます。
ニュース検索やブログ検索の結果得られた文章を形態素解析します。
形態素解析した結果をチャートにするといったことが簡単にできるようなります。
そこで、いろいろチャートを作る方法を調べてみました。
まず、Web APIでいいものがないか調べてみたのですが、なかなかこれといったAPIがみつかりませんでした。
検索対象を広げて結果「amCharts」というライブラリを発見しました。
いくつかの種類のチャートをflash形式で出力することができるようです。
デザインは問題ないので、簡単につかえそうなら採用です。
チャートが描けたら報告しますね。
「Mash(仮称)」でできることを整理しました。
help: コマンドリストを表示します。
reflexa: reflexa APIをつかって連想検索を行います。
(例) reflexa さくら
techs: Technorati Search APIをつかって、ブログ検索を行います。
(例)techs ニュース
techc: Technorati cosmos APIをつかって、指定したURLに対してリンクしているブログエントリー検索を行います。
(例)techc http://kazuhiro.ty.land.to/blog/
hotpepper: ホットペッパーAPIを利用して、飲食店検索を行います。
(例)hotpepper すし
gmap: 緯度経度情報がある検索結果を、Google Maps APIを利用してgoogle map上に表示します。現在は、hotpepperの検索結果のみに対応しています。
(例)hotpepper すし | gmap
oshirase: oshira.se APIを利用して、ニュース検索を行います。
(例)oshirase プログラム
ma: Yahoo!の日本語形態素解析Webサービスを利用して、形態素解析を行います。
(例)ma 形態素解析
grep: 各APIから取得した結果(XML形式)をXPathでgrepします。ここで利用できるXPathはjQueryで利用できるものに限ります。(後に変更する予定です)
(例)hotpepper すし | grep //Shop:eq(0) | gmap hotpepper
ホットペッパーの検索結果から、最初の店舗を検索して、google map上に表示させています。
grepした結果をgoogle map上に表示させる場合には、XMLのデータ形式をgmapの引数として
指定する必要があります。ここでは、hotpepperを指定しています。
timeline: 時間の情報がある検索結果をtimeline上に表示します。現在、oshiraseの検索結果のみ(RSS形式)に対応予定しています。RSS内のリンクが使えるように改良中です。
(例)oshirase プログラム | timeline
xml2tree: 検索結果をtree形式で表示します。
(例)hotpepper すし | xml2tree
clear: コマンドの履歴を消します。
(例)clear
おかしなところがあるかもしれませんが、その際には、コメント等でご連絡いただければ幸いです。
よろしくお願いいたします。
あなたのブログにも、フィードのインクリメンタルサーチ機能を導入しませんか!
というわけで、Feed Search Service α版(仮称)の提供を開始します。
やっと公開にこぎつけました(TT)
IEでは、時々動作がおかしくなることがあります。
ご迷惑をおかけしますが、問題がございましたら、ご連絡をお願いいたします。
Firefox 2、IE7、IE6で動作することを確認しております。
(2007/05/04)
マウスイベント処理に関するコードを変更しました。
Firefox 2, IE7@Windows XPで問題なく動作することを確認しました。
引き続き問題がありましたら、ご連絡をお願いいたします。
(2007/05/06)
(説明)
Feed Search Service(FSS)とは、フィードを手軽にインクリメンタルサーチする
ための環境を提供するサービスです。
ブログにFSSを導入すると、そのブログのフィードを、いつでも簡単に検索することが
できるようになります。(α版では、最近のエントリから最大20件までを検索できます)
(動作例)
動作例として、このブログのトップページにFSSを導入してみました。
よろしければ、お試しください。
一人でプログラミングをすることの多い私は、これまで
「システムのモデリングなんで思いつきでいいかなぁ」
とか、
「時間がとられる分、どのくらい効果があるのかわからない」
などと思って、まじめにシステムをモデリングしてきませんでした。
しかし、今、複数人で短期にシステムを構築することにチャレンジしています。
複数人の開発では、システムの全体像、必要な機能と不必要な機能、自分はどこを担当するのかということを前もってきちんと決定しておかねばなりません。
一人だったら、「あっ、おかしい、仕様変更~♪」なんてことが、実装しながら可能ですが(笑)
また、文章に起こすということは、考えを整理するうえで、非常に重要な役割をはたします。
頭の中だけでは、気づかなかった間違いや、あいまいな点を発見することができます。
そう考えると、一人で開発するときも、システムのモデリングをしておいたほうが、効率良く、よりよいシステムの開発ができるかもしれません。
前置きが長くなってしましたが、そんなわけで、今回、システムのモデリングをきちんとやってみることにしました。
Flickrの画像検索結果をつかって、試してみたいことができたのでFlickrのAPIを復習してみました。
まず、「Rubyで「Flickr API」を利用する」の記事で紹介したプログラムをクラス化しました。
次に、「RubyでCGIにチャレンジ」を参考にして、画像を検索して、検索結果をまとめて表示するアプリケーションを作成しました。
XSLTは本来、「XMLによって記述された文書を他のXML文書に変換するための簡易言語」(IT用語辞典)らしいのですが、ちょっとしたマッシュアップサイトをアプリケーションを作成するためにも利用できそうです。
RSSの見栄えをよくするために、XSLTをつかってRSS->HTML変換コードを書いて見ようと思いました。表示形式を変えただけでは、面白くないので、RSSの情報に外部のウェブサービスで提供されている情報を加えることにしました。
最初の試みとして、「はてなブックマーク」と「livedoorクリップ」が提供するサービスを利用することにしました。これらのサービスが提供するAPIを利用すると、あるURLに対する被ブックマーク数を画像で取得することができます。
テストを書くことによって、クラス間の独立性が促進されるとは・・・。
クラス単体でのテストを簡単に実行するための準備が、そのまま、コードの質(クラスの独立性?と勝手に理解)を促すんですね。
今日は時間がないので、なんとなぁ~くな理解です。今度じっくり、あたってみます。
追記(2007/02/28)
「テストファーストによるソフトウェア開発の衝撃(後編)」
最近同じページばかりみていませんか?
私は、毎日、ある程度決まったページを巡回する生活をおくっている気がします(^^;
PC関連、プログラム関連・・・。
新たなジャンルでも趣味に関するサイトでも、改めて面白そうなサイト(以下「おもしろサイト」)を探そうとしても、なかなか見つけられません。
新たな「おもしろサイト」を探す場合、「おもしろサイト」を紹介しているサイトか、「おもしろサイト」自体にうまくたどり着かなければなりません。
この「おもしろサイト」探しという名の「冒険」で、重要なアイテムが「検索エンジン」というわけです。
いざ検索、そこで、気づくのです。
「Google Web Toolkit」がApache2.0ライセンスのもと、オープンソースかされました。
詳しくは、「Google Web Toolkit Blog」を参照してください。