2006-01-01から1年間の記事一覧

Vim を強制終了する方法

":q" や "ZZ" など、Vim を終了するコマンドは幾つかあるんですが、Vim コマンドの他にも終了の方法があります。:mzscheme (exit) :perl exitなど、外部言語の終了コマンドを使う方法です。これらは ":q" などとは異なり、編集中のバッファがあろうがお構い…

モジュールをロードしようとするとエラーが出る件について

Vim+MzScheme で (require (lib "url.ss" "net"))と、ライブラリをロードしようとしたんですが、このようなエラーが出ました: build-path: expects type <path, string, 'up, 'same> as 1st argument, given: #"d:/MzScheme/collects"; other arguments were: "net"デフォルト (コンパ</path,>…

Array#inject を Scheme 的に -> map 関数の実装

id:reinyannyan:20061127:p1 で取り上げた SICP の accumulate 関数は、まだ Lisp の肝であるリストが紹介されていない段階のものでした。2章に入り、リストを用いた、より汎用的な実装が示されていますので、前回のアップデートも兼ねて見ておきたいと思い…

Range#inject を Scheme 的に -> 積分への応用

SICP を読んでいます (まだ 1 章の高階関数のところです)。練習問題で Smalltalk や Ruby (や prototype.js) の inject メソッドと同等のものが出てきましたので、ピックアップしてみたいと思います。以下の様な、a から b までの範囲の数列の総和・総乗など…

Scheme で vim バッファにテキスト出力

Vim に Scheme インターフェースを追加して真っ先に確認したかった事が、バッファにテキストを追加する方法です。新しい情報を画面の末尾に追加していく、という至極当たり前の作業なんですが、これがなかなか難しかったのでメモしておきたいと思います。 ま…

ソース・パッチをリモートから直接展開・適用する

Vim

少し以前から Lisp を学びたいという衝動が高まってきまして、Vim に MzScheme インターフェースを追加することにしました (emacs への乗換えも一時検討したんですが、あっさり断念しました)。ソースを持っていなかったため、一からパッケージを取ってくると…

LDR のメモリ・リーク問題について

!

フィード一覧の全フォルダを一気に開くスクリプトを書こうと思い、ソースを読んでいたら、ある問題にぶつかりました。ツリー表示における各ルート (フォルダ) は TreeView というオブジェクトによって表されています。そして、それらは後からの参照のために…

LDR フィード絞込みスクリプトのアップデート

LDR のフィード一覧を絞り込み表示するスクリプトをアップデートしました。細かい変更です: #{ expression } を複数指定した場合に AND 検索になるように 絞込み後に前後のフィードのナビゲーション・リンクをアップデート します。どうぞご利用ください。

アクセサ関数

同じオブジェクトの同じ要素に何度もアクセスするような場合に便利かなと思って、作ってみました。 function accessor(object, key, initial) { if (arguments.length == 3) object[key] = initial; return function() { return (object[key] = arguments.le…

livedoor Reader と livedoor clip の連携機能について

Tip

コメント欄が無いようなので…。 確かにクリップとして残しておけるのは便利なんだけれど、「あとで読む」は読んだ後に削除する場合が多いので、「Shift + c」した画面から削除できるといいなー、と思ったり。 ソースを読んだだけですが、出来ますよ。Del キ…

JavaScript でプロファイリング (シンプル版)

Game of Life のアルゴリズムの問題点を探ろうと思い、以前作ったプロファイラにかけて調べることにしました。が、このプロファイラは prototype.js (を自分用に改変したもの) を対象にした内容だったため、ライブラリを使わずに書いた Game of Life では使…

Conway's Game of Life

via CodeGolfGame of Life という有名なゲームがあることは辛うじて知っていたんですが、実装については全く分からずにいました。個人的にこの手のクイズは大の苦手で、まともに解いたことが無いという悔しさと、「生命」というテーマが面白そうだったことも…

本日の livedoor Reader のバージョン・アップについて

!

大きな変更に二つほど気付きましたのでご報告しておきます。一つ目は、フックのシステムが刷新されたこと。フィードの表示前後などに実行されるフックが、以前はグローバル変数としてアクセス出来たんですが、出来なくなりました。すなわち、GM スクリプトで…

LDR のクロール頻度が低い?件について

以前から指摘されていることだと思うんですが、LDR ではフィードの更新が反映されるのが結構遅い場合がありますよね?例えば、久しぶりに更新があったと思ったら一週間も前の記事だったり、といったことが割とよくある気がするんです。そこで、「更新日時の…

livedoor Reader でフィード一覧を絞り込み表示 [更新:20061115]

[20070223] 再アップデート版をファイルとして公開しました。id:reinyannyan:20070223:p1 をご覧下さい。 id:reinyannyan:20061006:p1 で実験的に作ったフィード一覧絞込みスクリプトを改善しました。フォルダ単位でのフィルタリングの他に、任意の JavaScri…

livedoor Reader の新着記事数と購読者数の単数・複数形を適正化する

気にする方はあまりいないと思いますが、フィードの頭に表示される "1 users" とか "2 entry" とかを文法的に正しくするブックマークレットです。 javascript:(function(t){t.innerHTML=t.innerHTML.replace(/(entr)y/,"$1[[#{size==1?\"y\":\"ies\"}]]").re…

主語を入れ替えるか目的語を入れ替えるか

ちょっとしたスクリプトで、"+foo" という文字列を "OKs" という配列に、"-bar" という文字列を "NGs" という配列に入れる、という必要が生じました。 var OKs = [], NGs = []; "+foo -bar +baz ...".replace(/([-+])(\S+)/g, function(_, pm, value) { if (…

Mochikit で非同期な処理を逐次実行

hail2u.net - JSONPに同期リクエスト snippets from shinichitomita’s journal - 非同期処理をシーケンシャルに扱うためにを読んで、以前 prototype.js ベースでメソッドを逐次実行する仕組みを作ったのを思い出しました (id:reinyannyan:20060223:p1, id:re…

LDR での『はてなブックマークエントリー情報取得API』利用について

Tip

以前から利用していた『ブックマーク件数取得 API』 (http://b.hatena.ne.jp/xmlrpc) と組み合わせて、ブックマークされている記事のコメントを自動的に表示するようにしてみました。 スクリプトの概要は、このようなものです: // 全記事のブックマーク件数…

livedoor Reader のテンプレートをカスタマイズ

Tip

LDR では、フィード一覧や記事など、あらゆるデータの表示が JavaScript+HTML のテンプレート・システムによって行われます。この HTML 側のテンプレートを変更することで、表示を自在にカスタマイズすることが可能になります。 全てのテンプレートは TEXTAR…

:subsub (更新チェックされないフィードを検出) コマンドの修正

id:reinyannyan:20060530:p2 で、登録したもののフィード一覧に出てこないフィードを検出するコマンド (:subsub) を作りました。 最近の LDR のアップデートにより、このコマンドで表示されたフィードを開くことが出来なくなったため、修正したいと思います…

ldr2gmail.user.js

Tip

アイディアのみですが…。ウェブ上でメール・フォームとしてメール送信のインターフェースを提供している ISP がありますよね?それを利用して、現在 LDR で読んでいる記事を、保存・検索用あるいは後で読む用に gmail (かどこか) に送る、ということを思いつ…

livedoor clip の JSONP API からタグ・クラウドを生成するデモ

id:secondlife さんの AsyncJSONP (参照: MochiKit で JSONP の利用) を使って、MochiKit の勉強がてら作ってみました。livedoor clip の JSONP API を利用してタグ・クラウドを生成する、というものです。最近どんなキーワードの話題が注目されているかが分…

LDR のスクリプトのバージョンを表示するブックマークレット

メッセージ・ボックスに現在のバージョンを表示します。 javascript:message(["Version",Array.from(document.getElementsByTagName("script")).map(function(v){return v.src}).filter(function(v){return /\d\./.test(v)})[0].match(/\d+(?:\.\d+)+/)[0]].…

デスクトップに livedoor Reader

Windows のアクティブ・デスクトップにウェブ上のページを表示する手法については以前から分かっていたんですが (META リフレッシュ / location.href によるリダイレクト、インライン・フレーム) 、アクセス制限により外部スクリプトでの拡張が出来ない、と…

Re: LDR、フィード描画完了フック

id:brazil さんのエントリーを受けて。 complete_printfeedが、ありそでない。 この一文を見た時、「なるほど」と思いました。と言いますのは、livedoor Reader で特定のサイトや記事の本文を非表示にするの中で、描画完了のフックが無いことに気付いていな…

LDR で記事データを動的に加工する -> 全文取得への応用

これまで、イベント・フックを使ってフィード表示を制御する方法について何度か考えてきました: livedoor Reader で記事のリンク先を書き換える livedoor Reader で特定のサイトや記事の本文を非表示にする 今回も同様の主旨なんですが、テンプレート・クラ…

livedoor Reader で既読記事を非表示にする

livedoor Reader で特定のサイトや記事の本文を非表示にする に関して、はてブコメントにて表題のアイデアを提案していただきました。ちょうど、サイトの既読判定をスクリプトで行う手法が考案されて (g:subtech:id:secondlife:20060812:1155379084 id:brazi…

for ループ以外での in の利用

MochiKit で if (uri in allScripts) {みたいなテストの仕方を見て、最初意味が分かりませんでした。そこで、まさかと思いながらも試しに alert("close" in window);としてみると、true が表示されました。う〜ん、便利ですね。てっきり in はオブジェクトの…

LDR でコンテンツ・フィルタ (Part 2)

id:reinyannyan:20060714:p1 で、記事本文やタグ等を調べて不要な記事を削除する方法を考えました。今回はさらに、もしフィードが不要な記事しか含んでいなかった場合、それをフィード一覧から自動的に削除する方法を考えてみました。(不要な記事だけを含む…