ブログトップ 記事一覧 ログイン 無料ブログ開設

それはそれ。これはこれ。 このページをアンテナに追加 RSSフィード

2003 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 03 | 04 | 05 | 06 | 07 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 11 | 12 |
2013 | 01 | 02 | 04 | 05 | 07 | 08 | 10 | 11 | 12 |
2014 | 02 | 03 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 05 | 06 | 07 | 11 |
2016 | 07 |
2017 | 01 | 03 | 06 | 07 | 11 |
2018 | 05 | 07 |

2006-05-29(月)

[]PukiWikiURLの整形(その1) PukiWikiのURLの整形(その1)を含むブックマーク PukiWikiのURLの整形(その1)のブックマークコメント

PukiWikiバージョンアップしたついでに、URLの整形をやってみた。http://host/?Page を http://host/Page/ または http://host/Page.html という形式にする。後者はちょっとあざといので、前者の形式を目指す。

調べてみると方法は2通りあって、PATH_INFO を使ってページ名を受け取る方法と、mod_rewriteを使ってもとの?を使った形式に書き換える方法。

PATH_INFO を使う方法だと、http://host/index.php/Page/ のようにURL中にPHPファイル名を出さざるを得ないので、まずは mod_rewrite を使う方法を考えた。

RewriteRule ^(.*[^/])/?$ index.php?$1 [L]

ただし、全URLを書き換えると、image や css 、js 等のファイルをそのまま示すURLがおかしくなってしまうので、

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*[^/])/?$ index.php?$1 [L]

のようにファイルディレクトリで無いときだけ書き換えるようにする。そうすると今度は、前回 id:otn:20060523 id:otn:20060525 に書いたような、http://host/edit.php/Page/ の時に書き換え対象にならない。逆にこの場合は、URL中にPHPファイルが入るので、PATH_INFOが使える。


というわけで、両方の方法を併用する必要がある。どうせ、PATH_INFOを見るんだからと、

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

にしてみたが、こうやると、http://host/Page/ の時に、"No input file specified" というエラーが出る。このエラーメッセージで検索してみると、IISの場合とか、DocumentRootが違っていたとかいう情報ばかりで、よくわからない。PHPcgiとして動いているせいではないかと思って、apacheモジュールとして動いているサーバーでやってみるとうまく行く。どうもcgi環境であるせいのようだ(未確認)。


あらためて要件を整理すると、

(1) さくらインターネットの共用レンタルサーバーで、PHPはSuExecのcgiで稼動する

(2) http://otnx.jp/CMD/Page/ および http://otnx.jp/CMD/edit.php/Page/ というURLでPageにアクセスできること

(3) 階層になったページ名は、http://otnx.jp/CMD/Dir%2FPage/ でなく、http://otnx.jp/CMD/Dir/Page/ と / を区切りにする


(2) の後半は表に出ないURLなので、http://otnx.jp/CMD/edit.php?Page でもいいのだが、URLを生成するスクリプトの都合を考えると、統一された形式がいいだろう。

つづく。

トラックバック - http://d.hatena.ne.jp/otn/20060529

2006-05-25(木)

[]PukiWiki1.4.6 CGI編集認証(後編) PukiWiki1.4.6 CGIの編集認証(後編)を含むブックマーク PukiWiki1.4.6 CGIの編集認証(後編)のブックマークコメント

前回 id:otn:20060523 の続き。

結局、旧サイトの記事に書いたのと同じ方式を取る事にした。

(1) index.php をコピーして edit.php を作る
(2) .htaccess で edit.php にBasic認証を掛ける
(3) edit.php 内に、define('EDIT_OK','yes'); を記述
(4) pukiwiki.ini.php の $script = 'http://hostname/index.php'; の後に
  if(defined('EDIT_OK')) $script = 'http://hostname/edit.php'; を追加
(5) lib/auth.php の中の function basic_auth の中の
    if (empty($user_list)) return TRUE; // No limit
    の後に、
    $auth_flag = FALSE;
    if(defined('EDIT_OK') and isset($_SERVER['REMOTE_USER']))
    {
      $_SERVER['PHP_AUTH_USER'] = $_SERVER['REMOTE_USER'];
      $_SERVER['PHP_AUTH_PW'] = 'pass';
    }
    を追加。
(6) pukiwiki.ini.php の $auth_user 定義ではパスワードをすべて 'pass' にしておく
    もちろん実際のパスワードは、edit.php のBasic認証で設定したものを入力する

と、(5)のコードを挿入する箇所以外は1.4.4の時と同じだ。

これでうまくいっている(はず)。


なお、実際の私のサイトではedit.phpという名前ではないので、アクセスしても無駄です。皆さんも実際はどうせお気に入りに入れるんだろうから覚えられない意味の無い名前にしておきましょう。

2006-09-09:追記

編集ミスがあり、動作しないコードになってました。yktさんのコメントで教えていただき、修正しました。

yktykt 2006/09/09 03:24 お疲れ様です、yktです。
こちらにも記述しておきますね。
(5)において、
if(defined(’EDIT_AUTH’) and isset($_SERVER[’REMOTE_USER’]))

if(defined(’EDIT_OK’) and isset($_SERVER[’REMOTE_USER’]))
とすることで無事動きました〜!

otnotn 2006/09/09 03:42 わー、すいません。旧サイトブログではEDIT_OKと書いたんですが、実は自分の環境では、EDIT_AUTHにしてます。それが混ざっちゃいました。

本文訂正の上、コメントは整理します。

2006-05-23(火)

[]PukiWiki1.4.6 CGI編集認証(前編) PukiWiki1.4.6 CGIの編集認証(前編)を含むブックマーク PukiWiki1.4.6 CGIの編集認証(前編)のブックマークコメント

「CMD.EXE TIPs」http://otnx.jp/CMD/ で使っているPukiWikiだが、レンタルサーバーのPHPバージョンアップのため、現在の1.4.4では動かなくなるので、バージョンアップしないといけない。期限は5月末。で、先週末からようやく着手。

id:otn:20041113 に、

pukiwiki編集を特定ユーザーに限る認証機能だが、apacheBasic認証機能を使っているため、PHPcgiとして実行されるときには使用できない。これを別の方法で認証を行うよう変更したので忘れないように書いておく。ver1.4.4だがおそらく他のバージョンでも可能でしょう。

ということを書いたが、旧サイトの記事に、1.4.6ではどうするんだというコメントを頂いている。「おそらく他のバージョンでも可能でしょう。」とは書いたものの、異なるバージョンで「全く同じ修正で」出来る訳は無い。「同じ考え方が使えるだろう」ということだ。


1.4.5だと、PKWK_READONLY という定数で、まとめて編集禁止にすることが出来るので、全ページ一括で編集認証を掛けるなら簡単だ。

(1) index.php では PKWK_READONLY は 1 にする
(2) index.php をコピーして、edit.php をつくり、それでは PKWK_READONLY は 0 (または未定義)にする
(3) .htaccess で edit.php にBasic認証を掛ける
(4) pukiwiki.ini.php の $script = 'http://hostname/index.php'; の後に
    if(!PKWK_READONLY) $script = 'http://hostname/edit.php'; を追加
(5) pukiwiki.ini.php では、 $edit_auth = 0; にしておく

これで、index.php 経由では全ページ編集禁止で、edit.php 経由だと全ページ編集できる。


ただし、これだと、#article や #pcommnet その他のページを変更するプラグインも無効になってしまうので、これらを使う場合はそれぞれのプラグインの、「if (PKWK_READONLY)」のところを、「if (0)」と書き換える必要がある。


ということで、やはり前回と同様の修正を考えたほうが良さそうである。

つづく。

[][]はてなダイアリーの編集仕様変更 はてなダイアリーの編集仕様変更を含むブックマーク はてなダイアリーの編集仕様変更のブックマークコメント

見た目も変わったけど、なんと編集画面のデータを20秒毎にPC側にバックアップする仕組みがついた。

「これはもしや、Cookieに覚えさせているのか」と思ったけど、違うようだ。ActiveXを有効にしないと働かない。何のことは無いFlashである。

保存先は、%USERPROFILE%\Application Data\Macromedia\Flash Player\#SharedObjects\なんとか\d.hatena.ne.jp\hatena-diary-edit.sol

http://d.hatena.ne.jp/otn/ の下ではActiveXを有効にするように設定しておこう。

2006-05-17(水)

[] PHPで嵌まる  PHPで嵌まるを含むブックマーク  PHPで嵌まるのブックマークコメント

PerlPHPレガシーだという考えだけど、ちょいと気楽に書くのには楽。で、

$f=fopen('filename','r);
while( !feof($f) ) {
 。。。
}

というコードで、ファイル存在しないときに、fopenがエラーのため $f がFALSE になって、それを引数にしている feof もエラーになって FALSE。while 条件はそれを ! しているため TRUE になって無限ループ発生。

ちゃんとエラーチェックしないからだという突っ込みがあるでしょうが、実はしてました。

$f=fopen('filename','r) or dir('fopen');

いや、しているつもりでした。d i と打つと、その次はつい r と打ってしまう。

opendirのエラーメッセージが出たので原因にはすぐ気づいたんだけど、そのときは遅し。これからは die じゃなくて exit と書くことにしよう。


feof()を使うのは、リファレンスの fgets() のところにあるサンプルに倣ったのだけど、

while( $line=fgetss($f,99) ) {

にすればよかったのかな?入力文字が 0 だったりすると駄目かと思ったけど、改行がくっつくので、「ファイルの最後の行が0でその後に改行が無い」という通常は心配しないケースを除けばOKかな?と思ったけど、

<tag>0<tag2
>1<tag3>

のようなケースがあると駄目。と、ここで気づいたけど、fgetss()ってタグの途中で改行があると駄目なのか。

トラックバック - http://d.hatena.ne.jp/otn/20060517

2006-05-13(土)

[]for /f のバグ for /f のバグを含むブックマーク for /f のバグのブックマークコメント

NIFTY掲示板より。また for /f のバグである。Win2000/SP4、WinXP/SP1,SP2で出る。2003は未確認。

コマンドプロンプトを開いて、このスクリプト連続実行すると、不思議な現象が起こる。

@echo off
for /f "usebackq tokens=1-4" %%A in ('aa bb cc dd') do (
 echo %%A,%%B,%%C,%%D
)

本来は、

aa,bb,cc,dd

と表示されるはずだが、数十回実行しているうちに、

aa,bb,cc,dd
ファイル & が見つかりません。

等と、「ファイル 文字化け文字列 が見つかりません」と出る。' ' 内の文字列を変えたり、rem 文を追加したりするといろいろとパターンが変わるが、どうもメモリ中のゴミコマンドとして実行しようとしているようである。


usebackq はNT4になく2000から追加された機能だ。NT4では ('....') はコマンド実行しかなかった。2000でusebackqにより、1行文字列からの読み取りのケースが増えたが、おそらく ' ' だとループしようとして、ループの2回目でusebackqのフラグを参照せずにコマンドを実行しようとしてしまうのではないか。


回避策としては、文字列からの読み取りの時はusebackqを使わなければ良い。または、

@echo off
for /f "usebackq tokens=1-4" %%A in ('aa bb cc dd') do (
 echo %%A,%%B,%%C,%%D
 goto next
)
:next

と、2回目以降のループを回らなければ良い。

2009-11-12追記:

エラーメッセージからして、「コマンドとして実行しようとしている」じゃなくて「ファイル名として、そのファイルから読もうとしている」ですね。

あと、usebackq を使わなくても起こる場合があるようです。この場合も回避策は、上に書いた通りgoto nextを入れること。

2006-05-08(月)

[][]「カンブリア宮殿「カンブリア宮殿」を含むブックマーク 「カンブリア宮殿」のブックマークコメント

ゲストミクシィ笠原氏とはてな近藤氏へ、村上龍小池栄子インタビュー

mixiの紹介はいいとして、はてなの紹介が人力検索だけだったのはいいのかなあ。あと、女子大生百人(SNS"リアルキャンパスパーク"のメンバ)からの質問の中で、ホリエモンについての質問が、質問だけ放送されて返答が放送されなかったのは編集ミス?生放送じゃないのに。この質問だけ質問者の紹介が無かったし。

ところで、彼らを「ネット第三世代」と呼ぶのは一般的なのか?孫正義三木谷堀江を世代を分ける必然性がよく判らない。確かに年齢や時期や成功の規模が違うけど、逆にそれだけの違いしかない。それって世代の違いじゃないよね。


それからmixi会社名はイーマーキュリーじゃないの?と思ってサイトを見てみると2月に改名してました。でも仮名の「ミクシィ」って実は変。「シ」は「い段」なので小さい「ィ」を続けるのは間違い。小さい「ァィゥェォャュョ」は直前の字と一体化して一拍の音になるのが正しい日本語表記なので(「ッ」は違うよ)、一拍なら「ミクシ」だし二拍なら「ミクシイ」か「ミクシー」が正しい。まあ誤用というより視覚効果を狙ってわざと変な表記にしてるんでしょう。


番組の話に戻って、近藤氏のほうがしゃべりにメリハリがあって勝ってましたね、多分。せっかく女子大生百人呼んだんだから投票させればよかったのに。まあ番組的にはまずいか。

mixiユーザーの紹介、はてな会社の紹介がメインというのも対照的で、これはたまたまではないだろう。近藤氏の採用の時にブログを見るというのが面白かった。スピードと実装重視はやっぱりね。それから、mixiを作った経緯でorkutのことが出てこなかったけど、本当に知らずに作ったのだろうか???

あと、最後の、小池「お二人はご結婚されてるんですか?」村上「それってセクハラじゃないのかな」が受けました。


村上龍が「ネットの向こう側」と言ってたけどやっぱり「ウェブ進化論」を読んでいるのか。あと座右の銘が「明日出来ることを今日するな」というのがちょっと意外。

この番組は初めて見たけど、番組名の由来が面白いね。収録のネット中継とかも。先週の竹中平蔵のも見たかったな。

トラックバック - http://d.hatena.ne.jp/otn/20060508

2006-05-06(土)

[]ダ・ヴィンチ・コード ダ・ヴィンチ・コードを含むブックマーク ダ・ヴィンチ・コードのブックマークコメント

映画化で再び話題になっているダ・ヴィンチ・コード。約1年前に友人から借りて読んだけれど、寝る前に少しずつ読んでいたので、読み終わるのに一ヶ月近くかかってしまった。

今から考えると、徹夜してまで読みきるだけの面白さが無かったということか。

と言っても、決して面白くないわけではなく、キリストにまつわる知らないことが一杯書いてあった。しかし、文章の行間から「ハリウッドさーん、映画化してくださーい」というメッセージのにおいがぷんぷんする。念願かなって映画化され作者としては万々歳であろう。


主人公の男女が謎を追うわけだが、これが聖書に隠された謎でもダヴィンチの作品に隠された謎でもなく、追うのは現代人が宝の隠し場所を秘すために考えた暗号の謎である。このあたりが、歴史ミステリとして捉えるとすると物足りないというか、歴史を題材にはしているけど歴史ミステリではない。まあ、別に歴史ミステリである必要は無いし、ミステリとして必要な謎解きやどんでん返しもちゃんとあるので、悪い作品ではない。文庫化もされたし、キリストに興味のある人は読むべき本といえるだろう。


構造が似た作品で思い出すのは、「猿丸幻視行」。1980年江戸川乱歩賞作品なので26年前の作品である。これも、いろは歌に隠された神宝をめぐる謎を男女(折口信夫と謎の一族の女)が追う話。こちらが追うのは現代の謎ではなく本物の歴史の謎である。また作中で柿本人麻呂と猿丸太夫の謎にも触れているが、これもダヴィンチ作品の謎がサイドストーリーになっているダヴィンチコードに似ている。エンディングも同じような終わり方。

まあ、ダン・ブラウン井沢元彦に“インスパイヤ”されたのでは?というところまでは似ていない。

トラックバック - http://d.hatena.ne.jp/otn/20060506

2006-05-05(金)

[][]Google AdSense をやってみる Google AdSense をやってみるを含むブックマーク Google AdSense をやってみるのブックマークコメント

しばらく前に「ウェブ進化論」を読んでから、Google AdSense をやってみたくなっていたのだが、はてなダイアリーの無料コースでは出来ない。さて、どうするかということで、

[案1] 別のブログサービスに乗り換える
[案2] otnx.jp のサイトに自分でMTtDiary等でブログを立ててそこに移行する
[案3] はてなダイアリーの有料オプションを使う
[案X] やっぱりしない

という4案でしばらく考えていたのだが、はてなは気に入っており、また移行も面倒ということで案1は無し。案2も、カスタマイズすればはてな同様の機能に出来ると思うけど、移行の手間以上にカスタマイズの手間がかかる。

ということで、案3は有料で多分AdSenseでも足が出ると思われるが、自分の休日時給相当費用を考えるとおそらく一番安上がりで、また、AdSenseがどんなものかやってみて解れば、いつでも簡単にやめて元に戻せるというメリットもある。

有料オプションで色々機能があるけど、Amazonアフィリエイトはすでに自分のidにしているので、Google AdSenseカウンター機能位しか嬉しい点は無いけど、mixiプレミアムと比べるとまだまし。


で、設置してみたのだが、あんまり関係ある広告が出てない気がする。こんなものなのかなあ。しばらく様子見。


それはそれとして、「ウェブ進化論」であるが、出た当初、Web2.0技術解説本かと思ってしばらく手に取らなかったのだが、3月中頃少し立ち読みしてみると違った。もっと早く買えばよかったと後悔。

でも、インターネット彼岸について書いた本を、ちょうどお彼岸の頃に読んだのも妙な符合である。


山北山北 2006/05/06 09:26  あ、うちでもやってみました。うちのサイトに、どんな広告を貼り付けるのか興味本位で。
 で、「ゲーム論考」というページにゲーム学校の広告があるのは、まあ当然でしょう。でも、その1項目の「RPGのワールド」について書いたページに、金貸しのワールドの広告ってのはどうかねえ(あまりに変なので排除しましたが)。

トラックバック - http://d.hatena.ne.jp/otn/20060505

2006-05-03(水)

[]異世界? 異世界?を含むブックマーク 異世界?のブックマークコメント

5月1日、2日と何れも21時台の電車で帰宅。

1日、某始発駅ホームに上がると、一瞬異世界に来てしまったのかと錯覚。ちょうど発車する電車ががらがらで立っている人が殆どいない。次の電車には楽勝に座れ、その車両では発車時に立っている人がいなかった。


2日は、“普通”に混んでた。といっても、通常平日ならラッシュ並なのでそれにくらべれば体を押し付けあわずに建っていられる程度の空き具合。

トラックバック - http://d.hatena.ne.jp/otn/20060503