努力してみた日記

最新 追記
あまりためにはならない話しか書かないと思うよ。

努力したWiki

2012-03-18 確かにろくろ回してるな!ww

[雑記] 確かにWeb業界はろくろを回す

→ハムスター速報 WEB業界ろくろ回しすぎワロタ

言われると確かにそうだわww

何であんな感じにするんだろね。

本日のツッコミ(全6件) [ツッコミを入れる]

Before...

努力中の人 [朝も早よから何やってんですかw]

jk [あれ?めずらしくおきているじゃんw いや、目がさめたら寝れなくってw]

努力中の人 [通知メールで携帯がブルブル鳴って起きちゃいましたよー意地でも二度寝しますw]

jk [あ、俺がおこしちゃったのか(^ ^;; というか、努力中の人を起こすには、ここにコメントすればいいのね(うぉい とい..]

努力中の人 [携帯への通知を解除したので夜中でも構いませんぜw]


2012-03-24 どれだけMなんだ?

[Database] 某社のLinux版ODBCドライバが不具合だらけな件

うちの会社の若い衆が、ただでさえ不具合続出で新製品発表時に『んなもんどうでもいいから不具合はよ直せボケ』と突っ込まれている某社のデータベースをデータソースにしたレポーティングシステムを作っており、やっと来週に納品!というところにこぎつけた。

このデータベース、出た当初はボロクソ言われてたものの、検索速度だけは速くて組み込み機用のカスタマイズもやれてたのである方面ではだいぶ使われている。

まぁ、ごり押しもあるんだけど。

しかし、このごろは先にも書いた通り、ろくでもない不具合を作りこんでくれてて、メンテナンスツールを起動したら最後回復不能!とかドンだけ罠を仕掛けてるんだ、という有様。現場の経験浅いSEさんが命削りながら対処している、そんな状態。

で、件のシステム

システムの発注をかけてきたのがそのデータベースを作ってる会社の別事業所で、公共関係の受注を取っている部署。そこの課長さん達も『それを使うと危険が危ない!』って位リスクが高まる事を理解していた。当然採用なんかしたくない。OracleやDB2の方がずっと安心。

しかし、偉い人等は違った。…そしてこのデータベースを組み込むのが絶対条件になってしまったのでした。

でも今回のシステムはそのデータベースをサポートしていないため、今時なぁ…とは思いつつもODBCを経由したアクセスを行うことになった。…そしてWindowsを使うのかと思いきや、変なところでケチったためLinuxをサーバとして使うことになり、あわててLinux版ODBCドライバを取り寄せることになったのでした。どれだけMな皆さんなのよw

ま、悪い予想ほど当たる

レポーティングツールはUnicodeを前提としており、データソースはSJIS。ということはSJIS to Unicodeの変換が必要になる。このODBCドライバはきちんとサポートしているとの事でした…が。

しばらく経つと、テストデータのうちいくつかを使うと、レポート表示できず異常終了する事象に遭遇。ローマ数字や丸囲み文字で発生すると聞いたら慣れた人はピンと来るかもしれない。そう、JIS X 0203の範囲での変換しかできないことが発覚したのでした。開発元、問題なく変換できるといってたのに、それを撤回してきました。

次が文字関数の振る舞い。

たとえば、Lower関数。Lower('ABCD')の結果は'abcd'になります。ところで、Lower('全然')の結果が予想できますでしょうか。…ええ、'甦甞'になります(^^;

マルチバイト文字が入っていても関係なく、1バイト毎に変換をかけていくようです。これを避けるには Lower(M'全然')とする必要がありますが、おそらくこれは過去のアプリケーションとの互換のためにこうするしかなかったのかなと思います。この製品、漢字使うときは VARCHARじゃなくてNVARCHARとか使え、って言ってたんですよ。ちなみにNVARCHARは当時で言うところの2バイト文字しか入らない型です。あ、これはODBCのせいじゃないやw

そして、金曜日があと2時間で終わるかというころに発覚したもの。

VARCHAR型で長さゼロの文字列が入ったレコードを読み出そうとするとODBCドライバがこける……なんとなくどんな処理をやっちゃったのか想像が付いちゃうけど……さて、このシステム、本当にカットオーバーに漕ぎ着ける事が出来るのかしらん?

あ、当然

一部嘘を混ぜ込んで書いてあるのでその旨ご承知置きください。もちろんドライバが駄目駄目なのは真実です。


単なる覚書以下の内容です。一度内容を全部消しました。
最新 追記
2010|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|03|04|05|06|07|08|09|11|12|
2013|01|02|03|04|06|08|
2014|02|04|06|07|09|10|11|12|
2015|01|02|03|04|06|08|09|10|11|12|
2016|01|02|04|05|10|
2017|02|03|04|05|06|09|10|
2018|04|
2020|11|