トップ «前10日分 最新 次10日分» 追記

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|

ToDo:


2009-09-01

_ at

Ruby の at ってこうなってて欲しいと常々思ってるんだけど、 なんかダメな理由あるのかなぁ。

class Array
  def at(a,b=nil)
    self[a] || b
  end
end

class Hash
  def at(a,b=nil)
    self[a] || b
  end
end

a = [0,1,2]
p a.at(0)    # 0
p a.at(0,3)  # 0
p a.at(3,4)  # 4

Array.new とかの引数使えって話もあるとは思うんだけど、 あれ使っちゃうと pstore に入らなくなるよねたしか… むしろそっちが問題なのかな。

ところで || はダメだな false が要素として入ってると終わる

あとこれを Array と Hash のループにしてかつ Ruby 1.8 で動くようにする方法を僕はしらない

(13:13)

_ ああっ

GBLについての誤解が!

http://route477.net/w/?RubySDLSmallFonts

1おくえんではなく10おくえんで、 平均的な人生を余裕で一生遊んでくらせるくらいの額に設定してあります!

とか書いてる暇あったら wiki だからなおしておいた方がいいのかな…

(16:34)

_ そういえば

自然言語をプログラム言語チックにして欲しいというのはよく思うんだよね。 具体的には英語の that を {} でくくるようにして欲しい。

I prefer the cake {which you ate yesterday} to this cake.

的な。

(18:51)

本日のツッコミ(全3件) [ツッコミを入れる]

_ Gimite [Hash.new(3)はMarshalableなはずですが、Arrayにはデフォルト値とかないっぽいですね。]

_ akai [fetchを使えばいいのでは?]

_ shinh [fetch! こんなものがあったんですね。ゴルフに関係なさそうな長さのメソッドは目に入らないという病気のせいで…今後..]


2009-08-31

_ 自然言語プログラミング

http://www.kmonos.net/pub/Presen/fltv/FLTV.pdf

これは今まで見た kinaba さんの偉業の中でも 最高峰だなぁこれは。 そしてこの偉業に自分の名前が出ててうれしかった。

kinaba さんは詐欺師にむいていると思う。 説明がうますぎて、賛成できなくてもすばらしいと思ってしまう。

賛成できない、というか少しひっかかるのは名前推論の話。 最初見た時はすごいなー面白いなーと思った記憶がある。 でもいつだったかその話をぼんやり思い出してる時に、 微妙にひっかかることがあって、そのひっかかりを今また思い出した。 みんなそうかもだけど、僕こういうのよくあるんだよなぁ。 他の人の発言やら意見を最初ぼんやり流しておいて、 後から replay した時になにかそれに対する考えがまとまってくるみたいな。

で何が賛成できないかというと、 コピペビリティを落としたり、 直交する文を挿入した時に意味を変えちゃうことがあるんだよねコレ。

String serializedString;
Obj objs[10];
for (int i = 0; i < 10; i++) {
  var _ = objs[i].serialize();
  serializedString += $String;
}

とか書いてたことにして、 なんかこうこの時点での objs[i] の値の中身が見たいとして、 適当に他からコピペしてきたデバッグルーチンを コピペではったりするとして、

String serializedString;
Obj objs[10];
for (int i = 0; i < 10; i++) {
  Obj o = objs[i];
  var _ = o.serialize();
  // ここを
  String s = "";
  for (int j = 0; j < o.children.size; j++) {
    if (j != 0) s += ", ";
    s += o[j].debugString();
  }
  printString(s);
  // コピってきたよ
  serializedString += $String;
}

とか、まあ恣意的な例だしこれ自体に関しては デバッグ出力用の関数を Obj のメンバにしろよボケという話なのだけど、 まぁこういう状況は他にもまぁ、あるんじゃないかなぁと思う。

自然言語でも実際これってよく起きる問題だと思うんだよなぁ。 英語論文とかひいこら言いながら書いてた時とか、 わかりやすくするために文の順序とか入れ替えてたりすると、 いつのまにか以前は問題なかった the が 意味がわからんくなる程度に遠くになっちゃったりして。

エラーコレクティングが容易な口語では、 この手の省略ってヤツは鬼強い物体なので、 口語でプログラムできるようになったら こういう名前推論はありかなぁとか思う。 あと、要はミスに気付かせてくれればいいわけで、 IDE が賢くなって、名前が変わった時に $String が色が変わったりして知らせてくれると十分なのかもね。 あるいは名前推論は basic block をまたげないとか そういう制約を入れてしまうか…

ところで上の例はもう一つ本当にウザい話と関係していて、 コピってきた元の例が本当に j でループしてくれていればいいんだけど、 i でループしてたらこれ全部 j に書き換える必要があったわけで、 for の中の 3 つの i=>j はまぁ忘れなかったとしても、 中の if の i=>j は、これは、僕がやったら 50% くらいの確率で ミスる部分なんじゃないかなぁとか思う。 さてこの内側のループのコピペミスに関しては、 これはむしろ名前推論がなされてれば完全に防げるミスだったりするわけですよね… 実際 Perl でコード書いてると $_ についてよく起きることのように思う。

とかなんとか。

every と some は、 sawzall の some はそんな動きしてたっけ、 いやなんかもっと珍妙な動きをしてた気もするが…

http://labs.google.com/papers/sawzall-sciprog.pdf

Quantifier variables are declared like regular variables, but the base
type (usually int) is prefixed by a keyword specifying the form of
quantifier. For example, given an array a, the statement
  when (i: some int; B(a[i]))
    F(i);
executes F(i) if and only if, for some value of i, the boolean
condition B(a[i]) is true. When F(i) is invoked, i will be bound to
the value that satisfies the condition.

全然別物だったよ。 要はループに並列可能性を suggest するためのものだった。

メッセージを共通化する話は、

.maxPriority = .max{|a,b|a.priority<=> b.priority}

っていう文法は普通にいいなぁ。

objs.map{|o|o.children.map{|c|c.doSomething}}

objs.map(&.children.map(&:doSomething))

とか書けるといいなぁ。 途中の話に戻るけど、要はループ変数というのが 最も名前を省略したい物体なのだよね。 あれだけ type 数を増加させる C++ の algorithm なのだけど、 iterator の名前をつけなくて良いのは抗いがたい魅力なのですよ。

どうでも良いのですが、 僕は iterator の変数は i とかつけて j とか k とかにするのは k とかが int じゃないのが混乱を招きそうで嫌いだし、 it は英語の it ぽくてキモいという話もあって iter を採用しているのですけど、 iter の次の、2つ目以降の iterator 型ループ変数名にいつも困っていたのでした。 たいていは外っかわをもう少し説明的な名前にしてたのだけど、 どうしても名前つけにくいものも多くて。

ところがこの間 jter とか kter とかつける文化が 多くは無いもののあるようだと教えてもらって、 これがすごく気にいっているのでした。

変数名として意味の無いものをつけるべきでない、 という主張があって、 tmp とかはいけないとされてると思う。 でも、どうでもいいループの変数、特にループの中で すぐにデリファレンスしてそれ以降使わない iterator 、つまり、

for (vector<Obj*>::const_iterator iter = objs.begin(); iter != objs.end(); ++iter) {
  Obj* obj = *iter;
  // 二度と iter は必要ない…
}

とかそういうものは 本当にどうでもいいんだから、 どうでもいい名前をつけるべきだと思っていて、 これを obj_iter とかつけるのはむしろこう、 意味深で可読性を落としているように、 個人的には思うんだよな。

一方僕は humans.find(you) とかした結果帰ってきた iterator に iter と名付けるのはよくないと思う。 それは単なる名もなきどうでもいい 60億要素の humans それぞれを指す iter じゃなくて、 60億の中のたったひとりのために用意されたかけがえのない iterator なので、 もう少し意味がある名前をつけるべきだと思う。 僕は found とかよくつけるけど。

find といえば、その見つかった iterator を 名付けないのもあまり好きでない。

objMap.erase(objMap.find(o), objMap.end());

とかいうヤツ。 これは冗長でも分けたいケースが多いように思う。

map<Obj*>::iterator found = objMap.find(o);
objMap.erase(found, objMap.end());

なぜかというと、 この found は何かしら貴重なものに決まってるから、 後から log 出力に加えたい可能性、 printf デバッグやデバッガで名前を指定したい可能性が かなり強いと思うから。

これは意識するようになったのは割と最近のことかもしれない。

(05:56)

_ 追加

何個か書き忘れてた。

  • swap する時は tmp って名前をつけてもいいと思うんだよね。
  • Ruby の tap とか 1.9 の引数が帰ってくる mame#p は printf デバッグの観点では .find の戻り値をいちいちローカル変数に入れなくても十分にしてくれる能力を持ってると思う。実際、 Ruby だったら僕はこういう値に名前をつけなくても全然違和感ないし、むしろ自分でもつけない気がする。そのへんは書いてるプログラムのドメインやら言語やらによる部分も多いな。

(06:05)

_ 民主

自称サヨとしてはむしろ民主より左よりでいいくらいなので、 自民よりは民主でまぁいいかなぁという感じだった。 公明も消えるし。

うちの選挙区の自民の人は大変ニートにやさしくなさそうなことを ブログに書いていて、気にいらない感じだったのでそれもよかった。

個人的には民主は結局何言ってるのか わからんとかいう話があるのだけど、 まぁ色々な人から広く支持集めようとするとそんなもんかねえ的な。 僕だけの支持を得ればいいのであれば もっとわかりやすい左でいいわけだけど

(06:21)

_ JVM読書会

http://twitter.com/kmizu/status/3646075084

あるといいなぁ。

というかでも、なんだろう一つのコードを ひたすら読むのって結構疲れるし あまり意味ない時間も多い気がするんだよな。

でなんか思ったんだけど、 最近読んだ/いじったコードを紹介する輪読会があれば 僕は満足なんじゃないかなぁとか思った。

(06:27)

本日のツッコミ(全1件) [ツッコミを入れる]

_ kohls coupons [&#12381;&#12398;&#12424;&#12358;&#12394;&#24847;&#21619;&#..]


2009-08-30

_ 仙台

http://d.hatena.ne.jp/w_o/20090830#p1

僕もこないだ行った時 漫画喫茶でウシジマ君ひたすら読んだな… 仙台にはウシジマ君を読ませる魔力があるんだなぁ。

(17:35)

_ FLTV

ranhaさんの序盤の発表のしかたがたいへん面白かった。 話すことのテーマだけ決めておいて、 聞いてる人にも考えさせる的な。

たぶんテーマの作りかたが色々うまかったんだと思う。

(18:47)

_ const_cast をアセンブリで

http://twitter.com/wraith13/status/3587968262

すごいナイーブにコンパイラ実装したら mov 2回になっても不思議はないような… TCC でも大丈夫なレベルだけど。

(19:28)


2009-08-29

_ ゴルフ場

結局まぁ、現状のタイムアウトはわかりにくすぎると思う。 というわけで OCaml meeting 終わったら なんとかしてみようと思う。 腐ったシステムのせいで意外と変更が大きいので、 今回やるのは見送ることにした…

でまぁ、結論としては、 せっかく合計時間が表示されているのだから、 その時間を time limit として使うのが妥当だろうと考える。 まぁどう考えてもそうなっているべき。

ただ今から昔の問題の意味変えるのも微妙だし、 いずれにせよちょっとややこしい変更が必要なので、 deny exec みたいな感じで別オプションをつけようかなぁと思う。

ややこしいのは、どうしようもなく起動に時間がかかる言語群は 起動時間のためにタイムリミットに一定のボーナスをあげているのだけど、 これが実行サーバの方で超絶アドホックにハードコーディングされてるのが 大変問題で、問題ぽい。

(07:01)


2009-08-27

_ うわーたのしそう

http://www.ipa.go.jp/jinzai/mitou/2009/2009_1/youth/gaiyou/sk-3.html

via http://d.hatena.ne.jp/hogelog/20090825/p1

hogelogさん採用おめでとございます。

あと概要の最初の文が妙にかっこいいな。 よくわからんけど未踏の提案って「私は」で始まるもんなんだろうか。

私はスクリプト言語Luaのメモリ管理機構を改良し、
高速性と省メモリ性を向上させアプリケーション
組み込み言語の利用用途を広げることを提案するっ!!

(01:08)

_ ls ですか

どこが発生源かは知らないのですが。

%backup%~
52.html
6.189-lecture15-cilk.pdf
Current Version
Desktop
Downloaded Albums
Downloads
Mail
News
Pictures
Videos
apfc.js
apt.txt
apt2.txt
arch
bg.gif
bin
cell
cfg
chrome
chrome_printing_test.pdf
cluster08.ppt
contestapplet.conf
contestapplet.conf.bak
cvsroot
dai-21reidai-kyouyou.pdf
dat
diff
driver.ppt
du
extensions_toolstrip.css
foo.doc
hardcopy.0
hellowave.xml
icfp09.pdf
index.html
index.html~
kansai_pm_11.pptx
kiyaku.doc
kousokuka.ppt
lib
log
manifest.json
memo
mnt
nacl_paper.pdf
neta
poker
pokerimgs
pokerimgs.tgz
pouzu.gif
public_html
shot-4k
shot-4k-src.zip
src
t
tcc64
test
tinycc
tinycc.git
tmp
trouble_cases.pdf
wrk

適当に整理しろってかんじだなぁ。 あと core が無いのは人としてはずかしいことではないか

(03:25)


2009-08-26

_ TODO

  • webkit にコミットできるかチェック
  • 評価
  • ゴルフ場の準備
  • web socket であそんでみる
  • GCC とたわむれる
  • syard とたわむれる
  • blokus
  • テトリス
  • TCC は -run をあと少しリファクタリングして push
  • TCC x86-64 asm が出たら見てみる
  • w3m であそぶ
  • chrome の x509
  • chrome key でコピーができると良い
  • chrome key は chrome 側の変更が必要 http://shinh.skr.jp/m/?date=20090823#p01
  • kevil がなんかおかしい件

捨てられそうな TODO

  • bfx は忘れてた
  • ada は忘れてた
  • grub は諦めようかなぁ。コードだけ整理しときたいが

(21:29)

_ hah

適当にいじってみた。

なんかうまく動いてるようでうまくいってないので、 もうちょっとなんかする。 たぶん focus() 呼ぶんじゃなくて click イベント飛ばす感じにした方がいいのかね。 まぁそのたもろもろよくわからん。

(21:30)

_ ssh がよく切れる問題

http://hnw.jp/documents/unixmemo/ssh-keepalive.html

これっぽい。 .ssh/config に書く方法で回避。 これは手軽で良い。

(21:31)

_ デバッグ

なんかこう、もう CPU が速いとか言われてもそんなもん別に欲しくもないんだけど、 デバッグがしやすい CPU とかあれば、 それは数万とかなら買っちゃいそうな気がするわけです。 どういうのがあれば嬉しいかというと、 まぁ hardware data break とか別にそんなに欲しいかっていうとそうでもなくて。

たぶんログ残すような機能があるといいと思うんだよなぁ。 なんか最近のハイエンドの POWER とかって transaction log 取っておいて データぶっこわれたら replay とかできるとか そんな話を聞いたことがある気がするんだけど、 一定の逆再生ができる程度に transaction log が残っていれば、 組込みとかでない環境での reversible debugging とかに わりと現実味が湧いてくるんじゃないかなぁと思う。

まぁそこまでやらんでも、 レジスタに関しては書き込みごとに 前回の値を5つ程度残すであるとか、 メモリを同じサイズで2本差しておいたら メモリ書き込み時に古い値が自動的にもう1本の方に行くとか、 そういう壊滅的なことが起きる前の状況の ヒントみたいなのが残せるといいんじゃないかなぁとか漠然と。

(21:54)

本日のツッコミ(全3件) [ツッコミを入れる]

_ niha [hit a hint で選択されたヒントにたいして何するかですが、選択されたものが何かで変えたほうがいいと思います。..]

_ shinh [href があったら location.href = href くらいはやってみてたんですが明らかにうまく動いてない..]

_ niha [tabs.update だかなんだかしないとページ変わっても履歴に残らないはずですね・・・まあそのうち・・・]


2009-08-25

_ ありがたや

hah きたこれ

http://www.f13g.com/blog/2009-08-24/#yc6b5e71

post 使えーちゅう話ですね。 やるますすいません。

(00:12)

_ hah

うごいた! すごい! でもなんか挙動が気にいらんのでいじる

あと upload できない問題は quick fix したバージョンをあげておいた。

http://shinh.skr.jp/chrome

さっさと local storage やるべ。

(01:16)

_ guns and zips

http://codegolf.com/guns-and-zips

とりあえず1位まで。 あと 10B くらいは手間をかければたぶん縮む。 ただそうでなくても 10B くらいはどこにでものびしろがありそうだから、 そういう細かい調整は今はまだしたくない感じ。 なによりもフラたんなら 400 切るくらいはやってくれるだろうなこれ…

(23:28)


2009-08-24

_ gunzip

http://codegolf.com/guns-and-zips

とりあえず通したぞ…! 実にだるかった

(03:57)


2009-08-23

_ extension

には先生が使ってくれたおかげで問題点が色々わかったりわかんなかったり。

  • タブ移動が欲しいわけだけどこれは background 側で eval する仕組みが必要。これは作った。
  • chrome:// やら chrome-extension:// で extension が生きないのはひどい。
  • chrome-extension で view-source すると死ぬのはひどい。
  • UI がギャグのようにヒドい
  • 設定がいじれないから switch proxy が作れない
  • hah は大変そうだなー
  • caret browsing って webkit 側でコードは見た気がするよねえ

とりあえず localStorage に移行しないとかなぁ。

あと TODO として x509 のエラーがあるんだけど、 これ 64bit debian sid でしか起きてないな…

(04:19)

_ あとは

switch cookie みたいなのができるといいんだよなぁ。 gmail.com でログインしてるべき時と chromium.org であるべき時があってうざい…

(04:43)

_ C のマクロ

http://d.hatena.ne.jp/kazuhooku/20090823/1251005064

kazuhoさんが面倒なので考えてない点について少し。

C のマクロは僕の大雑把な理解では、

  1. 中からではなく外から処理していく。つまり引数の展開は後で起きる。
  2. マクロを展開した後で、 ## があったら適当に処理する
  3. それでもなおまだ他のマクロがあったら展開する。
  4. ただし既に展開したマクロは展開しない(これは大変むずかしいと思う)。
  5. # があったら文字列化する。

とかいう感じじゃないかなぁと思う。 # の順序が遅いので、 たぶん assert.h の assert は __STRING とかで先に assert の中身を文字列化してやってるんだと思う。 見ると実際そうだった。

だから処理としては、

  1. assert(X) が if (!X) assert_fail(__STRING(X)) とかそういう感じで展開される
  2. 残ってるマクロ PICOEV_IS_INITALIZED_AND_FD_IS_IN_RANGE は望み通り適切に評価式になる
  3. __STRING(PICOEV_IS_INITALIZED_AND_FD_IS_IN_RANGE) は外から評価してくので望み通り文字列化

つーかんじでうまくいくんだとおもう

(15:54)

_ OCaml Golf

http://d.hatena.ne.jp/KeisukeNakano/20090821/1250928237

みんなぜひ参加しようね!

(20:46)

_ glibc の man の人が

http://blog.man7.org/2009/07/whats-book-about.html

なにやらでかい本を書いてるらしい。 面白そうです。

(20:48)

本日のツッコミ(全1件) [ツッコミを入れる]

_ kosaki [Michael Kerriskはlibcだけじゃなくman ページ全体ですね。 っ http://www.kerne..]


2009-08-22

_ 休暇

微妙に忙しいというか暴飲暴食の日々を終えて 2週間休暇というか会社にいない系になることに。 2週間いないってのは実は今までなかった気がする。

さっそく激しくゲリでいけてない。

確実にこなさないといけない TODO としては…

  • るびまをさっさと
  • gunzip を実装する
  • webkit のコミッタのセットアップをしてもらう
  • 評価
  • ゴルフ場の準備

やらんくていいけどやりたいこととしては

  • tcc いじり
  • chrome key を適当に
  • web socket であそんでみる
  • blokus

あと全然関係ないがネットブックが欲しい。 ゴルフ場がそろそろ色々キツいので、 そっちに移行できるといいかなぁとか。

(02:41)

_ html5

http://osaka.cssnite.jp/cssnite-in-osaka/event-info/vol18/1137/

これちょっと行ってみたいけど 翌日成田行かにゃならんからさすがにキツいかなぁ。

つか選挙の期限前投票もあるのであったざんねん

(19:34)


2024年
10月
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 31
1.niha(2014-05-24 03:05) 2.shinh(2014-05-24 03:05) 3.niha(2014-05-24 03:05)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h