2009年11月7日土曜日

MTOS4.261のmt-check.cgiが動作しない?fastCGIの罠

MTフォルダを複製して新しい環境を作成しようとしたところ、動きませんでした。
当然、稼働中のサーバー環境なので設定は満たしているはず。

なぜ?

mt.cgiは反応があるものの、気持ちが悪い。
今までの作業メモを見ながら怪しいものを発見。

fastCGI

httpd.confからコメントアウトして再起動。
再度、mt-check.cgiを実行。

動いた。時間返せー。

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ライフを!

2009年8月27日木曜日

MTOSにImageMagick 6.5.4-10をインストールする

記念すべきブログ1回目は「MTにImageMagickのImageMagickの最新版をインストールする。」です。
MTOS: Movable Typeのセットアップ方法を公開しても会社の損失になる訳ではないのでさくっと書きます。
MTのInstallで一番苦労したのはImageMagickでした。でも、慣れてしまえば簡単です。えぇ、慣れれば。
(centos5.3を対象にしています。Windows環境の方はこちら「世界中の1%の人々へ」がお勧めです。)

解決策1:centosインストール直後に以下を実行する。
yum install ImageMagick*
(2009/7/8の時点でImageMagick 6.2.8がインストールされます。)

ここで以下の問題が・・・
問題1:MTをInstallする前にImageMagickをmake経由で既に入れてしまっている。
問題2:MTをInstallする時にImageMagickをmake経由で入れようと努力した。
問題3:MTをInstallする時にImageMagick公式サイトで配布しているrpmから入れた。
問題4:MTを導入済みのサーバーにRubyMagickを入れることになった。
問題5:install直後って無理!
おそらく、この方もこの現象。(Can't load Image/Magick/Magick.so)

これらの状況でも解決できたのが下記の方法。
解決策2:srpmからrpmを作り、インストールする。(PHPで携帯サイトを開発する人のブログ)
作成したrpmは別のサーバーにも適用できました。一度作ってしまえば後で楽ができるのでお勧めです。
基本は上記サイトの内容でいけますが補足事項があります。つまづいた箇所を追記します。

*の部分が追記。環境によっては不要。
1: ImageMagick-6.5.4-10.src.rpm を入手
2: */usr/src/redhat/SOURCES を作成
3: *yum install giflib-devel perl-devel djvulibre-devel libwmf-devel jasper-devel libtool-ltdl-devel libxml2-devel librsvg2-devel bzip2-devel libtiff-devel perl-devel ghostscript-devel djvulibre-devel jasper-devel libXt-devel lcms-devel gcc
4: yum install rpm-build
5: yumにdagを追加する。
6: yum install djvulibre-devel
7: rpm -ivh --nomd5 ImageMagick-6.5.4-2.src.rpm
8: SPECファイルを修正
9: rpmbuild -ba ImageMagick.spec
→exit 0 と出て終了します。
10:*rpmのインストール
→rpm -ivh ImageMagick-6.5.4-2.i386.rpm
→rpm -ivh ImageMagick-c++-6.5.4-2.i386.rpm
→rpm -ivh ImageMagick-devel-6.5.4-2.i386.rpm
→rpm -ivh ImageMagick-c++-devel-6.5.4-2.i386.rpm
→rpm -ivh ImageMagick-perl-6.5.4-2.i386.rpm

なお、作成したrpmで別のサーバーにinstallする場合、上記リストの1-6は同様に実行しておかなければなりません。
7以降はrpm作成に関わる部分です。その前提を同じにすることでインストールが可能になります。
yum installの一覧にはrpmからのインストール時には不要なものもあるかもしれませんが割愛
(重複してるけど無視されますから・・・)