ToDo:
ちょっと考えるに 普通のパーサジェネレータも スクリプト言語の DSL として書いておけば、 スクリプト言語で軽いチェックをして うまくいきそうだったらコンパイル言語用の パーサ生成して…みたいな感じでできるかな。
パーサジェネレータをスクリプト言語の DSL として書くのは結構大変かもしれないけど…
まぁ普通にスクリプト言語用のパーサも吐けるように すれば似たようなことにはなるけど
(12:33)
今日も無為な一日だった…
有意義なことと言えば hogelog さんの tumblr とそこからのリンクをだらだら読みあさってたというような。
少女ギターを弾くが出てきた。 あれはすばらしい。 つゆダクとか早く終われと思ってたけど今どうなったんだろう。 なんか違うのをまたスピリッツでやってるらしい…
(00:29)
ゴルフ場に入れた。
http://golf.shinh.org/p.rb?FizzBuzz#DOS
適当だけど終了処理入れても 79B だから勝ってるとは思う…
http://labs.cybozu.co.jp/blog/takesako/2007/05/fizzbuzz_x86.html
まぁ DOS っていうか COM って Windows でも Linux でも手軽に書けすし手軽に走るし、 アセンブリ入門には良い気がするなぁ。
(02:04)
で -Wall の挙動が変わるとかは知っといて損はない気がする。
i@u4 ~/test > cat unused.c int main() { int a; return a; } i@u4 ~/test > gcc unused.c -Wall i@u4 ~/test > gcc unused.c -Wall -O2 unused.c: In function 'main': unused.c:3: warning: 'a' is used uninitialized in this function
http://d.hatena.ne.jp/hyoshiok/20080927#p2
via http://homepage1.nifty.com/herumi/diary/latest.html#28
本題については2種類うんぬんについては
管理すべき実体が増えることは管理のコストが増加して、よろしくない。最適化オプシ ョンなしのバイナリで延々デバッグしていたのだが、実は最適化オプションありのバイ ナリでは当該バグに遭遇しないとか
のあたりはギャグで言ってるのかなぁ的なレベルだなぁ… 話が逆でターゲットが組み込みとかならコンパイラのバグ回避とか あると思うけど…
(02:40)
static inline void f(int i) { int* p = 0; int j ; for (j = 0; j < i; j++) { p += j; } for (j = 0; j < i; j++) { *p += j; } for (j = 0; j < i; j++) { p += j; } } int main() { f(10); }
この程度の関数が inline 展開で消え失せたりして、
(gdb) run Starting program: /home/i/test/a.out Program received signal SIGSEGV, Segmentation fault. main () at hard_to_debug.c:15 15 int main() { (gdb) bt #0 main () at hard_to_debug.c:15
とか言われたら結構キツいというか 場合によってはデバッグビルドしなおして gdb で追う方が速いとか言いたいんだけど、 例があんまり適切じゃないからイマイチ。
まぁ僕も gdb 使うとしても たいていは最適化ついたままでやってるし、 たいていのケースで慣れりゃデバッグできるよ〜的な 主張はわかるんだけども。
それはそうと、最近よく妄想するのは、 最適化とか strip かかったバイナリの行を推測するようなツール。 strip されててもその関数のダンプと関数内の落ちた位置を 人間が見たらだいたいどこで死んだかわかるよね。 そういうカンをある程度自動化できないかなぁ的な。
あとスタックトレースって その関数の何分の何まで進んだかとか表示してくれると 上記のような推測がしやすくなるんだけどなぁとかいう。 まぁ分岐あると推測外したりしまくりそうだけど。
(03:00)
http://www.atdot.net/~ko1/diary/200809.html#d27
o = [1, 3, 4, 5, 6, 12, 13, 15] $_=o*',' o.map{|v|sub(/#{v-1}(.)?,(#{v})|.*\d$/){$1?$2+$1:"[#$&]"}} p eval$_
要はこの問題、何がイヤって 長くなるとかうんぬんより条件式が多くなりまくるのが ウザいということであり、ささださんのは2つしか無いので優秀。
で、その意味で僕のコードは 一つしか無いので素晴らしいと主張したいのである。
(05:53)
o.map{|v|sub(/.*\d$|#{v-1}(.)?,(#{v})\b/){$1?$2+$1:"[#$&]"}}
とかじゃないとだめか。左っかはの \b は無くていい気が するが自信なす
(05:58)
書こうと思いつつ書いてなかった。遠い記憶である…
えらい弱い共通鍵暗号を解くというもの。 鍵は単語データベース+ちょっとした操作みたいな簡単な方法で作られ、 さらにどんな鍵だと推測しても文章の後半部分は ほとんど解読されてしまう、という情けない暗号。 だから前半部分の精度が重要。
序盤頑張って n-gram とか単語一覧とか圧縮して埋めてたんだけど、 終わりの方にリロードしてみたらだいぶ前に errata 入ってて 単語一覧取得する関数提供されてるでやんのバーカ、 みたいな感じだった。
まぁでもそれなりに頑張って、18位程度のものができたっぽい。 アルゴリズムは忘れた。
01:48 >i< 僕は色々迷走しましたが 01:50 >i< 文字ごとの2gram&3gramと、確定個所と一致した単語があるとボーナスとかと 、TWLに入ってる単語プラスWikiNameから引っこ抜いてきた単語辞書にある単語が出てき たらボーナス、とかだったと思います 01:50 >i< 何が良かったのかとかよくわからん 01:53 >i< 確かに 3gram デカい割にイマイチ効果なかった気がしてました 01:54 >i< なんかたしか金曜くらいまで 01:54 >i< getWord とかいう関数が与えられてるのに気付かなくて 01:55 >i< 単語リスト埋めるのは無理かなー → 確定した個所の回りから greedy に確定 させてくか → となると 2gram だけじゃ心細いな という感じで 3gram 作った覚えが 01:55 >i< そしてその後 TWL06.txt 圧縮すれば埋め込めることに気付いて 01:55 >i< 埋め込んで満足した後に getWord の存在に気付きました 01:57 >i< あでも単語リスト埋めるのにその圧縮使えたので 01:57 >i< まぁ良かったといえば良かったです 01:59 >i< もっとひどかった 01:59 >i< 06.28.2008 12:23:36 の段階でまだ埋め込んでるから 01:59 >i< 時差考えると土曜の晩すか 02:04 >i< 探索はなんか僕は TWL のリストだけ適用したものに対して 2gram&3gra 02:05 >i< mでチェックしといて、その中で成績良かった100個の後ろに数値くっつけて総 探索とかだった気がします
何言ってるかよくわからん。 たぶん Wikipedia のページの先頭部分を保存しておくみたいなのを やろうとしてイマイチだったんだけど、 うまいことやればそれが結構効くはずだった、 ってあたりがもっと上位との差だったんじゃなかったけか…
まぁそれはともかくコードサイズがなんか事故で大きすぎて、 0点だったのでガツンと rate 落ちてわらった。
面白そうだなーと思ったけど確か忙しすぎて参加できず。
ttp://www.topcoder.com/contest/problem/Textures/1.png
こいう絵の分割をするのね。
これも忙しかった。あとそもそもどうやって解いたもんかぱっと案がなかった。 16パズルみたいな物体だっけ。
暗号アゲイン。今度こそ圧縮ガツンとやろうと思ったんだけど、 まぁなんか忙しかったんじゃなかったっけ。
いわゆるソリティア。 課題が面白そうだったので、忙しかったけど 適当にやってみたらそれなりのができたので、 そのそれなりのを投稿して終了。
http://www.topcoder.com/longcontest/?module=ViewSubmissionHistory&rd=13565&pm=10014&cr=8400878
いつも再提出しまくるのにあまりしてないあたり 気合いが足りてない。 やったこと:
22:51 >i< 超普通で単に先読みするだけですね 23:02 >i< 僕は見えてる範囲でたくさん裏返ってるカードを表にできるのが良い手である 、という感じでやりましたが 23:02 >i< 探索が超適当なので、遅くてすごい浅い読みしかしてません 23:03 >i< 上の方の人は深い読み + その基準で同じスコアの場合でも deck の状態とか でスコアリング、って感じですかね 23:03 >i< 僕もその手のスコアリングみたいなのはほどほどにやったんですが 23:04 >i< 適当なヒューリスティックだとかえって悪くなるばかりで 23:04 >i< よくわからんのでめどくなりました
そうそう考えたアイデアがことごとくローカルテストケースに対して 悪く働いたのでやる気が尽きた。
レイトレーサだったらしい。2週間もムリ。やってない。
面白そうだったのでちょっとコード書いてみる。 画像中の下位ビットに埋められた画像を起こす。 Sample 1 は復元できてるようなノイズあるような… っていうかサイズ全然あってないから、きちんとやらないとなぁ、 と思って、色々アイデアは考えたけど実装せずに風邪その他で終了。
(00:01)
http://q.hatena.ne.jp/1221708568
重箱の隅だけど、えーとなんでダメなんだ…とか考えて ああ for 文とかかとかわかった。 K&R 適当に見るに、式文と do while 文と jump 文は セミコロンで終わるって感じみたいだ。
にしてもこの議論面白いなぁ… 誰か shiro さんの琴線に触れる煽り方をマスターすると良いね。
やっぱ SICP とか読んでみた方がいいのかなぁとか 思った俺は完全に踊らされている。
そこで反抗期としては無理に反論して SICP を読まない必要があるのである。 いや別に反論せずに読まなくてもいいんだけど。
まぁアレかなぁ。 やっぱプログラミング言語が非常にプログラミングに とって重要な要素であるのは当然だけど、 でもやっぱそこどうでもいい、 ってやっちゃうのはちょっと無理があるかな。
縄文人であることは賛成であって、 火の使い方も石器の作り方も improve していこーって フェーズなんだとは思う (どうでもいいけど improve という単語の便利さは異常)。 でまぁ石器の研究に必要な程度の火の扱い方をマスターした子に対して、 文明の本質を教えるために火の起こし方はどの流儀が… とか言われちゃうと、石器こそが文明の本質であると思ってる子としては ふがほげ。
全然よくわからん。
要は OS こそがプログラミングの本質である!!!と 思いつつ言語もほどほどにたしなんでる子が、 プログラミング言語について自分に学ぶべき点があることは自覚しつつ OS の勉強を先行させる、ってのはまぁいいだろみたいな。
でまぁ僕の言いたいこととしては 勉強のネタが時間に対して自乗くらいのオーダーで増えてるから 本当に困るというような。 しかも年々加速してるだろコレ。 となると SICP とかは老後でいいんだよ!! みたいなそういう。
にしても Python とか教え始めてる系の話だけど、 JavaScript は結構いい候補な気がすごいするよなぁ。 俺 JS interpreter (ECMA の仕様のキモい部分は無視して) とか作ったら色々勉強できそう。
まず JavaScript for education という言語を定義してだね…
(22:08)
機械語を直接吐かない言語に本質などない!
ていうか機械語を書け!
機械語を理解して始めて
まず CPU for education とかそういう命令セットを定義してだね…
てかMMIX ってそいう目的か。な? 知らん
(22:13)
(require 'uniquify) (setq uniquify-buffer-name-style 'post-forward-angle-brackets)
が便利だと教えてもらう。わいわい
(23:45)
36.9 。実はこのへんが平熱説。 でも頭痛いからなぁ。
そんなことよりずっと寝てたから やりたかったこと忘れまくった。
まぁそんなことより久々に俺言語作りたい欲が。
(23:39)
http://www-online.kek.jp/Seminar/fpgaseminar.html
via http://d.hatena.ne.jp/natsutan/20080923/1222128240
(11:56)
備忘録
apt -d libflash0c2 apt -d gnash apt -d libflash-mozplugin
こやつらを消さないと Adobe のが動かない。
(22:53)
http://www.nicovideo.jp/watch/sm4572867
すごいなーと思いつつも、 手動でもこの程度なんだな…っていう残念さも。
結局高速弾じゃないとなかなかシンクロを感じられないんだよなぁ。 あと光らせるのはずるいけどいいな
(23:12)
体調悪い上にやるべきことがあって 二日間何も無かった気がする…
やるべきことの方は、 なんかこいうのこんなにできない子だっけ、 って感じで時間がかかった。 なんか丸一日溶けたんじゃないか。 うぐぐ。
(02:16)
http://secretgeek.net/checklist.html
via http://d.hatena.ne.jp/KZR/20080920
これはべんりだ。 なんせ w3m で見たら
A simple checklist for fixing regular problems 1. Enable javascript [Refresh List] :: built with wscg :: submit items:: home (secretGeek)
って教えてくれた!
(21:32)
前 | 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扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ きむら(K) [>てかMMIX ってそいう目的か そういう面もあると思いますが、 ・高水準言語は流行すたりがあり、また言語ごとに記..]