目次

2009年1月15日木曜日

TextMate ~日本語入力編〜

utf-8で全て保存するということを統一するのと、もっと使いやすいエディタはないのかと悩んでいた所、OくんからTextMateを教えてもらいました。
なるほど、使いやすい。てか凄いね。コレ。

見づらいんだけど、htmlコードがすいすい書ける事が分かると思います。
DWは重すぎだし、aptenaは良いと思うけど私にはボリューミーで嫌でした。TextMateはメモ帳みたいに使えます。“めも”が好きな私にぴったりです。
興奮したのもつかの間、
日本語打てないよ......

しかし、ここでも先駆者はおりました。日本語化プラグインCJK-Input.tmpluginを作ってくれた素晴らしい人がいました。
さっそくダウンロード。ホームディレクトリで解凍したら、ターミナル

$ mv CJK-Input.tmplugin /Applications/TextMate.app/Contents/PlugIns/

ちゃんと入ったか確認

$ cd /Applications/TextMate.app/Contents/PlugIns/


$ ls


CJK-Input.tmplugin Dialog.tmplugin

よしよし。入ってますね。
専用フォントも入れておくと良いとのことだったので落としておきました。
参照:Railsに最適なテキストエディター「TextMate」を入れて日本語化してみた

さて、TextMateを再起動。

できてますね。よし!

MySQL ~ターミナルで文字化けする問題~

RORをやっていると、必ずといっていいほど環境系でつまずきます。今日もMySQLでつまずきました。

ターミナルでmysqlを立ち上げ、

my sql> use (DBの名前)


mysql> desc (テーブルの名前);


すると
フィールドの一覧が表示されます。
私は今回、membersというテーブルを作ってあったので、それを読み出しました。


mysql> desc members;



+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| member_number | int(11) | NO | | NULL | |
| player | tinyint(1) | NO | | 0 | |
| family_name | varchar(255) | NO | | NULL | |
| given_name | varchar(255) | NO | | NULL | |
| furigana | varchar(255) | NO | | NULL | |
| email | varchar(255) | YES | | NULL | |
| phone | varchar(255) | YES | | NULL | |
| sex | int(11) | YES | | NULL | |
| birthday | date | YES | | NULL | |
| remarks | text | YES | | NULL | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
13 rows in set (0.01 sec)



ここからレコードを抜き出してみよう。まずは名字から


mysql> select family_name from members;




+-------------+
| family_name |
+-------------+
| ????    |
| ????    |
| ????    |
| ????    |
| ????    |
| ????    |
| ????    |
| ????    |
| ????    |
| ????    |
+-------------+



ばっちり文字化けです!


mysql>set character set sjis;


本に書いてある通りに打ってみます。これで表示してくれるだろう。。。
と思ったけど、やっぱり同じ結果。

う〜ん、、、と悩みをtwittしたところ、心優しい人たちが解決方法を伝授してくれました。

(1)そもそもsjisでファイルを作っちゃダメ!
私はmacユーザー。本はwin向け。よってファイルがsjisで作られてるわ、characterもsjisになってるわで全然これじゃ表示出来ないって話です。
(2)ターミナルの環境設定をもう一度見よう。
こんな初歩的なところで、、、、恥ずかしくなりました。

ここがutf-8になっていなかった。恥ずかしい!

これでもう一度

mysql> select family_name from members;




+-------------+
| family_name |
+-------------+
| 佐藤    |
| 鈴木    |
| 高橋    |
| 田中    |
| 渡辺    |
| 伊藤    |
| 山本    |
| 佐藤    |
| 鈴木    |
| 高橋    |
+-------------+
10 rows in set (0.00 sec)



うん、できました!

2009年1月14日水曜日

(続) ROR データベース作成のエラー

昨日の続きです。
どうやら、rake db:migrateは失敗に終わっていたようです。
引き続きOくんの協力の元、MySQLと格闘しました。

前回に引き続き、mysql gemをインストールした後

$ cd /Library/Ruby/Gems/1.8/gems/mysql-2.7


$ ls
すると


COPYING README.html lib mysql.c mysql.o
COPYING.ja README_ja.html mkmf.log mysql.c.in test.rb
Makefile extconf.rb mysql.bundle mysql.gemspec tommy.css



確認すると、ちゃんと入ってる事が分かります。

もう一回rake db

すると


rake aborted!
dlopen(/opt/local/lib/ruby/site_ruby/1.8/i686-darwin9/mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib
Referenced from: /opt/local/lib/ruby/site_ruby/1.8/i686-darwin9/mysql.bundle
Reason: image not found - /opt/local/lib/ruby/site_ruby/1.8/i686-darwin9/mysql.bundle


やっぱり出来ない、、、。

Library not loaded: /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib

ここが問題みたい。

Oくんに聞いてみた所、シンボリックリンクを張ることになった。


$ cd /Library/Ruby/Gems/1.8/gems/mysql-2.7
$ sudo ruby extconf.rb --with-mysql-config=/usr/local/mysql/bin/mysql_config



すると


Password:
checking for mysql_ssl_set()... no
checking for mysql.h... yes
creating Makefile


こんな結果がかえってくる。

$ sudo make



gcc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0 -I. -DHAVE_MYSQL_H -I/usr/local/mysql/include -g -Os -arch i386 -fno-common -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno-common -arch ppc -arch i386 -Os -pipe -fno-common -c mysql.c
cc -arch ppc -arch i386 -pipe -bundle -undefined dynamic_lookup -o mysql.bundle mysql.o -L"." -L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L. -arch ppc -arch i386 -lruby -L/usr/local/mysql/lib -lmysqlclient -lz -lm -lmygcc -lpthread -ldl -lm
ld warning: in /usr/local/mysql/lib/libmysqlclient.dylib, file is not of required architecture
ld warning: in /usr/local/mysql/lib/libmygcc.a, file is not of required architecture
dhcp11:mysql-2.7 suzukiyasuko$ sudo make install
/usr/bin/install -c -m 0755 mysql.bundle /Library/Ruby/Site/1.8/universal-darwin9.0



これでrake db:migrateすると、、、、

できました〜〜〜〜〜!!!!!!!
Oくん、本当にありがとうございました。


それから、Oくんと私のやり取りの中で、MySqlで役立つコマンドが出て来たので、抜粋します。自分のためのメモ書き。


select * from (テーブル名);
意味は
テーブルから * (全てのレコード)を表示する


あとはよく使うのは
desc (テーブル名)
これはテーブルの型を確認するコマンド

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で、シリアルコネクターと電源を共有していないと上手くいかないという話をしましたが、それです。)

これが良い例

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