2009-05 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
今回も「戯術者の日記」を参考にさせて頂きました。
--- orig/chalow-1.0/chalow 2007-10-19 23:15:01.000000000 +0900 +++ chalow-1.0/chalow 2009-05-24 23:57:16.000000000 +0900 @@ -1174,7 +1174,7 @@ # return if ($output_cat_pages == 0); my @lines = (); - foreach my $cat (sort keys %{$cl->{CAT}}) { + foreach my $cat (sort { lc $a cmp lc $b } keys %{$cl->{CAT}}) { my $n = $cl->{CAT}->{$cat}; my $url; if ($output_cat_pages) {
参考にしたページ:
戯術者の日記:カテゴリ一覧を大文字小文字無視でソート
追記(2011-07-06):
カスタマイズできるようにして、GitHub に push しました。
※ RSS リーダーを使うと、自分の見たい Web サイトの更新を自動で確認
してくれます。未読管理が出来るものも多いです。ぜひ使ってみてくださ
い。数ある RSS リーダーの中でも、私は Google リーダーをお薦めします。
ちなみに、このブログの登録フィードはこちらです。
RSS リーダーでは各記事のタイトルにカテゴリ名が付かないので、付ける
ようにしてみました。cl.rdf の出力が変わります。
--- orig/chalow-1.0/chalow 2007-10-19 23:15:01.000000000 +0900 +++ chalow-1.0/chalow 2009-05-24 17:54:55.000000000 +0900 @@ -1089,7 +1089,7 @@ push @items, { permlink => $permlink, - itemheader => html2xmlstr($e->{$i}{h}), + itemheader => html2xmlstr("[".join("][", @{$cl->{all}->{$ymd}->{$i}->{cat}})."] ".$e->{$i}{h}), itemauthor => $e->{$i}{a}, itemcontent => $cont, itemcontentencoded => $coen,
参考にしたページ:
戯術者の日記:rdfファイルにもカテゴリ表示
戯術者の日記:続きを読…めない
追記(2009-08-31):
twitterfeed の出力が不格好になるので、元に戻しました(カテゴリ名を付
けないようにしました)。
各日付の中で private item (p:) と normal item をどういう順番で置く
かは、自分で決めておかないとマズイね。
例えばある日付の中で、両者が交互に出現すると [YYYY-MM-DD-I] を使っ
た参照がややこしくなる。private item の方が数が少ないと思うから、
normal item が下、private item を上に置くようにすると良さそう。
あと、[YYYY-MM-DD-I] で参照されているアイテムを移動すると、リンクが
切れてしまう。アイテムを移動するときは、そのアイテムの参照元も修正
する必要がある。
処理系に依存してしまうが、main() の第 3 引数には環境変数リストが入っ
ているとのこと。うちの Debian GNU/Linux squeeze では参照できた。
#include <stdio.h> int main(int argc, char **argv, char **envp){ int i; for (i = 0; envp[i] != NULL; i++){ printf("%s\n", envp[i]); } return 0; }
(URL: 404 Blog Not Found:CGIの神話と現実)
(URL: int void (main)の意味/// -OKWave)
[2009-05-24-1] の続きです。
リリース元の解説にも書いてありますが、Lisp 系のソースは拡張サポート
のようで、自動判別してくれません。変な色になってしまいます。
lang-lisp.js も別途読み込ませる必要があるようです。
以下、Emacs Lisp を例に説明します。他の Lisp 系言語で色付けする参考
にもなるかと思います。lang-lisp.js もご覧下さい。
[2009-05-24-1] とは、cl.conf と chalow の修正が変わります。4 と 5
の手順を以下に置き換えてください。あと、[src]〜[/src] の代わり
に [src_el]〜[/src_el] を使って下さい。
4'. cl.conf を修正します。全ての </body> の直前に、以下を挿入すれば
よいでしょう。
<script type="text/javascript" src="http://masutaka.net/prettify/prettify.js"></script> <script type="text/javascript" src="http://masutaka.net/prettify/lang-lisp.js"></script> <script>prettyPrint();</script>
※ 私は $side_menu を全てのページで表示するようにしているので、その
先頭に 1 つだけ追加しています。
5'. chalow を修正します。以下はオリジナル(chalow-1.0.tar.gz)の
chalow へのパッチです。
--- orig/chalow-1.0/chalow 2007-10-19 23:15:01.000000000 +0900 +++ chalow-1.0/chalow 2009-05-23 23:39:10.000000000 +0900 @@ -1275,6 +1275,8 @@ my %escaped_src; my $num_of_escaped_plugin; my %escaped_plugin; +my $num_of_escaped_src_el; +my %escaped_src_el; sub escape_string { my ($strp) = @_; @@ -1304,16 +1306,27 @@ $$strp =~ s!{{(.*?)}}! $escaped_plugin{++$num_of_escaped_plugin} = $1, sprintf("\x7\x13%d\x3", $num_of_escaped_plugin)!gsmxe; + + ### Emacs Lisp ソースエスケープ - "&" や "<" などを置換し pre を付ける + $num_of_escaped_src_el = 0; + $$strp =~ s!\[src_el\](.*?)\[/src_el\]! + $escaped_src_el{++$num_of_escaped_src_el} = $1, + $escaped_src_el{$num_of_escaped_src_el} =~ s/&/&/g, + $escaped_src_el{$num_of_escaped_src_el} =~ s/</</g, + $escaped_src_el{$num_of_escaped_src_el} =~ s/>/>/g, + sprintf("\x8\x13%d\x3", $num_of_escaped_src_el)!gsmxe; } sub unescape_string { my ($strp) = @_; + ### Emacs Lisp ソースアンエスケープ - pre 追加 + $$strp =~ s|\x8\x13(\d+)\x3|</p><pre class="prettyprint lang-el">$escaped_src_el{$1}</pre><p>|g; ### プラグインアンエスケープ - 実行! $$strp =~ s|\x7\x13(\d+)\x3|eval($escaped_plugin{$1})|ge; ### ソースアンエスケープ - pre 追加 #$$strp =~ s|\x6\x13(\d+)\x3|<pre>$escaped_src{$1}</pre>|g; - $$strp =~ s|\x6\x13(\d+)\x3|</p><pre>$escaped_src{$1}</pre><p>|g; + $$strp =~ s|\x6\x13(\d+)\x3|</p><pre class="prettyprint">$escaped_src{$1}</pre><p>|g; ### HTML アンエスケープ $$strp =~ s|\x5\x13(\d+)\x3|$escaped_string{$1}|g; }
[src_el]〜[/src_el] は使いたくなかったのですが、<pre class="prettyprint">
ではダメで <pre class="prettyprint lang-el"> ならうまくいったという
状況だったので、泣く泣く使うことにしました。
ま、google-code-prettify が対応することがあったら、上の修正を元に戻
せばいいだけですからね。
追記(2011-06-06):
最新版の 1-Jun-2011 は lisp の色づけが出来なくなっていました。
21-Jul-2010 版なら OK です。詳細未調査。
[2009-05-23-1] のように、時々ソースコードを貼り付けることがあります
が、色が付かなくて寂しかったので google-code-prettify で色を付ける
ようにしてみました。chalow 以外のブログにも使えると思います。
[src]〜[/src] で囲まれたソースの言語を自動判別して、適切
に色付けしてくれます。
1. http://code.google.com/p/google-code-prettify/ から、
"prettify-small-日付.zip" をダウンロードします。("prettify-日付.zip"
は *.js が圧縮されていません。こだわりがなければ small の方をダウン
ロードすればよいでしょう。)
2. 解凍してできる *.css と *.js をご自分の Web スペースにアップしま
す。今回は http://masutaka.net/prettify/ にアップしました。以下、こ
の状態を前提に話を進めます。
3. お使いの CSS に、以下を追加します。
@import url(http://masutaka.net/prettify/prettify.css);
4. cl.conf を修正します。全ての </body> の直前に、以下を挿入すれば
よいでしょう。
<script type="text/javascript" src="http://masutaka.net/prettify/prettify.js"></script> <script>prettyPrint();</script>
※ 私は $side_menu を全てのページで表示するようにしているので、その
先頭に 1 つだけ追加しました。
5. chalow を修正します。以下はオリジナル(chalow-1.0.tar.gz)の
chalow へのパッチです。
--- orig/chalow-1.0/chalow 2007-10-19 23:15:01.000000000 +0900 +++ chalow-1.0/chalow 2009-05-23 23:35:24.000000000 +0900 @@ -1313,7 +1313,7 @@ $$strp =~ s|\x7\x13(\d+)\x3|eval($escaped_plugin{$1})|ge; ### ソースアンエスケープ - pre 追加 #$$strp =~ s|\x6\x13(\d+)\x3|<pre>$escaped_src{$1}</pre>|g; - $$strp =~ s|\x6\x13(\d+)\x3|</p><pre>$escaped_src{$1}</pre><p>|g; + $$strp =~ s|\x6\x13(\d+)\x3|</p><pre class="prettyprint">$escaped_src{$1}</pre><p>|g; ### HTML アンエスケープ $$strp =~ s|\x5\x13(\d+)\x3|$escaped_string{$1}|g; }
chalow を実行してサイトを構築し直せば、ソースコードに色が付いて
いると思います。
リリース元の解説はもちろん参考になりましたが、それ以上に
「404 Blog Not Found:javascript+CSS - google-code-prettifyの導入」
が大変参考になりました。ありがとうございます。
ただ、Lisp 系のソースの色付けがうまくいきません。長くなるので、次の
記事 [2009-05-24-2] で説明します。
google-code-prettify の他に、Text::VimColor を使う方法もあるようで
す。ただ、さくらインタネットには vim がインストールされていなかった
ので、今回は試しませんでした。
2009-05 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31