2007-06-01から1ヶ月間の記事一覧

全角を半角に変換

対象文字列.replace(/([0-9a-zA-Z])/g,function (match_str){return String.fromCharCode(match_str.charCodeAt(0) - 65248)})

cgiによる開発テンプレート

一行でブックマークレット書くのがいまいちつらいので以下のようなものを作ってみた。 インデントや改行込みでブックマークレットを作った後、cgiが改行とインデントを削除してアンカーを作成する。 #!/usr/bin/ruby title="選択領域数字半角化" program=<<'…

C言語のトライ&エラーに最適なrungcc

最近LLを使っているせいで、irb,gosh,ghci,perlsh・・・そしてrlwrapにお世話になっている。 何が便利かって?関数の挙動忘れてたり、言語の構文忘れてたりしたときのトライ&エラーが出来る点だ。 そこでGaucheのCGIラッパー作る際にお世話になったのがrung…

時間をtextareaに貼り付ける。

やられた。getMonthは0-11で返ってくるんだ。(http://www.scollabo.com/banban/jsindex/sample/sample_081.html) 平成の日付 javascript:(function(){n=(t=document.getElementsByTagName('textarea')[0]).selectionStart;v=t.value;s=t.scrollTop;t.value=(…

ポインタの配列へのポインタ

C

いかん、本気で忘れてる。まあ、C組んだりしないので問題ないのだが、久しぶりに頭の体操でよかった。 argv[0]を削除するためには、char **argvの値をインクリメントすると第一引数つまりargv[1]以降の配列へのポインタが生成できる。 よく考えたら、(argv+1…

ラッパー作ってみた。

rlwrapに感動して、gaucheでcgiを行う為のラッパーを作ってみた。 標準エラー出力を標準出力にマージし、先頭にhtmlヘッダが無いときに付加する。(本当は標準入力と環境変数を出力しようとしたが力尽きた。) とりあえず終了。 それ以前に、schemeでcgi書く…

外部の名前空間を汚染しない再帰関数

javascript js> (function(x){return x==1?1:x+arguments.callee(x-1)})(10) 55と、同じ関数をgaucheで作ってみる。 gauche gosh> ((lambda (x) (let me ((i x)) (if (= i 1) 1 (+ (me (- i 1)) i)))) 10) 55だめだろ。どうかんがえてもletの使いかた間違え…

readline

gaucheコンパイルなしで履歴が使える!! 速く知っていれば…まあいいや。 aptitude install rlwrap使い方 rlwrap goshしかも、入力時に括弧の対応までとってくれる。なんて便利なんだ。問題点: (car '(1 2))の時に括弧の対応が崩れる。

紫陽花

lambda二回呼び出し。

javascript js> (function(x){return function(y){return x+y}})(1)(2) 3 ruby irb(main):001:0> Proc.new{|x|Proc.new{|y|x+y}}.call(1).call(2) => 3 scheme(gauche) gosh> (((lambda (x) (lambda (y) (+ x y))) 1) 2) 3 common lisp(xyzzy) (funcall (fun…

再帰の印象を言葉で表現してみる

自分 いつも自分が主人公って感じで再帰が好き。周りが見えなくなるから嫌い。 友人 再帰した時点でそっから先の全ての処理が終わってしまう気がして好き。導入でミスると泥沼になるのが嫌い。 人によって違うのね。

紫陽花

関数を束縛する

たぶん、間違いなく「束縛」の用法を間違っている。 javascript js> f=function(x){return x+1} function (x) { return x + 1; } js> f(2) 3 haskell $ echo 'main=print $ f 1;f = \x -> x + 1;' >a.hs| ghc a.hs ; ./a.out ; rm a.* 2マルチステートメント…

テキストエリアの文字列を置換する

以前もらったもの javascript: var f, i, form; var a, b, n; n=0; a=prompt('Replace regexp...'); if (a != null) b=prompt('...with', a); if (a != null && b != null) { for (f=0; f

最初のテキストエリアのカーソル位置に日付を挿入するブックマークレット

javascript:(function(){n=(t=document.getElementsByTagName('textarea')[0]).selectionStart;v=t.value;s=t.scrollTop;t.value=(v.substr(0,n)+(f=[(d=new Date()).getFullYear(),d.getMonth(),d.getDate()].join("/"))+v.substr(n,v.length));t.scrollTop…

form F1のtextarea T1のカーソル位置に時間を埋め込む(FF専用)

練習用に作った。まだアクティブな(もしくはフォーカスのある)テキストエリアを取得する方法がわからない。 javascript:(function(){dt=new Date();d=document.F1.T1;n=d.selectionStart;v=d.value;t=d.scrollTop;d.value=(v.substr(0,n)+(s=dt.getFullYea…

外部プログラムをロードする

$ echo -e 'a=function(){print("helloworld")}' > a.js $ js -e 'load("a.js");a()' helloworld

spidermonkeyの組込み関数

http://developer.mozilla.org/ja/docs/Introduction_to_the_JavaScript_shell 使える組込み関数 print() readline() load() か。ファイル扱いたい!fopen(),read(),write(),fstat()がほしい。まあ、前よりよっぽどましだけど。今の状態でやっとjavascript勉…

すなば

再帰無名関数

javascriptで再帰無名関数を使う為にはarguments.callee()だ。 js> (function(a){return a!=0?a+arguments.callee(a-1):0})(5) 15 参考URL http://d.hatena.ne.jp/amachang/20061204/1165192033

環境変数を参照する。

spidermonkeyで環境変数を参照するにはenvironmentだ。 これでQUERY_STRINGがとれれば(笑 js> environment['LANG'] ja_JP.eucJP環境変数を変更することができる。 $ js -e 'environment["A"]="TEST";print(environment["A"])' TEST外部コマンド呼び出せたら…

標準入力からデータを得る。

spidermonkeyで標準入力からデータを得る方法はreadline()だ。 一行づつなので再帰無名関数を使ってみたが、readlineの仕様上EOFまわりがうまく処理できない? js> (function(){return (b=readline())?b+"\n"+arguments.callee():""})() line1 a b c line2 c…

sprintf("%04d",12)と同じ動きをする。

ちょっとはまったのでメモっておく js> ("0000"+12).substr(-4) 0012こんな関数まで作りそうになった自分が恥ずかしい js> (function(a){b=a.toString();return ("0000"+b).substr(4-b.length,4)})(12) 0012

引数を取る

spidermonkeyで引数を取得する方法はargumentsだ。 $ echo 'for(i=0;i

ジン

λ式相当?

以下の二つは等価 gosh> (lambda () (print "OK")) #<closure #f> gosh> ((lambda () (print "OK"))) OK #<undef> gosh>js> function(){print("OK")} function () { print("OK"); } js> (function(){print("OK")})(); OKクラス js> function A(){this.a=1;this.b=function(){pri</undef></closure>…

sqliteをコマンドラインで使う。

以下はそれぞれ データベースの作成、(タブ区切り)データのインポート、データの検索、インデックスの作成。 最初の行はtestdbが無くても作られる。 $ sqlite testdb 'create table tbl(ai varchar(11),ky varchar(12),kz varchar(12));' $ sqlite testdb …

(続々)Cでワンライナー

で、出来た。 問題点は、文字列中の\nの¥をエスケープしなくてはいけないこと。 $ echo -e '#include<stdio.h>\nint main(){printf("helloworld\\n");return 0;}'|gcc -Wall -x c -;./a.out;rm a.out helloworld</stdio.h>

echoのオプション

ぐぁ。echoのオプションで-nはよく使ってたが、-eがあったとは。猛省。 id:yshl さん、ありがとうございました。 e バックスラッシュでエスケープした文字を解釈するようにする。文字の意味は: \a アラート (ベル) \b バックスラッシュ \c 最後の改行の出力…

マルチブート

どうもlinuxのCDとCD(DVD)ドライブとの相性が悪くlinuxをどうしてもインストールできないマザーが一台ある。 困り果てて、HDDにisolinuxをコピーして行うタイプのインストールを行おうとおもったが、http://debian.fam.cx/index.php?install#content_1_33 …