スタッフブログ

  • 最新配信
  • RSS

連休のすごし方

 : その他 2009/1/15 12:17

Blogger's Avatar

haltです.
三連休を利用して,ザ・ペニンシュラ東京(http://www.peninsula.com/Tokyo/jp/default.aspx)に宿泊してきました.
近年,マンダリンオリエンタル,ザ・リッツカールトン,ペニンシュラ等,外資系世界最高級ホテルの多くが進出.
東京をにぎわせていますが,自分は一度もこのクラスのホテルに宿泊した事がなかったので,
時間のできた三連休に宿泊してきました.



香港からきたホテルという事で,オリエンタルな雰囲気があり,非常に落ちつきます.外に出るのが億劫になるくらいです.
ベッドサイドにあるコンソールでなんでも操作できるのも動く気力をそいでくれます.

ディナーはヘイフンテラス等のホテル内レストランもよかったのですが,
猛烈にフレンチが食べたくなったので銀座のビストロ ヌガ(http://www.lenougat.jp/)に.
低価格でちゃんとしたフレンチを楽しむ事ができるのでオススメです.



IT関係の仕事をしていると休日でもついついコンピュータの前に座って仕事の事を考えてしまったりしますが,たまにはコンピュータのない所でゆっくり過ごすのも良いのではないでしょうか.

WEKOで使われている全文検索の方法

naoto : 技術全般 2009/1/13 9:52

Blogger's Avatar

なおとです。 先週とある指令を受けて、WEKOに興味を持ちました。

ブログの記事を読むと、弊社の龍司社長はオフィス文書の検索に感心したようです。 そこに焦点を当てて調べてみました。

まずWEKOモジュールをダウンロードして、ソースを眺めてみることにします。

  • weko1.31.tar.gz

私は弊社の他のメンバーと違ってNetCommons2の経験が少々足りないので、勉強を兼ねて手探り状態です。

始めに、データベースのテーブル定義を見ます。 同時に日本語の言語ファイルも見て、関係がありそうなところにアタリをつけていきます。

  • repository/sql/mysql/table.sql
  • repository/language/japanese/main.ini

すでに前記の記事で書かれているように、検索エンジンとして、MySQLに標準で組み込まれている全文テキスト検索(FULLTEXT INDEX)が使われているようです。

これで検索用インデックスが格納されるテーブルの名前「repository_fulltext_data」が分かりました。

※Windows上で動いているなどで対応していない場合には、部分一致検索(LIKE検索)に切り替えるようです。

そこでテーブル名をキーにソースを全文検索すると、次の2つのファイルが該当することが分かりました。

  • repository/components/RepositoryAction.class.php
  • repository/action/edit/createfulltext/Createfulltext.class.php

ここまで絞り込まれると、あとはソースを読むだけです。

オフィス文書をテキスト形式のデータに変換する

この仕組みで検索可能にするためには、対象となる内容を予めテーブルに置き、さらにインデックスという、素早く効率的な検索をするための付加的なデータが必要です。まずはデータを登録する部分を見ていきます。

すると、PHPから外部のコマンドラインを呼び出して、オフィス文書をテキスト形式のデータに変換する処理を見つけました。 ごく簡単に、核心部分を引用します。

  • wvWare
    • wvHtml input.doc output.html
  • xlhtml
    • xlhtml input.xsl > output.html
  • poppler
    • pdftotext -enc UTF-8 input.pdf output.txt

詳しくは各ツールのマニュアルでコマンドライン・オプションを調べると分かります。 (例:man poppler)

検索用インデックスを作成〜実際に検索する

上記のように変換したテキストファイルの中身をテーブルに挿入したあと、インデックスを生成しています。

検索はデータベースに対して検索クエリを投げると、結果が帰ってきます。

最後の方は駆け足になりましたが、概要は以上です。

私は数年前に、Namazuを使った全文検索を扱ったことがありました。 wvWareやxlhtmlといったツールは、その時にも使われていたのを思い出しました。

...続きを読む

Box2DFlashAS3を使ってみた

 : 技術全般 2009/1/9 14:28

Blogger's Avatar

satoです。
今回は、前回に引き続き、Flashを作ってみました。

[こちらからご覧下さい]

クリックすると何か出ます。それだけです。時間がなかったのでしょぼくて申し訳ないです。
今回はBox2DFlashAS3を使用しています。
前回使用したAPEより高機能で、描画ロジックが分離されているため、PaperVision3D等と組み合わせることも可能なのですが、資料が少なく、情報を調べるのが若干面倒です。

基本的には、gihyo.jp様の連載を見ながら進めるのが一番覚えやすいと思います。
ただし、現行バージョンとは若干違う部分もあるようなので、更に詳しくはBox2Dのマニュアル日本語訳)やクラスリファレンスを参照するといいと思います。Box2DFlashAS3自体の公式のドキュメントはほとんど存在しないようです。(Box2DFlashAS3はBox2DをAS3に移植したものです)

Box2DFlashAS3で作られたものは、引越し奉行等が有名だと思います。
アイデア次第でいろいろ作れると思うので、是非試してみてください。

携帯モジュールの絵文字実験中

 : 技術全般 2009/1/8 18:45

Blogger's Avatar

年末年始の休みぼけがようやく抜けてきたgusagiです
今日は、自分のサイトで行っている携帯モジュールの実験について、書かせて頂きます。

こちらの記事にも書きましたが、自分のサイトで絵文字フィルターの実験を行っています。
幾つか不具合っぽい部分も残っていますが、ひとまず一般公開出来るようになってきたので、思い切って公開してしまいました
依存しているPEARライブラリのライセンスとの兼ね合いで、一般配布まではもう少し調整が必要ですが、最低限の形にはなってきたと思っています。

実験がもう少し進んだら、このRYUSのサイトなどにも同様の機能を突っ込んでみる予定です。
また、ライセンスの関係で配布は出来ないものの、通常動作には支障なないレベルになってきているので、興味のある方はXOOPS関連のイベントや、こちらのセミナーの際にでも声をかけて下さい

PDFやwordファイルの中身まで全文検索できる WEKO

Ryuji : 技術全般 2009/1/8 13:01

Blogger's Avatar

回を重ねる毎に参加人数が増えつづけているCMSナイト。昨夜も盛況でした。

毎回、様々なCMSや、CMSの拡張機能についての紹介や利用事例などの紹介があるのですが、昨夜はNetCommons2用モジュールの「WEKO」の紹介がありました。

WEKO

このwekoの発表の中で「お!」と思ったのが、登録した wordやpdfの中身の全文検索機能があったことでした。

仕組みとしては、word や pdfの中身を登録したときに、別のソフトウェアで、ファイルからテキストを取り出して、データベースに登録しておき、wekoからはデータベースを検索するという形でした。

このテキスト抽出に使っているソフトウェア名をお聞きすることができたので、それを利用してXOOPSのダウンロードモジュールに全文検索機能を追加してみようかと思います。

実際に各ソフトウェアをどうやって呼び出してるのかは、WEKO のソースコードを読んで調べてみようと思ってます。(こういうときにオープンソースだと、簡単にノウハウを知ることができて便利ですね)

というわけで、誰かチャレンジしてみてね>RYUSスタッフ

年の始めに情報整理

mik : ビジネス 2009/1/6 16:58

Blogger's Avatar

明けましておめでとうございます!今年もRYUSをよろしくお願いします。

だいたいの会社が昨日から仕事始めだったのではと思います。RYUSも昨日から輝ける2009年の営業を開始しました。

年初だからと言って特に目新しいことはなく、いつも通りの仕事だったのですが個人的に年初らしいことをしてみました。

一つはクリーンデスクトップの実行です。プライバシーマーク取得のため、運用を開始しているのですが一度はきれいにしたクリーンデスクトップ(PCのデスクトップにショートカットを置きすぎない)が、日にちが経つにつれてまただんだんとごちゃごちゃしてきました。年初でもあるし、えいっ!と再度かたづけてみました。現在はマイドキュメントとかゴミ箱などの規定のアイコンの他は自分で作ったフォルダが2つだけあるのみのきれいなデスクトップになりスッキリしました。

もう一つはブラウザのブックマーク(お気に入り)の整理です。もともとがあまり整理好きな人間ではないもので、最初はフォルダを作ってそれぞれ用途別にブックマークを保管してるものが時間が経つにつれ、ええぃ面倒だとりあえずブックマークしとけ、という感じでフォルダにではなくルートにずらずらーとブックマークが林立していました。

実際使い勝手も良くないので、年初ということで整理してスッキリしました。また、なぜかIE7のお気に入りの整理で片付けようとするとIEが固まってしまうので

C:\Documents and Settings\自分のユーザ名\Favorites

を開いて、ファイルやフォルダ単位でドラッグアンドドロップして整理しました。ファイルと同じなので、こちらの方がずっと簡単に早く整理できました。

ということでデスクトップもブックマークもスッキリして、より業務に励みたいと思います。よろしくお願いいたします♪

2009年元旦秋葉原

 : その他 2009/1/5 14:36

Blogger's Avatar

argonです。
あけましておめでとうございます。今年もよろしくお願いします。

元旦に秋葉原電気街へ行ったので、その事について書いてみようと思います。

元旦でも秋葉原は結構お店やってるよという情報を知人から得たので会社にノートPCの電源アダプタとデジカメを忘れたのを回収、そして買い物に元旦の秋葉原に行ってきました。

弊社のオフィスはホテルとの共同施設です。ホテルは当然、元旦も営業中でした。
3階の会社へ行き、さくっと忘れものを回収。そして秋葉原電気街へ移動。
2009年元旦秋葉原
いやぁ、結構な人がいますね〜。やっぱり福袋とか目当てなのかな?
僕は福袋は買わないので、そこにはあまり興味はなかったですが、いくつかのお店で福袋セールしていました。
自分が目にしたのはソフマップ、ヨドバシカメラ、あきばお〜などなどでした。
そして、気になったのは秋葉原の駅のロッカー近くで見かけたヨドバシカメラの(おそらく)福袋を10ヶ!を
買ったとおぼしき(たぶん)中国人の方でしょうか。福袋そんなに良いもの入ってたのかなぁ・・・
あとは、元旦だからなのかは分からないですが、全体的にいつもよりもさらに外国人のお客さんが多い。
昨今の為替の円高化の影響で海外からの観光客の方には厳しい情勢じゃないかなとは思うのですが、そんな事は
あまり関係ないのかも?と思うほど多くの外国人の方をみかけました。

買い物自体はPCのパーツと雑誌、文具などをつつがなく購入。
ヨドバシカメラで元旦から4日まで太っ腹なゴールドポイント+5%加算セールしていたのが印象的でした。

正月休みでPC関係のショップなどいつも行くお店が3-4店お休みでしたが、全体的には人も多く賑やかな秋葉原電気街でした。

HttpWebRequestでcheckboxの値をPOSTする方法

 : ツール 2009/1/5 2:55

Blogger's Avatar

セールで買ったシルバーアクセサリーの福袋が割と当たりだったhaltです.

C#のHttpWebRequestクラスを利用するとGETやPOSTによるHTTP通信を行う事ができます.以下は割と適当に書いたHttpPostを行うメソッドです.
(Cookieはメンバ変数から拾っているのでそのままでは動作しません)

第一引数に送信先のurlを指定し,第二引数に送信する内容をDictionary形式で指定する事で,データを送信する事ができます.

            private string HttpPost(string url, Dictionary<string, string> vals) {
                string param = "";
                foreach (string k in vals.Keys) {
                    string key = k.Replace("#", "");
                    param += String.Format("{0}={1}&", key, vals[k]);
                }
                byte[] data = Encoding.ASCII.GetBytes(param);

                // リクエストの作成
                System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.ContentLength = data.Length;
                req.CookieContainer = _cookieContainer;

                // ポスト・データの書き込み
                System.IO.Stream reqStream = req.GetRequestStream();
                reqStream.Write(data, 0, data.Length);
                reqStream.Close();

                System.Net.WebResponse res = req.GetResponse();

                // レスポンスの読み取り
                System.IO.Stream resStream = res.GetResponseStream();
                System.IO.StreamReader sr = new System.IO.StreamReader(resStream, encoder);
                string result = sr.ReadToEnd();
                sr.Close();
                resStream.Close();

                return result;
            }

ようは,送信したい値をname=value形式でつないでencodeしたものを付加するのですが,
textareaやtextboxの内容を送信する事はできるのですが,checkboxのような,一つのnameに対して複数の値を持つ要素を送信する方法がわかりません.

詳しい人に聞いてみた所,checkboxのような複数の値を持つものは,以下のように,送信する数だけname=value形式で連結すれば良いそうです.

my_check=1&my_check=2&my_check=3...

となると,キーがuniqueなDictionary形式は使えないですね.専用の構造体を作った方がいいのかもしれません.

bulletinのテーブル名不正規問題を修正する

naoto : XOOPS » モジュール 2008/12/26 9:00

Blogger's Avatar

こんにちわ、なおとです。

今日の話題は、よく使う bulletin(ニュース)モジュールの問題点を修正したことについてです。



問題の状況

  • Windows環境で作成したDBのデータをUNIX環境に持って行った場合
  • windowsでXOOPSを運用していると、この現象は顕在化しない
  • ルート側のdirnameに大文字を混在させてインストール/利用している
  • テーブル名は小文字で作られる
  • しかしテーブル名にアクセスするとき、〜$xoopsDB->prefix($mydirname.'_topics')〜というコードでテーブル名をつくってクエリを生成している
  • $mydirnameには大文字が含まれていて、内部的にはそのテーブル名は存在しない、というエラーが起こる

影響を受けるバージョン(調べた部分のみ)

解決方法

prefix()を呼んでいる箇所を全てチェックし、必要に応じてstrtolower()を挟む

他の解決方法も検討しましたが、今回は上記対応を行いました。

修正用の差分ファイル

bulletin テーブル名不正規問題修正パッチ (ダウンロード)

2008.12.26 13:40 追記:
この現象は、 Windows環境で作成したDBのデータをUNIX環境に持って行った場合に限定されます。
通常の環境の場合、上記の差分ファイルパッチを当てると、逆に動作しなくなります。
ただ、WARPなどの環境でデータを作成してから、UNIX環境にデータを移行して運用なんてケースも考えられるので、その場合は上記パッチを適用して頂いた方が良いと思われます。

Flashで雪を降らせる

 : 技術全般 2008/12/24 9:26

Blogger's Avatar

今年もクリスマスは一人で過ごす予定のsatoです。

今日は12/24ということで、Flashで雪を降らせてみました。画面をクリックすると雪らしきものが降ります。

[こちらからご覧下さい]

全然それっぽく見えないかもしれませんが、これはAPEという物理演算ライブラリを使用しています。
今回は短時間で作ったためにやっつけな出来になっていますが、本来はもう少し凝ったことができるようになっています。
機能自体はそんなに多くないので、比較的簡単に利用できると思います。
物理演算なので、単に球体(雪)が落下しているだけではなく、面に対して跳ね返ったり積もったりしているのがわかると思います。

ActionScript用の物理演算ライブラリには他にFisix Engine等があるのですが、Fisix Engineは今回はライセンスの関係で見送りました。ただしこちらのほうが高機能なので、興味のある方は利用してみてください。

それでは、良いクリスマスをお過ごし下さい。

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階

Copyright(c) 2012 RYUS.All Rights Reserved.