Articles
インドネシア沖でシーラカンス捕獲
インドネシア沖でシーラカンス捕獲だそうです。3例目だそうだから、結構見つかっているものなのですね。体長1.1m、重さ20Kgとは、意外に大きいのですね。
いまどき携帯電話もっていない人のは「古代の化石シーラカンス」だそうですけど、こっちはもっと例がが多そう。家も家族全員もっていませんです^^;;;。
(others) 2008/11/26
マークダウンの書き方[引用とコード表示](7)
以下、タブは(tab)と表記。
直前の記事で「引用」と書いていますが、実はコード表示(preタグ)を使っています。
コード表示部分はこうなっています。
(TAB)サイトのメンテナンススクリプトの解説(5)
(TAB)===================================(computer)
(TAB)
(TAB)記事が2ページ目になったので、バグつぶしと機能追加でスクリプトを変更しました。
で、これを引用にすると
サイトのメンテナンススクリプトの解説(5)
==================(computer)
記事が2ページ目になったので、バグつぶしと機能追加でスクリプトを変更しました。
上記の引用表記の部分をコード表示すると
> サイトのメンテナンススクリプトの解説(5)
===================================(computer)
記事が2ページ目になったので、バグつぶしと機能追加でスクリプトを変更しました。
となります。コード表示は改行までそのまま表示、引用は改行を処理してくれるという違いがあるので、適当に使いわけることになります。
(internet) 2008/11/22
マークダウンの書き方[ヘッダー](6)
直前の記事のサイトのメンテナンススクリプトの解説(5)はヘッダー指定を多用しています。
引用すると、こんな感じです。
サイトのメンテナンススクリプトの解説(5)
===================================(computer)
記事が2ページ目になったので、バグつぶしと機能追加でスクリプトを変更しました。
最新版は[ここ(ml.rb)](Ntxt/ml.txt)と[ここ(mz.rb)](Ntxt/mz.txt)にあります。
主な変更点は以下の通り。
## mz.rb(旧mx.rb)
### 画像ファイルのオプション指定方法の変更
[画像指定の方法の変更(2)](X)と(3)に書いたたように
・・
・・
#####2008/11/14
という具合にH1~H3とH6を使っています。それで各ヘッダーのフォーマットはCSSで規定し、リンク先にあるように見える形にしています。
この方法はCSSを変えれば、見え方を変えられますので、とても便利。
このサイトではインデックスと記事ではCSSを変えて対応しています。
(internet) 2008/11/19
マークダウンの書き方[ヘッダー](5)
ヘッダーを指示するマークダウンの書式は
#タイトル: header 1
##タイトル: header 2
###タイトル: header 3
####タイトル: header 4
#####タイトル: header 5
######タイトル: header 6
か
###タイトル
###----
または
###タイトル
###======
どちらも header 1 として処理される。
このサイトでこの書式をどう利用しているかは次の記事で書きます。
(internet) 2008/11/18
サイトのメンテナンススクリプトの解説(5)
記事が2ページ目になったので、バグつぶしと機能追加でスクリプトを変更しました。
最新版はここ(ml.rb)とここ(mz.rb)にあります。
主な変更点は以下の通り。
mz.rb(旧mx.rb)
画像ファイルのオプション指定方法の変更
画像指定の方法の変更(2)と(3)に書いたたように
- ![ALT名(imgオプション)](画像ファイル)
- ![ALT名(\\d\d\d)](画像ファイル)
の二つの書き方ができます。
下の書き方はこの記事欄専用で(\d\d\d)は画像のサイズ(ピクセル)。画像は左に表示となります。
記事ファイルの内部リンクの拡張
(\d\d\d)と書けば、その数字の記事ファイルに内部リンクさせるようにしました。
ページ変えして直前の記事にリンクする時に使います。
以上が変更点です。どちらもHTMLファイルを操作することにしたためステップ数が大きい。50%増になってしまいました。
やっぱりHTMLを、直接、触ると、コード量が増えますね。
あと、不満なのは記事ファイルの内部リンクの拡張は内部リンクの処理と共通しているのですが、うまくmethod化できていないこと。なんかいい方法ないのかな。
ml.rb(旧mi.rb)
記事一覧のヘッダーに期間を表示させ、記事本体と対応させました。古い記事は塩漬けにして一覧も更新不要にするため、こういう仕様に変更しました。
それに伴い、最終行のリンクの処理方法を大幅に変更しました。
こっちはコード量の増減はほとんどないのですが、methodを書き直したりして、だいぶすっきりしたかなと思います。
(computer) 2008/11/14
Back to Bach(2)
直前の記事で、“なぜ、「バッハ解釈に示唆」というところがわからないのだけど”
と書きましたが、よく考えると韻を踏んでいますね。 ブレルはおいて、カラス vsフ ィッシャーディスカウとミケランジェリ vs グールドという対で考えると、面白そうです。
(music) 2008/11/10
Back to Bach
というタイトルの音楽ドキュメンタリー(ドイツ finkernage&luck/EuroArts制作 BS2で放映されたもの)を見ました。
内容はギドン・クレーメルの2006年のバッハ無伴奏ヴァイオリン組曲の再録音の時の映像を中心にして、関連する話題、映像を組み合わせたものです。二度目のバッハ無伴奏CDのプロモーションヴィデオという感じもしましたが、グバイドゥーリナの映像やジャック・ブレルの映像などもあり、興味深く見ました。
印象的だったのは、自分のバッハ解釈に示唆を与えた演奏家としてブレル、カラス、フィッシャーディスカウ、ミケランジェリ、グールドの5人の名前をあげていたこと(とても意外な組み合わせだったので、一度で覚えきれなくてDVDを回し直して確認しました)。なるほどなあと感心。
分析すると
- 歌手3人とピアニスト2人で、弦楽奏者や指揮者がいない
- 旧ソ連の演奏家はいない
- 皆、それまでにない演奏スタイルを生み出し、まったく新しい表現をした 演奏家
- 皆、クレーメルからいうと一世代上で、多分、彼の若いころの音楽形成に 大きな影響を与えた世代
というところですかね。
しかし、なぜ、「バッハ解釈に示唆」というところがわからないのだけど、しょうがないですかね。だって、この5人の選択、かなり支離滅裂(^^;;;)だもの。
(music) 2008/11/09
座布団
お相撲で座布団が投げられなくなったそうです。
残念だなぁ。また相撲の華が一つ減っちゃいますね。
横綱が負けたら、盛大に憂さ晴らし。座布団が優雅に宙を舞うというのがいいのにね。
空き缶やペットボトルじゃ問題だけど、座布団なら、投げやすく、滞空時間が長く、風情があって、テレビの画面でも絵になるし、安全性にも優れているのになぁ。
日本相撲教会、女は土俵にあげないと頑張ったのに、なんでこの良き伝統をダメにしちゃうのですかね。
(others) 2008/11/07
「現代音楽(海外)」のページを公開
「現代音楽(海外)」のページを公開しました。
YouTubeへの海外作品のアップロードがOKなのかどうかわからないので、YamahaのMyMusicを使っています。
これで音楽作品のMP3化で残っているのは、マンデルブロ音楽だけ。まあ、これは旧サイトでMIDIファイルで聴けるので、気長にやるつもりです。
(internet) 2008/11/05
マークダウンの書き方[リンク](5)
インタネットの強力なメリットの一つはリンクですね。
[マークダウン][]はインタネットの力を最大限、簡単に利用しようという書式だから、リンクの書き方はよくできていますね。リンクに関しては以下の三つが選択できます。
[リンク名](リンク先): リンク名、リンク先は直接記述
[リンク名][リンクid]: idは適当な場所に「[リンクid]: リンク先」
[リンク名][]: idは適当な場所[リンク名]: リンク先」
ここでは、一番目と三番目の書式を、単発のものは一番目、何回も使うものは三番目という方法を使っています。二番目の方法も、リンク名が「ここ」とか「あそこ」とかした時には使えるかな。
(internet) 2008/11/04
「現代音楽(日本)」のページを公開
「現代音楽(日本)」のページを公開しました。
著作権対応のため全曲の試聴はYouTubeで行うという方式にしました。結果としてYouTubeにアップしたタイトルだらけというページ構成になってしまいましたが、まあ、わかりやすいので、いいかなと思っています。
YouTubeへのアップロードとサイトへの貼り付けは簡単ですね。「なるほど、Web2.0、世界を席巻するだけのことはあるなぁ」という感想です。
他にも作成中の曲はあるので、おいおい追加するつもりです。
(internet) 2008/11/02
インドネシアでポルノ規制法案が可決
されたそうです。
イスラム教会派が賛成、ヒンドゥー、キリスト教会派は反対ということだから、宗教論争という感じもしますが、ガムランの舞踏まで禁止されるとなると残念だなぁ。「卑猥な動作」も取り締まりの対象というのなら、中近東イスラム諸国のベリーダンスの方がよほどエロティックじゃないかと思うのだけど。
(others) 2008/10/31
一柳慧が文化功労者 !
「へえー、かっての前衛の闘士が」とビックリ。
で、WikiPediaのリストでクラッシックの作曲家で誰が受賞しているのか調べてみました。
()は受賞年。目視で捜していますので、見落としがあるかもしれません。あったら、ゴメンナサイです。教えて下さい。
山田耕筰(1954)
池内友次郎(1986)
柴田南雄(1992)
松平頼則(1996)
團伊玖磨(1999)
三善晃(2001)
伊福部昭 (2002)
一柳慧(2008)
なるほどね。なかなかの選択ですね。武満が選ばれていないのは60代で若死に(?)したためですかね。
(music) 2008/10/30
BlueCloth/Stole のバグ
直前の記事で、YouTubeの画面を表示できなくて、焦りました。
原因はBlueClothかBlueStoleのバグだと思います。
YouTubeへのアップロードはBlueStoleの<html>指定で埋め込み用のコードを挿入し、行っていますが、BlueStole処理後のYouTubeのファイル名がおかしくなってしまいます。「nn0UTtbEu_c」が「nn0UTtbEu¥_c」とアンダーバーに余計な¥が付加されてしまう。
しょうがないので、スクリプトで対応(objectタブ内の「¥_」を「_」に変換)しましたが、これ、多分、バグですね。
(computer) 2008/10/29
YouTubeにアップロードしてみました(3)
さらにもう一つ。これが最大長(ちょうど約10分)です。
松平さんのこの曲の初演の演奏会に行きました。12音セリーでできたミニマール音楽。詳しくは作曲者のノートを読んで下さい。松平さんらしい痛快なアイロニーを楽しめる曲だと思います。
(music) 2008/10/28
YouTubeにアップロードしてみました(2)
ついでにもう一つ、試してみました。こっちはかなり大容量なのだけど、大丈夫そうですね(10分、1GB以下ならOK)。
しかし、この曲は武満さんの初期の作品で(「弦楽のためのレクイエム」の次の作品)、いい曲だと思いますが、あまり演奏されないのは残念ですね。
wavファイルを無理やり動画にする方法については、そのうち書きます。
(music) 2008/10/27
YouTubeにアップロードしてみました(1)
という次第で、試してみました。
しかし、この曲、ルーブル美術館紹介のテレビ番組のテーマ音楽なのですが、僕には哀悼の音楽のように聞こえます。
(music) 2008/10/27
YouTubeがJASRACと契約
YouTubeがJASRACと契約したようですね。これで、YouTubeでも、邦人作品の投稿ができそうですね。こっちの方がグローバルだから、いいかな。
(internet) 2008/10/26
画像指定の方法の変更(2)
記事欄の画像ファイルの貼り付け方は「庭のカエル」方式がほとんどですから、ALT名の後ろの()の中が数字だけだったら、自動的にその他のイメージタグのオプションが指定できるように機能追加しました。
こちらの呼び出し方は
![kaeru(300))](./img/IMG_8432.jpg)
と書けますので、シンプル。
あと、画像の左右に文字を配置する時、「半角空白」+「半角空白」+「改行」だったら、<br clear=all>を挿入するようにしました。
(computer) 2008/10/23
画像指定の方法の変更(1)
実際に画像ファイルを貼り付けてみて、イメージタグのオプションが指定できないと不便ですね。
画像ファイルのALT名の後ろに()でオプションを指定できるようにスクリプトを変更しました。
![ALT名(align=left width=300 hspace=20)]という具合です。
新しいスクリプトはこちら。以前のスクリプリトよりシンプルになりました。HTMLのオプションを直接書くのがひっかかりますが、この方法の方がいろいろできるし、スマートですね。
ちなみに「庭のカエル」のイメージの呼びたしの書き方は
(例によってスクリプトに解釈されるのを回避するため特殊記号の一部の半角を全角にしています)
[![kaeru(align=left width=300 hspace=20)](./img/IMG_8432.jpg)](./img/IMG_8432.jpg)
となっています。
画像ファイルのオプションの指定についてはリンク先の記述がわかりやすいです。
(computer) 2008/10/23
maruku
RubyのマークダウンのライブラリはRedClothとBlueClothがあるとこのサイトの作り方(3)に書きましたが、marukuというのもあるのですね。「maruku」というのは日本語の「丸く」の意味らしいけど、開発しているのはアメリカ。
機能は RedStole と BlueCloth の中間位かな。BlueClothにBlueStoleを足したものに、LaTeX出力機能を付加したという感じです。 更新が結構活発だから、こちらの方がお勧めかな。呼び出し方はBlueClothと同じだから 試してみますかね。
(computer) 2008/10/21
庭のカエル
写真をアップする実験。
庭にひっくり返しに置いてあるプランターの中にいたカエルです。冬眠用のネグラに最適とでも考えたのですかね。
もう一枚、テスト用に。両方ともクリックすると拡大できます。
(others) 2008/10/19
マークダウンの書き方[引用とコード表示](4)
直前の記事でマークダウン文書の引用を前の方はフォントを固定幅にしたいので pre を、後の方はBlueStoleの変換を回避するため blockquote を使っています。
pre と blockquote のマークダウンの書き方は
pre: インデント + 文字列
blockquote: 「>」 + インデント(半角空白一文字以上) + 文字列
となります。
これもシンプルなので、使いやすいです。
使い方の注意点は
- pre : すべての行の頭にインデントが必要
- blockquote : 「>」 + インデント(半角空白一文字以上)は先頭行だけでいい(空行までが引用処理される)。
という点。
あと pre の中だと<br>はそのまま表示されるが、blockquote の中では改行として処理される点も注意が必要。逆にこれを悪用^^;;;すると、なかなか使いでがあります。直前の記事の後半の引用でも、この方法を使っています。
(internet) 2008/10/18
マークダウンの書き方[BlueStoleの機能](3)
BlueStoleは今のところ、「hx 要素の id / name 付け」くらいしか使っていませんが、こんなこともできます。
caption=BlueStole機能一覧
機能名 | 内容 |
---|---|
HTML Include | /^<html>$/ではじまり、 /^</html>/で終わるブロック |
定義リスト | 行が「:」 で終わり、次行がインデントされてはじまっている行は定義リストに置き換える |
Table / 表 | RTtool を利用した表を作成 |
Footnotes / 脚注 | (*nnnn..n)を脚注として処理 |
hx要素のid/name付け | hx 要素に変換される見出し部には、自動的に a 要素の id / name 属性を連番で入れる |
_強調の抑止 | 正規の Markdown 文法である、アンダースコア ‘_’ の強調を行わない |
EmptyElementSuffix | BlueCloth で ‘/>’ になっている EmptyElementSuffixを’ />‘ に変更 |
img 要素の自動追加 | img要素のsrcファイルが存在する場合、自動的にheightとwidth属性を追記 |
マークダウンソースを示すと
|caption=BlueStole機能一覧
|
| 機能名 , 内容
| HTML Include , /^<html>$/ではじまり、 /^</html>/で終わるブロック
| 定義リスト , 行が「:」 で終わり、次行がインデントされてはじまっている行は定義リストに置き換える
| Table / 表 , RTtool を利用した表を作成
| Footnotes / 脚注 , (*nnnn..n)を脚注として処理
| hx要素のid/name付け, hx 要素に変換される見出し部には、自動的に a 要素の id / name 属性を連番で入れる
| _強調の抑止 , 正規の Markdown 文法である、アンダースコア '_' の強調を行わない
| EmptyElementSuffix , BlueCloth で '/>' になっている EmptyElementSuffixを' />' に変更
| img 要素の自動追加 , img要素のsrcファイルが存在する場合、自動的にheightとwidth属性を追記
となります。
同じデータを定義リストを使って
HTML Include: /^<html>$/ではじまり、 /^</html>/で終わるブロック
定義リスト: 行が「:」 で終わり、次行がインデントされてはじまっている行は定義リストに置き換える
という具合に書くこともできます
これもマークダウンソースを示すと
HTML Include:
/^<html>$/ではじまり、 /^</html>/で終わるブロック
定義リスト:
行が「:」 で終わり、次行がインデントされてはじまっている行は定義リストに置き換える
となっています。この方法もCSSと組み合わせれば結構使えそうですね。
(internet) 2008/10/16
マークダウンの書き方(2)
直前にかいた記事マークダウンの書き方(1)のマークダウン文書です。 スクリプトによって書き換えられるのを止めるため
- 文章の冒頭には全角の空白を一ついれる
- リンク表示を全角に変える「[][]」
- 意図的な改行を「 \n」で表示させる
という変更を加えています。
> マークダウンの書き方(1)
====================(internet)
内容はリンク先をみてもらうとして、このサイトの記事の書き方にについて。 \n
\n
[マークダウン書法][]を選んだのはエディターで記事を更新するため。 \n
HTMLエディターだとWYSWIGのやつは自由度が低いし、タグ方式のものはめんどう。全部ブログでという手もあ
るのかもしれないけど、制約が多そう。 \n
HTML表示にあまりこるつもりはないし、普段、頻繁に更新するのはこの記事欄だけなので、ヘッダー、リンク、
リストなどのHTMLの基本的な処理がシンプルに書けるマークダウン書法がよさそうだと思いました。 \n
\n
ただ、マークダウンだけでは表現力が多少不十分なので、Rubyのスクリプトで補えばいいかと考えた。 \n
\n
Rubyのマークダウン書法のライブラリとしては[RedCloth][]と[BlueCloth][]があります。 \n
RedClothは仕様の拡張度が高く、いろいろ出来そうなのはいいのだけど、複雑になって、かえって使いづらい。 \n
BlueClothはあまり評判よくないけど、シンプルかつ明快で僕の使用目的には十分。これに[BlueStole][]を追加
すれば、ほぼ目的はクリアできるなと思った。 \n
あとは自作のスクリプトで以下の通り仕様を拡張。
- どこで改行するかは重要。だから「 \n」で簡単にできるようにした
- 楽をするため、ヘッダー、フッターはテンプレートとスクリプトで自動処理
- 自由度を確保するため、書式はCSSで指定し、ページによってCSSは自由に指定できるようにした
- ダウンロードログ取得のCGI呼び出しは自動処理
- この記事ページは頻繁に更新するので、付随する定型的な処理(タイトルリストの作成、
ページ内インデックスの作成など)は自動処理するようにした
- 書きかけの記事を残すためコメント対応させることにした
というところ。
#####2008/10/16
[マークダウン]: http://blog.2310.net/contents/individual/000022.php
[RedCloth]: http://whytheluckystiff.net/ruby/redcloth/
[BlueCloth]: http://www.deveiate.org/projects/BlueCloth
[BlueStole]: http://wids.net/lab/bluestole.ja.html
こういう感じです。\nと表示されるところは改行なので、実際は自然に表示されます。結構みやすいでしょ。
- 「====================(internet)」はヘッダーとタグの指定
- 前半の文章の中の「 \n」で意図的な改行を指定
- 「[nnn..n][]」と「[nnn..n]: mmm..m」はリンクの指定
- 「- 」はリストの指定(リスト内は改行による行頭の位置あわせが自然にできます)
リンクの方法は他にもあります。内容についてはマークダウンのリンク先をご覧ください。
(internet) 2008/10/15
マークダウンの書き方(1)
内容はリンク先をみてもらうとして、このサイトの記事の書き方にについて。
マークダウン書法を選んだのはエディターで記事を更新するため。
HTMLエディターだとWYSWIGのやつは自由度が低いし、タグ方式のものはめんどう。全部ブログでという手もあるのかもしれないけど、制約が多そう。
HTML表示にあまりこるつもりはないし、普段、頻繁に更新するのはこの記事欄だけなので、ヘッダー、リンク、リストなどのHTMLの基本的な処理がシンプルに書けるマークダウン書法がよさそうだと思いました。
ただ、マークダウンだけでは表現力が多少不十分なので、Rubyのスクリプトで補えばいいかと考えた。
Rubyのマークダウン書法のライブラリとしてはRedClothとBlueClothがあります。
RedClothは仕様の拡張度が高く、いろいろ出来そうなのはいいのだけど、複雑になって、かえって使いづらい。
BlueClothはあまり評判よくないけど、シンプルかつ明快で僕の使用目的には十分。これにBlueStoleを追加すれば、ほぼ目的はクリアできるなと思った。
あとは自作のスクリプトで以下の通り仕様を拡張。
- どこで改行するかは重要。だから「 \n」で簡単にできるようにした
- 楽をするため、ヘッダー、フッターはテンプレートとスクリプトで自動処理
- 自由度を確保するため、書式はCSSで指定し、ページによってCSSは自由に指定できるようにした
- ダウンロードログ取得のCGI呼び出しは自動処理
- この記事ページは頻繁に更新するので、付随する定型的な処理(タイトルリストの作成、 ページ内インデックスの作成など)は自動処理するようにした
- 書きかけの記事を残すためコメント対応させることにした
というところ。
(internet) 2008/10/13
サイトのメンテナンススクリプトの解説(4)
備忘録をかねて、このサイトのメンテナンス用スクリプトの解説(メモ)です。
mx.rb
このスクリプトの仕様については「このサイトの作り方(1)」を参照して下さい。ここでは各処理でのマッチングパターンのメモを説明します。
コメントの削除
- マッチングさせる文字列
=begin
コメント文字列行
・・・
コメント文字列行
=end - 正規表現
/^=begin\n.*?\n=end\n/m - コメント
「.*?」がコメント文字列で「?」はこのパターンの最短文字列の意味で必須(入れないとコメントが複数箇所 あるとき、その間の本文まで削除してしまう)。
終わりの「/m」は複数行の指定。
タグを編集
- マッチングさせる文字列
ヘッダー名
===・・・=(タグ名)
本文
・
・
#####フッター(日付) - 正規表現
gsub(/(\n==*)(\(.+?\))(\n.+?\n#####)/m) {$1 + $3 + $2 + “ ”} - コメント
ヘッダー名の下の行の「=====・・・=」の後ろにあるタグを本文の後ろのフッター(日付)の前に入れ換える。
gsubの複数行(/m)処理の典型的なの例ですね。後方参照 $1 + $3 + $2 で順番を入れ換えています。
改行の指定
- マッチングさせる文字列
文(空白(改行 - 正規表現
gsub(/ \n/, “<br>\n”) - コメント
これはシンプルだから説明不要でしょう。改行を簡単に意図的にコントールできるので、とても重宝してい ます。(ここにこの記事をマークダウン文書をリンクしておきますのでご参照ください。)
画像の位置の指定
- マッチングさせる文字列
!_<_! # 左
!_>_! # 右
!_=_! # 中央
_はmx.rbの処理を避けるために入れてあります。無視して下さい。
RedClothの書式のパクリ。 - 正規表現
gsub(/!([<>=])!/) {\|m\|
“<p style=\”float:“ + $1.sub(/</, ”left“).sub(/>/, ”right“).sub(/=/, ”center“) + ”\“>!”
} - コメント
これもシンプルだから説明不要でしょう。
gsubとsubをブロックを使って処理させています。簡単な処理なので、正規表現を使わなくてもできそうですが、 if文のネストとなり、10行位かかりそうな処理が2行でできてしまうところがミソ。
ページ内リンクの自動作成
サイトのメンテナンススクリプトの解説(3)を参照して下さい。
ダウンロードログ用CGIURLの指定
- マッチングさせる文字列
&lt;a href=“N - 正規表現
gsub(/&lt;a href=\“N/, ”&lt;a href=\“” + cgiurl0) - コメント
これもシンプルだから説明不要でしょう。
cgiurl0の値を見てもらえばわかりますが、CGIへのパラメータはNの後ろに書く。
マークダウンでの書き方は 文字列 となります。
ml.rb
- リンク用のインデックスを作り
- 記事リストページを作成する
- トップページへの最新リスト5件挿入する
- 分野別リストページを作る
という処理を順番に行っています。
リンク用のインデックスの作成
- 記事ファイル
articles = [“articles.md”] # 記事ファイルを指定
[“articles.md”, “articles00.md”, “articles01.md” …. , “articlesNN.md”]
という並びを想定しています。古い記事ほど番号が大きくなる。
articles.collect! {|l| path + l} # パス・ファイル名テーブルを作成
でパスとファイルを指定。articles.each {|x| で全記事ファイルを処理 - タイトル見出しのidを取得
doc.scan(/\n([=#])[=#]+[^\n]+/){|l|
id0 += 1
ia « “#{sprintf(”%02d“, id0)}” if $1 == “=” }
でタイトル行を取得し、並び順でインデックスにする - タグ編集用の正規表現
gsub(/.*?\n([^\n]+)\n==*(\(.+?\))\n.*?\n#####([\d\/]+)\n/m) {“###[” + $3 + $2 + “ ” + $1 + “]” + “\n”}
mx.rbの「タグを編集」と同じような正規表現の使い方をしているで、そちらを参照して下さい。
記事リストページの作成
- 記事リストHTML
articles-list00.html articles-list01.html … articles-list99.html
という並びで、1htmlファイルに50件のタイトル
処理ステップがかかっている理由はほとんどこの編集のためなので、解説は省略 - HTMLファイル名の作成
articles[0].sub(/\.md$/, “-list#{sprintf(”%02d“,i)}.md”)
パターン化された文字列なので、これも正規表現でやっています
iはファイル番号 - ページ移動用リンクの挿入
分野別リストと共用するmethod(footerlink)にして、
sub(/@@l1@@/, “#{sprintf(”%02d“,i-1)}”).sub(/@@l2@@/, “#{sprintf(”%02d“,i+1)}”))
この i もファイル番号。正規表現を使いセットする。とてもシンプルに書けます。
トップページの作成
テンプレートをもとに最新リスト5件挿入しているだけなので、説明は省略。
テンプレートはここに置いておきます。
分野別リストページの作成
- タグの抽出
以下の正規表現と gsub + split + uniq でタグを抽出
data1.gsub(/^###[\[\/\d]+\((.+?)\)[^\n]+\n/){$1 + “ ”}.split().uniq
一行でするところがいいですね。
あとは記事リストページの処理と基本的に同じなので、解説は省略
(computer) 2008/10/12
BS2のアバドのバッハ/ブランデンブルク
10/05 BS2のアバド&ペトリのバッハ/ブランデンブルクを視聴しました。
いやー、素晴らしいですね。 アバドとオバサンになったペトリというので、たいして期待しないで聴き始めたの ですが、1番、ホルン奏者(というかその他みんな)のうまさにビックリ。
すごいでね。このオーケストラ。アバドの「これだけすごい弾き手を集めたのだか ら、オレやることないよ」という感じの指揮ぶりももっともだなぁ。
最後のトランペットとオーボエもよかったです。
映像(というか演出)にも感心しました。
6番。あのジミな曲がこれだけ華やかになるとは。若くて美貌のネイチャン二人 にバリバリ、メロディ弾かせて、中年の渋いオジサン、オバサンで支えるという のがいいですね。やる気のないアバドは登場させないというのも正解だなぁ。
レッドプリースの方向をもっと徹底してオーセンティックにやるとこういう感じ になるのかなと思いました。
ペトリ・オバサン、やっぱりアンコールのピッコロがいいですね。
(music) 2008/10/11
ノーベル賞受賞者の「至福の時間」
ノーベル賞益川教授が毎日新聞インタヴューで
「セカンドハウスでバルトークやバッハ、ベートーヴェン、ショスタコービッチを聴いているのが至福の時間」
と答えてました。
ナルホドですね。作曲家の選択すごいなぁ。論理一貫。理論物理学者だなぁ。作曲家のならびもすごい。バルトークではじまって、バッハに戻り、ベートーヴェンを経由して最後がショスタコービッチというのがいいですね。間違っても、モーツアルトとかショパンとかワーグナーとかを間にいれてはいけない。
あと、どうせだからショスタコービッチの後にユン・イサンとか言っていただければ、パーフェクトだっただけどなぁ。
# なんでベートーヴェンの次がショスタコービッチというのは政治的側面ですよね(シューベルトとか、シュー マンとか、ブラームスとか、,ブルックナーとか、マーラじゃダメです)。
(music) 2008/10/09
正規表現
便利なのだけど、不思議なことも。
直前の記事で
data.gsub!(/<a href=\\"X\\">(.+?<\\/a)/) {|l| # リンクをスキャン
これ、後方参照の (.+?<\/a)/) の「?」が不要と思うのですが、これを入れないとマッチッグしてくれない。 まあ<a href=\“X\”>を最大長で捜しにいくので、二つ目の以降の<a href=\“X\”>が最初に見つかり、 <\/a>間にあるものだから、マッチングできないということなのですかね。 でも /m は指定していないから変ですね。
あと、ml.rbの
a.length.times {|i| # (X)を(リンクid)に置き換え
doc = doc.sub(/<a href="X">/, "<a href=\\"" + "#id_#{a[i]}" + "\\">")
# doc.sub!(/(<a href=")X(">)/, $1 + "#id_#{a[i]}" + $2) # これでもできそうだけど、何故かダメ
}
もよく分からない。ブロックのなかだと後方参照がきかなくなるのかな。
これはバグだと思いますが、直前の記事で
&lt;a id="id_xx" name="id_xx"&gt; ヘッダー名文字列 </a) # xxは任意の数値(文書の上から昇順)
&lt; と &gt; は「<」「>」の意味ですが、これを直接そのままかくとBlueStoleでエラーになります。
(computer) 2008/10/08
サイトのメンテナンススクリプトの解説(3)
という次第(直前のメッセージ)でmd.rbを書き直し(mx.txt)ました(下記六行を追加)。
a = data.scan(/<a id="id_\d\d" name="id_\d\d">(.+?<\/a)/).flatten # ヘッダー名をテーブルaに data.gsub!(/<a href=\"X\">(.+?<\/a)/) {|l| # リンクをスキャン i = 0 # リンク先がなかったら、00 a.each_with_index {|m, n| i = n if m == $1} # ヘッダー名をテーブルサーチ "<a href=\"#id_#{sprintf("%02d", i+1)}\">#{$1}" # ヘッダーへのリンクを作成 }
九行がエラー処理を含めて六行になりました。
シンプルになった理由はヘッダー名をテーブル(a)を作って、それをリンク元のヘッダー名からサーチして見つけるようにアルゴリズムを変更したためです。BlueStoleのヘッダー名は
<a id="id_xx" name="id_xx"> ヘッダー名文字列 </a) # xxは任意の数値(文書の上から昇順)
という形をしているので、/<a id=“id_\d\d” name=“id_\d\d”>(.+?<\/a)/という正規表現で見出しを取り出すことができます。
リンク元は/<a href=\“X\”>(.+?<\/a)/で捜して、これが取り出した見出しの何番目にあるか調べ(each_with_index)、インデックに置換(gsub)する。
リンク元を書き間違えて一致するものが無かった時はi=0のままとなるので、エラー処理もOK。
(computer) 2008/10/08
サイトのメンテナンススクリプトの解説(2)
三つのスクリプトで、正規表現を多用しています。この方法は定型的な文書の文字処理をするのに、便利ですね。正規表現を使わないでプログラミングすると、とても複雑な処理を、シンプルに書くことができます。
ml.rb(txt)を例にとると、 HTMLファイルの中で「<\a href=“(X)”>ヘッダー文字列<\a>」(\aはa)という文字列を捜して、その文字列のヘッダーを捜して、id番号を取得するという処理をしているのですが、たったの六行
a = Array.new doc.scan(/<a href="(X)">(.+?)<\/a>/) {|l| # リンクid番号を取得 doc.scan(/<a id="id_(\d\d)" name="id_\d\d">#{Regexp.new(Regexp.quote($2))}/) {|m| a << $1 # #{Regexp.new(Regexp.quote($2))} はヘッダー文字列 } }
で書けます。
取得したidのセットも
a.length.times {|i| # (X)を(リンクid)に置き換え doc = doc.sub(/<a href="X">/, "<a href=\"" + "#id_#{a[i]}" + "\">") }
と三行ですみますのでほんとにシンプル。
ただ、このスクリプト、直接HTMLを書き換えるとか、エラー処理がないとか、いろいろ問題ありなので、書き換えるつもりです。
(computer) 2008/10/06
サイトのメンテナンススクリプトの解説(1)
このサイトのメンテナンスの定型的な処理はrubyで自動化させています。(このサイトの作り方(3)および(2)(1)参照)。作ったスクリプトは以下の通り。
- mi.rb(txt)
article(記事)ページから見出しを取り出し、記事一覧を作成。作成した一覧を以下の 通りMD化
- トップページ(最新のn件を挿入)
- 記事一覧(article-list00.md - article-listnn.md)
nn はシリアル番号
- 分野別記事一覧(article-list(xxx)00.md - article-list(xxx)nn.md)
xxx は分野名 - md.rb(txt)
bluestoleを呼び出しマークダウン文書をhtmlに変換
「このサイトの作り方(1)」にある通り、bluestoleを拡張 - ml.rb(txt)
BlueStoleの出力するHTML文書の自ページ内のタイトルへリンクを自動作成する
リンク元の記述方法、ヘッダー文字列
上の行はマークダウン処理を避けるため、「] (」 間に空白を入れてあるが、実際はなし
(computer) 2008/10/05
このサイトの作り方(5)
自ページ内のインデックスを自動リンクするRubyのスクリプトを作成しました。
追記型で記事をページ先頭に追加していくと、ページ内のリンクの更新が大変なことに気がついたので。BlueStoleの仕様だと、タイトルヘッダーのidが上からとられるため、記事を追加するたびにリンクを手作業で変更する必要が発生します。
マークダウンファイルから作成されるHTMLファイルを直接いじる方法をとっているのだけど、ちょっと問題かなた。スクリプトはここにあります。
(computer) 2008/10/05
「MP3 files」を更新
- 「中世ルネサンス音楽」
- 「バッハとモーツアルト」
- 「ウェーベルン」
のページも公開しました。 「マンデルブロ音楽」とウェーベルン以外の「現代音楽」のページはのんびりやるつもり。
「マンデルブロ音楽」はMP3ファイル化をどうするか、思案中、「現代音楽」は著作権対応の仕方を検討中です。
(internet) 2008/10/02
「その他の音楽」のページを公開
「その他の音楽」のページを公開しました。 MP3ファイルの作成環境はRoland SC-88ST ProのアウトプットをPCのオーディオカード(Juli@)に入れて録音。Thomson mp3PRO Player/Encoderを使い、エンコードしています。圧縮率(64Kbps)が高く、音もまあまあなのでお勧めです。
(internet) 2008/09/29
このサイトの作り方(4)
記事一覧を自動作成するRubyのスクリプトを作成。
CGIで自動化する方法もあるのだけど、NiftyのMyHomepageではRubyスクリプトが使えないので断念。
マークダウンファイルを直接操作することにしました。スクリプトはここにあります。
(computer) 2008/09/28
サイトを立ち上げました(3)
リタイアしたらサイトを再開しようと思っていたのですが、随分時間がかかりました。
なにしろ退職後の生活信条は 「生涯いち能天気、今日できることは明日やろう」 (そのほうが楽しみを先にとっておけるから)というものなので、やむおえないですかね(^^;;;。
とりあえず、旧サイトのMIDIファイルのMP3化するつもり。JASRACの動画著作権の規制が緩和されたみたいなので、現代曲のアップロード実験してみようかなと思っています。実験結果のレポートはここに書き込む予定です。
(internet) 2008/09/26
このサイトの作り方(3)
MarkDownの変換はBueClothというRubyのライブラリを拡張したBlueStoleのライブラリを自分用に拡張して利用しています(スクリプトはここ)。自作のスクリプトの内容はこの「サイトの作り方(1)」の通り。起動方法は
ruby スクリプトファイル名 MarkDownファイル名
これでHTML作成の定型的な処理のほとんどが自動化できるので楽です。
Webのデザインは定石通りCSSを使っています。CSSの編集にはkomposerというソフトを利用。編集の機能は貧弱だと思いますが(僕の使用目的ににはこれで十分です)、WYSWYGでCSSを編集できるのでお勧め。
(computer) 2008/09/23
このサイトの作り方(2)
旧サイトはHTMLのタグを専用のエディタを使って、書くという方法で運用しましたが、サイトの更新が大変でした。もっと楽な方法はないかなかといろいろ調べて、Wikiの書法に使われているMarkdownで書くのが よさそうと分かった。
詳しくはリンク先を読んでもらえばいいと思いますが、たとえばこのページのソースはこれです。テキストエディタで楽に編集できます。
ご覧いただければお分かりのように、見出し、リスト、リンクなどが直感的に処理できるのが特徴。BlueStoleによる機能拡張を利用すると、テーブル、なども使えるので、とても便利です。とりあえずこれでいけそうですね。
(computer) 2008/09/23
このサイトの作り方(1)
Markdown用のBlueStole改ruby自作スクリプトの備忘録用メモ
BlueStoleからの変更点
- テンプレートの利用
- CSSの指定(2行目)
- 半角空白 + 改行は改行(<br>\nに変換)
- ページログ取得CGIの設定(cgiurl : ページ名は先頭行)
- Nifty用のダウンロードログCGIの設定(cgiurl0 : N)
- Musicgate用のダウンロードログCGIの設定(cgiurl1 : M)
- 画像ファイルの位置指定(右 :!<!、左 : !>!、中央 : !=!)
- コメント行の削除(=begin から =end まで)
- タグ( =+(.+) )の処理(記事用)
- タイトル文字列でページ内の記事タイトルへのインデックスリンクを自動作成。
(computer) 2008/09/23
現代曲のアップロード
著作権はJASRACとの契約で動画の音声であれば、問題はなさそうなので、試してみます。
YAHOO!のビデオキャストにアップロードしましたが、ニコニコ動画やeyeVioでも同じことができるみたいです。
(music) 2008/09/21
サイトを立ち上げました(2)
旧サイトは1997年に立ち上げ、2003年にホームページを置いてあったプロバイダが倒産し、中断したので、5年以上放置した内容のままです。今回、旧サイトの復元は機械的に行い、情報の更新はしていません。リンク切れ、陳腐化した技術情報など多数ありますが、ご容赦ください。
また公開したプログラムや情報の内容については古いので、フォローするつもりはありません。ご了解よろしくお願いします。
(internet) 2008/09/20
サイトを立ち上げました(1)
新サイトの基本的な構成の設計と旧サイトの復元がほぼ完了したので、オープン。
1997年に「不思議な音楽の部屋」というサイト名で立ち上げたサイトをリニューアルオープンします。コンピュータと音楽の話題が中心になると思います。とりあえずは前サイトのMIDIデータをMP3化したものを順次公開するつもりです。
1997年には地元のプロバイダとNifty合わせて10MB以下のスペースしかなかったと思いますが、いまでは全部あわせると700GB。すごいものですね。MIDIファイルでチマチマとやっていたことを思い出すと隔世の感ですね。