2009年9月14日月曜日

CKEditorを組み込む

tak512dです。
WebServiceを作成するなかでユーザーインターフェイスは忘れることのできない
要素です。今日はcakePhpの入力フォームにCKEditorを組み込んだ時の流れを
書いてみたいと思います。

まずはサンプルに記載されている内容("class name" or "code")から、コードを記述する
タイプを利用することにしました。class nameは他人の都合でどうなるか分かりません・・・。
ckeditorの配置
以下のフォルダにckeditorを展開して配置します。
/・・・/project/app/webroot/

サンプルを見るには
http://・・・/project/app/webroot/ckeditor/_sample/

実際のコード(を少し削ったもの)
echo $javascript->link('/ckeditor/ckeditor.js',false);
echo $form->create('Shop' , array('action' => 'test/' . $test_id ));
echo $form->input('mail_text', array('rows' => '10'));
?>

echo $form->end('送信');
?>

注意点
注意点というほどでもないのでしょうが、コードを埋め込んだ部分はcakePhpが生成した
フォームのtextの名前を指定しています。createのShop、mail_textをキャメル記法に
変換したMailTextを連結して、ShopMailTextとなっています。一度表示して名前を
確認すればそれまでですが、間違えると何も表示されません。

2009年9月11日金曜日

cakePhpのサイトでSpam投稿に対処する(Ajax,captcha-php,mechanize)

tak512dです。SEOの関連でサイト分析していて散見されるのが
Botによる投稿。担当しているサイトで3000件を越える書き込みが
そのままになっていました。これはまずい。

ひとまず以下の対処を行うことにしました。
1.画像認証(captcha)を設置する。
2.Ajaxで入力動作を監視する。
3.ダミーの入力欄を用意して監視する。

1.画像認証(captcha)を設置する。
cakePhpで利用しやすい状態になっていたライブラリを利用しました。
解説はこちらを参考にしました。(captcha-php)
リンク先に書いてあるDL先はこちらに移動した模様です(http://milki.erphesfurt.de/captcha/)
それから実際のライブラリ(secureimage)もDLします。注意点として、tar.gzとzipがありますが
tar.gzをDLしてください。内容が違います(2009/7/28)。解説で張ったリンクのページで動作する
サンプルをフォルダ丸ごと配布してくれたので解決しましたが、かなりはまりました。

2.Ajaxで入力動作を監視する。
Captchaの入力欄を監視、キーボードからの入力か判定します。
ソフトウェアキーボードを使うと蹴られるので注意が必要です・・・。

3.ダミーの入力欄を用意して監視する。
hide属性の入力欄nameを用意しました。
Botは基本的にFormの入力項目名に合わせた内容を入力してきます。
mechanizeで作成したBotで書き込む時には「.*name」を含む項目には名前を入力する傾向にあります。
Bodyという本文の入力欄を使っているとタグを使った文章を入れてきますので分かりやすいです。
(mechanizeの解説はこちら「今日のCPANモジュール」を参考にしました。)

恐らくですが、名前やメールなどの予想される入力項目全てを網羅したスクリプトが稼動しているのでしょう。
nameに値が入ったらまともな人間じゃないですよね。hideなんですから。
(解説していたサイトのアドレスを無くしました・・・。不義理を許してください。orz)

追記(2009/9/15)
解説してたサイト「UnderDone(あんでるどん)

2009年9月10日木曜日

Linux Serverの構築

tak512dです。
本日はLinux Server(centos)の構築の情報収集をネットで
済ませたい人向け。前回はcentosの環境が構築済みの人向けでしたので
環境が構築できていないケースをカバーです。

結局ここに行きつきました。(PDFです)
Linux サーバー構築標準教科書
今の結論はちゃんとした本を購入するのが近道、です。
最初はネットで調べて構築を始めたんですがサイトによって手順や
記述方法がバラバラで見ている人の作業が定まらないこと。
逆引きに使えなくも無いのですが、取捨選択するのにも知識がいります。
ちなみに、これはTerminal(CUI)前提の教科書ですのでGNOME環境で
作業をする時はもっと手軽になります。

VmWareにインストール直後の状態で複製しておけば
色々な用途に使えて便利です。rpmを作成する時はそこで作成すれば
手順漏れの少ない手順書が作れるというものです。
ImageMagickのrpmをsrpmから作成した時もこれのおかげで助かりました。

2009年9月4日金曜日

cakePhpの携帯向けメール送信とgmailのsmtp

tak512dです。

新サービスを作成するにあたりcakePhpからQdMailを使ってメールを送信してみました。

cakePhpから説明通りに設定してqdsmtp経由でgmailのsmtpで送信します。
ところが、gmailのsmtpはTLSの設定になっていてQdMailが対応していない。
Php(cakePhp)ならSwiftMailerがTLSに対応していますが、携帯メールには対応して
いない。

ということでカスタマイズの始まり
1.QdSmtpのsmtp送信のオプションにTSLを追加する。
2.TSLを指定された時は内部でSwiftMailerのオブジェクトを生成して送信する。

修正ポイントは
・ストリームをSwiftMailer経由で初期化。
・ストリームを開いた際にクラスのメンバー変数として持っているものをReturn。
・QdMailで送信する。
これだけ。

次は連続してメールを送信できるように修正しないと・・・。

Naver.comにアカウントを作成する

tak512dです。各国のサーチエンジンに対してSEOを行おうとすると
鬼門はNaver.comです。なにせ頑張ってインデックスしようとしない。
しかも韓国国内ハングルのドキュメント≒Naverが提供するツール、
となっているのでそれ以外のサーバーで提供するハングルのサイトを
見つけてもらうのに一苦労。

結局、Naverにアカウントを作成してBlogを書くのが手っ取り早いとの結論に。
(SEOはあまり意識していないBlogなのでタイトルが初期状態。)

実際にアカウント作成する人がいるかはですが、手順を書きますね。
1. 新アカウント作成のリンクから海外在住を選択。
2. 素直に(ハングルですが)日本を選択。
3. 電話番号を聞かれるので携帯の番号を入力。
4. Naverから電話が掛かってきてパスコードを伝えられますので記録する。
5. パスポートのコピーをアップロードする。
6. 認証されましたとのメールが届く。

1はnaver.comを開けば見つかります。ハングルばかりなので辛いですが。
2のところで細かい入力項目はありますが割愛。日本を選ばないと国際電話の都合上、
絶対に認証できません。
4のところで真面目に電話が掛かってきます。機械音声でパスコードを言われますので
メモらないといけないのですが、問題は聞こえてくるのは韓国語(ハングル)です。
当然なんですが。
3で携帯としている理由は2つ。一つは電話を他人に取られない為。知らない人がとると
「気持ち悪い電話が掛かってきた。ハングルじゃなかったよ?」とか言い出す始末。
ちゃんとハングルです。最後にちゃんとニダとつきました。
二つ目は音声を録音する為です。録音さえすれば何度でも聞きなおせます。
5のパスポートはスキャナが無ければデジカメで撮影という荒業でもいけるかもしれませんが
旅券番号がちゃんと文字が読み取れないと無効とのことです。

これで韓国企業に個人情報をガッチリと握られました。
よきNaverライフを!