トップ «前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:


2010-06-30

_ can't map file

Mac は不思議がいっぱいだ!

まず ld が表題のエラーを出す件は、 これはまぁ普通に仮想メモリ空間が足りない。

http://www.opensource.apple.com/source/ld64/ld64-97.2/src/ld/ld.cpp

uint8_t* p = (uint8_t*)::mmap(NULL, info.fileLen, PROT_READ, MAP_FILE | MAP_PRIVATE, fd, 0);
if ( p == (uint8_t*)(-1) )
	throwf("can't map file, errno=%d", errno);

どうしたもんかなーというと、 正直 release build するくらいしか短期的な方法は思いつかん。

さて中期的な方法を考える。 どうせ mmap できないファイルなんて archive に決まってる、 そして archive を全部一気に mmap する理由とかどこにもない。

OK だいたいわかった。

Mach-O の .a はたぶん最初のエントリとしてなんかテーブルが入ってる。 これはたぶん ranlib が作るエントリだ。 名前が __.SYMDEF ならこのエントリになるっぽい。たぶん。 このファイル名のファイル作って突っ込んだらどうなるだろうね。

でまぁ Reader::getAtoms やら Reader::validFile やらは、 このエントリの列を iterate してるわけだなー。 iterate してる最中は、

template <typename A>
const class Reader<A>::Entry* Reader<A>::Entry::getNext() const
{
	const uint8_t* p = this->getContent() + getContentSize();
	p = (const uint8_t*)(((uintptr_t)p+3) & (-4));  // 4-byte align
	return (class Reader<A>::Entry*)p;
}

てな感じなので、 ちょぼちょぼ munmap mmap がはさまるような構造にしてやればいいんじゃないかねー。 やってられるかー

(00:40)

_ とりあえず

すげえ雑な方法で自分のところではリンクは通るようになった。

diff -ur ld64-85.2.1.orig/src/ld.cpp ld64-85.2.1/src/ld.cpp
--- ld64-85.2.1.orig/src/ld.cpp 2010-06-29 07:54:08.000000000 -0700
+++ ld64-85.2.1/src/ld.cpp      2010-06-29 09:15:37.000000000 -0700
@@ -3088,12 +3088,19 @@

 }

+
+struct GreaterFileSize {
+  bool operator()(const Options::FileInfo& l, const Options::FileInfo& r) {
+    return l.fileLen > r.fileLen;
+  }
+};


 void Linker::createReaders()
 {
        fStartCreateReadersTime = mach_absolute_time();
        std::vector<Options::FileInfo>& files = fOptions.getInputFiles();
+       sort(files.begin(), files.end(), GreaterFileSize());
        const int count = files.size();
        if ( count == 0 )
                throw "no object files specified";

つまり全ファイルをデカい順に sort 。 ただこれでは chromium の bot はなおらんだろうね。 なんか build log 見ると謎の hack がボットには入ってるっぽい。

3時間ほどあれば根治もできると思うがー

(01:31)


2010-06-28

_ 銀行

適当に家賃を自動引き落しにしたいなぁというのと、 そういえば敷金はかえってきたんだろうか… というのを調べようと、銀行へ行った。

したらなんか色々やった

  • 自動引き落しは毎回 750 円とかそのくらいかかるそうなのでバカらしくなってとりあえず今月分を手動振込
  • ついでに通帳繰越
  • 印鑑をなくしていたので更新
  • 住所変わってたので更新
  • 電話変わってたので更新
  • 保険証見せたらこれは難しい字だが登録時は簡単な字だった、これだと名前も変わると言われたので更新
  • 思い出したように他の銀行への財産の移動をする

で、三井住友に振り込むから手数料高いっぽいので、 三井住友に聞きに行く。

  • 口座作るには何あればいいですか→パスポートがベスト
  • そもそも口座とキャッシュカードあるんですけど、印鑑も暗証番号も通帳も無いんですけどなんとかなりますか→なるんじゃね
  • で振込手数料いくらですか→他の支部だと 420 円。

結局毎回 400 円とかするとなんかちょっとバカらしいよねえ。 大屋と同じ支店で口座開くとかいう荒技もあるが。

どうも定期的な振込が安くでできる銀行口座開けってのが よくあるアドバイスっぽい。 めどいぞ。

(22:57)

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

_ a watcher [こういうのは昔は新生銀行が人気だったんだけど、最近は条件が厳しくなってきているんで、今はSBIネット銀行が人気なんで..]

_ a watcher [SBIは自動振込機能もあるんですね。 http://www.internetbank-hikaku.info/col..]

_ shinh [SBI の口座申し込みました! ありがとうございます。]


2010-06-27

_ 監視

cronlog を使わせてもらおうと思った。

http://github.com/kazuho/kaztools/blob/master/cronlog

僕は自分は C++ と Ruby を使って書くことが多いけど、 人が書いたものとしては C や Perl じゃないと許せないという 考えを持っているので Perl なのは良い。

どうでもいいけどこの guncat というのは zcat とは違うんかな。

さて health check は ruby の test/unit でいいのかなーと思ったが、 色々不満がありそうだ。

まずどうせ自動再起動も入れたいので、 失敗時にはなんかフック入れたいんだけど、 assert 一個につき test_ 一個書く感じにしたいので、 全部の test_ に rescue とか書かにゃならん。 一つの class の中の test が一個コケてたら 自動再起動スクリプトが走る…とかにしたいんだけどな。

こんなんでいいか

  • HealthCheckTest とかを作る
  • その中の teardown で passed? をチェックして false なら @@failed = true とかしておく
  • 継承したクラスでは、 test_zzz で @@failed なら自動再起動を走らせる

(01:25)

_ health check

適当にやってみた。

とりあえず動いてるみたいだ。

次はバックアップとかかなぁ。

(17:18)

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

_ kazuho [うほ。お手柔らかに m(__)m > guncat というのは zcat とは違うんかな zcat だと全部のフ..]


2010-06-26

_ partial application

http://twitter.com/kinaba/status/17019694551

これは

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

.maxPrio = .max{|a,b|
    a.priority <=> b.priority}
even = evens.maxPrio
odd = odds.maxPrio

ができるって話よりもう一歩いい感じな感じだなぁ。

ミスって引数足りない時はどうなるのかな。 エラってくれないと静かに全然期待と違う動きすることがあってうざいと思うんだけど、 まぁいかにもこの部分適用だけされた関数使ってませんよーとか スコープ出る時に言ってくれたりしそうだけど。

(00:27)

_ exhausted

という感じの状態になってるように思う。

腕も痛いしだるいし… ていうか 38.1 度熱あるしなぁ。 月曜までに fix したい。

(00:31)

_ ごるふこんぺ

こういう形式のゴルフコンペはどうかな。

  • 問題が適当にある
  • 参加者は適当に解く、そしてその解答は即座に公開される
  • 既存の解答を短くする投稿のみが accept される
  • 更新した瞬間に 1 てん獲得。更新しかえされるとその加点は減って、最終的な得点は 最終的に一番短かった解のサイズ/その更新のサイズ
  • 例えば A さんが 10bytes を通して B さんが 9bytes を通したら、 A さん 0.9 点 B さん 1 点

つまりこうみんなで競争しながら頭ひねって答えを考えると。

  • 問題は参加者一人一つまで投稿

とかいうルールを加えてもいいのかなぁと思う。 明らかに自明な最短解がある問題が出題されるとつらいので、 出題者は開始1時間解答できないとかそんな。

得点計算式に問題があるな… A さんが 10B 出して B さんが 8B 発見した時に、 9B => 8B と投稿した方が点数が多くなる式はダメだ。 むしろ分割するともらえる得点が減るといい気がする。

(01:34)

_ MD5 と SHA1 と…

http://ja.wikipedia.org/wiki/MD5

MD5 はあっさり衝突するらしい。ダメぽ。

http://ja.wikipedia.org/wiki/SHA

SHA1 もうどうも衝突してるらしいじゃんダメぽ。

何かっていうと自分で書いたハッシュ関数とか 欲しいなぁというのがあったのだけど。

ていうか codegolf.com で sha256 書きましたっけ… すっかり忘れていた。

(01:59)

_ sha256

http://sourceforge.jp/magazine/05/11/08/0213251

ふむふむとりあえず sha256 使えということらしい

(02:09)

_ 危く騙されるところだった

http://homepage1.nifty.com/herumi/diary/0604.html#1

herumi さんならやりかね無いという点が

(02:10)

_ mod_disk_cache

ニコニコの latency ひどいよなーと思って、 inspector で見てみると、 どうも prototype.js とかの 静的なコンテンツのダウンロードというか 304 Not Modified がかえってくるまでが遅い。

アホかーと思ったので、 とりあえずローカルの apache に mod_disk_cache を仕込んだ。 だいぶはやくなった。

(18:43)

_ ついでに

twitter もアホみたいに早くなった。

web 2.0 なサイトは latency 気にしなさすぎではないか。

(18:48)

_ 別に実害は無いんだけど

powertop すると Ruby が上位に来ることが多い。

たぶん timer thread でもりもり起きてるのが問題かなーと思ってたんだけど、 よく考えると ruby 1.8 でも上位に来てる。 ruby-1.8.7 でも timer とかあるっぽいし 1.9 だけってのが記憶違いかな。

地球に優しくするにはどうすればいいんだろう。

http://redmine.ruby-lang.org/issues/show/270

に書いてあるみたいに最初に Thread.new するまでは 少なくとも必要ないのかなぁ。

ていうか thread の切り替えを促すってのは 各 thread が自発的にあー 10ms 過ぎたなーとか言って 他にゆずるとかできんのかな。

signal の集約の方は別にタイマとしての機能は必要じゃない気がするけど、 ええとどうなんかな。

(22:08)

_ daemontools

u4 で適当に動かしていたサーバ群を適当に daemontools 管理下に置く。 具体的には

  • cia
  • cmigemo
  • synergys
  • tiarra

があったようだ。

あとは…

  • mircbot @ u
  • rail for mircbot @ u
  • synergyc @ um
  • open-server @ um

あたりが勝手に動くとなお良い。

それと health check 的なのを統合的にやりたいなぁ。 チェックすべきは

  • shinh.org の proxy (u:8080 の lighttpd)
  • shinh.org (u:80 の apache)
  • golf.shinh.org (u5:80 の lighttpd)
  • cia.shinh.org (u4:81 の lighttpd)
  • shinh.org:25
  • golf server の executor

あたりか。

(23:23)

_ てか

twitter のリソースの読まれっぷりを見てると、 spinner.gif とか loader.gif とか外部リソースなんだなぁ。 こいうのは data: にするもんなんかなぁと思ってた。

あとこれを最初に読む必要は無いよね…とか

(23:42)

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

_ こーのいけ [トップの人(例だとBさん@9B)は自分で更新投稿できないとか。 あと,問題作成者に「回答者を楽しませる」ことでポイン..]

_ shinh [連続投稿できないのは問題一つならいいんですが、問題が複数あった時に更新合戦が起きた問題と独走ができた問題で、独走の方..]

_ Gimite [data:って確かIEが対応してないですよね。なので微妙なような。(結局両方用意しなきゃいけないし、使える方が少数派..]

_ shinh [あー IE ですか… IE9 くらいだとあるんでしょうかね。あと twitter くらいの規模だったら両方用意しても..]


2010-06-25

_ 電気

寝る前に電気を消すためにスイッチに近付くのがめんどい。 どうにかして遠くからオンオフできるようにしたい。

どうやらこういうものがあるようだ。

http://www.nissinweb.co.jp/life01.html

うーんこれは何がどうなってるんだろう。 既存のスイッチの上につけられるのかな。 だとすると物理的に動くんかいや

(01:39)

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

_ IKeJI [見た感じ、既存の壁に埋め込み型のスイッチを外して付けるタイプのような…]

_ shinh [なるほど借りてるマンションでそいう解体やってもいいもんですかね…ダメなんでしょうけど現状復帰できれば実質問題ないです..]

_ Gimite [スイッチ交換するぐらいならいい気もしますが、どうなんでしょうね。ただ、法的には電気工事士の資格がないと自分でやっちゃ..]

_ shinh [> リモコン式の天井灯を買う 天才ですね。どうしても物があるとそれを使わないって発想が出てこない…例えば段ボールが..]


2010-06-24

_ とりあえず

僕の考えた方針でやってみるかのう

(22:36)


2010-06-21

_ あせる

なんか焦るとよくないなぁと思う。

気が急いて眠れないし、 しかし寝ないと集中力低下して勘違いを放置するし。

しかしまぁそろそろマシな勝負ができるといいなぁと思いますよ… と思ったらサバさんが

(05:31)

_ おわた

うーんくやしいなぁ。 最終的にはマラソン的な問題で、 いつものマラソン的な感じのダメさだった。 もうちょっと頭良くない感じの アルゴリズムとかはともかく 実装ゴリゴーリな問題の方が得意なんだろうな。

とはいえ問題はとても良かったし、 運営も良かったと思う。 今回程度のダウンタイムってのは 神とまでは言えないけどとても良かったと思うんです。

だからこそくやしいわけなんだが

でなんかまとまった文章書こうと思ったが、 そもそも key prefix をどうやって作ったか、 という手順からして思い出せない。

どういう問題だっけ…

回路は

http://twitter.com/kikx/status/16688748696

を見るに kik さんと同じだろうと思う。

工夫した点は左右ひっくり返せる部分があるので、 そこを乱数でひっくり返して何度かやって いいのを取るとかいう。

(22:52)


2010-06-20

_ どろろ

30分くらいで45台くらい新規給油したりして良かった。

問題をまだ理解してないのは困ったもの。

あと40時間?結構時間ある感じだな。 寝るかなーと思うけど今寝て起きてそのままってのはちょっと長いね…

(05:00)


2010-06-19

_ ICFPC

いい問題だなーと思う

スタートへの敷居高すぎなのだけがアレ

とりあえず適当に稼げそうなところは稼いでおいた

明日へのメモ

  • 工場の組み方はこのままじゃダメかなぁ。
  • ternary stream が完全に解析しきれてない気がする
  • car について

プライオリティとしてはどこからかなぁ。 工場は後々効くだろうけど時間の無駄に終わる可能性もあり。

しかしこういうのは kikx さんとか得意そうである

二人いるのはこういう事情なので気にしないで

21:46 >shinh< register したらしいのにパスワードこないな
21:47 >shinh< あれ来てるんですか
21:47 >shinh< メアド入れまちがったとかかな
21:47 >shinh< shinh さん詰みそう
21:48 >shinh< 残念だなあ
21:50 >shinh< お team 名変えたら email address is already in use
21:50 >shinh< メアド入れ間違ってないじゃないですか
21:53 *** Change: shinh -> shinh2
21:53 >shinh2< しょうがないから今日から shinh2 に改名

(13:59)

_ ダメだ

ゴルフ欲に勝てない

(19:23)

_ るびー

irb(main):005:0> '%04d' % 5.to_s(3)
=> "0012"

そうか…便利な世の中ですね…

(23:16)

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

_ kik [タンク一個の大衆車は適当にやってsize 37にはしたんだけど、点数に結びつかないから真面目にやってないやー。非線形..]

_ seo company [&#12381;&#12398;&#12424;&#12358;&#12394;&#24847;&#21619;&#..]


2010-06-17

_ woofer

http://woofertime.com/

via http://twitter.com/kinaba/status/16310294032

これいいなー。こっちが流行ってればいいのに。

どうでもいいけど忙しい気がする。 別にたいして忙しくはないんだろうけどなあ。

マラソン結局不戦敗。 かなしい…

(03:08)

_ 面白いなぁ

http://slashdot.jp/~taro-nishino/journal/509450

かなり説得力あるなぁと思う。

前に git の ML で読んだ時とは大違いな印象だけど、 まぁ当時は全部あんま読んでなかったのかな。

今度ゆっくり一つ一つの機能を考えてみたい気がする。 とりあえず多態と STL は 欲しいかなぁと思うけどどっちも kernel に とって重要じゃないってのはそうなんだろうと思う。

あとはこう単純に関数とメンバを同じところに書く習慣を強制されるのは、 自分が悪いコードを書く率を減らしてくれるって意味でありがたいんだけど、 そういうのはダメかなぁ。 C++ の方が C よりバカに優しいと思うんだけど。

ていうかそう、激しく同意するのはその、 僕は自分では C++ 書きたいけど、しかし 人の書いた C++ コードはあんま読みたくない ケースがすごく多いって話なんだよな。 C にしてくれという。

あーなんでか忘れてた。 RAII は欲しいだろさすがに。 さすがに kernel でも役に立つんじゃないか。

(03:41)

_ 適当に考えてみた

  1. 一行コメント
  2. RAII
  3. クラス
  4. STL
  5. 多態
  6. public/protected/private
  7. オーバーロード
  8. template
  9. 継承
  10. 例外

1位は略

2位の RAII は RAII というかスコープ出た時になんかできるってやつで、 Mutex の auto unlock みたいなのは嬉しいんじゃないかなぁ

3位のクラスってのは単にメンバ関数のことを指してるんだと思う。 やっぱ頭整理しやすいと思うんだよね。 もちろん C でもちゃんと一定のルールに従って書いてくれりゃいいんだけど、 自分で新しくコード書く時にルールを考えたりするのがやはりめどい。

4位の STL はまぁ大規模なプロジェクトなら自分で書いたらいいんだろうけど、 スクラッチからなんか書く時の速度が相当早くなるんですよという。

5位の多態はこう、結構欲しい時は本質的に欲しいんだよなぁ。 関数ポインタ3つ以上とか持ってる構造体とかは、 ちょっと厳しいもんがあるんじゃないかなぁ。 そうなっちゃうと過剰に自由度が高い状態になってしまって、 見通しが悪くなるというかなんというか。

6位のアクセス制御はまぁやはりドキュメントとして。 ただ private non-virtual 関数は cpp の方にだけ 書けばいいことにできんもんかと思う。

7位。オーバーロード…はいるんだろうか。 operator<< とか、何かしら出力系では欲しいんだよなぁ。

8位 template 。 低い位置だなぁというかまぁ STL は上の方にいるのだから 不自然な話である。 まぁマクロあれば自分で書く範囲なら それなりになんとかなるんだよな… でもそいうケースの場合は普通に template の方がいいけど。 まぁとにかく必要な頻度が低い。

9位継承。これも多態を上に置いておいてヘンな話だけど、 要は実装継承的なものを指していて、 多態は interface 的なものを指してることにしよう。 まぁ手間ははぶけること多いから継承好きなんだけどね。

10位は例外はなんかたいてい 超大域脱出(つまりどうしようもないことが起きてエラーメッセージだけ吐きたい時) にしか使わないからなぁ。そしてデバッガのこと考えると 超大域脱出とかしてるより SEGV の方が良かったりする。

(04:05)


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.shinh(2014-05-24 04:54) 2.Gimite(2014-05-24 04:54) 3.shinh(2014-05-24 04:54)
search / home / index

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

shinichiro.hamaji _at_ gmail.com / shinichiro.h