proglog

主にプログラミングに関する断片的メモ

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

schemeで変数名を式で。データファイル処理

schemeでset!の第1引き数を式にしたい。 もちろん、シンボル、あるいは変数名を返すもの。perlで言うと、例えば、 @arry = ('foo','bar','baz','qux','quux'); for($i = 0; $i <5; ++$i){ ${ $arry[$i] } = $i; } print $foo , "\n"; print $bar , "\n"; pr…

文字でマッチさせるcase文とシンボル

ちょっとはまったのでメモ。 schemeのcase文はeqv?でマッチさせるので数値とかシンボルとかで使うようだ。 しかし、マッチ先に空白を含むシンボルを置きたい時に、なんだかうまくいかない。 string->symbolでその場で変換、というわけにはいかない感じ。で、…

Gaucheのhttp-postとrequest-encoding

またまた、http-postのこと。 第3引き数のbodyを、リストタイプで指定して、例えばeuc-jpで送りたい。 このケースでも、bodyそのものの文字コードは自前で変換なのかな、という話。例えば、以下のようなソースだと、request-encodingにeuc-jpを指定しても、…

GacuheのDBアクセスと例外処理

いわゆるtry-catch-finallyみたいな感じでデータ−ベースコネクションをクローズしようとしたら、guard構文にdynamic-windというのを使うんだろうか。 (use dbi) (use gauche.collection) (let ((conn #f) (query #f) (result #f)) (guard (e ((<dbi-error> e) ;; handle</dbi-error>…

CygwinでGaucheのtrunkをビルドしてみる

結論からいうと、現在のところ、成功していない。trunkのリビジョンは7112現在使っている、リリースのGauche 0.9がそのままシステムにある状態でビルド作業をしている。make時のエラーは以下の通り。 GAUCHE_LOAD_PATH="" GAUCHE_DYNLOAD_PATH="" gosh -l./p…

(続)CygwinでGaucheのtrunkをビルドしてみる、と、http-post

結論からいうと、うまくいった! というか、シンプルにいけるものだったんだ。trunkのリビジョンは7112現在使っている、リリースのGauche 0.9がそのままシステムにある状態でビルド作業をしている。いろいろとあった紆余曲折は、結局リビジョン7111とリビジ…

Gacuheのhttp-postについて

使い方がよく分からない、という記事です。分かっていることを整理環境:Gauche scheme shell, version 0.9 [utf-8,pthreads], i686-pc-cygwinで。 文字列 第3引き数bodyを文字列で渡した場合 (http-post svr path "test=aaaa&test2=bbbbb") phpのprint $_POS…

マクロ:回数制限つきループ

マクロの練習も兼ねて、C言語系のforループに回数制限を付けたものを書いてみる。例えば、"numloop"をその名前とし、20回を制限として、下記のような感じで使えるもの。 (define lst '(1 2 3 4 5 6 7 7 7 8 8 8 4 3 22 14 34 1 2 1 () 1 3)) (numloop 20 (it…

Meadow、cygwinでgist.gighub、gist.elで。

gist.elは defunkt's gist.el at master - GitHubから。 githubのアカウント 鍵の作成と貼り付けは、 Help.GitHub - Generating SSH keys (Win/msysgit)の手順通り。 passphraseは空でいい感じ。 ssh-keygenは、Netパッケージの中のopensshに。アカウントが…

Meadow、Lookup、Hyper Estraier

全文検索システムをwindows、Meadow、apacheで使う。 hΛlの使ってるアプリ関係のメモ(2007-04-29)によると、拡張ElispのLookupを使うらしい。公式サイト 全文検索システム Hyper Estraierからwindowsバイナリパッケージ。展開して"C:\tools\hyperestraier"に…

スクレイピング、例外処理のメモ。

処理系はgauche。 使用したライブラリは、 HtmlPragのversion 0.16。 http://www.neilvandyke.org/htmlprag/htmlprag-0-16.scm 最新版はPLT Schemeベッタリとか書いてあるっぽい。下のソースはライブドアクリップのとあるユーザーのページから、使われてるタ…

sxml、sxpathの使い方をメモ

sxpathは、xpath式を評価して、ノードを取得するクロージャ−を返す。 そのクロージャ−は結果を、sxmlのリストで返す。 ヒットするものが一つでも。 式がヒットしなかった場合は()が返る。 (use sxml.ssax) (use sxml.sxpath) (define xml-data "<html> <body> <h1>xml xmpath</h1></body></html>…

識別子で驚かないために

Schemeを触りはじめて、その識別子の構成の自由さにびっくりした。 というか、識別子なのか、何か文法上の特別な記法なのか、パッと見では混乱することがある。そこで、r5rsを見て、ちょっと整理。 よく分からないのもあるけど。 ;;schemeで可能な識別子 ;;!…

Kahuaをcygwinにインストールしてみる。

結論からいうと、なんとなく、動いてる感じ。 取り敢えず、 サンプルアプリケーションのlambda-booksにログインして、レビューを書いたら反映された。 同じくwiki-ikiで新規ページを作成して日本語で書き込めた。 、ってとこまで。以下は作業記録 cygwinは1.…

howmsplit:引き数処理に継続を使ってみる

gaucheによるディレクトリ、テキストファイル処理。関数の引き数で、定義域から外れるものが渡されたら、すぐさま例外を投げて終わる、みたいなこと。今回は、エラーメッセージの表示と組み合わせてみることに。これを継続を使って書いてみる。変わったのはm…

howmsplit:ファイル名、文字コード

だいたいの雛形。 sjisのcygwin、そのcygwin上のgauche、utf-8のソースで処理対象ファイル名に日本語が含まれているケース。指定されたディレクトリ以下のhowmの1日1ファイル形式のファイルを読み込んで、拡張子をテキストにして出力。 howmファイルはsjisで…

可変の引き数を取る関数の定義

いろいろスタックに積んでいて、今 独習 Scheme 三週間 Teach Yourself Scheme in Fixnum Daysの 14.2 Scheme における amb の実装を読んでた。なにやらマクロが出てくるけど、その中で、 (define-macro amb (lambda alts... `(let ((+prev-amb-fail amb-fai…

el4r、bloggerspotでlivedoor blogにpost

windows xp、Meadow3とcygwin 1.7という環境で、el4r、BloggerPostを使って、ライブドアブログにポスト出来るかやってみた。 これが出来ると随分と楽なんだよなあ。基本的なものは、 BloggerPost: BloggerPost から。 el4r 〜EmacsRubyで楽しいEmacsライフ〜…

tomblooのタグ入力欄のフォントサイズ

僕の環境では、これの文字サイズが小さくなってしまって、ほとんど判読できないくらいになってしまう。 そこでちょっといじった。 (プロファイルフォルダ)extensions/tombloo@brasil.to/chrome/content/quickPostForm.cssこれの #tags box.completion{ font-…

howmsplit:ディレクトリ、fold系

findコマンドの部分をscemeで書くとしたら、file.utilに入ってるdirectory-foldというのを使うとよさそう。 Function: directory-fold path proc seed &keyword lister follow-link?説明を見ると、ほとんどfindコマンドそのもののような感じ。 ディレクトリ…

寄り道継続。処理系による?

schemeの継続について、今把握してることのメモ。 ざっくりとしたもの。 継続とは、call/ccが置かれた、その次の処理。 call/ccはそれを、継続という関数的なものにする。 継続に渡されるのは、call/ccに入った瞬間の環境 言ってみればスナップショット。だ…

howmsplit:コマンドライン、正規表現

現在、howmのメモは、 メモルートディレクトリの下に年次のディレクトリ。 その下に月次のディレクトリ。 その下に1日1ファイル。 という構造になっている。年次ディレクトリを指定したら、その下にあるファイルを全て処理して欲しい。 このディレクトリ処…

howmファイルの切り分け:日付とファイル名

1日1ファイルのhowmのファイル名は現在、2009-04-15.howmとかいう、「YYYY-mm-dd.howm」という形式。 各メモのヘッダ行直下には「[2009-04-15 01:25] 」という、「YYYY-mm-dd HH:MM」でタイムスタンプが入っている。(タイムヘッダとする。) ここから「2009-04-15-…

howm1日1ファイルの切り分け - その2

この続き。ありがたいことに、コメントでアドバイスをして頂いた。 そして模範解答も。 もったいないので、整形した形でここに転記させて頂こうと思います。 shiroさん、ありがとうございます。 (use srfi-13) (define (howmsplit file) (with-input-from-fi…

howmの1日1ファイルを切り分ける。

継続がよく分からなくて、しばらくそのままにしておいたschemeを再開。 ファイル処理辺りからが実用的でいいかも。 で、howmの1日1ファイルのメモを切り分けるプログラムを書きながら勉強してみようかと。やることは単純で、行頭の"="を見たら、新しいファ…

Livedoorクリップのタグを書き換える。xml、json、XMLHttpRequest

windows xp、Firefox3.6、拡張機能のMozRepl、meadowのjs2-modeとmozrepl用のマイナーモードmoz.elという環境下で、色々勉強のためにLivedoorクリップのタグを書き換えるスクリプトを書いてみた。 その途上で分かったこと色々をメモ。XMLHttpRequestでローカ…

TotalToolbarとフルスクリーンモード

TotalToolbarの設定で、ツールバーをフルスクリーンモードで表示させることができた。 ステータスバーの両端もツールバーに変化するので、同じく全画面表示の時に表示させられる。ただ、ツールバー部分が現れるのは、画面の上端にカーソルを持っていった時。…

Open Selection.se.js

firefoxのuserChrome.js下で動くuserMenu.jsを導入。 右クリック、コンテキストメニューに色々機能追加する。が、一番の目的だった、デフォルトでバンドルされてるOpen Selection.se.jsが、なんだかうまく動かない。 いろいろいじくってみたけど、なぜか、in…

Read It Later from LDR.user.js

livedoor Reader から Read It Later に追加する Greasemonkey 書いた - 地獄のサイトシーイングのを、userContent.js下で動かす。 GM互換動作モードに設定すると、なにも触らなくても動作する。そうじゃなくて、GM APIを使うモードで動かす場合。 一番下手…

pdf、foxit reader

firefoxでpdfファイルをクリックすると、foxit readerがどうしても、外部アプリケーションとして立ち上がってしまう。 [オプション]-[プログラム]でプラグインを選択してもだめ。acrobat readerをアンインストールしてからこうなった気がする。 それまでは、…