[トップ][一覧][最近の更新]

archives/2005/08

Operaのライセンスキー無料配布

via: http://www.forest.impress.co.jp/article/2005/08/30/opera10anniversary.html

一応もらっておく。興味ないけど。

bloglinesのsubscribe feedsをマイニング

自分のリストでやってみた。

info

  • subscribe feedの合計数は 154
  • subscribe feedのtotal subscriberの平均は 230.168831168831
  • subscribe feedのpublic subscribersの平均は 53.7662337662338

feed数の順位

  1. Scientific American ( 15894 / 2537 )
  2. hack a day ( 4189 / 1362 )
  3. Paul Graham ( 3083 / 889 )
  4. SecurityFocus News ( 2425 / 561 )
  5. Schneier on Security ( 1464 / 446 )
  6. Lambda the Ultimate - Programming Languages Weblog ( 1189 / 436 )
  7. SecurityFocus Vulnerabilities ( 875 / 237 )
  8. 高木浩光@自宅の日記 ( 540 / 138 )
  9. SANS Internet Storm Center ( 501 / 144 )
  10. えむもじら ( 464 / 104 )

subscribe feedが似ている人

  1. horaguchi ( 28 )
  2. JohnPallister ( 19 )
  3. mala ( 16 )

Scientific AmericanのRSSっておもしろくないよ。広告入るし。 なんで人気があるのかわからん。

個人サイトの比較をすると、 Bruce SchneierよりもPaul Grahamの方が人気がある点が興味深い。 Lispの情報は慢性的に少ないのでLisperのアンテナも偏り気味なのかもしれない。 それに比べると、 セキュリティネタはいろんなところに散らばっているのでフィードもやや少なめになる、 といったところか。

『subscribe feedが似ている人』はどこも大体いっしょになるんじゃないかな(苦笑)。

newsticker.el

RSSリーダといえば

そういえば、いま手元には何種類のRSSリーダがインストールされているのだっけ。 ということで再確認。

  • Sage: Mozillaの定番RSSリーダ
  • snownews: cursesベースのRSSリーダ(日本語カタログ採用していただきますた)
  • newsticker.el: emacsのRSSリーダ

3種類使い分けていることが一般的かどうかは不明。

で、今回はnewsticker.elを紹介。

特徴

newsticker.elはemacsで動作するRSSリーダ。 バックグラウンドで非同期読み込み可能。すげー。

インストール

必要なもの

emacsはversion 22.0.50.1で動作を確認している。 このバージョンだとMule-UCSは不要。

あとは、xml.elとwgetが必要。xml.elは最新のemacsなら多分入ってる。 動作が不安定ならgnusからもらってくること。 wgetは変更可能(具体的にはnewsticker-wget-nameをsetqする)。

ダウンロード

newsticker.elのダウンロードは上記サイトで、2005/08/30 15:57:50 JST現在はnewsticker.el-1.7が安定版の最新。

設定

~/.emacsに

(autoload 'newsticker-start "newsticker" "Start Newsticker" t)
(autoload 'newsticker-show-news "newsticker" "Goto Newsticker buffer" t)
(add-hook 'newsticker-mode-hook 'imenu-add-menubar-index)

あとはフィードしたいURLを設定。

(setq newsticker-url-list
      '(("more-functional" "http://quasiquote.org/log2/?c=rss")
        ...
        ))

で最低限のセットアップはおっけー。

起動

M-x newsticker-show-newsで起動。

起動直後からデフォルトで3600sec毎にバックグラウンドの巡回を開始する。

使用

とりあえず

  • u(newsticker-buffer-update)
  • m(newsticker-mark-all-items-at-point-as-read)

だけ覚えておけば困らない。初心者向けにメニューも用意されているし。

エントリーの上でキーボードでEnterするかマウスで中クリックすると、 browse-urlが動きだすのも便利。

M-x newsticker-start-tickerも試してみるといいと思う(私は使ってない)。

問題点と回避法

上の設定だけで快適RSSライフ(何それ)が送れるのけど、 多コードセット環境では少し問題があって、 ここのページみたいにEUC-JPのRSSが存在すると、 キャッシュファイルの書き込みに失敗するんだな。 プロンプトが出るエラーなので、auto-save-buffersが効いているとうるさくてかなわない。 で、パッチ(newsticker.el-compound-text-20050830.diff)。

何が問題かというと、 保存するときにfetchしてきたRSSの文字列を実際にUTF-8へ文字を変換しないにもかわらず、 キャッシュファイルのトップに

 -*- coding: utf-8 -*-

を指定している点。 パッチでは、これをcompound-textに変更し、実際にキャッシュファイルをcompound-textで保存することで、壊れたUTF-8文書と誤認識されることを回避する。 これがelispプログラミングとして正道かどうかは知らない。

ちょっとだけ嬉しいTips

~/.emacsに

(autoload 'w3m-region "w3m"
  "Render region in current buffer and replace with result." t)
(setq newsticker-html-renderer 'w3m-region)

を入れておくといいことがあるかもね。

まとめ

良い点

  • emacs上で動作すること

ログインしてからログアウトするまでemacs立ち上げっぱなしの人にはいいかも。 SageがMozilla立ち上げっぱなし環境で便利な点と何ら違いはない。

良くない点

  • emacs上で動作すること

emacs好きじゃないと使ってらんない。 でもemacs好きなら一度でもいいから試して欲しい。 emacsらしい作りが実感できる。

Note:newsticker.el

ToDo

これを書くとき気がついたこと。

  • RSSリーダ3つとbloglinesを併用している点を考えると、 リソースがちょっと分散しすぎの感あり。要整理。
  • snownewsでネタを書くこと
  • WiLiKiのwiliki/rss.scmをいじって、このページもRSSをUTF-8で出力するようにすること

OpenBSD/current-is-3.8

Category of OpenBSD

version 3.8秒が読み開始

http://marc.theaimsgroup.com/?l=openbsd-cvs&m=112516270301908&w=2

3.8がリリースされたとして

mallocが変わった(セキュリティに関して、より安全側に倒した)ので、 ユーザ側では少し混乱が起こるかもしれない。 少なくとも公式の配布物(bsd,base38,xbase38...)の正常動作は保証されるだろうが、 portsの方はどうなることやら(ビルドは成功するが動作しないソフトにBROKENが付いてないものがいくつかあるような気がする)。

といっても、OpenBSDを利用する人が何に使っているのかといえば、 大抵はファイアーウォールとhttpdだろうから、 外向きサーバ以外で使っているような人は元から対象外かもしれない(Xも公式配布物に入っているけどね)。

運用方針

2005/08/26/移行作業その2の変更によって、 Sageなどを使っていると、しょっちゅうページを改変することで、 RSSの本文がdiffだらけになってしまうので、 ネタを書くのは1回きりにしておいて、変更点は[ノート]に追記するようにしよう。

移行作業

結局

WiLiKiに移ってしまった。こっちのほうがblosxomより楽でいいべ。 blosxomの何がいかんって、ファイルのアップロードが面倒だからなあ。

そのままのWiLiKiだとChangeLogを書くには向いてないので、ねるWiki:WiLiKi-blogからblogマクロをありがたく頂いてきて、CoolなURIに対応するように改悪(wiliki-blog.scm.diff)。

どこをいじったかというと、ひとりでしか使用しないので、prefixを廃止したこと。 それと、編集用と閲覧用にCGIを分けたので、コメントも撤去したこと。これだけ。

Logのための新規ページはbookmarkletで作成する。 こんな感じ。

javascript:function z(x){if(x<10)return "0"+x;return x;};tm=new Date();y=tm.getFullYear();m=z(tm.getMonth()+1);d=z(tm.getDate());t=window.prompt("titie?", "");location.href='http://example.com/log/'+y+'/'+m+'/'+d+'/'+t+'?c=e';

桁取りが恐しく手抜きだけど自分しか使わないし、いいか。

あ、それとここのWiLiKiはHSPWikiとコードを共有してるから、下手にいじって壊すとたいへんなことになるなあ。これぞドッグフード。


ToDo

  • コメント欄とトラックバックを付けること。くっつきでいいや。
  • カレンダーを設置すること。
  • カテゴリはどうしよう。無くてもいいか。検索もあることだし。
  • WiLiKiのRSSはどうもアレなので改良すること。
    • どうもmtimeじゃなくてctime見てるっぽいところとか、<item>に<description>入ってないところとか。
    • と思ったが、dc:dateはあっているみたい。
    • とりあえず、<item>に<description>を入れるようにしてみた(wiliki-rss.scm.diff)。マクロとかコメントも入ってしまうけど、これ以上いじっても不毛な気がするのでここまで。
    • diffを記述したほうがいいのかなあ。悩み。
    • <content:encoded>はdiffにすることにした。というか処理が重いような気がする。
  • スタイルシートをなんとかすること。テーブルレイアウトもやめたい。
  • W3CのValidationくらいは通そう。

移行作業その3

RSSの<content:encoded>をdiffにするか全文にするのか、 悩んだあげく、選択できるようにした(wiliki-rss.scm.diff)。

ただし、wiliki.scmの<wiliki>のスロットに

   ;; RSS content output is ALL, not diff
   (rss-content-all :accessor rss-content-all-of :init-keyword :rss-content-all
                    :init-value #f)

を追加しなければ動作しない。

こちらのひとり遊びページは:rss-content-all #tで。 HSPWiKiは#fで運用してみることにしよう。

Note:移行作業その2

  • <content:encoded>はこのままdiffで通すか、本文のCDATAにすべきか……
  • <wiliki>に選択できるようにスロットを追加すべきかなあ。

Note:運用方針

  • あ、そうか。『「最近の更新」に登録しない』を使うという手もあるのか。

移行作業その2

とりあえずWiLiKiのRSS出力まわりをイジイジ。 rss.scmの出力は貧弱すぎるので、強化(wiliki-rss.scm.diff)。

変更点は3点。

  1. /rdf:RDF/channel/dc:dateを追加(これは実効性がどの程度あるのか不明)
  2. /rdf:RDF/item/content:encodedを追加(変更点との差分出力。色付き)
  3. /rdf:RDF/item/descriptionを追加(本文をはじめの200文字まで出力)

<content:encoded>は変更点の前後も出力したほうがいいのかなあ。ちょっと面倒そうだ。 とりあえずW3CのRDF Validatorもパスしてるみたいだし、 これ以上深追いはしないでおこう。

次はCSSでも書き直しますかね。

is-strlcpy-useful

結構嫌う人も多いらしいです。なんででしょうね。

ちょっと凝ったことをするときは、OpenBSD-man:snprintfの方がいろいろ楽かもしれません。 といっても、こちらは返り値が0以下を返すこともあるので、 このときの処理を忘れたらいけないのが少しだけ面倒です。

strlcpy,strlcatはANSIでもPOSIXでもありませんが(OpenBSD-man:strlcpyのHISTORY参照)、 *BSDに入っているTodd氏の実装はANSIで書かれたISC BSD Licenseなコードなので、 勝手に組み込まれて困る人は少ないでしょう。 autoconfでチェックして、無いなら自前のコピーをぶち込むのが常套手段です。 OpenBSDの版のコードの最終更新もすでに2年前ですし、 安定しているといっていいと思います(OpenBSD-cvs:src/lib/libc/string/strlcpy.c)。


余談

  • snprintfで思いだしたのですが、 たなかさんが以前紹介されたASFRecorderのコードをちょっとだけ読んだのですが、尋常じゃないコードでした。やばい。 こんなの。
    int main_function(int argc, char **argv)
    {
        ...
        unsigned char Buffer[MAX_CHUNK_SIZE];
        ...
        char *bufptr;
        ...
        bufptr = Buffer;
        bufptr+=sprintf(bufptr,"GET %s HTTP/1.0\r\n", proxy == NULL ? file:full_path);
        ...
        bufptr+=sprintf(bufptr,"Accept: */*\r\n");
        bufptr+=sprintf(...);
        bufptr+=sprintf(...);
        bufptr+=...
        ...
    
    何が起こるのか想像が付かない。やばすぎる。 他にもツッコミどころ満載。 1関数あたりの行数が異様に長いところとか、 ちょっとやそっとでは修正不可能なくらいグチャグチャです。 作者はどうやってC言語を学んだのでしょうか。 とても興味深いですね(棒読み)。
  • 他の例。ときどき見かけるコード。
    strcat(strcat(strcpy(x, y), z), w);
    
    こういうコードなんか見つけるとlispかよ! と、いつも心のなかでツッコミをいれてしまうのですが。