Web/WebDesign
前のページ | ・・・2 3 4 5 6 7 8 9 10 11 12 ・・・ | 次のページ
2007/09/11 09:58
全文配信同盟 - あのサイトのRSSフィードは全文配信?部分配信?
「Melanges のフィードは全文配信っぽいです 」
・・・全文配信です。RSSで全部読んじゃってください。てか、これって必要なのか?あ、そんなつっこみはナシ?ごめんなさい。
フィードは全文がいいです。なんか概要配信とかしているブログは、だんだん見るのが面倒くさくなっちゃうんだよね。タイトルと概要だけでは自分の感性にヒットしないことが多いよね?なんか本文のあんなところに「ん?」っと思ってしっかりそのエントリーを読んで気になっちゃったらdeliciousになっちゃうわけでー。
僕のくだらない日記(最近は本当にくだらないことはmixiに書くようにしています)まで、わざわざそのページにアクセスして見てもらうのもなぁ。。嫌ですね。ハイ。まぁ、好きな人はどうぞ。
PVが減るー!!とか考える人は、RSSのアクセス数が増えていろいろ紆余曲折があって最終的によりPVが増えることを理解していないんだろうなぁ。。Webサイトの評価の指針はPVじゃないよ?
あと、僕はSafariで読んでますけど、全文を読みたくないブログ(どっかのニュース系)はSafariの機能で記事の長さを調節できたりするんだなぁ。
なんて偉そうに書いてみたけど、僕のブログではPVを載せている事実。ただし、99%がbotのような気がする(言い過ぎ
2007/09/04 18:18
COULD: skEdit 3.6で長谷川さんが言及していますがそれ以上のエントリーがなかなか出てきません。。skEdit + SVN(Subversion)の回でも書きましたけど、やっぱりユーザ数が少ない上、みんなさらりとこなしてしまっているのかな、と思います。
今回は、コードナビゲータを有効に使用する方法を説明します。あくまでも、私見ですので、使いにくい!と思われる方もいらっしゃるかもしれません。
コメントを表示するコードナビゲータ
上記で紹介した長谷川さんのCSSコメントをコードナビゲータに表示させる方法はいくつか問題があったりします。それは、
- コードナビゲータに表示させたくないコメントまで表示されてしまう
- コメントを使用したCSS Hackまで表示されてしまう
などが挙げられます。これらを解決する方法は、skEditのコードナビゲータ用のコメントを書くしか手段はありません。CSS Hackだけ表示させない、なども可能ですが、セパレータとして、/* ------------------------------------------ */と記述したいときに、困ってしまいます。
skEditのコードナビゲータ用のコメントですが、書き方は何でも構わないと思います。僕は、/** skEditのコードナビゲータ用のコメント */としました。最初のアスタリスクを2つ並べています。これが一番スマートかなぁ、と思いました。
このようにskEditコードナビゲータ用コメントのガイドラインを決めたら、正規表現を記述すればいいことになります。skEditの正規表現で( )を使用した場合、(1)に入ります。( ) ( )ならば(1)(2)とできます。$や\ではないですね。

トリガー:/\*\* ?([^\*]+) ?\*/タイトル:*** (1)カテゴリ名:CSS Comment説明:Shows CSS Comment (/** Comment */)
トリガー以外は自由に記述して問題ないと思います。タイトルが実際に表示されることになり、(1)部分がコメントの内容と置き換わります。僕は分かりやすいように、行頭に「*** 」を付けていますが好みで変更して構わないと思います。カテゴリ名・説明ともにあとあと分かりやすいように記述すれば問題ないと思います。
あとは、CSSでコードナビゲータ用のコメントは /** Comment */ と書くようにすれば問題ありません。うまく表示できない場合は、正規表現を疑ってみてください。
Javadocコメントを表示するコードナビゲータ
Javadocコメントについては、Googleで検索していただきたい。簡単な Javadoc の書き方など、有益なWebページは結構存在します。このJavadocコメントは、Java用のドキュメントの為のコメントだが、ある一定のルールに基づいてコメントを書くにはとてもいい見本になります。
CSSもある程度、大分類が出来るかな。それごとにファイルを分けてしまってもいいと思いますが、ヘッダー・コンテンツ・サイドバー・フッター等、全ページ一緒で数行しかないのにわざわざファイルを分けてしまっては管理が億劫で仕方ないときとかに、1つもしくはある程度の数のCSSファイルで管理することになるが、その大分類ごとにJavadocコメントを記述しておくといいかもしれません。まー、ワークフローは異なりますから、適当にどうぞ。
Javadocコメントは、@authorで誰が記述したのか、@seeでここも見ろ!など、第三者がみても分かりやすいようにするといいかもしれません。と言うか、自分しか見なくても、3ヶ月前に書いた自分のプログラム等は別人が書いたものと思っても過言ではないはずです。後々の自分のために詳しく書いておくに越したことはありません。@versionや更新日なども記述しておくのもいいかもしれませんが。そうすることで、誰がいつ更新したのがわかり、SCMと併用すれば完璧じゃないのかなぁ、なんて思うのです。
Javadocについてはこれくらいにし、実際の正規表現を書いてみます。カテゴリ名と説明は省略します。
トリガー:/\*\*\n \* ([^*]+)\nタイトル:----- (1) -----
トリガー: \* @([a-z]+) +([^\*]+)\nタイトル: (1): (2)
半角スペースとか意外と重要だったりして・・・わかりにくくてごめんなさい。
なんかよくわからいのですが、$が使えないのです。たぶん全てを1行と見なして処理してます。なので、\nで代用します。僕が間違えてたら指摘してくれると嬉しいです。
なにがオリジナルか分からなくなってきたけど、とりあえず使用しているコードナビゲータ
えー、これがあれですね。アレです。id系です。#content {}
#content #entry {}
#content .entry {}
#content p {}こんな感じのにヒットします。
トリガー:\n#([a-z0-9_-]+) ?([#.])?([a-z0-9_-]*)?[ \n]?{タイトル:#(1) (2)(3)
class系は以下のだけ。てか、上のid系で、#content .entry {}はヒットするんで・・・.section {}
トリガー:\n\.([a-z0-9_-]+)[ \n]?{タイトル:.(1)
上の2つはcss用だけど、html用にもidにヒットさせる。
トリガー:<[a-z0-9_="' -]+id="([a-z0-9_-]+)"[a-z0-9_="' -]*>タイトル:#(1)
あと、HTMLのhnがあるけど、これはオリジナルで入っているかな
トリガー:<[hH]([1-6])[^>]*>\s*([^<]+)\s*<タイトル:<h(1)> (2)
そんな感じでした。
次回はSnippetについて書きたいなぁ、なんて思っています。
この文書も半年くらい熟成させていましたので、いつになることやら。。。
2007/09/04 10:31
- 参考文献
- いま見ているエントリーを編集する Bookmarklet - bricklife.weblog.*
エントリー数が増えると意外とやっかいなので、なんかいい方法はないかなぁと探していたらいいものみっけた。結構古い記事でしたけど、僕はMT3.35なのであんまり問題がなかったよ。
以下が元記事のJS。
javascript:var id=document.comments_form.entry_id.value
location.href='http://your.mt/path/mt.cgi?__mode=view&_type=entry&id='
+ id + '&blog_id=1'
えー、なんで ; (セミコロン)がないの?とか思ったけど、あと、なんでfontタグを使っているの?とか。。そんなのはまぁいいとして、別Windowで開きたかったので書き換えましたよ。(僕はSafariStandで新規ウィンドウをタブで開くに設定しているのです)
と言うことで、書き換えたブックマークレットjavascript:void(window.open('http://www.sample.com/mt/mt.cgi?__mode=view&_type=entry&blog_id=1&id='+document.comments_form.entry_id.value));
http://www.sample.com/mt/mt.cgiは適当に変更して、blog_id=1も適当に変更する。
致命的な問題として、コメントのフォームからentry_idを取得しているので、document.comments_form.entry_id.valueはいじいじする必要がある人ももちろんいるし、entry_idが取得できない場合、この方法はダメですね。
2007/09/03 15:15
「エントリー・アーカイブ」と、「カテゴリー・アーカイブ」「日付・アーカイブ」では、本文の見出しレベルが異なってくるよね?というお話。
見せ方次第なんですけど、カテゴリーやら日付アーカイブでエントリーの内容(MTEntryBody)を表示させちゃうと、見出しレベルが怪しくなるのです。あ、本文に<h2>とか使わないなら別に問題はないです。
要は、見出しレベルの付け方の問題で、エントリーでは、
<h1>エントリーのタイトル</h1>
<p>エントリーの内容<p>
なんですけど、カテゴリーと日付アーカイブでは、
<h1>カテゴリー・日付のタイトル</h1>
<h2>エントリーのタイトル</h2>
<p>エントリーの内容<p>
<h2>エントリーのタイトル</h2>
<p>エントリーの内容<p>
<h2>エントリーのタイトル</h2>
<p>エントリーの内容<p>
になりますね。
そうすると、エントリーの内容(MTEntryBody)に書いた<h2>や<h3>などの見出しレベルがおかしいよねーになる。これを修正しなきゃいけません。
いろいろ探し回ったけど、あんまり見つからなかったけど、唯一見つかったのが「ISO-HTML準拠MovableTypeテンプレート : 雑記帳 : der Gegenwart」です。探し方が悪いのかな。。
解決方法は、Regixプラグインを入れると言うことです。
Six Apart - Movable Type プラグインディレクトリ: Regex
これは、正規表現をMovable Typeで実現するものです。あの忌まわしいhtml_text_transformで戦った正規表現の再来です。自ら招いているんだけど。というか、正規表現は信じられないくらいに便利です。とっつきにくいかもだけど、慣れてしまえば何も難しいことはないです。たぶん。んー、HTMLやらCSSのが奥が深くて難しいと思うけど。
プラグインの使い方はSix Apartのページが詳しいです。分かりやすいです。ただ、最後の書き方では正規表現に「$」を使用することはできません。$1などを使用したい場合は<MTRegexDefine>で事前に定義してください。
ってトコがちょっと冷たいけど、正規表現で置換とかするときによく使います。
いままで、Melanges(このブログね)は http://melanges.kuma.nu/060822225338.html こんな感じのアドレスでした。いまは、 http://melanges.duck.nu/2006/08/22_225338.html です。これを正規表現で置換するときに、
検索http://melanges.kuma.nu/([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{6}).html置換http://melanges.duck.nu/20$1/$2/$3_$4.phpと出来るのさ。って、詳しくは他のサイトでどうぞ。言語やアプリケーションでもちょっと異なるし。つまり、この$を使うときは、<MTRegexDefine>を使えってことです。
余計なことを書きすぎた。。。
で、本編。
僕はエントリーアーカイブ中心にエントリーの内容(MTEntryBody)を書いていっているので、<h2>を<h3>に<h3>を<h4>に・・・と置換していきたい感じです。それを正規表現で書く。
<MTRegexDefine name="regex_h6e">s|</h6>|</p>|g</MTRegexDefine>
<MTRegexDefine name="regex_h6s">s|<h6>|<p class="h7">|g</MTRegexDefine>
<MTRegexDefine name="regex_h5">s|<(/?)h5>|<$1h6>|g</MTRegexDefine>
<MTRegexDefine name="regex_h4">s|<(/?)h4>|<$1h5>|g</MTRegexDefine>
<MTRegexDefine name="regex_h3">s|<(/?)h3>|<$1h4>|g</MTRegexDefine>
<MTRegexDefine name="regex_h2">s|<(/?)h2>|<$1h3>|g</MTRegexDefine>
これを適当なトコに書いて、(わかりやすいとこがいいから、僕は<h1>の下に書いてみた)<$MTEntryBody$>を以下のように書き換える<$MTEntryBody regex="1"$>
こんな感じです。<h6>をどうするかは、ご自由に変更してください。あと、最初にh2→h6の順番で置換していったら、全部<p class="h7">になって焦った。。順番に置換していってしまうみたい(当たり前か)なので、h6→h2の順番で書いていかないとね。
あとは、適当にこんなのとか。<MTRegexDefine name="smile">s|:\)|☺|g</MTRegexDefine>:) を ☺ に置換してくれます。たぶん。。
そんな感じ。
2007/09/01 00:45
事の顛末
まず、気軽に「html_text_transformをblockquoteとcodeに対応させる」と言った感じで、mt/lib/MT/Util.pmにあるhtml_text_transformをいじり始めたのがきっかけです。と言うのも、<blockquote>の不具合は知っていたから修正したのです。これをすれば、空行がある<blockquote>でも大丈夫だと何故か勘違いしていたのがまずかった。。見事に、html_text_transformにはまる。。
でも、がんばって何とかその日(土曜日)の夜には空行ありのblockquoteやcodeなどに対応したhtml_text_transform完成!させました。もうこりごりといった感じです。
しかし、ふとしたタイミングで、Validatorしちゃいました。
character data is not allowed here.
You have used character data somewhere it is not permitted to appear. Mistakes that can cause this error include:
putting text directly in the body of the document without wrapping it in a container element (such as a <p>aragraph</p>), or
forgetting to quote an attribute value (where characters such as "%" and "/" are common, but cannot appear without surrounding quotes), or
using XHTML-style self-closing tags (such as <meta ... />) in HTML 4.01 or earlier. To fix, remove the extra slash ('/') character. For more information about the reasons for this, see Empty elements in SGML, HTML, XML, and XHTML.
んあ?<blockquote>の中に文字データはおけないよって言われた!!になりました。え、そうなの?と思って仕様を確認すると、Transitionalでは文字データおっけーなのですが、Strictの場合は文字データえぬじーなのです。あう。
てかまぁ、よくよく考えてみたらその通りですよね。<blockquote>はあくまでもblockquoteだし。
と言うことで、<blockquote>の内部にもhtml_text_transformしてあげなければいけません。今までだと、<br />のみの付加でしたからダメダメです。ごめんなさい、プライベートだけStrict大好きなのです。パブリックはTransitionalじゃないと仕事になりませんけどね。みなさまtarget="_blank"大好きだから。
まぁ、ごにょごにょとコードを書き足しまして、完成しました。今度こそ。このエントリーでも<blockquote>を使っているのでソースを表示していただければどうなっているのか分かると思います。と言うか、html_text_transformの確認用エントリのソースと、実際のEntryBodyの内容を見た方がいいかも?ごちゃごちゃさせすぎかもだけど。
10行程度だったhtml_text_transformですが、いつの間にか80行くらいになっていたよ(; 行き当たりばったりで書いていったプログラムだったので無駄が多いのですけど。効率よくすれば70行くらいになるかな。。
てか、致命的な問題が一つ残っているんだけど、それはその場面に出会ったら修正しよう。。
前のページ | ・・・2 3 4 5 6 7 8 9 10 11 12 ・・・ | 次のページ