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


2011-06-06

_ IPSC2011

深夜0時からかと思ってたけど、 起きたらはじまっていた。

http://ipsc.ksp.sk/index.php

はじめて参加してみたけどこれ面白い感じだなあ。 いくらなんでも問題量多すぎ感が強いので、 はじめてチームとかに入ってみたくなった。

思いだし:

  • A1 と A2 をサクっと解く
  • C1 をややサクっと解く
  • B なるほど面白いなあと思いつつ適当に作ってみるもむつかしそうだったのであきらめた
  • H2 が楽しそうに見えたので全力投球。大量に時間投下したけど無理だった。泣きながら H1 だけ submit
  • なんか H1 しか点数入ってないな〜
  • 実は A1 と A2 は WA だった。勝敗関係が真逆だった
  • C1 も WA だった。約分した時の 3/1 とかをわざわざ 3 に変換してたのがよくなかった
  • E …これはそりゃ解けるだろうけど…どう考えてもめどい
  • I もまたこれ面白いなー。とりあえず手で I1 をシミュレータも書かず書いたら一発で通った
  • で I2 はこれできるんかなー。なんか聞いたことがある気もするんだよなーと思いつつ考えてできなかった。
  • D1 簡単そうだなー適当なコードで適当に通らんかなーと適当に書いててめんどくなった

I2 の解が知りたい。 H2 は適当に 0-9 までを作ってから、 2 と ? で文字数調整しつつ o で削って先頭からちょっとずつあわせてく…みたいな方針を考えたんだけど、あまり簡単ではなかった感じだった。

ねむい

(00:09)

_ と思ったが

http://ipsc.ksp.sk/results_ng.php?arg_contest=ipsc2011&arg_div=open&arg_single=1

1人で5時間でこんだけ解いちゃう人がいるんだなあ…

I2 はアレなのか…アレ結局考えてないな

http://twitter.com/#!/kinaba/status/77392100064374784

(00:14)


2011-06-02

_ FizzBuzz conference

http://partake.in/events/8c2cd95b-b6d4-4d9f-917e-a98ba9aafd25

僕の中では人類 vs ksk という感じだった。 フタを開けてみると人類善戦したなーという感じもあったけど、 まぁ 50B はすごく良いものだった。

もうちょいなんか準備してこいよという感じだったけど、 まぁなんか適当に紙とかにみんな書いてくれて良かった。 意外と人数いたあたりのがあれだった。

hirose さんが関西の方だということなんで 汚ない家に来てもらったり。 色々と教えてもらって僕はありがたかったんだけど、 環境としてはネカフェの方が良かったろうなーとか思った。 あとで予備の布団がカビくさい気付いてそっちも申し訳なかった。 てか干さなんと。しかし梅雨

(00:45)

_ Array#bsearch

http://twitter.com/#!/mametter/status/75937905503248385

なんかこのへんでまた話がされてるみたいだった。 前も書いたかもだけど個人的にはすごく欲しい…

RArray に is_sorted みたいな bitfield ぶちこんでしまうってのは 無理なんだったっけ…

(00:49)

_ objdump -S

http://twitter.com/hotpepsi/statuses/74847188701818880

objdump -x とかはともかく、 -S くらいは普通の linux 上で C/C++ 書いてるプログラマは 年に数度くらいは必要になったりあった方が便利になる気がするっていうか、 知らない/使えない/使わないのは損かなぁと思う。 「linux 上で C/C++ 書いてるプログラマ」が普通でない…ってこともないよねたぶん。

なんかごく最近 objdump -S を普通の用途で使った。 なにやら

static Mutex mu;
mu.lock();
// foobar
mu.unlock();

みたいなコードを見て、「これたぶん mutex 2回はる感じになるんですよねー」 とか言ってて、しかし本当だっけか…ってことで

#include <stdio.h>

struct C {
  C() {
    puts("C");
  }
};

void func() {
  static C c;
}

int main() {
  func();
  func();
}

みたいなコードを書いて、 objdump -S したら __cxa_guard_acquire とか出てきたので、 ああやっぱり、とか言ってたのだった。

しかしあとでよく objdump -S の出力を見ると、

  400760:       48 83 ec 18             sub    $0x18,%rsp
  static C c;
  400764:       80 3d dd 04 20 00 00    cmpb   $0x0,0x2004dd(%rip)        # 600c48 <guard variable for func()::c>
  40076b:       74 0b                   je     400778 <func()+0x18>
  40076d:       48 83 c4 18             add    $0x18,%rsp
  400771:       c3                      retq
  400772:       66 0f 1f 44 00 00       nopw   0x0(%rax,%rax,1)

って感じのコードが吐かれていて、 <guard variable for func()::c> ってやつがノンゼロならロックもなんもせずに 抜ける感じになっていた。

つまりロックの中で <guard variable for func()::c> ってのを ダブルチェックしつつ更新してくれるから大丈夫みたいなコードになってるんだろうなぁ と。

で、 objdump -S のおかげで関数内にコンストラクタのある型の static 変数がある場合に、 一度しか実行しないことを保証するためのコストが高いかと思ったら そうでもない、ってことがわかったのだった。

今回はまぁ単に気分で追っかけただけだけど、パフォーマンスとかが重要な時は まぁ普通に知りたい情報だと思う。

(01:50)

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

Before...

_ mame [応援のお便り待ってます! is_sorted は要素を破壊的に書き換えた場合に sorted じゃなくなるのの検知..]

_ naruse [> is_sorted は要素を破壊的に書き換えた場合に sorted じゃなくなるのの検知が難しいです。 そう..]

_ mame [よく見るんだ。sorted なのは ary 、破壊的に変更されるのは a です。]

_ hirose [先日は泊めてもらって本当にありがとうございます。 色々話を聞けて、すごく楽しくて、最高でした!]

_ naruse [> よく見るんだ。sorted なのは ary 、破壊的に変更されるのは a です。 あー、なるほど。世の中難しい..]


2011-05-29

_ TODO

いっぱいある

  • golf メール
  • maloader メール
  • golf 言語増やす
  • 税金処理

案外なんもなかった…

(23:29)


2011-05-26

_ TCO Qual 3

やっとこさ通った、がよく見ると Round 1 は ICFPC のまっただなかか。 これは単純に放棄して終わりだろうな…

(00:03)


2011-05-24

_ wikipedia

の Quine の項目に僕の名前がのってることに気付いた。

http://en.wikipedia.org/wiki/Quine_(computing)

えらくなった気分。

ちなみに shinichiro.h はなんかここにのっていたり…

http://en.wikipedia.org/wiki/Siroi_Danmakukun

(23:55)


2011-05-23

_ kwenwl VM なんちゃら

http://atnd.org/events/15330

行ってきた。 なにやら色々と面白いことをやってる人がいるなあと勉強になった。 特にネットワークまわりとかは相変わらず 勉強がたりなさすぎてよくわからないことが多かった。

個人的に興味というか比較的知ってる分野に近くて 印象に残ったのは「アセンブラ大集合」と「目grep入門」があったと思う。

前者の方はアセンブリの見た目から CPU の一定のクセを読むみたいな話で こういうのはわかった気ができてたいへん楽しい。 個人的にもこういうのを作ってみたりしていた。

http://shinh.skr.jp/h/?FizzBuzzAsm

追加大歓迎

後者の方はそのレベルでは全然ないけど、 Python challenge lv5 を Python の知識なく解いたあたりが 近い方面のアレだったかなぁとか思った。

http://d.hatena.ne.jp/shinichiro_h/searchdiary?word=python%20challenge

他にも ICFP の問題から画像取り出したりとかで 似たような方法論を使ったかもしれず。

自分のした発表についてはかなり反省するものがあった。 基本的にこの手の発表をするモチベーションとして

  • 自分のやったことを俺スゲーと自慢する

っていうのは間違いなくあって、 こういうののやり方としてはいくらでもあるわけだけど、 なんとなくコレだけでは良くないと思っていて、

  • なんだこの程度のことでそれができるのか。それなら俺にもできるぜ、と聴衆に思わせる
    • ことによって自分にとって有益なフィードバックを得る
    • さらに自分には思いにもよらない発展があればさらに良し

っていうのは割と重要なアレとしてあると思う。

今回は聞き手がわかってそうなところをすっとばしまくったので、 後者の方のアレがイマイチだったように思う。

というのはなにか若い人と後で話して、 若い人 「なんとなくとか言ってたけどれあれ大変ですよね」 若くはないと言っても当たり障りのなさそうな人 「そうなんだけどあれはやるべきあたり前の事を順番にやってるだけなんだよ」 とかそいう会話を少しして、 後者の方の人と僕のやったことが当たり前のことだという理解を共有できていたことに 強い喜びを覚えるとともに、 前者の方の人にアレがいかにどうでもいい当たり前のことであるかが 伝えられてなさそうだったことに残念に思ったのであった。

ちょっと考えると後者のような人は何を喋っても理解してくれるわけで、 前者の人にこそ「僕がこの問題について いくつかある選択肢のうちこの選択をした結果、 現状の当たり前の結論に落ち着いたか」 ってことを伝えたかったんじゃないかなぁとか思う。

発表時間が短いということでアプローチとかはざっくりと削ってしまって、 何を話そうかと考えた結果僕が苦労したところを適当に話すみたいな感じになったのだけど、 しかし基本的なことをもっと説明することもできたんじゃないかとちょっと残念だった。

こいうことを思ったのは、 こいう現象ってのは会社でなんか喋る時とかにもっとひどくて、 会社の人の優秀さに頼り過ぎてて説明を省略しすぎてる感があるなぁ… とか思ったこともあったのであった。

しかし一方で俺SUGEEは一定したいってのはあるので、 なかなかこういうのはバランスが難しくて面白い問題だと思う。 なんかで読んだ、80%くらいは着いてこさせて、 20%くらいで聴衆無視して自分が楽しいだけの話をする、っていう プレゼン術はなにか色んな意味でよい気がする。

ところで今回のプレゼン資料はここにあります

http://shinh.skr.jp/slide/ldmac2/000.html

まとめると、 このプレゼンに対する想定反論として、 そんなもん当たり前じゃねえよ! ってものがあって、 それはそれで俺 SUGEE に成功しているという意味では嬉しい面もあるのだけど、 しかし共有ライブラリとかローダーとかの仕組みについて マジメに考えたことのある人に取ってはやはり当たり前のことで、 まさに「やるべきことをやったらなんとなく動いた」のであって、 その当たり前さの感動を伝えられない悲しさもあり、 というようなそういう。

いや当たり前さの感動みたいなものはあると思うんだよね。 仕様に決められてる通りのプロトコルを喋るクライアントを書いたら動いた時の感動というか…

まあなんかプレゼンってのは面白いよね…と思う

(01:15)

_

まあそもそも眠くてしょうがなかったとかいう 根本的な問題があって現実的には そっちのマイナスの方がはるかにヒドかった可能性があるという話があると思う。

しかし僕が考えたいのは、そういう現実の話じゃなくて、 「一体何が楽しくて僕はあからさまに得意でないプレゼンとかやってみてるんだろうか」 とか 「僕の伝えたいことを考えたところ、プレゼン資料を用意する時に考えるべきことはなんだろうか」 とか そういう形而上的というかそいうメタなことが考えたいのであって、 「人を感動させるプレゼン術」とかそのへんにはイマイチ関心を持っていないのであった。 いや関心はあるのだけど、自分でやってみようとかはあまり考えてないというか…

(01:22)


2011-05-19

_ TCO Qual 2

呑み会で適当にやった。 10分くらいでバッテリ切れるからその間に1問解ける予定だったんだけど、 問題を読んでる最中にバッテリ切れてしまった。 問題開いちゃったので0点。

レートが青くなってしまったよ

(23:53)


2011-05-18

_ SRM504.5

250 は 4 と 7 の組み合わせ…とか考えて 250 にしてはそれじゃ難しいかと思って、 ああ下のケタ見るだけでたぶん OK かーと気付く。 n % 10 で適当に場合わけして、 うーんこれでいいんだろうかなんか実はもっと短い組み合わせでいけるケースがあったり… とか疑ったり、こういうの僕ミスるの得意だよなぁ…とか思ったりして、 ruby で適当に組み合わせ作ってみたところ、 別にどうも無いっぽいなぁでもなんかミスってたらイヤだなぁ…とびびりつつ submit

550 は 500 より多いのかあ難しそうだなぁと思いつつ、 long long が overflow するから割り算を手書きして… とかやって平均値を求めてみてから、 これ実は naive に書いてある通りのループ回して後調整したらいいんかな、 と書いてみた。 で、まあ 1 ずつ配り出すとタイムアウトしちゃうよなー と 1 ずつ配り出したらループから出て一気に配るとかやったら example test 3 がコケる。 ああ貧乏人と金持ちの差が 1 以下になったら出ることにすればいいか… とやったら通る。

しかしこれでは 550 としては簡単じゃないだろうか… とアレコレとコーナーケースとか考えてみるも思いつかない。 びびりまくりつつ submit 。 うーんこんなカンタンでいいんだろうか…

900 開いてみるとまたしても簡単そうに見える。 しかしもう時間ないなぁ…と challenge 用にコーナーケースとか考えてたけど まぁもういいかと思う。

challenge は 500 で long long 越えるよねーって子を見つけて でもこのテストケースでいいんだっけ…とか考えてるうちに他の人に落とされた。 で 250 の数字の書き間違いっぽい子見つけて落とす。 いろいろながめていってもう一人見つけたけど、 それも慎重に確認してる間に他の人に落とされた。

終わってみるとびびりまくってた 250 も 550 も通ってて むなしくなった。 なんかもうちょっと大胆にやってたらもっと点数良かったのかー でもとりあえず2問正解とかできて良かった…とか思った。

(03:43)


2011-05-15

_ mixC++ Code Golf

https://sites.google.com/site/mixcgolf/

そうか ideone に丸投げって手があるのか…!

(00:28)

_ TCO qual 1

250 適当にこんなもんでいいんじゃねと解いてみた。 あやしいなーと思ったけど、 なんか 250 だけじゃどうせ通らんだろうということで 深く考えず 500 に

500 はあれこれ考えてから終わる時間でテーブル作ればいいんだろうなぁ、 と書いてみたらどうも誤差が出る。 てことは分数とかそいう表記とかするんかなーとか思いつつ 実装する時間なくて終わり。 なんか他の人の見ると同じようなコードで通ってる。

challenge は比較的適当に1人ダメそうなのを落として、 ダメそうじゃないけどこの人レート的に落ちるんじゃねというのが落ちなくて、 80000*50*50 は時間的に無理じゃねというのも落ちなくて、 結局プラマイゼロだった。

で、 250 はなんかやはりよろしくなかったようだ。 system test で落ちて無事ぜろてんとなったのであった。

うむいい感じにひどい

(05:19)

_ qual 1

↑で書いてた 500 は手元のテストだと

Test Case #5...FAILED (330 msec)
       Expected: { "0.328958","0.262915","0.184639","0.13123","0.0751863","0.0170713", }
       Received: { "0.31694","0.256831","0.196721","0.136612","0.0765027","0.0163934", }

って感じで結構誤差出るんだけど、 topcoder のサイトに今サブミットしてみたら通った。 コンパイルとテストくらいしてみたら良かったな

…と書いてて気付いた。 この Test Case #5 ってヤツは自分で追加したやつで Expected は適当な値なんだった。 それをすっかり忘れててなんか誤差デカいから困ったなあとか思ってたわけか。

(18:25)


2011-05-14

_ 日記

GSL ががっかり決勝すぎてびっくりした。 ogsinca は cryolite さんに似てると思うんだよな…

あとなんか dia になかなかなれない。

今日は TCO やってみようと思う。 練習として去年の qual round 1 やってみたらやたら簡単だった。 250 と 500 が割とあっというまに解けた

なんか返信しないといけないメールがたくさんあるから とりあえずそれをやるか…

(22:56)


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(2011-06-26 15:08) 2.kinaba(2011-06-25 09:30) 3.naruse(2011-06-02 22:13)
search / home / index

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

shinichiro.hamaji _at_ gmail.com / shinichiro.h