Operaのライセンスキー無料配布
via: http://www.forest.impress.co.jp/article/2005/08/30/opera10anniversary.html
一応もらっておく。興味ないけど。
via: http://www.forest.impress.co.jp/article/2005/08/30/opera10anniversary.html
一応もらっておく。興味ないけど。
自分のリストでやってみた。
info
feed数の順位
subscribe feedが似ている人
Scientific AmericanのRSSっておもしろくないよ。広告入るし。 なんで人気があるのかわからん。
個人サイトの比較をすると、 Bruce SchneierよりもPaul Grahamの方が人気がある点が興味深い。 Lispの情報は慢性的に少ないのでLisperのアンテナも偏り気味なのかもしれない。 それに比べると、 セキュリティネタはいろんなところに散らばっているのでフィードもやや少なめになる、 といったところか。
『subscribe feedが似ている人』はどこも大体いっしょになるんじゃないかな(苦笑)。
そういえば、いま手元には何種類の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毎にバックグラウンドの巡回を開始する。
とりあえず
だけ覚えておけば困らない。初心者向けにメニューも用意されているし。
エントリーの上でキーボードで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プログラミングとして正道かどうかは知らない。
~/.emacsに
(autoload 'w3m-region "w3m" "Render region in current buffer and replace with result." t) (setq newsticker-html-renderer 'w3m-region)
を入れておくといいことがあるかもね。
ログインしてからログアウトするまでemacs立ち上げっぱなしの人にはいいかも。 SageがMozilla立ち上げっぱなし環境で便利な点と何ら違いはない。
emacs好きじゃないと使ってらんない。 でもemacs好きなら一度でもいいから試して欲しい。 emacsらしい作りが実感できる。
これを書くとき気がついたこと。
http://marc.theaimsgroup.com/?l=openbsd-cvs&m=112516270301908&w=2
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とコードを共有してるから、下手にいじって壊すとたいへんなことになるなあ。これぞドッグフード。
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で運用してみることにしよう。
とりあえずWiLiKiのRSS出力まわりをイジイジ。 rss.scmの出力は貧弱すぎるので、強化(wiliki-rss.scm.diff)。
変更点は3点。
<content:encoded>は変更点の前後も出力したほうがいいのかなあ。ちょっと面倒そうだ。 とりあえずW3CのRDF Validatorもパスしてるみたいだし、 これ以上深追いはしないでおこう。
次はCSSでも書き直しますかね。
結構嫌う人も多いらしいです。なんででしょうね。
ちょっと凝ったことをするときは、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)。
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かよ! と、いつも心のなかでツッコミをいれてしまうのですが。