<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
 <channel>
  <title>ppBlog1.8.8</title>
  <link>http://p2b.jp/</link>
  <description>ppBlog1.8.8: Recent Entries</description>
  <language>ja-jp</language>
  <lastBuildDate>Fri, 12 Feb 2010 16:59:53 +0900</lastBuildDate>
  <generator>ppBlog ver.1.8.8</generator>
  <copyright>copyright (c) 2009 p2b.jp</copyright>
  <category domain="http://p2b.jp/feeds/rss2.0.xml">rssUpdates</category>
  <docs>http://p2b.jp/rss</docs>
 <image>
  <url>http://p2b.jp/Images/logo.png</url>
  <title>ppBlog1.8.8</title>
  <link>http://p2b.jp/</link>
  </image>

<item>
 <title>OLリスト要素の番号を制御したい  :: WEB DESIGN,CSS</title>
 <link>http://p2b.jp/201002-any-numbering-listing</link>
 <description>　久しぶりのエントリーです。自分のもので恐縮ですが、ウェブログの方のエントリーで著作物の引用をしようとした際に、オリジナルがそうであったのでリスト番号付きで文章を引用しようと思いました。引用したい文章は、143節から150節までなので、OL...</description>
 <comments>http://p2b.jp/index.php?mode=comment&amp;TID=1265740927</comments>
 <pubDate>Tue, 09 Feb 2010 19:42:07 +0900</pubDate>
 <category domain="http://p2b.jp/category/web-design//">WEB DESIGN,CSS</category>
 <guid>http://p2b.jp/index.php?UID=1265740927</guid>
 <content:encoded>
 <![CDATA[<p>　久しぶりのエントリーです。自分のもので恐縮ですが、ウェブログの方の<a href="http://martin.p2b.jp/1265630394.html">エントリー</a>で著作物の引用をしようとした際に、オリジナルがそうであったのでリスト番号付きで文章を引用しようと思いました。引用したい文章は、143節から150節までなので、<b>OL</b>要素を用いてリスト番号を付けようかなと。しかし、任意の番号からリスト番号を割り当てる方法を知らなかったので(普通は、1&amp;#44;2&amp;#44;3&amp;#44;...と割り振られる)、調べたついでにエントリーとして残しておきます。</p>
<p>　<b>HTML4.01 strict</b>より古い(あるいはTransitional)仕様では、(非推奨ながら)OL要素に<strong>start属性</strong>があるので、下の例のように任意の番号から始めることができます。</p>
<pre>&amp;lt;ol<strong> start="143"</strong>&amp;gt;
 &amp;lt;li&amp;gt;パリ&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;ストラスブール&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;ブリュッセル&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;ロンドン&amp;lt;/li&amp;gt;
&amp;lt;/ol&amp;gt;</pre>
<p>　しかしながら、<b>HTML4.01 strict ～ XHTML1.0 strict</b>では、このstart属性が(なぜか)廃止されています。CSSで指定可能だからなのか、その辺りの背景は知りませんが、とにかく廃止されています。ppBlogでは、基本的にXHTML1.0 strict相当でHTMLソースを生成しているので、あまり気楽にはstart属性を使えません(例えば、<a href="http://validator.w3.org/">W3CのValidator</a>にかけると誤った使用とのエラー表示になる)。なので、どういう指定方法があるのか調べてみました。</p>
<h3>XHTML1.0 strict での対応</h3>
<p>　大きく2通りのやり方があると思います。ひとつはCSSのみでの制御。もうひとつはJavaScriptを用いての制御です。具体的なサンプルを見てみましょう。このサンプルでは2通りでのやり方を載せています。</p>
<p>　　　　　　→http://p2b.jp/demo/any-numbering-ordered-list1.html</p>
<p>　CSS2.1のみで任意のリスト番号を指定することができますが、<strong>counter-reset</strong>や擬似要素の<strong>:before</strong>などを使う必要があり、<b>IE7</b>以下では対応していません。まだまだIE6/7を無視できない現状、気軽に使えませんし、<em>何より使い方が分かりづらい</em>。</p>
<p><img src="http://p2b.jp/PIX/s2/1265740927_shot1.png" alt="shot1" width="500" height="261" title="CSSのみで制御。リスト番号が文字に埋もれて見にくい。" /></p>
<p>　また、CSSのみでの制御では、上のスクリーンショットにあるように、リスト内容が長く折り返しが生じる場合、<strong>li:before</strong>によって挿入されたリスト番号が文章に埋もれてしまい、視認性に欠けます。</p>
<p>　2つ目は、JavaScriptで制御する方法です。比較的簡単に実装でき、どのブラウザも対応しています。また、下のショットのように、CSSのみでやる場合と違って、リスト番号はOL要素本来のリスト表示を使うので、リストの数字が文章に埋もれることはないです。</p>
<p><img src="http://p2b.jp/PIX/s2/1265740927_shot2.png" alt="shot2" width="500" height="229" title="JavaScriptで指定。リスト番号は文章と独立していて視認性に優れる。" /></p>
　スクリプトが無効な環境でも、リスト番号自体は表示されるのでCSSのみでの方法より良いのではと考えます(もっとも番号は<b>1</b>から振られますが)。<pre>function numberingStart(){
 document.getElementById("js-way")<strong>.start</strong> = 143; <span>// LI要素のstart属性を指定</span>
}</pre>
<h3>HTML5での対応</h3>
<p>　さて、<b>HTML5</b>では、どうやらOL要素のstart属性は<a href="http://www.html5.jp/tag/elements/ol.html#attr-ol-start">復活しそうな感じ</a>です。なので、<b>HTML5</b>にしてしまえば、とても簡単に実装できます。このエントリーの最初に書いたように記述すればOKです。HTML5化ですが、乱暴にいえば、冒頭のDOCTYPE宣言を以下のようにすれば良いです。</p>
<pre>&amp;lt;!DOCTYPE html&amp;gt;  /* HTML5のDOCTYPE宣言はすごくシンプル */</pre>
<p>　簡単ですね。そのうちppBlogもHTML5化予定ではあります。HTML5でのサンプルを挙げておきます。ValidなHTML5です。</p>
<p>　　　　　　→http://p2b.jp/demo/any-numbering-ordered-list2.html</p>
<p>　ちなみに、CSSのみでのやり方では、counter-reset&amp;#44; li:beforeなどを用いてますが、これらのプロパティーは、OL要素に限らずH2要素など、いろんな要素に使用可能です。</p>
<p>　　　　　　→参考 http://www.w3.org/TR/CSS2/generate.html#counters</p>
<p>　最後にですが、最初に挙げたウェブログでのエントリーでは、JavaScriptで指定してます。記事のテキストエリアで以下のように記述しています。</p>
<pre>
&amp;#91;script]
oParts.start(function(){ o('#Buddha').&amp;#36;.start = "143"; });
&amp;#91;/script]</pre>
<h3>まとめ</h3>
<p>　XHTMLなページが多い現状、廃止されたOL要素のstart属性は使うのに抵抗がある。代用としてCSS2.1のcounter-resetなどで実現できるが、その指定はややこしく、またstart属性の完全な代用ではないし、何よりIE6/7が未対応。JavaScriptでstart属性を指定するやり方は、ややトリッキーではあるが、すべてのブラウザで意図通りに指定可能である。</p>
<p>　次世代のHTML5なページにすれば、OL要素のstart属性が問題なく使えるようだし、現状のブラウザでも問題ない。</p>
]]>
 </content:encoded>
</item>
<item>
 <title>明けましておめでとうございます。  :: その他</title>
 <link>http://p2b.jp/1263210603</link>
 <description>　2010年を迎えました。今年が皆さんにとって良い年でありますように。　昨年のクリスマスから2週間ほどクリスマス休暇をいただいてましたが、今日から仕事始めです。ppBlogのサポートも再開したいと思います。</description>
 <comments>http://p2b.jp/index.php?mode=comment&amp;TID=1263210603</comments>
 <pubDate>Mon, 11 Jan 2010 12:50:03 +0900</pubDate>
 <category domain="http://p2b.jp/category/others/">その他</category>
 <guid>http://p2b.jp/index.php?UID=1263210603</guid>
 <content:encoded>
 <![CDATA[<p>　2010年を迎えました。今年が皆さんにとって良い年でありますように。</p>
<p>　昨年のクリスマスから2週間ほどクリスマス休暇をいただいてましたが、今日から仕事始めです。ppBlogのサポートも再開したいと思います。</p>
]]>
 </content:encoded>
</item>
<item>
 <title>CSS3のtransformをIE8でも使いたい  :: 開発日誌,JavaScript</title>
 <link>http://p2b.jp/200912-CSS3-Transform-for-IE8</link>
 <description>　こんばんは、martinです。FirefoxやWebKit系のSafari、グーグルのChromeなどは、CSS3の魅力的な機能を色々取り入れています。中でも、CSS3のtransformやドロップシャドウ系は、ブログで写真を見せる場合な...</description>
 <comments>http://p2b.jp/index.php?mode=comment&amp;TID=1261627359</comments>
 <pubDate>Thu, 24 Dec 2009 05:02:39 +0900</pubDate>
 <category domain="http://p2b.jp/category/developement//">開発日誌,JavaScript</category>
 <guid>http://p2b.jp/index.php?UID=1261627359</guid>
 <content:encoded>
 <![CDATA[<p>　こんばんは、martinです。<b>Firefox</b>やWebKit系の<b>Safari</b>、グーグルの<b>Chrome</b>などは、<b>CSS3</b>の魅力的な機能を色々取り入れています。中でも、CSS3の<a href="https://developer.mozilla.org/en/CSS/-moz-transform">transform</a>やドロップシャドウ系は、ブログで写真を見せる場合などに凝った演出が出来るので、仕様が正式に決まるのが待ち遠しいですね(そう言えば、ボックスのドロップシャドウ <strong>box-shadow</strong>ですが、<a href="http://www.w3.org/TR/css3-background/#the-box-shadow">CSS3の勧告候補から消えた</a>のかなぁ)。便利な仕様だとは思うのですが。</p>
<p>　ちなみに、<b>transform</b>とは「変形」のことで、CSSのみで画像やらボックスやらを自在に回転させたり、ゆがませたりできる優れものです。で、例によってIE系はCSS3の対応は遅れています。とは言っても（これまたいつものように）transformに関しては、IEは実に<b>IE5.5</b>の時から似たようなものを<a href="http://msdn.microsoft.com/en-us/library/ms533014%28VS.85%29.aspx">実装していました</a>！　なので、それらを駆使すれば、CSS3相当のtransformが実装できそうです。</p>
<p>　transformが使えると何がうれしいって、例えば以下のようなポラロイド写真みたいなギャラリーがCSSのみで簡単に出来ます。実は下のショットは<b>IE8</b>でのものです。<img src="http://p2b.jp/PIX/1261627359_CSS3-transform-IE8.jpg" alt="CSS3-transform-IE8" width="480" height="328" title="IEでもCSS3のtransform相当のことが出来る" /></p>
<p>　画像の回転に関して、FirefoxやWebKit系は、画像の中心を回転軸として回転させます(なので回転軸は移動しない)。これは直感的で分かりやすいです。これに対して、IEは回転軸が指定した回転角度によって刻々と移動します。なので、標準仕様に似せようと思うと、回転軸を動かさない様にするための補正計算が必要になります。この計算にちょっとてこずりましたが、何とか回転軸が動かないような補正をすることが出来ました。</p>
<p><img src="http://p2b.jp/PIX/1261627359_rotation.jpg" alt="IE rotation" width="480" height="360" title="IEでは、ボックスはx軸とy軸に2点が常に接しつつ、すべるように回転するので軸が常に動く。" /></p>
<p>　で、とりあえずモノになりそうなものが出来たのでデモサイトを挙げておきます。画像へのマウスオーバーで拡大なんてのもCSSのみで出来るのですが、それもIEで動くようにしています。</p>
　<p style="margin: .3em auto 2.5em auto; text-align: center;">→「<a href="http://p2b.jp/demo/CSS3-transform.html">CSS3 Transformを使ったギャラリー(IE互換)</a>」</p>
　FirefoxやSafariでは、完全にCSS3のみで実現していて、IEでは、IE特有のフィルター機能をJavaScirptを通して操作しています。ボックス要素のドロップシャドウについては、以前、まぁまぁ凝ったスクリプトを<a href="http://p2b.jp/200909-IE-CSS3-Dropshadow">書きました</a>が、新たに要素を追加しないといけないなど、あまり納得のいくものではありませんでした。今回ドロップシャドウに関しては、あまり凝ることはせずに、IEのフィルター機能を素直にそのまま使っています。<pre>progid:DXImageTransform.Microsoft.dropshadow(enable=true&amp;#44;OffX=3&amp;#44; OffY=7&amp;#44; Color='<strong>#11000000</strong>'&amp;#44; Positive='true');</pre>
<p>　実は最近知ったのですが、フィルターの<b>Color</b>には通常の<b>RGB</b>形式だけでなく、透明度も指定できる<strong>#AARRGGBB</strong>の形式が使えるので、黒色の透明度を高くすればより影っぽくなります。CSS3レベルのぼやけた感じまでは出ませんが、まぁ、これで良しとしましょう。</p>
　使い方は、簡単で、形はHTCファイルですが、JavaScriptの外部ファイルとして動作するようにしてます。これは、以前のドロップシャドウのスクリプトと同じです。それをIEのみが解釈する条件コメントの中に書いています。<pre>&amp;lt;!--[if IE]&amp;gt;
 &amp;lt;script type="text/javascript" src="js/css3transform.htc"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;![endif]--&amp;gt;</pre>
<p>　これを書いておくだけで、スタイルシートに記された</p>
<pre>     -moz-transform: rotate(-2deg);
  -webkit-transform: rotate(-2deg);
          transform: rotate(-2deg);</pre>
などを解釈して、IEのフィルター機能(Matrix Filter)で同等のことを表現します。デモページにあるように、IEでもCSS3のtransformはおよそ実現できるみたいです(まぁ、そもそもがIEのMatrix仕様を参考に実装したのでしょうけど)。<p>　このスクリプトを添付しておきます。<a href="http://p2b.jp/index.php?mode=download&amp;aim=1261627359_css3transform.htc" title="ダウンロード: 4.6 KB">[ファイル: 1261627359_css3transform.htc]</a></p>
]]>
 </content:encoded>
</item>
<item>
 <title>タグモード表示の改善  :: 開発日誌</title>
 <link>http://p2b.jp/1261614576</link>
 <description>　こんばんは。コメントで、タグエントリーを総表示するときの仕様についてアドバイスがあり、確かにそうだなと思ったので。現状では、タグモードのとき(このサイトに表示されているタグのアイコンをクリックした時)、下のショットのように、縦にリスト表示...</description>
 <comments>http://p2b.jp/index.php?mode=comment&amp;TID=1261614576</comments>
 <pubDate>Thu, 24 Dec 2009 01:29:36 +0900</pubDate>
 <category domain="http://p2b.jp/category/developement/">開発日誌</category>
 <guid>http://p2b.jp/index.php?UID=1261614576</guid>
 <content:encoded>
 <![CDATA[<p>　こんばんは。コメントで、タグエントリーを総表示するときの仕様についてアドバイスがあり、確かにそうだなと思ったので。現状では、タグモードのとき(このサイトに表示されているタグのアイコンをクリックした時)、下のショットのように、縦にリスト表示されます。<img src="http://p2b.jp/PIX/1261614576_shot1.png" alt="shot1" width="360" height="365" title="数が少ないうちはよいですが・・・。" />　これは、アーカイブ表示に準じてそうしたのですが数が増えてくると縦表示は見辛いですね。もっとも、スタイルシートの制御で横に並べることは出来ますが、タグクラウドの特徴のひとつである「<strong>エントリー数に応じて文字の大きさを制御する</strong>」というところまではしていませんで(PHPプログラムの<b>modules/tags.inc.php</b>の方で)。</p>
<p>　なので、<b>modules/tags.inc.php</b>をタグクラウド表示に見合うように修正しました。適切にスタイルシートを設定すると以下のような表示になります。このショットはこのサイトでの例なのですが、タグ数が少ないのであまり<span style="font-size: 16pt;">雲っ</span>て感じではないんですが、増えてくると見栄えも違ってくるでしょう。これよりもうちょいタグ数が多い、個人ブログの方は<a href="http://martin.p2b.jp/tags/">こんな感じ</a>です。<img src="http://p2b.jp/PIX/1261614576_shot2.png" alt="shot2" width="480" height="224" title="どんどん増やしていきたいなぁ。" /></p>
<p>　ちなみに、テーマ「ベーシック」での、この部分の表示は以下のようにしています。参考になれば。クラス名などは従来通りです。</p>
<pre>/*---------------------------[ タグ 一覧表示用 ]----------------------*/
div.tags-list {
  width: 450px;
  margin: 30px auto;
  background: url(Images/clouds96.png) right top no-repeat;
}
div.tags-list ul {
  list-style: none;
  margin-top: 60px;
}
div.tags-list ul li{
  margin: 0 6px 3px 6px;
  white-space: nowrap; /* 日本語ワードの改行を適切にするための指定 */
  display: inline;
  text-align: center;
  zoom: 1;
}
div.tags-list h3 {
  margin: 2em auto;
  color: navy;
}</pre>
<p>　これに対応した<b>modules/tags.inc.php</b>を添付しておきます。</p>
<p>　あ、追記ですが、この添付ファイルの最初の方に、</p>
<pre>&amp;#36;minFontSize = 13;  // 最小文字サイズ(ピクセル)
&amp;#36;maxFontSize = 36;  // 最大文字サイズ(ピクセル)</pre>
<p>という2行があります。これはタグ表示の文字サイズを制御するためのものです。エントリー数に応じて、タグの文字が大きくなっていきますが、際限なく大きくなっても困るので、上限を設けています。ピクセル指定です。適宜、調整して下さい。<a href="http://p2b.jp/index.php?mode=download&amp;aim=1261614576_tags.inc.php" title="ダウンロード: 2.2 KB">[ファイル: 1261614576_tags.inc.php]</a></p>
]]>
 </content:encoded>
</item>
<item>
 <title>タグクラウドの日本語文字の改行を制御したい  :: WEB DESIGN,CSS</title>
 <link>http://p2b.jp/200912-tagcloud-with-word-break-and-white-space</link>
 <description>　こんばんは。以前、フォーラムで「タグボックス(いわゆるタグクラウド)に含まれる日本語のキーワードが途中で改行されることがありますが、これを防ぐ方法はありますか？」という質問があったように記憶しています(探し出せませんでしたが･･･)。　そ...</description>
 <comments>http://p2b.jp/index.php?mode=comment&amp;TID=1261370235</comments>
 <pubDate>Mon, 21 Dec 2009 05:37:15 +0900</pubDate>
 <category domain="http://p2b.jp/category/web-design//">WEB DESIGN,CSS</category>
 <guid>http://p2b.jp/index.php?UID=1261370235</guid>
 <content:encoded>
 <![CDATA[　こんばんは。以前、フォーラムで<p style="font-size: 12pt; color: firebrick;">「タグボックス(いわゆるタグクラウド)に含まれる日本語のキーワードが途中で改行されることがありますが、これを防ぐ方法はありますか？」</p>
という質問があったように記憶しています(探し出せませんでしたが･･･)。<p>　その時は、「日本語折り返しの制御はなかなか難しいかもですねぇ」みたいに答えていたと思いますが、ちょっとやってみたところ解決できたのでエントリーとして残しておきます。</p>
<p>　まずは、以下のショットを。これはppBlogを含めた多くのブログで見かける[g]タグクラウド[/g]ですが、日本語の文字列が途中で改行されて、一瞥しただけではキーワードが認識しにくくなっています。このサンプルのタグクラウドは、まだエントリー数が少ないのでそうでもないですが、タグの数が多くなると、結構みづらくなるのではと思います。<img src="http://p2b.jp/PIX/1261370235_shot1.png" alt="shot1" width="210" height="280" title="日本語文字列は半端に改行されている。" /></p>
<p>　そこで以下のショットのように改善したいです。<img src="http://p2b.jp/PIX/1261370235_shot2.png" alt="shot2" width="210" height="302" title="日本語文字が途中で改行されていないことが分かる。" /></p>
<p>　これはスタイルシート(CSS)をうまく使うことで解決できます。<abbr title="インターネットエクスプローラー">IE</abbr>系なら、IE5の時代から<b>word-break</b>という<a href="http://www.w3.org/TR/css3-text/#word-break">W3Cのワーキングドラフトに含まれる仕様</a>を先行実装しているので、これを使えば少なくとも<b>IE5-7</b>では意図した結果が得られます。この値の指定を<b>keep-all</b>にすればOKです。これで日本語の単語が途中で改行されることはなくなります。でも、これはFirefoxが対応していません。さらには、<b>IE8</b>ではbreak-allの挙動がIE5-7と違うようで、Safari/Chromeと同じように振舞うようです。その結果、<b>keep-all</b>を指定しても、<em>日本語の単語は途中で改行され得ます</em>(参考：「<a href="http://builder.japan.zdnet.com/sp/css-firefox-safari/story/0&amp;#44;3800083423&amp;#44;20381014&amp;#44;00.htm">CSS 3におけるテキストの自動改行と禁則処理の定義</a>」)。</p>
<p>　なので<b>word-break</b>に頼らずに別の仕様をあたることにします。</p>
<p>　ラッキーなことにどのブラウザでも対応しているものがありました。<b>white-space</b>です。</p>
<dl class="quote">
 <dd><blockquote cite="http://www.htmq.com/style/white-space.shtml" title="white-space－スタイルシートリファレンス"><p>white-spaceプロパティは、ソース中の半角スペース・タブ・改行の表示の仕方を指定する際に使用します。 </p></blockquote></dd>
 <dt class="cite">引用元: <a href="http://www.htmq.com/style/white-space.shtml">white-space－スタイルシートリファレンス</a></dt>
</dl>
<p>　空白だけでなく、改行の表示にもかかわっているのがポイントですね。ppBlogでは、タグクラウドはだいたい以下のようなソースを出力します。</p>
<pre>&amp;lt;ul class="sidebar-tags"&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 11px;"&amp;gt;DOM storage&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 11px;"&amp;gt;Flex&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 12px;"&amp;gt;CSS&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 13px;"&amp;gt;フーリエ級数&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 11px;"&amp;gt;PHP&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 15px;"&amp;gt;トラベラーズ&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 11px;"&amp;gt;ppBlogTips&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 29px;"&amp;gt;ppBlog&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 11px;"&amp;gt;無限級数&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 11px;"&amp;gt;Ajax&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 21px;"&amp;gt;アップデート&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 29px;"&amp;gt;JavaScript&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 11px;"&amp;gt;Firefox&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 11px;"&amp;gt;アマゾン&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href="#" rel="tag" style="font-size: 11px;"&amp;gt;ゴールドバッハの予想&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;</pre>
<p>これに対して、スタイルシートの指定は以下のようにすれば、うまく行きます。</p>
<pre>
ul.sidebar-tags li { 
  display: inline;
  white-space: nowrap; /* これがポイント！ */
  padding-right: 3px;
  zoom: 1; /* これはIE7以下向け */
}</pre>
<p>　基本的には、<b>white-space: nowrap;</b>で事足りますが、これだけだと、IE7以下で表示が崩れるので、IE7以下の[g]hasLayout[/g]を有効にするために<b>zoom:1</b>という指定をしています。これはほかのブラウザでは無視されます。</p>
<p>　では、具体的なサンプルを見てみましょう。→http://p2b.jp/demo/tagCloud.html</p>
<p>　ちなみに、タグクラウドという名称の由来は、雲(=クラウド&amp;#44; cloud)みたいだからです。なのでサンプルでは、雲のイラストを付けてみました。パワーポイントで円や直線、3角形を組み合わせて適当に作成したんですが、思わずに良い出来栄えになりました[にこっ/]</p>
]]>
 </content:encoded>
</item>
<item>
 <title>テーマのプレビューで編集位置まで戻す  :: 開発日誌</title>
 <link>http://p2b.jp/1261140380</link>
 <description>　タイトルだけだと何のことやら分からないと思いますが、ppBlogの「テーマ管理」では、テンプレートのHTMLやスタイルシートを修正した際に、どういう風に変更が反映されるか、実際にプレビューボタンで確認することが出来ます。そのプレビュー画面...</description>
 <comments>http://p2b.jp/index.php?mode=comment&amp;TID=1261140380</comments>
 <pubDate>Fri, 18 Dec 2009 13:46:20 +0900</pubDate>
 <category domain="http://p2b.jp/category/developement/">開発日誌</category>
 <guid>http://p2b.jp/index.php?UID=1261140380</guid>
 <content:encoded>
 <![CDATA[<p>　タイトルだけだと何のことやら分からないと思いますが、ppBlogの「テーマ管理」では、テンプレートのHTMLやスタイルシートを修正した際に、どういう風に変更が反映されるか、実際にプレビューボタンで確認することが出来ます。そのプレビュー画面では、以下のように「戻る」のリンクでもとの編集画面に戻ります。<img src="http://p2b.jp/PIX/1261137079_shot2.png" alt="shot2" width="498" height="248" />　従来だと、この戻るリンクで戻ると、マウスのカーソルは長々しいテキストエリアの先頭に戻っているので、再度編集部位を探しつつ、そこまでスクロールする必要がありました(<kbd>Ctrl</kbd>+<kbd>F</kbd>で検索するのが常套手段ですが)。スタイルシートの編集では、テキスト量が多い傾向にあり、直前の編集部位を探し出すのは大変です。</p>
<p>　なのでその辺を改善してみました。やりたいのは以下のことです。<img src="http://p2b.jp/PIX/1261137079_shot.png" alt="shot" width="498" height="320" title="スクロールバーの位置に注目。" /></p>
<p>　テキストエリアのスクロールバーの位置はJavaScriptから制御することが出来ます。具体的には、<b>scrollTop</b> を使います。流れとしては、プレビューボタンを押したタイミングで、スクロール量を取得(scrollTopで可能)、プレビューから戻ったときに、取得した値を指定すれば良いわけです(指定もscrollTopです)。実際には、テキストエリアだけではなく、ブラウザのスクロールバーもscrollTopで制御できるので、この２つのスクロール量を保持するようにしています。</p>
<p>　やってみると意外と簡単に実装できました。もっと早くやっておけば良かったです。試されたい方は、以下の<b>utils.php</b>と<b>modules/theme.inc.php</b>でどうぞ。<a href="http://p2b.jp/index.php?mode=download&amp;aim=1261137079_utils.php" title="ダウンロード: 97.4 KB">[ファイル: 1261137079_utils.php]</a><a href="http://p2b.jp/index.php?mode=download&amp;aim=1261137079_theme.inc.php" title="ダウンロード: 20.3 KB">[ファイル: 1261137079_theme.inc.php]</a></p>
]]>
 </content:encoded>
</item>
<item>
 <title>Firefoxに伴うアップデート  :: アップデート</title>
 <link>http://p2b.jp/1261076141</link>
 <description>　こんばんは。普段はブラウザとしてFirefoxを使っています。で、先ほどブログの方で記事を投稿したら、Firefoxだけ(厳密にはGeckoエンジンブラウザ)に読み込ませるツールチップのスクリプトが動作していないことに気付きました。　Fi...</description>
 <comments>http://p2b.jp/index.php?mode=comment&amp;TID=1261076141</comments>
 <pubDate>Thu, 17 Dec 2009 19:55:41 +0900</pubDate>
 <category domain="http://p2b.jp/category/update/">アップデート</category>
 <guid>http://p2b.jp/index.php?UID=1261076141</guid>
 <content:encoded>
 <![CDATA[<p>　こんばんは。普段はブラウザとしてFirefoxを使っています。で、先ほどブログの方で記事を投稿したら、Firefoxだけ(厳密にはGeckoエンジンブラウザ)に読み込ませるツールチップのスクリプトが動作していないことに気付きました。</p>
<p>　Firefoxは、画像などで多用される<b>TITLE</b>属性内の改行や改行コードを無視します。実は仕様としては正しい振る舞いです。でも、TITLE属性の改行が有効な方がブラウザの使い手には優しいと思うので、ppBlogでは、FirefoxでもTITLE属性内の改行が有効になるようなスクリプトを用意しています。</p>
<p>　で、その読み込ませる際に、次のようにしています。</p>
<pre> if(client.Gecko) oParts.loadScript(baseURL + 'js/firefoxtooltip.js');</pre>
<p>　このブラウザ判定は、<b>window.GeckoActiveXObject</b> でやっていたんですが、これがいつの間にやら認識されなくなったようです。実は、今日Firefoxの自動アップデートがありバージョンが<b>3.5.6</b>になりました。で、リリースノートを見てみると、どうやら</p>
<p>http://www.mozilla-japan.org/security/announce/2009/mfsa2009-71.html</p>
<p>が関係している模様。でも、これで認識しなくなるのかなという疑問もありつつ、この部分を修正しました。最新の<b>oParts.js</b>を添付しておきます。</p>
<p><a href="http://p2b.jp/index.php?mode=download&amp;aim=1261076141_oParts.js" title="ダウンロード: 21.5 KB">[ファイル: 1261076141_oParts.js]</a></p>
]]>
 </content:encoded>
</item>
<item>
 <title>localStorageでIE8がクラッシュする件　続き  :: 開発日誌,JavaScript</title>
 <link>http://p2b.jp/200912-localStorage-crashes-IE8-with-empty-value-part2</link>
 <description>　こんばんは。前回の書き庫で、localStorageに空の値を入れるとIE8がクラッシュすると書きました。なので、空の値が入らないようなチェックを入れれば良いのですが、それだけだとナンなので、症状をもう少し追ってみました。　もう一度、(I...</description>
 <comments>http://p2b.jp/index.php?mode=comment&amp;TID=1260999974</comments>
 <pubDate>Wed, 16 Dec 2009 22:46:14 +0900</pubDate>
 <category domain="http://p2b.jp/category/developement//">開発日誌,JavaScript</category>
 <guid>http://p2b.jp/index.php?UID=1260999974</guid>
 <content:encoded>
 <![CDATA[<p>　こんばんは。<a href="http://p2b.jp/200912-localStorage-crashes-IE8-with-empty-value">前回の書き庫</a>で、localStorageに空の値を入れると<b>IE8</b>がクラッシュすると書きました。なので、空の値が入らないようなチェックを入れれば良いのですが、それだけだとナンなので、症状をもう少し追ってみました。</p>
　もう一度、(IE8が)クラッシュするコードを書いておきます。<pre>
function addItem(){
 var key = document.getElementById("key").value;
 var value = document.getElementById("value").value;
 window.localStorage[key] = value; // valueが空白だとクラッシュ！
}</pre>
　以下のように、直接空の値を入れる分には大丈夫でした。<pre>
function addItem(){
 var key = document.getElementById("key").value;
 var value = document.getElementById("value").value; // これは使用しない
 window.localStorage[key] = ""; // 直接、空の値を入れる → これは大丈夫。
}</pre>
<p>　ほうほう。で、クラッシュするデモページのHTMLソースをよく見てみると、<b>input[type=text]</b>でvalueの値を指定していないですね。もしかしてこのせいかなぁ、と</p>
<pre>&amp;lt;input type="text" id="value" <strong>value=""</strong> /&amp;gt;</pre>
<p><b>value=""</b>を追加しましたが、やっぱりクラッシュします。<b>input[type=text]</b>の値がないときでも、 <b>document.getElementById("value").value</b> はちゃんと文字列として解釈されます(<b>typeof value == "string"</b>)。デモページは、<b>input[type=text]</b>のvalue値を取得していますが、これは<b>TEXTAREA</b>要素であっても、やはり内容が空っぽの場合、IE8ではクラッシュを引き起こしました。</p>
<p>　何でですかねぇ。試しに、強引に文字列ではないオブジェクトを入れてもクラッシュ<em>しません</em>。</p>
<pre>window.localStorage[key] = document.getElementById("value"); // これは [object] という文字列に変換される</pre>
<p>　確かに、文字列のstringだとブラウザが解釈しているのに、それが空っぽだとクラッシュするわけです。じゃ、以下はどうだろうか。</p>
<pre>
var empty = ""; // 空っぽの変数を用意する。
window.localStorage[key] = empty; // これはセーフ。クラッシュしない。</pre>
<p>さすがにこれはオッケーです。じゃ以下はどうだろうか？</p>
<pre> var val = document.getElementById("val").value; // これが空っぽとする
 var empty = "";              // val もempty も空っぽの場合
 alert(empty === val); // 厳密等価演算子は true を返す
 window.localStorage[key] = val; // なのに、val だとクラッシュ！</pre>
<p>　とりあえず string と認識しているはずなのに、代入する段階以降で、別のクラッシュを引き起こす「何か」と解釈されるらしい。というわけで、とりあえず以下のようにすれば、IE8でのクラッシュを回避できることが分かった。でも、ナンだかすっきりしないですね[うーむ/]</p>
<pre>
function addItem(){
 var _key = document.getElementById("key").value;
 var _val = document.getElementById("val").value;
 window.localStorage[_key] = new String(_val); // new String()で明示してあげる
 alert("localStorage."+_key+" の値は「"+localStorage[_key]+"」です。");
}</pre>
<p><b>new String()</b>でちゃんと文字列オブジェクトとして<em>再評価</em>してあげると良いらしい。というわけで、IE8でもクラッシュしないlocalStorageのデモページをリンクしておきます。</p>
<p>　→http://p2b.jp/demo/localStorage2.html</p>
<p>　ちなみに、上のコードで<b>alert(typeof new String(_val))</b> は何となるでしょうか？ これは、 もはや<b>string</b> ではなく<b>object</b>となります。文字列オブジェクトです。</p>
]]>
 </content:encoded>
</item>
<item>
 <title>localStorageで空の値を入れるとIE8がクラッシュする件  :: 開発日誌,JavaScript</title>
 <link>http://p2b.jp/1260967011</link>
 <description>　こんにちは。そろそろppBlogにもlocalStorageに対応したスクリプトを組み込もうかと思っていますが、IE8で空(から)の値を入れるとブラウザがクラッシュして終了する現象に遭いました。MacBook Pro上のVMware Fu...</description>
 <comments>http://p2b.jp/index.php?mode=comment&amp;TID=1260967011</comments>
 <pubDate>Wed, 16 Dec 2009 13:36:51 +0900</pubDate>
 <category domain="http://p2b.jp/category/developement//">開発日誌,JavaScript</category>
 <guid>http://p2b.jp/index.php?UID=1260967011</guid>
 <content:encoded>
 <![CDATA[<p>　こんにちは。そろそろppBlogにも[g]localStorage[/g]に対応したスクリプトを組み込もうかと思っていますが、IE8で空(から)の値を入れるとブラウザがクラッシュして終了する現象に遭いました。MacBook Pro上のVMware Fusionに入れたWindows7 RC版IE8で発生します。正規版だとOKなのかなぁ。</p>
<p>　簡単なデモを用意しました(<b>IE８</b>なら<span style="color:maroon;">クラッシュしても良い状態でアクセス</span>)。→http://p2b.jp/demo/localStorage.html</p>
<p>　Firefox3.5では値が空でもエラーも何も起きませんが、IE8では即座にクラッシュです。そのスクリーンショットをば。適当なキーを設定して(例えば「<b>foo</b>」)、値を何も設定せずに「追加」ボタンを押すと発生。</p>
<p><img src="http://p2b.jp/PIX/1260967011_IE8-crashed.png" alt="IE8-crashed" width="480" height="338" title="クラッシュしても自動的に復元されますが・・・。" /></p>
<p>上記ページのスクリプトはごくシンプルなもの。</p>
<pre>
if(typeof localStorage != "object"){
 if(typeof globalStorage == "object"){ // Firefox2 possible
  localStorage = globalStorage[location.hostname];
 } else alert("お使いのブラウザはこのスクリプトに対応していません。");
}

function addItem(){
 var key = document.getElementById("key").value;
 var value = document.getElementById("value").value;
 window.localStorage[key] = value;
}</pre>
<p>　空の値かどうかチェックすれば済む話ですが。</p>
<h3 style="text-align:left; color:darkgreen;border-left: solid 10pt gold;font-weight: 600;margin-top:2em;"> 関連エントリー(解決編？)</h3>
<p>　　■http://p2b.jp/200912-localStorage-crashes-IE8-with-empty-value-part2</p>
]]>
 </content:encoded>
</item>
<item>
 <title>Flexを用いた複数ファイルアップロード  :: 開発日誌,PHP</title>
 <link>http://p2b.jp/200912-Flex-FileUploadApp</link>
 <description>　こんばんは、martinです。前回のエントリーで述べていたように、次期バージョン(v1.9.0)では、画像ファイルのアップロードの際に、複数の画像をまとめてアップロードできる仕組みを提供予定です。　現状では、複数の画像を一度にアップロード...</description>
 <comments>http://p2b.jp/index.php?mode=comment&amp;TID=1260213051</comments>
 <pubDate>Mon, 07 Dec 2009 20:10:51 +0900</pubDate>
 <category domain="http://p2b.jp/category/developement//">開発日誌,PHP</category>
 <guid>http://p2b.jp/index.php?UID=1260213051</guid>
 <content:encoded>
 <![CDATA[<p>　こんばんは、martinです。前回のエントリーで述べていたように、次期バージョン(<b>v1.9.0</b>)では、画像ファイルのアップロードの際に、複数の画像をまとめてアップロードできる仕組みを提供予定です。</p>
<p>　現状では、複数の画像を一度にアップロードするには、FlashかJavaを使うしかありません。JavaもFlashも素人ですが、とっつきやすいのはFlashですし、ファイルアップロードに関しては、色んなサイトでソースコード付きのFlash/Flexのデモサイトがあったので、Flexを用いたインターフェイスを作ってみました。</p>
<p style="text-align: center; margin: 2em auto;">→<a href="http://p2b.jp/demo/FileUploadApp.php?action=entry">実際に試すことが出来るデモサイト</a></p>
<p>　実際には、<a href="http://weblog.cahlan.com/2006/12/flex-upload-component.html">Coding Cowboys</a>というサイトにあったプログラムをベースに、好みのインターフェイスになるよういじっただけです。</p>
<p><img src="http://p2b.jp/PIX/1260213051_uploadInterface.png" alt="uploadInterface" width="398" height="296" title="改良したインターフェイス。日本語化したりとか。" /></p>
<p>　ローカルのフォルダからは基本的に任意のファイルを選べるのですが、画像ファイル(<b>*.jpg</b>&amp;#44; <b>*.png</b>&amp;#44; <b>*.gif</b>)のみに絞っています。また、Flexの練習もかねて、デモページのFlashではアップロードした画像を見ることが出来るように、右下に画像ギャラリーへのリンクボタンを付けてます。</p>
<p style="text-align: center; margin: 1em auto 2em auto;">→<a href="http://p2b.jp/demo/FileUploadApp.php">画像ギャラリーへのリンク</a></p>
<p>　ちなみに、このリンク先の画像ギャラリーは、Flashとは関係なしに、単にPHPでページを生成しています。CSSのみを用いたシンプルなものです。IE向けのハックは使ってませんが、IE6でもそう表示が崩れることはないかなと期待。アップロードされた画像ファイルの内、最新の<em>JPEG画像</em>を5枚表示するようにしてます。</p>
<p><img src="http://p2b.jp/PIX/1260213051_galleryShot.jpg" alt="galleryShot" width="494" height="390" title="CSSのみでのフォトギャラリー。IE6でも何とか動くかな。" /></p>
<p>　今後、いじるとすれば、ファイルサイズ上限を指定したりとかですかね。とりあえず。</p>
]]>
 </content:encoded>
</item>
 </channel>
</rss>