Archive for the ‘インターネット’ Category

リーセントトラックバックを表示させる

土曜日, 3月 6th, 2004

 このサイトは弱小サイトなので,まだまだどこからもトラックバックがない.なので全然必要なさそうな機能ではあるが,もしだれかからトラックバックがあったときに困るため,リーセントトラックバックを表示させる機能を付けてみよう.
 知らない間にこのサイトも,PHP化してサイドメニューのテンプレートも別に作成し,includeで表示させている.そのため,サイドメニューのテンプレートを修正すればいいようだ.ちなみに参考にしたのはカスタマイズ vol.22(G@MANIA)である.このエントリーには,トラックバックとは何か?みたいなことからいろいろと,他のサイトも紹介しながら書かれているので,一読をおすすめする(ていうか自分で書くのはめんどくさい).
 さて,実際のカスタマイズ作業に入ろう.リーセントトラックバックを表示させることはどうやら簡単にできるらしいのだが,そのトラックバックがどのエントリーにつけられたものなのか,を表示させることができないようだ.そのため,専用のプラグインがあるので,早速利用させてもらう.MTの「最近のTrackback」にエントリーのTitleとPermalinkを!(一色政彦 WEB SITE)に,「MTPingedEntry」プラグインがあるので,それをダウンロードする.
 解凍後,MTをインストールしたディレクトリの「plugin」ディレクトリにアップするのだが,実はいままでpluginディレクトリには何も入っていなかったことを知らなかったよ・・・まあどうでもいいけど.
 その後は,テンプレートの修正.プラグインのくわしい仕様などは一色さんのサイトを見てほしいが,ちなさいとでは以下のようにしてみた.

<div class="sidetitle">
Recent TrackBacks
</div>
<div class="side">
<MTPings lastn="4">
<MTPingedEntry>
・<a href="<$MTPingedEntryLink$>"><$MTPingedEntryTitle$></a>
</MTPingedEntry><br />
├ <$MTPingBlogName$><br />
├ <a href="<$MTPingURL$>" target="_blank"><$MTPingTitle$></a><br />
└ <$MTPingDate format="%Y.%m.%d - %X "$><br />
</MTPings>
</div>

 いまのところはこれで十分だろう.自分で自分にトラックバックを送って,ちょっとさみしい感じのテストを繰り返してみたから,大丈夫だと思うし.

PukiWikiで改行

水曜日, 3月 3rd, 2004

 現在はRakuWikiを使っているのだが,少し不満がないわけでもない.たとえば,&now;で時刻を取得できるのだが,なぜか曜日が取得されなかったりしている.あと実はRakuWikiの特徴の一つであるフレームもそれほど魅力的ではない.その都度リロードしなければならない点を考えると,むしろめんどくさいとも思える.
 そこでもう一度PukiWikiに戻れないかと考えている.PukiWikiに戻るための大きな条件は,「改行が編集画面のまま反映されること」である.
 もちろん,wikiエンジンの作法として,改行を捉える必要はあるだろう.詳しくは分からないが,wikiでは「文章構造要素」を大切にしているためだ.そのため,改行は段落やブロックと明確に区別されるし,専用の記述タグも用意されている.
 でもここは日本.日本語に特化した形での入出力方法があっても良いと思う.日本の場合,いわゆるbrタグで改行をすることが多いし,一部ではHTMLではpタグを使用しないという流れもあるくらい.そもそも「段落」の概念が欧米のパラグラフとはまったく異なっている.そのためちなは,べつにbrタグを使えば良いんじゃないかな,と(多少楽観的に)考えている.悪貨は良貨を駆逐するという懸念もないわけではないが,しかしここは,日本語の文章により適応したスタイルを,日本から発信していく必要があるのではないか,と考えて,長文ではあるが自分の考えを述べてみた.
 さて,PHPを改造しなきゃイカンのか,などと気が滅入っていたのだが,実は改行に限れば,すでに対応されているとのこと.PukiWikiの開発日記(12月3日)に,それに関する情報が掲載されていた.

質問箱/344 入力時の改行の扱いについて再び
質問箱/280 改行がそのまま反映されないのか?
その他 処理の見直し
cvs:convert_html.php(v1.4:r1.58)
$line_break追加 改行を反映する(改行を<br />に置換する)とき1
cvs:pukiwiki.ini.php(v1.4:r1.52)

 なんかよく分からなかったけど,アップデートしたファイルが二つあるらしい.それぞれにリンクが張られていたので,そこへ飛び,一番新しいファイル(pukiwiki.ini.phpはv1.53,convert_html.phpはv1.61)をダウンロードし,ローカルでちょこっと編集した後アップしてみた.ただし編集したのはpukiwiki.ini.phpだけで,convert_html.phpには何も手を加えていない.
 するとどうだろう.見事に改行が反映されているではないか!なんかすごいというか,やっと当たり前に一歩近づいた,って感じがする.
 ところで今回,それ以上に驚いたのは,PukiWikiの開発者はかなりがんばっている,ということ.もしかしたらwikiページだから,誰かがやってくれているのかもしれないけど,それでもこうやって短いスパンでアップデート(バグフィックス)が出ているっていうことに驚いた.こうした点もPukiWikiの人気の秘密なんだろうなと思う.

Movable Typeでソースを表示

水曜日, 3月 3rd, 2004

 Movable Typeで,ページのソースを表示させることが多くなった.まあそれは,MTを設置している今だけかもしれないけど,いちおう引用(ちなさいとではblockquoteタグを利用)とは区別したいと考えている.
 それで,現在はpreタグを利用して表示させている.スタイルシートでpreタグの属性(?)をある程度指定しているので,エントリーにはタグを書くだけで良く,お手軽である.現在の設定は以下の通りである.なんか無駄に設定しているような気がするのはご愛敬.

pre {
FONT-WEIGHT:         normal;
FONT-SIZE:           80%;
COLOR:               #000000;
margin-bottom:       5px;
margin-top:          5px;
margin-right:        5px;
margin-left:         5px;
background:          #DDDDDD;
PADDING-RIGHT:       5px;
PADDING-LEFT:        5px;
PADDING-BOTTOM:      5px;
PADDING-TOP:         5px;
border-style:        solid;
border-color:        #BBBBBB;
border-top-width:    1px;
border-right-width:  1px;
border-bottom-width: 1px;
border-left-width:   1px;
}

 preタグで囲まれた部分は整形済みテキストと認識され,改行やスペース,タブなどもそのまま等幅フォントで表示されるため,ソースの表示などには非常に有効だ.ところが,MTでエントリー内にpreタグを記述すると,少なくともちなさいとではおかしなことが起こる.もちろん,なんか表示するときに白抜けしたりすると言うこともあるのだが,それ以外にもいくつかおかしなことが起こる.たとえば,以下のようなソースを表示させてみる.

<pre>
text_1
text_2
</pre>

<表示>


text_1
text_2


と,このようになぜか一行あきで表示されてしまうのだ.よくわからないので,仕方なくエントリーに記述するときに,

<pre>text_1<br />text_2</pre>

と無理矢理1行で記述するしかなさそう(しばらくこれでやっている).
 これ以外に,一行が長くなると表示側も大変なことになるという点.まあこれはpreタグの宿命みたいなモノだからはっきり言って仕方ないのだが,なんとか回避策はないものだろうか.これでは不便だと思い,今度はスタイルシートでcodeというスタイルを設定し,pタグと一緒に設置してみた(<p class="code">)が,スペースやタブがうまく表示されず,階層化して表示させたい場合に不都合である.次に,codeタグを使ってみたが,codeタグは基本的に「ここがソースですよ」と宣言するだけのものなので,結局問題の解決にはなっていない.いろいろなblogサイトを見てみたが,みんな結構適当にblockquoteタグを使ったり,気にせずpreタグを使ったりしていた.さて,どんな方法がいいのやら.
 ここで,1行空いてしまう点について,ソースをコピーしてペーストしてみると,どうも1行空いているわけではないようだ.テキストエディタにペーストするときちんと1行空かないで表示されている.ということは,純粋に表示の問題だけ,と言うことか.ということで現在のところは,スタイルシートでline-height:100%;をpreタグに指定して,何とかごまかしている.
 さらに調査をしていくうちに,こんなものを見つけた.

ウィンドウの端まで行くような英単語は改行されませんが、印刷する際に問題が生じます。そこで単語途中でも改行することが出来ます。
 単語途中での改行の設定をするには、「word-wrap」プロパティにより行います。

おぉ,これを使えばうまくいきそう.ただし,IEにしか対応していないと書かれているところがちょっと不安.まあいいか.最終的に,以下のようにスタイルシートを設定した.しばらくこれでいってみるつもりである.

pre {
FONT-WEIGHT: normal;
FONT-SIZE: 80%;
COLOR: #000000;
margin: 5px;
background: #DDDDDD;
PADDING: 5px;
border-style: solid;
border-color: #BBBBBB;
border-width: 1px;
line-height: 100%;
word-wrap: break-word;
}

リーセントコメントと日付表示

火曜日, 3月 2nd, 2004

 ちなさいとを広く知ってもらうため,というよりか,来てくださったみなさんとのつながりをつくるためには,コメントの機能は結構重要だと思う.しかしMTにはコメントをつけてもそれを知るすべがあまりなかったように思う.
 そのため,トップページに,最近つけられたコメントを表示する機能はないか,と探していたところ,リーセントコメント+コメント日付(BLOG質問箱)にその方法が載っていたので早速試してみた.

コメントが付いた最新のエントリー5本を表示し、それぞれのエントリーごとに最新のコメント4本までをコメント日付を付けて表示するようにしました。

とのこと.ソースコードが載っていたので,それをMain Indexテンプレートにコピーして,ちょっと修正した.ちなさいとで使用したものは以下の通り.

<div class="sidetitle">
Recent Comments
</div>
<div class="side">
<MTEntries recently_commented_on="5"sort_order="ascend">
・<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a><br />
<MTComments lastn="4">
└ <$MTCommentAuthor$> <a href="<$MTEntryPermalink$>#<$MTCommentID$>">at <$MTCommentDate format="%Y.%m.%d"$></a><br />
</MTComments>
</MTEntries>
</div>

XREAでMySQL(カウンタ編)

月曜日, 3月 1st, 2004

 先日とりつけたばかりのカウンタだが,トップページにしか取り付けることができないため,ほかのスクリプトを探していた.今回は,珍しい物を見つけたので早速取り付けてみた.
daOnlineCounter(DA実験室)
 このカウンタ(daoc)は,PHPとMySQLで動くカウンタである.詳しくはDA実験室で見てもらいたい.
 今回苦労したのは,まったくさわったことのないMySQLをどう設定するか,である.せっかくXREAでアカウントをとったわけだから,うまく使いたいなとは思っていた.そこで早速挑戦してみた.詳しいやり方は添付のテキストにあったのだが,かなり苦労した.
 まず,Movable Typeをインストールしていたから,MySQLそのものはできあがっていた.しかし,MySQLを操作するためのadminツール(?)である,phpMyAdminがインストールされていなかったため,管理画面からインストールした.
 しばらくすると,管理画面にいけるようになる.管理画面から「データベース」をクリック.すると自分のID(実はこれがデータベース名だが)が表示されるので,それをクリック.ここで自分のデータベースにあるテーブルが一覧できる.
 さて,ここからさらに,「SQL」タブをクリックしてみよう.「データベースにSQL食えリー実行」の画面が出現する.これがまさしく,MySQLコマンドをタイプする画面である.しかも「or テキストファイルの場所」とか書いてあるぞ.
 daocには,daoc.sqlというSQLテンプレートが添付されており,それを使うことで簡単に設定が可能である.さっそく「テキストファイルの場所」でローカルのdaoc.sqlを指定し,実行ボタンを押すと,あっけなくテーブルができてしまった.
 その後,「SQLクエリー実行」のテキストボックスに

insert into daoc_ctrl(name,holdtime) values('NAME',900);

をコピーし(NAMEは任意に変更して),実行ボタンを押せば,もうこれだけでサーバ側の準備は整ったわけである.
 次に,daoc.phpとdacMySQL.phpを設定し,サーバにアップする.ちなはこのときUTF-8にしようとしたのだが,うまくいかなかったのでそのままEUCでアップ.そしてMain Indexテンプレートに,以下の記述を加えた.

<?
require_once('dacMySQL.php');
require_once('daoc.php');
$r = daoc_update( 'top' );
echo '<div>総計 '.$r['total'].' 人</div>';
echo '<div>今日 '.$r['today'].' 人</div>';
echo '<div>昨日 '.$r['yeday'].' 人</div>';
echo '<div>現在 '.$r['persons'].' 人が閲覧中</div>';
?>

 これでアクセスすると,見事に表示された.かなりうれしい瞬間だった.ついでにほかのアーカイブにも貼り付け,サイト全体でカウント可能になった(実はちなさいとでは,バナー部を別のテンプレートとして作り分けたため,変更作業は一回で済んでしまった!).
 ちなみに,人数の変更を行うときは,phpMyAdminの画面で「daoc_ctrl」を選択し,「表示」タブをクリック.すると先ほどつくったカウンタが表示されるので,修正アイコンをクリックしてみよう.あとは「値」を書き換えて実行ボタンを押すだけ.ちなは「total」「today」「yeday」の3つを書き換えてみた.