Home

パステルパラソル

移転

  • 2011年01月26日(水) 1:34
  • ALL

Ubuntu 10.04 Lucid Lynx で BUFFALO の 無線LAN 子機 WLI-U2-KG54L を使う

  • 2010年08月09日(月) 2:19
  • ALL | PC

*概要
 やりたいことはタイトルの通り。以下のフォーラムに書いてある通りに操作すればいいのだが、スペルミスや無駄な参照が多く、非常に読みにくいので整理しておく。

Ubuntu 9.10 でPLANEX GW-US54GXSが使えない

*原因
 WLI-U2-KG54L は ZD1211 という無線LANチップを使っており、Ubuntu 10.04 Lucid Lynx のドライバがこのチップに対応していないことが原因。

*対応手順
 次の手順でカーネルソースからドライバ zd1211rw をリビルドする。

1.元のドライバをバックアップしておく。
#geshi(bash){{
$ sudo mv /lib/modules/$(uname -r)/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko \
/lib/modules/$(uname -r)/kernel/drivers/net/wireless/zd1211rw/zd1211rw.bak
}}
2.適当に作業フォルダを作り、移動。
#geshi(bash){{
$ mkdir ~/linux
$ cd ~/linux
}}
3.カーネルソースを得る。
#geshi(bash){{
$ apt-get source linux-image-$(uname -r)
}}
4.zd_mac.c と zd_mac.hを変更。
~/linux/linux-version/drivers/net/wireless/zd1211rw にある、zd_mac.c と zd_mac.h に一行ずつ追加する。★version の部分は各自読み替えてください。
#geshi(c){{
@@ -42,6 +42,7 @@ static struct zd_reg_alpha2_map reg_alpha2_map[] = {
{ ZD_REGDOMAIN_ETSI, “DE” }, /* Generic ETSI, use most restrictive */
{ ZD_REGDOMAIN_JAPAN, “JP” },
{ ZD_REGDOMAIN_JAPAN_ADD, “JP” },
{ ZD_REGDOMAIN_JAPAN_3, “JP” }, // 追加
{ ZD_REGDOMAIN_SPAIN, “ES” },
{ ZD_REGDOMAIN_FRANCE, “FR” },
}}
#geshi(c){{
@@ -193,6 +193,7 @@ struct zd_mac {
#define ZD_REGDOMAIN_FRANCE 0×32
#define ZD_REGDOMAIN_JAPAN_ADD 0×40
#define ZD_REGDOMAIN_JAPAN 0×41
#define ZD_REGDOMAIN_JAPAN_3 0×49 // 追加
}}
5. makeする。
#geshi(bash){{
$ sudo make -C /lib/modules/$(uname -r)/build \
M=~/linux/linux-version/drivers/net/wireless/zd1211rw modules \
&& sudo make -C /lib/modules/$(uname -r)/build \
M=~/linux/linux-version/drivers/net/wireless/zd1211rw modules_install
}}
6. zd1211rw.ko を移動
~/linux/linux-version/drivers/net/wireless/zd1211rw に zd1211rw.ko ができているので移動する。
#geshi(bash){{
$ sudo mv ~/linux/linux-version/drivers/net/wireless/zd1211rw/zd1211rw.ko \
/lib/modules/$(uname -r)/kernel/drivers/net/wireless/zd1211rw/zd1211rw.ko
}}
このあと WLI-U2-KG54L を抜き差しすれば認識するはず。

WP PukiWikiを常に適用する

*概要
 WP-PukiWikiはpukiwiki記法で記事が書けるようになる便利なプラグインだが、適用したい箇所をいちいちOPENTAGとCLOSETAGで囲わなければならないのが面倒である。そこで、はてな記法のように、特に何も断らない場合は常にpukiwiki記法を適用するようにした。
*手順
wordpress/wp-includes/post-template.phpの次の箇所1
#geshi(php){{
$content = apply_filters(‘the_content’, $content);
}}

#geshi(php){{
$content = apply_filters(‘the_content’, ‘WPPW_OPENTAG’ . $content . ‘WPPW_CLOSETAG’ );
}}
と書き換える。
 なお、WPPW_OPENTAG、WPPW_CLOSETAGの部分は各自の設定に合わせて変更すること。デフォルトの場合、

WPPW_OPENTAG=<pukiwiki>
WPPW_CLOSETAG=</pukiwiki>

となっているはずだ。

  1. ver2.9.1では166行目だった []

粉雪

  • 2009年12月31日(木) 20:51
  • ALL | Neta
こなあああああああゆきいいいいいいいい

こなあああああああゆきいいいいいいいい

開始時に入れたWordPressプラグインのまとめ

*概要
 連続で記事がUPできる程度には環境が落ち着いてきたので、入れたプラグインをまとめておく。これからWordPressの設定をしたい人は参考にどうぞ。
*一覧表
**最初から入っていたもの
|~Akismet|
|スパム対策。|
|~WP Multibyte Patch|
|マルチバイト文字をちゃんと表示する。|

**専用ページ生成
|~WPtouch iPhone Theme|
|iPhone専用のページを自動で生成する。|
|~Ktai Style|
|ガラパゴス携帯専用のページを自動で生成する。|

**アクセス解析
|~Ultimate Google Analytics|
|Google Analytics用の解析タグを自動で埋め込む。|
|~WordPress Google Analytics Reports|
|Google Analytics解析結果の要約をダッシュボードに表示する。|
|~WordPress.com Stats|
|アクセス解析。|
|~WP-SlimStat-Ex|
|アクセス解析。WordPress.com Statsと比べて使いやすい方を残すつもり。|
|~FeedLogger|
|フィード購読者数を計測する。|

**SEO対策
|~All in One SEO Pack|
|設定画面で聞かれた通りに書きこむだけで、一通りのSEO対策ができる。|
|~
FeedBurner FeedSmith|
|WordPressのRSSをFeedBurnerにリダイレクトする。|
|~Google XML Sitemaps|
|Google、Yahoo、MSNのロボット用のxmlサイトマップを自動で作成する。|
|~Dagon Design Sitemap Generator|
|人間用のサイトマップを自動で作成する。|

**記事作成補助
|~Contact Form 7|
|コンタクトフォームを作れる。突発的にアンケートなどを作りたくなったときに便利。|
|~add css js|
|CSS/JavaScriptを特定の記事だけに適用する。「1回だけ、この記事だけに使いたい」というときに便利。|
|~Hatena::WordPress::Adaptor|
|はてなのidトラックバックを使えるようにする。|
|~WordPress ›WP-Footnotes|
|注釈をつける。|
|~WordPress ›WP PukiWiki|
|pukiwiki記法で記事が書けるようになる。|

**ユーザビリティ向上
|~WP Super Cache|
|サーバ上にキャッシュを保存して、WordPressの表示を高速にする。|

**保険
|~WordPress Database Backup|
|記事データをバックアップする。|

Movable TypeよりもWordPressを選んだ理由

*はじめに
 パステルパラソルはさくらのレンタルサーバWordPressを設置して運用している。とっても快適で満足しているのだが、ブログを開設しようと思った当初はどんなツールを使えばよいのかいまいち分からなくて、Movable Typeなんかを試用していたこともあった。ブログを始めるにあたってMovable Typeを使うかWordPressにするかで悩んでいる方も多いと思われるので、簡単に両者の違いをまとめてみた。
 結論としては、個人でブログを運用するならMovable Typeはあまりに使いづらく、圧倒的にWordPressを使う方がよい。

*比較表
 2009年12月時点の最新版であるWordPress 2.9とMovable Type 5の比較表を掲げる。

|~-|~WordPress 2.9|~Movable Type 5|
|~記事生成|動的|静的(動的生成も可能)|
|~主言語|php|perl|
|~ブログのパス|ほぼ自由|「ウェブサイト」の中に限られる|
|~日本語ドキュメント|多い1|多い|
|~集中アクセス対処能力|低い|高い|
|~想定されている用途|ブログ|Content Management System|
|~管理画面のUI|要所にはシームレス遷移も|ほぼ画面切り替え|
|~価格(ライセンス)|無料(GPL)|個人ライセンスは無料(参考)|
|~ユーザ数|自由に設定可|個人ライセンスは1人まで|
|~メールサポート|原則なし|有料ライセンスにはあり|
|~データベース|MySQL(4.0以上)|MySQL(5.0以上)|
|~ブログ数/アカウント数|1/1|いくつでも/1|
|~プラグイン|>|CENTER:WordPressの方が多い|
|~Google トレンド|>|CENTER:wordpress + wp > movable type + mt(2009年12月現在)|

 ほとんどの点でWordpressが勝っていることが分かると思う。表にも載せたが、MTはそもそもContent Management Systemを意図したつくりになっており、ブログを含む大きなサイト・コンテンツを全体として管理するにはよいが、ブログを単体で動かす場合には小回りがきかずイライラすることが多い。

*その他(という名前のMTをDisる会)
-MTは静的生成なので再構築がとにかくストレス。なにも記事を上げていない状態で既に30秒以上かかることがざらにある。この一点だけをもってWordpressを選択してもよいぐらい遅い。動的生成にもできるというが、その場合多くのプラグイン資産が動かなくなるし、それをするためにややこしい設定ファイルをいじるくらいなら最初から動的生成のWordpressを用いておけばよい。
-MTは最近ver5にアップグレードされたが、ver4のプラグイン資産を流用できないことが多かった。ソースコードレベルで修正をかけると動くものもあったが、多くはどう変更すればいいのか分からなかった。一方WPも最近2.9にアップグレードされたが、こちらのプラグインの場合、私の使っていたものはすべて動いている。前者がメジャーアップデートであるのに対し、後者はマイナーアップデートなので一概には比較できないが、頭に入れておいてもよい事項だろう。
-MTは日本語表記の曜日が省略形式にならないという基本的なバグすら治っていない。

叫び

叫び

*追記
 id:maRkの指摘を反映。データベースの記述が間違っていたので修正しました(Movable Type5が対応しているデータベースはMySQLの5.0以上のみ)。動的生成の場合にURIに日付のディレクトリをつけるのがよくない理由は分からなかったのでそのままにしてあります。ありがとうございました。

  1. MTに比べてWPの日本語情報が少ないという時代はもう終わったと考えてよいと思う。このブログの設定はほとんど全て日本語のドキュメントを参考にして行っている。 []

下揃えした2カラム各々に透過png背景を入れるHTML

  • 2009年12月21日(月) 1:29
  • ALL | CSS

*はじめに
 最近のWebサイト業界において2カラムレイアウトは、見ない日がないほど普及している。にもかかわらず、いざこれを実現しようとすると、いまだに多くの面倒な問題にぶつかってしまう。例えば、containerの中にbodyとsidebarを配置するようなごく単純なdivレイアウトを考えよう。何も考えずに書くと、以下のようになるだろう。
**HTML
#geshi(html4strict){{

二段組みレイアウトのサンプルです。

メインテキスト
メインテキスト
メインテキスト

}}

**CSS
#geshi(css){{
#container {
width: 300px;
margin-left: auto;
margin-right: auto;
}
#body {
width: 200px;
float: left;
background-color: orange;
}
#sidebar {
width: 100px;
float: left;
background-color: skyblue;
}
}}
 これをFirefox3.5で解釈すると次のようになる。

図1:下端が揃わない

図1:下端が揃わない

 図1より、背景色の下端が揃っていないことが分かる。これを解消するためには「子要素sidebarとbodyの下端を親要素containerの下端まで伸ばす」という指定を入れる必要があるが、実はこのような指定を簡単に書く方法がCSS3.0には用意されていない。このため、多くのトリッキーな方法が考案され、バッドノウハウとして広まっているのが現状である。
 本記事の目的はこうした2カラムレイアウト関連のテクニックを整理することであり、このようなひどい状況を作ったCSSの仕様に苦言を呈すことであり、そしていつの日か、簡単に2カラムレイアウトが実現できるような仕組みが導入されることを、みなさんと一緒に祈ることでもある。
 本記事では最終的に、

-背景の下端が揃った2カラムレイアウトである。
-幅も高さも固定せずに組める。
-それぞれのカラムに独立した透過pngが貼り付けられる。
-HTMLとCSSのファイルが1つずつあれば組める。
-javascriptを無効にしていても外観が変わらない。
-多くのブラウザで外観がほぼ一致する。

というレイアウトを目指す。
*結論
 最初に結論を述べておく。現時点では、テーブルタグを用いたレイアウトが最もよい。それは、CSSによるレイアウトが決定的に能力不足だからである。
 本エントリでは多くの環境で平等に閲覧できるようにするため、javascriptを不使用とした。したがって使用できるのはhtmlかCSSである。htmlの本分はマークアップなのだから、CSSでレイアウトを組むのが順当だという意見も確かにあるだろう。実際2カラム問題に関しては実にいろいろなCSSハックが提案されており、そのどれもが一見それなりに成立しそうなソリューションになっている。
 しかし、私が確認できたすべての方法は、決して無視できない重大な欠陥を含んでいた。詳細はこれから説明するが、要約するとその内容は

-リキッドレイアウトにできない。
-アンカータグが動作不良をおこす。
-非透過の背景画像でしか使えない。

というものである。このどれもが用途によっては致命的である。
 私が本記事でテーブルレイアウトを推すのは、CSSがいまだに2カラムレイアウトを正しく組める段階まで成長していないと考えているからである。今後状況が改善され、CSSで組みたいレイアウトが組めるようになり、大半のブラウザでそれが正しく解釈できるような時代が来れば、そのときには本記事のような次善の策は捨ててしまえばよい。残念ながら私たちは未来ではなく現在に生きているので、まずはともかく、既存のCSSレイアウトのどこがいけないのかを見ていこう。

*有名な3つの手法の紹介
**1.containerに背景画像を用いる
 bodyとsidebarのwidthを固定しておき、これらの背景画像を連結した新たな画像を用意する。この画像をcontainerの背景画像として並べれば、bodyとsidebarに独立した画像を設定した場合と異なり、下端が一致したレイアウトとなる(図2)。

図2:containerに背景画像を用いる

図2:containerに背景画像を用いる

#geshi(css){{
#container {
width: 300px;
margin-left: auto;
margin-right: auto;
background: transparent url(background.png) repeat scroll 0 0;
}
#body {
width: 200px;
float: left;
}
#sidebar {
width: 100px;
float: left;
}
}}

 この手法の問題はリキッドレイアウトにできない点だ。つまり、どのようなディスプレイから見ても同じ横幅となるよう、widthを固定しておく必要がある。このことは閲覧者側にも管理者側にもデメリットとなる。
 閲覧者側のデメリットは、狭いディスプレイで読みにくくなるという点である。高解像度の液晶ディスプレイはずいぶん普及したが、ネットブックやスマートフォンなどの登場によりいまだに低解像度のディスプレイは広く使われている。iPhoneのようにダブルタップで読みたいブロックを簡単に拡大できるならよいが、そうでない端末を使っている場合、PC用に最適化された幅のコンテンツを読むのは面倒だろう。
 管理者側にもデメリットがある。レイアウトを容易に変更できないという点だ。メインカラムやサイドバーの横幅を少し調整するたびに新しい背景画像を用意するのは時間の無駄である。

**2.縦方向のネガティブマージンを用いる

 これは大きなpadding-bottomを与えることで背景画像をはるか下方まで伸ばし、同じ絶対値を持つ負のmargin-bottomで下方向の隙間をキャンセルする方法である。containerを越えて伸びた背景画像は、overflow:hiddenを指定して隠す(図3)。

図3:ネガティブマージンを用いる

図3:ネガティブマージンを用いる

 具体的には次のようにする。まず絶対値の等しい正負の二整数N,-Nを用意する。このときの整数は例えばN=2^15=32768がよく用いられる1。bodyとsidebarに-Nのmargin-bottomとNのpadding-bottomを設定し、containerにoevrflow:hiddenを指定する。

#geshi(css){{
#container {
width: 300px;
margin-left: auto;
margin-right: auto;
overflow: hidden;
}
#body {
width: 200px;
float: left;
background-color: orange;
padding-bottom: 32768px;
margin-bottom: -32768px;
}
#sidebar {
width: 100px;
float: left;
background-color: skyblue;
padding-bottom: 32768px;
margin-bottom: -32768px;
}
}}

 この方法の問題点はアンカータグが正常に動作しないことである。アンカータグとは、ページ内リンクを貼るためのタグである。このタグは長めの文章に目次をつけるときや、ブログのコメント部、トラックバック部に直接リンクを張りたい場合などに便利だが、ネガティブマージンを使う場合は別の方法を考えなければならない。この意味で、縦方向のネガティブマージンはサイト構成の選択肢を著しく狭めていると言えるだろう。
 なお、次のURLに動作不良のサンプルがある。
-ネガティブマージン+overflow:hiddenにアンカーを組み合わせると絶望的な件に関して – やさしいデスマーチ
再現ページ

**3.前景と背景に異なるdivブロックを用いる

 これは、body,sidebarそれぞれの前景と背景を分離して扱う方法である。背景のdivブロックを重ねて配置し、rightを用いてbodyに対応する背景を左方向に移動する。overflow:hiddenで左にはみ出した分を隠せば2カラムレイアウトの背景のように見せかけることができるので、leftを用いて適切な位置に前景であるbodyとsidebarのテキストを配置してやればよい(図4)。

図4:前景と背景に異なるdivブロックを用いる

図4:前景と背景に異なるdivブロックを用いる

CSSは次のようになるだろう。

#geshi(css){{
#containerbody {
width: 300px;
float: left;
position: relative;
right: 100px;
background-color: orange;
}
#containersidebar {
width: 300px;
margin-left: auto;
margin-right: auto;
overflow: hidden;
background-color: skyblue;
}
#body {
float: left;
position: relative;
width: 200px;
left: 100px;
}
#sidebar {
float: left;
position: relative;
width: 100px;
left: 100px;
}
}}

 この方法の問題点は背景に透過pngを用いることができない点である。bodyの背景とsidebarの背景が重なっており、bodyに透過pngを用いるとsidebarの背景と混ざってしまうからだ。デザイン上透過pngを使わないのであればこの方法を用いればよいが、そうでない場合は別の方法を模索する必要がある。

*その他の手法
 以上よくある3つの手法を見た。ここではその他の手法と問題点を簡単に列挙しておく。

**4.絶対配置を用いる
-2と同様リキッドレイアウトにできない。
-計算が面倒。
-ブラウザによって解釈が異なることがあり、1dot単位での厳密な配置を行うと特定のブラウザでレイアウトが崩れる可能性がある2
**5.height: 100%を用いる
-カラムの高さを固定するか、ブラウザの高さに対する相対値にする必要がある。
**6.Display: tableを用いる
-Internet Explorer7以下では動作しない。

*テーブルレイアウト
 以上見てきたように、CSSの2カラムレイアウトには、重要なブラウザで動作しなかったり、ユーザビリティを制限してしまったりといった不具合がどうしてもつきまとう。この状況は当分解決されそうにないので、別の方法を考えるべきだ。ではどんな方法がよいだろうか。私が考える現時点での最適解は、太古のWebから存在する手法、いにしえのソリューションであるところのtableタグを用いる方法である。HTMLとCSSは例えば次のようになる。ネガティブマージンもposition:relativeも出てこない、非常に単純明快なコードになっている。

**HTML
#geshi(html4strict){{

メインテキスト
メインテキスト
メインテキスト

}}

**CSS
#geshi(css){{
#container {
width: 300px;
margin-left: auto;
margin-right: auto;
}
table{
border-collapse: collapse;
}
td.body {
background-color: orange;
vertical-align: top;
width: 200px;
}
td.sidebar {
background-color: skyblue;
vertical-align: top;
width: 100px;
}
}}

*議論
 ちょっとまった、という声が聞こえてくるかもしれない。htmlはマークアップのための言語だ。デザインとは切り離すべきである、と。tableタグはそこに表組みがあるということだけを意味しており、レイアウトという文脈は込められていない。Webサイトのメインコンテンツとサイドバーがまるまるtableの中に入っているのは不自然だ、と3
 しかし、このご時世、tableレイアウトを解釈できないブラウザがいったいどれだけあるというのだろうか。少なくともレンダラ部を備えたブラウザでは皆無に近いはずだ。私が試した限りにおいては、このテーブルレイアウトは

-Internet Explorer 6,7,8
-Mozilla Firefox 3.0, 3.5
-Google Chrome 1.0
-Safari 4.0
-Netscape 7.1

の全てで正しく表示されている。これらは2009年現在のブラウザシェアの9割を越えている4
 テキストブラウザでは読めないかもしれないという意見があるかもしれないので、これに関しても調べてみたが、W3Mはテーブルを正しく2段で表示したし、Lynxも1段ずつ左から順にテーブルの中身を表示した。これはコンテンツ左、サイドバー右という形式のレイアウトなら本文が先に来るのでほとんど問題ないし、あまり見かけないがその逆のレイアウトであっても、サイドバーに[PageDown]で追いつかないほど大量の情報は入らないだろうから、そこまで大きな問題にはならないと考えられる。そもそも、テーブルレイアウトはかなりありふれた構成だから、テキストブラウザなどというマイナーブラウザを使うマニアックな人にとっては扱いやすいもののはずだ。自力でどうとでもするだろう。
 唯一問題になると考えられるのはスクリーンリーダを使っている視覚障害者の方へのサポートであり、これはCSS、テーブルのいずれを使っても難しく、完全を目指すなら専用ページを用意するという形になるだろう。だが、それなりの対応でよいならば、これに関しても現状ではテーブルタグの方が有利である可能性が高い。というのも、例えばNVDA日本語を用いる場合、Ctrl+Alt+矢印キーでテーブル内の移動ができるので、どういう順番で並んでいるのか分かりづらい上に濫用されがちなdivタグをさまよい歩くよりは、行と列がはっきりしているtableタグのメインカラムとサイドバーを行き来する方が楽だからである。
 ここまで説明してもまだ「モダンなサイトはCSSレイアウトで組んであるに違いない」とかたくなに信じている方のために、最後にテーブルレイアウトを用いている有名なサイトを紹介しておこう。Twitterだ(2009年12月現在)。嘘だと思うなら、Twitterを開いてソースを確認してみるとよい。タイムラインとサイドバーがテーブルで分けられていることが確認できるはずだ。あなたは、Twitterを読んでいてレイアウトの問題で何か不自由したことがあるだろうか?

図5:Twitterはテーブルレイアウトを利用している

図5:Twitterはテーブルレイアウトを利用している

*まとめ

 そういうわけで、2カラムレイアウトはtableを使うのがよいというのが私の結論である。そういうわけで、このサイトはWordPressという最先端のブログツールを駆使していながら、テーブルレイアウトのような古錆びたテクニックを背負っている。レトロなフューチャーとモダンなノスタルジーの境目も曖昧になってきたゼロ年代の終わりだからこそ、こういうサイトが始まってもいいよね。そういうわけで、テルパラはこんな解説記事からスタートしました。
 来年もどうぞ、よろしくお願いします。

  1. この数字はInternet Explorerで扱えるmarginの限界に関係している:[OpenLayers-Dev] final animated zooming and panning patches。符号付き16bitで扱える整数のレンジに対応していると思われるが、その場合正負のいずれかは32767でなければいけないような気がするので、実際はよく分からない。いずれにせよ、マジックナンバーに頼った危険な方法である。 []
  2. 例えばIE6ではborderまでを含めてwidthを計算するが、他のほとんどのブラウザはborderを含めない。 []
  3. 私は記事が入っている表よりもマイナスの外枠のついた記事のほうがよっぽど不自然だと思うのだが、それはまあいいとして。 []
  4. 2009年9月ブラウザシェア – IE6、IE7、IE8、Firefox 3.5 | エンタープライズ | マイコミジャーナル []

Home