emacsでのPHP開発についてgoogleではかなり情報が少なくて苦戦したのでメモ。

sudo apt-get install php-elisp

何よりPHPの関数補完が気になってたんですが、

php-mode-not-yet.png

not implemented yetかよ。

$ apt-cache show php-elisp
Package: php-elisp
Priority: optional
Section: text
Installed-Size: 144
Maintainer: Pontus Ullgren <pontus@ullgren.com>
Architecture: all
Version: 1.1.0-2
Depends: emacs21 | xemacs21 | emacsen
Suggests: php4 | php3
Filename: pool/main/p/php-elisp/php-elisp_1.1.0-2_all.deb
Size: 17644
MD5sum: 5f8372578d2bb63e5ad16b61310ddc3a
Description: Emacs support for php files
 Emacs major mode for php supporting syntax highlighting, indentation
 and good integration with html-statements.

sargeのphp-mode(php-elisp)はVersion1.1.0らしいので、SourceForgeで最新版を見に行ってみると1.2.0が出てました。しかもRelease Notesが、

Changes: Implemented php-show-arglist, C-. (Engelke Eschner) Implemented php-complete-function, M-tab (Engelke Eschner) Re-enabled # comment detection in GNU Emacs (Urban M?ller) Fixed some keybindings and default settings (Engelke Eschner)

ちょうどこのバージョンから関数補完ができるようになっているようです。 /usr/local/share/emacs/site-lisp/php-mode-120.elとして置いてM-x byte-compile-file。 PHPのHTMLマニュアルを取ってきて/usr/local/share/php/doc辺りに解凍。それを見て補完するらしいので.emacsにパスを設定。

;; php
(load-library "php-mode-120")
(require 'php-mode)
(add-hook 'php-mode-user-hook
            '(lambda ()
             (setq php-manual-path "/usr/local/share/php/doc")))

補完できたー!

中身を見てみるとたまらない変数とかあります。

(defcustom php-mode-force-pear nil
  "Normally PEAR coding rules are enforced only when the filename contains \"PEAR\"\
Turning this on will force PEAR rules on all PHP files." 
  :type 'boolean
  :group 'php)

PEARのコーディング規約守れちゃうのかよ。

  (if (or php-mode-force-pear
          (and (stringp buffer-file-name)
               (string-match "PEAR\\|pear" 
                             (buffer-file-name))
               (string-match "\\.php$" (buffer-file-name))))
      (run-hooks 'php-mode-pear-hook))

設定してなくてもpearフォルダ以下のphpファイルは自動的に? これ以上はlispがわからん。

アンダーカレント  アフタヌーンKCDX

ちょうど1冊なので気軽に読めます。 連載時と違ってまとめて読むとラストに向けての盛り上がりがグワッときて良かった。(少ない語彙)

PHPサイバーテロの技法―攻撃と防御の実際

“PHP サイバーテロの技法”買ったっ!とてもためんなります。 今までScript InsertionというやつのことをXSSだと思ってたな、とか勉強になりつつ風呂で読んでたんですが、CSRFのところでこう書いてある。

ここではもっとも簡単な対策を施します。いわゆる「リファラーチェック法」です。

(中略)

このリファラーチェック法に対する批判は2つあります。1つは「リファラーは偽装可能である」というものです。ただ、この批判は的はずれです。よく考えればわかると思いますが、CSRFは権限保持者自身が踏むものです。偽装する理由がありません。また、リファラーを第三者が書き換えることもできませんので、チェックとしては十分、有効に機能します。もう一つの批判は、リファラーを送出しないブラウザでは、正常な操作も行えない、というものですが、これは当たっています。現実に、リファラーを送出しないことで守られる個人情報(具体的には検索エンジンへの検索文字列等)も確実にありますので、あえてリファラーを切っている人も少なくないでしょう。それを補う方法については、066ページで解説します。

わざわざサンプルまで作ってみた身としては見逃せない!リファラーチェック法なんかより以前検証した高木センセのセッションIDを渡す方法の方がいいんじゃないんだろうか。この066ページというのもPOST利用法やパラメータを全部セッション渡しする方法やワンタイムトークンが紹介されているだけだった。

ググッてみたけどこの本にそういう指摘が無いからもしやおれの理解が間違ってる?

PHP サイバーテロの技法 CSRF - Google 検索

ref: CSRF対策俺ルール2 ref: クロスサイトリクエストフォージェリ(CSRF)の正しい対策方法

naoyaのはてなダイアリー – GNU screen いろいろまとめ。

先日人力検索で GNU screen の設定TIPSについて質問してみたところ、かなーり役立つ設定とかをたくさん教えてもらうことができました。

苦労してやっと最近coLinux上での開発環境がそろってきたところ。screenって家と会社でそれぞれ別のcoLinuxつかってるとありがたみが無い(PC終了でcoLinuxも終了するから)・・・。高林さんのページとかを見てても思うんですが、みんなUNIXマシンをどこに置いてるんでしょうか?

自分の端末とは別に開発用のサーバを立てている?立てているとして、それは自宅マシン?好き勝手できる環境ということでどこかにハウジングしている?研究室?会社?

何が一般的なのかな?

最近思ったんですが、Webサービスもshell上でパイプとかで繋げられたら楽なのに。 入力は標準入力とPATH_INFOをパラメータとして出力はtext/plainの行指向テキストでいいじゃないか。

理想としてはこんな風にできたら素敵だ。

$ export LANG=/bin:/usr/bin:http://foo.com
$ cat foo | foo.php | grep -v php

個々のコマンド(というかWebサービス)は作るのは簡単そうだがそもそもshellがHTTP経由でPATHを探しに行くようにはなってない。けどもしかしたらそういうshellはあるのかもしれない。

JavaScriptとかでもこんな感じで同じWebサービスをパイプで繋げて書けたら楽だ。(パラメータはスペース区切りの変わりにPATH_INFOで””/”“区切り)

result = shell("http://foo.com/foo.php | http://foo.com/grep.php/var")

試しに文字を第1パラメータに取ってgoogleの検索結果を行区切りplain textで出すものを作ってみた。

””PHP”“で検索した結果。 http://p0t.jp/google.php/PHP

レッツ<b>PHP</b>!    http://php.s3.to/
<b>PHP</b>研究所 <b>PHP</b> INTERFACE    http://www.php.co.jp/
phpspot - <b>PHP</b>スクリプト/MySQL/掲示板/入門/サンプル/正規表現 <b>...</b>    http://phpspot.net/php/
<b>PHP</b>-J.com    http://www.php-j.com/
birding.com forums: Penis Enlargement Device that actually works !    http://www.birding.com/forums/showflat.php?Number=1985
birding.com forums: Buy Generic Phentermine &amp; Adipex Online    http://www.birding.com/forums/showflat.php?Number=1960
<b>PHP: Hypertext Preprocessor</b> (in Japanese)    http://www.geocities.jp/rui_hirokawa/php/
<b>PHP</b> SAMPLES &amp; TIPS    http://www.spencernetwork.org/
DokiDoki <b>PHP</b>    http://dokidoki.lantecweb.net/
<b>PHP: Hypertext Preprocessor</b>    http://jp2.php.net/

こういうplain text見るとshell scriptとかに渡したくならないですか?(異常者)

Wgetを使おう的ページ

□なぜWgetか?

左手だけでコマンドが打てる wgetという文字は左手だけで打てる。

wgetの核心に触れちゃったよ。

TOSHIBA ポップアップトースター シルバー EHT-2A(S)

欲しかったポップアップトースターを購入。 小麦の値段上がるくらい食ってやりますよ!

p0t: 未coLinux

通りすがりの者です。

私も同じ症状になりましたが

boot.ini の

/NoExecute=OptIn  を /NoExecute=AlwaysOff にすると、動くようになりました。

http://sourceforge.net/mailarchive/message.php?msg_id=13867156

投稿者 yoshi : 2005年12月14日 21:54

動いたー!通りすがりの人の辻アドバイスによって会社でもcoLinuxが無事動きました。

colinux_emacs.png

emacsもUTF-8で問題無く動いた。よかったー!

Chris Shiflett: Zend Framework Webcast

The core focus of the framework is Extreme Simplicity. In order to achieve this, it must be very easy to use. This doesn’t just mean that it must be simple to write code – it also needs to be useful in existing PHP environments without the need for external libraries or custom modifications. In many cases, this means that features must be implemented in pure PHP, so that they’re available everywhere. For example, the search component is a pure PHP implementation of Lucene, and the front controller doesn’t rely on a sophisticated collection of mod_rewrite rules.

Zend Frameworkの内容が発表。すごいシンプルでかなり素性が良さそう! mod_rewriteに頼らないURIマッピングとかControllerには依存しない色んなComponentとか驚くべき新機能!って感じじゃないけど正直好感が持てる!PHPで実装されたLuceneは日本語平気なのかとか興味は尽きません。

blog.bulknews.net

Google Homepage のモジュール (Widget) を定義できる API が公開 というわけで、さっそく Bulkfeeds のサーチボックスをつくってみました。

これはスバらしい。 最近、何故かmanが大好きなのでJM Projectの翻訳されたマニュアルの検索用のWidgetを勝手に定義してみました。

http://p0t.jp/googleljms.xml

googlelinuxmanualsearch.png

おお、日本語マニュアルが検索し放題!たまらない!(異常者)