ToDo:
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)
void hello() { int h[4]; h[0] = 'lleH'; h[1] = 'ow o'; h[2] = '!dlr'; h[3] = '\0\0\0\n'; write(1, h, 13); exit(0); }
とかすれば rodata 消せるって話か…
(02:30)
.section .text movl $1, %ebx movl $.LC0, %ecx movl $13, %edx movl $4, %eax int $0x80 decl %ebx movl $1, %eax int $0x80 .LC0: .string "Hello world!\n"
で300Byteだった。
(02:52)
.section .text xorl %ebx, %ebx incl %ebx movl $.LC0, %ecx movl $13, %edx movl $4, %eax int $0x80 decl %ebx xorl %eax, %eax incl %eax int $0x80 .LC0: .string "Hello world!\n"
(02:58)
.section .text leal 13(%eax), %edx incl %eax leal 4(%ecx), %ebx movl $.LC0, %ecx l: xchg %eax, %ebx int $0x80 jmp l .LC0: .string "Hello world!\n"
あとはヘッダをほげほげとかしか無いんだろうけど、
うーんすげえんだよなぁ。
http://home1.catvmics.ne.jp/~msy/tak/alg/minhello.htm
(03:22)
0000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 >.ELF............< 0000020 02 00 03 00 01 00 00 00 54 00 00 00 34 00 00 00 >........T...4...< 0000040 54 00 00 00 00 00 00 00 34 00 20 00 01 00 28 00 >T.......4. ...(.< 0000060 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 >................< 0000100 00 00 00 00 74 00 00 00 74 00 00 00 07 00 00 00 >....t...t.......< 0000120 00 10 00 00 8d 50 0d 40 8d 59 04 b9 65 00 00 00 >.....P.@.Y..e...< 0000140 93 cd 80 eb fb 48 65 6c 6c 6f 20 77 6f 72 6c 64 >.....Hello world< 0000160 21 0a 00 00 >!...<
(04:23)
0000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 >.ELF............< 0000020 02 00 03 00 01 00 00 00 44 00 00 00 2c 00 00 00 >........D...,...< 0000040 54 00 00 00 00 00 00 00 34 00 20 00 01 00 00 00 >T.......4. .....< 0000060 00 00 00 00 00 00 00 00 00 00 00 00 6c 00 00 00 >............l...< 0000100 6c 00 00 00 8d 50 0d 40 8d 59 04 b9 55 00 00 00 >l....P.@.Y..U...< 0000120 93 cd 80 eb fb 48 65 6c 6c 6f 20 77 6f 72 6c 64 >.....Hello world< 0000140 21 0a 00 00 >!...<
ちょうど100Byte
(04:46)
0000000 7f 45 4c 46 48 65 6c 6c 6f 20 77 6f 72 6c 64 0a >.ELFHello world.< 0000020 02 00 03 00 40 eb 09 00 14 00 00 00 2c 00 00 00 >....@.......,...< 0000040 8d 51 0d 8d 59 04 eb 10 34 00 20 00 01 00 00 00 >.Q..Y...4. .....< 0000060 00 00 00 00 00 00 00 00 89 d9 eb 08 49 00 00 00 >............I...< 0000100 49 00 00 00 93 cd 80 eb fb 00 00 00 >I...........<
これ以上小さくするのは無理な気がする。 エルフヘッダ52Byteとプログラムヘッダ32Byteは必須。 ただ8Byteはオーバーラップさせてるので、合計76Byteが必須になる気がする。 コードは全部ヘッダに埋めた。
(05:22)
http://rucila.s43.xrea.com/memo/?date=20050205#p03
ObjC ならラクじゃねってのは面白いなぁ。
(12:44)
lampedusa,diu,graciosa,kaula,aratika,oahu,graciosa,roosevelt,hareoen,pianosa,ustica,long,liberty,burano,nuulua,abumusa,chorao,antao,perejil,nuulua,cies,lanai,aracena
ガイシュツだった
http://slashdot.jp/~MK/journal/373378
(15:19)
0000000 7f 45 4c 46 01 00 00 00 00 00 00 00 00 10 00 00 >.ELF............< 0000020 02 00 03 00 34 00 00 00 20 10 00 00 04 00 00 00 >....4... .......< 0000040 40 cd 80 00 00 00 00 00 00 00 20 00 01 00 00 00 >@......... .....< 0000060 00 00 00 00 >....<
なんで動かないのかしら…
59Byte の hello.asm も同じ方式でやってるぽいので、 落ちる理由は同じってことかなぁ…
2,7c2,7 < マジック: 7f 45 4c 46 48 65 6c 6c 6f 20 77 6f 72 6c 64 0a < クラス: <不明: 48> < データ: <不明: 65> < バージョン: 108 <unknown: %lx> < OS/ABI: <不明: 6c> < ABI バージョン: 111 --- > マジック: 7f 45 4c 46 01 00 00 00 00 00 00 00 00 10 00 00 > クラス: ELF32 > データ: なし > バージョン: 0 > OS/ABI: UNIX - System V > ABI バージョン: 0 10,15c10,15 < バージョン: 0x9eb40 < エントリポイントアドレス: 0x14 < プログラムの開始ヘッダ: 44 (バイト) < セクションヘッダ始点: -1928572531 (バイト) < フラグ: 0x10eb0459 < このヘッダのサイズ: 52 (バイト) --- > バージョン: 0x34 > エントリポイントアドレス: 0x1020 > プログラムの開始ヘッダ: 4 (バイト) > セクションヘッダ始点: 8441152 (バイト) > フラグ: 0x0 > このヘッダのサイズ: 0 (バイト) 28c28 < LOAD 0x000000 0x00000000 0x08ebd989 0x0004c 0x0004c WE 0xfb --- > LOAD 0x000000 0x00001000 0x00030002 0x00034 0x01020 R 0x80cd40
< の方は動いてる。
(17:30)
e_entry と p_filesz がカチあうのでダメ。
あと p_type を e_shoff の位置から始めるのは、 e_shnum と p_filesz がかぶってしまってダメっぽいんだよね。
(17:43)
http://osask.jp/boyaki04.html#bball
作ってみたいが線をひくAPIなんて当然ないよな。
リロケーションが入ったらそりゃダメだろうし、 となると fb に根性でほげほげとかになるのだろうかなぁ。 なんか200Byte程度ならできそうな気がしてしょうがないんだが。
(18:03)
色々偉い人の名刺をもらった気がしてたんだけど、 その場の人の半分以下であった。 名刺っていうのは持ってると 自分から差出すことによって 偉い人の名刺を集めることができるという、 そういう効果があるのではないかと思ったんだけど、 そもそも名刺なんていう慣習が無ければレアリティも発生しないと思った。
(02:31)
1. GBL にはウィルス的性質がある
あなたは GBL のソフトウェアがインストールされている マシンが作成に関わった全てのバイナリについて、 10おくえんの受け取り手を保持したままの GBL で配布する義務があります。 10おくえんください。
2. GBL に強制力はない
あります。 10おくえんください。
3. GBL ソフトウェアに対しては課金できない。
根も葉もない噂です。 10おくえんください。
4-10. 略
とりあえず10おくえん。
(02:38)
i@u ~/g> ls a.out* gdb_hello.tty.gz hello.ld main* ttyrecord core.24510 hello.bin hoge main.c i@u ~/g> rm ttyrecord i@u ~/g> rm core.24510 それをすてるなんてとんでもない i@u ~/g> ls a.out* core.24510 gdb_hello.tty.gz hello.bin hello.ld hoge main* main.c
#define _GNU_SOURCE #include <stdio.h> #include <string.h> #include <dlfcn.h> static int (*old_unlink)(const char *p); __attribute__((constructor)) static void _() { old_unlink = (int (*)(const char*))dlsym(RTLD_NEXT, "unlink"); } int unlink(const char *p) { if (strlen(p) >= 4 && !strncmp(p, "core", 4)) { puts("それをすてるなんてとんでもない"); return 0; } else { return old_unlink(p); } }
どうでもいい…
(22:36)
一回ラスボスまで行ったが倒しかたがわからんまま ダラダラうちあって負けた。
どうやら瓦礫の前でB連打らしい。
あとはやればやる程ボスが難しいパターン出してきてツラくなったんだが。 特に3ボスの最後ぽいのがキチイ。
(00:23)
明らかにプログラムはわかりやすーく という信念のはずの Python の中にあると、 えーその文法っていいのー? やっぱパズルは楽しいよねぇによによ、 みたいなほげほげ。というメモ
(04:05)
セグる。 とよく言ってるんだけど完全な自分造語のようで困る。 便利だからみんな使うといいよ。
どうでもいいけど SEGV の V ってなんやねんという謎を 思いついたのでケータイからメモったのであった。 violation かな。そうぽいな
(04:07)
絶対虫姫さまふたなりっていう同人がでるよな。
それはともかくよく見ると確かに明らかに グラフィックが色々いいかんじだった。
得点表示が段階的に薄れていくんだけど、 あれは1bitのαでやろうと思ったら、 えーとたくさん画像用意して、 A不透明B不透明C不透明A半透明B半透明C半透明とか そんな感じでやってるんかなぁ…
(04:36)
(15:54)
(16:10)
(16:46)
(18:15)
これが 4 users という想像はできんかった。
http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/shinichiro_h/20060905%231157455472
(01:35)
3,4,5プレイ目だと思う。
3プレイ目は今までで一番進まなかった。
4プレイ目は今までで二番目に進まなかった。
5プレイ目はそれなりにへこへこ。
1おくあると2機増えるらしいから それ目指すととりあえずクリアはできるかなぁ。
(01:54)
(17:21)
(00:03)
どのあたりがすごく面白いのかわからなかった 僕はもうダメかもしれない。 無気力無感動無関心。
まぁ筒井康隆は面白いとは思うんだけど、 すごく面白いと思ったことは無いんだよなぁ…と。 そんな感じだった、けど原作はぜひ読もう。
(00:18)
今回のおすすめ内容:
* Code Complete第2版〈下〉―完全なプログラミングを目指して * 自分で作るLinux OS * ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門 * Life Hacks PRESS ~デジタル世代の「カイゼン」術~ * アセンブリ言語の教科書 * ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか * Joel on Software * 物理法則はいかにして発見されたか
すごいいいセンいってる気がする。
おおこれは。
http://ruffnex.oc.to/kenji/text/asmbook/
後で見る。面白かったら買うー。
(03:14)
だいたいサンプルに長方形のヤツも入れてくれよなぁ… これじゃ注意力テストじゃんとか言い訳しつつ見てたら。
"AAAAAABBB", "AAAAAABBB", "AAAAAABBB", "AAAAAABBB", "AAAAAABBB", "BBBAAAAAA", "BBBAAAAAA", "BBBAAAAAA", "BBBAAAAAA", "BBBAAAAAA"
どう見ても正方形に見えてたけどこれ正方形じゃないよ! ちゃんと教えてくれてたんじゃん!
(05:03)
Javaの人のコード見てると よくこんなんで気が狂わないなぁあと思う。 適当に拾ってきた
shinh.skr.jp/t/java.jpg
とか、どこを縦読みするんですか状態だ… IDEがなんとかしてくれてるんかなぁ
(05:13)
http://staff.aist.go.jp/tanaka-akira/textprocess/08-rep.pdf
配列の配列を含みうる配列内の search を再帰を使って実装せよ、に、
flatten を使ってる人がいた
が面白す。
(13:24)
http://d.hatena.ne.jp/d-kami/20060905#1157463927
TopCoder Collegiate Challenge というのがあるのか
(02:53)
自分のはてなアンテナで経由で既に登録されていたサイトを 見てたんですが、 うむここはアンテナに登録するべきだろうと思い 登録しました。
アンテナ→そのサイト→戻るでアンテナに→登録
明らかに何かがおかしいと気付かんかったのか…
(03:49)
もうはてブをアイデアみたいなシステムにしちゃえばいいんじゃ。 ブックマークする時に5ポイント消費して、 上についたブックマーク数ポイントだけ帰ってくるとか。 そんな。
(04:04)
The Qualification Round will contain (10) virtual rooms and five (5) problem sets. The top 200 scorers from each of the five problem sets presented during the Qualification Round will be eligible to compete in Round 1 of the Code Jam 2006.
よーわからんけど5部屋中200位に入ればいいのかとばかり。 ただ普通に解いただけと言える点数で、今80位とかそのへん。 たぶんダメなんだろうなぁ…
反省は色々あるけど。
問題の中に触れるような反省は明日しようと思う。 たぶん忘れるが。
どうでもいいけど Employee なんとかとかあるのが面白いなぁ。 それこそ CEO とかそういうのがいたらかっこいいんだけど。
(16:52)
未来の自分は今の自分より上であるに違いないと信じたい場合、 今偉そうにすることは未来の自分から見れば滑稽に 違いないのは間違いないわけで。
偉そうにするのは好かんなぁと思うとともに、 自分がそうなったら終わりだなぁと。
(17:06)
http://rikunabi-next.yahoo.co.jp/tech/docs/ct_s03600.jsp?p=000870
Gmail に統合ねぇ…いかにも次善なんだよなぁ。
(17:15)
http://www.jmuk.org/d/?path=2006/09/06#d06t01
i@u ~/wrk/bf> cat llr3.sbf (let (x (getchar)) (let (z 10) (let (y 42) (-= x 10) (while x (-= x 38) (while x (-= x 1) (putchar y) ) (putchar z) (= x (getchar)) (-= x 10) )))) i@u ~/wrk/bf> ./a.out llr3.sbf ,>++++++++++>++++++++++++++++++++++++++++++++++++++++++<<----------[--------------------------------------[->>.<<]>.>>,<<<[-]>>>[-<<<+>>>>+<]>[-<+>][-]<[-]<<<----------] i@u ~/wrk/bf> ./bfi.rb =(./a.out llr3.sbf) 239 ** *** *********
BFのためのLL、とは言ってもいいかもしれないね。
http://d.hatena.ne.jp/shinichiro_h/20060703#1151874823
(17:39)
(02:48)
http://alohakun.blog7.fc2.com/blog-entry-438.html
なんかカンファレンスってのも微妙だと思うんですよね。 LL 行けなかったから言ってるんじゃないですが、 人数制限とかで入れない人とか出てくるし。 だいたいカンファレンスって話で何か聞くとかより、 他の人との雑談ができるって方がメリットな気がしますし。
適当に気があうところで呑み会するくらいと、 後はもうこのヒキコモリ時代、 適当にヒキコモリながらできる意思疎通でいいんじゃないかなぁ…
そこでヒキコモリ2.0時代のプレゼンシステムを…とか そういうことを考えてたんだけど。
ヒキコモリだから作るのがめどい。
(03:25)
の例は画像とか音楽とか多いかも…
int SDL_BlitSurface(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect);
まぁ
src->blit(Rect(...), dst, Point(...));
とかか…で、
strong typedef int freq; strong typedef int form; strong typedef int chan; strong typedef int chunk; int Mix_OpenAudio(freq frequency, form format, chan channels, chunk chunksize);
Mix_OpenAudio(freq(44100), AUDIO_S16, chan(8), chunk(4096));
or
Mix_OpenAudio(44100Hz, AUDIO_S16, 8ch, chunk(4096));
なんてのを妄想してて思ったんだけど、 関数呼出し時の中だけで使える一時的な strong typedef とか…
int SDL_BlitSurface(SDL_Surface *src, (int,int,int,int) srcrect, SDL_Surface *dst, (int,int) dstpnt);
auto fp = src->SDL_BlitSurface(srcrect(30,40,10,10)); fp(dstpnt(10,20),dst);
void drawText(string s, (int,int) pnt, (int,int) size); drawText("hoge", pnt(10,20), size(20,30));
単なる named parameter な気も
(17:50)
もにゃどの話は面白いというか うすうすそうじゃないカナーと 思ってたことがやはりそうなんですねーって 感じでとてもためになったのでめんどくさがらないと きっと良いと思いました。
もったいないというか。
逆 IO も面白いです。 しかし Haskell のコード読みは なんで解読にしかならんかなぁ。
(17:55)
そろそろ勉強せんと間に合わん気もする。 まぁ別にいいか。
とりあえず練習問題解いてみたら Python は速度的にキツい問題あるかもなぁとか思いました。
まぁ C++ も思い出しておこう…
(18:09)
は個人的には超反対かな。 「採算だけしかみない」みたいな今のノリもダメダメだと思うけど、 「採算を一考だにしない」ってのも違う。 研究の浮世離れはいいけど研究者の浮世離れはダメ、というか。
(18:56)
(19:41)
http://d.hatena.ne.jp/morchin/20060903#p1
ぱりんどろーむのスペルはあってるだろうか。
あってた。
とにかく、 str == str[::-1] がなるほどなぁと。
(20:46)
前 | 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扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
Before...
_ shinh [そのあたりはとりあえず動作しないんですよね。昔は今よりチェック甘かったのかなぁと思います。やりたいことは私の方針とほ..]
_ shinh [ついでに調べたんですが、 tiny.tar.gz に入ってる ls なんかは動くんですが、これは私が成功した例と同じ..]
_ yupo5656 [面白そうなので私もいろいろ追試してみまーす。PT_LOADのとこのEは、exec-shield効いてないなら不要(R..]
_ yupo5656 [とおもったけどやってみるとあやしいな(そんなんばっか)。もうちょい考えます。]
_ shinh [私が調べた限りでは、 E は必須みたいです。 R はいらないです。 exec-shield は切れてるはずなんですが..]