Archive for the 'PHP' Tag

Ktai Style 1.44 を使用してみた

というわけで、WordPressの携帯対応プラグインである『Ktai Style バージョン1.44』をダウンロードしてアップグレードしておきました。まぁ、実は数日前にアップグレードしておいたんですけどね。

で、動作確認がてら、実機で色々とサイト内を見ていたのだが、アップロードしたpng画像が表示されていないところがあった。Ktai Style には、DoCoMo端末から閲覧した場合に、表示できないpng画像をgif画像に変換してくれるという嬉しい機能があるのだが、全く表示されない状態になっていた。

調べてみると、画像ファイルが生成されていないのではなく、htmlコードがpngからgifに変換されていないのが原因のようだった。そこで、プラグインのソースを色々と眺めていると、『operators/i-mode.php』ファイルの1751行目付近の

$buffer = preg_replace('!<img src="([^>]*?)\.png"!', '<img src="\\1.gif"', $buffer);

がうまく働いていないようだった。img の直後にsrc が来るとは限らないですね。今回の場合は、has_orig、title、class などの要素がsrc よりも先に来てしまっていたために、うまく置換できていなかったようでした。

あの大会まで、あと何日?

K本高校かるた部の練習場には、『あと○○日』と高校選手権団体戦までの日数が書かれたホワイトボードが置いてあります。でも、これって長期休暇後とか計算が面倒だよなぁ……と思ったので、大会までの日数を自動計算してくれるプログラムをつくってみました。

携帯用サイトトップページに、『あと何日?』という項目を増やして、僕たちが出場しそうな一番近い大会までに残り日数を表示するようにしました。また、『あと何日?』のリンクをクリックすると、今後の主要大会までに残り日数を一覧を見ることが出来ます。

ただ、大会の開催日は僕が手動で入力していくということになるので、内容の正確さは保証いたしません。正確な大会情報は、全日本かるた協会・各所属協会にお問い合わせください。

あ、つくったのは良いけど、肝心の来年の高校選手権団体戦の開催日を知らないぞーっ!汗

Ktai Style 1.43 を使用してみた

というわけで、いつもお世話になっているWordPressの携帯対応プラグインである『Ktai Style バージョン1.43』をダウンロードしてアップグレードしておきました。

変更点はリンク先を見ていただければ分かるんですが、僕がプラグインを使用する上での大きな変更点は特にないようでした。ただ、動作確認として色々とサイトを見ているとちょっとおかしなことに気が付いた。

外部へのリンクをクリックしたときに、タイムアウトしてしまう場合があるのだ。中継ページの redir.php に行く前の状態で止まってしまう(携帯端末の接続時間内にリンクできずにエラーになる)。通信状況が悪いからページ遷移できないというわけではなさそうだったので色々と調べてみたところ、リンク先のサイトによってはうまくいくので、media="handheld"のチェック部分でタイムアウトしているのかなと予想し、redir.php のソースを修正しながらテスト。

結果としては、redir.php のdiscover_mobile()関数内にある、

if ( $byte_count > $timeout_bytes ) {

の直前部分に以下の行を追加することで、タイムアウトしてしまう現象は解消されました。

if (preg_match('!(</head>|<body[ >])!i', $contents)) {
    return false;
}

多分、media="handheld"がない場合に、コンテンツ内容をチェックし続けて遅くなっていると思い、このような処理を追加してみました。タイムアウトになるサイトとならないサイトの違いは良く分からなかったのだが、</head><body>の後にmedia="handheld"が来る事はないような気がするので、このような処理を加えてみました。

『かるたの確率』のコンテンツを追加

携帯用サイトに『かるたの確率』というコンテンツを追加しました。これは、競技かるたの試合で起こる出来事の確率を計算できるページです。大学時代にJavaScriptで作成し、熊本学生百人一首同好会のサイトで公開しているものをPHP化して携帯用にレイアウト変更しただけですけどね(汗)

ろくに動作確認していないから、もしかしたらおかしな所があるかもしれないので、何かあれば報告いただけると嬉しいです。

かるた辞書を大幅更新

久々に、パソコン・携帯サイト共通のコンテンツであるかるた辞書を大幅に更新しました。今までは、自分で作成したPHPプログラムを使用していたのだが、実は色々と問題点がありまして……フリーのスクリプトをダウンロードして、コンテンツを入れ替えようと思い立ちました。

まずは、色々とCMSツールを探すところから始まり、色んなWikiプログラムやBlogツールをインストールして試してみました。そして、MovableTypeに決定して作成!……するはずだったのだが、あまりにも多機能すぎて逆にもてあます感じになってしまい、途中まで作成してから止めました。

で、色々と試してみた結果、以前このサイトのブログとして使用していて、プラグインも作成して慣れているから改造も容易なrNoteを使用することにしました。

改造と言っても、プログラム本体を修正したのは、記事をタイトル順に並べ替えるために、array_multisort()関数で$g_filelist配列をソートしたくらいですけどね。後は、自作の検索プラグインの機能追加、オンライン書き込みプラグイン(低機能)の作成、スキンの修正などを行って完成。

この作業のせいで土日の大部分を使ってしまった(涙)あ、実は動作確認はそれほどやっていないので、バグ等があればご報告いただけると嬉しいです。

このサイトのサーバー移転

現在、このサイトを公開するために借りているレンタルサーバー先の変更および、ドメイン移管を行っています。URLの変更はないのだが、移行期間中はちょっとサイトの状態がおかしくなっているかもしれないのでご了承ください。

移行のために色々と設定を変えているのだが、一部のコンテンツで文字化けだらけになってしまっていた。原因を調べてみると、PHP4とPHP5でfgetcsv()の挙動が違うことにより、csvファイルを読み込んだときに文字化けが発生しているようだった。とりあえず、setlocale(LC_ALL, 'ja_JP.SJIS')と記述したら直ったんだけど、まだまだ不具合が起きそうな予感だ……

プログラムミスった!

かるた大会成分解析かるた大会成分解析……今さらだけど、同じ名前を入力した場合の出力結果の割合って同じになっちゃうんだね。確かに、srand()に同じ値を渡しているんだから当たり前といえば当たり前なんだけど、何で気づかなかったんだろうっ!修正したいけど、そうすると今までの出力結果と全然違うものになってしまうんだよね↓↓そのうち、新しいバージョンとして修正するかもしれません。

明日は九州職域

何とか風邪も治ったことだし、九州職域に行ってきます。ただ、パソコン画面を見ていると気分が悪くなってくるのだが……まぁ、月曜までには治ってるでしょ☆パソコンがあまり出来ない代わりに、『PHPサイバーテロの技法―攻撃と防御の実際』という本を読んでおこうと思う。これは、Webプログラマーをやっている人なら知っておくべきことがたくさん書いてありますが……僕はあまり知りませんでしたね(汗)

そういや僕はD級で出場するつもりだったのだが、人数の関係でB級で出場することになりそう。責任がちょっと大きくなるけど、D級会場よりギャラリー多いし、広いからまぁいいか(笑)

競技かるた(PHP風)

なんとなく、競技かるたの流れをPHP言語で書いてみた。合っているかは分からないけど、多分こんな感じかな……

<?php
$myfuda = 25;
$tekifuda = 25;
$karafuda = 50;
$defuda = 50;
while($myfuda && $tekifuda){
    srand((double)microtime() * 1000000);
    $temp_num = rand(1, $karafuda + $defuda);
    //デバッグ開始
    print '$myfuda = '.$myfuda."<br>";
    print '$tekifuda = '.$tekifuda."<br>";
    print '$karafuda = '.$karafuda."<br>";
    print '$defuda = '.$defuda."<br>";
    print "--------------------------<br>";
    //デバッグ終了
    //空札だったとき
    if($temp_num < = $karafuda){
        $karafuda--;
    }
    //出札だったとき
    else{
        $defuda--;
        srand((double)microtime() * 1000000);
        $temp_num = rand(1, $myfuda + $tekifuda);
        //自陣が出たとき
        if($temp_num <= $myfuda){
            $myfuda--;
            if(!funcGetFuda()){
                $myfuda++;
                $tekifuda--;
            }
        }
        //相手陣が出たとき
        else{
            $tekifuda--;
            if(funcGetFuda()){
                $myfuda--;
                $tekifuda++;
            }
        }
    }
    switch(funcOtetsuki()){
    case 1:
    if($tekifuda){
        $tekifuda--;
        $myfuda++;
    }
    case 2:
    if($tekifuda){
        $tekifuda--;
        $myfuda++;
    }
    break;
    case 3:
    if($myfuda){
        $myfuda--;
        $tekifuda++;
    }
    case 4:
    if($myfuda){
        $myfuda--;
        $tekifuda++;
    }
    break;
    }
}
if(!$myfuda) print $tekifuda."枚差の勝利です!";
else print $myfuda."枚差負けです……";

function funcGetFuda(){
    //自分が取った場合はtrueを返す関数
    //以下仮設定
    srand((double)microtime() * 1000000);
    return rand(0,1) ? true : false;
}
function funcOtetsuki(){
    //お手つきなし……0、共お手……0
    //自分が空ダブ……1、自分がお手つき……2、
    //相手が空ダブ……3、相手がお手つき……4、を返す関数
    //以下仮設定
    srand((double)microtime() * 1000000);
    $temp_num = rand(1,100);
    if($temp_num == 1) return 1;
    elseif($temp_num == 2) return 3;
    elseif($temp_num <= 6) return 2;
    elseif($temp_num <= 10) return 4;
    else return 0;
}
?>

そのうち、JavaScriptやFlashなんかで競技かるたのゲームなんか作ってみたいなー。まぁ、読みソフトが完成したらの話だけど……

携帯用サイトで絵文字表示できるようにした

今日は、サイトを色々と更新した。一番変更したのは実は携帯用サイトで、携帯からの表示のときに絵文字を使うようにした。動作確認は今のところDoCoMoとvodafoneエミュレーターでしかやっていないので、もしかしたら上手く表示できてないかもしれません……特にauの人、おかしかったら報告いただけるとうれしいです♪

あとは、ほとんどのサイトをPHP化して共通のファイルをインクルードするようにした。あるファイルからトップページへの相対アドレスを取得するやり方に苦戦したけど、for文とfile_exist()関数を使って何とか作成。他にもっといいやり方とかありそうだけど……

今回の大幅変更の目的は、ページ別のカウント数を知りたかったから。まだカウンタ設置してないけどそのうちにね。時間があればMySQLも少し勉強してみたいなぁ……

更新しました

まず、「百人一首確率」のページの名前を「百人一首研究」に変更。そして、ここに新しくコンテンツを2つ追加しました。

1つ目は「運命戦での空札の枚数」。運命戦になった瞬間に空札が何枚存在するかを表にしてみました。計算間違いしている可能性があるので怖いですが……

2つ目は「自陣の配置の枚数」。自陣の配置の枚数を入力して、それにしたがって札を自陣に並べてみるだけです。実用度はあまりないかもしれません。

あと、「百人一首検索」をバージョンアップ。PerlCGIでつくっていたのをPHPに変更。2次元配列を使ってみると結構今までの不具合が解消された。

「百人一首一覧」の昇順降順機能をつけて、検索された文字列を赤く表示するようにした。

今年はバグがない限り更新しないと思います。次に更新するときは、著作権表示の部分を「2003」から「2003-2004」に変える予定。

百人一首競技かるたを10倍楽しくするサイト

というのがこのサイトのサブタイトルですが、これは「ゲーメスト」と言う雑誌の『ゲームセンターを10倍楽しくする』に由来しています。ちなみに「ゲーメスト」は数年前になくなりました(涙)

そういや、最近更新した内容書いてなかったなぁ……最近の更新内容はこんな感じ。

  • ほぼ全ページに背景色を指定するようにした
  • 百人一首一覧を結構パワーアップさせた
  • フォームメールのphpを自分で作ってみた

PHPは便利かも

トップページとサイトマップを更新。トップページは掲示板の最終書き込み日時を表示するようにし、サイトマップにはほとんどのページの最終更新日を表示するようにした。両方ともPHPを使用しました。もともと、SSIカウンタが使えないのでPHPカウンタを使い始めたんだけど、結構便利なので更新日表示にもPHPを使うようにした。

そろそろトップページの絵を変えようかな……次もまた女の子の絵か自分の似顔絵か……自分の似顔絵をアップしたらアクセス数が減ったりして(笑)