【KtaiLibrary】バージョン0.2.3公開

緊急で申し訳ございませんが、0.2.3版をgithubにて公開します。
1日に2回バージョンアップが行われることになってしまい大変に申し訳ございません。

app_controller.php.ktai内のリダイレクト処理を、現在開発中の0.3から持ってきたのですが、誤って開発途中のコードを挿入してしまいました。これでも一応動くのですが、urlをarrayで渡した場合にエラーが出ます。

それ以外は変更がありませんので、0.2.2ではなくこちらをご利用いただきますようお願いします。

【KtaiLibrary】バージョン0.2.2公開

バージョン0.2.2を公開しました。
githubよりダウンロードできます。

今回は3つの不具合修正を施しました。

1つ目は、SoftBank携帯の新機種でアクセスした場合、エラーが出てしまう問題を対処しました。
これは、最新機種の機種情報がテーブルに存在しないためで、本来ならdefaultの設定を読みに行くのですが、SoftBankのテーブルにはデフォルトも存在していなかったためにエラーが発生していました。最新機種の情報を追加するとともに、デフォルトの情報も追加しました。

2つめは、最近のCakePHPのバージョンアップでsessionの挙動が変わってしまい、session定義のファイルを2度読みするようになったため、中で行っている関数定義で不具合が出る件を対処しました。関数部分は2度読みを行わない処理を入れました。

3つめは、かねてから問題の出ていたredirectを修正しました。これは次期バージョンの0.3で作成していたものを反映させたもので、ルーティング情報にあるカスタムの遷移と外部サイトを正しくリダイレクトできるようにしました。

0.3のリリースに合わせようかと思っていたのですが、深刻気味の3つの不具合を今回緊急でアップしました。既にライブラリをご使用の方は、少なくとも「lib3gk_machine.php」を本バージョンのものと差し替えてご使用いただきますようお願いします。

【追記】(2010/03/21)
バージョン0.2.3を公開しました。リダイレクト処理の修正が不完全だったため、こちらは使わないようにしてください。

【戯れ言】FirefoxにSkype extension適用で画面の更新がおかしくなる件

nowprintingpostやセッション等で値を持ち回すことで同一のURLに遷移するようなタイプのサイトで、Firefoxにて画面が更新されない不具合に悩まされていました。

例えばtwitterでログアウト後、再ログインを試みると、ちっともログインされていないように見え、ctrl + F5で強制更新させるとちゃんとログインされている、といった具合です。
他の例では、三井住友銀行の管理ページなんかもっと酷く、ログインしても他の画面に遷移せず、全く操作できません。フォーム入力に部分は強制更新でも通ることできず、しかもそれを繰り返していると「不正アクセス」と見なされるようです。

セーフモードで初期化を試みたり、プロファイル作り直し、再インストール、ダウングレードなどあらゆる手段を尽くしましたが、現象は変わらず。でも、昔はちゃんと動いていたのです。本当に解せません。

今までは、Firefox本体で、何かしらの挙動で設定情報が狂う、もしくはキャッシュがおかしくなったりして、画面が更新されなくなる、とばかり思っていたのですが、もう少し範囲を広げて試行錯誤した結果、なんと意外な結末!
実は、Skypeをインストールすると自動でインストールされる、Skype extensionが悪さをしていました。これが有効化されていると、99%この不具合が出ることが判明!
Skype extensionは何をしているのかというと、もし電話番号等がページ内に書かれていると、スカイプで通話するボタンに書き換える、というもの。おそらく、この書き換え処理部分で何らかの不具合があるのでしょう。私はSkypeで通話はしませんから、ためらわず無効にしました。

もし同様の不都合に悩まされている方も、Skypeがインストールされている場合は間違いなくこれかと。一度確認してみてください。

【CakePHP/KtaiLibrary】複数submit設置でセッションキーが消える!?

icon_ktaisession.use_trans_sidがらみでまた問題が確認されました。

これは大変に不思議なことなのですが、フォーム内に複数のsubmitを設置したい場合があると思うのですが、この場合にどちらか片方(おそらく最後にあるもの「以外」のもの)を押した場合、クエリストリング中のセッションキーが消えてしまう、という現象に遭遇しています。submitが一つだけ存在する場合、もしくは最後のsubmitを押した場合は問題がないのです。

つまり、携帯サイトの場合、docomo携帯で一部フォームで正常に動かなくなる事態に遭遇する、というわけです。

いろいろなケースで試してみたのですが、結局分からず。
最終手段として、「url_rewriter.tags」を変更することで、セッションキーが継続され、問題解決ができました。
具体的には、Ktai Libraryの「app/config/ktai_session.php」の末尾にある設定箇所を変更します。


//formの場合の設定を変更
//    ini_set('url_rewriter.tags', 'a=href,area=href,frame=src,input=src,form=fakeentry,fieldset=');
ini_set('url_rewriter.tags', 'a=href,area=href,frame=src,input=src,form=action,fieldset=');

ところで、「fakeentry」というパラメータはなんなんでしょうかね?
これはデフォルトのPHP設定なのですが。
なぜ「action」ではないのか、私には分かりません。

この件に関しては、ライブラリの修正はちょっと待って、しばらく様子を見ようと思います。
ちょっと変更することによる影響が分かりませんので。
問題ないようなら更新したいと思います。

【KtaiLibrary】SB携帯で絵文字が文字化けする不具合

icon_ktaiSB携帯で$ktai->emoji()等で表示する際に一部絵文字で文字化けすることが判明しました。おそらく、過去発表しました全バージョンで影響が出ます。

対象になるコードは「lib3gk_emoji.php」で、対象絵文字のテーブルで3行目と4行目がひっくり返っている箇所がありました。もう少し詳しく書きますと、3行目はSBのwebコードが入っているのですが、空だと絵文字画像もしくは文字を表示します。そこにSJISの全角空白が登録されているためで、その空白は本来4行目にくるものでした。

修正版は早急に上げなくてはなりませんが、緊急的な対処方法として、全角空白をコード内で検索していただき、3行目に来ている場合に4行目と入れ替えてください。

具体的にはこんな感じになっています。


array(                        //117
array(0xf97e, 0xe6da),
array(0xf779, 0xe55d, 0xf079, 0x775a, 0xec79),
' ',   //←これは4行目に来るべき空白
'',
'enter',
),

array(                        //117
array(0xf97e, 0xe6da),
array(0xf779, 0xe55d, 0xf079, 0x775a, 0xec79),
'',
' ',  //←このように変更
'enter',
),

不具合が見つかり申し訳ございませんが、もしKtai Libraryをお使いの方は対策をお願いいたします。

なお、少し関係ありませんが、できるだけ迅速な修正ができるよう、近日中にgithubにて公開を検討しています。
また、プラグイン化(1.3向け)等も検討段階に入っています。おそらくGoされた場合は別プロジェクトとしてしばらくは平行して公開すると思います。

【CakePHP】schema.phpがらみでチケット

cake-logoああ~、時間がないというのにチケット投げてしまった…orz

前々から気になっていたのですが、放置しておくのもアレなのでチケット投げました。
どちらもコールバック関連の不具合と機能要望なんですけど…

SchemaShell all time reports no errors to after() callback in schema.php.
Can’t use private parameters in schema.php callbacks

一つ目は、after()コールバックにエラーが絶対に入らない不具合。
スペルミスだっただけですけど…もう一つのチケット書いている間に、markが既に対応してくれている???

もう一つの方は、schema.php内に書いたプロパティは、根こそぎテーブルとして扱われてしまうため、そうじゃないパラメータが一切持てないことに対する要望。

なぜこんなチケットを投げたかというと、schema.phpで「テーブルの初期値がこの中で書ければ、メンテナンスがと~っても楽になるよ~」という訳なんですよ。
時間ができたときに詳しく書くと思いますが、現状ではschema.php内でこれを実現することは不可能なので、「定数を持つクラス」をschema.phpで呼び出すという荒技で対応することができたりしますので、それでごまかしています。
まあ仮に採用されたとして、1.3からですかねぇ、schema.phpにいろいろと書けるようになるのは。

はー、時間かけ過ぎてしまった。
また作業に戻ります。

【追記】(2009/08/22)
「必ずエラーを送らない」バグについては先ほどfixedされた模様です。
直るの超早いよ(笑)。

【KtaiLibrary】テストサイトでEZwebの場合、セッション値が変わらない件の修正

icon_ktaiKtai Libraryのテストサイトで、EZwebの場合、セッションページの値がちっとも変化しない不具合があったのですが、今更ですけど修正をしました。

携帯サイトを製作されている皆様はお分かりかと思うのですが、ただ単に「ページがキャッシュされてしまい同じページが表示されているだけ」です。
サイト上の問題ですので、セッションそのものの動作については問題ないと思いますので、特にライブラリの変更は発生していません。EzWebな方から、セッションがらみで結構「いいえ」をいただいていたのですが、実はこういったオチでした。申し訳ございませんでした。

ちなみに対処方法はこんな感じです。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<!-- ↓↓↓追加ここから↓↓↓ -->
<?php if($ktai->is_ezweb()){ ?>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="-1">
<?php } ?>
<!-- ↑↑↑追加ここまで↑↑↑ -->

また、お分かりかと思いますが、一度キャッシュ対処なしでアクセスしてしまうと、いくら対処してもしばらくはキャッシュが効いたままかと思いますのでご注意を。

【KtaiLibrary】次バージョンの進捗状況

icon_ktai今週はある意味大仕事だったというのか、いろいろと大変でした。
とりあえず週末は時間が作れましたので、「Ktai Library」の続きをやらないとですね。

新バージョンについては進行中でして、現在50%程修正が完了しています。構造的には大きく変化していまして、かねてからやりたいと思っていました「絵文字情報と機種情報のクラス分割」を今回行いました。まあデータ部分を外に追い出しただけですので、関連メソッドまでを分割するかどうかはまだ迷っていますけど、これで更に必要な部分だけを読み出すことが出来るようになって効率が上がるのではないかと考えています。
残り50%の大半は「AU関連の絵文字データの追加」で、数値表現の際の必要データの追加です。既に作ってしまったデータを際挿入するので結構面倒なんですよね。あとは「アクセスキー付きリンクでバイナリ文字列を生成しない」件と「Router::url()を考慮する」件がありますが、こちらの方も多少技術的に解決しなければならない点がありますので面倒なところですが、それほどは時間がかからないと思います。

というわけで、目標は一応日曜日中に目処をつけるといったところです。
一応機能追加も若干考えています。
そして、今回からは正式リリース版を出す前に「リリース候補バージョン(RC)」を先行で公開することを考えています。今までは「テストサイトでまず試してもらって、確実に動くものを提供」の方向だったのですが、全体的に機能が安定してきたことと、テストサイトだけでは分かりにくい機能も出てきましたので、全体的に組み込んでもらって試していただく方がこれからはよいかもと思った次第です。基本的には正式バージョンを使っていただく方が良いかと思いますが、新しい機能を体験したい方やもう少しコアな部分でのテスト参加をしてみたいという方向けに解放してみたいと思います。

そんなわけで、月曜日にRC版をリリースする予定です。
いくつかの大きな不具合が全て直る予定ですので、どうぞご期待ください。

【KtaiLibrary】もしご要望等があった場合にお願いしたいこと

icon_ktaiこういった記事を書くかどうかは非常に迷うところなのですが、やはり「Ktai Library」を良くしていきたいと思いますので、一応「公式」的な立場で書かせていただきたいと思います。

私は普段、某巨大掲示板(このフレーズもあまり見かけなくなりましたね)を参照することはないのですが、リファラーでKtai Libraryのリンクを確認しましたので、その書き込みを拝見しました。
内容は「Router::url()を使っていないのでリンクがおかしくなる場合がある」というものなのですが、これについては確かにその通りだと思いますので修正したいと思います。丁度リンクを含めたURL生成でいくつか不具合報告とご要望をいただいていますので、一緒に修正したいと考えています。

そんなわけで一点だけ、皆様にお願いしたい点がございます。
もし使いにくい点、不具合等がございましたら、どこかに書く前に「まずは」是非当方にご連絡していただきたいのです。
今回はリファラーでたまたま捕捉できたために修正点が分かりましたが、まあ私もいろいろとやることを抱えている現状(特に年内までは相当に厳しいです)、あまり情報収集や改良に時間を割いていられない状況です。ですが、少しでも良いものを使っていただきたいですし、皆さんの携帯サイト製作がこれで活発になってくれればこちらとしても嬉しいですので、この状況下で最大限対応していきたいですから、是非ご協力をいただきたいです。

バージョン0.0.1からスタートし、現在0.1.1となるのですが、この間でいろいろな方からのご要望やアイデア、テストなどのご協力もあって、現在の機能が実現しております。Ktai Libraryは、既に皆さんと一緒に作っていると、私は思っています。「使っているからには対価を払え」などとおこがましいことは言いませんが、私個人ではなく、他の皆さんのためと思っていただいてご協力していただければと思います。

少し脱線しますが、現時点ではECWorksの肩書きがついていますが、皆さんが望むのなら、権利等を解放して開発コミュニティとして立ち上げても良いかなと思っています(念のためにktailibrary.orgドメインはとりました)。まあまだ早すぎる感はありますが、もしご協力いただける方がいらっしゃったら是非検討したいと考えています。正直私個人のアイデアやリソースには限界があり、やはり皆さんと一緒に形にする方が、よりよいものになると思いますので。

そんなわけで、ご連絡の件は是非お願いいたします。
Ktai Libraryのページなどに書き込んでいただいてもOKですし、もし内緒でいきたいのであれば、上記の「お問い合わせ」からこっそりご連絡いただいても構いませんので。
ご協力お願いいたします。