目次

2009年1月13日火曜日

ROR データベース作成のエラー rake aborted!

ROR DBのお勉強をしております。
基礎 Ruby on Railsという本をみてやってるのですが、Rubyのバージョンがだいぶ古いため、上手くいかない状態でした。というのもRailsのバージョンがあがったために、いままでバンドルされていたドライバーがなくなっていたりして(MySQLからSQLiteに変わったのがあるだろうけど)

rake db:migrateと打つと



!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
no such file to load -- mysql



こんな感じでエラーが、、、、、、。
ymlからdatabaseがつくれない?!

エラーの通りに
gem install mysqlと打ってもエラーが出ます。ここはgoogle!するとsudoでインストールするとよいらしということが分かりました。
sudo gem install mysql -- --with-mysql-config
上手くいったのか、、な?

もう一度、ymlからdbを作ろう、と
rake db:migrate

そうすると


dyld: lazy symbol binding failed: Symbol not found: _mysql_init
Referenced from: /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle
Expected in: dynamic lookup

dyld: Symbol not found: _mysql_init
Referenced from: /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle
Expected in: dynamic lookup

Trace/BPT trap



これは、、、、どうなんだろう。成功してるのか、してないのか、、、、。
もうちょっと進めてみます!

2009年1月12日月曜日

HTTPリクエスト test用 ソース

今日はもう少しだけ、いろいろ試してみました。

httpリクエストを受け取るための、テスト用railsを作ってみました。

blogでrailsの話をいままで書いてなかったことに気づき、おさらいも含めて、まずはrailsプロジェクトを作るためのコマンドプロンプトパートから。

Macの人はterminalを立ち上げて、

$ rails sample001と打ちますと、プロジェクトが自動で作られます。
※rails2.0からデフォルトDBがSQLiteになりました。MySQLで作りたい場合は
rails -d mysql (プロジェクト名)

$ cd sample001ディレクトリを移動。

$ ruby script/generate contoroller main controllerを今度は自動で作ってくれます。一番最後のmainが名前。

これでいったんターミナルは置いておいて、次は出来たファイルを見て行きましょう。

出来たフォルダ「sample001」の中にある「app」>「controllers」フォルダの中にはmain_controller.rbが入っています。この中にメソッドを書いて行きます。

今回は簡単にこんな感じ。



class MainController < ApplicationController

def show
@sample_id = params['id']
end

end


showというメソッドを作ってみました。
paramsっていうのは、その名の通り、パロメーターを取得するものです。
もうちょっと蛇足して書くと、
http://アドレス/controller名/method名/パロメーター(コレのこと!)

次は、「app」>「view」>「main」フォルダへ。
ここはまだからっぽのはず。先ほどmain_controller.rbで書いた、"show"メソッドの先、「show.rhtml」を作ります。
適当なテキストエディタで、


<%= @sample_id %>


これだけ書いて「app」>「view」>「main」フォルダへ保存。

これでテストの準備は完了しました。

ターミナルで
ruby script/serverと打って、WEBrick立ち上げ。

後は、前に書いたblogの内容と同様。
Windowsにシリアルでつないだ、Wi-Portから
tera termを使って、
C192.168.0.111:3000

GET /main/show/12345 HTTP/1.0(ENTERキー)


WEBrick側のターミナルを見ていると、上手くいっていることが確認出来ます。

WEBrickサーバーにWi-PortからHTTPリクエスト

ここ一週間、RailsでTCPSocket通信をしようと格闘しつづけていたのですが、橋本商会さんに詳解してもらい、出来ない、ということが判明しました。

いっしょに手伝ってくれたOくん、本当にありがとう、そしてごめんなさい。

というわけで、HTTPリクエストをrailsに出して、うんぬんかんぬん、、、、ということに取り組むことになりました。

まずは、Wi-Portの設定を。Making Things Talkという本で、X-portでhttpリクエストを行うための設定が書かれているので、参考にしてみました。

Network Settings

注目はSubnet MaskとDefault Gateway。Default GatewayはMacの場合、「ネットワーク環境設定」>「詳細」で見る事が出来ますので、それで。

それ以外の設定は前回と同様です。こちらを参照。

できましたらば、
まずはシリアル変換ケーブルとWi-Portをつないで、WinからWi-Portを操作しましょうか。
この辺は、Wi-Portの一番最初の設定と同じ感じ。
Tera Termを立ち上げましょう。

C192.168.0.111:3000

※IPアドレスは、MACの場合、「インターネット環境設定」からご確認ください。
Enterキーを押します。上手くいくと

C

がかえってきます。

GET /index.html HTTP/1.0(ENTERキー)
HOST: 192.168.0.111:3000(ENTERキー2回押す)

これで、ステータス/htmlがどばーっとかえってくると成功です。


この後はEnterキーを押すだけで、上手くいく場合と、Enterキーの代わりに、「Cntrl + M, Cntrl + J 」と入力しないとダメな場合があるので注意。最後のEnterキー2回のところで、「Cntrl + M, Cntrl + J 」も2回入力することになります。

2009年1月8日木曜日

電子工作に関するあれこれ

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

今年も頑張って行こうと思います。

新年一回目のブログはちょっとした覚え書きからスタートします。

新年は、moxaと格闘することから始まりました。なぜか値がかえってこない。。。文字化けがヒドい。。。という問題が。

いろいろいじりつつ分かった事。電源供給をいろんな所からしちゃダメってことです。

これは悪い例

何が悪いのかというと、Wi-port用の電源と、moxa用の電源を別に用意していることです。(前回のblogで、シリアルコネクターと電源を共有していないと上手くいかないという話をしましたが、それです。)

これが良い例

大変わかりづらいのですが、電源回路を共有しております。
これなら文字化けもしませんでした!

2008年12月29日月曜日

Wi-port設定について

久しぶりにWi-portの設定をしようとしたら、上手くいかない。。。。
と苦悩すること一時間。

電源をシリアル変換からの供給ではなく、別に用意したところ、それが原因だった模様。
シリアル変換のVCCとGNDからWi-port電源3.3v回路を作ったら、上手くいきました。

余計なことに手をだすな、ってことですね。


それから、前回Wi-portに関して書いた時、Configurable Pin Settingsについて書いてなかったので補足。

Configurable Pin1をSerial Channel 1 Status LED、Highにしました。これで、上手く通信出来ている時はLEDが光ります。ちなみにConfigurable Pin1はWi-port基盤では35番pin。Configurable Pin2は6番、Configurable Pin3は7番、Configurable Pin4は19番、、、、、、とめちゃくちゃ分かりづらいので注意。

2008年12月26日金曜日

MYSQL あれこれ

リア充なのか、違うのか。。。
一応、2X歳として、美容とかおしゃれとか恋愛とかにもっともっと時間を使うべきなのではと苦悶する毎日です。

そんな私はクリスマスに大学に残留して、mysqlと格闘しました。


mysqlのインストールはこちらのサイト等を見て出来ました。

いざ、コマンドプロンプト

$ mysql -u root

と打ちますと、

-bash: mysql: command not found
このようにかえって来てしまいます。どうやらPATHが通ってないようです。調べて行くと、.bashrcと.bash_profileという隠しファイル(?)にPATHを書き込めばいいとのこと。

まずは、.bashrcと.bash_profileを探してみます。
$ ls -a
すると

. Desktop
.. Documents
.CFUserTextEncoding Downloads
.DS_Store Imaging-1.1.6
.Trash Library
.Xcode Movies
.bash_history Music Pictures
.cups Public
(などなど)


そんなファイルはありませんでした。。。

というわけで作る事にします。

$ vi .bashrc
実行してみると

こんな画面が出てきます。

viは今回初めて使うのですが、こちらを参考にすれば、大丈夫かと思われます。
まずは入力モードに切り替え。iキー+enterで、画面の下に--INSERT--と出てきます。

alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin


以上の2行を追加。
コマンドモードに切り替えます。escキーを押すだけです。
:wで保存、:qで終了です。

これでもう一度
$ ls -a
するとファイルが追加されています。

同様に.bash_profileもviで作成。

PATH=/usr/local/mysql/bin:$PATH
export PATH


これを書き込めばOK

あとは再起動をします。


すると

PATHが、、、、、通ったよ〜!!

ってなるはずです。

2008年12月13日土曜日

moxaとWi-portと通信速度

こんにちは。リア充を目指すもこもこじゅう/やすこやかです。

なんだか自分が思っている以上に、このblogを見てくれてる人がいるんだな〜って知って、ちょっと嬉しくなりました。

こんなblogを閲覧してくださっている方のなかで、慶應関係者では無い方は、blogに頻繁に出てくる“Xtel”や“moxa”という単語が「?」だったでしょう。
それらの説明はこちら。
そして私は、xtelを活用して、いろいろ作ろうとしている人の一人ってわけです。

と、いまさらながらのご紹介でした。


さて、本題。
前回、moxaとWi-Portを繋げる試みが成功したとお伝えしましたが、問題がありました。
文字化けするのです。moxaから読んで来た値を、Wi-portサーバーから引き出そうとすると文字がぐちゃぐちゃに(><)
文字コードの問題?でも、半角英数字しかつかっていないし。。。。と思い悩んでおりました。が、すぐに解決。
なんと通信速度の問題でした。

Wi-Port側に文字列を送るRuby:

equire 'socket'

client = TCPSocket.open('192.168.0.123', 10001)

while true do
client.write('a')
p client.gets.chomp
sleep(3)
client.write('b')
p client.gets.chomp
sleep(3)
end


最初、sleepを(1)にしていたのですが、(3)に変更しただけで、文字化けしなくなりました。なんかちょっぴり拍子抜け。
もしくはmoxaに書き込むコードの
serialInit(9600);
serialInit(4800);に変えると上手くいく場合もあるそうです。
(ちなみに、今回はこの手法では解決できませんでした)

シリアル通信の文字化けで悩んでいる方、ちょっと試してみてはどうでしょうか?