Sky
sky ray clouds park inokashira
by Blue Lotus
2007年12月
mod_proxy で特定のディレクトリを除外する
Apache httpd 2.2 + Tomcat 5.5 の組み合わせでは、mod_jk を使った接続がよく使われていますが、mod_proxy_ajp も経験的に安心して使えるようになってきました。
ROOT Web Application への設定を、
<Location />
ProxyPass ajp://hostname:8009/ keepalive=On min=30 max=30 ttl=86400
</Location>
のように行いますと、/ 以下のディレクトリの制御が Tomcat 側に持って行かれてしまいます。
たとえば /images/ ディレクトリを複数のサーバが参照する共有ディスクに配する場合、これですと困ったことになります。
こういった場合は ProxyPass ! を用いて、
Alias /images /mnt/share/images
<Directory /mnt/share/images>
Order allow,deny
Allow from all
</Directory>
<Location /images>
ProxyPass !
</Location>
のように Proxy 対象から除外します。
森田::
.
いまどきの略語
私としましては、少し前にやっとKYを勉強したところだったのですが、
最近は色々あるのですね。
『MHZ = まさかの匍匐前進」』
が個人的に人生でもっとも使用頻度が少ないかと思われます。
tRobo
.
人物や企業のソーシャルグラフを表示するビジネス向け検索エンジン「SBI Business」
by CNET
CNETの記事でご紹介いただきました。SBI Businessではまだ一般のビジネスプロフィールの登録は行っておりませんが、人物検索ができるようになっていますので、この機会に自分の情報や身近な人の情報どのようにウェブに公開されているか調べてみてください。私たちの知らない間にけっこういろんな情報が出ています。検索エンジンにとってプライバシーなどはありません。ウェブに公開された時点でクロールしてインデックスして検索されたら結果を返す、というのがこのアルゴリズムの宿命なのです。
SBI Businessではまず自分を検索してもらって自分を知ることから始めたいと思います。その上で自分自身をSEOする手段としてのビジネスプロフィールを提供します。だれもが正しい情報を発信できるよう、公開することによってプライバシーを守る手法を提供していきたいと思います。またWeb2.0の次のトレンド言われるソーシャルグラフも検索エンジンが解析して表示する機能を持っています。ウェブで公開されている情報によって人と人、人と企業がどのような相関図にあるか把握できることでしょう。
この新しいコンセプトの人、会社、ビジネスのソーシャルグラフ検索をお試しください。
http://www.sbibusiness.com/
SBI Robo 渡部薫
.
人、会社、ビジネスのソーシャルグラフの発見! SBI Business人物検索をプレリリース
自分がウェブでどう公開されているか知る
人のつながりを発見する
あなたは世界中の人につながっている
ウェブ時代のビジネスマンのためのツール
まずは自分や身近な人を検索してみることから始めよう。
人、会社、ビジネスのソーシャルグラフの発見!
SBI Business
.
地球規模の発想
年末になるとテレビはどんどんおもしろくなくなりますね~。ここ数年同じような番組編成で新しい企画が怖いのか、取り組めないのか、毎年同じようなことをしていれば安心なのかわかりませんが、とにかくおもしろくないです。
その一方、年末になってくると個人で発信しているブログとかSNSとかイベントが多いせいもあるのか、時間に余裕ができるのかおもしろいものがたくさん出てきます。ためになるニュース記事もたくさん出てきてどれだけ吸収できるかなと思います。
今日ご紹介した記事はまたGoogleの話ですが、、、ウェブはほんとうにGoogleに支配されてしまったのでしょうか、、、それとも僕は狂信的なGoogle教の信者なのか(笑、、、でも学ぶべきことが多いです。
最近僕はあまり自分で本当に思っている企画とか考えはあまり人に話さないようになりました。僕の思考が飛びすぎているのか、人って理解を超える話をされる と考えるより理解不能フラグを出すんですよね。。。あと企画そのものはある企画や理解がベースになって初めてその意味がわかるようなものだと今しているこ とがまるで宇宙旅行計画みたいな感じに受け取られるのもいやなのでなるべく現実的な範囲にとどめようと思い始めました。
なのでこの記事みたいなものを読むとアメリカの度胸というかアメリカ企業、社会の受け皿って本当に深く広いんだな~と思わずにはいられません。アイデアも 考え方もまず常識や学んだ既成概念を破ることから始まるわけです。もし僕がまだ子どもだったら今よりもっとアメリカの学校や教育を受けたくなるだろうなと 思います。
日本人のいいところは何事もきめ細やかで繊細で丁寧でやさしいんですが、唯一の欠点は発想が狭いところだと思います。広くしてしまうと細かいところが見え ないからかなー?と思いますがどうしてなんでしょうか。インターネットやウェブがある限り、もっともっと視野を広くして考えなければならない、発想をもっ ともっととんでもないもののしなければならないと思いました。どうすればそんな訓練ができるのかわからいですが、とにかく限界を決めるのは自分だからバカ だと思われるくらい激しく飛びぬけた発想をしなきゃならないってことだと思います。
ここに書かれているような地球規模な話などはこれまではIT鎖国されていた日本人にはあまり関係なかったかもしれないですが、今の日本の子どもたちは直接 Googleに触れて学ぶことができます。一大人として子どもたちには制約のない地球規模の発想力を身につけてほしいと思いました。
SBI Robo 渡部薫
.
オスカーピーターソン
歴史的なJazzピアニスト、オスカーピーターソンが逝去されたというニュースを見ました。
僕は数あるピアノトリオの中でも、オスカーピーターソンの作品を特に好んで聞いていたので、このニュースは非常に残念です。
一言でオスカーピーターソンの音楽を表すなら、僕は“FAN”だと思います。
十分なテクニックとセンスに加え、本当に楽しそうな“音”が自分の耳を惹きつけます。
今年は有名なJazzプレーヤーが数々亡くなられています。
マイケルブレッカー、ジョーザビヌル、そしてマックスローチ。
常に刺激的な音楽をクリエイトし、歴史を塗り替えてきた偉人達です。
彼らのように努力を惜しまず、常にポジティブ・アティテュードで、
次の世代に残せる何かを生み出せたらと思います。
もうすぐ新しい年を迎えますが、気持ちも新たに一歩一歩前に進んで行きたいと思います。
BM
.
Googleとドコモ
|
今朝の日経にGoogleとドコモの提携ニュースが出ましたね。 携帯電話がサーチテクノロジーを導入することは格別驚くことではありませんが、これでドコモGoogle、auGoogle、ソフトバンクYahoo!で図式ははっきりしたわけです。 僕がBBモバイル(ソフトバンクの携帯電話企画会社)にいたころ、携帯電話は90年代の話す携帯電話、ドコモの夏野さんがi-modeで使うケータイと表現したのに合わせて、次は探すケータイと称して企画を立てました。 話すケータイ→使うケータイ→探すケータイ それに合わせて携帯電話のボタンのインターフェースもデフォルト入力を数字から日本語に変えるべきだとしました。そもそも今、ケータイで電話番号を入力する人なんて皆無なのにコテコテに固まった頭だとそういう柔軟な変化にも対応できないのです。 2010年には携帯電話の利用頻度は 検索>メール>ウェブ>通話 になるでしょう。それくらい携帯電話は何か情報を探すのに最適なデバイスなのです。 もしこのままソフトバンクがYahoo!というポータルに執着したら、検索がメインになる携帯電話サービスで苦戦を強いられるでしょう。ページビューとい うトラフィックからのビジネスモデルに執着したら収益モデルでも苦戦を強いられるでしょう。携帯電話からのページビューとバナー広告を捨てられるかどう か、が勇気の分かれ目かもしれないですね。 auとドコモはGoogleサーチを導入し、さらにウェブメールG-mailとケータイメールを連携させます。今後は一番強烈なのがGoogleMapと の連携でしょう。少しずつ確実に行われると思いますが、情報というのは持てばいいというものではないんです。入り口を支配してもだめなんです。その人が必 要だと思った情報とさらに異なる価値ある情報をどうやって紐付けてあげるか、そんな些細なことで価値が何倍にもなります。それができる唯一の技術が今のと ころサーチテクノロジーです。 僕たち一般のユーザにとっては利便性があがるだけではありません。いつでも、どこでも探せる環境が出てくるということは特にビジネスマンとしては自分自身をしっかりSEO(最適化)しておかないともう誰もごまかせないですよ。 SBI Robo 渡部薫 |
.
企業として何のプログラミング言語にコミットするか
さまざまな用途向けに、さまざまなプログラミング言語が考案され、日々使われています。コンピュータの能力が低かった時代は、機械語に対応したアセンブリ言語に始まり、ALGOL 系の Pascal, C などに続き、コンピュータの能力や資源に余裕が出始めると、オブジェクト指向言語の C++, Java などに続き、さらに文法を簡易化したスクリプト系の言語に続いています。
現在のウェブプログラミングでは、生産性の高いフレームワークと組み合わせて PHP, Perl, Python, Ruby などがよく用いられています。また、同様にフレームワークと組み合わせて Java, C# などが用いられています。
業種、業界によってスタンダードもさまざまですが、特にウェブに関わる業界にいると、新しいものに目を奪われ勝ちになってしまいます。新しいものは試してみたくなるもので、RoR や Symfony といったフレームワークも試していたりします。
企業として何のプログラミング言語にコミットするか?ということは、
- 確保する人材
- 教育プログラム
- ソフトウェアのライフサイクル
個人の場合は、何で作ろうが構いませんが、企業としては、コストを掛けて生産、保守していくことになるので、あまり特殊なものは使えません。また、マーフィーの法則に従い、悪いタイミングで深刻な問題が発生しますので、
- メーカーによるサポートが充実している(作った人に聞ける。)。
- メーカーによるドキュメントが充実している(そこを見れば解決できる可能性が高い。)。
- メーカーによるコミュニティーが充実している(同じものを使っている人に聞ける。)。
- 社内に問題を解決できるエキスパートが居る(深部まで分かっている人に聞ける。)。
- ユーザーによるコミュニティーが充実している(同じものを使っている人に聞ける。)。
- 人材の確保のしやすさ。
SBI Robo では Java を選択していますが、上の基準では、ドキュメントの質と量が高い Microsoft も選択肢となり得ました。が、人のつながりで Java 系の人材の確保を進めました。
上のリストで、人に聞ける という箇所を強調しましたが、ググって出てくる古い誤った情報ではなく、人に聞ける という点が、実は重要なのかなと思います。
森田::
.
ウェブの時間と距離
も一方、人間は、時計というものが発明されてから時間の距離の認識にはあまり変化がありません。100年前の人と、現代人と1時間は1時間、1日は1日、 1年は1年で意識は大差ないでしょう。現代社会が忙しいからといって100年前の人と待ち合わせしたとしてもちゃんと指定した時間に会えるでしょう。
梅田望夫さんの本を読むとウェブは空間の革命であり、人間の脳の働きの革命であることがよく理解できますが、もうひとつウェブが人間にもたらしたものは、時間の距離を限りなく0に短縮させた革命です。
少し物理理論的な話になりますが、ウェブは空間ではなく、時空で過去に行くことのできる空間です。(まだ未来には行けません)説明が難しいのですが、仮想世界を空間と見て設計するのと、時空と見て設計するのとでは大きな差が生まれます。
ウェブに生きる人間の時間の意識は1秒単位です。そして今それが限りなく0に近づこうとしています。仮想空間は0秒空間とも言えますし、0m空間でもあります。それがGoogleという空間。
今日は防衛省までがUFOの話をしていましたので、僕も少し頭を宇宙まで飛ばして見ました。
SBI Robo 渡部薫
.
重曹にチャレンジ!
.
やれんのか!~教育立国~
ニュースをみる前の日にフリーダムランドを見ており、
嬉しくない偶然の一致でした。
経済的な競争で厳しい状況にあり、国民のモラルも低下していて、
銃犯罪が横行しつつあり、年金も予断を許さない。
一人の親として子供に何をしてやれるのか、
悩むこの頃です。
.
SEOに関する興味深い記事
.
PASMOの盲点~既存システムと繋がっていません
3月より開始したPASMOのサービスなのですが、
意外な所に盲点があり、不便を感じています。
1.精算できない不便
2.システムエラーが煩雑に起こり、復旧に時間がかかる不便。
1.精算できない不便
私は頻繁に行くところですと、回数券を買っています。
特に東京メトロの回数券は、160円区間、190円区間という運賃体系で発売され、
買うときに、どこからどこまでの区間を煩雑に乗車するか、
ということを購入時にコミットしなくても良いのは便利です。
しかし
A駅→(回数券利用)→B駅→(定期券)→C駅
とB駅で下車せずに乗車する場合、A駅では回数券で入場し、
C駅の自動精算機で回数券を入れ、請求された額を定期券を挿入することで精算し、
出場するのが理想型なのですが、
どうも自動精算機が対応していないようで、C駅での精算ができません。
その場合有人改札に行って処理する必要があり、
大きな駅だと、混雑していることもあり一苦労です。
PASMO協議会か、私鉄のシステム担当者のどちらなのかは知りませんが、
「PASMOを使う人は入場から出場までPASMOを利用する」
という前提で設計されているらしく、自動精算機のフローは、
「PASMOにチャージする」「PASMOでは足りない額を現金で支払う」
以外のフローが用意されていないようです。
例えば、切符で入場し、残額をお金で精算する、
PASMOで入場し、一部区間を回数券で精算する、
などという操作を要求するためにはいちいち有人改札に出向かなくてはなりません。
2.システムエラーが煩雑に起こり、復旧に時間がかかる不便。
PASMOはタッチするだけで入出場できて便利なのですが、
ICカード故に、お財布の中に入れたままタッチ、鞄に入れたままタッチ、
という方々も増えていますが、それ故にタッチが失敗する事もあります。
個人的な経験ですが、タッチは、多分20回に1回ぐらいの確率で失敗するようです。
するとタッチが失敗した改札口は閉じてしまい、
昨日図ってみると再び処理を受け付けるまで、25秒ほどかかっていました。
朝のラッシュで25秒はかなり痛く、自分がタッチを失敗した時には、
背中の方から舌打ちや隣の改札機へ向かう恨ましい、足音を聞かされることになります。
特に出場の自動改札機が2台しかない、
弊社最寄り駅東京メトロ銀座線末広町駅では、
朝ラッシュ時にやらかしてしまったら悲惨なことになります。
以前の券面を入れる自動改札機ですと、
エラーになってしまうのは、精算できていない切符、折り曲がった切符などだけで、
今は逆に改札機が閉じてしまう機会は増えてしまっている印象です。
こんな事も気になってしまうのは、忙しく余裕のない現代人だからなのでしょうか。
k-warrant
.
タイトルに偽が・・・
.
Tomcat が終了しない原因の調査 - 前編
shutdown.sh を実行しても Tomcat がきちんと終了せずプロセスが残ってしまうことがたまにあります。原因を探っています。
前提知識として JVM はデーモンスレッド以外のスレッドが全て終了した時に終了します。(詳しくは java.lang.Thread の API リファレンスを参照してください: https://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Thread.html )
終了しないことが多い Tomcat のスレッドダンプを取ってみるとデーモンスレッドではないスレッドがありました。
"RMI Reaper" prio=1 tid=0x0821b0c0 nid=0x67b4 in Object.wait() [0xadf84000..0xadf84e20]
at java.lang.Object.wait(Native Method)
- waiting on <0x8a8d8e30> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
- locked <0x8a8d8e30> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
at sun.rmi.transport.ObjectTable$Reaper.run(ObjectTable.java:336)
at java.lang.Thread.run(Thread.java:595)
※ デーモンスレッドの場合は 1 行目のダブルクォーテーションで囲まれたスレッド名の後ろに daemon と表示されます。(VM のバージョン、ベンダにより異なる可能性があります。今回は Sun Java 1.5.0_13 を利用しました。)
これが原因のようです。"RMI Reaper" で web 検索してみるといろいろ事例がありますね。要は RMI を利用するアプリケーションが正しく終了処理をしていないのが原因です。
今回はここまで。次回は弊社の場合の "正しく終了処理をしていない" アプリケーションの調査とその回避方法を探ります。
- Andy
.
携帯電話ユーザーの実態
間もなく1億台を突破するといわれている携帯電話の累計契約数。それらの端末から企業が運営するモバイルサイトへは、いつアクセスされているのだろうか。BeMssを利用している約600社のモバイルサイトのアクセス数のうち、時間別、曜日別のアクセス実績を調べた。
アクセスが最も多いのは、時間帯では23時、曜日では木曜日という結果となった。 CNET
理由は週末のイベント情報など販売促進メールは、帰宅時間に見てもらえるように夕方に配信されているとの事です。
その他、各事業者の端末シェア、アクセスシェアなどの調査結果がでているので興味がある方はご覧ください。
ソフトバンクはシャープ(SH)端末が圧倒的で50%以上のシェアです。アクセスシェア(8月-11月)はソフトバンクは7%から8.4%と加入者増と比例して飛躍的な伸びをしていますが携帯加入者数シェアの割合よりは低くWホワイトプラン等の音声通話目的で加入されている事がわかりますね。
http://japan.cnet.com/column/mshare/story/0,3800081578,20363379,00.htm
.
『Baccarat ETERNAL LIGHTS 2007-歓びのかたち- 』
を見に先週末恵比寿ガーデンプレイスに行ってきました。
クリスマス前の恒例イベントとして貫禄イベントになってきてますね。
本日動画がアップできませんので、明日アップ致します。
もうすぐ今年も終わりです。今年の仕事は、来年に持ち越さず
年内で全て片付けたく思っております。
年末の忙しさに負けないよう営業に励みます。
担当:MFX
.
GoogleのKnol
|
Googleのknolの発表は、この記事に書いている通りの内容ですが、注目すべき点をいくつかあげておきます。 ~~~ Googleのやっていることが変化しつつあるように思えるのは私だけだろうか? 私の見るところ、Googleは他のサイトで作られたコンテンツから情報を漉しとって集約、総合するという会社だったのが、自分自身で最終的にコントロールできる(あるいはそのためのテクノロジー)コンテンツを制作する(あるいは買い取る)方向に変貌しつつある。 ~~~ Googleにないものは自分たちのコンテンツです。Googleは自分たちでコンテンツを持たないで、クロールして情報を整理することが主な使命でした。これがここに来てなぜこのような方向転換を検討するようになったのでしょうか。 ひとつにはCGMコンテンツの爆発的な増加によってGoogleのランキングアルゴリズムが機能しなくなりつつあるということ。SBI Businessでも証明していきますが、明らかに著作権やプライバシー、クソ情報が検索結果の上位を占める場合がある。このような情報のノイズ、操作を Googleは望まない、ということでしょう。 一方YouTubeは自社でコンテンツを制作していないにも関わらず世界中の動画の所有者になっている点でこれまでのGoogleモデルと異なります。Google検索結果は次の情報への出発点だったのに、YouTubeは到着点になっています。 Knolのひとつの役割として、Google検索に情報の出発点と到着点を用意し、さらにノイズによるランキングアルゴリズムの修正をKnolコンテンツで行おうという試みだと読み取れます。 ~~~ GoogleはKnol が「権威ある情報のページ」となることを期待している。「knolの記事は、一般ユーザーが自分の知らないトピックについて初めてGoogleで検索した とき、最初に読むのにふさわしい記事」にするというのは、Wikipediaに対する直接の挑戦だ ~~~ 僕も何度も指摘してきている通り、Googleの検索結果は正しくない場合があります。正しくない情報が配信されるほうがリスクなのは明白です。Googleは正しい情報が少なくてもひとつは返す方法を模索していると考えられます。SBI Businessの自分のビジネスプロフィールを持とう、というコンセプトと同じです。 ~~~ 私は以前から「Googleこそ主であり救い主である」理論の信奉者で、プライバシーとかそういった問題に関する懸念はとうに捨てている。 ~~~ ウェブ、検索、Google、デジタル情報化社会にプライバシーはありません。隠すことはできないのです。隠せないのなら、自らその技術を利用するしかないのではないでしょうか。 Knolが成功するかどうか、これはGoogleの検索結果の1位がどのような価値を持っているか証明することにもなるでしょう。多くの言葉で Wikipediaが上位に出てきますが、Wikipediaの情報の信頼性が揺らぎ始めているからこそ、Googleはこのような取り組みを行うのだと 思います。 僕は検索エンジンで何かを検索してその1位になることは20世紀一流の大学を出て首席で卒業するのと同じくらいの価値を生むのではないかと想像しています。 要するに情報であれ、コンテンツであれ、そして人間であれ、検索されてなんぼ、上位を取れてなんぼ、という情報資本主義社会がやってきた、ということです。学校に行く暇があったら自分をしっかり最適化することです。 SBI Robo 渡部薫 |
.
なぜサーチが必要なのですか?⑤
僕が単純に思う経営戦略というのは今この瞬間競合している他社との競争や自社の商品力のアップのための短期的な戦略と、将来技術革新や他分野からの潜在的脅威に対する防衛策を取ることだと思っています。
技術革新による脅威は予測がつくきにくですが、他の分野からの競合の参入は予測がしやすいです。
インテル創業者のアンドリュー・グローブ氏の著作「インテル戦略転換」の原題
‘Only the Paranoid Survive’-
パラノイア(病的なほど心配性の人)だけが生き残る
この言葉はシリコンバレーでベンチャーを志す人であれば誰もが知っている言葉でしょう。
人間の健康もそうですが、健康なときに身体的脅威には注意がいかないものです。病気になって病院に行ったり手術を受けるわけですが、自分たちのウェブサイトも人間だと思って定期的に診断を受けるべきだと思います。
アフラックに聞いてみましょう(笑
「なぜガン保険が必要なのですか?」
→「だれもがガンになる可能性があるからです」
「なぜサーチが必要なのですか?」
「もしGoogleが楽天を買収してファイナンスサービスを始めたらどうしますか?」
SBI Robo 渡部薫
.
なぜサーチが必要なのですか?④
ほとんどの動物(哺乳類のこと、ヒトを含む)においては、五感を司る器官の中でも、耳は生まれたときすでに成体に近いレベルまで発達している。これは、外界の危険を感じ取ったり、親とのコミュニケーション(ヒトの場合、特に言語)を維持・学習するために必要だからと考えられる。
(参照Wikipedia)
→
なるほど、耳が聞こえないと危険を察知できないばかりか、親とコミュニケーションできないため自然界では生きていけないわけですね。
~~~
註:ただし、ヒトの聴覚は発育とともに徐々に発達していくものであるので、乳児は成人と同じ聴覚をもってはいない。よって、生下時に十分な聴力がなく音が聞こえない状態で育った人間は、たとえその状態が成人になってから良くなっても、音声を理解することができない。脳で音声信号を処理することが出来ないのである。
(参照Wikipedia)
→
>生下時に十分な聴力がなく音が聞こえない状態で育った人間は、たとえその状態が成人になってから良くなっても、音声を理解することができない。
これがすべて物語っているように最初に耳を持っていない人がどんなに耳が重要だと説明してもなかなか理解できない理由です。
>脳で音声信号を処理することが出来ないのである。
思考停止状態です。
「なぜサーチが必要なのですか?」
「なぜ人間は思考ができるのですか?」
SBI Robo 渡部薫
.
Java で使える Persistence フレームワーク
Java で使える Persistence フレームワークは数多くあります。それぞれ開発された時期や目的が異なり一長一短です。実際のプロジェクトで利用したことがあるのは、Torque, iBATIS, Hibernate で、評価したことがあるのは、pBenas, Mr. Persister です。後者は、XML ファイルによる定義を嫌い、Ruby on Rails など Lightweight Language 系の ORM のアプローチに近いものです。Mr. Persister は個人的には面白いと思っています。
最近、ユーザー認証用のウェブサービスを書いた際に iBATIS を使いましたので、その使い方を簡単にまとめておきます。
iBATIS は、生成される SQL を完全に制御下に置けるフレームワークです。生成される SQL 文の品質は、利用者の SQL のスキルに依存しますが、予想できない高度な SQL 文に悩まされることはありません。
1. 準備
iBATIS のプロジェクトページから、iBATIS 2.3.0 をダウンロードします。アーカイブの lib ディレクトリの ibatis-2.3.0.677.jar をプロジェクトに加えます。また、データベースに対応する JDBC ドライバを用意します。ログ出力には commons-logging と log4j を使います。
今回は MySQL を対象としたので、次のライブラリをプロジェクトに加えました。
ibatis-2.3.0.667.jar mysql-connector-java-5.0.7-bin.jar commons-logging-1.1.jar log4j-1.2.14.jar
2. 接続設定
設定ファイルの名前は任意ですが、ここでは sqlMapConfig.xml としました。データベースへの接続設定を記述し、クラスパスの通った場所に置きます。sqlMap 要素は、後述する SQL Mapping を定義するファイルです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings useStatementNamespaces="true" />
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/dbname" />
<property name="JDBC.Username" value="dbuser" />
<property name="JDBC.Password" value="dbpasswd" />
</dataSource>
</transactionManager>
<sqlMap resource="sqlMapUser.xml" />
</sqlMapConfig>
com.ibatis.sqlmap.client.SqlMapClient オブジェクトを Singleton pattern で作ります。設定ファイルの名前をリソース名として指定します。
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class SqlConfig {
private static SqlMapClient sqlMap;
static {
try {
String resource = "sqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
logger.fatal(e);
}
}
public static SqlMapClient getSqlMapInstance() {
return sqlMap;
}
}
3. DTO の作成
問い合わせパラメータを格納する、あるいは結果セットを格納する DTO を作成します。
ここでは次のテーブルに対応する User クラスを作ります。
CREATE TABLE user ( id int(10) unsigned NOT NULL auto_increment, email varchar(255) NOT NULL, password varchar(255) NOT NULL, PRIMARY KEY(id) );
package test;
public class User implements java.io.Serializable {
private Long id;
private String email;
private String password;
// setter/getter...
}
4. SQL Mapping の作成
SQL Mapping の定義ファイルを作ります。sqlMapConfig.xml の sqlMap 要素で指定した sqlMapUser.xml は、DTO の User クラスに対応します。ここでは、select, selectByEmail, insert, updateEmail, delete を定義しています。sqlMapConfig.xml で名前空間を有効にしていますので、実際には user.select, user.selectByEmail, ... となります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="user">
<select id="select" resultClass="test.User">
SELECT * FROM user WHERE id=#value#
</select>
<select id="selectByEmail" resultClass="test.User">
SELECT * FROM user WHERE email=#value#
</select>
<insert id="insert" parameterClass="test.User">
INSERT INTO user (email,password) VALUES (#email#,#password#)
<selectKey keyProperty="id" type="post" resultClass="Long">
SELECT LAST_INSERT_ID() AS value
</selectKey>
</insert>
<update id="updateEmail" parameterClass="test.User">
UPDATE user SET email=#email# WHERE id=#id#
</update>
<delete id="delete">
DELETE FROM user WHERE id=#value#
</delete>
</sqlMap>
# で囲まれたパラメータがプレースホルダになっており、結果セットを受け取る resultClass, パラメータを渡す parameterClass を指定しています。パラメータが 1 つの場合は #value# が対応します。
insert した時に発行されたキー値を参照したいことは良くありますが、insert 要素の下に selectKey 要素を記述して実現しています。
5. DAO の作成
select, selectByEmail, insert, updateEmail, delete に対応する DAO のメソッドを記述します。SQL Mapping で定義した名前は、SqlMapClient の queryForObject, insert, update, delete メソッドで呼び出します。
トランザクション制御は、SqlMapClient の startTransaction, endTransaction, commitTransaction メソッドとなります。commitTransaction しないで endTransaction を呼ぶと変更は反映されません。
iBATIS 2.3.0 では Java Generics に対応していないので、SqlMapClient#queryForObject ではキャストが必要です (次に期待)。
テーブルを加える場合は、SQL Mapping を SqlMapConfig に追加し、DTO/DAO を追加することになります。
public class UserDao {
public User getUser(Long id) throws DaoException {
User user = new User();
SqlMapClient sqlMap = SqlConfig.getSqlMapInstance();
try {
user = (User) sqlMap.queryForObject("user.select", id);
} catch (SQLException e) {
logger.fatal(e);
throw new DaoException(e, "SystemError");
}
return user;
}
public User getUserByEmail(String email) throws DaoException {
User user = new User();
SqlMapClient sqlMap = SqlConfig.getSqlMapInstance();
try {
user = (User) sqlMap.queryForObject("user.selectByEmail", email);
} catch (SQLException e) {
logger.fatal(e);
throw new DaoException(e, "SystemError");
}
return user;
}
public Long addUser(User user) throws DaoException {
Long id = new Long(0);
SqlMapClient sqlMap = SqlConfig.getSqlMapInstance();
try {
sqlMap.startTransaction();
id = (Long) sqlMap.insert("user.insert", user);
sqlMap.commitTransaction();
} catch (SQLException e) {
logger.fatal(e);
throw new DaoException(e, "SystemError");
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
logger.fatal(e);
throw new DaoException(e, "SystemError");
}
}
return id;
}
public void updateEmail(User user) throws DaoException {
SqlMapClient sqlMap = SqlConfig.getSqlMapInstance();
try {
sqlMap.startTransaction();
sqlMap.update("user.updateEmail", user);
sqlMap.commitTransaction();
} catch (SQLException e) {
logger.fatal(e);
throw new DaoException(e, "SystemError");
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
logger.fatal(e);
throw new DaoException(e, "SystemError");
}
}
}
public void deleteUserPerfectly(Long id) throws DaoException {
SqlMapClient sqlMap = SqlConfig.getSqlMapInstance();
try {
sqlMap.startTransaction();
sqlMap.delete("user.delete", id);
sqlMap.commitTransaction();
} catch (SQLException e) {
logger.fatal(e);
throw new DaoException(e, "SystemError");
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
logger.fatal(e);
throw new DaoException(e, "SystemError");
}
}
}
}
6. ロギング
必要なログを出力します。
# SqlMap logging configuration... #log4j.logger.com.ibatis=DEBUG #log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG #log4j.logger.com.ibatis.sqlmap.engine.cache.CacheModel=DEBUG #log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientImpl=DEBUG #log4j.logger.com.ibatis.sqlmap.engine.builder.xml.SqlMapParser=DEBUG #log4j.logger.com.ibatis.common.util.StopWatch=DEBUG #log4j.logger.java.sql.Connection=DEBUG #log4j.logger.java.sql.Statement=DEBUG #log4j.logger.java.sql.PreparedStatement=DEBUG #log4j.logger.java.sql.ResultSet=DEBUG
7. まとめ
この手のフレームワークは、その利用目的に合致していれば、さほど面倒なトラブルは起こらないものですが、利用目的を少し離れたところに適用しようとすると、チーム内にエキスパートが居ないとつらい事になります (ミスマッチな Hibernate の利用でそのような話を耳にします。)。
iBATIS については、それ自体は SQL Mapping の部分に徹しており (以前のバージョンは DAO も含んでいた) 見通しの良いフレームワークだと思います。
.
ターゲット年齢に集中
この中に成功した物もいくつがあります。それぞれの特徴がありますが、その中の一例として、
最近アメリカのニュースにも広がっているクラッブペンギンは「1年でアクセスは12倍以上に増大し、
現在は月400万以上のアクセスがあるそうである。」
可愛いキャラクタ、キャラクタの着せ替え(アバタの作成)、アイテムの取引、チャット、ゲームなど子
供がハマる要素が十分に含まれている。
「Ultimate Safe Chat」と「Standard Safe Chat」の二通りを用意しており、年齢により登録時に
選択できるようになっている。
ユーザはキーボードでタイプして自由に発言が可能だが、発言される内容については
ワードフィルタがかけられており、不適切な発言はできないようになっている。
親も安心に使わせる。
ターゲットは子供ですから、この年齢に集中していくつか工夫をやってました。
Vsideの企画経験にも、最初にいっぱいをやりたくって、街が綺麗にしても、ユーザが集まらない
経歴があったそうです。結局teenagerにターゲットして、音楽とダンスに集中して、成功になった。
cui
.
他山の石
.
タピオカが世界を救う・・・といいな。
理化学研究所、キャッサバ(タピオカ)完全長cDNA約11,000種を同定
仕事とは直接関係がないのですが、最近昼食のデザートにタピオカが出ることが多かったので、
気になり読んでみました。バイオ燃料になることを強調しているようですが、
そもそもバイオ燃料とするのであればそれように遺伝子を改良したものを用いればよいと
思ったりするのは置いておいて、意外だったのが「茎を畑に突き刺すだけで繁殖」するそのタフさ。
デザートから軟弱なイメージが先行していましたが、随分と野性味溢れる植物のようです。
皆さんはご存知でしたか? 私もその根性を見習いたく思います。
tRobo
.
MovableTypeテンプレートを有効活用する
グループ企業であるSBI Point Union様の企業サイトが、
新しくMovableTypeを利用してリニューアルし、
弊社もお手伝いさせていただきました。
今回のUpdatedでは、メンテナンスの運用面で配慮した設計を行い、
何よりもCMSの本質である、
「システム担当者だけではなくみんながみんなに情報を発信する」
ものを作り上げようとSBI Point Union様と様々な議論をし、
やっとカットオーバーいたしました。
MTは極端な話Blogを開設するだけなら、10分でできます。
先日開設された東京0区ブログも、単純な構造なので、
テンプレートの構築だけなら1時間かからずにセットアップが完了いたしました。
一方で大規模なニュースサイトの構築ですと3ヶ月、半年という規模で、
様々な部分を構築し、カスタマイズしている事例も見受けます。
大きなものも、小さな物もエンタープライズ版52500円(シングルサーバー・5ユーザー)で
同じプラットフォームで受け入れてくれる、
MovableTypeの奥深さを改めて知った次第です。
.
イマチューちゅ~
つい先日は、婚約発表まで行われました!現実の世界のつながりは無いだろう、たくさんの方々から「おめでとう!」コールを浴びていました。
そして、本日Yahoo!ニュースにも取り上げられました!
http://headlines.yahoo.co.jp/hl?a=20071130-00000031-inet-mobi
みなさんも是非ご訪問くださいね♪
.
ワーキングプア問題
今日、NHKで昨年7月と12月に放送した再放送を見た。
「ただ、普通の生活がしたい」
孤児施設にいた子供が話していた言葉が心にのこった。
格差社会がもたらした結果なのか。
大きな利益を得ている企業や人もいる反面、家庭もなくなり、
普通に食べることも学習することも難しい大人・子供が増えている現実。
皆が早く普通の生活ができるような社会となるよう祈りたい。
.
JAXB の簡単な使い方
前回 (http://www.sbirobo.com/2007/11/jaxb.html) の続きです。
前回は XML に変換したいクラスにアノテーションで印を付けたところまでやりました。こんな感じでしたね。
@XmlRootElement(name = "config")
@XmlType
public class Configuration {
@XmlAttribute(name = "version") public String version;
@XmlElement(name = "server") public Server server;
@XmlElementWrapper(name = "field-def-list")
@XmlElement(name = "field-def") public List fieldDefList;
}
さて使い方ですが、まず jaxb.index ファイルを用意します。アノテーションを付けたクラスのクラス名を列挙したものです。クラスと同じパッケージ階層に置きます。上の例ですと下記のようになります。
Configuration Server FieldDef
ではアンマーシャライズ (XML から Java に変換) してみましょう。
// アノテーションを付けたクラスが格納されているパッケージ名を指定
JAXBContext jaxbContext = JAXBContext.newInstance("myapp.config");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.setEventHandler(createValidationEventHandler());
configuration = (Configuration) unmarshaller.unmarshal(
this.getClass().getClassLoader().getResourceAsStream("config.xml"));
ポイントは JAXBContext.newInstance() の引数にパッケージ名を渡すところです。上の jaxb.index を置いたところですね。
以上、細かな説明を省いたところもありますが、あまり考えずにこれだけで XML ファイルから Java インスタンスの生成が実現できます。かんたん! だと思いますがいかがでしょうか。
.
落とし物はネットで検索 改正遺失物法きょう施行
動画、画像を探したり面白い記事を探したり、探すものが多様化してますが”ものを探す” 探すという行為の原点に戻ったサービスですね。デジタルなもの以外に生活を便利にする必要なものがまだまだありますね。
忘年会シーズンに遺失物は増えるみたいですので忘れ物をしないように気をつけてくださいね。
今年一年の嫌なことは忘れても大切なものは無くさないように!!
K
.
『Baccarat ETERNAL LIGHTS 2007-歓びのかたち- 』
を見に先週末恵比寿ガーデンプレイスに行ってきました。
クリスマス前の恒例イベントとして貫禄イベントになってきてますね。
本日動画がアップできませんので、明日アップ致します。
もうすぐ今年も終わりです。今年の仕事は、来年に持ち越さず
年内で全て片付けたく思っております。
年末の忙しさに負けないよう営業に励みます。
担当:MFX
.
出荷前のテスト1 - ペネトレーションテスト
何回かに分けて、サービス出荷前のテストについて、公開できる範囲のことを書いていきます。出荷前に見つけられれば重要な欠陥ということで内部処理できますが、出荷後に見つかると致命的な事故が発生する可能性があります。
サービスの本番系のネットワークとサーバが組みあがると、ペネトレーションテスト (penetration test) を行います。既知の攻撃方法を実際に外部から行うことにより、事前にセキュリティ上の弱点を洗い出し、対策を行うことができます。
定番のツールは Nessus ですが、先ず最初に攻撃用のプラグインを更新してから、デフォルトの設定にてスキャンします。その後、徐々に攻撃のレベルを上げていきます。その他、幾つかのツール (Brute Force Attack 系、Exploit Attack 系) を組み合わせて、機械的にできるチェックを行って、出荷に耐えられるか判定します。Web 専用では Nikto も使っています。
定期的にセキュリティチェックを行い、設定の修正、パッチを適用する運用を維持していくことをサービスの運用 (予算) の中に織り込みます。偶然に事故が起こっていない状態が継続しているというのではなく、事故が起こらないための事をやって、それを維持していくことが大切です。
森田::
.
なぜサーチが必要なのですか③
なぜウェブサイトには優れた耳が必要なのか。
成功したウェブサービス、時価総額が想像を超えるサイトを見れば一目瞭然です。
Google、世界最大のサーチエンジン
Yahoo!、世界二番目のサーチエンジン(←一部FASTのサーチエンジン)
Amazon、世界最大の書籍サーチエンジン
eBay、世界最大の商品検索
Dell、世界最大のE-コマースサイト(←FASTのエンジン)
iTunes、世界最大の音楽サーチエンジン
MySpace、世界最大のSNS、友だち検索(Gogole)
Facebook、世界最大の若者向けSNS、友だち検索
Windows Live、ビルゲイツ、バルマーがMSの社運をかけて投資するサーチエンジン
YouTube、世界最大の動画検索(Google)
Wikipedia、世界最大の百科事典(Google)
Napster、世界最大、最速の音楽P2P(閉鎖)
百度、中国最大のサーチエンジン
FAST、世界最大のエンタープライズサーチ(Roboの株主)
ぜんぶサーチエンジン会社ですね。いずれの企業もサーチエンジンに数百億円〜数千億円の投資をしている会社(サービス)ばかりです。
「なぜサーチが必要なのですか?」
「なぜフランスのワインが世界一なのですか」
→「フランスの葡萄で作られたから」
SBI Robo 渡部薫
.
なぜサーチが必要なのですか②
ウェブサイトはメディアサイトの役割を終え、コミュニケーションサイトになりました。そのためにウェブサイトが言葉を理解し返答するためにサーチエンジンが必要になります。
さて、ここに二人の人間がいるとします。二人とも同じくらいスマート(頭がよい)のですが、一人はしゃべることができません。この場合、聞く必要もない質問ですが、言葉が話せる人と、話せない人の場合、話せる人の方がいいでしょう。こんな当たり前のことは理解できるのに、ウェブサイトがユーザからの質問に答えられない、話すことができないということを認められないのはとても不思議です。現にたくさんのサイトが話ができるのにです。
言葉がどれほどの力を持っているかという例をあげます。みなさんは英語は話せますか。義務教育で6年、大学を入れると10年英語を勉強するわけですが日本 人のほとんどの人が英語を話せません。ある意味英語コンプレックスですよね。英語を話せない人が外国人の会議やパーティーに参加するとけっこう悲惨です。 ましてや他の日本人が英語を話せるとしたら肩身の狭い思いをします。日本人の多くが英語が話せたらいいな〜と思って話せないのは大きな理由があります。
僕が経験上思うに、英語教育も最悪ですが、話せない人のほとんど話そうとすることより、そもそも聞くことができないです。ものすごく当たり前の話ですが英語を聞いて理解できなければ、話すことはできません。話すことよりもまず聞くことを訓練しなければなりません。
さて、今のウェブサイトはどうでしょうか。多くのウェブサイトはかなり投資して立派なサイトをデザインして提供します。ユーザに対して一方的に情報を発信 (おしゃべりし)することは得意ですが、ユーザの声を聞こうとしません。これが今日、サーチエンジンを持っていないウェブサイトの現実です。
サーチエンジンは質問に答える口ではなく、耳の役割を果たしています。耳がいいから、話を理解することができるから正確に話すことができるのです。すなわちユーザのほしい情報だけを発信することができるようになるのです。
ここまで説明してもサーチエンジンの有効性や本質を理解できない人もいるでしょう。次はじゃあ、サーチエンジンを導入する費用対効果はどうなんだ、という話になってしまいます。
これはまるで英語を話せない人が、会議やパーティーの輪に入れなくて、英語がわからなくても日本で生活してる限り不便はないし、旅行程度の英語なら話せるから大丈夫。今更英語学校に行って話せるようになったところでどんなメリットがあるんだ、と言ってるようなものです。
もしあなたが耳の聞こえない人間だとして、もし耳が聞こえるようになるという治療法があった場合いくらまでなら出せますか。その時耳が治った後の費用対効 果を考えるでしょうか。ウェブサイトにサーチエンジンなど必要ないと思っている人は、耳が聞こえないというこを知らないのと同じです。もしくは身の回りの ほとんどのウェブサイト(人)も耳が聞こえないからまあ、別にいいや、という風にしか思っていないのだと思います。一体いつになったらウェブサイトに耳が ないことに気づくのでしょうか。一体いつになったらユーザの問いかけにとんちんかんな答えを返していることに気づくのでしょうか。
Google、それはだれよりも聞く耳を持っているロボットです。24時間365日休むことなくあなたの質問に耳を傾けてくれます。世界一の聞き上手ということです。
「なぜウェブサイトにサーチが必要なんですか?」
「なぜ人間に耳が必要なんですか?」
SBI Robo 渡部薫
.
なぜサーチが必要なのですか①
「なぜ(ウェブサイト)にサーチが必要なのですか?」
これはどう答えるべきかとても難しい質問です。まずひとつに当たり前すぎてどうして質問になるのかそれが難しい点と、理論的、技術的に説明すればいいのか、費用対効果で説明すべきなのか、それとも全部ひっくるめて説明が必要なのかその判断が難しいのです。
僕にとってサーチはウェブサービスには当たり前になければならない機能ですが、サーチを重要視していない人にはなぜサーチが必要なのかわからないばかりか、導入するにはそれなりの理由が必要なようです。
「なぜ(人間に)言葉が必要なのですか?」
こうした質問をする人はいるでしょうか。なぜなら人間に言葉が必要なのは当たり前すぎて、質問する人はほとんどいないと思えるからです。
今はSBI Roboですが、前身はソフトバンクRoboです。なぜRoboかというとRobot(ロボット)のRoboから取っているわけで、ソフトウェアロボット という意味も込めてRoboにしてあります。すなわちサーチエンジンをソフトウェアロボットとして扱っていて、人間とコミュニケーションできる人造人間に しているのです。
ではもう一度最初の質問に戻ってみます。
「なぜ人間に言葉が必要なのですか?」
「なぜウェブサイトにサーチが必要なのですか?」
「なぜロボットにサーチが必要なのですか?」
「なぜロボットに言葉が必要なのですか?」
もしウェブサイトを情報発信のメディアだと思っていたら、人間のような言葉は必要ではないでしょう。ショッピングサイトのように単なる注文発注サイトであれば、言葉は必要ないでしょう。
僕がしきりに言っているのはウェブサイトはロボットなんです。しかも知能を持ったロボットです。それがサーチエンジンなのです。
Yahoo!はポータルというウェブメディアサイト
Googleはサーチというコミュニケーションロボット
サルは(ジャングルという)場所の支配者
人間は世界の支配者でその支配力は言葉から来ている。
とても極端な比喩ですが、人類の歴史がすでに証明していることです。
SBI Robo 渡部薫
.
教育レベル
.
開発のリスク管理について
リスクとは、危機になる前の潜在する損害です。日常の話ですと、明日洗濯しようとすると、雨降るの確率はリスクということですね。
システム開発がはじめたから終了するまで、システム自身のバグがあったことと同じようにいくつかのリスクが存在しています。そのリスクはさまざまであり、仕様不明、リソース不足、コミュニケーション不足、社員退社などによって、製品品質やリリーススケジュールなどにインパクトに与えることになります。
それでは、開発管理者はいったいどうやってリスクを管理するのでしょうか。
リスクの重要度についてよく使っている方法はリスクインデックス方法です。リスクインデックスはリスクが危機になる確率、かけるそのリスクに対する危機の損害度で、その高い順によって解決方法を考えます。
リスクの対策はさまざまですが、分類としては下記の四つのいずれかと思います:
1、解決
2、軽減
3、転嫁
4、許容
リスクの内容、対策、対策の効果にも整理します。
上記のすべての情報をまとめて、エクセルなどのツールを使って随時リスクを管理に行きます。
.
サーチエンジンは無知を知力に変える
Roboの社員ですら、また僕と長時間一緒にいる人ですらウェブの本当の怖さや真意を理解している人は少ないです。ましてやグループ内の人や外の人にRoboがやろうとしてることをひとつずつ説明してもなかなか理解してもらえないし、飛びすぎた話なのかもしれません。
ただここ最近よく思うことはなんでみんなもっとGoogleのことを知ろうとしないのかということです。Googleを検索エンジンだと思っている人はウェブのことをわかっていないと思ったほうがいいです。自社のサービスサイトに優れた検索エンジンを入れることに
躊躇し、費用対効果しか見えない人はウェブサービスから撤退したほうがいいかもしれません。エクセルの検索や並び替えとGoogleの検索は根本的に違うことがわからなければこれからウェブで起きることも、グローバル社会がどうなっていくかなども到底理解することもできません。人がどのように教育され、思考し、経済活動していくか、ウェブ世界から見たら今の日本は江戸時代の士農工商紹介と同じです。格差社会も、一人当たりのGDPが16位になったものウェブの発展と無縁ではありません。
僕はマルクス主義でもGoogle主義でもありません。現実に起きていることをありのまま受け入れる能力があれば、そして世界の子どもたちの能力がどのように育まれているか見る力があればウェブ社会がどのような社会になるかわかるでしょう。
99.9%の人は世界がそうなって初めて世界がそうだったんだと気づくのですが、変わったことすら気づかない人たちもいるし、無意識に変われる人もいます。
今がこれからの100年の始まりにしかすぎないということを感じられる人がいればいいと思います。無知はイノセンスであり純粋ですが、人間は無知を知能に変える能力を持っているからこそ文明を築き上げることができるのです。
このビデオはGoogleが何かをうまく映像で見せてくれます。それでもGoogleを検索エンジンだと思う人は、、、です。
このビデオで人がたくさん出てくるのがわかるでしょう。Googleが対象にしているのは情報だけでなく人だということがよくわかります。最後にゲノムまで行き着きますが、その野望は置いておいたとしてもGoogleが21世紀何を創り出そうとしているか考えてみてください。
SBI Robo 渡部薫
.
広がる「学校裏サイト」、親まで悪口を書き込む惨状に
.
The "data" URL scheme と XML へのデータ埋め込み
HTTP のコネクション数を減らすテクニックの一つとして、RFC 2397 の The "data" URL scheme を用いる方法があります。HTML や CSS 中に画像を Base64 エンコードして埋め込むことにより、1コネクションで複数の画像を転送するというわけです。
適当な方法で Base64 エンコードします。
$ perl -MMIME::Base64 -0777 -ne 'print &MIME::Base64::encode_base64($_,"");' < image.gif
data:[<MIME-type>][;base64],<data> という書式で、<img src="data:image/gif;base64,~" /> のように使います。
<img src="data:image/gif;base64, R0lGODlhEAAQALMNAD8/P7+/vyoqKlVVVX9/fxUVFUBAQGBgYMDAwC8vL5CQkP///wAAAP///wA AAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAAANACwAAAAAEAAQAAAEPbDJSau9OOvNew0AEH DA8wCkiW6g6AXHMU4LgizUYRgEZdsUggFAQCgUP+AERggcFYHaDaMgEBQchBNhiQAAIfkECQAAD QAsAAAAABAAEAAABDuwyUmrvTYAEDAFzwN4EyiSksaRyHF06GEYBNoQ82EHBwHbCIUCYRMKiwSC YoFALDCIwLDZBFJtTKclAgAh+QQJAAANACwAAAAAEAAQAAAEPrDJGQAIM2vwHtAUcVTdBzaHYRC Kip2EepxacBAvjSgKQmc83m+iILCGEkSgh5wsEIhFEwqdUpvPaHPLnUQAACH5BAkAAA0ALAAAAA AQABAAAAQ+sMkZyAkz62MM0ROiKAjRXQCATeOIHEQAPA+QKQShZHOdIQFSRqaSLBCIBQiERC41T cQzc0xOr9isdsvtPiMAIfkECQAADQAsAAAAABAAEAAABD2wyYmUQjNra/VcCLIoBKEExBFkYRtc BGAQbJsdhnFkoMimGI8wAACshBnA4wFAJpdNp4RolFqv2Kx2q4kAACH5BAkAAA0ALAAAAAAQABA AAAQ9sMm5EFoza2u1b5ylKMjXVFdAjGamrEo7IWMpz8QR3A0BGATewWA48BA5mykAAOxugMcDwI tOeUwnb9uKAAAh+QQJAAANACwAAAAAEAAQAAAEO7DJSau92C6EVp4c90khMjZbd5KKYo4B0Z4KI Z9I4H7IQQSng8FwwAQAgJgBQMAAHo+kD3h5Rk/HpCUCACH5BAkAAA0ALAAAAAAQABAAAAQ8sMlJ q7046827nwuCLJwoliYXjlIAAAGFKApCAc8DULQSTzgd4kCYEQgKigt2MBgOC5rtQnAeOAHilBI BADs=" />
Firefox, Opera, Safari は RFC 2397 をサポートしていますが、IE6, IE7 はサポートしていないため、実際に使うことは難しいのが現状です。
Firefox の Bookmark では icon 画像を data URL スキーマを用いて保持しています。これは XML 中にバイナリデータを共存させる使い方ということになります。メディアのメタデータとデータを XML 中に共存させることができますので、使いどころはありそうです。
<album>
<photo>
<date>Wed, 05 Dec 2007 18:00:00 +0900</date>
<img src="data:image/gif;base64,~データ列~"
title="Example 1" width="320" height="240" />
</photo>
</album>
森田
.
イマチューでさけびまくる日々
最近弊社で出させて頂いたサービス「イマチュー」ですが、
正直友人が今何を考えているのかまったりとわかり、
SNSのような気疲れもない雰囲気にはまりチューな今日この頃です。
皆さん遅くまでお仕事やられていたりしてなんだか勇気付けられたり、
つい最近は婚姻されたかたもいらっしゃって自サービスなのに大変
楽しく個人的にも使っています。
サービスは無料ですので皆さんも一度使われては如何でしょうか?
tRobo
.
ホットヨガ
普通のヨガではなく、ホットヨガです。湿度と温度をあげた部屋で汗だくなりながら行います。
まずは、ベーシックコースで基礎を取得。
はじめてやったときの爽快感はかなりのもので、体中をストレッチし、汗をこれでもかというくらいたくさんかき、心身ともにリフレッシュとはまさにこのこと!と感動してしまいました。(どれだけ運動不足か、ということですけどね。)
週に一度会社帰りに通っています。まずは基本のポーズを覚え、家でも毎日できるようにすることが目標です。
ヨガに興味あるけど、まだチャレンジしていないという方、本当におすすめです。気持ちよいですよ!
OL
.
アニメはファッション化の流れ③
|
昨日のワールドビジネスサテライトや今月の日経ビジネスをご覧になった方は改めて感じたと思いますが、日本のアニメ、コミック、ストーリー、ファッション
は今や世界のファッションとトレンドをリードする力を持っています。これはもう10年くらい前から言われ続けていたのですが、ここ5年のブロードバンド革
命とYouTubeやP2P技術の普及によってコンテンツそのものがCtoCで流通するようになったのが一番大きいと言えます。 さらにトップクリエーターがこぞって日本のクリエイティブをファッション、建築、インテリア、ビーグル(クルマ)、音楽、映画、テレビなどと取り込んでいるのがようやく一般コンシューマにも認知されるようなったのが2007年と言えるでしょう。 しかし何よりも大きいのは米国のハリウッドやテレビ局が積極的に活用し始めたことです。これによって巨額の資本とマーケットが一気に出来上がるわけで、このグローバルマスマーケティングがさらに巨大な産業を生み出していくのは明白です。 そういう意味で僕がウェブファイナンスの世界にSTUDIO4℃と組んだ理由があります。ウェブはグローバルサービスであり、目に見えるサービスであれば あるほど先進性とファッション性、クリエイティブ性を求められます。これまで金融サービスはほとんどが目に見えないサービスでしたが、お金もクレジット カードも、ファイナンスに関わる情報や商品はウェブという仮想世界上で可視化されていくと思います。ウェブの伝播力はすさまじく、一旦火が付くとあっとい う間に世界中に広がることを思えば、ファイナンスとSTUDIO4℃というまったく対極にあるふたつが結びついていく世界が想像できるのではないかと思い ます。 SBI Robo 渡部薫 |
.
無料配布
また無料配布するみたいですね。
近所の九十九電気との二重価格、微妙です(笑)
結局買って友人にあげてしまったので、もう一度もらおうかなと思っています。
あなたの身の回りにフォネロはいますか?
振り向くとフォネロがいるかもしれません。
.
モバイル業界の業界交流会に行ってきました。
今日は、モバイル業界の業界交流会に行ってきました。
会場である麻布十番のクラブはものすごい人と熱気で、
モバイルに集まる人々の多さを物語ります。
弊社はご承知の通り、純粋なモバイルの会社ではないのですが、
機器の進歩に伴い、モバイルサービスとPCサービスの垣根はだんだん無くなり、
じきには、同じプラットフォームで行えるときも来るかも知れません。
あちら側がこちら側にくるのか、こちら側があちら側に行くのか、
という議論はありましょうが、近くなることだけは間違いない。
色々な方よりお話を聞き、刺激を受けたいと思います。
k-warrant
.
インフル注意報
インフルエンザ流行ってますね。
先日、私の連れもインフルになりました。
ちなみに私は、毎年クリスマスから年末にかけて、8割方インフルになります。
一年の厄をここで一気に喰らいます。
定期イベントです。
ありがとうございます。
今年もがんばります。
担当:BM
.
プラットフォームて
幾つかの機能やシステムはプラットフォームで呼ばれています。
どうのようなシステムであればプラットフォームと言えるでしょうか。
http://www.atmarkit.co.jp/news/analysis/200711/26/platform.html
Web 2.0に対して、最近注目されるのは「Webプラットフォーム」の考え方。
“プラットフォーム”の定義として「アンドリーセン氏」は、プログラミング可能であることを挙げる。
「プログラムできるなら、それはプラットフォームだ。できないなら、違う」
「レベル2」は“プラグイン”が可能なプラットフォーム。
例として挙げるのはFacebook。
「レベル3」のプラットフォームというのは、ランタイムやライブラリまで含め、実行環境全体を提供するインターネットサービスを指す。
まだ新しい定義が出てくるかもしれないですが、これで意味をよく分かりました。
cui
.
Tomcat の catalina.out のローテーション
Tomcat は $CATALINA_HOME/logs 以下に catalina.out という名前で標準出力 (と標準エラー出力) が出力されます。デフォルトではこのファイルにどんどん追記されていくため、気付いたら巨大な ファイルになっていることもありますよね。
このようなファイルはローテーションしましょう。
ファイルを作成している箇所は $CATALINA_HOME/bin/catalina.sh で、2>&1 を使って java コマンドの標準出力をリダイレクトしています。
標準出力をローテーションするには Apache に付属の rotatelogs や cronolog を利用できます。
/usr/sbin/rotatelogs $CATALINA_HOME/logs/catalina.out.%Y-%m-%d 86400 540
ファイル名には %Y 等の strftime(3) のフォーマットを指定可能、後ろの数値は 86400 秒 (1 日) 間隔のローテーション、540 分 (9 時間) の UTC からの時差を示します。
あとは cron などから古いファイルを削除するシェルスクリプトを実行します。
本来は Tomcat 本体が標準出力に書くのをやめるべきだと思いますが、アプリケーションに System.out が残っている場合もありますし、スレッドダンプを取ったりするのに便利なので Java アプリケーションサーバでは標準出力のローテーションは必須ですね。
- Andy
.
年収調査
.
ブログの話題を仮想大陸に配置、新感覚検索「BLOGRANGER TG」
BLOGRANGER TGは、最近1カ月間のブログ記事を分析して任意のテキストに約5,000種類のタグを自動付与し、2次元の仮想大陸の地図上に概念的に近いキーワードの タグどうしを配置して視覚化したブログ検索サービス。ユーザーは仮想大陸をマウスでスクロールしてタグをクリックすることにより、関連したブログ記事を次 々と閲覧できる。(ITpro)
同様のサービスでも早く、より使い易くといったさまざまなUIが試されていますが、今後、どのような見せ方が定着していくのか楽しみなところです。
.
SBI Businessってなに?
| 日経新聞の朝刊にRoboの記事が出ています |
|
先日、日本経済新聞社から取材を受けた記事が掲載されております。ウェブにも出ていますので参照ください。紙面ではけっこうな文字数を取ってくれていました。 そのSBI Businessですが、日本ではまだあまりないビジネス専用の検索エンジンであり、ソーシャルサービスとなっています。SNSのように毎日日記を書くといったものではなく、あくまで現実社会のビジネス活動を支援するサービスとして位置づけてあります。 ウェブ経済社会では現実社会のオン(ビジネス)とオフ(プライベート)をうまく使い分ける必要が出てきました。オンでは実名、オフではニックネームで活動することが重要になってくるでしょう。 これまでGoogleやYahoo!などの検索エンジンの検索の対象は、情報、画像、動画、ショッピング(商品、旅行、商材など)でしたが、これからの検 索エンジンの対象は、人そのもの(主にビジネスマン)、人と人のつながり(人脈、関連性)、人と情報のつながり、ウェブ社会における人の信頼性になってい くと思われます。 自分自身をウェブ側に置き、ビジネスをウェブ側で行うようになれば、これまでにないスピードでビジネス活動を行うことができるようになるでしょう。そうし たウェブの革新はすでにEメール、IP電話、サーチ、Blog、Wiki、SNSで証明されてきていることです。SBI Businessが日本のビジネス文化に受け入れられるか、浸透するかは保証されませんが、ウェブグローバル社会のひとつのカタチを作っていければと思っ ています。 SBI Business SBI Robo 渡部薫 |
.
Robo 釣り部
水温が上がった影響なのか、合計100匹以上釣りました。
ほとんど小魚が多かったので、リリースでした。
初の黒鯛を釣りました!!
やはり・・・鯛は嬉しかったです。
サイズが小さかったのでリリースしましたが・・・
お持ち帰りは、メバル10匹
メジナ1匹のお土産でした。
Robo釣り部 部長:MFX
.
新しいビジネスの信頼のカタチ
1995年、インターネットが商用化してから約12年が経ちます。もはや私たちの生活にインターネットのない世界は想像できないでしょう。人々はメールに慣れ、ウェブから情報を得るようになり、オンラインでショッピングするようになりました。
1998年に検索エンジンのGoogleが世に出てから人々のウェブでの活動方法は劇的に変わりました。調べごとにしても、旅行でもショッピングでもまずは検索してから、というライフスタイルが定着しました。Googleはあらゆる情報の出発点となり、私たちの情報のナビゲーションとなったのです。そのとき重要な役割を果たしたのがサーチエンジンのランキングテクノロジーです。Googleをはじめとする検索エンジンのキーワード検索で、最初のページに検索結果が返ってこなければ、その情報は存在しないものと同じになるのです。こうしてウェブページはSEO(サーチエンジン最適化)されるようになりました。
2003年ごろから始まったいわゆるWeb2.0サービスでは、人々は自ら情報を積極的に発信し、共有することが可能になりました。ブログ、Wiki、SNS などです。ユーザが自発的に情報を発信するようになり、ウェブの世界では情報ビッグバンが起こりました。あらゆるものがウェブで流通するようになりました。日々の日記、写真、動画、私たちの身の回りのちょっとしたことまでがウェブで公開されていっているのです。
そして人間は自分自身までも公開し、共有するになりました。MixiやMySpace、Facebookのように、人々が自分自身をネット上に公開するようになり、日々の生活を記録するようになりました。またこれまでの人間社会における人間同士のつながりも、ウェブ社会と同化し、ウェブ上の知り合いとつながるようになりました。ここで人々は現実社会とウェブ社会において信頼性という評価を得ることとなり、実名における活動が現実社会の活動にフィードバックされる時代になったのです。
SNSでは多くの人が別名(ニックネーム)を使っていますが、ビジネスの世界ではニックネームではなく、本名で活動することが好ましいでしょう。またビジネスの範囲であれば、プライバシーの問題と一線を画すことができ、むしろメリットのある情報共有ができるようになると考えられます。米国のLinkedinのようなビジネスSNSサービスはまさに新しいビジネスの信頼性のあり方を示していると言えます。
現在のビジネス社会では名刺を交換したら、ウェブである程度の情報を収集するのは当たり前となっています。ビジネスマンは探しているようで、実は探されている場合の方が圧倒的に多いということに気づくべきです。ビジネスシーンで自分が検索された場合に備えて、正しい情報を発信できるプラットフォームが必要になります。SBI Businessではビジネスマンが自分のビジネス情報を正しく発信し、コントロールできる仕組みを提供します。
.
UTF-8 ドキュメントの BOM を削除する
先日 UTF-8 で記述したシェルスクリプトが実行できないということがありました。BOM が付いていたことが原因だったのですが、その削除に関するメモを残しておきます。
BOM の確認は UTF-8 の場合、先頭 3 バイトの 0xEF 0xBB 0xBF を確認します。
$ od -t x1 hoge.xml 0000000 ef bb bf 3c 78 6d 6c 20 76 65 72 73 69 6f 6e 3d ...
VIM の場合は、
:set nobomb :wにて、BOM を消して保存します。
perl の場合は、
$ perl -0 -i.bak -pne 's/^\xEF\xBB\xBF//' hoge.xmlとなります。-0 はレコードセパレータ $/ を 8 進数で指定しますが、指定しない場合はファイル全体を読み込みます。
BOM 付きと既に分かっている場合 tail を
$ L=`cat hoge.xml | wc -c` && tail -c `expr $L - 3` hoge.xml > hoge_new.xmlのように使う方法もあります。
.
メールをFeedに置き換える
さて、EメールをFeedですべてまかなえるのだろうか?
【結論】
BtoCではほぼ可能
【理由】
・メールマガジンなどの不特定多数へ配信されるメールに関してはFeedで十分。
・一人ひとり違う内容を送信したい場合 → 顧客一人ひとりにIDを割り振り、フィードで配信 : 現在も各顧客に何らかのIDが振られているものと思われるので可能だと思われる。
・メールは受信したものをすべて保存できるが、Feedの場合はどうだろうか。 企業側のサーバへ直近100件などの上限で情報を蓄積、顧客がFeedを取り込むと自動的にローカルに保存されるか、Feedを閲覧するソフトで「保存」ボタンを設けることで、保存が可能だと思う。
【コメント】
所謂BtoCは、ほぼすべてのサービスをFeedに置き換えることが可能だと思われる。メールはその特性上、送信しても相手に届くとは限らないが、Feedにすることで相手へ確実に届く。ただし、Feedの取り込みは常に行われているわけではないので、数分(?)のディレイが発生する可能性がある。 BtoCがすべてFeedになった場合、メールはCtoCのみとなり、アドレス帳に登録されていない人はすべて迷惑メールボックスへ送ったりすることが可能となるため、迷惑メールかどうかを判定する必要もなくなり、一気に問題が解決されるように見える。簡単に言うと、ブラックリストを参照している現在の法則やNGワードに頼っている現在の方法から、ホワイトリスト形式へ一気に転換がはかれる。
上で述べましたが、CtoCでは厳しいと思われます。配信された内容に対して返信、転送、ファイルの添付などを行うため、Feedだけでは実現が難しいと思われる。BtoCで返信や転送が必要ないか?という点も再考の余地ありでしょうか。
IKO
.




