PASSWORD()関数

ログインするときにユーザとパスワードを入力する。
そういったログイン画面はどこにでもあると思う。
今回そういったログイン画面を作った。
何も問題なく出来、実際にログイン自体も出来た。


しかし、サーバにあげて動かしてみたらパスワードが不正といわれなぜかログイン出来なかった。。。。
ローカルでログイン出来たのにサーバにあげたとたんログイン出来ないとは何故に?


と、不思議に思っていたところ前日のバージョン違いによるエラー事件のことを思い出した。


ユーザのパスワードはPASSWORD関数を使ってDBに登録している。
ログイン処理では入力されたパスワードをPASSWORD関数使って変換しDBの値と比較している。
このPASSWORD関数が問題だった。


PASSWORD関数は4.1より前だと16バイト長ハッシュ値を返してくるのに対し、
4.1以降では41バイト長ハッシュ値を返すそうだ。
当然それぞれのバージョンでは違った値を返す。


ユーザの情報をサーバで作れば問題はなかったのだろうが、
データを作るのが面倒だったのでローカルで使っていたものをそのまま使っていた。
それが理由でパスワードがマッチしなかったのだ。


ローカルに開発環境を作る際はサーバと同じにしておかないとこういったことがよく起こるのだと改めて痛感した。

MySQLでの副問合せ

今日副問合せを使ったSQLでデータを取得するプログラムを作った。
ローカルの環境でうまくいったので、サーバにあげて確かめてみたらエラーが出た。


はて?と思いながらエラーメッセージを見ると文法エラーだった。
ローカルでは動いたはずなのに文法エラー。。。。。


何が原因だろうと考えていたところ、ローカルとサーバのMySQLのバージョンが違うことが分かった。
これが原因で起きたエラーのようだ。


どうも、副問合せが対応されているのは4.1以降だそうだ。
よって4.0以前は使うとエラーになるのだ。


サーバのMySQL4.0
ローカルのMySQL5.0


そらサーバでは動かんよ。。。。

ついにきた。。。。

ついにきやがりましたよ、梅雨ってやつが!!!
自転車によく乗ってる自分としてはなんとも嫌な季節。。。。
朝起きて雨降ってたら、雨にぬれながらの通勤。
その日一日暗い気持ちになるね。


しかも、それが終われば夏本番!!


ふざけんじゃねぇ!!
夏なんて大っ嫌いじゃ!!!
自分暑いのだめなんですorz


はぁ〜早く11月くらいにならないかな〜

対話式コマンドを自動化

expectは対話式のコマンドを自動化してくれるそうな。
fdiskを使った例をあげていく。
引数にファイル名を渡し実行する。


expect ファイル名


これで勝手に進めてくれる。


ファイルにはTcl(Tool Command Languageというらいし)で処理を書く。
まず最初はこれ↓(おまじないです)

 #! /usr/bin/expect -f

この後にTclで処理を書いていく。

 spawn fdisk /dev/sdb

spawnはコマンドを実行する。
上記ではfdiskを引数/dev/sdbで実行することになる。
この後にfdiskをどのように処理するかを書いていく。

 expect "Command (m for help):" {send "p\n"}

expectは指定した文字列が含まれるとき、処理をさせたり出来る。
上記では「Command (m for help):」という文字列が含まれるとき、「p」を送る。
そうすると、パーティション一覧が出力される。
sendの部分を「n」に変えればパーティションを作成したりも出来る。


実際に、パーティションの削除から作成までをする場合はこんな感じ。

spawn fdisk /dev/sdb

# 既存のパーティションを削除
expect "Command (m for help):" {send "p\n"}
expect {
    -re "/dev/sdb1"            {send "d\n"; expect "Partition number" {send "1\n"; send "p\n"}; exp_continue}
    -re "/dev/sdb2"            {send "d\n"; expect "Partition number" {send "2\n"; send "p\n"}; exp_continue}
    -re "/dev/sdb3"            {send "d\n"; expect "Partition number" {send "3\n"; send "p\n"}; exp_continue}
    -re "/dev/sdb4"            {send "d\n"; expect "Partition number" {send "4\n"; send "p\n"}; exp_continue}
}

# パーティションを作成
expect "Command (m for help):" {send "n\n"}
expect "Command action"        {send "p\n"}
expect "Partition number"      {send "1\n"}
expect "First cylinder"        {send "\n"}
expect "Last cylinder"         {send "\n"}

# 書き込んで終了
expect "Command (m for help):" {send "w\n"}

expect eof

ほかにもいろんなコマンドがあるようだが、それはまたいつか。
(やるかどうかはわからんが)

仕事中

最近よく上司に「何遊んでいる」といわれる。
別に怒られたわけではなく、笑いながらふざけて言った感じ。

遊んでいるわけではなかったので何故そう思うのか聞いてみたら
どうも仕事をしている態度、というか雰囲気が楽しそうだからということで言ってきたようだ。

楽しく仕事ができているのはいいことだと思うが、
仕事しているのに遊んでいると思われるのはどうなんだろう。。。。

週末梅雨

東京のほうでは6週連続で土曜日に雨が降ったらしい。
まだ梅雨に入っていないのに週末だけは梅雨のような感じである。
大阪でも雨が降り雷までなっている状態。

自転車乗りの俺としては雨は辛いところ。。。。

本格的に梅雨入りしたらと思うといやな気分になる。
暑いはじめじめするはで最悪である。
冬が好きな自分としては早く冬になってもらいたいよ。。。。

まだ6月にもなっていないのにそう思っている俺って変?