2012/5/9 水曜日

さくらのレンタルサーバでpythonのスクリプトを動かす

カテゴリー: — gabon @ 16:34:32

さくらのレンタルサーバが複数のDBを使えることになったと(今更ながら)知り、他のサーバで動作していたpythonで記述したスクリプトを、さくらのレンタルサーバでも動かそうとしました。

そうしたら、誰しもが通る、
unicode encode errorに見事にハマり、
調べるところによると、デフォルトエンコーディングの設定がうまくいっていないようです。

通常なら、
/usr/lib/pythonX.X/site-packages/に
sitecustomize.py
を設置すればよいのですが、さくらのレンタルサーバでは権限の問題でそうはいかない。

そこで、
http://sphinx-users.jp/cookbook/ci/sakura.html
の「さくらインターネットで自動ビルド」の記事が参考になりました(感謝!)。

1.virtualpythonをインストールし、環境変数を設定

さらに、
virtualpythonをインストールしたディレクトリのsite-packagesディレクトリ
例:~/virtualpython/lib/python2.7/site-packages/
にsitecustomize.pyを設置し、

スクリプトの実行の際は呼び出すpythonのディレクトリを明示
例:~/virtualpython/bin/python

で無事に動くようになりました!

2011/8/31 水曜日

MacOSX のターミナルのフリーズ解消法

カテゴリー: — gabon @ 12:01:48

少々以前にMacbook Airを導入しましたが、
ターミナルでリモートサイトにsshで接続し、接続後しばらく放置しておくと、ターミナルがフリーズしたようにキー入力を受け入れなくなる状況に悩まされました。

OSX付属のターミナル(terminal)や iTermでも発生しますので、これは何か設定なのだろうと考えいろいろ探したのですが、海外のサイトに解決法がありました。

http://superuser.com/questions/98562/way-to-avoid-ssh-connection-timeout-freezing-of-terminal-tab

具体的には、
ホームディレクトリの .ssh/config にファイルを設置

中身は
Host *
ServerAliveInterval 240

です。すべてのサイトに適用するならこのように書けば大丈夫です。
感謝!

2011/4/13 水曜日

trim関数で全角の空白をとってはいけない

カテゴリー: — gabon @ 16:26:01

やはりtrimでは半角にするべきで、

trim ( $_POST['name'] , ”  ” ); //半角全角スペースとる
はよろしくないです(ダブルクォートには半角と全角スペースがはいっています)

一見うまくいくのですが、
特定の文字「香」が、入っていると削りたくない文字も削るもようです。

マルチバイト対応関数を使うべきなのですが、
しかし、mb_trimという関数は存在しないので、
正規表現で書いてあげるのが正解のもようです。

http://php.net/manual/ja/ref.mbstring.phpより

$string = preg_replace( “/(^\s+)|(\s+$)/us”, “”, $string );

2011/2/22 火曜日

phpで処理中にタイムアウトしてしまう場合

カテゴリー: — gabon @ 14:41:47

アプリの中で、
インポートやエクスポートについて、
サーバー側で時間がかかる処理をするとページが真っ白になったりして、タイムアウトをすることがあります。

こういう場合、php.iniを変更できる環境なら、

設定を変更し、
max_execution_timeを初期値の30からもっと大きい値にします。(今回は、5倍の150にしました)

2011/2/5 土曜日

ドコモの700番台や900番台のxhtmlをPHPで出すには

カテゴリー: — gabon @ 17:36:00

ドコモの700番台や900番台の世代用のxhtmlをPHPで
そのまま表示しようとすると、
スタイルの設定も画面に出てしまって解決に悩みました。

DoCoMo の iモード用サイトで CSS(スタイルシート) を使用する際の注意点に大変助けていただきました!

#– PHP の場合
header(”Content-type: application/xhtml+xml”);

のように書くそうで。。
大変助かりました。
3キャリアの場合や新しい世代の携帯でちゃんと動くか確認してくださいね!
(手持ちの端末docomo N07B, au SH0009では大丈夫でした。)

★ちなみに、docomoの904ぐらいの世代でもpng(8bit,24bit)は表示できないみたいですね。ユーザーにご迷惑をおかけしてしまってごめんなさい。。

apacheの現在の同時接続数を知るには

カテゴリー: — gabon @ 1:31:15

最近サーバの面倒もおおくみます。
同時接続数、きになりますよね。
>netstat -n | grep ‘:80′ | wc
116 696 10324

でしらべましょう。116がそれです。

2010/12/27 月曜日

zendFrameworkのデバッグのちょっとしたtips

カテゴリー: — gabon @ 17:33:30

zendFrameworkのコントローラのデバッグで、
コントローラにどんな値がきてるの?を知るには、

echo “”;
var_dump($this->_getAllParams());
echo “”;
exit();

が便利です。

また、そのコントローラーはどういうコードを継承してるの?は、

echo “”;
debug_print_backtrace();
echo “”;
exit();

が便利。index.phpからのはるかな旅が垣間見られます。

2010/12/7 火曜日

mysqlでreleaseは予約語

カテゴリー: — gabon @ 20:14:34

引き継いでメンテナンスをさせていただいてるシステムのデータベースのカラム名でreleaseとつけてあって、はまりました。

INSERT INTO table名 (release) VALUES(’hoge’);
で何度試してもsyntax errorが出てほとほと困りました(もうちょっと複雑なSQLですが)。

調べると、releaseは予約語で、こういう場合は、

INSERT INTO table名 (`release`) VALUES(’hoge’);
と、バッククオートで囲む必要があります。

みなさまがはまらないことを祈りつつ・・・

2010/10/30 土曜日

シェルスクリプトとphp

カテゴリー: — gabon @ 16:37:45

シェルスクリプトからphpを呼び出し、呼び出し結果によって、スクリプトの実行を制御したいことがあると思います。その場合、phpは実行結果を、戻り値で返さなければなりません。

以前なら、
うまくいったら、exit(TRUE);
ダメなら、exit(FALSE); 
と書いていたのですが、その場合、うまくいったら、1がもどることになり、ダメなら0がもどることになります。
これはlinuxの世界ではよろしくなく、
linuxの世界では、
0 が正常終了で、
0以外(-1や、1や128など)が異常終了を意味しますので、逆です。

ですから、php側では、
うまくいったら、exit(0);
うまくいかなかったら、exit(1); など任意のエラーコード
と書くべきです。

シェルスクリプト側の書き方ですが、
変数、$?  に呼び出したスクリプトからの結果コードが入ります。実際は、$?を見て制御するよりも簡単にかけます。

if ./hoge.php
  then echo “OK”
  else echo “NG”
fi
のように、if文の真は正常終了(phpのexit(0))になります。

おまけですが、
うまくいった場合に、次の処理を呼ぶような場合はよくあるかと思いますが、if文をネストするより、

./hoge.php && ./hoga.php

のように、&&で呼べば、前の処理が成功した場合に次の処理を呼ぶ、という書きかたができます。
(http://www.fireproject.jp/feature/bash/basic/if.html を参考にしました!)

2010/9/8 水曜日

携帯サイト(cakePHP+Ktai Library)のセッション設定

カテゴリー: — benton @ 17:31:43

クッキーはとりあえず無効に(使える場合と使えない場合とで場合分けした方がほんとはいいんだと思いますが)。

webroot配下の.htaccessに
php_flag session.use_cookies Off

Ktai Libraryを使ってる場合はktai_session.phpの設定が効いてしまうかもなので
// ini_set(’session.use_cookies’, 1);
ini_set(’session.use_cookies’, 0);

実際どの設定が効いているか見るには、適当なビューにini_get_all(’session’)を書いてみると良いかもです。

<pre><?php print_r(ini_get_all(’session’)); ?></pre>

セッションファイルが勝手に消えてしまう場合はガベージコレクションを確認してみると良いです。
http://www.php.net/manual/ja/session.configuration.php

session.gc_maxlifetime秒を過ぎると、
セッションの初期化過程で(つまり誰かがアクセスしてきたら)
session.gc_probability/session.gc_divisorの確率で
ガベージコレクションプロセスが始動する、
という形なので、表面的な現象だけからではなかなか分かりにくい。。

でもこれも.htaccessに書けば設定できます。
php_value session.gc_maxlifetime 秒数

次ページへ »

HTML convert time: 0.434 sec. Powered by WordPress ME