2009年1月22日木曜日

嘘のような本当の話

情報処理技術者試験、今度はテクニカルのデータベースを受験することに。
MySQL を利用して勉強しようと考え、とりあえず CREATE 系のおさらいを
しようと思い、テーブルを作成してみようと思ったら、
なにやらエラーが出る。(エラーは覚えてないけど。)

CREATE TABLE IF NOT EXISTS sales_body
(
id INT NOT NULL PRIMARY KEY
,row_num INT NOT NULL
,goods_id INT NOT NULL
,num INT NOT NULL CHECK (num BETWEEN 1 AND 99)
,FOREIGN KEY (goods_id) REFERENCES goods(id) ON DELETE SET NULL
) ENGINE=InnoDB;

ネットで調べると、やれ INDEX 張らないといけないとか
InnoDB の設定が必要とか
イロイロあったけど、この DDL の場合単純に、

  • NOT NULL 属性に削除時 NULL を設定する


なんていう矛盾外部キーを指定していたため、作成できなかった。
びっくり。

2009年1月11日日曜日

irbカスタマイズ

Ruby 技術者認定試験を取得するべく日々Rubyを勉強しています。
そんなとき、やっぱり役にたつのがirb。
手早くロジックが組めて、簡単な動作確認がささっとできる。
そんなirbを使いやすくカスタマイズする方法と
私の環境の公開です。(たいしたことはしてないですが)

irbはHOMEディレクトリ直下に.irbrcファイルを準備
してやることで、irbにmethodが追加できます。
んで、私が追加したのは

@default_file = "~/.edit.rb"

def new (file = @default_file)
system "rm #{file}"
system "vi #{file}"
end

def edit(file = @default_file)
system "vi #{file}"
end

def emacs(file = @default_file)
system "emacs #{file}"
end

def run(file = @default_file)
system "ruby #{file}"
end

def clear
system "clear"
end

です。
irbで作業する際の一番の致命的な箇所は
編集できない点です。
そのため、ファイルに編集するmethodを追加し
ファイルを実行するmethodを追加しています。
デフォルトはHOMEディレクトリに.edit.rbという
ファイルを作成します。引数でファイル名を渡して
やることも可能です。

あとは refe が使えれば完璧なんですがね。

Ruby 1.9.1rc1

去年までは一日1書き込みと決めていたが
時間的余裕があまりとれないため、書き込みができる
&ネタがあればガシガシ書きこむことにした。

私は根っからの Windows ユーザー。
そのため Ruby 1.9.1 rc1 が公開された際
コンパイルできるか不安だった。
その不安は的中した。VC2005 でコンパイルして
みたが意味不明なエラー。ネットで調べても
原因不明。
そのため、ちょっと距離を置いていたところ、
artonさんのMswin32インストール
パッケージのアナウンスを目にした。
やったーと思い、早速インストールしてみたが
irb, gem が動かない!?!?!
またまた挫折した。

そして最終的にとった方法。
VMware 上の Fedora 8 上でコンパイルして
利用しています。
Linux だと一発だった。Windows やめようかな。。。(会社的に無理だけど)

んで、動作確認。シャドーウィングを実験してみることに。

#!/usr/bin/ruby -Ku
# -*- coding: utf-8 -*-
["foo"].each do |s|
["bar"].each do |s|
puts s
end
puts s
end

$ ruby .edit.rb
bar
foo

完璧。

あけましておめでとうございます

正月は7日までか11日までかとサザエさんでやっていた。
個人的には7日のような気はするが、11日説が浮上したのでとりえあず新年の挨拶を。
今年の目標は

  • テクニカルエンジニアデータベース試験に合格

  • テクニカルエンジニアネットワーク試験に合格

  • Ruby技術者認定試験の取得

  • MacBook Proを購入

  • VAIO type Pを購入


をとりあえずの目標にしてがんばる。

がんばるぞーーー!!!!!