<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2japanesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Tech de Go</title><link>http://www.techdego.com</link><description>Diversity of the web technology and ...</description><language>en</language><generator>http://wordpress.org/?v=2.6.2</generator><creativeCommons:license>http://creativecommons.org/licenses/by-nc/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/techdego" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechdego" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechdego" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechdego" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/techdego" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechdego" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Ftechdego" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Ftechdego" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>リキッドイメージとFaux columns:CSS</title><link>http://feedproxy.google.com/~r/techdego/~3/Ep4vBospr5w/liquid_image_faux_columns_css.php</link><category>CSS</category><category>CSS</category><category>float</category><category>image</category><category>layout</category><category>margin</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Fri, 25 May 2007 10:34:21 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/05/liquid_image_faux_columns_css.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>リキッドやエラスティックレイアウトの時に図を一緒に拡大縮小する方法と、サイドバーの背景の高さを下まで持ってくるやりかたです。</p>
<h3>リキッドイメージ、エラスティックイメージ</h3>
<p>リキッドレイアウトやエラスティックレイアウトにおいて、コンテンツのイメージも一緒に拡大縮小するようにする方法です。文字をデカくしたい人は図もデカくしたいでしょうから。<br />
<img src="http://www.techdego.com/upload/2007/05/floatimage.jpg" width="378" height="439" alt="Liquid Images" class="imageframe imgalignleft" />図は実際にやってみたスクリーンショットです。リキッドレイアウトなので、フォントサイズは変わっていませんが、画像が縮小しているのが分かるかと思います。<br class="clearer" /></p>
<p><span id="more-146"></span>
<ul class="clearer">
<li>実際見せるより大きい画像（幅500pxとか）を用意する。</li>
<li>HTMLのimgタグにwidth, height属性を書かない。</li>
<li>CSSでimgにwidthを％かemで指定する（25%(=125px)とか）。</li>
<li>一応max-widthに最大幅を指定（max-width:500pxとか）しておき、モザイクにならないようにする<sup><a href="#footnote-1-146" id="footnote-link-1-146" title="See the footnote.">1</a></sup> 。</li>
<li>imgのpaddingも%かemで付けるべきでしょう。</li>
</ul>
<p class="css_title">CSSの例</p>
<pre class="css"><code>div#content p img {
   width: 25%;
   max-width: 500px;
   float: left;
   padding: 2%;
}</code></pre>
<h3>Faux columnsをリキッドレイアウトに適用する</h3>
<p>今度は拡大縮小の話ではありません。</p>
<h4>Faux columnsとは？</h4>
<p>通常、サイドバーとメインコンテンツの高さは違いますので、サイドバーに当サイトのようにグレーに色を塗ると、ボックスが途中で切れているのがよく分かってしまいます。<br />
<img src="http://www.techdego.com/upload/2007/05/fauxcolumns1.png" width="441" height="227" alt="通常のbox" class="imageframe" /></p>
<p>これの例えばサイドバーを、下まで全部グレーに塗ろうと思うと、wrapperになっているボックス要素の背景にグレー帯の縦1ピクセルの背景画像をCSSでrepeat-yするのが一般的でしょう。<br />
<img src="http://www.techdego.com/upload/2007/05/fauxcolumns2.png" width="421" height="274" alt="Faux columns　説明" class="imageframe" /></p>
<p class="css_title">CSS</p>
<pre class="css"><code>div#wrapper {
   background: #fff url(images/bgbar.gif) repeat-y left top;
}</code></pre>
<p>これをFaux columnsと言うそうです。良くやる手だと思います。当サイトはやってませんがｗ。</p>
<h4>background-postionに％を指定するとは？</h4>
<p>background-postionにpx（ピクセル）を指定した場合は、適用するボックスの左上から数えて指定したピクセルのところにbackground-imageの<strong>左上角</strong>が来るように配置されます。</p>
<p>ところが、%を指定した時は、「background-imageについて指定した%にあたる点が、適用するボックスについて指定した%に当たる点に来るように」配置されます（図）。<br />
<img src="http://www.techdego.com/upload/2007/05/fauxcolumnsliquid.png" width="280" height="199" alt="background position using %" class="imageframe" /></p>
<h4>リキッドレイアウトの背景をずらさないように配置する</h4>
<p>上記の背景位置に%を指定した時の挙動を、水平方向だけ使用して、リキッドレイアウトで画面を広げていって、サイドバーが広がっても、背景も広がるように見せます。</p>
<ul>
<li>とても長い、高さ1ピクセルの背景画像を作る（1000pxとか）。</li>
<li>サイドバーの背景部分に色を塗って、コンテンツの部分は透過させます（透過GIFを作る）。透明でも長さは必要です。<br />
<img src="http://www.techdego.com/upload/2007/05/fauxcolumns3.png" width="350" height="130" alt="Faux columns liquid 説明" class="imageframe" /></li>
<li>サイドバー部分の色を塗る長さは、リキッドレイアウト時に、上記の例ではdiv#menuにあたるところが何%になっているかをそのまま適用します。例えば背景画像を1000pxとし、div#menuのwidthが25%だったら、250pxの長さまで塗ります。</li>
<li>CSSで背景の水平位置に指定した%を記述して、repeat-yします。</li>
</ul>
<p class="css_title">CSS</p>
<pre class="css"><code>div#wrapper {
   background: #fff url(images/bg-liquid.gif) repeat-y 25% 0;
}</code></pre>
<p>上記の例のように両側にサイドバーがある場合は、HTML構造上、もう一つ#wrapperを作るしかありません。</p>
<p>それと、上記の例でも同じですが、#wrapperの中身が全部フロートするとボックスの高さが無くなってしまいますので、footerとかを#wrapperに入れて、CSSでclear: both;とかしておかないと、背景も出なくなりますので、念のため。<br />
<img src="http://www.techdego.com/upload/2007/05/fauxcolumnsliquid2.png" width="226" height="254" alt="Faux columns bothside" class="imageframe" /></p>
<p>そして、反対向きの上記のような透過GIFを作成して、今度は例えば75%から右を塗ります。CSSは以下のようになります。透過GIFを重ねているので左右どちらの背景も表示されます。</p>
<p class="css_title">CSS</p>
<pre class="css"><code>div#wrapper1 {
   background: #fff url(images/bg-liquid-left) repeat-y 25% 0;
}
div#wrapper2 {
   background: #fff url(images/bg-liquid-right) repeat-y 75% 0;
}</code></pre>
<p>最後は図を作るのが嫌になりました．．．</p>
<ol class="footnotes">
<li id="footnote-1-146">IE6ではmax-widthは効きません。モザイクにしたくない場合は巨大な画像にすればOKです  <a href="#footnote-link-1-146"></a></li>
</ol>
]]></content:encoded><description>リキッドやエラスティックレイアウトの時に図を一緒に拡大縮小する方法と、サイドバーの背景の高さを下まで持ってくるやりかたです。
リキッドイメージ、エラスティックイメージ
リキッドレイアウトやエラスティック</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/05/liquid_image_faux_columns_css.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/05/liquid_image_faux_columns_css.php</feedburner:origLink></item><item><title>CSSのコメントを除去する</title><link>http://feedproxy.google.com/~r/techdego/~3/satqU7j0i4k/removing_css_comments.php</link><category>CSS</category><category>htaccess</category><category>CSS</category><category>hack</category><category>htaccess</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Thu, 24 May 2007 08:50:57 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/05/removing_css_comments.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>CSSのコメントは、/* &#8212; */ ですが、自分で分かるように区分したりメモをコメントにしていると、CSSのファイルサイズが結構大きくなるものです。だからと言ってエディタで消しちゃうと訳が分からなくなります。</p>
<p>先般、ある人が、CSSファイルをPHPとしてApacheに読み込ませることにより、サーバにはコメント入りCSSなのに、クライアントにはコメント無しのCSSを送るという技を使っていました。<br />
.htaccessファイルにCSSのMIME typeを以下のように記述するだけです。</p>
<p class="text_title">.htaccess</p>
<pre class="text"><code>addtype application/x-httpd-php .css</code></pre>
<p>コメントを消すだけではなく、CSSの中でphpで条件分岐してCSSコードを吐き出すことが出来るようになるので、ユーザーエージェントを判別して検索ボットさんだったらdisplay:none;を消す．．．とか出来るんですが、これは批判が来そうなので、機会があれば書くことにします。</p>
<p>最後に、コメントを除去したからクライアント側の表示が早くなるかというと、キャッシュするしくみ（XCacheやeAccerelator、phpモジュールなど）が無ければ、早くなることはないでしょう。早さを求めるならGZIPで送る等を考えた方がいいようです。</p>
]]></content:encoded><description>CSSのコメントは、/* &amp;#8212; */ ですが、自分で分かるように区分したりメモをコメントにしていると、CSSのファイルサイズが結構大きくなるものです。だからと言ってエディタで消しちゃうと訳が分からなくなります。
先般、ある人が、CSSファ</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/05/removing_css_comments.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/05/removing_css_comments.php</feedburner:origLink></item><item><title>マージンの相殺について：CSS</title><link>http://feedproxy.google.com/~r/techdego/~3/NWaddcZVaZA/margin_collapsing_css.php</link><category>CSS</category><category>CSS</category><category>layout</category><category>margin</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Tue, 22 May 2007 01:14:15 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/05/margin_collapsing_css.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>垂直方向のマージンの相殺(margin collapsing)についてです。特に難しいことはないですが、レイアウトする時は気にする必要があると思います。<br />
<ins>マージンの相殺は、各ブラウザが実装しても、しなくてもいい仕様だそうです。ここで述べられている内容は、Firefox2, IE6, Opera9ではそのとおりになります。ただし、IE6では&#8221;haslayout&#8221;になると、マージンの相殺は起こらないようです。ご指摘ありがとうございました。</ins></p>
<ul>
<li><a href="http://www.w3.org/TR/1998/REC-CSS2-19980512/box.html#collapsing-margins">CSS 2 : Box model</a></li>
<li><a href="http://www.w3.org/TR/2006/WD-CSS21-20061106/box.html#collapsing-margins">CSS 2.1 WD : Box model</a></li>
</ul>
<h3>A.基本</h3>
<ul>
<li>垂直方向のマージンは相殺されて、長い方のマージンになる。フロートしたボックス、及びposition: absoluteのボックスは相殺されない。<br />
<img src="http://www.techdego.com/upload/2007/05/margincollapse1.png" width="388" height="213" alt="Margin Collapse - Multiple box" class="imageframe" /></li>
<li>あるボックスがボックスに内包されている場合、かつ外側のボックスにpaddingとborderが無い場合、垂直方向のマージンは相殺されて長い方のマージンになる。<br />
<img src="http://www.techdego.com/upload/2007/05/margincollapse2.png" width="401" height="148" alt="Margin Collapse - Innerbox" class="imageframe" /></li>
<li>ボックス内が空の場合は、自分自身の上下マージンも相殺されて長い方のマージンにまとまる。<br />
<img src="http://www.techdego.com/upload/2007/05/margincollapse3.png" width="300" height="61" alt="Margin Collapse - boxself" class="imageframe" /></li>
</ul>
<p><span id="more-140"></span></p>
<h3>B.Tips</h3>
<p>Tipsというほどではありませんが、垂直マージンの相殺は、複数パラグラフの最初と最後のマージンと途中のマージンを同じにする効果があります。マージンを同じにするだけなら、最初のパラグラフにmargin-topでいくらとか、計算する必要はありません。<br />
<img src="http://www.techdego.com/upload/2007/05/margincollapse4.png" width="450" height="265" alt="Margin Collapse with paragraphs" class="imageframe" /></p>
<p>また、よくある</p>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;div id="box"&gt;
   &lt;p&gt;このパラはmargin 20pxです。&lt;/p&gt;
&lt;/div&gt;</code></pre>
<p>包含div#boxにmargin:10pxをして、</p>
<p class="css_title">CSS</p>
<pre class="css"><code>div#box {
   margin: 10px;
   background-color:#d5d5d5;
}

p{
   margin: 20px;
   background-color:#6699FF;
}</code></pre>
<p>以下のような結果を期待しても、</p>
<div style="margin:10px; padding:1px; background-color:#d5d5d5;">
<p style="margin:20px; background-color:#6699FF;">このパラはmargin 20pxです。</p>
</div>
<p>以下のようになってしまいます。</p>
<div style="margin:10px; background-color:#d5d5d5;">
<p style="margin:20px; background-color:#6699FF;">このパラはmargin 20pxです。</p>
</div>
<p>これを期待したようにするためには、垂直方向のpaddingかborderを包含ボックスに入れれば良いです。</p>
<p class="css_title">CSS</p>
<pre class="css"><code>div#box {
   margin: 9px;
   padding: 1px;
   background-color:#d5d5d5;
}

p{
   margin: 20px;
   background-color:#6699FF;
}</code></pre>
<p>これで、期待したとおり（上の方の例）の結果になります。</p>
]]></content:encoded><description>垂直方向のマージンの相殺(margin collapsing)についてです。特に難しいことはないですが、レイアウトする時は気にする必要があると思います。
マージンの相殺は、各ブラウザが実装しても、しなくてもいい仕様だそうです。ここで述べられ</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/05/margin_collapsing_css.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/05/margin_collapsing_css.php</feedburner:origLink></item><item><title>フロートとネガティブマージンまとめ:CSS</title><link>http://feedproxy.google.com/~r/techdego/~3/tj_IPLWZ3Og/float_property_negative_margin_css.php</link><category>CSS</category><category>CSS</category><category>float</category><category>IE6</category><category>layout</category><category>margin</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Sun, 20 May 2007 05:19:30 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/05/float_property_negative_margin_css.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>tableレイアウトをやってた人も計算してからコーディングしてたと思います。CSSのfloatを使用したレイアウトにしても、floatの挙動を正確に覚えれば、緻密な構成が可能になります。以下は私が覚えたときのフロートレイアウトの考え方のまとめです。</p>
<h3>A.フロートの基本（フロートしたボックスとしないボックスの関係）</h3>
<p>良くあるHTML構造でフロートしてみます。div#wrapperの中のp#content1だけをフロートさせます。content1とcontent2にmarginを設定し、paddingとborderは全てゼロです。</p>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;div id="wrapper"&gt;
  &lt;p id="content1"&gt;
     ・・・
  &lt;/p&gt;
  &lt;p id="content2"&gt;
     ・・・
  &lt;/p&gt;
  &lt;p id="content3"&gt;
     ・・・
  &lt;/p&gt;
&lt;/div&gt;</code></pre>
<p class="css_title">CSS</p>
<pre class="css"><code>#wrapper {
   width: 450px;
   border: dotted 1px;
}
#content1 {
   float: left;
   width: 160px;
   margin: 20px;
}
#content2 {
   margin: 10px;
}
#content3 {
   margin: 0px;
}</code></pre>
<div id="wrapper-tmp">
<p id="content1">
CONTENT1<br />
Morbi eu arcu id ipsum aliquet lobortis. Pellentesque suscipit, quam at condimentum pharetra, nunc eros rhoncus metus, id luctus enim arcu vel risus.In urna leo, porttitor eget, tempus ut, fermentum non, libero. Ut aliquet. Ut consequat. Proin varius, dui ac mollis pulvinar, elit nulla feugiat nisi, a vehicula nisl magna ut nulla. Mauris gravida nunc ut augue. Donec leo. Aenean lorem mi, gravida eget, adipiscing ut, aliquam nec, mauris.	</p>
<p id="content2">
CONTENT2<br />
Suspendisse at neque sit amet ante hendrerit porta. Maecenas sit amet ante quis pede ultricies consectetuer. Curabitur pellentesque faucibus nisi. Maecenas a dolor at massa fringilla adipiscing. Donec blandit vehicula nisi. Aliquam sem neque, tincidunt eu, ornare nec, tristique vitae, felis.	</p>
<p id="content3">
CONTENT3<br />
Sed vel orci nec dui ullamcorper porttitor. In dapibus, sapien vitae semper gravida, nisi sem cursus justo, vel luctus quam velit a metus. Pellentesque sed lorem. Sed fringilla accumsan lacus. Suspendisse feugiat ipsum ac odio.<br />
	Donec adipiscing. Fusce placerat vehicula nunc. Donec nibh. Duis purus. Quisque diam. In mattis erat quis ligula. Nulla cursus risus. Ut tempus tincidunt enim. Suspendisse mi tellus, consequat et, vehicula ac, facilisis sed, pede. Praesent odio. Nam lorem. Suspendisse feugiat. Morbi justo arcu, dapibus vitae, aliquam sit amet, pulvinar ac, mauris.</p>
</div>
<ul>
<li>要素の<strong>ボックス</strong>をフロートするので、<strong>何らかの形で幅（通常width）</strong>が指定されていること。</li>
<li>フロートされたボックスは外側のボックスの上、端（左右）に、マージンを縁として配置される<sup><a href="#footnote-1-123" id="footnote-link-1-123" title="See the footnote.">1</a></sup> </li>
<li><strong>テキスト：</strong>先行するフロートされたボックスに続くテキストは隣接する。隣接しなければ回り込む。</li>
<li><strong>ボックス：</strong>フロートされたボックスに続くフロートじゃないボックスは、フロートボックスは無かったかのように配置される。重なる場合はフロートされたボックスの背面にボックスの背景とボーダーが隠れる。</li>
</ul>
<p><span id="more-123"></span></p>
<h4>外側のボックスの高さについて</h4>
<p><img src="http://www.techdego.com/upload/2007/05/float-11.gif" width="300" height="190" alt="floated div with nocontent" class="imageframe imgalignleft" />フロートボックスは、それを内包しているボックスの高さを広げてくれません。従って、上記の例で、#container2も（つまり内包ブロック全て）フロートさせると、以下のようにdiv#wrapperの高さはゼロになります。これを何とかするのが<a href="http://www.techdego.com/2007/01/floatcssclearfix.php">clearfixハック</a>ですが、他にも、ボックスの最後にカラの要素（フロートしてない）を入れて<code>clear:both</code>すれば高さが出ます。</p>
<h3 class="clearer">B.ボックスのフロート基本（フロートボックス同士の挙動）</h3>
<ul>
<li>内側のフロートボックスのマージンが、外側のボックスの端につっかかるまで移動する。<br />
<img src="http://www.techdego.com/upload/2007/05/float-2.gif" width="250" height="154" alt="floatd explanation 2" class="imageframe" /></li>
<li>次のフロートボックスのマージン外縁は、最初のフロートボックスの端に突っかかるまで移動する。</li>
<li><strong>カラム落ち：</strong>外側のボックスに入りきらないと、フロートボックスは下段におちて外側のボックス端まで移動する。<br />
<img src="http://www.techdego.com/upload/2007/05/float-3.gif" width="250" height="154" alt="floatd explanation 3" class="imageframe" /></li>
<li>上記の際に途中にフロートボックスの端があると、そこでつっかかって止まる。<br />
<img src="http://www.techdego.com/upload/2007/05/float-4.gif" width="250" height="154" alt="floatd explanation 4" class="imageframe" /></li>
</ul>
<h3>C.ネガティブマージンによるフロート</h3>
<p>通常HTMLの記述ではsidebarは以下のようにdiv#sidebarはdiv#maincontentの後にあります。<br />
これをマイナスマージンでsidebarをmaincontentの左に持っていくやり方の考え方です。実際のレイアウト（fixed, liquid, elasticなど）については別途記事にする予定です。</p>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;div id="wrapper"&gt;
  &lt;p id="maincontent"&gt;
     ・・・
  &lt;/p&gt;
  &lt;p id="sidebar"&gt;
     ・・・
  &lt;/p&gt;
&lt;/div&gt;</code></pre>
<p>float: left；の場合で説明します。</p>
<ul>
<li>基本：左にフロートされたボックスの後に、さらに左にフロートされたボックスがある場合、後のボックスのマージン左辺が、前のボックスのマージン右辺より左にあってはならない。同じ事が右にフロートされたボックスにも当てはまる。<br />
<img src="http://www.techdego.com/upload/2007/05/neg-margin1.png" width="372" height="366" alt="negative margin 1" class="imageframe" /></li>
<li>最初のボックスのマージン右辺を左側に大きく振ります（margin-right: -200pxとか）。<br />
<img src="http://www.techdego.com/upload/2007/05/neg-margin2.png" width="432" height="262" alt="negative margin 2" class="imageframe" /></li>
<li>次のフロートされたボックスの左辺が、前のボックスの右辺を探しながら、右からやってくる。<ins>2007/5/24追記：下の図では外側の縁（#wrapper）に、前のボックスの右辺がつっかかって止まっているようになっていますが、実際には引っ掛かるのは左辺なので、最初のボックスのmargin-left:100pxとかがないとこのようになりません。すみませんでした</ins><br />
<img src="http://www.techdego.com/upload/2007/05/neg-margin3.png" width="464" height="135" alt="negative margin 3" class="imageframe" /></li>
<li>最初のボックスは、次のフロートボックスを左へ受け流し、左に振ったマージン右辺のところまで、次のボックスがフロートして配置される。<br />
<img src="http://www.techdego.com/upload/2007/05/neg-margin4.png" width="465" height="136" alt="negative margin 4" class="imageframe" /></li>
<li>別のケースで、最初のボックスの左マージンを大きくとって、次のボックスの左辺を大きく右に振ります（margin-left: -200pxとか）。<br />
<img src="http://www.techdego.com/upload/2007/05/neg-margin5.png" width="506" height="137" alt="negative margin 5" class="imageframe" /></li>
<li>後にフロートされたボックスの左辺が、前のボックスの右辺にぶつかるまで左へ流れて止まる。<br />
<img src="http://www.techdego.com/upload/2007/05/neg-margin6.png" width="534" height="168" alt="negative margin 6" class="imageframe" /></li>
</ul>
<h3>D.IE6様対策</h3>
<p>ここではフロートレイアウトに影響するバグと対策だけ記述します。</p>
<h4>1.widthの解釈</h4>
<p><img src="http://www.techdego.com/upload/2007/05/ie6quirksmode.png" width="465" height="233" alt="IE6 quirks mode" class="imageframe" /><br />
有名なwidthの解釈の違いです。レイアウト上は致命的です。「widthのある属性にpaddingやborderを使わない」ということにつきます。<br />
「floatにはwidthを指定する」「widthとpadding, borderを使わない」を合わせると、</p>
<p class="note">floatした要素にはpadding, borderを使わない。</p>
<p>になります。paddingしたい場合はHTML構造で中にもう一つコンテナを作ってそこでpaddingやborderを指定するようにします。そうすればレイアウト上の苦労は少なくなります。</p>
<h4>2.&#8221;have layout&#8221;問題</h4>
<p>&#8220;have layout&#8221;プロパティを持つ要素はサイズや位置がコントロールされます。持ってない要素では親要素に従ってレイアウトされます。<br />
&#8220;have layout&#8221;になるのは以下のような場合です。</p>
<ol>
<li>body, table, tr, td, img, hr, input, select, textarea, button, iframe, embed, object, applet, marqueeの各要素</li>
<li>position: absolute; が指定された要素</li>
<li>float: が指定された要</li>
<li>display: inline-block; が指定された要素</li>
<li>width, height が指定された要素</li>
</ol>
<p>&#8220;have layout&#8221;にはいろんな問題があります。以下は一部です。</p>
<dl>
<dt>テキストが回り込まずにボックスになる。</dt>
<dd>
本来（フロートしてない）テキストに関しては、フロートしたボックスの周りに回り込むべきですが、haslayoutの場合、ボックス型になってしまいます。これを避けるには、haslayoutにならないようにするしかないようです。<br />
<img src="http://www.techdego.com/upload/2007/05/iehaslayoutbug.gif" width="512" height="168" alt="IE haslayout bug" class="imageframe" /></dd>
<dt>widthを指定していても、幅が勝手に広がる。</dt>
<dd>
widthを指定しているボックスは大きくしないであふれたテキストは次行に送って欲しいところですが、haslayoutの場合、はみ出したテキスト分だけwidthを無視して幅を広げてしまいます。これも、has layoutにならないようにするか、widthのあるボックスの内側にボックスを作ってそこにテキストを流すことで回避できます。<br />
<img src="http://www.techdego.com/upload/2007/05/iehaslayoutbug2.png" width="386" height="127" alt="IE haslayout bug 2" class="imageframe" /></dd>
</dl>
<h4>3. margin double 問題</h4>
<p>私はこのマージンが二倍になってしまう問題に良く出くわします。ただ、見てすぐわかるのと、解決方法が簡単なので、覚えるだけです。フロートしている要素にdisplay:inline;を足すだけです。他のブラウザには影響しません。<br />
<img src="http://www.techdego.com/upload/2007/05/doublemargin.png" width="368" height="200" alt="doublemargin.png" class="imageframe" /></p>
<h4>4. その他のバグ</h4>
<dl>
<dt>duplicate character　問題</dt>
<dd>
ボックスの最後の数文字が、ボックスの下に重複して出現するバグです。連続する2つ以上のコメントが、フロートした要素のあいだに入っていることが2回以上あると発生します。<br />
このような現象が出たら、連続するHTMLコメントを疑ってください。</dd>
<dt>peek-a-boo バグ</dt>
<dd>
フロートした要素の後の、フロートしていない要素が、消えてしまう現象で、なぜかページをリロードすると出現します。この現象の発生条件は、①フロート要素の後にフロートしていない要素があり、②その後にclearした要素があり、それがフロートした要素に接触していて、③これらを内包する親ボックス要素にwidthやheightが設定されいない、かつ背景の色かイメージが設定されている。です。<br />
解決するにはフロートした要素に<code>position: relative;</code>を付け加えるだけです。</dd>
</dl>
<p>結局FirefoxかOperaでレイアウトを確認して、正しくレイアウトされてから、IE6で確認し、おかしかったら同じ現象のバグを検索するしかないでしょう。</p>
<ol class="footnotes">
<li id="footnote-1-123">「垂直マージンの相殺」については別途記事にする予定ですが、フロートとは関係ありません。  <a href="#footnote-link-1-123"></a></li>
</ol>
]]></content:encoded><description>tableレイアウトをやってた人も計算してからコーディングしてたと思います。CSSのfloatを使用したレイアウトにしても、floatの挙動を正確に覚えれば、緻密な構成が可能になります。以下は私が覚えたときのフロートレイアウトの考え方のま</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/05/float_property_negative_margin_css.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/05/float_property_negative_margin_css.php</feedburner:origLink></item><item><title>テキストを画像に変換するプラグインwp-DJTR</title><link>http://feedproxy.google.com/~r/techdego/~3/Ejn1co9KTkk/wp-djtr.php</link><category>DJTR</category><category>Plugin</category><category>WordPress</category><category>DJTR</category><category>image replacement</category><category>multibyte</category><category>plugin</category><category>wordpress</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Wed, 18 Apr 2007 08:01:06 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/04/wp-djtr.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>以前に作成したDJTR（Dynamic Japanese Text Replacement）をwordpressのプラグインにしました。true type font(ttf)から画像を生成するものです。</p>
<p>同様のプラグインに<a href="http://hiromasa.zone.ne.jp/blog/archives/598/">hiromasa.zone :o) » wp-tegaki をつくってみる</a>, <a href="http://blog.slaven.net.au/wordpress-plugins/image-replacement-wordpress-plugin/">Image Replacement WordPress Plugin - Development on a Shoestrin</a> などが既にあるので、いまさら感がありますし、こっちはコードも汚いです（直し途中です）。基本的にやっていることは同じです。仕様は違いますが。</p>
<p><img class="djtr" alt="こんなやつです" width="106" height="16" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%81%93%E3%82%93%E3%81%AA%E3%82%84%E3%81%A4%E3%81%A7%E3%81%99&amp;fcol=%2388FF00&amp;fsize=12" /></p>
<h3>機能・仕様</h3>
<ul>
<li>関数（wp-djtr()）により、テンプレートでテキストを変換。</li>
<li>インライン変換により、投稿中で変換するテキストを指定。</li>
<li>画像は背景透過（PNG-8形式なのでIEでもハックなしで透明になります）、背景色指定も可。</li>
<li>widthで画像を分割するピクセル数を指定することによる、複数行にわたるテキストの画像化。</li>
<li>ffamilyでフォントファイルを指定することによる複数のフォントの使い分け。</li>
<li>一度生成した画像はキャッシュして高速(?)表示</li>
</ul>
<span id="more-120"></span>
<h3>インストール</h3>
<ol>
<li>以下よりzipファイルをダウンロードし解凍、wp-DJTRフォルダごとpluginsフォルダにアップロードして、activateしてください。</li>
<li> true typeフォント(ttf)は同梱していません。ttfファイルをwp-DJTRフォルダに入れてください。</li>
<li> cacheフォルダとconfig_djtr.phpに書込み属性を与えてください（７００でイケるはずですが）。</li>
<li> 'DJTRというメニューから、アップロードしたttfファイルを指定して保存（Update Options）、同ページ下部に文字画像が出ていることを確認してください。</li>
</ol>
<p class="download">ダウンロード　:　 <a class="downloadlink" href="http://www.techdego.com/wp-content/plugins/download-monitor/download.php?id=1" title="{version,Version ,} downloaded 1591 times" >wp-DJTR 0.5.5.zip (1591)</a></p>
<h3>使用方法</h3>
<ol>
<li>インライン変換：投稿中の下記フォーマットを画像（imgタグ）に変換します。
<p><strong>&lt;!-- djtr [options] --&gt;変換対象テキスト&lt;!-- any text --&gt;</strong></p>
<p>例：&lt;!-- djtr fsize=20&#038;fcol=#F30&#038;width=400 --&gt;ほげほげ&lt;!--  --&gt;</p>
<p><img class="djtr" alt="ほげほげ" width="102" height="25" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92&amp;fsize=20&amp;fcol=%23F30&amp;width=400" /></li>
<li>タグ変換：このブログの記事タイトルのようにテンプレート中で記述する際の関数です。
<p><strong>wp_djtr( string text, [string options]);</strong></p>
<p>例： wp_djtr( get_the_title(), "ffamily=sazanami-gothic.ttf&#038;width=500&#038;bcol=#050" );</p>
</li>
<li>options
<p><strong>フォーマット：　option1=value1&#038;option2=value2&#038;...</strong></p>
<table cellpadding="2" cellspacing="5">
<tr valign="top" align="left">
<th>fcol</th>
<td>フォントの色</td>
<td>fcol=#FOFOFO / fcol=#A0B</td>
</tr>
<tr valign="top" align="left">
<th>fsize</th>
<td>フォントの大きさ(pt)</td>
<td>fsize=12 (12ポイント)</td>
</tr>
<tr valign="top" align="left">
<th>bcol</th>
<td>背景色（transbgがfalseの場合）</td>
<td>bcol=#FAFAFA / bcol=#FFF</td>
</tr>
<tr valign="top" align="left">
<th>transbg</th>
<td>背景色透明</td>
<td>transbg=true / transbg=false</td>
</tr>
<tr valign="top" align="left">
<th>width</th>
<td>折り返しの幅(px)<br/>(imgタグを分割生成し、並べて出力)</td>
<td>width=400</td>
</tr>
<tr valign="top" align="left">
<th>ffamily</th>
<td>フォントファイル名</td>
<td>ffamily=sazanami_gothic.ttf (大文字小文字を区別)</td>
</tr>
</table>
</li>
</ol>

<h3>テンプレート変更の具体例</h3>
<p>テンプレートを変更して記事のタイトルを画像化する場合の変更の例です。</p>
<p>記事タイトルを表示する、<code>the_title();</code>を探します。記事を表示するテンプレート（index.php, single.php, archive.phpなど）には必ずあるはずです。デフォルトテーマのindex.phpでは以下のような記述です。</p>
<p class="php_title">PHP</p>
<pre class="php"><code>&lt;h2&gt;&lt;a href="&lt;?php the_permalink() ?&gt;" ..(中略).. &lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h2&gt;</code></pre>
<p>上記の<code>&lt;?php the_title(); /&gt;</code>の部分を、以下のように変更します。</p>
<p class="php_title">PHP</p>
<pre class="php"><code>&lt;?php wp_djtr( get_the_title(), "ffamily=hoge.ttf&amp;width=500" ); ?&gt;</code></pre>

<h3>注意点等</h3>
<ul>
<li>描画スピードを得るため、ＤＢではなく、デフォルト設定をファイル(config_djtr.php)で渡します。同ファイルが書込み可能であれば、optionsメニューから設定するとこのファイルが変更されるはずです。変更できない場合は直接ファイル内容を変更してください。</li>
<li>フォントファイル(.ttf)を直接ダウンロードさせないように.htaccessファイルを同梱しています。</li>
<li>GPLライセンスです。改変、再配布は自由です。ただしコードは作者の意図に反して非常に分かりにくくなっています <img src='http://www.techdego.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>インライン変換は２つのコメントに挟まれたテキストを２つのコメントごとimgタグに変換します。プラグインを外すと普通のテキストとして表示されます。</li>
<li><ins datetime="2007-04-20T22:13:00+09:00">簡単な禁則処理をします。処理されない文字があれば、djtr.phpの行頭／行末禁則文字（コメントしてあります）に追加してください。</ins></li>
<li><del>テストは不十分です。おそらく不具合も一部有るかと思います。</del>使って不具合があれば、コメントでご報告いただけると助かります。</li>
</ul>
<h3>変更履歴</h3>
<ul>
<li>2007/4/19: Ver0.3.9 リリース</li>
<li>2007/4/20: Ver0.4.0 基本的な禁則処理をするようにしました。追い出し処理します。字間は調節しません（できてません）。</li>
<li>2007/5/1: Ver0.4.3 PHP4でエラーが出るバグを修正。ファイルをUTF-8で保存。</li>
<li>2007/5/9: Ver0.4.9 初期設定時のバグを修正。get_wp_djtr関数を追加。プラグイン説明からのリンク修正。</li>
<li>2007/5/30:Ver0.5.0 stripos（PHP4でエラー）を使わないように変更。</li>
<li>2007/5/31:Ver0.5.5 オプション画面での動作を変更。エラー処理のバグを修正。</li>
</ul>
]]></content:encoded><description>以前に作成したDJTR（Dynamic Japanese Text Replacement）をwordpressのプラグインにしました。true type font(ttf)から画像を生成するものです。
同様のプラグインにhiromasa.zone :o) » wp-tegaki をつくってみる, Image Replacement WordPress Plugin - Development on a Shoestrin などが既にあるので、いまさら感がありますし、こっちはコードも汚いです（直し途中です）。基本的</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/04/wp-djtr.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/04/wp-djtr.php</feedburner:origLink></item><item><title>WordPress2.2の改変・新機能</title><link>http://feedproxy.google.com/~r/techdego/~3/pVlFFZ2kVmE/wordpress22_whatsnew.php</link><category>WordPress</category><category>jQuery</category><category>prototype.js</category><category>wordpress</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Wed, 18 Apr 2007 04:24:56 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/04/wordpress22_whatsnew.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>もうすぐ（<del>4/22</del> 4/23<sup><a href="#footnote-1-121" id="footnote-link-1-121" title="See the footnote.">1</a></sup> 予定<sup><a href="#footnote-2-121" id="footnote-link-2-121" title="See the footnote.">2</a></sup> ）WordPress2.2がリリースされますが、変更内容（<a href="http://codex.wordpress.org/Version_2.2">Version 2.2 « WordPress Codex</a>）のうち、</p>
<p>(1)<del>the_tagをサポート</del><ins>今回はサポートしない?代わりにWidget対応。</ins><br />
(2)core JSをjQueryへ変更</p>
<p>の２つが気になります。</p>
<p>(1)については、UTW(Ultimate Tag Warrior)の立場がどうなっちゃうのか？ということで、(2)については、過去のprototypeをベースにしていたプラグインが動かなくなる可能性があるということです。</p>
<p>(1)はUTWとは共存可能なような気がするので、いいのですが(2)がより深刻で、確かprototype.jsとjQuery.jsは今でも共存できないのではないでしょうか。<br />
出来れば問題ないのですが、例えば私が使用してるプラグインだとshare thisは、WPに付属しているprototype.jsを読み込んでいますので、しWPに付属しなくなったら当然動きません。</p>
<p>ただ、ここら辺何かしらサポートがあるかも知れませんので、対処はver2.2が出てから考えるということでしょうかね。
<ol class="footnotes">
<li id="footnote-1-121">遅延を発表  <a href="#footnote-link-1-121"></a></li>
<li id="footnote-2-121">5/1現在、1週間以上のリリース遅れ  <a href="#footnote-link-2-121"></a></li>
</ol>
]]></content:encoded><description>もうすぐ（4/22 4/231 予定2 ）WordPress2.2がリリースされますが、変更内容（Version 2.2 « WordPress Codex）のうち、
(1)the_tagをサポート今回はサポートしない?代わりにWidget対応。
(2)core JSをjQueryへ変更
の２つが気になります。
(1)については、UTW(Ultimate Tag Warrior)の立場がどうなっちゃうのか？ということで、(2)につい</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/04/wordpress22_whatsnew.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/04/wordpress22_whatsnew.php</feedburner:origLink></item><item><title>wp-djtrのテスト投稿</title><link>http://feedproxy.google.com/~r/techdego/~3/g5QFpWbLPOk/djtrtest.php</link><category>DJTR</category><category>Plugin</category><category>WordPress</category><category>DJTR</category><category>PHP</category><category>plugin</category><category>wordpress</category><category>wp djtr</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Sun, 15 Apr 2007 03:35:23 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/04/djtrtest.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>仕事が忙しくて（いいわけ）あまりに更新できていないのでプラグインwp-djtr(Dynamic Japanese Text Replacement)を公開して取り繕っておこうと思いますが、公開する前にテスト投稿（これ）をします。<br />
テスト環境がEUC-JPで、本番がUTF-8なので、本番を使わないと文字化けテストできなんです。</p>
<p><img class="djtr" alt="というわけで、ここから全てのテキストを画像に置換してます。置換された画像" width="540" height="16" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%81%A8%E3%81%84%E3%81%86%E3%82%8F%E3%81%91%E3%81%A7%E3%80%81%E3%81%93%E3%81%93%E3%81%8B%E3%82%89%E5%85%A8%E3%81%A6%E3%81%AE%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%92%E7%94%BB%E5%83%8F%E3%81%AB%E7%BD%AE%E6%8F%9B%E3%81%97%E3%81%A6%E3%81%BE%E3%81%99%E3%80%82%E7%BD%AE%E6%8F%9B%E3%81%95%E3%82%8C%E3%81%9F%E7%94%BB%E5%83%8F&amp;ffamily=LOGOM_LP.ttf&amp;width=540&amp;fsize=11" /><img class="djtr" alt="はwidthで指定されたピクセルで折り返されるはずです。画像が多用されるた" width="525" height="16" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%81%AFwidth%E3%81%A7%E6%8C%87%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%81%A7%E6%8A%98%E3%82%8A%E8%BF%94%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AF%E3%81%9A%E3%81%A7%E3%81%99%E3%80%82%E7%94%BB%E5%83%8F%E3%81%8C%E5%A4%9A%E7%94%A8%E3%81%95%E3%82%8C%E3%82%8B%E3%81%9F&amp;ffamily=LOGOM_LP.ttf&amp;width=540&amp;fsize=11" /><img class="djtr" alt="め、表示が遅くなる可能性があります。実際にはこんなに長い文章を置換するこ" width="539" height="16" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%82%81%E3%80%81%E8%A1%A8%E7%A4%BA%E3%81%8C%E9%81%85%E3%81%8F%E3%81%AA%E3%82%8B%E5%8F%AF%E8%83%BD%E6%80%A7%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E5%AE%9F%E9%9A%9B%E3%81%AB%E3%81%AF%E3%81%93%E3%82%93%E3%81%AA%E3%81%AB%E9%95%B7%E3%81%84%E6%96%87%E7%AB%A0%E3%82%92%E7%BD%AE%E6%8F%9B%E3%81%99%E3%82%8B%E3%81%93&amp;ffamily=LOGOM_LP.ttf&amp;width=540&amp;fsize=11" /><img class="djtr" alt="とはないでしょう。" width="128" height="14" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%81%A8%E3%81%AF%E3%81%AA%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%80%82&amp;ffamily=LOGOM_LP.ttf&amp;width=540&amp;fsize=11" /></p>
<p><img class="djtr" alt="テス" width="31" height="15" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%83%86%E3%82%B9&amp;fcol=%23052&amp;bcol=%23F38&amp;width=40" /><img class="djtr" alt="トそ" width="29" height="15" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%83%88%E3%81%9D&amp;fcol=%23052&amp;bcol=%23F38&amp;width=40" /><img class="djtr" alt="の2" width="28" height="16" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%81%AE2&amp;fcol=%23052&amp;bcol=%23F38&amp;width=40" /></p>
<p><img class="djtr" alt="テス" width="31" height="15" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%83%86%E3%82%B9&amp;fcol=%23052&amp;width=40&amp;transbg=true" /><img class="djtr" alt="トそ" width="29" height="15" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%83%88%E3%81%9D&amp;fcol=%23052&amp;width=40&amp;transbg=true" /><img class="djtr" alt="の3" width="28" height="16" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%81%AE3&amp;fcol=%23052&amp;width=40&amp;transbg=true" /></p>
<p><img class="djtr" alt="テストその4" width="93" height="16" src="http://www.techdego.com/wp-content/plugins/wp-DJTR/image.php?t=%E3%83%86%E3%82%B9%E3%83%88%E3%81%9D%E3%81%AE4&amp;ffamily=LOGOM_LP.ttf" /></p>
<p>う～ん、透過背景がまだちょっとおかしいか？</p>
]]></content:encoded><description>仕事が忙しくて（いいわけ）あまりに更新できていないのでプラグインwp-djtr(Dynamic Japanese Text Replacement)を公開して取り繕っておこうと思いますが、公開する前にテスト投稿（これ）をします。
テスト環境がEUC-JPで、本番がUTF-8なので、本番を使わないと文字化けテ</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/04/djtrtest.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/04/djtrtest.php</feedburner:origLink></item><item><title>macのdock風インターフェイス：dojo:Fisheye</title><link>http://feedproxy.google.com/~r/techdego/~3/YLbO9yfjqdw/dojofisheye.php</link><category>JavaScript</category><category>customize</category><category>dojo</category><category>JavaScript</category><category>mac</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Sun, 01 Apr 2007 00:29:53 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/04/dojofisheye.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>当サイトのポップアップバーで、dockの様なインターフェイスを可能にしているJavaScriptライブラリ jodo の widget :Fisheyeですが、次の理由で外すことにしました<sup><a href="#footnote-1-114" id="footnote-link-1-114" title="See the footnote.">1</a></sup> 。</p>
<p><a href="http://www.techdego.com/2007/04/dojofisheye.php/dojo-fisheye/" rel="attachment wp-att-115" title="Dojo Fisheye"><img src="http://www.techdego.com/upload/2007/04/dojofisheye.thumbnail.gif" alt="Dojo Fisheye" class="imageframe" height="54" width="200" /></a></p>
<ul>
<li>dojoが呼び込むファイル（srcファイル群）が多いせいか、表示までに時間がかかり、重くなること</li>
<li>dojoが作成するコードがXHTMLバリデータでしかられまくること</li>
</ul>
<p>dojo.jsの導入が簡単なだけに、ちょっと残念です。以下は導入のメモ。</p>
<span id="more-114"></span>
<p><strong>ライブラリ名称：　</strong>Dojo 0.4.2　AJAX Edition<br />
<strong>配布元：　</strong><a href="http://dojotoolkit.org/">The Dojo Toolkit | The JavaScript Toolkit</a></p>
<h3>ファイルのアップロード</h3>
<p><a href="http://dojotoolkit.org/"></a>圧縮ファイルをダウンロードして解凍すると、中にデモとか説明とかいろいろ入っていて、何が必要なのか分からんが、とりあえず全部まとめてdojoとかのディレクトリとしてアップロード。なぜか、&#8221;src&#8221;フォルダ全部と&#8221;dojo.js&#8221;だけでは動かなかった。他にも必要なファイルがあるらしい。</p>
<h3>javascript の記述</h3>
<p>&lt;head&gt;に下の javascript コードを記述。</p>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;script type="text/javascript" src="path-to-dojo/dojo.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
    dojo.require("dojo.widget.*");
    function load_app(sURL){ location.href=sURL; }
&lt;/script&gt;</code></pre>

<p>「function load_app()」は、アイコンをクリックしたときの動作を設定しますので適当に変えます。</p>
<p>&lt;body&gt;のアイコンを表示させるところに下記タグを記述。</p>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;div dojoType="FisheyeList"
   itemWidth="100"
   itemHeight="100"
   itemMaxWidth="200"
   itemMaxHeight="200"
   orientation="horizontal"
   effectUnits="2"
   itemPadding="10"
   attachEdge="top"
   labelEdge="top"
   enableCrappySvgSupport="true"&gt;
&lt;div dojoType="FisheyeListItem"
   onclick="load_app('リンクURL');"
   iconsrc="path-to-img.png"
   caption="タイトル"&gt;
&lt;/div&gt;
&lt;div dojoType="FisheyeListItem"
   onclick="load_app('リンクURL');"
   iconsrc="path-to-img.jpg"
   caption="タイトル"&gt;
&lt;/div&gt;
...
&lt;/div&gt;</code></pre>

<h3>FisheyeListの設定項目</h3>
<ol>
<li>itemWidth, itemHeight : 縮小時の画像サイズ</li>
<li>itemMaxWidth, itemMaxHeight : マウスオーバー時の画像サイズ</li>
<li>orientation ： &#8220;horizontal&#8221;が横並びで&#8221;vertical&#8221;が縦</li>
<li>effectUnits : 拡大／縮小するアイコンの範囲</li>
<li>itemPadding ： アイコンの間隔</li>
<li>attachEdge ： アイコンが拡大する方向（固定する端）</li>
<li>labelEdge ： タイトルを表示させる位置</li>
<li>enableCrappySvgSupport : svgを利用した拡大縮小</li>
</ol>
<h3>dojo:Fisheyeが変更した後のHTML</h3>
<p>Fisheyeがロードされると前出のHTMLは以下のようになります。場合によってはCSSで見た目を設定してあげます。</p>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;div class="dojoHtmlFisheyeListBar" style=" "&gt;
   &lt;div class="dojoHtmlFisheyeListItem" style=" " dojoinsertionindex="0"&gt;
      &lt;img dojoattachevent="onMouseOver;onMouseOut;onClick"
         dojoattachpoint="imgNode"
         class="dojoHtmlFisheyeListItemImage"
         src="path-to-image.png"
         style=" "/&gt;
   &lt;div dojoattachpoint="lblNode"
      class="dojoHtmlFisheyeListItemLabel"
      style=" "&gt;タイトル&lt;/div&gt;
   &lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;</code></pre>
<ol class="footnotes"><li id="footnote-1-114">もうちょっとしたら  <a href="#footnote-link-1-114"></a></li></ol>]]></content:encoded><description>当サイトのポップアップバーで、dockの様なインターフェイスを可能にしているJavaScriptライブラリ jodo の widget :Fisheyeですが、次の理由で外すことにしました1 。


dojoが呼び込むファイル（srcファイル群）が多いせいか、表示までに時間がかかり、重</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/04/dojofisheye.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/04/dojofisheye.php</feedburner:origLink></item><item><title>class名に「表示に関する指示を組み込む」ことについて</title><link>http://feedproxy.google.com/~r/techdego/~3/YRUzeqXBKLA/classname.php</link><category>CSS</category><category>class name</category><category>clearfix</category><category>CSS</category><category>XHTML</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Sat, 31 Mar 2007 05:17:32 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/03/classname.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>先般人気記事になった「<a href="http://www.techdego.com/2007/03/usefulcss.php" title="最初に指定しておくと便利なCSS">最初に指定しておくと便利なCSS </a>」の<a href="http://b.hatena.ne.jp/entry/http%3A//www.techdego.com/2007/03/usefulcss.php" title="はてなブックマーク">はてブのコメント</a>を見ていて、確かに<span class="comment">class=&#8221;hidden&#8221;などは、「htmlは文書構造を示すものなので、class名が視覚的な内容を示すものは好ましくないと思いますよ。class名にredとかblackとか付けているのと同じ</span>」だと思いました。ただ、便利なので止められないし、結構使っているサイトもあったりするので、「Web標準じゃないけど、いいか」と思っていました。</p>
<p>ところが先日、 個人的に勝手に私のCSSの師匠（？）と思っている大藤幹さんが、</p>
<blockquote title="「clearfix」ハックを適切に使用する"><p>多くのサイトでは、このハックが必要となる要素に対して「clearfix」というクラス名をそのまま追加指定して使用していることが多いが、それではXHTML側に表示に関する指示を組み込むのと同じだ。クラス名はハックと切り離して考え、構造的にその要素にふさわしいものを指定し、その名前をハックのセレクタ部分で指定するようにしよう。</p>
<p><small><cite>出典：Web Designing 2007年4月号 p115</cite></small></p></blockquote>
<p>と書いていらっしゃるのを見て、ごもっともと思ったと同時に、このことについて考えてみたくなりました。<span id="more-113"></span>というのも、私が<a href="http://www.techdego.com/2007/01/floatcssclearfix.php">clearfixを記事に</a>したとき、同氏の本「スタイルシート　サンプル＆リファレンス」の「ボックスの最後でfloatをクリアする」というサンプルを参考にしたからです。そこではclass名に「clearfix」を使っていました。</p>
<h3>「構造とプレゼンテーションの分離」の前提</h3>
<p>構造（structure）とプレゼンテーションの分離は「そうしようとする」ことを前提とします。構造とプレゼンテーションについてはW3Cの<a href="http://www.w3.org/TR/WAI-WEBCONTENT/">Web Content Accessibility Guidelines 1.0</a>を参照してください。また、ここでは「idを使用するかclassを使用するか」という議論は別の機会にすることとします。</p>
<blockquote cite="http://www.zspc.com/documents/wcag10/index.html#content-structure"><p>文書は、適切な構造を表す要素でタグ付けし、見栄えなどの表示方法を制御するためには、表示を制御するための要素や属性を使用せずに、スタイルシートを利用する。</p></blockquote>
<h3>Class名はsemantics（意味論、記号論）に配慮して付ける</h3>
<p>Class名に&#8221;red&#8221;とかはまずいです。W3Cの&#8221;<a href="http://www.w3.org/QA/Tips/goodclassnames">Use class with semantics in mind - Quality Web Tips</a>&#8220;によれば、</p>
<blockquote><p><strong>良いClass名</strong><br />
&#8220;warning&#8221;, &#8220;important&#8221;, &#8220;downloadableImage&#8221;, &#8220;submenu&#8221;は良い名前です。これらはその要素が意味することを説明しており、変えることはなさそうです。&#8221;warning&#8221;は見た目がどう変わろうとwarningでしょうから。</p>
<p><strong>悪いClass名</strong><br />
&#8220;border4px&#8221;, &#8220;lighttext&#8221;,&#8221;prettybackground&#8221;は悪い名前です。borderは5pxにするかもしれないし、backgroundはしばらくすれば「pretty」じゃなくなるかもしれません。lighttextをCSSでdarkなtextに変えたら、HTMLのClass名もdarktextに変えたくなるでしょうし、その際に漏れが発生しそうです。</p></blockquote>
<p>となっています。要すれば、</p>
<p class="note">CSSが適用されなかったとして、それでも意味を持っているか？</p>
<p>という事だと思いますが、いかがでしょうか？</p>
<p>ちなみに最新のCSS3の<a href="http://www.w3.org/TR/2000/WD-css3-selectors-20001005/">CSS3 module: W3C Selectors</a>におけるclassの説明箇所では<q>class=&#8221;pastoral blue aqua marine&#8221;</q>という例が（正しい使用法として）出てきます（笑）。</p>
<h3><strong>微妙な例</strong></h3>
<p>微妙だと私が思うのは以下のような、実際のCSSで見かけるClass名です。</p>
<ol>
<li>&#8220;oddline&#8221;,&#8221;evenline&#8221;,&#8221;lastline&#8221;</li>
<li>&#8220;flex&#8221;</li>
<li>&#8220;thumbnail&#8221;</li>
<li>&#8220;noprint&#8221;</li>
<li>&#8220;priority1&#8243;</li>
<li>&#8220;hide&#8221;</li>
</ol>
<p>あまり沢山は思いつきませんでした。すべてCSSでどうにかすることを前提にしてClassを付けているという意図において、表現に関するClass名ではないでしょうか。</p>
<p>例えば&#8221;oddline&#8221;,&#8221;evenline&#8221;は良くある、奇数行と偶数行で交互に背景色を変えて見やすくするためだと思われます。現状（CSS2.1では）Class名を付けずにCSSで交互に背景色を指定することは簡単ではない（？）でしょう。なので、このClass名は肯定され得ると考えます。また&#8221;oddline&#8221;は構造的な意味を表していると考える人もいるでしょう。</p>
<p>class=&#8221;hide&#8221;というのは完全に表現に関する指示になるのでよろしくないということになるかと思いますが、構造上、読者に見せるつもりはないという意味(semantics)も成り立つのではないかと思えてなりません。</p>
<h3>問題のclass=&#8221;clearfix&#8221;について</h3>
<p>例えば、（HTML）文書に「左図のように、．．．」と書いてあるとき、厳密には「CSSはユーザー側でも変えられるから必ずしも左に図があるとは限らない」となり、従ってこの文章がよろしくないということになるのでしょうか。だとすれば、「以下のように．．．」「次の．．．」も同じようによろしくないということになります。しかし、「左に図がある」ことを意図するため、その図の要素にclass=&#8221;alignleft&#8221;と記述することはsemanticと言えなくもない？と思うわけです。</p>
<p>同様にclass=&#8221;clearfix&#8221;は、floatしている要素があって、そのブロックでclearしたい、しなければ（HTMLに）書いてあることが正しく理解できない、ということを表すために使用するなら良いような気がします。</p>
<p>理屈上は<strong>clearfixすることを前提としてHTMLを記述するのがいけない</strong>のです。わかってます。本音は、要するに（class=&#8221;clearfix&#8221;などは）便利なので、これから出てくるであろう、「これは悪」みたいな風潮を出来るだけ「ゆるく」したいだけなのです <img src='http://www.techdego.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded><description>先般人気記事になった「最初に指定しておくと便利なCSS 」のはてブのコメントを見ていて、確かにclass=&amp;#8221;hidden&amp;#8221;などは、「htmlは文書構造を示すものなので、class名が視覚的な内容を示すものは好ましくないと思いますよ。class名にredとかblackとか付けているの</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/03/classname.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/03/classname.php</feedburner:origLink></item><item><title>レイアウトをユーザーが変更可能に</title><link>http://feedproxy.google.com/~r/techdego/~3/pktZg3ibgZg/layout_change_bar.php</link><category>CSS</category><category>JavaScript</category><category>WordPress</category><category>byteFX</category><category>CSS</category><category>customize</category><category>dojo</category><category>JavaScript</category><category>layout</category><category>skin</category><category>wordpress</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Fri, 30 Mar 2007 02:23:13 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/03/layout_change_bar.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>（JavaScriptがオンであれば）このブログのメニューバーの右側、RSSアイコンの左にマウスを当てるとリンクが見えるはずです。クリックしてバーを出し、用意されているレイアウトを選択すると、そのレイアウトに変更されます。選択されたレイアウトはクッキーを利用してクライアントPCに保存されるので、次回以降も同じレイアウトになるという仕組み。</p>
<p><img src="http://www.techdego.com/upload/2007/03/slidebar.png" alt="Slidebar button" class="imageframe" height="129" width="509" /><br />
<span id="more-109"></span></p>
<ul>
<li>・レイアウトのCSS変更は、WordPressのテーマ&#8221;<a href="http://www.plaintxt.org/themes/sandbox/">Sandbox</a>&#8220;の&#8221;skin&#8221;という方法を利用しています。</li>
<li>・スライドバーのアイデアはWordPressのテーマ&#8221;<a href="http://nalinmakar.com/hemingwayex">Hemingway Ex</a>&#8220;から拝借しました。実装スクリプトはオリジナルです。</li>
<li>・開閉ボタン（？）の明滅、およびスライドバーの開閉は、JavaScriptライブラリ&#8221;<a href="http://www.devpro.it/bytefx/">byteFX</a>&#8220;を使用しています。</li>
<li>・<del datetime="2007-04-03T23:15:01+09:00">macのdockのようなレイアウト選択の動作は、JavaScriptライブラリ&#8221;<a href="http://dojotoolkit.org/">dojo widget</a>&#8220;の&#8221;fisheye&#8221;を利用しています。</del><sup><a href="#footnote-1-109" id="footnote-link-1-109" title="See the footnote.">1</a></sup> </li>
</ul>
<p>結局使いやすいレイアウトは見ている環境や人の好みによって違うので、ユーザーに選択してもらうのが一番ではないかということです。</p>
<p>但し．．．</p>
<ul>
<li>・一部のレイアウトはIEでは正しく表示されていません。修正中です。</li>
<li>・さすがにこれだけライブラリを読み込むと重くなりすぎるのでdojoについては（使ってみたかっただけなので）しばらくしたら外そうと思います。<sup><a href="#footnote-2-109" id="footnote-link-2-109" title="See the footnote.">2</a></sup> </li>
</ul>
<p>なので、スライドバー開閉ボタンは分かりにくくしてあります。
<ol class="footnotes">
<li id="footnote-1-109">現在は使用していません。  <a href="#footnote-link-1-109"></a></li>
<li id="footnote-2-109">外しました。  <a href="#footnote-link-2-109"></a></li>
</ol>
]]></content:encoded><description>（JavaScriptがオンであれば）このブログのメニューバーの右側、RSSアイコンの左にマウスを当てるとリンクが見えるはずです。クリックしてバーを出し、用意されているレイアウトを選択すると、そのレイアウトに変更されます。選択さ</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/03/layout_change_bar.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/03/layout_change_bar.php</feedburner:origLink></item><item><title>簡単な水滴の描き方：Photoshop</title><link>http://feedproxy.google.com/~r/techdego/~3/OqYaqFxtghk/waterdrop.php</link><category>Photoshop</category><category>Photoshop</category><category>tutorial</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Thu, 22 Mar 2007 11:45:21 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/03/waterdrop.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>後輩にphotoshopで水滴の描き方の書いてある本を貸してくれといわれ、すぐ出てこなかったので、自分で作れと言ったら出来ないらしい。私は覚えていたので教えてあげました。簡単なのですが、何をやるとどう変わるかの勉強には丁度良いと思います。<br />
<img src="http://www.techdego.com/upload/2007/03/wd15.gif" alt="wd15.gif" class="imageframe" height="69" width="214" /></p>
<p><span id="more-84"></span></p>
<h3>１．水滴を乗せる画像を用意して、新規レイヤーを作成。</h3>
<p>すみません適当な画像がありませんでした。<br />
<img src="http://www.techdego.com/upload/2007/03/wd1.gif" alt="wd1.gif" class="imageframe" height="67" width="210" /></p>
<h3>２．新規レイヤーに楕円を描画</h3>
<p>分かり易くするため、黒で描画します。また、ここではシェイプレイヤーを使っていますが普通の図形で構いません。<br />
<img src="http://www.techdego.com/upload/2007/03/wd2-2.gif" alt="wd2-2.gif" class="imageframe" height="375" width="246" /><br />
<img src="http://www.techdego.com/upload/2007/03/wd2-1.gif" alt="wd2-1.gif" class="imageframe" height="71" width="214" /></p>
<h3 class="clearer">３．レイヤースタイル→「スクリーン」を適用</h3>
<p>レイヤーをダブルクリックしてレイヤースタイルボックスを表示します。そして、全体の描画モードをスクリーンにして、下絵を透過させます。<br />
<img src="http://www.techdego.com/upload/2007/03/wd5.gif" alt="wd5.gif" class="imageframe" style="float: left" height="460" width="678" /></p>
<h3 class="clearer">４．ベベルとエンボス→「ベベル（内側）」を適用</h3>
<p>水滴のふくらみと光沢を出します。ここで重要なのは「シャドウモード」で「比較（明）」を選ぶことにより、影を薄くすること。あと「高度」を高め（私は45°以上を推奨します）にすることです。サイズを変えることによって水滴のふくらみが変わりますので調整してください。<img src="http://www.techdego.com/upload/2007/03/wd7.gif" alt="wd7.gif" class="imageframe" style="float: left" height="71" width="214" /> <img src="http://www.techdego.com/upload/2007/03/wd6.gif" alt="wd6.gif" class="imageframe" style="float: left" height="462" width="677" /></p>
<h3 class="clearer">５．ドロップシャドウ→「乗算」「10～15%」を適用</h3>
<p>水滴の下の影を出します。<img src="http://www.techdego.com/upload/2007/03/wd9.gif" alt="wd9.gif" class="imageframe" style="float: left" height="70" width="213" /><br />
<img src="http://www.techdego.com/upload/2007/03/wd8.gif" alt="wd8.gif" class="imageframe" style="float: left" height="461" width="677" /></p>
<h3 class="clearer">６．光彩（内側）→「乗算」「20%程度」「灰～黒」を適用</h3>
<p>水滴の内側に出来る影を出します。影の線が強く出ないようにします。チョークは「0」、この水滴の大きさだとサイズは「10px以上」にした方が良いでしょう<img src="http://www.techdego.com/upload/2007/03/wd11.gif" alt="wd11.gif" class="imageframe" style="float: left" height="71" width="214" />。<br />
<img src="http://www.techdego.com/upload/2007/03/wd10.gif" alt="wd10.gif" class="imageframe" style="float: left" height="462" width="676" /></p>
<p class="clearer">立体感を出すためにさらにシャドウ（内側）を微量適用しました。</p>
<p><img src="http://www.techdego.com/upload/2007/03/wd12.gif" alt="wd12.gif" class="imageframe" style="float: left" height="460" width="676" /></p>
<h3 class="clearer">【完成（その１）】</h3>
<p>一応完成です。このレイヤースタイルを新規スタイルに登録して、ブラシで書いてあげるといろんな形の水滴が出来ます。水飴みたいですね。すみません。<br />
<img src="http://www.techdego.com/upload/2007/03/wd15.gif" alt="wd15.gif" class="imageframe" style="float: left" height="69" width="214" /></p>
<p class="clearer">本当は下絵が水の屈折で歪んでなければいけませんね。それをちょっとやってみたいと思います。</p>
<h3 class="clearer">1.クリッピングマスクを作成</h3>
<p>下絵（レイヤー1）のレイヤーをaltキーを押しながら、楕円（シェイプレイヤー）の上へ持っていき、コピーを作成。「レイヤー1のコピー」を右クリック→「クリッピングマスクを作成」。<br />
これで、楕円で切り取られたレイヤーができました（一番下のレイヤーを不可視にすると分かります）。ただ、「スクリーン」モードで描画しているので覆い焼きのようになってしまいました。<br />
<img src="http://www.techdego.com/upload/2007/03/wd18.gif" alt="wd18.gif" class="imageframe" style="float: left" height="467" width="301" /><br />
<img src="http://www.techdego.com/upload/2007/03/wd19.gif" alt="wd19.gif" class="imageframe" height="70" width="214" /></p>
<h3 class="clearer">2.描画モードの修正</h3>
<p>このままでは上のレイヤーと下のレイヤーが「スクリーン」モードで2重に描画されるので、修正します。<br />
まず、楕円のレイヤーを選択、「描画モード」→「比較（明）」に変更。<br />
<img src="http://www.techdego.com/upload/2007/03/wd20.gif" alt="wd20.gif" class="imageframe" style="float: left" height="302" width="249" /><br />
<img src="http://www.techdego.com/upload/2007/03/wd21.gif" alt="wd21.gif" class="imageframe" style="float: left" height="69" width="213" /></p>
<h3 class="clearer">3.水滴の球状感を出す</h3>
<p>一番上の「レイヤー1のコピー」を選択、メニュー→「フィルター」→「変形」→「レンズ補正&#8230;」を選択。「歪みを補正」スライドを樽状方向へ少し移動させる（劇的に歪ませると変です）。下絵が残ってぶれたようになりました。<br />
<img src="http://www.techdego.com/upload/2007/03/wd22.gif" alt="wd22.gif" class="imageframe" style="float: left" height="275" width="315" /><br />
<img src="http://www.techdego.com/upload/2007/03/wd23.gif" alt="wd23.gif" class="imageframe" style="float: left" height="69" width="213" /></p>
<h3 class="clearer">4.下絵を消す</h3>
<p>楕円のレイヤーをダブルクリックしてレイヤースタイルパネルを表示。「ノックアウト（抜き）」を「浅い」に変更。<br />
<img src="http://www.techdego.com/upload/2007/03/wd24.gif" alt="wd24.gif" class="imageframe" style="float: left" height="458" width="678" /></p>
<h3 class="clearer">【完成（その２）】</h3>
<p><img src="http://www.techdego.com/upload/2007/03/wd25.gif" alt="wd25.gif" class="imageframe" style="float: left" height="70" width="214" /><br />
一番上のレイヤーに軽くブラー（ガウス）をかけました。</p>
]]></content:encoded><description>後輩にphotoshopで水滴の描き方の書いてある本を貸してくれといわれ、すぐ出てこなかったので、自分で作れと言ったら出来ないらしい。私は覚えていたので教えてあげました。簡単なのですが、何をやるとどう変わるかの勉強には丁</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/03/waterdrop.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/03/waterdrop.php</feedburner:origLink></item><item><title>透明マント！？（すごい技術）</title><link>http://feedproxy.google.com/~r/techdego/~3/tR_KeTLYx0c/invisible-manteau.php</link><category>Link</category><category>Link</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Tue, 20 Mar 2007 12:19:10 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/03/invisible-manteau.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>古いネタらしいが、YouTubeのは初めて見た．．．ということで、「特定の波長の光だけではあるものの、物体を迂回させることができる装置（device）を開発した」ということらしい。<img src="http://www.techdego.com/upload/2007/03/invisibility_cloak.jpg" alt="透明マント" class="imageframe" style="float: left" height="308" width="410" /></p>
<p>元ネタはこちら：<a href="http://science.howstuffworks.com/invisibility-cloak.htm">Howstuffworks &#8220;How Invisibility Cloaks Work&#8221;</a><br />
元ネタにはハリーポッターの透明マント？を思い出すと書いてあるが、私はドラえもんの「透明マント」を思い出した（世代の差か？）。</p>
<p class="clearer">これ以外にも、ちょっとだけすごい技術があったけど、そういうブログじゃないのでこのくらいにしておきます。</p>
<p><embed width="390" height="350" wmode="transparent" style="margin-left:10px" type="application/x-shockwave-flash" src="http://www.youtube.com/v/VVi7mZ6XX3w"/></p>
<p>ネタバレ：実はそんなに大した技術じゃなかった．．．<br />
<span id="more-82"></span><br />
<a href="http://science.howstuffworks.com/invisibility-cloak3.htm">Howstuffworks &#8220;The Complete System&#8221;</a></p>
]]></content:encoded><description>古いネタらしいが、YouTubeのは初めて見た．．．ということで、「特定の波長の光だけではあるものの、物体を迂回させることができる装置（device）を開発した」ということらしい。
元ネタはこちら：Howstuffworks &amp;#8220;How Invisibility Cloaks Work&amp;#8221;
元ネタにはハリーポッターの透</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/03/invisible-manteau.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/03/invisible-manteau.php</feedburner:origLink></item><item><title>画像置換の方法あれこれ</title><link>http://feedproxy.google.com/~r/techdego/~3/iYi4oNQHQ7w/image_replacement_methods.php</link><category>CSS</category><category>DJTR</category><category>CSS</category><category>DJTR</category><category>image replacement</category><category>Link</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Sat, 17 Mar 2007 10:12:30 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/03/image_replacement_methods.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>画像置換（Image Replacement：IR）はWeb標準を意識するなら出来るだけ使わない方が良いといわれています。文字として、コピーや他の読み取り可能な情報が画像になってしまうことや、文字の大きさが変えられなくなるなどの弊害が発生するからでしょう。しかし、IRを使ったときの読みやすさや目に入りやすさ、そしてサイト全体の印象を考えると、使ったときの効果が大きいと考え、このブログでも記事タイトル（の一部）に採用してみました。</p>
<p>画像置換にはいくつかの手法があるのですが、どれも長所と短所があり、方法の選択に悩まされました。画像置換の方法について私なりの分類でまとめておきます。</p>
<p>なお、画像置換以前にテキスト画像の動的（自動）生成の方法にも種類があるのですが、これについては「<a href="http://www.techdego.com/2007/01/phscss_dynamic_text_replacemen.php" target="_blank">PHS+CSS Dynamic Text Replacement(改）</a>」をご参照下さい。ここではDTR（Dynamic Text Replacement）という手法を使っています。</p>
<p>まず、テキストを画像に置換する方法により、以下の2種類に分類できるかと思います。一般に画像置換というと１を指している場合が多いです。</p>
<ol>
<li>CSSの背景画像（background-image）に置換する</li>
<li>&lt;img&gt;タグで置換（挿入）する</li>
</ol>
<p><span id="more-81"></span><br />
初めにまとめますが、以下を含む「全てのブラウザーで正しく表示できる方法」はありません。</p>
<ol>
<li>Mac版IEやWin版IE5などの古いブラウザ
<li>テキストブラウザ
<li>音声ブラウザ
</ol>
<p>また、一般にCSSオン＆画像表示オフのブラウザでテキストをどう表示するかが問題になります。JavaScriptで対処するという手もありますが、その場合はJavaScriptオフだったらダメです。一般にブラウザ設定で問題になるのは以下の点です。</p>
<ol>
<li>CSSがオンかオフか
<li>画像表示がオンかオフか
<li>JavaScriptがオンかオフか
<li>テキストの大きさ設定
</ol>
<hr/>
<h3>1. CSSの背景画像に置換する方法。</h3>
<p>テキストをCSSで非表示にして、背景画像を代わりに表示する方法。背景画像を使用しつつ、CSSが切られていたりCSS非対応なブラウザには相応のテキストを表示する。</p>
<p><strong>1-A. CSSオフの時はテキストを表示する。CSSオン＆画像オフの時は何も表示されない方法。</strong></p>
<p><strong>1-A-1.Fahrner Image Replacement(FIR)</strong> :<br />
最も初期の画像置換方法。無意味な&lt;span&gt;タグが入る。CSSオン＆Imageオフの状況で何も表示されない。音声ブラウザで読み上げられない。</p>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;h3 id="header"&gt;
    &lt;span&gt;Image Replacement&lt;/span&gt;
&lt;/h3&gt;</code></pre>
<p class="css_title">CSS</p>
<pre class="css"><code>#header {
   height: 25px;
   background-image: url(header-image.gif);
}
#header span {
   display: none;
}</code></pre>
<p><strong>1-A-2.Phark Method</strong> :<br />
text-indent:マイナス値によりテキストを非表示する方法。不要な&lt;span&gt;が無い。CSSオン＆Imageオフで何も表示されない。</p>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;h3 id="header"&gt;
   Image Replacement
&lt;/h3&gt;</code></pre>
<p class="css_title">CSS</p>
<pre class="css"><code>#header {
   text-indent: -9999px;
   overflow: hidden;
   background: url(header-image.gif);
   width: auto;
   height: 25px;
}</code></pre>
<p><strong>1-B. CSSオフの時はテキストを表示し、CSSオン＆画像オフの時もテキストを表示させる方法。</strong></p>
<p><strong>1-B-1.single pixel img FIR</strong> :<br />
透明な1ｘ1ピクセルのgifを挿入し、そこのaltにテキストを入れることにより、CSSオン＆Imageオフでそのaltを表示させる。無意味な&lt;img&gt;と&lt;span&gt;タグが入る。音声ブラウザで読み上げられない。</p>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;h3 id="header"&gt;
   &lt;img src="transparent1x1.gif" alt="Image Replacement" /&gt;
   &lt;span&gt;Image Replacement&lt;/span&gt;
&lt;/h3&gt;</code></pre>
<p class="css_title">CSS</p>
<pre class="css"><code>#header {
   height: 25px;
   background-image: url(header-image.gif);
}
#header span {
   display: none;
}</code></pre>
<p><strong>1-B-2. Gilder/Levin Method</strong> :<br />
背景画像をテキストの前面に持ってきてテキストを見えなくする方法。CSSオン＆Imageオフでは下のテキストが表示される。無意味な&lt;span&gt;タグが入る。また、画像は透過であってはならない。さらにブラウザでテキストを巨大にすると、画像の下からはみ出して見える。現在までのIRの中で最も優れているといわれている（by Web creators 2007年4月号）。</p>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;h3 id="header"&gt;
   &lt;span&gt;&lt;/span&gt;Image Replacement
&lt;/h3&gt;</code></pre>
<p class="css_title">CSS</p>
<pre class="css"><code>#header {
   height: 25px;
   position: relative;
}
#header span {
   background: url(header-image.gif) no-repeat;
   position: absolute;
   width: 100%;
   height: 100%;
}</code></pre>
<p>いろいろな事情があってのことでしょうけれど、「CSSオン＆Imageオフ」という状況に対処するために、空タグを入れたり、透過GIFをあきらめるというのは「？」な気がします。</p>
<p><strong>1-B-3. Thierry Image Placement </strong>:<br />
背景画像をテキストの前面に持ってくるために、透明のgifを&lt;img&gt;で配置する、または&lt;a&gt;アンカーを入れる方法。CSSオン＆Imageオフでは下のテキストが表示される。&lt;a&gt;アンカーを入れる場合は無意味ではない（マークアップはおかしい）。画像は透過であってはならない。CSSオン＆Imageオフ状況下でテキストを巨大にすると、はみ出し部分が欠ける。</p>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;h3&gt;
&lt;a title="hoge" href="#"&gt;&lt;/a&gt;
Image Replacement
&lt;/h3&gt;</code></pre>
<p class="css_title">CSS</p>
<pre class="css"><code>h3 {position:relative}
h3 a {
	z-index:1;
	position:absolute;
	top:0;
	left:0;
	width:500px;
	height:1.7em;
	min-height:25px;
	background:transparent url(header-image.gif) no-repeat;
}</code></pre>
<hr/>
<p><strong>2.imgタグで置換する方法（未完）</strong></p>
<p>&lt;h?&gt;&lt;img src=&#8221;header-image.gif&#8221;&gt;&lt;/h?&gt;として、置換する方法。CSSのオン、オフに左右されない。Imageオフの場合はalt（=置換対象テキスト）が表示される。（一般にそのままでは）&lt;a&gt;タグのマウスオーバーに反応しない。</p>
<ol>
<li>既存テキストはimgタグのalt=に入れる方法<br />
クローラーが&lt;h?&gt;内の「テキスト」を読む場合は正しくクロールされない（？）。一部のtext-browserではaltを表示してくれない。</li>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;h3&gt;
   &lt;img src="header-image.gif" alt="Image Replacement" /&gt;
&lt;/h3&gt;</code></pre>
<li>画像を既存テキストの上に持ってきて隠す方法<br />
クローラーとtext browserの問題に対処。画像が透過であってはならない。altに既存テキストを入れている場合、画像オフで既存テキストが2つ表示される。ブラウザでテキストを大きくすると下からはみ出す。</li>
<p class="html_title">HTML</p>
<pre class="html4strict"><code>&lt;h3&gt;
&lt;img src="header-image.gif" alt="Image Replacement" /&gt;
Image Replacement
&lt;/h3&gt;</code></pre>
</ol>
<p>２は調査中です。CSSによる方法を詳しく調べたわりに、実際採用さいようしているのは「2-1.既存テキストをimgタグのaltに入れる」というシンプルな方法です。画像を動的に生成するため、CSSの背景画像urlを動的に指定するのが面倒であることと、複数行に分かれる場合、画像も複数に分かれるため、結局&lt;span&gt;で囲まなければいけないことなどから、シンプルな方法を選びました。</p>
<p>今後このまま、&lt;a&gt;のマウスオーバーに反応させる方法を考え、その後に、本当に「クローラーがaltを見てくれないのか？」調べてみようと思います。</p>
]]></content:encoded><description>画像置換（Image Replacement：IR）はWeb標準を意識するなら出来るだけ使わない方が良いといわれています。文字として、コピーや他の読み取り可能な情報が画像になってしまうことや、文字の大きさが変えられなくなるなどの弊害が発生するから</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/03/image_replacement_methods.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/03/image_replacement_methods.php</feedburner:origLink></item><item><title>WordPress使用１ヶ月の感想（MovableTypeとの比較）</title><link>http://feedproxy.google.com/~r/techdego/~3/3VLr7Za5iBE/wordpress-remarks.php</link><category>WordPress</category><category>multibyte</category><category>PHP</category><category>plugin</category><category>theme</category><category>tips</category><category>wordpress</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Wed, 14 Mar 2007 10:39:54 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/03/wordpress-remarks.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><img src="http://www.techdego.com/upload/2007/03/photowp.jpg" alt="wordpress" class="imageframe" style="float: left" height="305" width="294" />（長文です！）MovableTypeは5ヶ月使用、WordPressはまだ1ヶ月ちょっとですが、WordPressを使っていて「すごい」と思うところと「おや？」と思うところを忘れそうなので、ここでまとめておきます。MovableTypeは1ヶ月間は朝から晩まで弄っていましたから、4ヶ月といっても相当の経験はあるかと思います。比較対象バージョンはMTは3.21ja、WPは2.1.2（本家版）です。</p>
<h3>１．インストールと初期設定</h3>
<p>ブログを公開し、始めの記事を書くまでについて。</p>
<p>MTはDBの選択肢が多く、その設定でとまどいますが、いろんなサイトに導入方法が書いてあるので問題ないでしょう。インストールしてから公開までも短期間で済みます。StyleSwitcherでCSSを選べばそれなりの見栄えになりますので、そこから投稿が開始できます。</p>
<p>WPの場合、まずME（Multilingal Edition）と本家どちらにするか？ですが、本家WPでは日本語が表示できない、または支障が起こるのでは？という疑問があると思います。意外とMEと本家版の違いを説明したサイトがありませんでした。実際には、本家WPでも日本語表示は問題ないといって良いでしょう。管理メニューの一部が（.moを入れても）英語のままになったり、日付表示がおかしくなったりしますが、すぐ修正できます。MEの方は知らないのでコメントできません。</p>
<p>さて、WPのインストールですが、これはMTと同様に簡単だと思います。私の場合、インストール後の設定やテーマの選定がMTより時間がかかりました。これは基本機能とやりたいことの差だと思います。MTの場合は単体で一応最低限の機能は付けてある感じだったのに対して、WPの場合は単体での機能より、プラグインやテーマでカスタマイズしていく設計思想なのだと思います。ただ、<span id="more-76"></span></p>
<ul>
<li> Tag機能やサイドバーWidgetまでプラグイン対応なのはどうかと思います。というのも、実際にプラグインを導入しようとして検索すると、TagまたはWidgetのプラグインは複数あり、どれが標準のもの（？）なのか迷うからです。</li>
<li> テーマも、私は初めデザインでテーマを決めましたが、それがプラグインに対応しているかどうかまで見極めないと、自分でカスタマイズしてからでないと思ったような表示にならないということで、最初の投稿までにカスタマイズが必要になってきます。この辺は「<a href="http://www.techdego.com/2007/02/wordpressinstall.php#comment-61" title="techdego">WordPressインストールしたら始めにやること</a>」をご覧下さい。</li>
<li> もう一つ、「ブログロール」という他サイトへのリンクを管理する機能があるのですが、これはなぜプラグインではないのか、ちょっと変な感じがしました。しかも、初期設定でWordPressの開発者の方々のブログにリンクが張られているのも、戸惑いました。どうなんでしょう？</li>
</ul>
<h3>２．再構築時間と表示時間</h3>
<ul>
<li>MTは基本的にスタティック・パブリッシングで、テンプレート毎にダイナミックパブリッシングにすることも出来ます。ただ、MTのダイナミックパブリッシングでは使用できないプラグインが発生することや、テンプレートの修正を伴うなど、気軽に切り替えられるものではありません。スタティック・パブリッシングでは再構築に相応の時間がかかります。レンタルサーバの環境によっては再構築中にtime outしてしまうこともあるようです。</li>
<li>WPは動的生成しかありません（静的にページを作るプラグインもあるようです）。再構築には全くストレスがありません。</li>
<li>表示時間ですが、環境や記事数などで違うので一概にどちらが早いとは言えません。ただ、あらかじめhtmlを吐き出してあるMTのスタティックより早いということは無いと思います。実際にはブログツールの問題ではなく、ページ内のコンテンツ量、画像、CSS、AJAXなどjsファイルの容量などの方が表示時間に影響すると思います。少なくとも私はWPを使っていると、いろんなプラグインを入れたくなる衝動にかられますので、表示時間は遅くなっていきます <img src='http://www.techdego.com/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' /> </li>
<li>なお、WPはHTMLヘッダーへの応答開始までの時間（phpを実行しているが出力はしていない時間）があります。以前ちょっとした実験をしたところ大体1000字程度の記事が800を越えると、パフォーマンスが落ち始めました。ただこれも、DBへのアクセス回数が多い（プラグインを入れている）と、その影響の方が大きいと思います。</li>
</ul>
<h3>３．エディター・アップローダ</h3>
<ul>
<li>記事を入力するエディターは重要ですが、基本構成ではリッチエディタ（TinyMCE）のあるWPに軍配が上がります。MTもリッチエディタをプラグインで入れられるので、カスタマイズすればどちらも 同じになるでしょう。</li>
<li>問題はWPのpタグを取る挙動（wpautop関数に関連）です。慣れましたが、始めはいくらpを入れてもリロードするとキレイに消えるので、面食らいました。Getting Startedなどのドキュメントに書いておいて欲しいと思います。</li>
<li>アップローダもプラグインでどちらも使いやすくできるので優劣付けがたいです。</li>
</ul>
<h3>４．英語の必要性</h3>
<ul>
<li>MTは日本語のドキュメント、サイトが充実しており、プラグインでも英語を意識することはほとんどありませんでした。一方WPでは、英語は避けて通れないのではないでしょうか。プラグインは日本語化も進んでいるとはいえ、まだ使えるもので英語のものも多く、当然それらは設定画面も英語です。インストール方法はみんな同じなので問題ないですが、使い方はプラグインによって様々なので、そこは英語を読まないといけない場面も出てきます。ただ、難しい英語ではないので根気よく読むことさえ出来れば問題ないと思います。</li>
</ul>
<h3>５．その他</h3>
<ul>
<li>
<h4>５－１．複数投稿者対応：</h4>
<p>MTもWPもCMSとしても使い方を想定してか、投稿者を複数登録することが出来ます。WPの方は、権限管理もできます。そしてほとんどのテーマが 各記事の下のメタ情報部分に&#8217;posted by (author)&#8217;を表示します。ただ、大部分の人が個人のブログとしての使い方をしている実情からは、複数投稿者対応こそ拡張機能にして、いちいち posted byを記事の下にデフォルトで入れる必要は無いと思います。</li>
<li>
<h4>５－２．データのインポート・エクスポート：</h4>
<p>データのインポート・エクスポートはWPが様々な他のブログ形式からのインポートやエクスポートをサポートしている点で優れているような気がしますが、バックアップという意味では、MTの方がDB丸ごと保存するのでやや便利です。WPはタグはエクスポートしてくれないのでしょうか（不明）？</li>
<li>
<h4>５－３．シングルページ対応</h4>
<p>WPでは、記事とは独立したページの作成・管理の機能が優れています。MTのようなテンプレートでの独立ページの作成も可能ですし、そのテンプレートを利用して日付とは関係ない固定ページを作ることもWPでは簡単です。</li>
<li>
<h4>５－４．トラックバックの扱い方：</h4>
<p>WPでは、デフォルトではトラックバックとコメントは同じコメント扱いになっていて、管理画面上もブログ上も同じになっています。初め「トラックバック機能がない！」と勘違いしてしまいました。MTでは別扱いです。</li>
<li>
<h4>５－５．マルチバイト文字への対応：</h4>
<p>これもMTでは問題ないのですが、WPの場合、いくつか気をつけなければならない点があります。例を挙げると、パーマリンクのURIの設定（WPでは投稿スラッグという）をタイトルから自動生成するときに、MT→日本語は取る。日本語しかなければエントリーの番号をURIにする。WP→日本語も英語もURLエンコード（&#8221;%20%20&#8243;みたいな文字がズラーと続く）する。という違いがありますが、MTの方がスマートです。</li>
<li>
<h4>５－６．WPの面白い（すごい）基本機能：</h4>
<p>WPは基本はシンプルみたいに書きましたが、widgetやtagは基本ではないのに対して、以下のような凝った基本機能があります。</p>
<ul>
<li>smilies（ <img src='http://www.techdego.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ←これ）は基本機能</li>
<li>akismetというスパムフィルタが非常に優秀</li>
<li>管理画面がAJAX（Prototype+Scriptaculous）</li>
<li>管理画面のダッシュボードでブログにリンクしているサイトを自動表示</li>
<li>記事の入力中の自動保存機能</li>
</ul>
<p>一方で、akismetのwidgetがxhtml validatorを通らなかったり（マークアップがおかしい）、記事中の&lt;div&gt;を勝手に&lt;p&gt;に変えてくれたり（wpautopの機能）、たまに変なところに&lt;p&gt;を入れ&lt;/p&gt;を入れ忘れてくれたりして、荒削りな部分もあります。ただ、頻繁な更新を続けており、今でも使いやすいものが今後さらに使いやすくなっていくことは間違いないでしょう。</li>
</ul>
<h3>６．プラグイン、そして．．．カスタマイズ性</h3>
<ul>
<li>プラグインの数はどちらが多いか分かりません。とにかくMTもWPも数え切れないほどプラグインが出ています。WPの方がインストールするプラグインが多くなることは確かです。ただ、MTに比べるとプラグインの設定ページへのアクセスは楽です。</li>
<li>APIについてはMTはモジュールを厳格に（？）分けたPerlのAPIがあり、ドキュメントも日本語でかなり公開されています。一方のWPはPHPのAPIがありますが、ドキュメントはMTに比べると未完で、他人のプラグインを見ていると、適当にWPの内部関数を呼び出して使ったりしていることもあります。MTの本体コードを弄ろうとは思いませんでしたが、WPの場合、本体コードを弄りたくなります。まぁ、それだけフレキシブルだということです。</li>
</ul>
<ul>
<li>私見ですがカスタマイズの中毒性はWPの方が高いと思います。私などは、ともすればカスタマイズしていて記事を書かない日が増えてしまいます（本末転倒！）。でも、他のWordPressでブログしてる人で、メインは別の話題でもWPカスタマイズ関連カテゴリーもある人や、「WordPressの醍醐味」と言って、プラグインやテーマの入れ替えを好む方がMTよりも多い気がします。</li>
<li>fc2やlivedoorなどのブログサービスより、MTであれWPであれ、カスタマイズが面白いから、かゆいところに手が届くからやる人が多いのではないでしょうか。だとしたら、WPの方が弄り甲斐があるような気がします。PHPが分からないということで敬遠される方もいるかと思いますが、カスタマイズしたい気持ちがあれば、初めPHPが分からなくても他人のコードをマネしているうちになんとなく何処をどうすると変わるのか分かるようになってきます。そのうちPHPも読めるようになってくると思います。</li>
</ul>
<p>（未完）</p>
]]></content:encoded><description>（長文です！）MovableTypeは5ヶ月使用、WordPressはまだ1ヶ月ちょっとですが、WordPressを使っていて「すごい」と思うところと「おや？」と思うところを忘れそうなので、ここでまとめておきます。MovableTypeは1ヶ月間は朝から晩まで弄っていましたから、4ヶ月とい</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/03/wordpress-remarks.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/03/wordpress-remarks.php</feedburner:origLink></item><item><title>CSSの記述順とグループ化</title><link>http://feedproxy.google.com/~r/techdego/~3/CUkbOg-0MHo/cssgrouping.php</link><category>CSS</category><category>CSS</category><category>grouping</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Mon, 12 Mar 2007 06:48:32 PDT</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/03/cssgrouping.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>CSSを作成して長くなってくると、調整しようとするスタイルがどこにあるのか分からなくなってくるのは私だけでしょうか。プロのサイトのCSSを見ると、良くグループ化されて整理されていますが、マネしてもうまくグループにならないのです。ふつうはレイアウトに関わる部分から始める人が多いと思います。そして装飾関連のスタイルを当てていくのだと思います。大体は、DIV#IDによってレイアウト関連の指定をしているケースが多く、</p>
<p class="css_title">CSS</p>
<p class="css">div#header {&#8230;<br />
div#container {&#8230;<br />
div#sidebar {&#8230;<br />
div#footer {&#8230;</p>
<p>みたいな感じでwidthなどのスタイルを入れ、レイアウトを決めてます。問題はその後で、例えば#container内と#sidebar内に&#8221;title&#8221;というclassがあった場合、これはどこに書くべきなのだろうか。div#container .titleとdiv#sidebar .titleとかに分けて、（同じ記述だったとしても）#containerのグループと#sidebarのグループに分けて記述するのでしょうか。以下は、ある海外サイト（ブログ）のCSSのグループ化の例をCSSのコメントから抜き出したものです。</p>
<p class="text_title">TEXT</p>
<pre class="text">I.  Universal Reset ： aタグなどのリセット<br/>
II. html and body　　　　： html要素とbody要素<br/>
IV. typography　　　： いわゆる文字スタイルに関する事項<br/>
　　1. headings<br/>
　　2. header<br/>
　　3. sidebar<br/>
　　4. footer<br/>
　　5. listings<br/>
V.  layout　　　　　　　：いわゆるレイアウトに関する事項<br/>
VI. navigation　　　　：いわゆるナビゲーション（矢印など）に関する事項<br/>
VII.images and gravatars　：画像に関する事項<br/>
VIII.comments　　　　：コメント（ブログの）に関する事項<br/>
IX. forms 　　　　　　　　：フォームに関する事項</pre>
<p>これは「目的別？」にグループ化されている例ですが、これだと、実際には何処に書けば良いのか分からない場合も多いです。次の例です。<br />
<span id="more-78"></span></p>
<p class="text_title">TEXT</p>
<pre class="text">1. MARGINS, PADDING, ETC., FOR ALL LAYOUT DIVS　　　：レイアウト関連<br/>
2. GENERAL TAGS FOR CONTENT, MOSTLY　　　　：一般タグ指定<br/>
3. HEADINGS　　　　　　　　　　　　：ヘディング・ヘッダー部分<br/>
4. COMMENTS STUFF　　　　　 ：コメント部分<br/>
5. SIDEBAR STUFF　　　　　　　　：サイドバー部分<br/>
6. FOOTER STUFF　　　　　　　　 ：フッター部分<br/>
7. COMMON MULTI-PURPOSE ELEMENTS　：一般的な多目的要素</pre>
<p>この例だと、７の一般的な多目的要素に大量に書くことになります（実際そうなっていた）。最後に私がこれかな？と現在思っている分類です。かなり細かいですが。</p>
<p class="text_title">TEXT</p>
<pre class="text">1.Universal Reset<br/>
2.Layout blocks　 ：ブロックのレイアウト<br/>
3.Blocks inside　　：ブロック毎の指定<br/>
　　3-1. Header　　　　：ヘッダー部分<br/>
　　3-2. Menu　　　　　：メニューバー<br/>
　　3-3. Sidebar　　　 ：サイドバー<br/>
　　3-4. Footer　　　　：フッター<br/>
　　3-5. Comments　 ：コメント（フォーム含む）<br/>
　　3-6. Contents　　：記事関係<br/>
　　　　3-6-1. Title　　　　：記事タイトル関係<br/>
　　　　3-6-2. Meta　　　 ：記事の日付などの表示<br/>
　　　　3-6-3. Article　　 ：記事本文関係<br/>
　　　　3-6-4. Nav　　　　 ：ナビゲーション関係<br/>
4. Page specific　： 表示ページで特有<br/>
5. Browser specific　：ブラウザー毎に特有</pre>
<p>２で各ブロック（３の分類による）のレイアウトを決定しているが、レイアウトに関係のないものは全て排除し、３の各ブロック毎の記述に入れる。</p>
<p>３では徹底的にID(#sidebarなど)によるグループ化、その中の細かい設定はそのID（ブロック）内に。</p>
<p>４ではブログで例えればアーカイブページのみの設定など、デフォルトの設定を上書きする形で指定。</p>
<p>５のブラウザー毎の設定は実際には別ファイルを読み込ませるようになっている。hackなども使用。</p>
<p>実際にはこれでも例えば3-6-3Article（記事本文に関する記述）の部分に大量のスタイルが集中してますが、目的のスタイルが何処に記述されているか、大体の検討が付きます。</p>
<p>書き始めるときにルールを作成し、目次を作ってそのグループ内に記述することを心がければ、後の微調整の時に大分やりやすくなるはず。</p>
]]></content:encoded><description>CSSを作成して長くなってくると、調整しようとするスタイルがどこにあるのか分からなくなってくるのは私だけでしょうか。プロのサイトのCSSを見ると、良くグループ化されて整理されていますが、マネしてもうまくグループにな</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/03/cssgrouping.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/03/cssgrouping.php</feedburner:origLink></item><item><title>最初に指定しておくと便利なCSS</title><link>http://feedproxy.google.com/~r/techdego/~3/lC83-zwaRJc/usefulcss.php</link><category>CSS</category><category>CSS</category><category>tips</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Sat, 10 Mar 2007 18:23:43 PST</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/03/usefulcss.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>CSSのテンプレートを作成する際に、必ず入れていて便利だと思うものを紹介します。body要素に指定する事に関してはいろいろなところで語られているので、ここでは他のテーマなどのCSSを見ていて便利と思って取り入れているものなど。それ以外で私が始めに設定しておくHTMLタグとその設定です。</p>
<p class="css_title">CSS</p>
<pre class="css"><code>@charset "utf-8";
body {
   margin: 0;
   padding: 0;
   background-color: #ababab;
   color:#333;
   font-family: Arial, Helvetica, Verdana, "ヒラギノ角ゴPro W3", "Hiragino Kaku Gothic Pro", Osaka, "メイリオ", Meiryo, "ＭＳ Ｐゴシック", sans-serif;
   line-height: 1.5;
}</code></pre>
<p>bodyには比較的いろいろ設定します。<a href="http://www.designwalker.com/2007/02/css-body.html">CSS（スタイルシート）でbodyに設定しておくと便利な5つのポイント - デザインウォーカー | DesignWalker - ロサンゼルスで働くウェブデザイナーの日記</a>で語られているので割愛。<br />
font-familyについては、<a href="http://loconet.web2.jp/blog/archives/2007/02/cssfontfamily.html">CSSのfont-family：ヒラギノとＭＳ Ｐゴシックとメイリオの悩ましい関係 : webデザイナーのナナメガキ</a>にもあり、Web雑誌でも日本語はこの順序を推奨しているようです。<br />
ユニバーサルセレクタ(*)を使わないのは、<a href="http://www.lllcolor.com/archives/200702/margin0.html">*{ margin : 0 }はもう古い！？ | Emotional Web</a>他の最近の流れから。</p>
<p><span id="more-77"></span></p>
<p>次に、CSSを見ていると&#8221;Universal Reset&#8221;というグループ名で出てくる一般的なHTMLタグのデフォルトを変更する関係。設定内容はそのデザインでそれぞれなので、設定する先だけ見ていただければ良いかと思います。設定し忘れていて意図しない表示にならないようにするためのものです。</p>
<p class="css_title">CSS</p>
<pre class="css"><code>h1,h2,h3,h4,h5,h6 { line-height:1.6; }
p,li,dt,dl { line-height:1.6; }
p { margin:0 0 1em 0; }
ul li { list-style-type:none; }
a img { border:0; }
a:link {
   color:#078D00;
   text-decoration:none;
}
a:visited {
   color:#189B12;
   text-decoration:none;
}
a:hover {
   text-decoration:underline;
}
a:active {
   color:#666;
}
blockquote{
   margin-left:1em;
   padding-left:1em;
   border-left:2px solid #CCC;
   color:#CCC;
}
pre{
   width:100%;
   padding:1em 0;
   overflow:auto;
   border-top:1px dotted #333;
   border-bottom:1px dotted #333;
}
table{
   width:100%;
   border-spacing:2px;
   margin:1.5em 0;
}
table th, table td{ padding:0.3em 0.75em }</code></pre>
<p>blockquoteとpreは、ブログに特有かと思います。それ以外は、一般的な内容を設定しておきます。</p>
<p>最後に、classで指定しておくと便利なもの。これらはHTMLの特定要素をCSSで指定するのではなく、逆にHTML上でclassを指定することにより見た目を操作しようとするものです。</p>
<p class="css_title">CSS</p>
<pre class="css"><code>.hidden {
   display: none;
   visibility: hidden;
}
.alignright {
   float: right;
}
.alignleft {
   float: left;
}
.clear {
   clear: both;
}</code></pre>
<p>HTMLを見ていてclass=&#8221;hideen&#8221;とかなっているだけで、レイアウトが分かるという意味では使い勝手が良いので、私は必ず入れてます。<br />
あとは、<a href="http://www.techdego.com/2007/01/floatcssclearfix.php">clearfixハック</a>も必ず入れてます。自分用のテンプレートとしてこのような設定を一回作っておけば、便利かと。</p>
]]></content:encoded><description>CSSのテンプレートを作成する際に、必ず入れていて便利だと思うものを紹介します。body要素に指定する事に関してはいろいろなところで語られているので、ここでは他のテーマなどのCSSを見ていて便利と思って取り入れているものな</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/03/usefulcss.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/03/usefulcss.php</feedburner:origLink></item><item><title>wordpressが管理するテンプレートのファイル名</title><link>http://feedproxy.google.com/~r/techdego/~3/CXeTKdeer2Q/wordpress-themefilenames.php</link><category>Theme</category><category>WordPress</category><category>file</category><category>theme</category><category>wordpress</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Fri, 09 Mar 2007 08:48:36 PST</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/03/wordpress-themefilenames.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>いろんなthemeのファイルを見ていると、どれがWordPressが本来管理していて読み込むファイルで、どれがthemeが独自に作成したファイルなのかわからなくなってくる。theloop.phpをいろんなテーマで見かけるが、これはWordPress本来のファイルではなく、ループを切り出してブロック化したものに過ぎない。以下、WordPressが本来読み取るファイル名とその役割をメモ。なお、分類は私が勝手にしている。</p>
<table width="auto" height="263" border="0" cellpadding="3" cellspacing="4">
<tr>
<th width="16" scope="col">&nbsp;</th>
<th width="129" valign="top" scope="col">&nbsp;</th>
<th width="auto" scope="col">&nbsp;</th>
</tr>
<tr>
<td colspan="3" valign="middle">１．ページ内のブロック</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>header.php</strong></td>
<td>ヘッダー部分。他のテンプレートのget_header()によって呼び出される。</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>footer.php</strong></td>
<td>フッター部分。他のテンプレートのget_footer()によって呼び出される。</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>sidebar.php</strong></td>
<td>サイドバー部分。他のテンプレートのget_sidebar()によって呼び出される</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>comments.php</strong></td>
<td>コメント部分。主にsingle.phpのcomments_template()によって呼び出される。</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>comments-popup.php</strong></td>
<td>コメント部分のJavaScriptによるポップアップをする際のテンプレート。comments_popup_script()を使用し、comments_popup_link()によってリンクを表示した場合に呼び出される。</td>
</tr>
<tr>
<td colspan="3">２．ページの種類によるもの </td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>index.php</strong></td>
<td>デフォルトのpost表示用テンプレート</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>home.php</strong></td>
<td>メインページを表示するテンプレート。無ければindex.phpが使用される。</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>single.php</strong></td>
<td>個別記事（permalink）を表示する。無ければindex.php。</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>category.php</strong></td>
<td>カテゴリー毎のアーカイブを表示。無ければarchive.php、index.phpの順。</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>category-*.php</strong></td>
<td>*カテゴリーIDを指定。特定のカテゴリーのアーカイブを表示</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>date.php</strong></td>
<td>年別、月別、日別のアーカイブを表示（そんなリンクがあれば）。無ければarchive.php、index.phpの順。</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>＊.php</strong></td>
<td>＊任意。ページ（PAGE）を作成する際にテンプレートとして表示される。</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>page.php</strong></td>
<td>ページ（PAGE）のデフォルトテンプレート。無ければindex.php。</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>404.php</strong></td>
<td>404エラーの際に表示される。無ければindex.php。</td>
</tr>
<tr>
<td colspan="3" bordercolor="#666666">３．その他、ふつう開始ページにならないもの </td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>author.php</strong></td>
<td>著者ページを表示。何処で使うのかわからない．．．。無ければarchive.php、index.phpの順。</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>search.php</strong></td>
<td>ブログ内記事検索の結果を表示するページ。</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>paged.php</strong></td>
<td>長いページを複数分割する場合に2ページ目以降で使うページ。next_posts_link()等で呼び出される。無ければindex.php。</td>
</tr>
<tr>
<td>&nbsp;</td>
<td valign="top"><strong>attachment.php</strong></td>
<td>アタッチメント(編集画面からアップロードされた画像などのファイル)を表示する際のページ。サムネイルをクリックしたりすると呼ばれる。無ければindex.php。</td>
</tr>
</table>
<p>これで全部です。このリストはテーブルにした方が良さそうですね．．見づらい。</p>
]]></content:encoded><description>いろんなthemeのファイルを見ていると、どれがWordPressが本来管理していて読み込むファイルで、どれがthemeが独自に作成したファイルなのかわからなくなってくる。theloop.phpをいろんなテーマで見かけるが、これはWordPress本来のファイルではなく、ループを</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/03/wordpress-themefilenames.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/03/wordpress-themefilenames.php</feedburner:origLink></item><item><title>WordpressでTrackback URLのボックスを表示</title><link>http://feedproxy.google.com/~r/techdego/~3/CuJwDnbVgQk/wordpresstrackback-url.php</link><category>WordPress</category><category>code</category><category>CSS</category><category>tips</category><category>wordpress</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Tue, 06 Mar 2007 08:46:28 PST</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/03/wordpress%e3%81%a7trackback-url%e3%81%ae%e3%83%9c%e3%83%83%e3%82%af%e3%82%b9%e3%82%92%e8%a1%a8%e7%a4%ba.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>WordPressで、記事の最後にTrackback URLを表示してコピーできるようにしているテーマ（テンプレート）を未だに見たことが無いのだが、MovableTypeでは普通にあったので気になり、付けてみた。簡単だった。</p>
<p><img src="http://www.techdego.com/upload/2007/03/tb_url.gif" alt="TB_URL" class="imageframe" style="border: 1px solid #dddddd" height="119" width="368" /></p>
<p>テーマにもよるが、一般にはコメントを表示する&#8221;comments.php&#8221;か、個別記事を表示する&#8221;single.php&#8221;のテンプレートに以下のコードを、入れる。</p>
<p class="php_title">PHP</p>
<pre class="php"><code>&lt;?php if ('open' == $post-&gt;ping_status) : ?&gt;
   &lt;h3 id="trackback-url"&gt;&lt;?php _e('Trackback URL', 'hoge') ?&gt;&lt;/h3&gt;
   &lt;input onfocus="this.select()" readonly="readonly" value="&lt;?php trackback_url(); ?&gt;"
       class="tb_url" id="tb_url" name="tb_url" accesskey="x"/&gt;
&lt;?php endif; ?&gt;</code></pre>
<p>1行目は記事がトラックバックを受け取る設定になっているかを判断。</p>
<p>2行目はh3ではなくて&#8221;&lt;label id=&#8230;&#8221;の方が普通かもしれない。2行目の後半_eはご存じ翻訳ですが、無しでそのまま普通に&lt;h3&gt;Trackback URL&lt;/h3&gt;でもいい。</p>
<p>3行目は入力ボックスを表示してreadonly=&#8221;readonly&#8221;で変更できないようにしている。ボックスをクリックすると、onfocus=this.select()  のJSにより、全選択の状態になる。あとのclassとかidとかはCSSのため。</p>
<p>CSSで背景を暗くしたりしておくと入力ボックスと間違えず、よりよい。 ちなみに私は以下のようにしてます。</p>
<p class="css_title">CSS</p>
<pre class="css"><code>input#tb_url {
   font-family: "courier new", courier, monospace;
   background-color: #CCC;
   font-size: 1em;
   padding: 0.2em;
   width: 50%;
}</code></pre>
]]></content:encoded><description>WordPressで、記事の最後にTrackback URLを表示してコピーできるようにしているテーマ（テンプレート）を未だに見たことが無いのだが、MovableTypeでは普通にあったので気になり、付けてみた。簡単だった。

テーマにもよるが、一般にはコメントを表示</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/03/wordpresstrackback-url.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/03/wordpresstrackback-url.php</feedburner:origLink></item><item><title>JavaScriptの特徴とその扱い方メモ</title><link>http://feedproxy.google.com/~r/techdego/~3/9QUu0-ZWEJ4/javascript1.php</link><category>JavaScript</category><category>code</category><category>JavaScript</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Mon, 05 Mar 2007 03:24:58 PST</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/03/javascript1.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>JavaScriptはオブジェクト指向言語なようだが、スタイルや扱い方に特徴があることが、勉強していて分かってきた。いくつか重要と思われる特徴とその扱い方についてメモしておく。</p>
<p><strong>１．参照(Reference)</strong></p>
<p>参照は、オブジェクトへのポインター（実態が含まれている番地）を表す。この参照によるオブジェクトへのアクセスは、JavaScriptらしい柔軟なコードの書き方を可能にしている一つの要因だろう。</p>
<p>オブジェクトは複数のプロパティを含み、プロパティ自体がオブジェクトとなりうる。複数の変数が同じオブジェクトを参照している場合には、その内容を変えれば全ての同じ参照をしている変数（内）の値は変わる。</p>
<p class="js_title">JavaScript</p>
<pre class="javascript"><code>var obj = new Object(); 　　　//空のオブジェクトを生成
var objRef =obj; 　　　　　　　//オブジェクトを参照する
obj.theProperty = true; 　　　//オブジェクトにプロパティを作る
alert( obj.theProperty === objRef.theProperty);　//参照変数にも同じプロパティが。</code></pre>
<p>もう一つの例を。<span id="more-68"></span></p>
<p class="js_title">JavaScript</p>
<pre class="javascript"><code>var items = new Array( "あ","い","う"); //新しいArrayオブジェクトを生成
var itemsRef = items;　　　　　　　　　　//オブジェクトを参照する
items.push("え");　　　　　　　　　　　　　//pushはArrayオブジェクトに定義されているメソッド
alert( items.length  == itemsRef.length); //lengthももとからあるプロパティ</code></pre>
<p>要するに参照されている先のオブジェクトが変更されるのであって、変数自体は変わらない。</p>
<p>最後にこの場合はどうなるだろうか。</p>
<p class="js_title">JavaScript</p>
<pre class="javascript"><code>var item = "hoge"; //新しいstringオブジェクトを生成
var itemRef  =  item; //オブジェクトを参照
item +=  "baa"; //元のオブジェクトに"baa"を追加
alert( itemRef );</code></pre>
<p>実は3行目の時点で新しいstringオブジェクトが生成されて&#8221;hogebaa&#8221;となりitemはそれを参照する。itemRefはもとのオブジェクト&#8221;hoge&#8221;をポイントしたままである。<br />
従って、4行目では&#8221;hoge&#8221;が表示される。この程度なら分かるけれど、実際にコードしているときはオブジェクトが分かれることを意識しないと、バグが発見できないときがある。</p>
<p><strong>２．クロージャ</strong></p>
<p>JavaScriptでは、「関数の中に関数があるとき、内側の関数は外側の関数のローカル変数を保持する」。訳が分からなかった。例を挙げてみる。</p>
<p class="js_title">JavaScript</p>
<pre class="javascript"><code>var obj = document.getElementByID("main") // id="main"の要素を見つける
obj.style.border  =  "1px solid red";　　　　　　// そのborderのスタイルを変更
setTimeout( function({ obj.style.display = 'none'; }, 1000); // 1秒後にそのスタイルを消すコールバック関数をセット
//アラートを表示する一般的な関数
function delayedAlert( msg, time ) {
   setTimeout( function({ alert( msg); }, time );
}
delayedAlert( "hoge", 2000 );</code></pre>
<p>3行目のsetTimeoutはJavaScript特有の書き方だ。通常はsetTimeout ( &#8216;aFunction()&#8217;, time);として別のところにaFunctionを書きたくなるはず。上記のような書き方が出来るのは、クロージャのおかげだ。つまり、setTimeoutで定義されているfunction内の変数objは1行目で取得したobjを1秒後に参照する。</p>
<p>後段のdelayedAlertも同じく内部の関数のmsg,timeは外側の関数のmsg, timeの参照を保持している。</p>
<p>このクロージャを使って、グローバルスコープから変数を隠蔽することがある。以下のようなコードは、prototype.jsでも見ることができる。クロージャについて思い及ぶまで、なぜこんな風になっているのか分からなかった。</p>
<p class="js_title">JavaScript</p>
<pre class="javascript"><code>(function(){　　　　　　　　　　　　　　// 匿名関数でスコープを一段下げる
   var msg = "sage";　　　　　　　　// msgはグローバル変数ではない
   window.onunload = function(){ // グローバルオブジェクトwindow.onloadに関数を付加
      alert( msg );　　　　　　　　　　　// msgはクロージャによる参照
   } 　　　　　　　　　　　　　　　　　　　// close function
}(); 　　　　　　　　　　　　　　　　　　　// close function and execute</code></pre>
<p><strong>３．関数のオーバーロード</strong></p>
<p>JavaScriptでは関数のオーバーロードは簡単にできることではないのだが、いろんな手法によってこれを可能にしている。<br />
関数のオーバーロードのためには（１）引数の数を特定、（２）引数の型を特定、の２つが必要である。（１）についてはarguments変数によって関数内で参照可能である。</p>
<p class="js_title">JavaScript</p>
<pre class="javascript"><code>function sendMessage( msg, obj ) {
   if (arguments.length == 2) obj.handleMsg( msg );
   else alert( msg );
}
sendMessage( "wwwwwww。");
sendMessage( "orz", {
   handleMsg : function( msg ) {
      alert( "やってしまった" + msg );
   }
});</code></pre>
<p>（２）の引数の型については、typeofステートメントを使う。</p>
<p class="caution">An example to be come.</p>
<p><strong>４．スコープ</strong></p>
<p class="js_title">JavaScript</p>
<pre class="javascript"><code>var foo = "test";
if ( true ) {
   var foo = "hoge";
}
alert( foo );
function test() {
   var foo = "old test";
}
test();
alert( foo );</code></pre>
<p>5行目のalertではfooは&#8221;hoge&#8221;になり、最終行のalertではfooは&#8221;hoge&#8221;のままである。<br />
JavaScriptにおける変数のスコープは関数内であり、ブロックは関係ない。ブロックスコープの言語になれた人には厄介な現象が起こるので注意が必要である。</p>
<p>実際にはfoo（グローバル変数）はwindowオブジェクトのプロパティになる（OperaとSafariの一部バージョンを除く）。従って、</p>
<p class="js_title">JavaScript</p>
<pre class="javascript"><code>var test = "test";
alert( window.test);</code></pre>
<p>は、&#8221;test&#8221;になる。しかし、グローバルスコープで明示的に宣言されていない変数の場合は、関数内で使用されてもグローバル変数になるから気が抜けない。</p>
<p class="js_title">JavaScript</p>
<pre class="javascript"><code>function test() {
   foo = "test";
}
test();
alert( window.foo );</code></pre>
<p>このfooは&#8221;test&#8221;になる。</p>
<p>firebugのコンソールでいろいろやってみると勉強になる。</p>
]]></content:encoded><description>JavaScriptはオブジェクト指向言語なようだが、スタイルや扱い方に特徴があることが、勉強していて分かってきた。いくつか重要と思われる特徴とその扱い方についてメモしておく。
１．参照(Reference)
参照は、オブジェクトへのポインター</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/03/javascript1.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/03/javascript1.php</feedburner:origLink></item><item><title>prototype.jsは１つでいい</title><link>http://feedproxy.google.com/~r/techdego/~3/QoWWTHguhRU/including-single-prototype-js.php</link><category>PHP</category><category>WordPress</category><category>JavaScript</category><category>PHP</category><category>prototype.js</category><category>tips</category><category>wordpress</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">junon</dc:creator><pubDate>Fri, 02 Mar 2007 05:57:50 PST</pubDate><guid isPermaLink="false">http://www.techdego.com/2007/03/including-single-prototype-js.php</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>AJAXなプラグインを試しているが、<a href="http://addictedtonew.com/archives/145/wordpress-live-search-plugin/" title="Wordpress Live Search Plugin // Archives // Addicted To New" target="_blank">Addicted Live Search</a> と、<a href="http://urbangiraffe.com/plugins/ajax-calendar/" title="Urban Giraffe | AJAX Calendar (now WordPress 2 compatible!)" target="_blank">AJAX Calendar2(giraffe calendar)</a>は使おうと思う。これと<a href="http://alexking.org/blog/2006/12/12/share-this-13" title="Share This 1.3 | alexking.org" target="_blank">Share-this</a>を合わせて、３つのプラグインがバラバラにprototype.jsを読み込むようにヘッダーに&lt;script&gt;タグを書き込んでいることが判明。下の図のように同じファイル（バージョンも同じだった）が３つ読み込まれていてしかも、56Kbと、本文より大きい。読み込み時間にも影響しそう。</p>
<p><a href="http://www.techdego.com/2007/03/including-single-prototype-js.php/prototypejs/" rel="attachment wp-att-66" title="prototype.jsを複数読み込んでいる．．"><img src="http://www.techdego.com/upload/2007/03/multi-prototype.thumbnail.gif" alt="prototype.jsを複数読み込んでいる．．" class="imageframe" style="float: left" height="170" width="200" /></a></p>
<p>ちなみに他のWordpressのサイトも確認させてもらったが（失礼！）動的なサイトでは、prototype.jsが2個あるいは3個、読み込まれているところが多かった。これは何とかしたいのだが、プラグインのスクリプトを直接書き換えると、どれで（prototype.jsを）読み込ませて、どれで読み込ませないかの管理が大変になる。また、プラグインのバージョンアップの度に書き直したくない。</p>
<p><span id="more-65"></span></p>
<p class="clearer">そこで、header.phpに修正を加えることにした。どのプラグインも、&#8221;wp_header();&#8221;が呼び出された際に&lt;script&gt;タグを書いているようなので、書き込んだ後でそこからprototype.jsの読み込み行を削除して、最後にwordpress本体に付随しているprototype.jsを「１つだけ」読み込ませるために書き込んでから、吐き出す。</p>
<p class="php_title">PHP</p>
<pre class="php"><code>&lt;?php
function undup_prototype($contents) {
   $replaced = preg_replace("/&lt;script.*prototype\.js.*&gt;.*&lt;\/script&gt;.*\n/i",'',$contents);
   if($replaced !== $contents) {
      $replaced = '&lt;script type="text/javascript"
         src="'.get_bloginfo('wpurl').'/wp-includes/js/prototype.js"&gt;&lt;/script&gt;'."\n".$replaced;
   }
   return $replaced;
}
ob_start('undup_prototype');
&lt;strong&gt; wp_head();&lt;/strong&gt;
ob_end_flush(); ?&gt;</code></pre>
<p>wp_head()の前後に上記のように追加するだけ。</p>
<p>それで以下のように、prototype.jsは１つだけ読み込まれ、トータル読み込み時間も減ら．．．なかった。読み込み時間にはあまり影響しないみたい。もしかしたらヘッダーから削除している間に垂れ流した方が早いかも？</p>
<p><a href="http://www.techdego.com/2007/03/including-single-prototype-js.php/prototypejs%e3%82%921%e5%80%8b%e8%aa%ad%e3%81%bf%e8%be%bc%e3%82%93%e3%81%a0%e5%9b%b3/" rel="attachment wp-att-67" title="prototype.jsを1個読み込んだ図"><img src="http://www.techdego.com/upload/2007/03/single-prototype.thumbnail.gif" alt="prototype.jsを1個読み込んだ図" class="imageframe" style="float: left" height="149" width="200" /></a></p>
]]></content:encoded><description>AJAXなプラグインを試しているが、Addicted Live Search と、AJAX Calendar2(giraffe calendar)は使おうと思う。これとShare-thisを合わせて、３つのプラグインがバラバラにprototype.jsを読み込むようにヘッダーに&amp;#60;script&amp;#62;タグを書き込んでいることが判明。下の図のように同じファイル（バージョンも同じだった</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.techdego.com/2007/03/including-single-prototype-js.php/feed</wfw:commentRss><feedburner:origLink>http://www.techdego.com/2007/03/including-single-prototype-js.php</feedburner:origLink></item></channel></rss>
