本ブログの更新について

 本ブログの更新は2016年3月31日をもって終了しました.ありがとうございました.
posted by みっちぃ (管理人)

2007年09月01日

研究室にようやくプリンタが納品

 先日の火曜日(8月28日)の話ですが,研究室にようやくプリンタが納品されました.研究室には過去4年間,備え付けのプリンタがありませんでした.研究室員は一人ずつプリンタを自分のものとして購入して,それを使っていました.
 私自身は大学院に進学した当時,10年落ちの研究室のプリンタを使っていました.ウォームアップから1枚出力するのに1分ぐらいかかっていたと思います.バッファが極めて少ないので,印刷に失敗することも多かったのです.さすがにストレスがたまって当時の先生に愚痴ったのですが,過去に盗難があったことを理由に新機種の購入には至りませんでした.つまりは,我々研究部員は信頼されていなかったんですね.
 仕方なく,私はインクジェット(Canon PIXUS 450i)を購入しました.確か15,000円ぐらいで購入しました.印刷も早く仕上がりもキレイなので,価格の割には満足していました.しかし,インク容量が小さく,直ぐに交換を要することに苛立つことになったのです.
 当時,印刷の用途にはTA(授業補助)作業などもありました.そのため,インク代ぐらいは研究費からお願いしたいと申し出ました.これは許可してもらえたのですが,純正品ではなく,インク補充タイプのサードパーティー製の使用を求められました.インクが切れるたびに,インクを注射器を使って補充するのです.手は汚れるし,時間は取られるし,何一つ良いことはありません.その様な無駄なことを,私だけでなく,同期の研究室員,そして先生までやっていたのです.今となっては,1人1台プリンタを持っていて,かつインク交換に手間をかけるという状態が本当にコスト面でメリットがあったのかどうか,大変疑問に思います.
 その後,M2の秋に修論を書く関係で,私はレーザプリンタを買いました.今から約3年前の話です.購入したのはブラザーのHL-5040です.2万円で18枚/分の出力が可能な製品ということで,大変魅力的でした.トナー切れの際,研究費で交換トナーを買っていただくことはできませんが,それ以上に時間的なコストの削減に有用でした.
 その次の年,それまでお世話になった先生が定年でご退官されました.今思えば,その直後に引継ぎの先生に依頼して,研究費でプリンタを購入してもらえば良かったかもしれません.ただ,1人ずつプリンタを所有している状況だったので,プリンタよりもサーバ機の購入を優先すべきと考えたようにも記憶しています.
 そして昨年度,研究室は私を含めて博士後期課程の学生が二人だけになりました.そろそろプリンタを購入しようと検討していたのですが,研究費が赤字だということが判明して購入できませんでした.
 その年は,デスクトップPCを1台,サーバーのメモリ追加,国際会議に参加(一人分,北京)に研究費を費やしただけです.単純計算すると20万円ほどとなりますが,これで赤字となったのです.つまり,大学から自分たちの博士後期課程の学生に支給されている研究費は一人10万円ほどだということになります.実際の正確な金額は教えてもらってないので分りませんが,これには大変驚きました.
 博士後期課程の学生(工学)は研究業績として,国際会議での発表や論文誌への投稿が求められます.国際会議は遠方での開催になったりすると,参加費と旅費で20万円近くかかります.論文誌への投稿であっても別刷り代の購入で10万円弱かかることがあります.これだけの費用がかかるのに,大学からの研究費支給はわずか10万円です.しかし,研究業績は求められているという矛盾なのです.
 今年度も研究費に余裕はありません.ただし今年度は,私が別の研究室の先生と共同研究の形をとることにより,その先生の研究費から一部の費用を拠出していただくことになりました.その余った分を,今回のプリンタ購入に割当てたという経緯です.
 今回購入したプリンタはブラザーのHL-5250DNです.HL-5040での実績と,両面印刷とネットワークプリンタ機能を持ちながら低価格であることが選択の決め手でした.私がこのプリンタを使うのは半年ほどだけかもしれませんが,今度はドク論の執筆に関連して活躍してもらうことになりそうです.
 はぁ〜.たかがプリンタで,ここまで話が長くなるとは・・・.やはり自分の研究室は特殊なんでしょうね.
posted by みっちぃ (管理人) at 01:46| Comment(0) | TrackBack(1) | 日々の研究

2007年08月28日

なかなかOKもらえないとき・・・

 今月末の締め切りの論文,連著者の先生になかなかOKもらえず・・・.今日もこれから修正します.今回は,意外とうまくまとまったと思っていたころ,逆に今まで以上にあちこち指摘されてかえって凹んでます.まぁ,それだけ細かく見てくださっているのだからありがたく思わないとねぇ〜.
posted by みっちぃ (管理人) at 22:47| Comment(0) | TrackBack(0) | 日々の研究

2007年08月14日

論文を鋭意執筆中

 10月末に沖縄で開かれるシンポジウムの論文を鋭意執筆中.締め切りは今月の31日.連著者に確認してもらって校正する期間と,来月6日の学会発表の発表スライドの作成を考えると,原稿は今週中に仕上げておきたい.なかなかいい感じのスケジュール.
 でも・・・,困ったことに原稿のスタイルファイルがまだ提供されていない.待っていられないので,とりあえずWordを使ってtex形式の原稿ソースを書いている.Wordを使っている理由は,おおよその原稿ボリュームを把握するため.メモ帳だと行間がなくて読み返しにくいし.
 しかし,締め切りまで実質2週間しかないのにスタイルファイルが無いなんて,コミッティの方々はどうお考えなんだろう・・・.期限が延びるのだろうか.個人的には期限が延びてもあんまりうれしくないなぁ.だって,今月中はさらにもう1本の論文原稿を書き上げるつもりなんだもん.
posted by みっちぃ (管理人) at 01:35| Comment(0) | TrackBack(0) | 日々の研究

2007年08月09日

Google Gears のResource StoreでSOP(Same Origin Policy)問題を解決する一方法

【はじめに】
 以前,Google Gears のAPIを用いたWebページのオフライン対応方法の簡単な例コード解説を掲載しました.この例では,ManagedResourceStore ではなく ResourceStoreを使いました.この方法は,JavaScriptでキャプチャー対象のファイルを選択できるメリットがあります.ブログのようなページの内容が日々変化する場合でも,スクリプトを実行するだけでオフライン対応にすることができます.具体例として,ページ内の画像ファイルをスクリプトで一覧化する方法を示しました.
 しかし,先の記事でも示しましたとおり,同一元生成ポリシー(SOP:Same Origin Policy)の制約を受けます.Google Gears のAPIサイトでも,この問題の解決方法を研究中であることが述べられています.例えば本ブログ(mkozo.sakuraweb.com)では,ほとんどの画像ファイルは私の管理している別ドメインのホスト(mkozo.agentier.com)にあります.そのため,本ブログをGoogle Gearsを使ってキャプチャーしようとすると,ほとんどのファイルをキャプチャーすることができず,ページをオフライン対応にすることができません.
 この問題に対し,本記事では簡単な回避方法を試してみます.

【回避方法の概要】
 AjaxなどのSame Origin Policyの場合と違って,Google Gears のResource Storeは,...続きを読む
posted by みっちぃ (管理人) at 02:43| Comment(0) | TrackBack(1) | 日々の研究

2007年08月08日

新サーバ到着!しかし・・・

新サーバの写真  先日話題に出していましたが,新サーバが到着しました!サーバはDELL の PowerEdge 2900 です.個人的にはIAサーバではないほうが新鮮だったのですが,今後の運用や保守を考えるとIAの方が有利と考えたのです.でも,もうちょっと冒険したかったですね.
 さっそく環境構築したいところですが・・・,OSライセンスの準備ができておらず“ただの箱”状態.なんだかなぁ〜.
 なぜこんな大きなサーバが必要だったかというと,仮想化を利用するためです.数台分のハードウェアを購入してもよかったのでしょうが,ハードウェアの利用効率が悪いという欠点がありました.それに,仮想化によって得られる柔軟性は,研究活動においてもメリットがあります.
 例えば,実証実験のために1ヶ月間だけWebアプリケーションサーバーを立ち上げたいということがありました.しかしマシンが足りなかったため,結局,研究優先度の低いサーバを停止させ,ハードディスクのみを換装して環境構築をしたのです.このような時に仮想化は非常に便利です.研究優先度の低いサーバがいつもリソースを消費しているわけではありませんから,一時的にリソース割当を減らして,空いた分を実証実験に割り当てるという使い方ができます.実証実験後はリソース割当を元に戻すだけです.
 それに,新しいハードウェアが用意できたら,仮想ディスクをそのまま移して起動すれば良いというメリットもあります.実際,上記事例のときは,新しいハードウェアが用意できたので,取り外したままだったハードディスク(研究優先度の低い方のディスク)を復活させたかったのですが,元のハードウェアとアーキテクチャが違いすぎて起動できませんでした.結局,こちらのサーバも再インストールすることになり,2つの手間が発生することになったのです.
 ところで,サーバ後ろのネットワークHUBの結線の少なさも気になりませんか.これも仮想化のメリットだと思います.約20本分の結線を半分以下にに削減できています.
posted by みっちぃ (管理人) at 19:01| Comment(0) | TrackBack(1) | 日々の研究

2007年08月05日

RAID構成に悩む

 先月発注をかけたサーバ機が近いうちに到着する見込みである.そろそろインストールの作業計画(といっても大それたものではない)を立てようと思っているのだが,まずはRAIDをどう組むかで悩みが出てきた.
 ハードディスクは6台実装したかったのだが,予算の関係で4台になってしまった.6台なら,RAID5+ホットスペアとRAID1の計2つの仮想ディスクを組むつもりだった.4台になったため,RAID5+ホットスペアを組むか,RAID1構成を2つ組むかで悩んでいるのである.容量効率はRAID5の方が良いわけだが,1台の物理ディスクをホットスペアにしてしまうので,RAID1構成を2つ組むのと一緒である.
 サーバ上には複数の仮想マシンを構成するので,仮想ディスクを記録する物理ディスクが,仮想マシン間で異なっていた方がパフォーマンスが高い場合がある.それにRAID5よりもRAID1の方がパフォーマンスが高いこともある.パフォーマンス重視ならRAID1を2つ組むという選択肢になるだろうか.
 一方,RAID5でホットスペアを設けるというというのは,故障発生の場合を想定するとメリットがある.交換用のディスクを常備しているわけではないので,ホットスペアは有効に作用するだろう.それに,私の研究室ではハードディスクが3台も故障して,大事な研究データを紛失してしまった経験がある.空調設備が不十分であることが原因だと思っている.研究室外でも,学内のファイルサーバのハードディスク(RAID5)がほぼ同時に2台壊れ,1週間分のデータを失うという障害が昨年度に起きている.(この時の原因は電源設備の点検に伴う停電が原因だったらしい.・・・それでも良く分らない理由だが.)クリティカルミッションのシステムと比べると大きな損害ではないかもしれないが,専任のシステム管理者がいるわけではないので,データを失いにくい構成のほうが運用上の負担が小さく,結果として研究作業に注力できることになるだろう.
 本サーバは厳密に言うと私の研究室の資産ではない.現在共同研究をしていることと,システムを使いこなせるのが私ぐらいしかいなかったので,しばらくの運用を任されたのである.後半年もすれば,サーバの運用を誰かに引きづがなければならないかもしれない.そう考えると,引継ぎ後の運用上の面倒を少しでも軽減するために,RAID5+ホットスペアが良いのではないかと考えている.
posted by みっちぃ (管理人) at 13:18| Comment(0) | TrackBack(2) | 日々の研究

2007年07月20日

ケータイ動画の人気

 以前,私も指摘しましたが携帯向け動画の需要はやはり多そうですね.
利用時間「ニコ動」と匹敵 ケータイ動画が10代に人気[ITmedia]
 これで,さらにオフライン時でも動画が見れるようになっていれば完璧.移動中に電波状況が悪くなろうが,地下だろうが,トンネルの中だろうが,いつでも閲覧できるようになる.そのためには,オンライン時に効率よくデータをダウンロードする手段と,動画を著作権を保護しながら安全に蓄える仕組みが必要.蓄積先としては,microSDなどの外部記憶ではなく本体に直接記録できるようにしたい.
 あと,携帯電話の無線機能だけを停止させる機能も欲しい.携帯電話は飛行機の中で電源を切るしかないが,身動きのとりにくい機内だからこそ,ゲームをしたり,動画を見たりというニーズがあるのではないか.ただし,仮にそういう機能が付いたとしても,本当に無線機能を無効にした状態で携帯電話を使用しているのかどうかが,客室乗務員から分りにくいという問題はある.
 ・・・おとなしく,備え付けのモニターを見てるしかないかな.
posted by みっちぃ (管理人) at 08:43| Comment(0) | TrackBack(0) | 日々の研究

2007年07月12日

Google Gears の Resource Store を使ってプログラムを組んでみる(コード解説)

 昨日の「Google Gears のResourceStoreを使ってプログラムを組んでみる」に関連して,Google gearsのResourceStoreを使ったキャッシュ方法について簡単に解説します.下記解説と同様のコードで実装したサンプルはこちらです....
続きを読む
posted by みっちぃ (管理人) at 16:14| Comment(0) | TrackBack(3) | 日々の研究

2007年07月11日

Google Gears の Resource Store を使ってプログラムを組んでみる

【はじめに】
   Google Gears は,Webアプリケーションをオフラインでも利用できるようにする新たな技術としてGoogle社が公開したものです.私自身,数年前から“Web型学習システムにこそオフライン閲覧機能が必要!”と主張して研究を続けてきた身ですので,Google Gearsがどんなものか気になってました.
 オフラインでのWebアプリケーション機能やコンテンツ閲覧を実現するために,本来サーバ上にあるファイルをローカルキャッシュに保存します.保存する方法として,ManagedResourceStore とResourceStore の2通りが用意されています.前者は,保存するリソース(HTMLファイルや関連する画像ファイル,jsファイルなど)をマニフェストファイルに記述しておき,それを参照してキャッシュする方法です.後者はキャッシュ対象のリソースのURLをJavaScript上で直接する方法です.
 今回は後者を使った方法を試してみました.まず本記事では,実際にオフライン表示の試し方を記載します....続きを読む
posted by みっちぃ (管理人) at 21:34| Comment(0) | TrackBack(3) | 日々の研究

2007年07月04日

実証実験終了

 今日を持って,博士後期課程在学中としての全ての実証実験を完了とする.残り半年間は実験結果をまとめ,論文を投稿し,学位論文を仕上げるのみだ・・・・.しかしながら,学位審査にパスしなければ留年となり,新たな実験も考えなければならないかもしれない.まぁ〜それは置いておいて,とりあえず区切り.
posted by みっちぃ (管理人) at 22:52| Comment(0) | TrackBack(0) | 日々の研究

2007年06月28日

採録結果を得たものの・・・.

 9月に開かれるフォーラムに投稿していた論文の査読結果が返ってきまして,採録となって嬉しいはずなのですがどうも気が乗らない・・・.というのも,図の品質(だけ)はそれなりに自信があったのですが,査読員から「品質を上げてください」と指摘を受けまして少し意気消沈なわけです.
 指摘を受けた図はベクタベースで書いているので,今のプリンタならば,かなりキレイに出力されたはず.ビットマップを使った他の図も,しっかり出力されるはずなんだけどな.ん〜,それとも図中の英語がオカシイのだろうか・・・.
 ちなみに,この原稿に関する口頭発表は自分の誕生日.この日の夜は独りで大宴会だな.ついに三十路〜.
posted by みっちぃ (管理人) at 17:41| Comment(0) | TrackBack(0) | 日々の研究

2007年06月04日

Linux上での茶筅2.4

 いま研究用の試作システムで,皆さんおなじみの茶筅を使っている.Windows上でシステムを開発していた時は問題なかったのだが,実験実施環境のLinuxサーバ上で最終的なテストを行ったところ奇妙なトラブルに遭遇してしまった.
 特定の文字列がくるとCPUを消費して茶筅が黙り込んでしまうのである.具体的には“ ( ”(半角スペース,半角の“(”,半角スペース)の直後に文字列が続くような場合.例えば「 ( abc)」を入力すると,パターンの出現位置や文字列の長さに関係なく黙り込む.これは,私の試作システムからの呼び出しに関係なく,茶筅を直接起動して,コンソール上から行っても同じである.“ ( ”だけの場合や“ (abc)”のように“(”の直後にスペースを入れずに文字列が来る場合は大丈夫だ.
 “ ) ”のパターンも黙り込んでしまうようだ.Windows版では問題なかったので,Linux(Unix)向けパッケージの処理に不具合があるように思える.
 この問題が特定のOSや周辺ライブラリとの組み合わせで生じるものかはよく分らないが,今はその辺を調査している暇はないので,とりあえずWindowsサーバを立てて対処することにしよう. ただ,これだけで1日使ってしまったのがイタイ・・・.
posted by みっちぃ (管理人) at 16:45| Comment(0) | TrackBack(0) | 日々の研究

2007年05月31日

Webアプリケーションをオフラインでも利用できるようにする技術

 私は研究テーマの一つとして,オフライン時の使用を考慮したWeb型教育のためのシステムアーキテクチャについて研究しています.今回,GoogleがWebアプリケーションをオフラインでも利用できるようにする新たな技術「Google Gears」を発表したことは,自分にとっても頼もしいお知らせです.
 無線ネットワークが進化し続けると,“オフライン”であることがなくなるように錯覚しがちですがそうではないと考えています.生活の中で100%オンラインが実現されるとは考えにくいです.また,どうしても通信コストが高めになるという現実もあります.
 Web型教育においてはこの問題が,学習平等の観点で好ましくありません.全ての学生が平等にWeb型学習システムを活用できるべきですが,従来のWeb型学習システムが“オンライン”環境が必須としているために学習の機会が制限されてしまします.
 また,セキュリティ対策のためにWeb型学習システムを学外からアクセスできないようにしている場合があります.せっかく“いつでも”“どこでも”利用できるというメリットがあるのに,活用できない現実があるのです.そのような環境の学生は,(Web型学習システム利用した)勉強の続きを自宅でできないなどの制約を受けることがあるようです.
 そんな背景から,私はオンライン時と同じWeb型学習環境が,オフライン時でも利用できる仕組みが必要であると考えました.そのための試作システムも開発しました.
 まだ詳細を調べていないのでわかりませんが,アーキテクチャの基本的な考え方は,多分Google Gearsとほぼ同じだと思います.つまり,
ローカルマシン上にさまざまなデータを蓄積、インデックス化し、必要に応じてデータベースからデータを取り出すことで、ネットワークコネクションがない環境でもアプリケーションを利用できる。同時に、バックグラウンドで定期的にアプリケーションとデータの同期を取り、接続が回復した時点で最新の情報に更新する仕組みだ。
記事より引用
 当初,私の研究は指導教官に「つまらない」と蹴散らかされ,東大の某教授には「学術的に価値がない」と学会で言われました.今から3年前のことですが大変ヘコミました.今でもトラウマです.一方で,教育工学関係の研究会などでは興味をいただいたことが多く,それを糧にして研究を続けてきました.その信念に同調して共に研究してくれた後輩のおかげもあり,学会論文誌にも採録されました.また,某研究会で受賞することもできました.
 現在は別のテーマに注力しており研究を中断しておりますが,今回のGoogle Gearsの話題でテンションが上がりそうです.
posted by みっちぃ (管理人) at 09:04| Comment(0) | TrackBack(0) | 日々の研究

2007年05月15日

MySQLでの厄介な文字化け

【はじめに】
 既存システムは MySQL4.1.21+PHP5.2+Apache のWebアプリケーションである.このシステムのデータベースを共用する新規システムを開発する.新規システムはJava 5+JDBCで開発する.普通にシステムを設計して,普通にMySQLを使用していれば,この様な追加開発で文字コードに関して悩むことはないだろう.しかし,既存システムは次のような運用だった.
  • 既存システムのPHPソースコード,生成されるHTML,ブラウザ上で入力される文字コードは“Shift_JIS”になっている.
  • MySQLのシステムデフォルトの文字コードはUTF-8になっている.
  • PHPプログラムが読書きする(データベース上の)テーブルの文字コードは,全て“latin1”になっている.
 つまり,テーブルの文字コード指定と,PHP上で扱われる文字コードが異なっている. (“Shift_JIS”を使っていることも問題ではあるが...)  既存システムは運用中なので,PHPソースの変更やデータベースの設定を変えずに,新規システムは共用するデータベースを読書きする必要がある.

【問題点】
 テーブルの文字コード設定が不適切でも,(テーブルの文字コード設定が“latin1”なので)データベースに格納された文字コードはShift_JISのままになっているはずである. 実際,既存システムのPHPソースがDBから読み出す文字列は結果的にShift_JISになっており,文字化けは起きていないようだ. 一方,新規システムではJava 5を利用する.Javaは文字列をUnicodeとして扱うため,文字コードの変換を正しく行う必要がある.
 MySQLの場合,基本的に文字コードの変換は自動的に行われる.変換は,データベースに設定された文字コードと,クライアント側の文字コードに基づいて行われるらしい. 自動的に判定する機構なども備わっているため,文字コードの問題は殆ど無視してシステムを開発することができる.
 しかし今回の場合,この点で問題が発生する.データベースに実際に格納されている文字列と,データベースの設定が一致していないため適切な変換が行われず,文字化けが発生する.

【とりあえず王道的な対処を試す】
 JDBCドライバにはMySQL Connector/J 3.1.14を用いる.通常は,Javaソース上でのDSNのURLを次のようにする.

String url
 ="jdbc:MySQL://localhost:3306/database?"+
  "user=xxxx&password=xxxx&"+
  "useUnicode=true&characterEncoding=UTF-8";

 データベースの文字コードがutf8だった場合は変換なく処理される.utf8以外だった場合は,characterEncodingで指定したものがクライアント側文字コードとなり,これとデータベースの文字コードとの間で自動変換される.
 今回の場合,データベース上の文字コード設定はlatin1であるが,実際に格納されているものはShift_JISである.そこで,“charcterEncoding=SJIS”として試してみる.なお,ResultSetからStringオブジェクトを取り出すときは次のコードを用いた.

String strA = result.getString("A");

とりあえず試すと,「あア」という文字列は「???A」となってしまった. はたしてどんなコードが来たのだろうか.そこで次のコードにより1バイトごとに取り出す.

byte[] code = strA.getBytes("ISO-8859-1");

結果「3F A0 3F 41」となっていた.ということは,SJISに変換処理しようとしていることは間違えなさそうだ.(UTF-8だったら6バイトになるはず.) ここが「82 A0 83 41」になってくれれば良いのだが・・・.いったいどんな変換で,各文字の1バイト目が変換されてしまったのだろうか.

【現状をもう一度分析する】
 データベース設定は文字コードが“latin1”である.そこに,PHPプログラムは“Shift_JIS”の文字列を書き込んでいる.だから,データベースにはShift_JISで格納されているのではないかと推測するが,果たして本当にそうなのだろうか.
 それを確かめるために次の手順を行った.
  1. Windows上のMySQL Command Line Clientを,“default-character-set=latin1”の設定で立ち上げる.
  2. 該当のレコードにアクセスして,どのように出力されるかを確かめる.
 データベース設定がlatin1でクライアントもlatin1なので,無変換のままデータベースに格納された文字列が出力されるはずである.Windows上のMySQL Command Line ClientはShift_JISなので,結果的に文字化けなく出力されるはずである.案の定,正しく表示されることが確認された.
 逆に,“default-character-set=SJIS”としてMySQL Command Line Clientを立ち上げると,Java上と同じように「???A」となってしまった.
 ということは,無変換のままデータベース上から文字列を取り出し,Java上で適切に変換してやれば解決できそうである.

【Java上で無変換のまま文字列を取り出す】
 先のCommand Line Clientの例にならって,クライアントの文字コードをlatin1扱いにする.

String url
 ="jdbc:MySQL://localhost:3306/database?"+
  "user=xxxx&password=xxxx&"+
  "useUnicode=true&characterEncoding=ISO8859_1";

 これによって,自動変換処理されることなく,DBに書かれたShift_JISの「あア」,つまり「82 A0 83 41」が来るはず・・・.
 ところが,「3F A0 3F 41」のままであった.ということは,他にも自動的な変換が行われているのかもしれない. 今のコードはResultSetから文字列として取得しているので,ここで無用な変換が行われている可能性がある.そこで,getBinaryStreamを使ってコードを直接取り出すように変更する.

//From DB
InputStream in
  = result.getBinaryStream("A");

//To Buffer
ByteArrayOutputStream out
  = new ByteArrayOutputStream();

//Stream read buffer
byte[] buff = new byte[1024];

//Stream read length
int length =0;

while( (length = in.read(buff)) != -1)
  out.write(buff, 0, length);

byte[] code = out.toByteArray();
String strA = new String(code, "Shift_JIS"); //※

 あるいは,getBytesでも良いか.

byte[] code = result.getBytes("A");
String strA = new String(code, "Shift_JIS"); //※

 後者のコードのほうがシンプルである. しかし前者のgetBinaryStreamには,“未解釈のバイトストリームとして取得します”という説明がある. よって,データベース上のデータをそのまま取出したい今の状況では,なんとなく前者のほうが安心できる. ちょっと大掛かりになってしまったが,これでテーブル上のデータがそのまま取得できるはずだ.
 しかし,なんと「3F A0 3F 41」のままだった.ここで,完全に途方にくれることになった.  DSNの指定に“characterSetResults”というパラメータが指定できるのでこれも試したが駄目だった.

※実際には,“Shift_JIS”ではなく“MS932”か“Windows-31J”を用いるべきである.

【MySQL Connector/J のバージョン】
 悩んだあげく,MySQL Connector/Jの仕様やバグという可能性を疑うことにした. 更新履歴を見る限り,本件に直接影響しそうなバグFIXはなさそうである. しかし,MySQL5.0でBit型が使えるようになったことから,バイナリでデータを取得するロジックに変更があるかもしれない. 文字コード周りのバグFIXも少なくないようなので,試しに最新のMySQL Connector/J 5.0.5にJDBCドライバを切替えてみることにした.
 その結果,見ごと「82 A0 83 41」が取得できた.MySQL Connector/J 5.0.5を選択した根拠が曖昧なので個人的には納得できていないのだが,ひとまず一見落着.

【まとめ】
 なによりも・・・・
しっかりデータベース設計をしましょう!
ということに尽きる.もちろん,この意味にはRDBMSやその周辺プログラムの仕様を理解したうえでの設計を含む.


◇ブログランキング参加中◇ ブログランキング・にほんブログ村へ
少しでもお役に立てたようでしたら応援クリックをお願いします.右のアイコンをクリックしていただくと10ポイントが加算されてランクが上がり,より多くの方に本ブログを知っていただくことができます.クリックすると日本ブログ村のホームページが表示されます.

【蛇足】  データベース設計というと,まずは正規化のお勉強から始まったりしますが,どのカラムにどのデータをどのように入れるかをしっかり設計していれば,今回のような文字コードの不整合は起きなかったでしょう.そもそも,既存システムの開発者には,PHPソースの中で「<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset="Shift_JIS">」という記述が出てきた時に,『このシステムの文字コードはShift_JISでよいのか?』という疑問を持ってほしかったし,その場合『データベースに書き込むときはどうなるのか?』という疑問を持って欲しかったですね.その疑問があれば,データベースの文字コード設定が「latin1」のままではマズイということに気づいたでしょう. まぁ,ウチの学部生相手にそう愚痴っても仕方ないか・・・.

 他に,もっとシンプルな解決方法があればぜひともご教授ください. MySQLは久しぶりなのでオンチになってます. 以前使った時のバージョンにはトランザクションがなかったし・・・.
posted by みっちぃ (管理人) at 00:21| Comment(0) | TrackBack(1) | 日々の研究

2007年04月16日

研究室サーバへメモリ増設(予定)

 研究室のサーバは今3GBのRAMを積んで,その上で仮想ゲストが4台稼動している.仮想ゲストは,(1)研究室のファイルサーバ兼開発用Tomcatサーバ,(2)RDBMS用サーバ,実験用の(3)Tomcatサーバ,(4)エージェントリポジトリサーバである.これらのサーバをわざわざ分ける必要があるのか?という疑問もあるが,1と2は学外網から離しておきたいし仕様変更も多い.実験用の3と4は実運用に相当するもので,学外からのアクセスもある.よって,必要最低限の役割に制限するとともに,セキュリティレベルを上げておきたい.そんな理由からサーバを幾つか立てたいのだが,残念なことにハードウェアを買う予算がないので,仮想化を使って1台のマシンに詰め込んでいるのだ.それに,システム負荷が増えるのは授業中などの限られた時間帯なので,この方がハードウェア利用効率的が高いことにもなる.
 今,新しい研究プロジェクトを2つ立ち上げようとしている.そのうち1つは現状の構成で問題ないのだが,もう1つの研究ではエージェントリポジトリにアサインしているメモリ容量を増やしたい.そのためには,物理サーバのメモリ容量を増やしたい.しかし,残念なことに追加メモリを購入する余裕も私の研究室にはない.今年度,3〜4つの学会発表を予定しているため,すでに自分の分の研究費は赤字が見込まれているのだ.(というか,機材の購入も国外発表も予定していないのに,既に赤字が見込まれるという研究費がショボ過ぎる・・・.)
 結局,自費でメモリを購入することにした.それと引換えに,自宅マシンのRAIDコントローラを手放すことに・・・.こうするしか(費用を捻出する)方法はなかった.ホットスワップにも対応していて,しかも6chもあるS-ATAのRAIDカードだったのだが・・・.まぁ,ミラーリングしかしていなかったのでICH7Rで十分か.でも,ちょっと寂しいなぁ〜.
 自宅のマシンはRAIDカードの取外しで,念のためバックアップを取ったり,OSの修復セットアップ(OSがインストールされているディスクのコントローラが変わるために必要だった)したり,RAIDをICH7Rで再構築したりと1日作業になってしまった.論文の修正をしたかったのに大きな時間ロスになってしまった.なんと非効率なんだろう.もとはと言えば研究費が少なすぎることが原因.情報工学分野なんか,特に自分の分野なんか他の工学分野に比べて設備費は安いと思う.もう少し予算を割いてくれないかなぁ〜.
posted by みっちぃ (管理人) at 00:14| Comment(0) | TrackBack(0) | 日々の研究

2007年04月05日

Solaris10のインストール

 Solaris10をVMWare Serverのゲストとしてインストール.目的は,原稿に載せる画面のハードコピーがWindowsのものじゃつまらないなぁ〜と思ったから.Vistaも考えたけど,Solarisのシブさも捨て難かったというわけ.
 サン・マイクロシステムズ社のページからDVDバージョンのイメージファイルをダウンロードする.ファイルは分割されていて,1番目のファイルは結合プログラムになっている.まずこの結合が時間がかかる.解凍しながら結合しているようで,結合プログラムが予告している通り90分近くかかった.
 次にインストールを始めるが,インストーラは昔のバージョンに比べてずいぶん使いやすくなった.必要な設定のあとは放置しておけばインストールされるので,肝心の原稿執筆作業も着々と進む.しかも,1台のマシンで原稿を書きながら仮想マシン上でSolarisがインストールされているなんて,PCはほんとに進歩したなぁ〜.
 インストールは難なく完了.そしてログオン画面がシブい!.
 デスクトップはもちろん“Sun Java Desktop System for Solaris”を選択する.そしてログオン.ん〜,デスクトップもやはりシブい!



posted by みっちぃ (管理人) at 01:46| Comment(0) | TrackBack(0) | 日々の研究

2007年04月01日

音声による味覚の再現

【概要】
 この度,味覚再現技術の基礎実験が成功()しましたので報告します.
 コンピュータで扱えるメディアは,聴覚・視覚を利用したものです. 今日においても,味覚や嗅覚などについては完全なものは実現されていません. 神経工学の分野でも研究が活発化しておりますが,神経工学の研究のほとんどは,コンピュータと人間を接続するインタフェースが容易なものではありません.電極を体に貼りつけたり,神経に直接接続するものなどがあります.
 これに対して本研究独自の味覚再現技術では“音”を使います.人間には聞き取りにくい高周波成分を使って人間の脳に働きかける画期的な技術です.コンピュータに音声出力機能があれば,特殊なハードウェアを必要としません.音を発することができるものであれば再現可能なので,携帯電話などの身近な機器への幅広い応用も期待できます.
 例えば,料理をテーマにしたWebコンテンツにアクセスしたときに,どんな味の料理であるかを知ることができるようになります. 味覚障害者に対する支援などとして,医療・福祉分野での活用も考えられるでしょう.


図1 味覚の伝達と
聴覚刺激による再現
【技術的説明】
 図1のように,食べ物を食べたときの味覚は電気信号となって脳に伝わります.舌には甘みや辛みなどを認識する別々の触覚があり,それぞれが反応することで様々な味覚となって脳で処理されます.本研究の味覚再現技術は,脳に伝わる電気的信号を聴覚を通じて発生させます.その際,どのような音声パターンを使えば味覚を再現できるのかという点が長年の課題でした.
 現在,本研究では実験的に味覚を発生させることが可能()になっています.しかし,人によっては甘みを感じたり,辛みを感じたり,酸味を感じるなどの個人差があります.まったく味覚を感じない場合もあります.

【体験方法】
 まだ実験段階()ですが,より多くの方に体験していただくためにサンプルファイル(Windows Media形式)を用意しました.
注意事項:本当に高周波成分を入れてありますので,むやみに音量を大きくしたりしないでください.視聴中に気分が悪くなった場合は直ちに再生をやめ,しばらく安静にしてください.筆者はいかなる責任も負いません.(っていうか,かなり小さく入れてあるのでほとんど大丈夫だと思いますが...)
【将来性】
 前述のように,味覚再現の有無やその感じ方に個人差があります.本手法による味覚再現技術を実用化するためには,全ての人が同じように味覚を感じることができなければなりません. そのためには多くの課題が残されており,実用化までには相応の時間がかかるものと見込んでいます.
 しかし,音声で味覚を再現する本手法は,嗅覚や触覚の再現への展開も期待できます. 五感全てを容易に再現するための重要な研究として,将来性が見込めると考えられます.

【追記】
 ※本日はエイプリルフールです.
 日本インターネットエイプリル・フール協会ブログもどうぞ.
posted by みっちぃ (管理人) at 00:02| Comment(0) | TrackBack(1) | 日々の研究

2007年03月31日

原稿執筆の進捗

・・・・,えっと・・・.今日までに書き上げるつもりだったわけですが・・・・,今日中に半分は書き終えます・・・.一日遅れの明日,書き終わると思います・・・.

ζ( ̄∇ ̄;
posted by みっちぃ (管理人) at 00:09| Comment(0) | TrackBack(0) | 日々の研究

2007年03月26日

原稿執筆の進捗

その後,執筆は予定どおり進まず・・・.早々に挽回せねば・・・.
posted by みっちぃ (管理人) at 00:06| Comment(0) | TrackBack(0) | 日々の研究

2007年03月22日

原稿執筆開始

 今日から3月末日までのスケジュールで国際会議向へ投稿する原稿を執筆する.1日あたり最低でも1ページで書けば余裕で間に合うスケジュールなのだが,そう思うと気がゆるんで,ギリギリまで引っ張ってしまうのがいつものクセ.結局徹夜したりする・・・・.今回も同じかな・・・.
posted by みっちぃ (管理人) at 08:33| Comment(0) | TrackBack(0) | 日々の研究

2007年03月20日

やる気なさ杉・・・

 研究に関するデータ分析を進めていたところ,学生のやる気のなさに改めてガッカリしてしまった. 授業で学習支援システムを導入したにもかかわらず,それを使おうとしていない. 使わずに課題が提出できるならそれでよいのだが,当然のように提出されていない. しかし授業には出席している.そんな学生が半分近くもいるのである.
 対象としている授業はプログラミングの基礎. 研究中の学習支援システムは,分らないなりにも利用を続けることで,一応のレポートが作成できるようになっている. だから支援システムを使えば必ず成果物が提出できる. にも変わらず,支援システムにログオンすらしていないのである.
 しっかし,教える側はナメられたもんだ. 私はTAの立場なので口出しできないが,私が講師なら,こんなやる気のない学生に対して絶対に単位はやらない.
 我が大学は下流大学だから仕方ないことだと,割り切って考えられないこともない. しかしそうだとしても,他人にコピーを貰ってレポートを提出するなどして,悪さの中にも“レポートを出さないとマズイ”という意識が欲しい. それすら無いという点に失望した.
 やる気がない,レポート出すことの意味が分らない,でも単位は欲しい〜.これでは,大学はまるで廃人育成学校のようだ.今後,大学淘汰が進むにつれてこの傾向が悪化するだろうと思うと憂鬱である.
posted by みっちぃ (管理人) at 00:16| Comment(0) | TrackBack(0) | 日々の研究

2007年03月17日

うむぅ〜

 新しい研究テーマに関する実験結果を分析していたところ,有意な結果を得られなかった.他に興味深いデータが得られないだろうかと1日中粘ってみたが進捗なし.まいったなぁ〜.
posted by みっちぃ (管理人) at 00:16| Comment(0) | TrackBack(0) | 日々の研究

2007年02月18日

Virtual Server 2005 R2 の仮想 SCSI コントローラについて

某サイトでの自分の書き込みから引用.研究室ではハードウェアがなかなか購入できないため,サーバの不足は仮想化で補っている.結構まともに使えますよ!でも,下記の通り仮想SCSIを使う場合は注意してみてください.
Virtual Server 2005 R2 のゲストマシンで,仮想SCSIを利用する場合の話.特に,ゲストOSのインストール後(バーチャル マシン追加機能のインストール後)に仮想SCSIインタフェースを追加した場合は要注意.ここを注意しないと,仮想SCSIディスクへの書き込みが使い物にならないくらい悪い.

確認すべき要点は1箇所のみ.ゲストOSのデバイスマネージャで,仮想SCSIインタフェースが「Adaptec AIC-7870 PCI SCSI Controller」となっていたら要対応.対応方法は次の通り.
  • このハードウェアを右クリックして「ドライバの更新」.
  • ハードウェアの更新ウィザードが開始される.Windows Updateに接続するかどうかを尋ねられるので,「いいえ」を選び次へ.
  • インストール方法として「一覧または特定の場所から〜〜」を選択して次へ
  • 検索オプションでは「検索しないで〜〜〜」を選んで次へ.
  • ハードウェアリストでは「ディスクの使用」を押下して,表示されるダイアログでバーチャル マシン追加機能をインストールしたディレクトリ(通常「c:\Program Files\Virtual Machine Additions」)を開く.vmvmscsi.infを選択する.するとハードウェア一覧に「Microsoft Virtual Machine PCI SCSI Controller」が表示されるのでこれを選択して「次へ」
  • ドライバがインストールされるので,ウィザードを完了する
ほぼ同じ内容はここにも書いてある.しかし,この手順を行わなくても一応使えてしまうので,問題に気づかない場合があるだろう.

バーチャル マシン追加機能をインストールするのは基本だが,追加機能をインストールした後に仮想SCSIを追加した場合は「Adaptec AIC-7870 PCI SCSI Controller」と認識されてしまう.この状態で,仮想SCSIディスクのフォルダに大きなファイルを転送すると時間が非常にかかる.それが共有フォルダとなっている場合には,コピー中に「ネットワーク名が見つかりません。」と表示されて一時的にネットワークが切断されたような状態になり,ファイルの転送ができなかった.コピーを途中でキャンセルしても,どんなキューが溜まっているのか不思議に思うほど物理ディスクへのアクセスが長く続く.

最初は,仮想ハードディスクファイルが格納されているRAID5のディスクアレイとの相性が悪くて,このような症状がでているのかと思った.でもそのような理由で相性が出るなんて使い物にならない.いろいろ検索していたらこのようなページがでてきた.おかげで無事解決できた.

念のため・・・・.
本内容に基づく不都合や損害に筆者は一切責任を持ちません.試されるときは自己責任で.
posted by みっちぃ (管理人) at 22:13| Comment(2) | TrackBack(0) | 日々の研究