CakePHP1.2のバリデーションでurlがチルダをエラーにしてしまう

ということで、タイトル通り。

http://hogehoge.com/~foo

みたいなチルダが入っている値だと、入力エラーになる。

調べてみると、ちらほら同じような人が見つかる。
CakePHPのvalidateで、チルダが入っているとURLとして認識してくれない « 15Pub
CakePHP-ja tumblr - Validation::url() が URL の ~ に反応する件への

けど、具体的な解決策が見つからなかったので、コードを晒しておく。
# app/app_model.php

function url($data, $strict = false) {
	$check = is_array($data) ? array_shift($data) : $data;

	$_this =& Validation::getInstance();
	$_this->check = $check;
	$validChars = '([' . preg_quote('~!"$&\'()*+,-.@_:;=') . '\/0-9a-z]|(%[0-9a-f]{2}))';         // 「~」を追加
	$_this->regex = '/^(?:(?:https?|ftps?|file|news|gopher):\/\/)' . ife($strict, '', '?') .
		'(?:' . $_this->__pattern['ip'] . '|' . $_this->__pattern['hostname'] . ')(?::[1-9][0-9]{0,3})?' .
		'(?:\/?|\/' . $validChars . '*)?' .
		'(?:\?' . $validChars . '*)?' .
		'(?:#' . $validChars . '*)?$/i';
	return $_this->_check();
}


参考サイトを真似してvalidCharsにチルダを追加しておいた。
cake/libs/validation.phpに手を入れるのは嫌なので、app/app_model.phpに上記を追加。

んー、チルダをURLに含むべきではないってのはそうかもしれないんだけど、柔軟に対応して欲しいところだね。

CakePHP1.2+Ktai LibraryでcakeErrorを使いたい

CakePHP1.2にてKtai Libraryを使って携帯サイトを開発中に躓いた。
僕の場合、モバイル用のviewのlayout.ctpの一行目がこんな感じ。
<?xml version="1.0" encoding="<?php echo $ktai->options['output_encoding']; ?>"?>

いきなりKtai Library用のHelper呼んでるんだよね。
んで、
Notice (8): Undefined variable: ktai 

なんてオシャレなエラーメッセージを出してくれます。
「$ktaiなんて無いよ、バカ」と言われても、こちらとしては、
「Controllerに設定しているだろ、バカ」ということになるんですが、cakeError()のソースコードを追ってみたら、Error用に独自にController用意されているみたいで、こりゃダメだわと。

んで、ネットで検索してたどりついたのがこちら。
CakePHPを本気で勉強: cakeError:ErrorHandlerで独自ヘルパーを使用する

それをちょっとカスタマイズして出来たのがコレ。
# app/app_error.php

/**
 * error 
 * 
 * @param mixed $params 
 * @access public
 * @return void
 */
function error($params){
    $this->controller->helpers[] = 'ktai';
    return parent::error($params);
}
/**
 * error404 
 * 
 * @param mixed $params 
 * @access public
 * @return void
 */
function error404($params){
    $this->controller->helpers[] = 'ktai';
    return parent::error404($params);
}

error404()もついでにやっておいた。

つうか、ネット上にこういった情報が皆無なのにビックリ。
Ktai Libraryってメジャーでしょ?
みんなエラー処理どうしてんの?
謎だわー。

「TwitMailBox」公開しました

TwitMailBox」というサービスを公開しました!


■作った経緯
最近、日頃から良くTwitterを使うようになって、Twitter上で約束を決めたり話し合ったりということが増えてきました。
重要なことや個人的な内容になると主にTwitterのダイレクトメッセージを使っていたんですが、PCの前にいる時は良いんですけど、PCから離れた途端にやりとりが中断しちゃうのがなんだかなーと思ってました。
iPhoneの様なスマートフォンを利用している人達は、結構リッチなクライアントがあるのであまり感じないかもしれませんが、普通の携帯電話の場合、タイムラインはまだしもダイレクトメッセージをWEB上でチェックするとなると少し面倒なんですよね。

ということで、
「Twitterのダイレクトメッセージを携帯電話のメールみたいに使いたい!」
ってことで、作ったのがコレです。


■主な機能
・登録したメールアドレスへのダイレクトメッセージの転送
・転送されてきたメールをそのまま返信出来る
の2点のみ。


■GAE/Python
サーバはGoogle App Engine、言語はPythonで作成してみました。
Google App EngineはやっぱあのGoogleのインフラを使ってみたいってのと、無料である程度使えるってのが魅力でした。
Pythonを選んだ理由は、以前から知っていたRubyに似ていると聴いていたことと、Javaの方が難しそうだったからです。
JRubyとかって選択肢もあったんですが、ネイティブでサポートされている言語の方が何かと便利だろうということで選択しました(意外とそうでもないみたいですが)。


■その他
こういったサービスを作る時に一番苦手なのがデザイン部分なんですが、どうのこうのさんが別のサイトの為に作成したHTML&CSSを快くパクらせてをくれました。
本当にありがとうございました。


といった感じで、PythonもGoogle App Engineもろくにわかっていませんが、自分で使う分には結構便利なので、利用して貰えれば幸いです。

htaccessファイルで日付や時間でリライトするメモ

3月2日からindex.htmlへアクセスがあった場合、index2.htmlを表示させたい場合
RewriteEngine on
RewriteBase /

RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY} >20100301
RewriteRule ^index.html /index2.html [L]


Cronでデプロイするとか、PHPとかで切り替え処理とかいろいろあると思うけど、これが一番お手軽だと思う。

「ZERO」読みました

ZERO―The flower blooms on the ring………alone. (上) (Big spirits comics special) ZERO 下    BIG SPIRITS COMICS SPECIAL

面白かった。
若い頃はそんなこと感じなかったんだけど、松本大洋の漫画ってどれもくさいよね、ナルシストっぽいというか。
けど、絵柄とのギャップが良い味出しているのかなと思った、そんなに嫌らしく感じないから。

松本大洋っぽい作品。
程よい長さ。
なぜか読んだ後ホッとする感じ。
なんでかなーと考えていたんだけど、ちょっと少年の頃に気持ちを思い出すからかなと思った。

始めて読んだけど懐かしい作品だった。
≪ 前のページ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 次のページ ≫ 2 of 158

アーカイブ

2010

  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12

2009

2008

2007

コンタクト

longkey1[at]gmail[dot]com