CEFA::Blog – set user idとsticky bitUNIXについてのテキストを作成している同僚から標記の話題が出たのでメモです。走り書きみたいな感じなのでワケが判らない文章になるかも。詳しく知りたい方はman chmodを実行する事をお勧めします。
UNIXのパーミッションset user idとsticky bitについていままで見た中で一番判りやすい説明な気がしました。
CEFA::Blog – set user idとsticky bitUNIXについてのテキストを作成している同僚から標記の話題が出たのでメモです。走り書きみたいな感じなのでワケが判らない文章になるかも。詳しく知りたい方はman chmodを実行する事をお勧めします。
UNIXのパーミッションset user idとsticky bitについていままで見た中で一番判りやすい説明な気がしました。
safariをちょろっとみてたら、
- Ubuntu Hacks: Tips & Tools for Humanizing Linux (Hacks)
- O’Reilly Media(2006-06)
- (著)Kyle Rankin
- (著)Jonathan Oxer
- (著)Bill Childers
- 定価:¥ 3,734
- 新品価格:¥ 3,173
- ASIN:0596527209
ちょwwwUbuntu Hackswwwwwww オライリーからそんなマニアックなの出てんのかよ。全然話聞かないよ! これは怪しい、おれが知らないだけで世間では大流行?ということで調べてみました。まず、は“Ubuntu Linux”これが何て読むのかわからねーんだよ!
はてなダイアリー – Ubuntu LinuxとはDebianをベースにしたディストリビューションの一つ
- ふりがな:うぶんつりなっくす
なるほど、うぶんつ。人の名前?
Ubuntu-この新しいLinuxディストリビューションはちょっと違う – ZDNet JapanUbuntuのこの哲学は、他のLinuxディストリビューションに対してよく聞かれる不満を解消するものだ。なかでも以下の点はとくに重要といえる:
- 定期的なリリーススケジュール
- 一定したメンテナンス期間(この場合は18カ月)
- 無償で利用できること
Ubuntu LinuxはDebianベースのデスクトップ向けディストリビューションだそうです。Debianとの重要な違いは ”定期的なリリース”と“デスクトップ向けにインストールCDやパッケージが手っ取り早い状態になってること”なようです。基本的にDebianでも一手間かければ同じ状態になる感じだそうです。
Debian最高!でも、
デスクトップで使うには軽く面倒・・・ → CentOS行こか!
って人ニーズってこと!? それと個人/趣味使用ならカスタマイズが醍醐味!もありだけど社内のOSとして導入なんつー場合にはこっちの方が良さそう。大抵のDebianパッケージはそのまま動くらしいです。
InformationWeek | Google | Google Confirms Using Ubuntu Linux, Won’t Say Why | 1 31, 2006Google Inc. on Tuesday confirmed that it is using Ubuntu desktop Linux technology internally, but remained tightlipped about its purpose.
Googleが社内でUbuntuをデスクトップで利用?じわじわ来てんのかな!?
変数の状態を表示するdBugの紹介 – HotPHPPER Newsきれいなprint_r()系の奴。PEAR Var_Dumpとかと違って気になったのはresource型も展開してるとこ。どうやってるんだろ。
switch(get_resource_type($var)) { case "fbsql result": case "mssql result": case "msql query": case "pgsql result": case "sybase-db result": case "sybase-ct result": case "mysql result": <strong>$db=current(explode(" ",get_resource_type($var)));</strong> $this->varIsDBResource($var,$db); break; case "gd": $this->varIsGDResource($var); break; case "xml": $this->varIsXmlResource($var); break; default: echo get_resource_type($var).$this->closeTDRow(); break; }
なるほど・・・。
resouce型一覧に無いから勘だけど、
*** dBug.php.bk 2006-02-15 07:55:27.000000000 +0900 --- dBug.php 2006-02-15 07:55:10.000000000 +0900 *************** *** 262,267 **** --- 262,268 ---- case "sybase-db result": case "sybase-ct result": case "mysql result": + case "sqlite result": $db=current(explode(" ",get_resource_type($var))); $this->varIsDBResource($var,$db); break;とかしたらsqliteもいけそ。
Kazuho@Cybozu Labs: mod_webdevmod_webdev は、一言で言うと、条件つき mod_rewrite です。特殊なクッキーを伴ったリクエストについてのみ、ファイル名を書き換えることで、開発者が開発中のファイルをテストすることができます。
気味が良いツール。(そんな言葉あるのか知らんが) なんか何でも一から自分の頭で考える人感がしますよ。 そういう人は信頼できるなーって思いました。
p0t: XML食わず嫌いPEAR::XML_RPCはHTTP/1.0なのでバーチャルホスト相手はだめなんですよね SerendipityではHTTP_Requestも併用したもので実装しました パッチ作ってコミットさせてもらいました http://sourceforge.net/mailarchive/forum.php?thread_id=7556980&forum_id=31275
投稿者 ELF : 2006年02月10日 23:33
な、なんだってー! (長くなるのでエントリーで返信)
XML-RPC SpecificationOverview
XML-RPC is a Remote Procedure Calling protocol that works over the Internet.
An XML-RPC message is an HTTP-POST request. The body of the request is in XML. A procedure executes on the server and the value it returns is also formatted in XML.
Procedure parameters can be scalars, numbers, strings, dates, etc.; and can also be complex record and list structures.
XML-RPCの仕様には単にHTTP-POST requestとしか書いてないっぽい。ということはServerもClientも1.1対応してた方がいいけど別に必須ってわけじゃないってことかな?
PEARの方を見てみる。
[cvs] View of /pear/XML_RPC/RPC.php
/**
* Transmit the RPC request via HTTP 1.0 protocol
*
* @param object $msg the XML_RPC_Message object
* @param int $timeout how many seconds to wait for the request
*
* @return object an XML_RPC_Response object. 0 is returned if any
* problems happen.
*
* @see XML_RPC_Message, XML_RPC_Client::XML_RPC_Client(),
* XML_RPC_Client::setCredentials()
*/
function send($msg, $timeout = 0)
{
if (!is_a($msg, 'XML_RPC_Message')) {
$this->errstr = 'send()\'s $msg parameter must be an'
. ' XML_RPC_Message object.';
$this->raiseError($this->errstr, XML_RPC_ERROR_PROGRAMMING);
return 0;
}
$msg->debug = $this->debug;
return $this-><strong>sendPayloadHTTP10</strong>($msg, $this->server, $this->port,
$timeout, $this->username,
$this->password);
}
ん、sendPayloadHTTP10()・・・? (XML-RPCで送る中身のことをペイロードっていうらしい)
/**
* Transmit the RPC request via HTTP 1.0 protocol
*
* Requests should be sent using XML_RPC_Client send() rather than
* calling this method directly.
*
* @param object $msg the XML_RPC_Message object
* @param string $server the server to send the request to
* @param int $port the server port send the request to
* @param int $timeout how many seconds to wait for the request
* before giving up
* @param string $username a user name for accessing the RPC server
* @param string $password a password for accessing the RPC server
*
* @return object an XML_RPC_Response object. 0 is returned if any
* problems happen.
*
* @access protected
* @see XML_RPC_Client::send()
*/
function sendPayloadHTTP10($msg, $server, $port, $timeout = 0,
$username = '', $password = '')
{
(略)
うわっ、ホントだよ。 おれも上鍵さんのパッチをパクろ・・・。
SourceForge.net: php-blog-devs
$req = new HTTP_Request( "http://".$service["host"].$service["path"]);
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addHeader( "Content-Type", "text/xml");
$req->addRawPostData( $message->payload);
$http_result = $req->sendRequest();
michael schurter >> Blog Archive >> Thank God for PHP_CompatThank God for PHP_Compat. Here’s how easy it is to use file_put_contents() in PHP4:
file_get_contents()が大好物なおれですが、そうなんですよ、PHP_Compatの何がThank Godなのかってfile_put_contents()がPHP4で使えることに決まってんだろ!ちったあ頭使え!コノ野郎!
fakemac:~% php -r 'require "PHP/Compat/Function/file_put_contents.php";
file_put_contents("foo.txt", "unk");'
fakemac:~% cat foo.txt
unk
オー ボーイ!
blogがらみの仕事でWeblogUpdates.Pingを飛ばす必要があったので毛嫌いしていたPEAR XML_RPCを使ってみました。
使ってみると・・・いいじゃないか!
デフォルトでインストールされるし! XML嫌いとか生のPOST厭だとかいってんじゃねーよ! > おれ APIとかすげー作ってみたくなってきた。
require_once("Net/URL.php");
require_once("XML/RPC.php");
/**
* WeblogUpdates.Pingを飛ばす
*
* @param string $ping_server_url PingサーバのURL
* @param string $blog_name blog名
* @param string $blog_url blogのURL
* @return boolean Ping送信に成功したらTRUE、失敗したらFALSE
* @see Net_URL
* @see XML_RPC_Client::send()
*/
function sendWeblogUpdatesPing($ping_server_url, $blog_name, $blog_url) {
$url = new Net_URL($ping_server_url);
$msg = new XML_RPC_Message('weblogUpdates.ping', array(new XML_RPC_Value($blog_name), new XML_RPC_Value($blog_url)));
$cli = new XML_RPC_Client($url->path, $url->host, $url->port);
$resp = $cli->send($msg);
if (!$resp) {
trigger_error("sendWeblogUpdatesPing(): ".$cli->errstr, E_USER_NOTICE);
return FALSE;
}
if ($resp->faultCode()) {
$msg = "sendWeblogUpdatesPing(): Failed to send ping. Fault Code: ".
$resp->faultCode()." Fault Reson: ".$resp->faultString();
trriger_error($msg, E_USER_NOTICE);
return FALSE;
}
return TRUE;
}
p0t: 地味コードPHP::Compatを使わぬとは! PEARへの愛が足りぬ!
投稿者 halt : 2006年02月07日 14:52
haltさんの叱咤によりPEAR愛が高まったというかPHP::Compatに俄然興味が出たので調べてみました。
PHP::Compatのcompatはcompatibility(互換性)の略で、後のバージョンで新しく出来た関数や定数をヘボイバージョンにも提供してくれる素晴らしいライブラリだそうです。 特に前述のPATH_SEPARATOR(: or ;)やDIRECTORY_SEPARATOR(/ or \)やPHP_EOL(\n or \r\n or \r)などの無いと激しく萎える存在を提供してくれるのでありがたい。関数も単体でloadできるのでシンプルで良い。 アプリに手を入れずに古いPHPで動かしたい場合にiniのauto_prepend_fileディレクティブにこれらの読み込みファイルを設定してみるっつーのも試してみる価値ありそう!
ついでに気になったPHP_CompatInfoも調べてみました。
PEAR :: Package :: PHP_CompatInfo>> Description PHP_CompatInfo will parse a file/folder/script/array to find out the minimum version and extensions required for it to run. Features advanced debug output which shows which functions require which version and CLI output script
こっちはPHPのコードを調べてバージョンいくつ以上で動くのか調べてくれるらしい。試しにmojavi-all-classes.phpを調べてみました。
fakemac:~/src/mojavi-2.0.0% cat ~/project/php-examples/compat/compatinfo.php
#!/usr/bin/env php
<?php
require_once("PHP/CompatInfo/Cli.php");
$ci = new PHP_CompatInfo_Cli();
$ci->run();
?>
fakemac:~/src/mojavi-2.0.0% ~/project/php-examples/compat/compatinfo.php --file=mojavi-all-classes.php
+------------------------+---------+------------+------------------+
| File | Version | Extensions | Constants/Tokens |
+------------------------+---------+------------+------------------+
| mojavi-all-classes.php | 5.0.0 | session | implements |
| | | | interface |
| | | | protected |
| | | | private |
| | | | __LINE__ |
| | | | final |
| | | | clone |
| | | | throw |
| | | | catch |
| | | | abstract |
+------------------------+---------+------------+------------------+
5.0.0?んなこたぁないハズ。おれの理解が間違ってるのかも!