« March 2004 | Main | May 2004 »

April 2004

2004.04.29

IP電話→PHS

 @niftyフォン→PHSって、サービス対象外なんですね・・・。加えて、どうもテレコムなども携帯電話への通話はできるけど、PHSは対象外っぽい?
 AirH"や@FreeDなどのデータ通信においてはそれなりに残っていますが、音声通話に関してはかなり影が薄くなってしまってますよね・・・>PHS

| | Comments (0) | TrackBack (0)

2004.04.27

音声合成

 NHKのニュースで音声合成に関する話題が出ていました。
 音声合成といえば・・・僕自身は直接聞いたことがないのですが、PC-6601SRなんてのがありましたね(笑)。TALK文で、音程つきで「歌わせる」ことも可能だったそうで。

#「六本木パソコン」とか「Mr.PC」とか言われていましたっけ。

| | Comments (0) | TrackBack (0)

2004.04.26

JPEG特許訴訟

 数年前に、GIF画像ファイルのライセンス問題なるものがありましたが、今回はJPEGだそうで。その他にもハイパーリンクに関するものもあったりしましたし、今後もいろいろと出てきたりするんですかねぇ・・・。

#実は、JPEGに関しては、2年前にもこういう話題があったんですね。

| | Comments (0) | TrackBack (0)

2004.04.25

KATALITH

 昔良く聴いていた曲を引っ張り出してきてBGMとして聴いていると・・・なんか、その曲を聴いていたときに夢中になっていたものも記憶によみがえってきますよね。なんででしょ?
 で、それで思い出したのがKATALITH。基本は対戦型テトリスなのですが、さまざまな凶悪機能(?)があったりして、結構ハマっていました。Googleでちょこっと調べてみると・・・Windows版もあったのですね。ちなみに、KATALITHってのはこんな感じ
 試しにダウンロードしてプレイしてみたのですが・・・BGMも当時のものを再現しているのにはびっくり(笑)。

#その他に結構ハマっていたもの。DynamoとかSuperDepthとかCarII GRANDPRIXとか。

| | Comments (0) | TrackBack (0)

2004.04.24

くじアン

 「くじびきアンバランス」アニメ化とのこと(!)。
 しかし、最近いろんな作品がアニメ化されるなぁ。ただ、放映されるチャネルがかなり限定されている(大半がCATV?)のが残念なところ。勇午とか、深夜枠あたりでTV大阪などでやってくれると良かったのに・・・(をぃ

| | Comments (0) | TrackBack (1)

2004.04.23

Shuriken Pro3

 メールソフトを入れ替え。
 Outlook Expressから、Justsystemの「Shuriken Pro3」に(笑)。別に絶対これでなければ! という理由はなかったのですが。強いて言うならば、Justsystemの製品だからか?(をぃ ←僕は徳島県出身
 まだインストールしてデータをコンバートしているところなので、使い勝手などは後日ということで。ちなみに、コンバート中にOutlookExpressのメールボックスに残っていた「ウイルス付き」のメールに、NortonInternetSecurityが反応しました(笑

#っていうか、検出しすぎて、変換ツールが落ちてしまうし(汗

| | Comments (0) | TrackBack (0)

2004.04.22

ソースコード

 ある1つのアルゴリズムの実装を同じ言語で行った場合でも、ソースの書き方は結構人それぞれ。
 最近あるアルゴリズムをJavaScriptで書いたソースを何種類か見たのですが、あるものは非常に基本に忠実って感じ。で、またあるものは、書き方が全然違って、コンパクトかつエレガント(?)にまとめられていました。外から見た処理内容は同じであり(当然ですが)、部分的に同じところ(計算式や定数)もあるのですが、「こんなにも違うんだ〜」って感じでした(笑)。

| | Comments (0) | TrackBack (0)

2004.04.12

SQL関数(2)

 SQL関数をうまく使うと、今まで「大量にデータを取得してJavaプログラムで処理」していたことを、「DBサーバでうまく処理してJavaプログラムで受け取るデータを必要最小限に」することができそうな感じ?
 ということで、今回は「CHAR型フィールドにおいて、文字列中の半角スペースおよび全角スペースを取り除いた状態で比較を行う」ための支援関数の作成に挑戦してみました。両端の半角スペースならTRIM()関数でサクッと処理できるのですが、"A B"を"AB"と同一視して比較ってのは、どうも標準で実装されている関数だけでは無理っぽいようで。

 まず悩んだのが、引数および戻り値の型指定。JavaのStringクラスなんかだと、文字長は不定なので、特に意識する必要がないのですが、SQLにおいては、CHARもVARCHARも文字数の定義が必要。文字数を指定せずにCHARとだけ記述した場合は、「CHAR(1)」として処理されてしまいました(笑)。しかたがないので、とりあえず今回の用途で「これだけの文字長があれば大丈夫だろう」ということでVARCHAR(100)で定義することに(CHAR(100)で定義するとうまく動かなかったのが不思議ではありますが)。

 アルゴリズムとして、
 1.引数の文字列を1文字ずつ切り取って、半角or全角スペース以外の場合に戻り値に連結。
 2.引数の文字列に対して半角or全角スペースを検索し、そこまでの文字列を戻り地に連結。それ以降の文字列に対して再度半角or全角スペースを検索して文字列を連結していくという処理の繰り返し。
 ってのが思い浮かんだので、とりあえず両方作ってパフォーマンスを比べてみたところ・・・2.の方が2〜2.5倍ほど速い感じでありました。

 不思議だったのが、1.の処理の際に「半角スペース」のみを処理すると全角スペースも取り除けたこと。DBの文字コードがEBCDICで、IN/OUTの処理があったりとややこしいことになりそうだなぁ・・・と思っていただけに、ちょっと意外。もしかすると、全角スペースの文字コードがEBCDICにおいては半角スペースとかぶったりするのかもしれませんが。
 あと、2.の処理においても、SUBSTRで文字列を切り出す際、全角スペースの次の文字から取り出す場合も、全角スペースの文字位置+1で処理できたのも? Javaなら「文字数単位」での処理なので全然不思議ではないのですが、DB2の場合はバイト単位だったような??

| | Comments (0) | TrackBack (0)

2004.04.11

Excel&VBA

 いまさらながらではありますが、Excel(2000)のVBAマクロに初挑戦。
 ん〜〜さすがにVisualBasicというだけあって、昔Basicを使っていたときによく使っていた関数が。LEFT$とかRIGHT$とかINSTRとか。とはいうものの、QuickBasicも含めて、ここ5年くらい全然触っていなかったので、「そーいえばこんな関数もあったなぁ」とかいう感じではありましたが。

| | Comments (0) | TrackBack (0)

2004.04.10

テンプレートエンジン

 Javaでのテンプレートエンジンと言えば、まずはVelocityが出てきますが、いろんなところを見ていると、自前でテンプレートエンジンを作成して使用している人もいるようですね。
 ということで、僕も作ってみました(笑)。パフォーマンスに関しては未知数ですが(汗)、結構簡単に作れるものなんですね。
 で、そのテンプレートエンジンはjava.io.Readerクラスを引数にして呼び出し、それを内部でjava.io.BufferedReaderでラップしているのですが、BufferedReaderのコンストラクタの引数はReaderで、BufferedReaderもReaderのサブクラス・・・つまり、BufferedReaderのコンストラクタには、BufferedReaderも渡すことが可能? まぁ、エラーにはならないとは思いますが(^^;;

| | Comments (0) | TrackBack (0)

2004.04.06

SQL関数とパフォーマンス

 SQLを使用する際、今までは既に定義されている関数(SUMとかSUBSTRとか)しか使ったことがなかったのですが、今回思い立って、SQL関数の作成に挑戦してみました。といっても、いきなり複雑なものを作ろうとすると挫折してしまいそうなので、普段はSQLで取得した結果を元にJava側で処理を行っていた演算を、SQL関数に移植することに。でも、とりあえずどのように記述すればいいのかさっぱりわからないので、一番最初に作成したのは、DBサーバの参考資料に書かれていたCREATE FUNCTION(SQLスカラー)のサンプルソースそのものでした(笑)。
 CREATE FUNCTIONは普通にStatementを作成してexecuteUpdateで実行できるので、普段使っているSQLツール(自作)で処理・・・と思ったところ、セミコロンをSQL文の区切り文字として使用していたので、その部分を修正する必要が発生してしまいました。そんなこんなで作成したSQL関数を、SELECT文に組み込んでテスト実行。案外簡単に作成&使用できるんですね(^^)。

 次に、オリジナルの関数の作成。まぁ、処理の内容自体は変数への割り当て(SETコマンド)と、条件分岐(IF〜ELSE〜END IF)程度で記述できる程度のものなので、先ほど参考にしたソースを元にあれこれ試行錯誤。
 何度か作成に失敗するものの、とりあえずは無事に完成。executeUpdateでの作成の場合、エラーが出ても「どこでエラーが出ているのか」が非常にわかりにくくて大変ですね(苦笑)。一応、SQLExceptionのメッセージは表示されているのですが、具体的にどの部分なのかが不明な場合も。せいぜい10行〜数十行のソースなので、じっくりとソースを見直すことで何とか解決できましたが。

 ただ、データ量が多くなるとかなりの負荷がかかってしまうようで、約13万レコードに対して処理を行うようなSELECT文を作成したところ、反応が戻ってくるまでに600秒ほどかかってしまいました(爆)。いろいろと調べてみると、IFステートメントをCASEで置き換えることができる場合はCASEステートメントの方がパフォーマンスがいい場合が多いとのこと。今回作成したSQL関数のIFステートメントもCASEで置き換えることができるような内容だったので、プログラムを書き直して再作成。最終的な状態では、同じ処理が70秒程度まで改善されました。GROUP BYなども使用しており、今回作成したSQL関数を使用しない状態でも30秒〜40秒程度かかっていたので、まぁ、許容範囲? 逆に、DBサーバ側でのGROUP BYでこれまでより取得レコード数を劇的に減らすことができるため、APサーバ側での負荷の軽減を考えると、いい感じと言えそうです。

| | Comments (0) | TrackBack (0)

2004.04.04

テキストファイルに対してSQL

 カンマ区切りやタブ区切りのテキストファイルに対してSQLを発行することのできるドライバがあるんですね。CSVアクセス用のJDBCドライバもあるようですが、今回はODBCドライバ経由でトライしてみました(このドライバはMicrosoft Officeについてきているのかな?)。
 Eclipse用のDBプラグインとしてDbEdit/QuantumDB/JFaceDbcを使用しているのですが・・・DbEditを使うことが一番多いので、とりあえずそれで挑戦。が、どうもMetadataを扱うあたりでドライバが対応していないらしく、接続失敗。設定でMetadataを扱わずに処理を行うようになるのかと思うものの、そのような設定は見当たらず、またGoogleであれこれ調べても手がかりはつかめず。
 次に、QuantumDBで設定を行うと・・・とりあえず、さっくりと接続成功。さすがに、100MBを超えるテキストファイルが対称だっただけに処理速度はアレですが、SQLで手軽にデータを捜すことができるってのが結構便利(^^)。小さなファイルなら、レスポンスも問題ないですね。
 それまでは、Excelに取り込んで処理したり、CSVファイルの各カラムの最大文字長を解析するツール&CSVを読み取りながらDBに格納するツールを作成したりして処理をしていましたが、直接データベースと同じように扱うことができると、手間が省けて楽です(笑)。
 ただ、DbEditで使えると一番うれしいのですが・・・。仕事柄、Paradoxのデータを扱うこともあるのですが、それもDbEditだとODBC経由での接続に失敗するため、QuantumDBを使用しています。DbEdit&ODBCが無理なのかなぁ・・・。

#ちなみに、JFaceDbcでも問題なくODBC経由でCSVファイルにアクセスできました。

| | Comments (0) | TrackBack (0)

« March 2004 | Main | May 2004 »