ToDo:
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)
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)
前 | 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 は切れてるはずなんですが..]