php-modeの続き。

php-mode-pearに関してコメントを貰ったんですが、スパム削除の際に間違って消しちゃったかも。 頑張ってもう少しphp-mode.elを見てみると、

  ;; PEAR coding standards
  (make-local-hook 'php-mode-pear-hook)
  (add-hook 'php-mode-pear-hook
            (lambda nil (set (make-local-variable 'tab-width) 4)) nil t)
  (add-hook 'php-mode-pear-hook
            (lambda nil (set (make-local-variable 'c-basic-offset) 4)) nil t)
  (add-hook 'php-mode-pear-hook
            (lambda nil (set (make-local-variable 'c-hanging-comment-ender-p) nil)) nil t)
  (add-hook 'php-mode-pear-hook
            (lambda nil (set (make-local-variable 'indent-tabs-mode) nil)) nil t)
  (add-hook 'php-mode-pear-hook
            (lambda nil (c-set-offset 'block-open' - )) nil t)
  (add-hook 'php-mode-pear-hook
            (lambda nil (c-set-offset 'block-close' 0 )) nil t)

タブ幅4でスペース4個?他はよくわからん・・・・。

.emacsにこんな感で常にPEARモードに。

(custom-set-variables '(php-mode-force-pear t))

久しぶりにPEARマニュアルをチェックしてみるとコーディング標準についてemacs用の設定まで書いてありました。

PEAR :: Manual :: 標準コーディング規約

インデント

空白 4 つのインデントを使用します。タブは使いません。 PEAR コードの編集に Emacs を使用する場合、indent-tabs-mode を nil に設定する必要があります。以下に、これらのガイドラインに基づき Emacs を設定するモードフックの例を示します(PHP ファイルを編集する際に これがコールされるようにする必要があります)。

(defun php-mode-hook ()
  (setq tab-width 4
        c-basic-offset 4
        c-hanging-comment-ender-p nil
    indent-tabs-mode
    (not
     (and (string-match "/\\(PEAR\\|pear\\)/" (buffer-file-name))
          (string-match "\.php$" (buffer-file-name))))))

俺もスペース派になろうかな?

wgetの話で気になる点が。

p0t: wgetの本当の良さ

この1年くらいはGETを使うことが多いです

$ GET http://go-pear.org/ | php -Cq

みたいな. ヘッダーとか見たり弄ったりもできます(wgetでもできるけど

投稿者 ELF : 2005年12月23日 02:46

Fedora Core(&Red Hat&CentOS)だと perl-libwww-perl ってのに入ってるみたいです > GET SSL使えないけど

投稿者 ELF : 2006年01月02日 10:20

GET!? 単にGETだと検索で見つけ辛いですがこの話でわかりました!

komagata@colinux:~$ apt-cache show libwww-perl
Package: libwww-perl
Priority: optional
Section: perl
Installed-Size: 984
Maintainer: Jay Bonci <jaybonci@debian.org>
Architecture: all
Version: 5.803-4
Depends: perl (>= 5.6.0-16), libnet-perl (>= 1:1.09) | perl (>= 5.8.1), libdigest-md5-perl, libmime-base64-perl (>= 2.1) | perl (>= 5.8), liburi-perl (>= 1.10), libhtml-parser-perl (>= 3.33), libhtml-tree-perl (>= 3.11)
Recommends: libmailtools-perl, libhtml-format-perl, libcompress-zlib-perl
Suggests: libio-socket-ssl-perl (>= 0.81-2)
Filename: pool/main/libw/libwww-perl/libwww-perl_5.803-4_all.deb
Size: 358498
MD5sum: 0f326bde0be84e234e9eb312e6a87400
Description: WWW client/server library for Perl (aka LWP)
 Libwww-perl is a collection of Perl modules which provides a simple
 and consistent programming interface (API) to the World-Wide Web.  The
 main focus of the library is to provide classes and functions that
 allow you to write WWW clients, thus libwww-perl said to be a WWW
 client library. The library also contain modules that are of more
 general use, as well as a simple HTTP/1.1-compatible server
 implementation.
Tag: devel::library, langdevel::perl, made-of::lang:perl, protocol::http, role::sw:shlib

Debian etchだとlibwww-perlつーかLWPに入ってるみたいです。

komagata@colinux:~$ ll /usr/bin/GET
lrwxr-xr-x  1 root root 11 2006-01-02 17:43 /usr/bin/GET -> lwp-request

GETはlwp-requestのシンボリックリンクかよ!

komagata@colinux:~$ ll /usr/bin/POST
lrwxr-xr-x  1 root root 11 2006-01-02 17:43 /usr/bin/POST -> lwp-request
komagata@colinux:~$ ll /usr/bin/HEAD
lrwxr-xr-x  1 root root 11 2006-01-02 17:43 /usr/bin/HEAD -> lwp-request

ついでにPOSTもHEADもあるみたいです。

komagata@colinux:~$ GET http://p0t.jp/google.php/PHP
レッツPHP!       http://php.s3.to/
PHP研究所 PHP INTERFACE   http://www.php.co.jp/
phpspot - PHPスクリプト/MySQL/掲示板/入門/サンプル/正規表現   http://phpspot.net/php/
PHP-J.com        http://www.php-j.com/
PHP: Hypertext Preprocessor (in Japanese)        http://www.geocities.jp/rui_hirokawa/php/
PHP SAMPLES &amp; TIPS   http://www.spencernetwork.org/
PHP: Hypertext Preprocessor      http://jp2.php.net/
komagata@colinux:~$ HEAD http://p0t.jp/google.php/PHP
200 OK
Connection: close
Date: Mon, 02 Jan 2006 09:05:59 GMT
Server: Apache/1.3.34 (Unix)
Content-Type: text/plain
Client-Date: Mon, 02 Jan 2006 09:06:06 GMT
Client-Peer: 59.106.13.181:80
Client-Response-Num: 1
X-Powered-By: PHP/4.3.10

使い易っ!!! GETやPOSTの一番簡単な方法かもしれない。GETしたらデフォルトはwgetみたいにファイルに保存じゃないでしょ!やっぱ標準出力でしょ!

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で問題無く動いた。よかったー!