ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Ruby1.9、Windowsではじめます!

2008-04-01 18:01:41 | Weblog

いままで、シリーズ
  オブジェクト指向で開発の最初から最後までの手順例
  グーグルケータイOS、androidのお勉強    (下のほう)
  生物情報学
とかいてきて、終わったので、4月から、
  ・Accessを開発ツールとして使って、開発の最初から最後までをやる
  ・Ruby1.9、Windowsではじめる、参考書は1.8以前
というのをやりたいと思います。で、ここでは、後者についての話。




■「Ruby1.9、Windowsで(参考書は1.8以前)」の概要

 Rubyを、最近出てきた1.9、それもwindows版(=Ruby-mswin32)で、やってみたいと思います。

 今、リリース版は1.8なので、世間出ている本は、1.8です。
 そこで、1.8で出ている本などをみながら、1.9をつかってみて、拡張機能にはまってみたりするところを、実況中継してみたいと思います。

 まずは、今回は、ダウンロードとインストールからです。




■Ruby1.9、Windowsで動くものをダウンロード

 まずは、ダウンロードしてみたいと思います。cygwinを使う方法とかもあるそうですが、
すなおに、Ruby-mswin32(ja)を使ってみたいと思います。

ここによると、Ruby-mswin32(ja)は、

ここ http://www.garbagecollect.jp/ruby/mswin32/ja/download/develop.htmlにあるそうなので、そこのページにいって、
ruby-1.9.0-0-i386-mswin32.zip (11,507KB)
をクリックして、ダウンロードしました




■Ruby1.9、Windowsインストール - ファイルを置く

 で、ZIPを解凍しました。

 binの下に入っているバッチファイルをみると、CドライブのしたのLANに、ruby-1.9.0-0というフォルダがあり、そのしたのbinに・・・という構成になっているようなので、すなおに
(1)Cドライブの下に、LANという名のフォルダをつくる
(2)その「LAN」フォルダの下に、ruby-1.9.0-0フォルダをつくる
(3)その「ruby-1.9.0-0」フォルダの下に、解凍したbinとか、includeとかの各種フォルダーをコピー
しました。

で、binフォルダのしたの、irb.batをダブルクリックすると、readline.dllというフォルダがないと怒られます




■Ruby1.9、Windowsインストールつづき - readline.dllを置く

 ここ
http://asaasa.tk/wiki/index.php?Ruby%2F%E5%89%8D%E6%BA%96%E5%82%99%2FWindows

によると、readline.dllは、
http://jarp.does.notwork.org/win32/
にあるそうなので、そこにいって、「readline-4.3-2-mswin32.zip」を落としてきました。

解凍して、binフォルダ内にあるreadline.dllを、上記の(3)でつくった、C:/LAN/ruby-1.9.0-0/bin
フォルダ(=irb.batとか、いくつかバッチファイルのあるフォルダ)にいれます。

で、ここで、irb.batをダブルクリックすると、フツーに起動します。




■テストしてみる

 ということで、irbっていうのがたちあがったので、ここから
ここ http://www1.tf.chiba-u.jp/~shin/tutorial/index.rb?Chapter=01にある、

puts 1+2

を入れてみましょう。

3
=>nil
(>は、本当は半角)

とでました。動いているようです。

ではつぎ。
C:/LAN/ruby-1.9.0-0/binフォルダに、calc.rbというファイルを作って、そのファイルに

puts 1+2

と書いて保存、コマンドラインで、cdで、C:/LAN/ruby-1.9.0-0/binにいったあとに、
ruby calc.rb
を実行しても、3とでます。
OKです。




ということで、動かすところまできました。

ここからさき、連載が続くと信じるか、
それとも、これはエイプリールフールで、
こんな連載はしないと思うかは、
自由だあ・・

P.S 上記のインストールはエイプリールフールではありません。
 ちゃんと、上記のサイトまでいき、ダウンロードして、3とでる
 までは、確認しました。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

型ごとの値チェック方法をまとめました!

2008-04-01 16:30:31 | Weblog

英数字しか入力しないものだと、半角英数字のチェックとか、
半角カナは許さないとか、
いろいろチェック、大変ですよね!

ってことで、各種言語における、
数字型のチェック
日付型のチェック
文字型のチェック
   半角英数字チェック
   半角カナチェック
   全角チェック

をまとめてみました。

ここ http://www.geocities.jp/xmldtp/index_check.htm

ぜひぜひ、ごたんのーくださいませ。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

オブジェクト指向で、修正による影響をうけにくくする方策その1-独立性

2008-04-01 14:25:17 | Weblog

 いま、修正を出来るだけ容易に行うシステムということを考えようとしています。

 その際、オブジェクト指向は局所性がある(カプセル化などで)ので、本来修正しやすいのですが、カプセル化する基準がないと、不適切なカプセル化により、システムの見通しが悪くなり、逆に修正しにくくなるということを書きました。で、このカプセル化基準として、ER図をつくるときなどの正規化を利用しました。

 そして、この正規化の適用範囲として、業務プロセス部分とエンティティ部分にわけ、MVCにおいては、
   (1)Vで業務プロセスのイベントをあけ、
   (2)CないしMで、業務イベントからエンティティを呼び出し、
   (3)Mでは、エンティティ操作を行う
 ってな風に考えると、正規化は、(3)のエンティティ部分を出すのに適用できることを書きました。




 さて、そうすると、今度は、(2)の部分に関してどうなるか?ということです。

 (2)において、業務プロセスがクラスになることはいいのですが、

   (A)エンティティの修正が、呼び出す業務プロセスクラスすべてに
     影響を与えてしまっては、修正が大きくなりすぎます。

   (B)また、業務クラスがエンティティについて理解してないで、勝手に
     作ったり、削除したりして、エンティティの関係を崩してしまっても

こまります。

 これらについて、データベースであれば(A)は、独立性、(B)は一貫性により、対策をとっていますが、オブジェクト指向では、どうなるか?というのが、今回の話題です。

 今回は特に、(A)の独立性のオブジェクト指向利用について、説明しますね。




■具体的に独立性は、開発の局面で、どう必要になるのか?

 たとえば、ある日、この変数の意味を変えよう!とか、変数(属性)名を、siでなく、shiにしようとか、クラスの属性を追加しようとか、削除しようとか、型をCharacter[]から、Stringにしようとか、とかとかです・・

 たとえば、属性名を変えたとしたら、このクラスを呼び出して、属性を使っているところや、
継承先のクラスを呼び出して、属性を使っているところをチェックして、全部修正かけないと
いけなくなります。これはめんどうです。

 DB操作をするクラスの場合、DBの変更は結構あるので、そのような場合に備え、メソッドの引数にバージョンをもらったり、バージョン毎にメソッドを変えたりして、バージョンに合わせた形の値に加工します。

 たとえば、siからshiに変わった場合、shiでアクセスする場合は、メソッドにバージョンを追加し、バージョン1.0として呼び出し、一方、前のバージョンなしメソッドを呼び出している場合は、バージョン追加メソッドを、バージョン0.0で呼び出し、バージョンつきメソッドで、今までの処理をします。
 バージョン無しメソッドでは、shiの結果をsiにもセットします。

 こんなふうな修正をすると、各バージョンの違い(修正内容)が、このエンティティクラスに局所化されるうえ、エンティティの実態が変わっても、多くの場合、呼び出し側のプロセスには影響を与えません。これが、独立性になります。




■データベースの場合-3層スキーマ

 データベースにおいては、これを実現するのに、3層スキーマを用います。

 概念スキーマ、内部スキーマ、外部スキーマの3層でDBを考え、プログラムがアクセスする部分を外部スキーマ(View)とすることで、概念スキーマ部分で変更が起こっても、プログラムがアクセスする外部スキーマのViewには影響を与えないというものです。

 つまり、DB直接アクセスするのではなく、外部スキーマというラッパーをつくり、そこにアクセスすることで、
 外部スキーマが、変更による影響の緩衝材になるってわけです。

 そういう意味では、

  DBのテーブル
    ↓
  エンティティクラス
    ↓
  業務プロセスのメソッド

というオブジェクト指向でのDBアクセスは、エンティティのクラスが、外部スキーマの役割、緩衝材の役割をして、業務プロセスが扱いやすい形(変更が少なくなる形)を提供しているともいえます。




■手法
 この、エンティティと業務プロセスの間に緩衝材を置いて、業務プロセスの修正が、直接DBに波及しないように、また、DBの変更が、業務プロセスにできるだけ影響しないようにして、独立性を保つという方法は、上記の

(1)バージョンをいれ、切り分ける
(2)メソッドをきりわける

のほかに、

(3)クラスを利用するというのもあります。

 2つの共通部分となるクラスをつくって、今までのクラスと、今度新しく作るクラスは、その共通クラスから継承するようにするものです。

 なお、上記の例ように、(1)と(2)のあわせワザのように、合わせるものもあります。




■O/Rマッピングも

 O/Rマッピングも、この文脈で見ると、テーブルのエンティティをDBアクセスしやすくさせているので、独立性とはいえなくても、緩衝材の1種とはいえそうです。




ってなことで、いつか、のこりの一貫性の話も書きたいと思います(ちなみに、エラーチェックの話となります)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

まどのやしろ(窓の杜エイプリール企画)の「見タカ?」、ブログツールなら、欲しいかも。。。

2008-04-01 11:31:43 | Weblog

今日は4月1日、エイプリールフールですけど、
エイプリールフールといえば、
インプレスWatchが毎年やる、イソプレスWatch。

かつては、いもうとデスクトップのような、その後有名になったものを輩出したこともあるけど、

ことしの1つは、
クニタチ天文台、純国産の3D“天文台”シミュレーター「見タカ?」を公開
http://www.forest.impress.co.jp/yashiro/2008/mikata.html





で、これ、初めのほうは、「いらねー(^^;)」っていうやつなんだけど、

この機能(以下斜体は上記サイトより引用)


天文イベントがあった数日後にダイアログで天文イベントの情報を表示して“見たか?”とたずねる機能を備える。このとき、ダイアログ上の[いいえ]ボタンを押すとその天文イベントがいかに素晴らしく、貴重な体験であるかなどの“うんちく”を、訳知り顔で長々と語ってくれるのが悔しい。


これ、ブログツールだったらいいかも・・

天文イベントがあって、いいえをクリックすると、そのときの様子がブログツール上で見れたり、説明が聞けたりするのって・・
国立(こくりつ)天文台は、つくってくれないのかなあ(^^;)
(いや、国立天文台じゃなくっても、どっかの大学とか、プラネタリウムでもいいとおもうけど・・
 夜空がきれいな地域の地域おこしでもいいかも。。)

P.S えー、スターバックスとおなじ、スタバ(Ba)斉藤だと思ってた・・スタ「パ」(Pa)なの(@_@!)




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする