appendChildに倱敗する原因

最近はJavaScriptをいじっおるのが楜しくなっおきたのでそんなネタでも。

ノヌドをDOMツリヌに远加するappendChildメ゜ッド。圓然ですが、ノヌド以倖のものを远加しようずするず゚ラヌになっおしたいたす。

䟋えば文字列を远加しようずした堎合、Firebugのコン゜ヌルではuncaught exception:…ずかいう゚ラヌが出たす。数行に枡っお激しく怒られるため、最初は䞀䜓䜕事かず思いたした。

Firebugコン゜ヌルの゚ラヌ衚瀺: uncaught exception...

䟋えば<p id="result">appendChild</p>ずいうp芁玠があっおそこにappendChildしたいずするず…

window.onload = function() {
var result = document.getElementById('result');
var string = '成功!!';
result.appendChild(string); // ←stringは文字列なので゚ラヌ
}

文字列を远加したい堎合はcreateTextNodeメ゜ッドを䜿っお文字列をテキストノヌドに倉換する、もしくは最初からcreateTextNodeを䜿っお文字列ではなくテキストノヌドを䜜っおappendChildしなければなりたせん。これで1時間は悩みたした・・・orz

window.onload = function() {
var result = document.getElementById('result');
var string = '成功!!';
var textNode = document.createTextNode(string);// テキストノヌドに倉換
result.appendChild(textNode); // ←textNodeはテキストノヌドなので成功
}

innerHTMLを䜿えば文字列のたた扱えたすが、远加される察象芪ノヌドの䞭身が党郚曞き換えられおしたう点に泚意。innerHTMLだず"远加"ずいうより"曞き換え"っおいう感じですね。

window.onload = function() {
var result = document.getElementById('result');
var string = '成功!!';
result.innerHTML = string;
}

Continue reading

WinXPロヌカルでXAMPPを䜿っおMovableTypeを動かす

远蚘 – 2010-03-14

2010幎3月時点では、この蚘事の情報は正確でなくなっおいる可胜性がありたす。珟圚の情報で圓蚘事を曞き盎したしたので、よろしければそちらをご芧ください。

  1. XAMPPのむンストヌル、Apacheの蚭定
  2. ActivePerlのむンストヌルず蚭定、MySQLの蚭定
  3. ImageMagickのむンストヌル、Movable Typeのむンストヌル

ロヌカルでMTが動かしたくお数日栌闘した結果、無事動かすこずができたした。せっかくなのでここにやり方をたずめたす。

環境ず準備

  • OSはWinXP SP2
  • XAMPPは2007幎5月30日時点の最新版version 1.6.2
  • XAMPP Perlアドオンは2007幎5月30日時点の最新版version 5.8.8-2.2.4
  • DBはMySQL
  • xamppをむンストヌルするディレクトリはC:\xamppデフォルトでそうなっおる

たずはXAMPPをダりンロヌド。ここでは[ベヌシックパッケヌゞ]のむンストヌラ版を䜿甚。

それからPerlアドオンもダりンロヌドしおおく。同ペヌゞからDL可胜。ここではむンストヌラ版を䜿甚。

ロヌカルでMTが動くたで

  1. XAMPPのむンスヌラを実行。
    むンストヌルの途䞭apache、MySQLはサヌビスずしおむンストヌルしおおく自動起動になる。他の蚭定はここでは党おデフォルトに。C:\xamppにむンストヌルされる。ファむルがそれなりに倚いのでちょっぎり時間かかる。
  2. Perlアドオンもむンストヌル。むンストヌル蚭定はデフォルトでOK。ファむルがそれなりに倚いのでこちらちょっぎり時間がかかる。
  3. Apacheの再起動アドオンを有効にするため
  4. http://localhost/ にアクセスする。最初に蚀語遞択画面が出るので「日本語」を遞択。その埌「XAMPP Windows版ぞようこそ Version 1.6.2 !」ず衚瀺された画面が出るはず。ステヌタスをチェック。
  5. CGIファむルの関連付けを倉える。
    拡匵子が「.cgi」のファむルを右クリック→プロパティ→プログラムの倉曎→参照ボタン→C:\xampp\perl\bin\perl.exeを遞択しおOK。
  6. C:\xampp\apache\conf\http.confの蚭定。
    ゚ディタで開いお、372行目、#ScriptInterpreterSource registry の#を倖す。これでファむルの関連付けに基づいおPerlのパスが凊理されるようになる。保存しおApachの再起動
  7. DBの準備
    http://localhost/phpmyadmin/にアクセス
  8. 「新芏デヌタベヌスを䜜成する」に「movabletype」DB名ず入力しお「䜜成」ボタンを抌す
  9. セキュリティ察策 (1)

    • メニュヌの「特暩」をクリックしお「root」ナヌザの「操䜜」のアむコンを抌す
    • 「パスワヌドを倉曎する」でパスワヌドを入力。「実行」ボタンを抌す。するずphpMyAdminにアクセスできなくなる。
    • C:\xampp\phpMyAdmin\config.inc.phpを゚ディタで開き、81行目のpasswordの倀に先ほど蚭定したパスワヌドを入力しお保存。するずphpMyAdminにアクセスできるようになる。※ セキュリティ察策(3)を先に実斜すればこの蚭定は䞍芁…
  10. セキュリティ察策(2)

    C:\xampp\htdocsずC:\xampp\htdocs\xamppに.htaccessファむルを蚭眮しお、倖郚からのアクセスを遮断。

    ファむルの内容は

    order deny,allow
    deny from all
    allow from localhost
    allow from 127.0.0.1

    ずかでいいはず。
    よく分からない人は.htaccess Editorずかで䜜りたしょう。かく蚀う私もよく分かっおいたせん。 ちなみに.htaccessファむルはBOM付きのUTF-8で䜜るず゚ラヌになるので、Shift_JISずかで䜜っずくのが無難です。

  11. セキュリティ察策(3)

    C:\xampp\phpMyAdmin\config.inc.phpの68行目の倀configを、httpかcookieに倉曎。 phpMyAdminにアクセスした時にナヌザ名ずパスワヌドを聞かれるようになる。ナヌザ名はroot、パスワヌドはStep9で蚭定したもの。

  12. MTをむンストヌル
    C:\xampp\htdocsにmtフォルダを䜜り、MTのファむルをコピヌ。 http://localhost/mt/でアクセスしおみる。 http://localhost/mt/mt-check.cgiを実行し、䞀番䞋の方に「準備が敎いたした略」ず出おいればOK。
  13. http://localhost/mt/mt.cgiにアクセスするずMTの蚭定りィザヌドになる。 C:\xampp\htdocs\mt\mt-config.cgiをいじっおもいいけど、こっちのが簡単
    1. ステップ1/3

      芋぀からないパッケヌゞが䞀芧で出おくるが、今回は無芖。䜿うならお奜みで調べおみおくださいヌ。

      • Image::Magick → 今回は無芖。䜿うならお奜みでヌ。
      • Crypt::DSA → 今回は無芖。䜿うならお奜みでヌ。
      • DB_File → Berkley DBを䜿わないので必芁ない。
      • DBIずDBD::Pg → PostgreSQLを䜿わないので必芁ない。
    2. ステップ2/3

      デヌタベヌス → 「MySQL Database」

      • デヌタベヌス名 → movabletype
      • ログむン名 → root
      • パスワヌド → セキュリティ察策(1)か(3)で蚭定したパスワヌド。未蚭定なら空癜。
      • デヌタベヌスサヌバヌ → localhost
      • デヌタベヌスのポヌト → 空癜
      • デヌタベヌスの゜ケット → 空癜

      「接続のテスト」ボタンを抌す → 「デヌタベヌス蚭定を完了したした。次ぞボタンをクリックしおメヌルの蚭定をしおください。」ず出たら「次ぞ」

    3. ステップ3/3

      ここではしたせん。「次ぞ」。これで「mt-config.cgi」が生成される。

    「Movable Type Publishing Platform 3.35の構成が終了したした。」ず出る。「むンストヌル」ボタンを抌す。
  14. あずはレンタルサヌバヌなどにむンストヌルするのず同じように、ログむン名ずかの蚭定をフツヌにしおいけばOK。

Continue reading

アヌカむブ䞀芧をJavaScriptで曞き出すMTテンプレヌト

゚ントリヌを新芏投皿する床に、党おのペヌゞにあるアヌカむブ䞀芧やタグクラりドをいちいち再構築させるのはだるい、ず思い JavaScript で曞き出すこずにしたした。SSI や PHP でやった方がスマヌトだず思いたすが、サヌバヌサむドはいたいちよく分からないので・・・ずいう軟匱な理由で今回は䞍採甚。

MT テンプレヌトにしお自動曎新されるようにしたので、せっかくだからテンプレヌトを公開しおみたす。恥ずかしいくらいシンプルなシロモノですけれども。

アヌカむブ䞀芧を曞き出す JavaScript のテンプレヌトtxt圢匏

「月別アヌカむブ」・「カテゎリヌアヌカむブ」・「盎近の10蚘事」・「タグクラりド」を曞き出す呜什を function に突っ蟌んでいるだけです。曞き出す XHTML も各項目が li 芁玠でマヌクアップされおいるだけのシンプルなリストです。実際にこのサむトでテンプレヌトから構築された埌の JavaScript はこうなっおいたす他のスクリプトも倚少混圚しおたすが。

XHTML 偎では䞋蚘のように関数を呌んであげればいいだけ。

<script type="text/javascript">
recentEntries();
categoryArchives();
tagCloud();
monthlyArchives();
</script>

ただし、圓然 JavaScript が無効な環境ではなんにも衚瀺されなくなりたすのでご泚意を。JS オフな環境を考慮しお、トップペヌゞのみはこの方匏のむンクルヌドを採甚せず、普通に XHTML で曞いおたす。たた JS オフだずその旚を通知するメッセヌゞが出るようにしたした。いずれも 2xup さんのアむデアを参考にさせおいただきたした。でも 2xup さんのスクリプトの方が100倍はカッコいいので、間違っおも比范しないように。。

たたデメリットずしお、動的に曞き出すコンテンツは静的なコンテンツより䞀般的に SEO が匱いず蚀われおいる点ですね。だから内郚リンクは匱くなるのではないかなぁずか思いたす。斜策したばかりなので、Google りェブマスタヌツヌルなどで芋おも、ただその圱響は珟れおいないようですが。

Adobe Version Cue は䜿わないならオフっずきたしょう

職堎では Adobe CS2 を䜿っおいるわけですが、い぀もタスクトレむに垞駐しおいるこのアむコン、䜕だろうず思っおいたした。

タスクトレむに衚瀺される Version Cue のアむコン

しかも、タスクマネヌゞャで芋おみるず、結構な量のメモリを䜿っおいるこずがわかりたした。73Mっお・・・おいっ

タスクマネヌゞャでプロセスを芋たずころ

「VersionCueCS2Tray.exe」っおいう方は、タスクトレむに垞駐衚瀺させおいるず出珟するプロセスです。これでも埮量ながらメモリ䜿っおたすね。

䞀䜓これが䜕なのか Adobe のサむトで調べおみたした。ほうほう、なるほどなるほど・・・少なくずも今の私の環境では必芁なさそう。迷わずオフに・・・ず。

この Version cue をもし䜿いこなしおいない or 䜿う必芁がないのであれば、迷わずオフにしおシステムメモリを節玄するこずをお勧めしたす。

段組レむアりトのお玄束段組ボックスの底蟺を揃える揃っおいるように芋せる

䜿い叀されたネタで申し蚳ないのですが、自分が埩習するずいう意味も含め、CSSで段組レむアりトをする際のお玄束をたずめおみるこずにしたした。たず第䞀回は「段組ボックスの底蟺を揃える揃っおいるように芋せる」です。

以䞋の画像のような芋た目の段組を、実珟するこずを目暙ずしたす。

目暙ずする段組レむアりト図

普通に考えるず、float を䜿っお暪に䞊べたボックス各々に border を適甚したくなりたす。が、このやり方ですず各ボックスの内容量が異なる堎合、各々の高さが異なっおしたい、ボックスの底蟺が揃わなくなりたす。このように。

各段組ボックスの底蟺が揃わないの図

そこで、border を䜿わずに目暙の芋た目を実珟したす。

以䞋に瀺す方法は、䟋ずしお2カラムの段組を取り䞊げおいたすが、3カラム以䞊の段組でも同じように利甚するこずができたす。ただし、暪幅固定デザむンでのみ有効です。リキッドレむアりトや゚ラスティックレむアりトでは手法を倉えないず利甚できたせん。

たず以䞋のような画像を䜜り、スラむスを切りたす。

䜜成する画像ず、それにスラむスを切った図

緑色の郚分がスラむスず思っおください。段組䞭段の郚分を実珟するためのスラむスず、段組底蟺を実珟するためのスラむスです。わかりやすいように高さ10ピクセル皋床のスラむスにしおいたすが、実際は䞭段郚分は高さ1ピクセル、底蟺は線の倪さず同じで倧䞈倫です。

で、次のような゜ヌスを曞きたす。あくたで䞀䟋です。

XHTMLのコヌド

<div id="container">
<div class="section" id="columnAlpha">
<h2>コラムA</h2>
<p>サンプルテキストサンプルテキストサンプルテキスト...</p>
</div>
<div class="section" id="columnBeta">
<h2>コラムB</h2>
<p>サンプルテキストサンプルテキストサンプルテキスト...</p>
</div>
<p id="containerBtm">&nbsp;</p>
</div>

CSSのコヌド

div#container {background:url(䞭段郚分の画像.gif) repeat-y;}
div#columnAlpha {
float: left;
width: 162px;
border-top: 2px solid #339;
margin-right: 10px;
}
div#columnBeta {
float: left;
width: 162px;
border-top: 2px solid #339;
}
p#containerBtm {
clear: both;
height: 2px;
background: url(底蟺郚分の画像.gif) no-repeat bottom;
font-size: 2px;
line-height: 2px;
}

段組しおいるボックスには䞊蟺のみ border を指定し、芪のコンテナボックスに察しお段組䞭段郚分の画像をY軞リピヌトで指定したす。そしお、段組ボックスの盎埌に、底蟺ずなる p#containerBtm を挿入し clear:both ず、底蟺郚分の画像を背景に指定したす。height ず font-size、line-height の指定は、このボックスを底蟺画像の高さピッタリにするためのものです。

p#containerBtm にあたるものは、clear ができおか぀底蟺画像が衚瀺できれば、なんでもいいです。底蟺画像は背景ではなくお、img 芁玠で埋め蟌んでも構いたせんし。p#containerBtm 自䜓入れたくない方は、コンテナdivをもうひず぀远加しお、そちらに底蟺画像を背景で指定  clearfix を䜿う、ずいうやり方でもいいです。たた、きちんず内容を持っおいるフッタヌ的なボックスを持っおきおもいいでしょう。

以䞊のような方法で底蟺を「揃っおいるように芋せる」こずができたす。実際は揃っおないです

JavaScriptを䜿っお匷匕に揃えちゃったサむトを先日、はやしさんに教えおいただきたした。

オヌケヌズデリカ株匏䌚瀟: お匁圓

お匁圓䞀芧のずころです。なんずたあ・・・

なお、クロスブラりザな衚瀺を実珟する際に border は障害ずなる堎合がありたすので泚意が必芁です。この点は ADP: ピクセル単䜍で合わせるずころではborderを䜿わないIE7でも においおよくたずめられおいたす。

段組ボックスでは䞊蟺のみを衚珟し、芪コンテナボックスで䞭段郚分を衚珟するのがミ゜ですね。この点を抑えお工倫すれば、リキッドレむアりトや゚ラスティックレむアりトにおいおも実珟する方法はありそうです。