ToDo:
http://jp.rubyist.net/magazine/?0016-Hotlinks
それはいいとして、 Symbol#to_proc すばらしいじゃん…と。 なんでやろ
(01:08)
落ち着け…フィボナッチ数列を数えてもげもげ
1,1,2,3,5,
memoizeされてないので止まったとか
そうじゃなくて消してから気付いたけど バックエンドを sqlite にした hiki って 手元に置いてあったっけ…
(04:04)
cat **/*.td2 | ruby -e 'm={}; ARGF.each do |l| if l =~ /\((\d\d):(\d\d)\)/ then; m[$1] = m[$1].to_i + 1 ; end; end; m.keys.sort.each do |i| print "#{i} #{m[i]}\n"; end' > ~/timeplot.dat
gnuplot =(echo -n "set term png \n plot 'timeplot.dat' smooth cspline \n") > timeplot.png
つまり朝は寝てる可能性が高いのだろうか。
夜更しさん→寝る→起きる→通学→通学中に考えたこと書く→書くことなくなる
とかそんな
(05:55)
マイナスイオン米というのがあるらしい。
http://www.akitakomachi.co.jp/minusion/
このひとが指導したらしい。
もともと空気中にはマイナスイオンとプラスイオンの2つがバランス良く存在 しています。それが近年の大気汚染・さまざまな電化製品・OA機器から発生す る電磁波・新建材などの影響でプラスイオンが増え、バランスが崩れた空気環 境となりました。マイナスイオンは森林や滝壺付近に多く発生するイオンで、 自然の生み出した「空気のビタミン」と言われており、このマイナスイオンの 環境を造る事で、ようやく本来の空気中のバランスが整います。マイナスイオ ンの効果・効能については正確に明らかにされておりませんが、21世紀の健康 問題や環境問題の鍵を握る「秘密のエネルギー」として専門家の間で積極的な 調査・研究が行われております。
なんか俺が見たのは抗酸化作用があるとかなんだけど。
うーん。
http://www.1htsn.com/sannsei.html
100年前とかを引用するのはニセ科学の特徴らしい。 つかこのサイトが「酸性 酸化」でぐぐって出てくるのは なにごと。
「アルカリイオン水でマイナスイオン(電子)を供給」するのかぁ。 たくさん呑んでビームとかうてるようになりたいな。
どうでもいいけど俺は酸性と酸化ってなんだっけとかいうレベルです ごめんなさい。
http://ja.wikipedia.org/wiki/%E9%85%B8%E5%8C%96%E9%82%84%E5%85%83%E5%8F%8D%E5%BF%9C
いやそれはわかるんだけど、 いやうーんとわからんというか忘れたのは えーと。
何を忘れたか忘れた。
(12:56)
http://b.hatena.ne.jp/entry/http://www.google.com/
http://b.hatena.ne.jp/entry/http://www.yahoo.com/
した
http://b.hatena.ne.jp/entry/http://b.hatena.ne.jp/
自己主張を書くひともいる。
http://b.hatena.ne.jp/entry/http://b.hatena.ne.jp/entry/http://b.hatena.ne.jp/
はてなブックマークをブックマークする人もいる。
うわーんまだいやがる。
http://d.hatena.ne.jp/nuc/20060315
くそうガイシュツもいいとこだった。
(13:12)
(18:43)
http://www.liarsoft.org/diary/20060921.html#20060921p2
ビクっとしちゃったくせに、 さもギリギリ間に合わなかったかのように ボムボタンを押すのが恥ずかしい。
(20:21)
それなりに苦労して作った
char*n[]={ "imix","ik","akbal","kan","chicchan","cimi", "manik","lamat","muluk","ok","chuen","eb","ben", "ix","mem","cib","caban","eznab","canac","ahau" }; main(d,y,m){ for(puts(gets(y));~scanf("%d.%s%d",&d,&m,&y); printf("%d %s %d\n",d%13+1,n[d%20],d/260)) d+=y*365+20*( m%21?m%7?m%99?m%9?m%80?m%24?m%8?m%5?m%4?m%13?m%17?m%59?m&20?m&10? m%6? m%2? m%9-4?14:7 :3 :m%5-4?10:2 :18:16:11:1:13:4:12:15:5:0:6:8:9:17); }
が通らないみたいだ。悲しいね。 リトルエンディアンだからいいと思うんだけどねぇ。
というかエンディアンもクソもなく通ってなさげ。 おっかしいいなーーー
(01:08)
メシを買いにでかけたが、コンビニで気付いた。 夕飯はすでにたべていた。
しかしたらすぱが喰いたかったので買ってしまった。
たらすぱはおいしくなかった。
あたためる時、「レンジの使用はセルフです」と書いてあった。
うちのエレベータは2基ある方と1基あるところがあって、 2つある方は1階と9階に、1つの方は1階に止まっていると思う。 1階で待機するのは合理的だとして、なんで9階かなと思い。 12階だてなので、一番待たせる平均時間の少ない場所は 8階か9階のどっちかだと思う。 この中で9階が選ばれる根拠はというと、 1階までに下りるワーストケースを短くしてるのかなぁ (9-12-1と8-12-1の経路を比較)、 とか思ったけど、ただ適当なだけかもしれないし、 はまじくんのために気をきかせてくれてるだけかもしれない。
2つの方は少し遠くて、1つの方は近い。 上がる時、 昼だと2つの方を利用した方が待ち時間少なめだけど、 夜なら1つの方はたぶん1階に戻ってきてるだろうと 思って1つの方に行くわけだけど、 どう見ても6階で待機してて、これはなんなのかなぁと。 実は自動で1階には行ってなくて夜は下りる人が 上がる人より多いから勝手に下に行ってた説は 棄却したい気分というか昼も1階でよく見る気がするので、 なんらかの理由で移動した後はしばらく待機するとして、 それは次に呼ばれる可能性があるので、 逆方向に走り出したけどやっぱ戻るぜー みたいなマヌケな事態を回避するために、 一定期間待機してしばらく客がいなかったら1階で待機、 みたいな戦略かなぁとか。
とかいうことを年中考えてるのは 思考力の訓練になるとか盲信しているけど、 それはどっちかというと ただの自分がやってることは悪くはないに違いないと とりあえず思ってしまう、プログラマによくありそうな やつかもしれないなぁとも思う。
なんにせよ自転車こいでる時とかは やめないと死ぬと思う。
(03:08)
l=65;*s; main(c,v){ s=v; for(puts(".text\n.global main\nmain:pushl %ebp;movl %esp,%ebp;movl %esp,%esi;subl $999,%esi"); c=getchar(),~c;){ c-62? c-60? c-43? c-45? c-44? c-46? c==91? printf("%cB:cmpl $0,(%%esi);je %cE;",l,l), *s++=l++ :c==93? v=*--s, printf("jmp %cB;%cE:\n",v,v) :0 :puts("pushl (%esi);call putchar") :puts("call getchar;movl %eax,(%esi)") :puts("decl (%esi)") :puts("incl (%esi)") :puts("decl %esi") :puts("incl %esi") ; } puts("leave;ret"); }
適当に書いておく。
(06:58)
http://web.kyoto-inet.or.jp/people/ray_fyk/diary/dr0010_3.htm#001026
via http://gusmachine.blog49.fc2.com/blog-entry-70.html
(01:46)
http://pc8.2ch.net/test/read.cgi/tech/1158259643/47
obj method(arg1, arg2)
みたいな時の obj と method が実質演算子になっているというのと、
つかふと思ったけど Io の 引数書かないでおいてほげほげーってヤツは あれまさに呼び出し側から見えない lazy だなと。
(03:37)
http://www.jmuk.org/d/?path=2006/09/18#d18t01
D の lazy ってメモ化とセットになってるような意味での 遅延評価をやらせるための機能なんだろかとふと。
(03:40)
すれば再帰関数をなんとかできるんじゃないか… とか思ったんだけどなんかダメな気がする。
class memo_t(T) { alias rettype!(T) RT; alias argtype!(T) AT; this(T t) { fp_ = t; } RT opCall(AT a) { if (a in memo_) return memo_[a]; return memo_[a] = fp_(a); } private: T fp_; RT[AT] memo_; } memo_t!(T) memo(T)(T t) { return new memo_t!(T)(t); } class memo_mt(T) { this(T t) { m_ = memo_memo_(t); } rettype!(T) opCall(argtype!(T) a) { return m_(a); } static memo_t!(memo_t!(T) (*) (T)) memo_memo_; static this() { memo_memo_ = memo(&memo!(T)); } memo_t!(T) m_; } memo_mt!(T) memo_m(T)(T t) { return new memo_mt!(T)(t); }
ちなみにテストはされてない。
(04:55)
なんかロクでもないじゃないか
(05:24)
print_string "Web"; ikunai () in web ikunai
と言いつつメモ
http://tabesugi.net/memo/cur/cur.html
つまりメモ化に限らず 再帰関数に別の関数をかますには いじりたい関数がすごいいい形をしてるか、 あるいは duck typing な感じの 型付けの無い言語じゃねえとなぁみたいな。
でも D はなんとかできる気はする。 あ、 functor を基底にすりゃいいのか。 つーか Boost.function がそれだっけ覚えてにええ。
(14:04)
http://dem.dyn-o-saur.com/ が最初から解いてくとか 始めてたので僕もやっている。 コードはほどほどに縮めつつ。
今1008まで。 1008縮める方針は想像つくけどめんどいなーとか。
1005はひどい事実 (http://d.hatena.ne.jp/Ozy/20060323#c1158512539) があるぽいから123Bとかになってるのな…
1007はトップみたいだ。 1001もCだとトップ。 どっちも適当だから誰かがやればすぐ追いつかれるだろうな。
(21:29)
がいるんだけど、前者の方がロマンがある。 でも実はそんなことはどうでもよくて、 なぜかというと、
が大多数だから
(22:41)
みたいな。
http://d.hatena.ne.jp/shinichiro_h/20051225#1135499616
ごくたまに存在を思い出して使うけど割に便利なこともあったりはする。
(23:55)
i@u ~/test/ruby> cat fun_cl.rb def hoge class C end end i@u ~/test/ruby> ruby fun_cl.rb fun_cl.rb:2: class definition in method body
(00:04)
心動くような。
k.inabaさんの説明 http://www.kmonos.net/wlog/65.html#_1549060908 で突然 unsafePerformIO が素晴らしいものに思えたとか。
Haskell はもう <- が。まぁ僕は
23:47 >i< いやHaskellはパズルゲームじゃないの
とか言ってるわけだが。
結構面白いゲームな気はしますけどね。 無限リストゲームとかポイントフリーゲームとか。
あ、
23:50 >i< Haskellはパーサを書く場合のみ実用品ですね
とも。
IOモナド一個も出てこなくて ghciで実行結果確認するようなコードが一番こう Haskellいいなぁと思うとかなんか。
(04:02)
let (>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.) = print_endline "Hello world!"
とか書こうとしたけどダメだった
(11:56)
実装したことないデータ構造があるのはよろしくないので実装しておいた。
h[10000]; s,t,n; main(i){ for(i=100;--i;) for(h[n=s++]=rand()%100+1;h[n]>h[n/2];n/=2) t=h[n/2],h[n/2]=h[n],h[n]=t; puts("before"); for(i=0;i<s;i++) printf("%d\n",h[i]); puts("after"); for(;s--;printf("%d\n",h[0])) for(h[n=0]=h[s]; i=n*2+(h[n*2]<h[n*2+1]),i<=s&&h[n]<h[i];n=i) t=h[i],h[i]=h[n],h[n]=t; }
ヒープソートってこんな感じだよね。
(15:01)
http://alohakun.blog7.fc2.com/blog-entry-459.html
普通にこういう話じゃないのかしら。
i@u ~/test/ocaml> cat maj.def DEFTSUHAI(0, ton, "東") DEFTSUHAI(1, nan, "南") DEFTSUHAI(2, sya, "西") DEFTSUHAI(3, pe, "北") DEFTSUHAI(4, haku, "白") DEFTSUHAI(5, hatsu, "撥") DEFTSUHAI(6, chun, "中") i@u ~/test/ocaml> cat cpp.ml #define DEFTSUHAI(n, e, s) let e = n;; #include "maj.def" #undef DEFTSUHAI #define DEFTSUHAI(n, e, s) s; let id2str = [| #include "maj.def" |];; #undef DEFTSUHAI let _ = print_endline id2str.(ton); print_endline id2str.(haku); i@u ~/test/ocaml> gcamlopt -pp "cpp -P" cpp.ml i@u ~/test/ocaml> ./a.out 東 白
(20:31)
_ 晩ごはん [抽象構文木上では識別子は文字列ですので、「^」で連結すると良いと思いますです。 >|| #load "camlp4o..]
_ 晩ごはん [あー、しまった。上のコード、CVS版のOCaml(Camlp4)じゃないと動かないです。]
_ shinh [うあーなんでもアリですねぇ。しかしどうもうちだと CVS 版 (3.10+dev8 (2006-06-26) と言わ..]
_ 晩ごはん [上のコード、コンパイルするには END;; の前後でファイル分割しないとです。すみません、すみません。ちゃんと書かか..]
_ shinh [あー分割しなきゃいけなかったのですね。よく考えればあたり前でした…そのアドバイスのおかげでとりあえずコンパイル&実行..]
i@u ~/test> ./hello\ world\! ~/test 18:21 ↑今カーソルがここにある
ここでリターンをポチっとなー。
i@u ~/tsst> ./hello\ world\! i@u ~/test> ~/test 18:22
いくら結果不定とはいえそんなとこに出力する子は始めて見たよ…
test が tsst になってるという話だが
(18:23)
http://japan.maxim-ic.com/products/microcontrollers/maxq.cfm
あーハーバードアーキテクチャなのかー。 なんかそらそうかチックだけどなるほどみたいな。
http://japan.maxim-ic.com/appnotes.cfm/appnote_number/3222
んでこれかー。
すげーすげー
すげー
(18:52)
メールアドレスと一緒に、スパム認定されないための キーワードを書いておく。 例えば hamaji _at_ nii.ac.jp (浜地を含まないメールは全てスパム扱いします) とかそんな感じとか。
(19:26)
http://www.creators.ne.jp/dictionary/extension/c.html
ほえー。 組み込み屋が使うようなものなのだろうか…
(19:32)
13^3 = 1^3*955 + 3^3*46 14^3 = 1^3*752 + 2^3*249 28^3 = 1^3*960 + 8^3*41
これ以降はなんか全然見つからん。
(03:47)
なんか書いてて楽しいんだよなぁ。 なんでやろ。 ある程度理由はわかるが。
でもデータ構造の作り方がイマイチよくわからん。 ていうか OO 以外のデータ構造の作り方できんというか。
んでなぜか麻雀の上がり判定など。 もっと面倒かと思ってたんだけど案外簡単なんだな。 syuntsu がひどいとか List.append は遅いらしいとか色々あるけど。
http://shinh.skr.jp/t/agari.ml
あとは役の判定と点数計算とシャンテン数計算かねー。
(02:04)
camlPervasives__$40_166 ってなんやねん。
time seconds seconds calls ms/call ms/call name 22.22 0.06 0.06 592016 0.00 0.00 camlPervasives__$40_166 18.52 0.11 0.05 1271000 0.00 0.00 compare_val 7.41 0.13 0.02 238000 0.00 0.00 camlAgari__v2p_93 7.41 0.15 0.02 135005 0.00 0.00 camlList__sort_295 7.41 0.17 0.02 581 0.03 0.03 caml_oldify_local_roots
(02:27)
(02:30)
(02:37)
agari_patterns というかその inner に一瞬型書いた記憶が。 というのはコンパイルエラーの意味がよくわからなかったので… たしか
let rec inner te headed (cur : pai list list) =
とかとあとどっかもう一箇所入れた気が。 なんとなく1つだけ型残ってるのが気持ち悪かった上に 一度コンパイル通っちゃったらもう別に型いらないよなぁ とか思って消しちゃったわけですが。
(12:46)
type yaku = TSUMO | RICHI | IPPATSU | PINHU | TANYAO | IPEKO | HAKU | HATSU
とか書き始めて思ったけど、 これはダメな気がする。
だって enum みたいなもんですと言ってるけど数値にできないような。
| TSUMO -> "門前清自摸和" | RICHI -> "立直"
みたいなのは型安全だろうがなんだろうがなんかイヤだ。
type tsuhai = E | S | W | N | H | T | C
もダメだなぁと思いながらやってたわけだが。
範囲型か。 Ada がえらいのか。
(13:05)
# type tsuhai = E | S | W | N | H | T | C;; type tsuhai = E | S | W | N | H | T | C # (Obj.magic T)-(Obj.magic E);; - : int = 5
こうしてもいいよね!
(13:36)
http://acm.pku.edu.cn/JudgeOnline/problemstatus?problem_id=1001&orderby=clen&language=1
多倍長処理とかめんどいね。
(18:27)
http://acm.pku.edu.cn/JudgeOnline/problemstatus?problem_id=1001&orderby=clen&language=1
(21:11)
shinh@cf-amd64-linux:~> cat hoge.c #include <stdio.h> void hoge() { puts("hoge"); } shinh@cf-amd64-linux:~> gcc -shared -o hoge.so hoge.c /usr/lib64/gcc-lib/x86_64-suse-linux/3.3.1/../../../../x86_64-suse-linux/bin/ld: /tmp/ccaYZHDk.o: relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC /tmp/ccaYZHDk.o: could not read symbols: Bad value collect2: ld returned 1 exit status
そういうもんなんか…
(00:47)
http://shinh.skr.jp/m/?date=200503
あたりが表示できんくなってたのでパッチ。
defaultio.rb の
diary = eval( "TDiary::WikiDiary::new( headers['Date'], headers['Title'], body, Time::at( headers['Last-Modified'].to_i ) )" ) #diary = eval( "#{style( style_name )}::new( headers['Date'], headers['Title'], body, Time::at( headers['Last-Modified'].to_i ) )" )
よーわからんが動く。
(01:28)
> ここらへん
さてなんか2つにわけた理由というのは 今はもう正確に思い出せないけど今現在の理由としては
まぁみっつめ以外はどうでもいいとして。 どうでもいい僕の日常とか見たい特殊な人は こっち見てもいいよ でも基本的に技術的に面白いことあったら はてなの方に書くよ的な。
どうでもいいけどはてなアカウント二つ操作するのは とてもめんどくさそう。
まぁこういうメモをポンポン置けるのは便利
(04:13)
僕はインストラクションセットとか見てても何もわからん。
shinh@cf-amd64-linux:~> cat hoge.c int main() {
puts("hoge"); puts("hoge");
}
以下略。
なんだ普通じゃん。つーことはコードのバグだ。 オケオケ。
jmpq *12345678(%rip)
みたいな命令は、 12345678 は単なる 32bit の物体で、 実行前にリロケーションされるんだけど、 その先に 64bit のアドレスがえーと
0x500820 <_GLOBAL_OFFSET_TABLE_+16>: 0x955610e0 0x0000002a
まぁこんな感じで置いてあるので、 0x0000002a955610e0 に飛ぶ… って普通に間接ジャンプしてるだけじゃん。
(04:50)
int main(int argc, char *argv[], char *envp[]) { int i; char buf[4096]; void *fp = fopen("/proc/self/maps", "r"); while (fgets(buf, 4095, fp)) printf("%s", buf); for (i = 0; i < 10000; i++) { printf("%d %p %p\n", i, argv[i], &argv[i]); } }
なんか毎回全然違うな。 またなんかセキュリティ関係でありがたい^H^H^H^H^H余計なことされてるんだろうか
普通と逆の表現のしかたをしてみた
まぁわかることはえらい広いということだなぁ。
(05:10)
(15:41)
関数内で、ループのために let rec な関数を もう一個書くことがよくあるけど、 これにつける名前で悩む。 元の関数と同じ名前が一番自然だったりしてね。
k.inabaさんが Python でやってた _ はいいなと思ったけど OCaml にはおこられた。
むー?
http://ocaml.jp/archive/document/intro1.html
iter ねぇ…
むー。
__ はいいらしい。 むしろなんで _ があかんねん。
# let _ x = x;; Syntax error # let _ = 1;; - : int = 1
http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/isle4-05w/mltext/ocaml003.html#toc6
ここの変数の名前にだめと書いてあるなぁ。
_' とか…
(18:45)
OCaml のコンストラクタって関数として扱えないのかしらん。
# type t = A of int | B of int;; type t = A of int | B of int # let x = A;; The constructor A expects 1 argument(s), but is here applied to 0 argument(s)
(22:17)
# type t = A of int | B of int;; type t = A of int | B of int # a = A 1;; Unbound value a # let a = A 1;; val a : t = A 1 # let b = A 1;; val b : t = A 1 # a == b;; - : bool = false
そうなのね… んーと。
(22:55)
それPlaを見てて、
「Wiki を Ruby で作りたいんですが〜」
「それ C でもできるよ」
「C でのやり方を聞いてるんじゃないです!><」
っていうのを考えてたんだけど、 そのそれCの部分で適当に C で 7行くらいで書いた Wiki とか はろうと思ったんだけど、 Wikiめんどくなってやる気失せた…
正規表現無しで作るもんじゃないなぁ…
(04:12)
(15:46)
おっしゃる通り99にすれば、 使うバッファ狭くなりますしセグらないと思いますよ。 envp壊しまくりでしょうから、環境変数の数に依存してると思います。
i@u ~/test> cat tail.c d=10;main(i,b){for(;gets(++i%d*99+b););for(;d--;)puts(i++%10*99+b);} i@u ~/test> gcc tail.c tail.c:1: 警告: データ定義が型や記憶クラスを持っていません /tmp/cciy87bP.o: In function `main': tail.c:(.text+0x3d): warning: the `gets' function is dangerous and should not be used. i@u ~/test> diff =(dmesg|./a.out) =(dmesg|tail) i@u ~/test>
99でも395Byteも入りますしねぇ
(21:01)
前 | 2024年 11月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ Gus [>w3m使いは普通に見れるね あとRSSに普通に現れました。 あとICFP 一人で30th おめでとうございます。]
_ Gus [うお、ICFPはnamasuteさんがいたんですね。表を見てませんでしたすみません。]
_ shinh [あーなるほどRSSですかー。一応適当に中身消しておいたとか。あと30thはめでたいんでしょうか…そちらこそ13位おめ..]