変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

2014年1月29日

エクスチェンジャー

CSVで作ったデータをデータベースに入れる。
EXCELで作ったデータをデータベースに入れる。
隣のデータベースで作ったデータをデータベースに入れる。
など普通は「データ移行」と呼ばれる作業は
実は「データ変換」な作業で、
データを変換する万能ツール「エクスチェンジャー」を作ると仕事が捗る。
仕組みは簡単。
仕事で使うデータの大半は1行にデータが固まっているので、
Readerとデータのマッピング処理とWriterの1セットをINIファイルやXMLファイルに書き、それを読み込ませて実行させればよい。
やりかたは1データ(1行)づつReaderから読み、そのデータをWrirerが判るように順番を入れ替えたり、データの名前や形式を変換し、Writerに手渡せばよい。
これはおおよそどんな言語でも同じ様に作れるし、大した仕組みでもない。
が、設定ミスや設定漏れをちゃんと指摘する仕組み(エラーログやテストモード)を用意しないと
実際に動かしてみないとうまくできているか判らない。
テストデータを用意しておけば気楽にチェックできる。
但し、実際に数万件のデータを流してみて引っかかった場合にどうするか(諦める:ROLLBACK、頑張る:AUTOCOMMIT)ぐらいの設定モードが必要だ。
多分、失敗したデータが欠落しているのでその分を流し直すだけならトラブルも解消しやすい場合が多いだろう。
しかし、一件でも失敗したら全部元に戻したい場合もある。
エクスチェンジャーを作る際には、どう使われるか、よく考えて色んな仕組みを用意しないと、
普段は設定して流すだけの単純作業なので、何か変だな?となった時に非常に困惑する状況に陥りやすいのでこの点は要注意だ。
使い方のサンプル例だけではなくトラブル時のマニュアルなんかも用意しておいた方がいいだろう。
アレ?使い物にならないじゃないか?なんて気が付くこともある。(大笑



リア充嗜好プログラミング

「AにBが無いと不便なんで追加しとくね。」
と云う感じでメソッドを増やすのがリア充の『嗜好プログラミング』。
仲間内で快適なら何でもOKなのである。
ま、便利になるならありがたい。
ただ、その場しのぎで追加するのでINTERFACEにBを定義してしまうとBが無い他のクラスからブーイングが出る、しかし延々と同じ処理のメソッドが全く別系統のクラスのソースにコピペされるのも厄介である。かと云ってBという処理をプロパティ化しクラスAから分離すれば他でBを実装しているところを一斉に変えなくてはいけない。
但し、ラフな結合手段を取っている箇所ならあまり問題はない。
てな感じで、リア充嗜好プログラミングは、ラフな結合手段な結合手段で出来ていなくてはならないから、最初から最後まで見通しが悪いままとなる。
勿論、当人の頭の中にはちゃんと入っているので、当人とその仲間だけは何も支障が無い。
 
※例:どこかのオンラインゲームの運営のパッチ等




top