2008年6月6日金曜日

Ruby1.8+MySQL5.1+PhpMyAdmin2.11=文字化けもじばけあーもじばけばけ

3日悩みました。
PHPMyAdminでUTF8なデータをMYSQLに書き込むと正常に表示されるのに、Rubyからデータを書き込むと、PHPMyAdmin上ではギリシャ語みたいのが表示される。
データベースのテーブルはちゃんとutf8_general_ciだし、RubyのスクリプトもUTF8で作成している。MYSQLのビルドオプションもUTF8と指定しているし、characterset=ALLともしている。
mysql/rubyがMYSQLの最初のビルドオプションlaten1でビルドしていたときに、ビルドしたものだから、mysql/rubyをもう一度ビルドしなおしてみたり。
でも、rubyから読み書きする分には文字化けしない。なぜ?

ぐーぐーる先生に聞いてみてもrailsでの文字化けの記事はあるけれど、ruby単体での文字化けの話はなかなか見つからないし。同じ症状であきらめている人も多数。はて???

となかばあきらめていたとき、『railsもruby』だよな。。。
根源が同じなら。

と。

下の記事を参考にしてmy.cnfを作ってみたら
うごいたよ!!!

/etc/my.cnf

[mysqld]
skip-character-set-client-handshake

my.cnfファイルが存在すれば追記し、なければmy.confを作る。

結局。mysql5では文字のエンコーディングを接続してきたクライアントとしゃべりながら決めるけど、mysql/rubyではしゃべれないらしい。

mysql/rubyなおしてくれないかなぁ@他力本願
ruby/mysqlも直してほしい@他力本願×2

なまえも変えてほしい。
mysql/ruby -> ruby-c-mysql
ruby/mysql -> rubypure-mysql
とか。。。

tmtmさん。。おねがい☆

ご参考
http://tobysoft.net/wiki/index.php?Ruby%2FRuby%20on%20Rails%2FphpMyAdmin%A4%C7%B8%AB%A4%EB%A4%C8%CA%B8%BB%FA%B2%BD%A4%B1%A4%B9%A4%EB

FreeBSD6.3
MYSQL5.1.24
phpMyAdmin2.11.6
Ruby1.8.6

2008年6月4日水曜日

メモメモ FreeBSD6.3+MYSQL5.1アップグレード UTF8でコンパイル

#cd /usr/ports/mysql51-server
#make WITH_CHARSET=utf8 WITH_XCHARSET=all install clean

としてみました。
ところがところが。。。phpMyAdminで「権限の更新」を行うと

mysql.serverが見当たらないとかエラーが出るようになった。
いろいろ調べてみると、mysql50からmysql51へのアップデートでデータベースの項目が増えたらしい。よくよくコンパイル時のログを読んでみたら、データベースのテーブル情報(ファイル?)のアップデートも必要でした。

************************************************************************

Remember to run mysql_upgrade (with the optional --datadir= flag)
the first time you start the MySQL server after an upgrade from an
earlier version.

************************************************************************

#/usr/local/bin/mysql_upgrade

を実行しろとありました。
これをやったら直りましたv(^-^
コンパイルのログはちゃんと読むもんですねっ

WindowsにインストールしたRubyからネットワーク経由でmysqlサーバーを参照する

WindowsにインストールしたRubyからネットワーク経由でmysqlサーバーを参照する。。。

とみたまさひろさんのruby/mysqlを使ってはまった(T_T

require "mysql"
my = Mysql::new("192.168.0.100", "arajin", "hirakegoma", "test")
res = my.query("select * from tbltest")
res.each do |row|
col1 = row[0]
col2 = row[1]
end

これを実行すると。。。

C:\project\ruby\mysql>ruby mysql.rb
c:/ruby/lib/ruby/1.8/mysql.rb:453:in `read': Client does not support authenticat
ion protocol requested by server; consider upgrading MySQL client (Mysql::Error)

from c:/ruby/lib/ruby/1.8/mysql.rb:130:in `real_connect'
from c:/ruby/lib/ruby/1.8/mysql.rb:91:in `initialize'
from mysql.rb:2:in `new'
from mysql.rb:2

うごきましぇん。。。
Mysqlサーバー内で同じスクリプトを動かすと正常に動くんだけどね。
このmysqlライブラリでは、パスワードの方式が古い方式しかサポートされていないと
いうことで、そのままだと動かないらしい。

2008年6月3日火曜日

SSH2日本語表示 UTF8 Teraterm TTSSH

UTF8
Emacs日本語化
UTF8 Teraterm SSH2で接続 UTF8で日本語表示
TTSSH
--------------------------
『utf8 Teraterm』は『Teraterm』に改名され、
Telnet時代の名前に戻りました。

Teraterm新バージョンの記事はこちらです
SSH2でサーバーに接続する Teraterm4.62

巷ではutf8が次期標準文字エンコードと聞くようになってきましたので、
私も挑戦してみることにしました。
以前挑戦したときは、puttyの日本語版が見つけられず、teratermの開発も止まっている
ようでしたので、あきらめていました。
今では、teratermもUTF8版が公開されているようですし、puttyも日本語パッチが出ているようです。

まずは、標準でUTF8に対応しているteratermを使い、日本語でSSHできるように設定しましょう。

UTF-8 Teraterm Pro 4.58
@ FreeBSD6.3 Windowsからログイン

UTF-8 TeraTerm Pro with TTSSH2(以下TeratermUTF8とします)
TeratermUTF8をダウンロードします。

http://sourceforge.jp/projects/ttssh2/

インストールし、TeratermUTF8を開きます。
ホスト:接続先IPアドレスかドメイン名
 v ヒストリ
 ◎SSH SSHバージョン SSH2
と選び[OK]を押します。
ユーザー名を入れ
 ◎チャレンジレスポンス認証を使う
を選び[OK]

これでログインが出来るか確認してください。

端末の文字コードを指定します。
TeratermUTF8のメニューから
[設定]-[端末]
 漢字-受信  UTF-8
 漢字-送信  UTF-8
とします。
これでUTF-8なファイルが表示できるか確認します。
ヤフーのページがUTF-8なので、このページをダウロードして表示できるか確認してみます。

$wget http://www.yahoo.co.jp/
$cat index.html

でUTF-8なファイルが正常に漢字で表示できていればOKです。

続いてemacsでUTF8を表示できるように設定を変えます。
が、これは、各ユーザーの.emacsファイルに設定を書けば表示できました。

emacsの設定ファイルを

~/.emacsに次の行を加えます。.emacsファイルがなければ作成します。
(set-language-environment "Japanese")
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)

emacsで先ほどのindex.htmlファイルを表示してみて、漢字で表示できていればOKです。

あれ?スクロールが遅い!!遅すぎる!!!!

あ。
/usr/ports/editors/emacs

make install
しなおしたら直った(^-^;;;

■Teratermでのログの自動採取

Teratermでログの自動採取ができます。
自分が入力したコマンドの履歴がとれるので便利です。
ログも日付を自動的に入れることができますので、
そのように設定します。
strftimeフォーマットで記入するようです。

[設定]-[その他設定]-[ログ]

標準ログファイル名:(strftimeフォーマット可)
teraterm%y%m%d_%H%M.log

[v]自動的にログ採取を開始する



■strftimeフォーマット
%a 現在のロケールにおける曜日の省略名。
%A 現在のロケールにおける曜日の完全な名前。
%b 現在のロケールにおける月の省略名。
%B 現在のロケールにおける月の完全な名前。
%c 現在のロケールにおいて一般的な日付・時刻の表記。
%C 世紀 (西暦年の上 2 桁)。 (SU)
%d 月内通算日 (10 進数表記) (01-31)。
%D %m/%d/%y と等価。 (SU)
%e %d と同様に月内通算日を 10 進数で表現するが、 1 桁の場合 10 の位にゼロを置かずスペースを置く。(SU)
%E 別形式を使用する際の修飾子。下記参照。 (SU)
%F %Y-%m-%d と等価 (ISO 8601 形式の日付フォーマット)。 (C99)
%G ISO 8601 形式の年 (世紀も 10 進数で表す)。 ISO 週数 (%V を参照) に対応した 4 桁の西暦年。これは基本的には %y と同じ形式だが、ISO 週数が前年や翌年になる場合にはその年が使用される。(TZ)
%g %G と同様。但し、世紀を含まず下 2 桁のみを表示 (00-99)。 (TZ)
%h %b と等価 (SU)
%H 24 時間表記での時 (hour)。 (00-23)
%I 12 時間表記での時 (hour)。 (01-12)
%j 年の初めから通算の日数。 (001-366)
%k 24 時間表記での時 (0-23)。 1 桁の場合には前にゼロでなくスペースが置かれる。 (%H も参照) (TZ)
%l 12 時間表記での時 (0-12)。 1 桁の場合には前にゼロでなくスペースが置かれる。 (%I も参照) (TZ)
%m 月 (10 進数表記)。 (01-12)
%M 分 (10 進数表記) (00-59)
%n 改行。 (SU)
%O 別形式を使用する際の修飾子。以下を参照。(SU)
%p 現在のロケールにおける「午前」「午後」に相当する文字列。英語の場合には "AM" または "PM" となる。正午は「午後」、真夜中は「午前」として扱われる。
%P %p と同様であるが小文字が使用される。英語の場合には "am" や "pm" となる。(GNU)
%r 午前・午後形式での時刻。 POSIX ロケールでは %I:%M:%S %p と等価である。(SU)
%R 24 時間表記での時刻、秒は表示しない (%H:%M)。 秒を含んだものは以下の %T を参照すること。(SU)
%s 紀元 (1970年 1 月 1 日 00:00:00 UTC) からの秒数。 (TZ)
%S 秒 (10 進数表記) (00-60) (時々ある閏秒に対応するため、値の範囲は 60 までとなっている)
%t タブ文字 (SU)
%T 24 時間表記の時間 (%H:%M:%S) (SU)
%u 週の何番目の日 (10 進数表記) か。月曜日を 1 とする (1-7)。 %w も参照。(SU)
%U 年の初めからの通算の週数 (10 進数表記) (00-53)。その年の最初の日曜日を、第 1 週の始まりとして計算する。 %V と %W も参照すること。
%V ISO 8601:1988 形式での年の始めからの週数 (10 進数表記) (00-53)。その年に少なくとも 4 日以上含まれる最初の週を 1 として計算する。週の始まりは月曜日とする。 %U と %W も参照すること。
%w 週の何番目の日 (10 進数表記) か。日曜日を 0 とする。(0-6)。 %u も参照。(SU)
%W 年の初めからの通算の週数 (10 進数表記) (00-53)。その年の最初の月曜日を、第 1 週の始まりとして計算する。
%x 現在のロケールで一般的な日付表記。時刻は含まない。
%X 現在のロケールで一般的な時刻表記。日付は含まない。
%y 西暦の下2桁 (世紀部分を含まない年) (00-99)。
%Y 世紀部分を含めた ( 4 桁の) 西暦年。
%z タイムゾーンの GMT へのオフセット時間。 RFC 822 形式の日時に必要である。 ("%a, %d %b %Y %H:%M:%S %z" として使用する)。(GNU)
%Z タイムゾーンまたはゾーン名または省略名。
%+ date(1) 形式での日時。(TZ) (glibc2 ではサポートされていない)
%% aq%aq 文字。

.

FreeBSD6 portsの管理 インストールされたportsの確認

過去にインストールされたportsの表示
portversion

詳しくはこちら
http://park1.wakwak.com/~ima/freebsd_portupgrade.html

2008年6月2日月曜日

phpMyAdmin2のインストール

phpMyAdmin3についての記事はこちらです
phpMyAdmin3インストール
----------------------
FreeBSD6.3
Apache2.2
MySQL5
PHP5
phpMyAdmin2.11.6
----------------------

■1.phpMyAdminとは
MYSQLといえばphpMyAdminでしょう。
これをインストールすることでWebからデータベースの操作ができるようになり、グラフィカル
な画面で視覚的にわかりやすくなります。

データベースの作成、テーブルの作成、データの表示、追加と削除、
アカウントの管理といったことが簡単にできるようになります。

ここでは、rubyでmysqlサーバーにアクセスできるようにも設定します。
phpmyadminとrubyとで同じ認証方式にしておくことで、mysqlサーバーの設定ミスに早く気がつくようになります。
そのため、ここではconfig認証方式というものを使います。

■2.インストール

こちらからダウンロードします。
The phpMyAdmin Project
http://www.phpmyadmin.net/home_page/downloads.php

%lynx http://www.phpmyadmin.net/home_page/downloads.php

次のファイルを選んでダウンロードします。
phpMyAdmin-2.11.6-all-languages.tar.gz

ダウンロードが出来なかったら、次の行のdirect linkをクリックすると、
ダウンロードが始まります。

Problems with the download please use this >direct link< or try another mirror.

%tar xzf phpMyAdmin-2.11.6-all-languages.tar.gz

phpMyAdmin-2.11.6-all-languages
というフォルダに解凍されます
これのフォルダをWebサーバーが公開しているフォルダにコピーします。

%cp phpMyAdmin-2.11.6-all-languages ~/public_html/phpmyadmin


■3.設定

設定ファイルをコピーします
%cd ~/public_html/phpmyadmin
%cp config.sample.inc.php config.inc.php

ブラウザでphpmyadminを開きます。
http://192.168.0.200/~user/phpmyadmin/ みたいにして開いてください。

『エラー
設定ファイルが秘密のパスフレーズ (blowfish_secret) を必要とするようになりました』

と表示されます。

設定ファイルを編集し認証方式を『config認証モード』に設定します。
インストール時にコピーしたconfig.inc.phpを編集します。

[config.inc.php]
//$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['auth_type'] = 'config';

http://192.168.0.200/~user/myadmin/ を開きます。



データベースにパスワードを設定します。

左側の項目から[mysql]をクリックし、
左側の項目から[user]をクリックします。①
続いて上部のタブから[表示]をクリックします。②
[localhost root]の項目の鉛筆マークをクリックします③



■注意■ここを間違えるとデータベースにまったくアクセスできなくなります。そうなると、データベースの初期化からやり直さないといけなくなるので、注意して作業してください。

Passwordの項目で
「関数」から[PASSWORD]を選び
「値」にデータベースアクセスのパスワードを作り記入します。例:hirake-goma
下にある[実行する]ボタンをクリックします。

このままではまだパスワードがデータベースに反映されていません。
左上の家アイコンをクリックし、[特権をリロードする]をクリックします。

これで、データベースにパスワードが反映されました。

phpmyadminの設定ファイルにパスワードを設定します。

[config.inc.php]
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'hirake-goma';

のようにパスワードを設定します。

これでphpmyadminのページを開きなおします。
正常にページが表示できればOK。
エラーが出れば、config.inc.phpを確認してください。

『mysql 拡張をロードできません。PHP の設定を確認してください』が表示されていれば。。。
php-extension がインストールされていません。
次の手順でインストールします。

#cd /usr/ports/lang/php5-extensions
#make deinstall
#make clean
#make config

lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Options for php5-extensions 1.1 x
x lqqqqqqq^(-)qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
x x [X] HASH HASH Message Digest Framework x x
x x [X] ICONV iconv support x x
x x [ ] IMAP IMAP support x x
x x [ ] INTERBASE Interbase 6 database support (Firebird) x x
x x [X] JSON JavaScript Object Serialization support x x
x x [ ] LDAP OpenLDAP support x x
x x [X] MBSTRING multibyte string support x x
x x [X] MCRYPT Encryption support x x
x x [ ] MHASH Crypto-hashing support x x
x x [ ] MING ming shockwave flash support x x
x x [ ] MSSQL MS-SQL database support x x
x x [X] MYSQL MySQL database support x x
x x [X] MYSQLI MySQLi database support x x
x x [ ] NCURSES ncurses support (CLI only) x x
x x [ ] ODBC unixODBC support x x
tqmqqqqqqqv(+)qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjqu
x [ OK ] Cancel x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

MYSQLのところにチェック[X]を入れます。
MultiLanguage...日本語対応は、[X]MBSTRINGにもチェックを入れておきます。

#make install clean

これでエラーが出なくなったはずです。

phpMyAdminドキュメントページ
http://www.phpmyadmin.net/pma_localized_docs/Documentation_ja.html