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

ruby1.9でmerbを使う

merb-genでエラーが色々出てしまう。 一応、merb-genが実行できるところまでは修正できた。 1.9に対応していないところ String#to_aがない require 'sha1'にしている。 1.9だとrequire 'digest/sha1' SHA1.newに引数を渡している。 1.9だとDigest::SHA1.new…

コードリーディング用の設定

こんな感じの状況 コードリーディングをしたい。 1つのファイルをみるだけだとview-modeを使えばいいかも。 複数のファイルを楽にたどりたい。 そうなると、どうやって読みたいファイルを開くかが問題。 その上、anythingで探せるほどファイル名なども覚えて…

texの環境構築2

コメントでYaTexが便利ということを教えてもらいました。ありがとうございます。 さっそく、インストールしてみました。 インストールしてから気づいたのですが、ubuntuでもpackageが用意されているみたいです。*1 download http://www.yatex.org/yatex1.73.…

LaTexの環境を整える。

texとか使ったの初めてなので、何か面倒なことをしているような気がします。 インストール http://d.hatena.ne.jp/hayamiz/20081111/1226403768に書いてあったものをapt-getでインストールした。 (何を入れたらいいのか分からなかったのですごい助かりました…

zshの補完関数が書きたい

$fpath以下にあるファイルに補完の設定が書いてあるらしい。 補完設定用のファイルに楽に移動したい 移動用にanythingを使った関数を作成する.(rubyも使ってる) (defmacro tiny-anything-function-maker (fname name shell-command actions) "fname: generat…

ChangeLogでtodoの管理

参考 http://d.hatena.ne.jp/yaotti/20081127/1227787197 http://d.hatena.ne.jp/higepon/20070105/1168007554 ChangeLogにtodoを書く。 以下のような形式で書く。 表記 意味 □ をやる(todo) ■ をやった。(done) やる=□、やった=■で変換できるようにしてお…

problem12

もっと速くできそうな気がするけど (define (triangle-number k) (/ (* k (+ k 1)) 2)) (define (enough-have? x kinds) (let ((sx (floor (sqrt x))) (half (/ kinds 2))) (let iter ((n 1) (c 0)) (cond ((or (= n sx) (= c half)) (= c half)) ((zero? (m…

(sicp53)問題4.14,4.15

4.14 make-lambdaで取り付けられたtag'procedureを基底の処理系が評価する手段をもって無いためerrorになる。 以下詳しく (記憶が確かなら)define、set!を使わない箇所では、副作用を利用していない。 なので、置き換えで評価される様子を表すことができる…

(sicp54)問題4.16

カッコひとつ足りないバグに2時間くらい費やした。 4.16 a ただcheckをつけるだけ(わかりやすいように手続きでくくる) (define (lookup-variable-value var env) (define (unassigned-varriable-checker pair) (if (eq? (cdr pair) '*unassigned*) (error …

別のPCにrubyの環境を作った。

friが動けばいい。 install sudo gem install fastri -y emacsの設定 "fri -l"でmethodの一覧がとれるのでcandidates-in-bufferを使うと楽に候補が設定できる。 fastri-serverはemacsの中で立ち上げることにした。 出力結果をansi-color-apply-on-regionで強…

(sicp51)問題4.13

一度束縛した変数の束縛を取り除く構文make-unbound!を作る。 問題には、すべての環境から取り除くべきか、現在の環境のみから取り除くか選べと書いてあった。 現在の環境からのみ取り除く方がいいと考えてそのように実装した。 (現在の環境以外の束縛も取…

(sicp51)put-getの修正と問題4.11〜4.12

以下のことに気づいたので修正 put/getの引数の順序はop, typeの順だった(前のはtype, op) install-evalの部分を少し変える必要がありそう。*1 あと、evalのgetの部分も あー、変えなくていいのか。(get 'eval 'if)とかはif形式のオブジェクトに対するeval…

(sicp50)m4.4〜m4.8

追記 putとgetの引数の順序が逆だった。後で直す。 i 以前書いたput/getのファイルがどこかにいってしまったので書き直した 本当はdolistとかdotimesとかdoとかもつくろうとしたけど、飽きた。 一応まともに動く。 ;;; M-Eval input: (define (mymap proc l)…

久しぶりにocaml

ocamllexとかocamlyaccとかを使う前に、ocamlの文法とかを忘れてしまっているような気がする。 何か問題を解いて思い出そう。 与えられた正の整数のローマ数字表現(文字列)を求める関数roman(I = 1,V = 5,X = 10,L = 50,C = 100,D = 500,M = 1000)…

字句解析とか構文解析とかしてみたい

lexとyaccというプログラムを使うみたい。 yaccを検索してみた $ aptitude search yacc p btyacc - Backtracking parser generator based on bya i byacc - public domain Berkeley LALR Yacc parser ge p cl-yacc - parser generator for Common Lisp p ml-…

一度使ったコマンドは楽に使いたい。

M-xで呼び出したコマンドは自動的にファイルに保存され、ファイルの内容をanythingで選択できるようにする。選択できるコマンド候補の追加には、M-xで呼び出すかファイルを直接修正すればいい。 (defun write-string-to-buffer (file str) (let ((buf (find-…

手軽にfontの色とか変えてみたい

faceの設定をいじれば良さそう。 kordersでfaces.elの中を覗いてみた 大体、分かったと想う。 describe-faceでどの様なattributeで設定されているか確認する。 face-listで現在使用しているfaceがlistになって帰ってくる face-attributeで指定したfaceのattr…

l99をschemeで解いてみる

cadrグループの人の日記でl99を知ったのでschemeで解いてみる。 P26あたりから難しくなってきた。 P26 組み合わせを作る問題*1 最初に書いたもの(nCnとnC0には対応してない) (define (combination n l) (if (<= n 1) (map list l) (apply append (unfold (…

今日したこと

gaucheの補完のelispを改良 cachefileを作成することにした 1回目以降は読み込みがはやくなった。 (存在する場合は)定義してあるファイルに飛べるようにした pipeとforkの使いかたを知った rubyのforkはblock内が子プロセス pipeとfork 自分の出力をフィル…

気づいたことをまとめる

今日分かったこと gaucheで式を一つだけ実行 module-exportではすべての手続きを調べられない aproposで手続きを調べられる nkfで"--overwrite"を使うと楽に文字コードを変更できる findの"-print0"と対応するのはxargsの"-0" ファイル名に空白が使われてい…

gaucheの補完用のelispを書いたりした

説明とか(あとで書く) 作ったもの get-procedure-list.scm gauche-completion.el get-procedure-list.scm (use file.util) (use srfi-1) (define (%filter file) (guard (e (else '())) (call-with-input-file file (lambda (in) (port-fold (lambda (line…

久しぶりなのでハフマン木のところを復習してみた。

時間を決めて、コードを書いてみた。 関数を作る度にテストしていったら、とても楽に進められた。 1時間ちょっとでハフマン木の部分の問題が全部解けた(と思う。計算量みつもりとか以外) 書いたコード (define (make-leaf symbol weight) (list 'leaf symb…

8パズルを解くプログラムを作ってみた

もっと効率の良い方法とかあるかも><。 (use srfi-1) (use gauche.sequence) ;;[1 2 3] ;;[4 5 6] ;;[7 8 ()]という形にしたら終了 ;;※空白は'()で表す。 ;;※上の表の状態はプログラム上では「(1 2 3 4 5 6 7 8 ())」と表す。 (define (make-state l) (if …

コードを書くときに2つのファイルを使うと良いような気がした。

昨日の続きです 関数の実行結果を調べたい時に、移動しなければいけないのが面倒くさい。 shellの環境に関数の情報が入っているのだから、別なファイルに実行用のコードを書いても良いような気がする。 そんなわけで以下の2つのファイルを同時に使って作業す…

javascriptとemacsで対話的に開発がしたい(html使わないです><)

schemeでプログラムを書くとき、少し関数を書いてから実行して結果をみるとかいうことをよくします。 そんなことをjavascriptでもしたいと思いました。 なので、てきとーにelispを書いてみました。 準備 javascriptのインタプリタが必要す。(eg.spidermonkey…

anythingをカタカナひらがなキーに割り当てれば良いような気がした

(global-set-key [(hiragana-katakana)] 'anything)

parenthesis.elのコードをいじってみた(minor-mode版の作成)

parenthesis.elのコードを読んで、macroを使えば手軽に定義できるようになるんじゃないかなとか思いました。 そんなわけでてきとーにいじってみました。 あと、minor-modeにもしてみました。 parenthesis.elについて http://d.hatena.ne.jp/khiker/20080118/…

xrandrで外部出力先を変更できること初めて知った

他にも機能が色々あるみたいだけれど、取り合えず使う機能だけ。 何も引数を渡さないと変更するときに必要そうな情報を見ることができる。 "--output"で外部出力先を指定する "--mode"で解像度を指定する "--off"をつけると指定した外部出力先の機能がoffに…

現在のカーソル位置の単語をdescribeで調べる

gaucheだと(describe 何か)で調べることができる。 こんなものを定義しておくとらくかもしれない。 (defun scheme-describe-current-word () (interactive) (let ((buf "*d*")) (with-output-to-temp-buffer buf (let ((target (substring-no-properties (cu…

schemeで例外処理ってどうするんだろう?

例えば、与えられたリストをすべてかけた値が欲しいときなどに、0を発見したら処理を中断して0を返すようにしたい。こういうときに、例外が使えると便利そう。 ocamlだとこんな感じ exception ZeroFound (* 例外の定義 *) let product l = try List.fold_lef…