<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>tonextone.com/type/</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/" />
   <link rel="self" type="application/atom+xml" href="http://tonextone.com/type/atom.xml" />
   <id>tag:tonextone.com,2008:/type//1</id>
   <updated>2008-11-29T04:21:10Z</updated>
   
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.32-ja</generator>

<entry>
   <title>店舗情報の版管理 (skype find の場合)</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2008/11/29-1311.html" />
   <id>tag:tonextone.com,2008:/type//1.26</id>
   
   <published>2008-11-29T04:11:54Z</published>
   <updated>2008-11-29T04:21:10Z</updated>
   
   <summary> ...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="おもう" scheme="http://www.sixapart.com/ns/types#category" />
         <category term="やりくりする" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[<img src="http://tonextone.com/type/2008/11/29/1.search_result.png" /><br />
<img src="http://tonextone.com/type/2008/11/29/2.spot_detail.png" /><br />
<img src="http://tonextone.com/type/2008/11/29/3.spot_try_to_conflict.png" /><br />
<img src="http://tonextone.com/type/2008/11/29/4.spot_conflict.png" /><br />
<img src="http://tonextone.com/type/2008/11/29/5.spot_revise.png" /><br />
<img src="http://tonextone.com/type/2008/11/29/6.spot_revision_log.png" /><br />
<img src="http://tonextone.com/type/2008/11/29/7.spot_review.png" /><br />
<img src="http://tonextone.com/type/2008/11/29/8.spot_flag.png" /><br />
]]>
      
   </content>
</entry>
<entry>
   <title>The Art of SQL「10 章 戦力の結集」「11章 計略」から読み取ったこと。</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2008/10/05-1616.html" />
   <id>tag:tonextone.com,2008:/type//1.25</id>
   
   <published>2008-10-05T07:16:50Z</published>
   <updated>2008-11-29T04:32:06Z</updated>
   
   <summary>        スキーマのモデリング技法のうち重要なものは、以下の 2 つ。  ...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="やりくりする" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="21" label="sql" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[<ol>
  <li>
    スキーマのモデリング技法のうち重要なものは、以下の 2 つ。
    <dl>
      <dt>第3正規形(3NF)</dt>
      <dd>
        汎用的な(最適化されていない、中立的な)スキーマ。<br />
        マスター/ディテールもこっち。
      </dd>
      <dt>スタースキーマ</dt>
      <dd>
        データ・ウェアハウス用スキーマ。<br />
        分類のキーとなる「ディメンジョン」表。<br />
        各種「ディメンジョン」の組み合わせに対応する集計可能な値「メジャー」だけを含む「ファクト」表。<br />
      </dd>
    </dl>
  </li>
  <li>
    メタ設計よりも、サブタイプを使おう。<br />
    まだ、ピンと来ないので、引き続き、調べ中。
  </li>
</ol>

<dl>
  <dt>参考URL:</dt>
  <dd>
    <a href="http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19217-02/schemas.htm">スキーマのモデリング化技法</a>
  </dd>
  <dd>
    <a href="http://homepage2.nifty.com/mnakamura/dw/dwwords.html">データウェアハウス関連用語　解説</a>
  </dd>
</dl>
]]>
      
   </content>
</entry>
<entry>
   <title>The Art of SQL「4 章 策略」から読み取ったこと。</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2008/09/15-2320.html" />
   <id>tag:tonextone.com,2008:/type//1.24</id>
   
   <published>2008-09-15T14:20:34Z</published>
   <updated>2008-11-09T06:14:29Z</updated>
   
   <summary> 効果的なフィルターとして働くカラムを見つける。 なるべく早い段階で、そのフィル...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="やりくりする" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="21" label="sql" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[<ol>
<li>効果的なフィルターとして働くカラムを見つける。</li>
<li>なるべく早い段階で、そのフィルターを適用する。</li>
</ol>

<h3>例1: 結合する前にフィルター</h3>

結合する前にフィルタリングできるならば、そうしたほうが速いに決まっている。<br />

<textarea name="code" class="sql" cols="50" rows="50">

-- before
SELECT A.x
 FROM ( A JOIN B ON A.a_id = B.a_id )
 WHERE B.y = 'foo' ;

-- after (faster)
SELECT A.x
 FROM ( A JOIN B ON B.a_id = A.a_id AND B.y = 'foo' ) ;

</textarea><br />

旧来の結合構文でも、同様。<br />

<textarea name="code" class="sql" cols="50" rows="50">

-- before
SELECT A.x
 FROM A, B
 WHERE A.a_id = B.a_id
 AND B.y = 'foo' ;

-- after (faster)
SELECT A.x
 FROM A, ( SELECT * FROM B WHERE B.y = 'foo' ) AS C
 WHERE A.a_id = C.a_id

</textarea><br />

<h3>例2: IN か EXISTS か？</h3>

サブクエリの内側のフィルターが効果的な場合は IN (非相関サブクエリ)<br />
サブクエリの外側のフィルターが効果的な場合は EXISTS (相関サブクエリ)<br />

ただし、相関サブクエリの結合キーには、インデックスを張るべし。<br />

<textarea name="code" class="sql" cols="50" rows="50">

-- A.z = 'bar' が効果的なフィルターである場合、
-- ( B.a_id にインデックスを張るのを忘れずに )
SELECT A.x
 FROM A
 WHERE A.z = 'bar' ;
 AND EXISTS( SELECT * FROM B WHERE B.a_id = A.a_id AND B.y = 'foo' ) ;

-- B.y = 'foo' が効果的なフィルターである場合、
SELECT A.x
 FROM A
 WHERE A.z = 'bar' ;
 AND A.a_id IN( SELECT B.a_id FROM B WHERE B.y = 'foo' ) ;

-- この場合、以下のようにも書ける、
SELECT C.x
 FROM (SELECT * FROM A WHERE A.z = 'bar' ) AS C, (SELECT * FROM B WHERE B.y = 'foo' ) AS D
 WHERE C.a_id = D.a_id ;

-- あるいは、
SELECT A.x
 FROM ( A JOIN B ON A.a_id = B.a_id AND A.z = 'bar' AND B.y = 'foo' );

</textarea><br />
]]>
      
   </content>
</entry>
<entry>
   <title>Re: Emacs の moccur-grep-find で特定のファイルを無視したい</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2008/07/18-0038.html" />
   <id>tag:tonextone.com,2008:/type//1.23</id>
   
   <published>2008-07-17T15:38:01Z</published>
   <updated>2008-07-18T01:12:57Z</updated>
   
   <summary>ずっと dmoccur を使ってたんだけど、 ( moccur-grep(-fi...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="やりくりする" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="15" label="emacs" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[ずっと dmoccur を使ってたんだけど、
<blockquote>
( moccur-grep(-find)は、) find-file でファイルを開くことをしないので，dmoccur よりもはやく検索できますし，バッファが氾濫することもありません．
</blockquote>
だそうで試してみることにしました。<br />
<br />
で、まずは .svn/* とかを検索対象から省いてから速さを比較しようと思ったんだけれど、この「省き方」の情報が無い。<br />
<br />
そんな中、 id:higepon さんが moccur を愛用しているようだったので質問させていただいたところ、<br />
 <a href="http://d.hatena.ne.jp/higepon/20080717/1216264518" target="_blank">elisp を書いていただきました</a>。ありがとうございました!!!<br />
<br />
で、結論を言うと、<br />
どうやら、 moccur-grep(-find) でも、 dmoccur の設定(dmoccur-exclusion-mask)を、利用してくれるようです。<br />
 color-moccur.el を読めないなりに読んでみると、どうもそのようです。<br />
<br />
現在、以下のような設定で、試用中です。<br />
<textarea name="code" class="xml" cols="50" rows="50">
(setq moccur-grep-default-mask "\\.\\(html\\|php\\|js\\|css\\)$")
(load "color-moccur")
(setq dmoccur-recursive-search t)
(setq dmoccur-exclusion-mask (append '("\\~$" "\\.svn\\/") dmoccur-exclusion-mask))
(setq dmoccur-mask '("\\.\\(html\\|php\\|js\\|css\\)$"))
</textarea>
<br />
もともと dmoccur の設定があったせい(おかげ)で、<br />
id:higepon さんから教えていただいた設定を追加しても(しなくても)状況が変化せず、ちょっと混乱してしまいましたが、<br />
id:higepon さんの elisp も、期待どおりの動作をしています。<br />
<br />
まだ、試用を開始したばかりなので、もしかしたら、この結論も正しくないかもしれません。<br />
間違いなどあれば、ご指摘いただければ幸いです。<br />]]>
      
   </content>
</entry>
<entry>
   <title>セマンティックウェブ設計 5 原則</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2008/04/29-1734.html" />
   <id>tag:tonextone.com,2008:/type//1.21</id>
   
   <published>2008-04-29T08:34:16Z</published>
   <updated>2008-04-29T09:49:47Z</updated>
   
   <summary>「セマンティック・ウェブのためのRDF/OWL入門」より抜粋。 すべてのものが ...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="おもう" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="17" label="architecture" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="20" label="social" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="19" label="userinterface" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[「<a href="http://www.amazon.co.jp/gp/product/4627829310?ie=UTF8&tag=tonextonecom-22&linkCode=as2&camp=247&creative=1211&creativeASIN=4627829310">セマンティック・ウェブのためのRDF/OWL入門</a><img src="http://www.assoc-amazon.jp/e/ir?t=tonextonecom-22&l=as2&o=9&a=4627829310" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />」より抜粋。

<dl>

<dt>すべてのものが URI で識別可能</dt>
<dd>ネットワーク上のリソースばかりでなく、人間、場所、事象も URI を通してウェブ上で識別されます。 URI という分散型の識別メカニズムを用いることで、誰もがセマンティック・ウェブに参加し、様々な情報を効率的に統合し、意味を明瞭に示すことが可能になります。</dd>

<dt>部分的な情報 Partial Information</dt>
<dd>セマンティック・ウェブは完全な情報を前提とした閉じた世界を扱う学問ではなく、部分的な情報しか知りえない実世界を対象にし、そこから有益な結論を引き出すことを目指しています。情報は、いつ誰がどこで記述してもよく、同じリソースに関する矛盾する情報が存在するかも知れません。「すべてを知っている人はいない」のです。誰もがどんなことについて何でもいえる（Anyone can say anything about anything）というキャッチフレーズは、セマンティック・ウェブが自由で拘束がなく、小さな情報を断片的に発信できるということと同時に、不完全な情報を前提とし、それを生かすことの重要性を示しています。</dd>

<dt>発展性 Evolution</dt>
<dd>分散型のウェブでは、さまざまなコミュニティや個人が、独自に情報を発信したり、知識の体系を整えたりします。同じ分野の情報が、異なる方法で記述されることもあるでしょう。これらの情報を統合したり、新しい知識を加える時に、古いものを犠牲にしなくてもうまく融合できること、別々のコミュニティどうしが同一性や矛盾をきちんとチェックできることは、このような分散型の世界が自立的に発展していくために欠かせない要件です。</dd>

<dt>最小のデザイン Mimimalist Design</dt>
<dd>セマンティック・ウェブでは、できるだけ制約を課さない、必要以上の標準化を求めない、シンプルなものはシンプルなままに、複雑なものは実現できるように解きほぐして（モジュール化して）、という方針で仕様を設計します。こうすることで、個別仕様の実装が容易になり、またそれに基づいた応用を柔軟に考える事が可能になります。</dd>

<dt>信頼のウェブ Web of Trust</dt>
<dd>ウェブにはいろいろな情報があり、そのコンテクストや信頼度はさまざまです。自分が良く知っているところからだけ情報を集めれば安心ですが、それではグローバルなセマンティック・ウェブの力を生かせません。セマンティック・ウェブでは、存在する情報すべてが信頼できると保証するのではなく、アプリケーションがコンテクストから信頼度を評価するために必要な仕組みを考えていきます。</dd>

</dl>

↓この辺の動向も要チェック。<br />
<a href="http://www.freebase.com/view/queryeditor/" target="_blank">MQL</a>
<a href="http://sparql.org/" target="_blank">SPAQL</a>]]>
      
   </content>
</entry>
<entry>
   <title>情報に関する考察。その2。</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2008/03/11-0018.html" />
   <id>tag:tonextone.com,2008:/type//1.20</id>
   
   <published>2008-03-10T15:18:54Z</published>
   <updated>2008-03-23T09:00:30Z</updated>
   
   <summary>ここ 10 年間ほど、シるという過程に対する私のイメージには、いつも Post-...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="おもう" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="17" label="architecture" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[ここ 10 年間ほど、シるという過程に対する私のイメージには、いつも Post-it が登場する。<br />
<br />
それは、私の大学時代の学習法に関係がある。<br />
<br />
最初は、自分が理解した(と思えた)事柄を紙のノートに書いていた。<br />
新しい事柄が次々に登場するたびに、それらの相互関係を、ノートに反映させていく。<br />
その当時は紙に筆記することに慣れていたので、しばらくはこの方法でやっていた。<br />
しかし、そのうち書き直しが面倒になってきた。<br />
<br />
次に、いわゆるルーズリーフを採用した。<br />
前後関係を入れ替えたり、書き直したものに入れ替えたり、というのをページ単位でできるようになった。<br />
しかし、それでも書き直しがあることに変わりなく、不満があった。<br />
<br />
ここで、飛躍があり、<br />
「できるだけ書かないようにしよう」と思った。<br />
書かなければ、書き直す必要がない。<br />
<br />
まず、良い教科書や、自分の思考に近い文書を見つけ、<br />
その中の要点に、なるべく大きな付箋を貼る。<br />
そして、必要であれば、そこに自分の理解の足跡を残していく。<br />
何章の何節の何処とか何頁の何行目とか、ポインタを記入しておけば、<br />
相互の関係も記述しやすい。<br />
しかし、今度は教科書が膨れ上がっていった。付箋の厚みで。<br />
<br />
最終的には、<br />
付箋を貼っていた場所には、ID 番号だけを鉛筆で書いておいて、<br />
その付箋自体は、ルーズリーフにバインドした無地の紙に貼ることにした。<br />
ルーズリーフの返り咲きである。<br />
教科書とルーズリーフとは 1 対 1 にして、章立てなども対応させる。<br />
<br />
<br />
…と、前置きが長くなったが、<br />
自分自身、相変わらず、上記と同じことをしているなぁ、と思うことが最近あった。<br />
<br />
それは、プログラムのコーディング中。<br />
<br />
私は、いずれ書き捨てのコードであるという前提で書き始める。<br />
<br />
信用できる教科書の、あの部分とこの部分とを補完するストーリーを、<br />
付箋に書くような気持ちで書き始める。<br />
<br />
だらだらと手続き志向で書くのでメソッドが長くなるが、それで良いと思っている。<br />
<br />
# 付箋と、メソッドとが対応しているイメージ？<br />
<br />
理解が進んだら、付箋を張り替えるように、リファクタリングする。<br />
<br />
よほど理解が進んだら、教科書の改定にコミットしたくなるかもしれない。<br />
<br />
でも、どちらかというと、<br />
教科書を参照しながら、具体的な状況のストーリーを記述するほうが<br />
性に合っているんだろうな。<br />
<br />
多分、理解する過程っていうのは、すごく個人差があって、<br />
だから、チームのコードをキレイに保つのが難しいのだと思う。<br />
<br />
関連: <a href="./2007/09/15-0020.html">オブジェクト指向に対する抵抗感</a>]]>
      
   </content>
</entry>
<entry>
   <title>和訳してみた</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2008/01/03-2052.html" />
   <id>tag:tonextone.com,2008:/type//1.19</id>
   
   <published>2008-01-03T11:52:23Z</published>
   <updated>2008-01-03T13:36:20Z</updated>
   
   <summary>&quot;Higher-Order JavaScript&quot; by Sean M. Bur...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="やりくりする" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[<a href="http://interglacial.com/hoj/hoj.html" target="_blank">"Higher-Order JavaScript" by Sean M. Burke</a> を和訳した。
<a href="/neta/hoj/hoj.html">"Higher-Order JavaScript"(ja)</a><br />
<br />
"Higher-Order" という表現に何か高尚なものを感じ、
JavaScript のすごいことが書いてあると期待し del.icio.us したものの、それっきりになっていたので。<br />
<br />
最初に斜め読みした段階で、実は、期待していたものではなく、
 Perl の人が「JavaScript で Perl を書く」ためのものであることがわかったのだが、<br />
 trivial なことでも良いので、何か吸収できるだろうと信じて、区切りの良いところまで訳してしまうことにした。<br />

以下、その過程で脳裏をよぎった物事:
<ul>
<li>
x.func = function() { return this; } ならば、<br />
x.func() の this は x 。<br />
x.func.apply(y) の this は y 。<br />
Function#apply(object, [arg, ..]) は、 prototype.js でいうと、Function#bind(object, arg, ...) 
</li>
<li>
<a href="http://prototypejs.org/api/" target="_blank">Prototype API Documentation</a> を読もう。要所でソースコードも。
</li>
<li>
Perl のリストという概念とか、 $arrayref = \@arrayref; $hashref = \%hashref とか、やっぱり変態的。
</li>
<li>
lisp のリストは俺的にしっくりくるか？ emacs lisp で hello world してみるか。
</li>
</ul>
]]>
      
   </content>
</entry>
<entry>
   <title>Google Maps API を SSL で使えるようにしてみる。</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2007/10/02-0112.html" />
   <id>tag:tonextone.com,2007:/type//1.18</id>
   
   <published>2007-10-01T16:12:31Z</published>
   <updated>2008-07-25T07:14:33Z</updated>
   
   <summary> 2008/03 : /maps?file=api を書き換えるための正規表現の...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="やりくりする" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[<p style="border: 1px #cc6666 dotted; padding: 0.2em; color: #999999; font-size: 120%; font-weight: bold;">
2008/03 : /maps?file=api を書き換えるための正規表現のパターンを微調整しました。
</p>

<p style="border: 1px #cc6666 dotted; padding: 0.2em; color: #999999; font-size: 120%; font-weight: bold;">
2008/05/15 : 通りすがりさんの報告を受けて、正規表現のパターンをさらに微調整しました。
</p>

<p style="border: 1px #cc6666 dotted; padding: 0.2em; color: #999999; font-size: 120%; font-weight: bold;">
2008/07/25 : また API に変更があったようで、機能しなくなったので、
正規表現のパターンを緩めに調整しました。
</p>

Google Maps API は HTTPS では提供されていないらしい。<br />
(Google Analytics には HTTPS 版もある。というのは先日知りました。)<br />
<br />
しかし、HTTPS なページに、HTTP なリソースを読み込むと IE 曰く、<br />
「このページにはセキュリティで保護されている項目と保護されていない項目が含まれています」と。</br>
<br />
この問題を何とかしなければならない機会があったので、<br />
HTTPS な proxy をかまして何とかしてみた。<br />
<br />
要するに、 Ｇoogle Maps API を使うためには、普通
<p>http://maps.google.com/maps?file=api&amp;v=2&amp;key=...</p>
っていう JavaScript を読み込むけれども、<br />
まずこの JavaScript を https://(自前の proxy )経由でリクエストし、<br />
この JavaScript にハードコードされている http://... を<br />
https://(自前の proxy )経由でリクエストするように書き換えれば良いだけ。<br />

以下は PHP での例。

<p>
デモ: <a href="https://ssl.tonextone.com/neta/gmap_over_ssl/">https://ssl.tonextone.com/neta/gmap_over_ssl/</a> 
</p>
# SSL の証明書を買っていないので、その旨の警告は出ます。<br />
<br />

./rewrite_gmaps_api.php<br />
<textarea name="code" cols="50" rows="10" class="php">
require_once 'HTTP/Request.php';

if ($_SERVER["HTTPS"] == 'on') {
  $url_base = 'https://ssl.tonextone.com/neta/gmap_over_ssl/';
} else {
  $url_base = 'http://tonextone.com/neta/gmap_over_ssl/';
}

$url = 'http://maps.google.com/maps';
$url .= ($_SERVER["PATH_INFO"]) ? $_SERVER["PATH_INFO"] : '';
$url .= ($_SERVER["QUERY_STRING"]) ? '?'.$_SERVER["QUERY_STRING"] : '';

$proxy =& new HTTP_Request($url);
$proxy->setMethod(HTTP_REQUEST_METHOD_GET);
$status['proxy'] =& $proxy->sendRequest();

if (PEAR::isError($status['proxy'])) { $response = ''; }
else {
  $response = $proxy->getResponseBody();
  $response_header = $proxy->getResponseHeader();
}

$pattern = array(
                 '<"(http://[^/\.]+\.google\.com)">',
                 // '<"(http://[^/\.]+\.google\.com/intl/en_ALL/mapfiles/[0-9a-z]+/maps2)" *\+ *"(\.api/main\.js)">',
                 '<"(http://[^/\.]+\.google\.com/intl/en_ALL/mapfiles/)>',
                 '<"(http://(kh|mt)[0-9]+\.google)>',
                 );
$replacement = array(
                     '"'.$url_base.'proxy.php/\\1"',
                     // '"'.$url_base.'proxy.php/\\1\\2"',
                     '"'.$url_base.'proxy.php/\\1',
                     '"'.$url_base.'proxy.php/\\1',
                     );

$response = preg_replace($pattern, $replacement, $response);

header("Content-Type: {$response_header['content-type']}");
// header("Content-Length: {$response_header['content-length']}");
echo $response;
</textarea><br />
<br />
./proxy.php<br />
<textarea name="code" cols="50" rows="10" class="php">
require_once 'HTTP/Request.php';

$url = ($_SERVER["PATH_INFO"]) ? preg_replace('<^/>', '', $_SERVER["PATH_INFO"]) : '';
$url .= ($_SERVER["QUERY_STRING"]) ? '?'.$_SERVER["QUERY_STRING"] : '';

$proxy =& new HTTP_Request($url);
$proxy->setMethod(HTTP_REQUEST_METHOD_GET);
$status['proxy'] =& $proxy->sendRequest();

if (PEAR::isError($status['proxy'])) { $response = ''; }
else {
  $response = $proxy->getResponseBody();
  $response_header = $proxy->getResponseHeader();
}

header("Content-Type: {$response_header['content-type']}");
// header("Content-Length: {$response_header['content-length']}");
echo $response;
</textarea>]]>
      
   </content>
</entry>
<entry>
   <title>UserPrivateGroup の使いどころ</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2007/09/23-0115.html" />
   <id>tag:tonextone.com,2007:/type//1.17</id>
   
   <published>2007-09-22T16:15:31Z</published>
   <updated>2007-09-22T17:23:26Z</updated>
   
   <summary> unix 系のサーバにアカウントを作成する際に、 $ id someone ;...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="やりくりする" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[<p>
unix 系のサーバにアカウントを作成する際に、<br />
<textarea name="code" cols="50" rows="10" class="js">
$ id someone ;
uid=1001(someone) gid=1001(someone) groups=1001(someone),500(project),10(wheel)
</textarea><br />
というように 'someone' のプライマリグループとして 'someone' を設定する事がある。<br />
このようなポリシー、またはこのような 'someone' グループを User Private Group というらしい。<br />
<br />
なんか意味無くグループ増えるだけじゃん…と思って、ここ最近では避けるようにしていたんだけど、<br />
本日ようやく使いどころがわかった。<br />
</p>
<p>
プロジェクトチームでファイルを共有する場合、
<ol>
<li>同じグループ 'project' に 'someone1', 'someone2' が参加している状態にして、</li>
<li>共有したいファイルの所有グループを 'project' にし、</li>
<li>グループ読み書き権限を付与しておく</li>
</ol>
…というのは良くあるケースだと思う。<br />
2,3 を実現するためには、それぞれ、 setGID, umask(002) を使ったりする。
</p>
<p>
このようなケースで、<br />
User Private Group ポリシーを採用していない場合、つまり<br />
<textarea name="code" cols="50" rows="10" class="js">
$ id someone1 ;
uid=1001(someone1) gid=500(project) groups=500(project),10(wheel)
$ id someone2 ;
uid=1002(someone2) gid=500(project) groups=500(project),10(wheel)
</textarea><br />
のような場合、共有したくないファイルを作成するのが難しい。<br />
普通にファイルを作成するだけで someone1:project の所有物となり、<br />
umask(002) の効果で、自動的に project グループで共有されてしまう。
</p>
<p>
一方、User Private Group ポリシーを採用していれば、<br />
普通にファイルを作成した場合は、 someone1:someone1 の所有物となり誰とも共有されず、<br />
project グループで共有されるのは setGID されたディレクトリ内だけになる。
</p>
<p>
この違いが、重要な場合もあるだろう。<br />
例えば、共有レンタルサーバの管理とかする場合は必須だろうと思う。
</p>

# umask のほうをディレクトリ毎に設定するのも一案だが、その方法は、まだ知らない。
]]>
      
   </content>
</entry>
<entry>
   <title>オブジェクト指向に対する抵抗感</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2007/09/15-0020.html" />
   <id>tag:tonextone.com,2007:/type//1.16</id>
   
   <published>2007-09-14T15:20:20Z</published>
   <updated>2007-09-14T16:24:01Z</updated>
   
   <summary>ある問題を解決するために必要な工程は、突き詰めていけば、数パターンしかないと思う...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="おもう" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[ある問題を解決するために必要な工程は、突き詰めていけば、数パターンしかないと思う。<br />
<br />
どうも、私は「その工程を突き詰めることによって本質を明らかにする」過程を楽しんでいるらしく、<br />
その工程を必要以上に抽象化することを、むしろ避ける場合がある。<br />
自明な工程が上から下に流れているように感じられるコードを好む。<br />
<br />
その理由を考えてみた。<br />
<br />
まず、<br />
プログラムにオブジェクトを登場させて工程のあちらこちらの具体性を隠蔽する事に、<br />
プロジェクトのメンバーが増えるとワークフローの見通しが悪くなりがちである事と同様のリスクを感じる。<br />
<br />
また、<br />
抽象化、模式化には、創作的自由度があり、十人十色の結果になると思っている。<br />
「この色は自分の見ている色と違う」と感じさせたら、それは多少なりとも障壁になると思う。<br />
なので自分の解釈を込め過ぎることにもリスクを感じる。<br />
<br />
他にもあるかもしれないが、<br />
とりあえず、上記 2 点に共通しているのは、<br />
頻繁にコミュニケーションして同意を得て、<br />
その同意事項を維持・徹底していく必要がある、という事だろうか？<br />
<br />
しかし、<br />
プロジェクトのメンバーが自分一人だけなら難なくクリアできそうに感じる…<br />
…という事は要するに、メンバー間の調整がおっくうだなぁ、というだけか？<br />
<br />
オブジェクト指向に対する抵抗感の心理的背景を自己分析できた気がするので、<br />
今日は寝ます。]]>
      
   </content>
</entry>
<entry>
   <title>XMLHttpRequest で JSONP .</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2007/08/23-0142.html" />
   <id>tag:tonextone.com,2007:/type//1.15</id>
   
   <published>2007-08-22T16:42:29Z</published>
   <updated>2007-08-22T17:17:47Z</updated>
   
   <summary>ふと RJS の仕組みが気になり、 http://jp.rubyist.net/...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="おもう" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="10" label="ajax" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="9" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[ふと RJS の仕組みが気になり、<br />
<a href="http://jp.rubyist.net/magazine/?0014-RubyOnRails">http://jp.rubyist.net/magazine/?0014-RubyOnRails</a> を読みつつ、<br />
適当な動作サンプルを探してみたけど、なかなか見つからないので、<br />
「きっとこうなんじゃないか？」という推測を書いてみるメモ。<br />
<br />
<ol>
<li>
<dt>リクエストは XMLHttpRequest</dt>
<dd>Rails なんだから prototype.js の Ajax 使ってるはず。</dd>
</li>
<li>
<dt>レスポンスは HTML(＜script＞...＜/script＞)</dt>
<dd>Ajax.Updater で＜script＞...＜/script＞を描いてるはず。</dd>
</li>
<li>
<dt>＜script＞ /* prototype, scriptaculous で(ﾟДﾟ )ｳﾏｰ */ ＜/script＞</dt>
<dd>
返って来た ＜script＞ の内容は、<br />
動的なデータ(JSON)を、<br />
prototype.js / scriptaculous.js の便利機能で処理するように記述されているばず。<br />
<strong>この ＜script＞ の内容を書くヘルパーが、RJS !</strong>
</dd>
</li>
</ol>
<br />
つまり、XMLHttpRequest で JSONP するようなもの。という推測。<br />
<br />
これなら、↓こんなおバカな特許問題も華麗にすり抜けられる。<br />
<a href="http://ajaxian.com/archives/remote-scripting-transport-patent">http://ajaxian.com/archives/remote-scripting-transport-patent</a>]]>
      
   </content>
</entry>
<entry>
   <title>Apollo 雑感</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2007/03/23-0029.html" />
   <id>tag:tonextone.com,2007:/type//1.14</id>
   
   <published>2007-03-22T15:29:16Z</published>
   <updated>2007-03-24T15:49:37Z</updated>
   
   <summary>Adobe Labs - Apollo 面白そうなので、HTML + JavaS...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="やりくりする" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="9" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="18" label="presentation" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="19" label="userinterface" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[<a href="http://labs.adobe.com/technologies/apollo/" target="_blank">Adobe Labs - Apollo</a>
面白そうなので、HTML + JavaScript + CSS なウィジェットを作ってみた。<br />
<br />
まずは普通に、HTML + JavaScript + CSS で、<br />
GoogleBase のデータを JSONP で展開して入力を補完するっていう単純なものを作った。<br />
<a href="http://tonextone.com/neta/GDataCompletions/" target="_blank">http://tonextone.com/neta/GDataCompletions/</a><br />
<br />
で、これをウィジェットにする。<br />
全く変更なしで、さくっとウィジェット化できた！<br />
<a href="http://tonextone.com/neta/GDataCompletions/GDataCompletions.air" target="_blank">http://tonextone.com/neta/GDataCompletions/GDataCompletions.air</a><br />
<br />
↑この .air ファイルの実体は zip 書庫で、<br />
展開すると、HTML, JavaScript, CSS がそっくり入っている。<br />
確か Konfabulator(現 Y! widget) も、こういう設計だったと思う。<br />
(今は違うみたいですね)<br />
<br />
端的に言えば、Apollo は、<br />
これまでもいろいろあった Flash 系、HTML 系ウィジェット実行環境を統合する、<br />
Yet Another なウィジェット実行環境、という印象。<br />
]]>
      
   </content>
</entry>
<entry>
   <title>scripture</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2006/12/29-2200.html" />
   <id>tag:tonextone.com,2006:/type//1.13</id>
   
   <published>2006-12-29T13:00:00Z</published>
   <updated>2007-03-24T09:12:52Z</updated>
   
   <summary>絵本を手軽に作りたいなぁと思い、作ってみた。  できたものは「お話」(イラストレ...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="つくる" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="9" label="javascript" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="18" label="presentation" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="19" label="userinterface" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[絵本を手軽に作りたいなぁと思い、作ってみた。 <br />
<br />
できたものは「お話」(イラストレーションと文章の混ざったもの)<br />
を、そこそこ簡単に作れるシステム。<br />
このシステムを、scripture (スクリプチャー)と呼んでおく。<br />
FireFox と IE6以上で期待通りに動作した。<br />
Opera, Safari では使えない(FCKeditor が動作しないので)。<br />
<br />
子供や大人に「お話」を聞かせる時に使えるかもしれない。<br />
<br />
「お話」サンプル:<br />
<a href="http://scripture.tonextone.com/?generation=greeting2007">http://scripture.tonextone.com/?generation=greeting2007</a><br />
<br />
使い方:<br />
<ol>
<li>「お話を作る」でゴニョゴニョする</li>
<li>「お話」が完成</li>
<li>「このお話を読む」で閲覧用の URL へ移動</li>
<li>「お話」のページの HTML ソースを保存</li>
</ol>
<br />
使い捨てのシステム。<br />
ネットにつながっていれば、保存した HTML ソースだけで動作するし、<br />
つながってない状況で使いたかったら、HTML ソース読んで、<br />
js とか css とか画像とか、必要な部品をダウンロードして、調整すればいい。<br />
ちょっとガンバればできる。<br />
<br />
とりあえず、COOKIE でセッション貼っているので、<br />
自分が作った「お話」(1つだけ)を、後から編集することは、<br />
辛うじて、できるようにしてあるが、<br />
認証などつけていない。<br />
セッションが切れたら編集できない。これはひどい。]]>
      
   </content>
</entry>
<entry>
   <title>情報に関する考察。その1。</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2006/12/18-1700.html" />
   <id>tag:tonextone.com,2006:/type//1.12</id>
   
   <published>2006-12-18T08:00:00Z</published>
   <updated>2006-12-18T11:15:27Z</updated>
   
   <summary>年上の知人との会話の中で、 「中国には日本とは比べ物にならない混沌があり、ちょう...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="おもう" scheme="http://www.sixapart.com/ns/types#category" />
   
   <category term="17" label="architecture" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[年上の知人との会話の中で、<br />
「中国には日本とは比べ物にならない混沌があり、ちょうど高度成長期の日本を彷彿とさせる。<br />
　大変な脅威だ。」<br />
という旨があった。<br />
「混沌を秩序に変える」という人の業が求められている。<br />
つまり、混沌がモチベーション。必要は発明の母。<br />
その混沌(～ モチベーション)が、図らずも数の力で維持されていくのではなかろうか、<br />
と、感じた。(旨い肴で日本酒を酌み交わしながら。いつもご馳走様です。)<br />
<br />
<a href="http://ja.wikipedia.org/wiki/%E8%88%AC%E8%8B%A5%E5%BF%83%E7%B5%8C" target="_blank">般若心経</a>に、
<blockquote>
色不異空、空不異色、色即是空、空即是色。<br />
受・想・行・識、亦復如是。
</blockquote>
とある。<br />
私はこれを以下のような図式で理解している。<br />
<textarea name="code" class="xml" cols="20" rows="10">
色 ～ 特異存在(励起:秩序:情報)

│    　　　　    ↑
   　　　　
仏 -- 受想行識 -- 人
   　　　　
↓    　　　　    │

空 ～ 普遍存在(基底:混沌:忘却)
</textarea><br />
物事は放っておくと秩序から混沌へと向かう。それが神仏の所業。<br />
物事の仕組みをシって、これを逆行させる。それが人の所業。<br />
あるいは、人は、混沌から秩序へと逆行させる事によって、<br />
物事の仕組みをシるとも言える。<br />
<br />
そして、この色即是空構造が、すなわち、人の世界、あるいは生命界である。<br />
その世界は、万物が流転する事で成り立っている。<br />
自分の一生のうちに関われる周期の(小乗な)サイクルと、<br />
それより大きい周期の(大乗な)サイクルがある。<br />
<br />
さて、前置きはこのくらいにして。<br />

この色即是空構造を、特定のシステムに導入すれば、そこに一つの「世界」が出来ると思う。<br />
<br />
例えば、インターネットのリソースを、<br />
ディレクトリ(カテゴリ)に分類し、<br />
キーワードで検索できるようにする<br />
というシステムがある。<br />
<br />
「書籍」という形態における語彙になぞらえると、<br />
カテゴリ   = 目次<br />
キーワード = 索引<br />
かなぁと思う。誰かの視点で完成された秩序である。<br />
<br />
このシステムに色即是空構造を導入する試みが、<br />
ソーシャルタギング(～ フォークソノミー)だと認識している。<br />
つまり、不特定大多数のユーザによって、神仏の業を擬似的に再現し、<br />
混沌(～ モチベーション)を導入するものであると。<br />
ただし、当然、破綻しないように設計する必要があるわけで。<br />
<br />
色即是空構造の模式図を念頭に、<br />
実社会にある、様々な世界の設計を眺めながら、<br />
こんなふうに回るようにするには、どんな実装があり得るのかと、<br />
考えてみようと、改めて思う。来年のテーマかな。]]>
      
   </content>
</entry>
<entry>
   <title>Panoramic Panel Perspective</title>
   <link rel="alternate" type="text/html" href="http://tonextone.com/type/2006/12/11-1542.html" />
   <id>tag:tonextone.com,2006:/type//1.11</id>
   
   <published>2006-12-11T06:42:34Z</published>
   <updated>2006-12-11T07:20:53Z</updated>
   
   <summary>私は怠惰なので、作業する時でも何でも、手の届く範囲に全てそろえておきたい。 コッ...</summary>
   <author>
      <name></name>
      
   </author>
         <category term="おもう" scheme="http://www.sixapart.com/ns/types#category" />
         <category term="つくる" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="ja" xml:base="http://tonextone.com/type/">
      <![CDATA[私は怠惰なので、作業する時でも何でも、手の届く範囲に全てそろえておきたい。<br />
コックピットが理想。<br />
<img alt="cockpit.jpg" src="http://tonextone.com/type/cockpit.jpg" width="448" height="336" /><br />
<br />
今、座っているデスクの前と左には、本棚が接している。<br />
前の本棚には、よく使う書類のフォルダが、4種類に分類されていて、<br />
左の本棚には、よく使うリファレンス系の書籍がある。<br />
(各本棚のデスクトップより下の領域は、普段使わないモノが収納されている。)<br />
<br />
そのデスクに、ノートPC を置いて、処理しなければならない書類を意識しながら作業し、<br />
ちょっと「首を捻る」ようなことがあったら、首を「左に」捻って、リファレンスを手に取る。<br />
<br />
こういうユーザーインターフェイスが体になじむ場面は、多いと思う。<br />
<br />
でも、ウェブアプリケーションの場合、<br />
扱っている対象に関連性のある、良く使うツールですら画面に収まりきらないことも多い。<br />
特に web2.0 なマッシュアップなさービスでは、<br />
アレコレ関連性を表現しつつ、それらをその場で編集する、みたいな、<br />
優れた一覧性が重要な気がする。<br />
<br />
それならば…と、ちょっと考えてみた。<br />
<a href="http://tonextone.com/neta/ppp/test.html" target="_blank">Panoramic Panel Perspective</a><br />
要するに横スクロールなんですが、ちゃんと分類した上であれば、積極的に使うのもアリなのではないかと思う。<br />]]>
      
   </content>
</entry>

</feed>
