スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MySQL 5.1 → MySQL 5.5 へアップグレードした後の文字化け対策

PHPでMySQLにデータを書き込むアプリを作ってたんだけど
以前からDBの中身をmysqlコマンドで覗くと文字化けしていた。
特に中身をいじることもなかったので放置してたんだけど
MySQL5.1 → MySQL5.5へアップグレードする際に少し手を入れて
中身を見れる必要が出てきたので文字化け対策を行うことにした。
これが、まーハマるハマる。

まず、アップグレードした段階で
/etc/my.cnfに既に

[mysqld]
character-set-server = utf8

とだけは記述されていた。
なので

[mysql]
default-character-set = utf8

の記述を追加してやり
MySQLを再起動。

show variables like 'char%';

と叩き
結果を見てみると
character_set_serverがlatin1になったまま。
あれ?おかしいな。character-set-serverはutf8って指定してるんだけどな・・・
うんうん唸って色々見てみると
/etc/mysql/my.cnfなんてのがある。
まさかと思ってここに

character-set-server = utf8

を追加してやると
無事latin1の設定が消えた。
これで大丈夫だと思ってselectしてみたんだけど
文字化けしたまま。さらに1時間半程度悩んだ後、
新しく手動でデータを突っ込んでみたら化けずに登録される。
ああ、つまり今まで登録したデータは化けたままになっちゃうのか・・・orz
あと、うろ覚えで正確じゃないかもしれないけどApacheも再起動したほうがよさそう。
たしか設定が直ったあとに日本語突っ込んだらまだ化けてたと思う。
スポンサーサイト

コップ本とEffective Java

買っただけで読めてないなぁ。
何とかして勉強していきたいんだけど、どうにもモチベーションが・・・・orz

WiresharkでのパケットキャプチャとxmllintでのXML整形

今作っているWebアプリでXMLでのやりとりを行っているんだが
それを他の人に見せる必要が出てきたのでコマンドラインベースで
どういうXMLが返却されるかを出力するためいろいろ調べてみた。

アプリ上でやっていることはSOAP通信なので
インプットにもXMLが必要になってくる。
定義をいろいろ調べるのは面倒だったので

クライアントを動かす

XMLのやりとりをパケットキャプチャする

curlコマンドで再現

という方法を取ることにした。
まずはパケットキャプチャだがこれはwiresharkで行う。
今回はたまたま自ホスト以外だったためそんなに苦労せずに済んだ。
フィルターにip.addr == [対向のIPアドレス] and tcp.port == [アプリで使うポート番号]
と設定、適用し、パケットキャプチャ開始。

そういえば起動時にインターフェースを間違えて
パケット流れねーなーってハマってたな。。。。

んで、クライアントを動かして通信してキャプチャしたパケットの一覧からPOST通信しているっぽいところを
右クリック→「Follow TCP Stream」を選ぶと
クライアント側からPOSTしたXMLとサーバー側からのレスポンスのXMLが見える。
ここでクライアント側からPOSTしたXMLをコピーし、
XMLエディタ等で整形、ファイルに落としてから今度はそれをcurlで投げてみる。

> curl "http://xxx.xxx.xxx.xxx/path/to/app" --data-binary @[整形したXML] -H "Content-type: text/xml; charset=utf-8"


ちなみに、XMLエディタで整形した場合にはものによっては
要素にスペースが入っていたものがごっそり削られていてサーバー側で
unknownエラーで弾かれてしまうので要素の内容は正確に写すよう気をつけましょう。

もどってくるXMLは整形されていない&実際にコマンドラインからXMLを見せる環境がWindowsだったので
以下のツールでXMLを整形&UTF-8をSJISに変換した。
xmllint
http://code.google.com/p/xmllint/
nkf32
プロジェクトにあったものを流用。多分ここ↓のものかな?
http://www.vector.co.jp/soft/win95/util/se295331.html


最終的にはこんなコマンドになりました。

> curl "http://xxx.xxx.xxx.xxx/path/to/app" --data-binary @[整形したXML] -H "Content-type: text/xml; charset=utf-8" | nkf32.exe -s | xmlint-1.0.exe



SOAPの通信結果を見るというのは今後役に立つかもしれない。
※自分が設計するときはこんな面倒くさい規格使わないだろうけど・・・・・

emacs-w3mが起動しない&--reverseオプションが効かない

ついさっき突然emacs-w3mが立ち上がらなくなった
Warningバッファに

no such file or directory /usr/bin/w3m

と出てきていたけど、とりあえずw3m.exeはあるし、パスも通っていたので.emacsに

(setq w3m-command "w3m")

を追加することによって解消した。

また、自宅の環境(Windows7 64bit)では--reverseオプションが効かなかったので
foregroundとbackgroundを.emacsで指定してあげて背景色を黒に変更した。

(set-foreground-color "white")
(set-background-color "black")

WindowsでのEmacsはあっちで動いてたのにこっちで動かないってのが非常に多い。
32bitと64bitで違うからかなぁ。

Eclipseのメニュー、ビューパーツのタイトルフォントの変更

現在、Ubuntu上のEclipseでプログラムを書いていたりするんだけど
Windowsと比べてメニューとか、ビューパーツ(プロジェクトエクスプローラーとか)のタイトル
のフォントがでかすぎて画面が狭く感じられて来たのでちょっとカスタマイズすることにした。

メニューのフォントははそんなに難しくなくてデフォルトフォントのサイズを変えただけ。
[アプリケーション]→[その他]→[高度な設定]→[フォント]→[Default font]をTakao Pゴシックの10から8に変更
肝心のこのソフトの名前を忘れてしまった。Gnomeなんとかとかいうソフトだったんだけどなぁ。

次にビューパーツのフォントの変更。
こちらはEclipseで
[ウインドウ]→[設定]→[一般]→[外観]→[色とフォント]→[ビューおよびエディター・フォルダー]→[パーツタイトルのフォント]をTakao Pゴシック10から8に変更

これでだいぶWindowsに近づいた。
プロフィール

ラム君(モヒカンVer)

Author:ラム君(モヒカンVer)
都内でプログラマのようなものをやっています。
まだまだ初心者ですがよろしくお願いします。

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。