ラベル html の投稿を表示しています。 すべての投稿を表示
ラベル html の投稿を表示しています。 すべての投稿を表示

2007年3月10日

では object を使ってみよう


<object type="text/html" data="http://www.linux-m32r.org/lxr/http/source/arch/i386/kernel/i387.c?a=i386#L51"
style="width:90%;height:3em; align:center;" scrolling="no" marginwidth="0" marginheight="0" frameborder="1" ></object>


と書いてみましょう。さてどうなるか…



うーん。type をいちいち指定しなくてはいけないのは、結構うざったいかもしれない。
あと、枠が表示できていないとか、このままだと横方向のスクロールバーのせいで、縦幅が足りていないとか、やはり縦幅は「include する側」のサイズだとか…いろいろ問題はあるなぁ。一応 XHTML 1.0 に strict に対応しているのはこちらのはずではあるのだが…。

あと、iframe, object 共にそうなのだが、# を使って中間へジャンプさせる形をとると、firefox がそれに引きずられて、ジャンプしてしまう。大抵の場合、引用している側の意図は、表示画面全体をずらすことではないはずなので、これはどうにかして欲しい。

2007年3月5日

iframe をちょっと使ってみました。

iframe というコマンドを使うと、他の URL を参照する「箱」が作れる。そこで、その実力を見せてもらうべく、ちょいとくら実験だ。

実験の被害者はhttp://www.linux-m32r.org/lxr/http/source/arch/i386/kernel/i387.c?a=i386#L51
という URL。Linux のソースコードが「さくさくっ」と参照できる良いページ。登録されているページが偏っているのが弱点。

<iframe src="http://www.linux-m32r.org/lxr/http/source/arch/i386/kernel/i387.c?a=i386#L51"
style="width:90%;height:3em;" scrolling="no" marginwidth="0" marginheight="0" frameborder="1" align="center"></iframe>


という iframe を仕掛けてみる。うりゃっ!




こんな結果が出ました。うーん。「3行」ぴったり表示させるには height の指定をどうすればいいのか、が課題ですな。3em ではちょっと合わないらしい。あと、align="center" がいまいち効果が無い。なにより、このテンプレート、横幅が足りませんね。

でも、GLOBAL や LXR と連動して…という場合、上記のような記述を半自動で作れる仕組みがあると、とても良いかもしれない。Ajax で作れるかもしれないなぁ(というか、自分で作るのは面倒だから、誰か作ってくれないかなぁ…他力本願寺)。

2007年3月2日

業務連絡

えー、Alicia! Alicia!! Alicia!!! は、実はある実験のためにちょっと凝ってみたものです。というわけで、凝った結果の報告。

見ての通り、一応ソースコードを表示できます。テンプレートに手を加え、HTMLを直接編集する必要がありましたが。

テンプレートへの変更は次の通り。

まずは色の定義を2つ追加しました。ソースコードの文字本体の色は変更するつもりは無かったので、背景色と、囲み枠の色だけです。

<variable name="mainSourceBgColor" description="Main Sourcecode Background Color" type="color" default="#e0e0e0" value="#e0e0e0">

<variable name="mainSourceBorderColor" description="Main Sourcecode Border Color" type="color" default="#000000" value="#000000">


次に、ソースコード用のクラスを用意しました。これは /* Posts 行で始まる、投稿用クラスセットの末尾に追加したものです。

span.post-sourcecode {
background-color: $mainSourceBgColor;
border: 1px solid $mainSourceBorderColor;
}
div.post-sourcecode {
margin: .25em .25em;
background-color: $mainSourceBgColor;
border: 1px solid $mainSourceBorderColor;
}
pre.post-sourcecode {
margin: .25em .25em;
background-color: $mainSourceBgColor;
border: 1px solid $mainSourceBorderColor;
}


インデントの事を考えると、divはほとんど活躍の機会はないと思います。span は行の中にコードをいれたい時専用ですね。

で、その上で、
もし、あなたが Term::ReadLine::Perl を使って何かしたければ、<div class="post-sourcecode">$readline = new Term::ReadLine::Perl 'hoge';</div>とすればよい。

や、
あとは<span class="post-sourcecode"> $readline->readline(); </span>のようにメソッドを呼べばよい。

あるいは、
次のパッチを当てればよい:<pre class="post-sourcecode">diff -ur Alicia-1.1.4/lib/Alicia/ReadLine.pm Alicia-1.1.4-fix/lib/Alicia/ReadLine.pm
--- Alicia-1.1.4/lib/Alicia/ReadLine.pm 2005-03-03 13:47:00.000000000 +0900
+++ Alicia-1.1.4-fix/lib/Alicia/ReadLine.pm 2007-03-02 00:17:21.238375000 +0900
@@ -14,12 +14,13 @@
package Alicia::ReadLine;
(中略)
- my $self = new Term::ReadLine;
+ my $self = new Term::ReadLine::Gnu $class;
return bless $self;
}
</pre>

ようするに Term::ReadLine::Gnu を強要してしまえばよいのだ。


のように HTML レベルで編集すれば、Blogger でもソースコードを掲載することはできます。

ただし、あまりお勧めではありません。
  • テンプレートをゴリゴリ弄り回すと言うことは、何かの拍子にテンプレートモデルが大幅に変更になると、作りこみが全部消えてしまうのだ。そりゃ、どこかに保存して、再度 apply すればいいんだろうし、それは全部のコードを弄り回すのに比べれば楽なのだろうが…。それでも結構辛いだろう。
  • ソースコードの中の不等号を全部置き換えて回るのは手作業になる。これは思った以上に辛い。いや、Alicia のソースの場合はまだいいのだけれど、上記の例の場合、タグの山なので…。
というわけで、他もどっこいどっこいだ と判ったら Blogger を使えばいいと思う。逆に、ソースコードを掲載するのに都合のよい Blog が判ったら教えてくれぃ。私もソースコードものはそちらに書くことにするから。