タグ

ブックマーク / shinh.hatenablog.com (25)

  • 人材獲得作戦.sed - 兼雑記

    http://okajima.air-nifty.com/b/2010/01/post-abc6.html 適当に sed で解いてみた。サイズ決め打ちで書いたら割と簡単だった… H ${ x # initialize seen positions h x s/.\(.\{25\}\).S.\(.\{25\}\)./*\1***\2*/ x # initialize initial state of the queue s/S /SN/ /N/{H;s/N/ /} s/ S/NS/ /N/{H;s/N/ /} s/\(S.\{26\}\) /\1N/ /N/{H;s/N/ /} s/ \(.\{26\}S\)/N\1/ /N/{H;s/N/ /} # add the marker x s/^\n/-&/ s/\n\n/\n=\n/ x : # load the queue g s/\n\n

    人材獲得作戦.sed - 兼雑記
  • WebKit について (基本的な構成とかAPIとか) - 2010-01-01 - 兼雑記

    なんかしばらく WebKit について書いてみたいと思います。開発するために必要な基的なこととかより、まぁなんか個人的に話として面白いと思ったことについて。 とりあえず WebKit 内のコンポーネントの構成とかから。 WebKit ってのはまぁライブラリなわけで、かつ Win/Mac/Linux などで動いてるので、「WebKit を使って書いたら portable なコード一個管理したら OK」的な感じなのかなーと思うんですが、その実 WebKit API は環境ごとに少しずつ違う物体だったりします。 例えば Windows だったら COM を使ったり Mac だったら ObjC だったり gtk とか kde もそれぞれのシグナル配送モデルを使って色々やったりとか。 portable なライブラリっていうと portable に書けない部分は最小限のライブラリを環境ごとに実装して

    WebKit について (基本的な構成とかAPIとか) - 2010-01-01 - 兼雑記
    kgbu
    kgbu 2010/01/05
    Webkitの開発について、こぼれ話的なものとか。
  • ゴルフ場のなかみ (そのに) 08:03 2009-11-28 - 兼雑記

    最近ゴルフ場を新しいマシンに引越したので、前回の記述より色々とよくなった部分もあるので、それについて書いてみます。といっても sandbox についてだけですが。 http://github.com/shinh/ags/blob/master/be/modules/sandbox.c 新しい sandbox は、 arcus-judge のシステムのやってることをまんまパクった部分が多いです。 kernel いじっちゃうとメンテ大変そうだなーと思ったので module でやってるのと、全体的に色々雑なのが大きな違いです。 http://code.google.com/p/arcus-judge/wiki/ArcusSandbox kernel module での system call のフックは、 /boot/System.map-2.6.26-2-xen-686 を見て sys_cal

    ゴルフ場のなかみ (そのに) 08:03 2009-11-28 - 兼雑記
    kgbu
    kgbu 2009/11/28
    "新しい sandbox は、 arcus-judge のシステムのやってることをまんまパクった部分が多い"そうだ
  • Go Go!! - 兼雑記

    Goいじめてあそぶということなので行ってきた。大変たのしかった。いつもよくわからん面白イベントをやってくれている、 id:ranha さんにとても感謝。今後もやってください :) http://atnd.org/events/2115 ごにょごにょ遊んだ結果はこのへんに置いてある。 http://github.com/shinh/test/tree/master/go/ まずはゴルフ http://golf.shinh.org/l.rb?go 適当にやった。大変無駄な時間を過ごしたと思う。ゴルフの感覚としては D に近いなぁと思いました。標準入力が手軽に取れなさすぎてだるい。 scanf 欲しいよなぁ。マジメに考えると /usr/include/pcrecpp.h ってのはぐぐるのライブラリとして大好きなインターフェースの一つなのだけど、こいうのがあまりできそうにない言語仕様は残念だな

    Go Go!! - 兼雑記
  • ゴルフ場のなかみ - 兼雑記 (2009-09-29)

    最近ゴルフ場を新しいマシンに引越そうとしていて、ついでなのでシステムをもうちょっと丁寧にパッケージ化しようとしてます。そのついでとして、現在のゴルフ場について内部がどうなってるか、ということを少しまとめてみようと思いました。 結構似たようなことをするサービスもあるんですが(codepadとかllevalとか)、そのへんのコードとかは全く参考にしてないので、そういうのを見た方がいいかもしれませんし、あとゴルフ場固有の事情も色々あったりするかもしれません。まぁでも日語でそのへん書いてるのはあんまり見たことがないので、多少参考になる部分もあるかもしれません。 今作業中のコードは github に入れていっています。 apt で入らないパッケージの処理以外はだいたい入ってるはずですが、まだ足りないものとかあるかもしれません。 http://github.com/shinh/ags システム自体は

    ゴルフ場のなかみ - 兼雑記 (2009-09-29)
  • ICFPそのものについて 2009-09-12 - 兼雑記

    完全にド素人なわけで、どうせほとんど何言ってるかわからんのだろうなぁと思ってたんですが、意外とわかるものももあったので書いておこうかと。わかると言っても、どうやってやったかとかまではなかなかわからんくて、モチベーションくらいがわかればそれだけでも嬉しいという幸せな話でして。 プロシーディングはここにあるみたいだ。 http://portal.acm.org/toc.cfm?id=1596550&coll=portal&dl=ACM&type=proceeding&idx=SERIES824&part=series&WantType=Proceedings&title=ICFP&CFID=505049525&CFTOKEN=505049525 以下、たぶん間違ってたりそんなことは重要なことではないということを書いてたりします。 Organizing Functional Code for P

    ICFPそのものについて 2009-09-12 - 兼雑記
  • Glen 2009-08-12 - 兼雑記

    Linux Chrome にちょっとおもしろいバグがあったので書いてみます。ある日、 Linux Chrome の閉じるボタンが (Glenさんという) 人の顔になるという change がコミットされました。何が起きてるかは以下のスクリーンショットが大変わかりやすいです。 http://www.flickr.com/photos/yanbe/3792080316/ それに対してみなさんがバグを登録。みんなヘンなオッサンとか魅力的な女性の方が良かったとか言いたい放題です。 http://code.google.com/p/chromium/issues/detail?id=18385 http://code.google.com/p/chromium/issues/detail?id=18397 http://code.google.com/p/chromium/issues/detail

    Glen 2009-08-12 - 兼雑記
  • Self Reference - 兼雑記

    http://d.hatena.ne.jp/TAKESAKO/20090716/1247750262 via http://d.hatena.ne.jp/sugyan/20090717/1247842750 を見て、なんか書いてみるかなぁと。下記3つのコードは一定の期間をおいて SEGV するコードなのですが、共通のテーマに基づいて書かれてます。 SEGV の理由は何でしょうか。 一個目。邪道。でもゴルフでたまに使えるんだよね。 ''=~('(?{'.('_/_ '^';@{:').'})')二個目。一番短いけどこの挙動は長い間知らなかったので結構わからん人多いんじゃないかな。 $_=~'(?{$_=~""})'三個目。読むのはそんなに難しくないけど、書くのは結構大変。新しく書こうと思ったけど結局使い回しでいいやという。 ($;=<<'' _(_@{**+(\$;=<<'' $; )=~(

    Self Reference - 兼雑記
    kgbu
    kgbu 2009/07/23
    自分を呼び出すコードを記号だけで書く
  • 非同期な処理 - 兼雑記

    http://risky-safety.org/~zinnia/d/2009/06/#20090607-t0-h3-p4 私に関しては、いらなくね? と思ったことは記憶の近傍では無いように思います。似たようなこと何度も書いてる気がしますが、いい機会なのでちょっと自分の考えてることのうち、強く思っていることをまとめてみたいと思います。当たり前な感じの内容ですが。 現状、たぶん asynchronous な処理する時の道具って select/epoll/kqueue ループ + callback coroutine thread process とあって、パフォーマンス的な観点を考えると前者2つはコア使い切れないので、パフォーマンスを考えないといけないソフトウェアがこの世から滅亡しない限り後者2つのどちらかは必要だと思っています。 thread vs process に関しては、よく proc

    非同期な処理 - 兼雑記
    kgbu
    kgbu 2009/06/08
    threadかprocessかcoroutineかそのほかの使い分けとその要因について
  • 年末 - 兼雑記

    「… + 未知成分 10%」セミナー http://d.hatena.ne.jp/m-hiyama/20081225/1230191000 に参加させていただきました。 Erlang は思ってたより面白そうなものなんだなぁとわかりました。来年なんか言語勉強するとすれば Erlang とかそのへんかなぁ。 あと JSONP をわかってなかったことがわかりました。 あと檜山さんはとても話がうまくてステキだった。 言語雑談会 例年のごとく。しらいしさん主催ありがとうございましたささださん会場提供ありがとうございました。 今回の目標は Cryolite さんに C++ について色々聞くということだったんだけど、あんま時間が無くて予習がほとんどできなかった。でもなんか6時に起きたのでいそいそと予習…したら華麗に遅刻。朝は二日酔いもキツい感じだった。 しらいしさんの Haskell プレゼン。 「

    年末 - 兼雑記
  • Android であそぶ - 兼雑記

    やんごとなき事情 により夢電話をゲットしたのでぼんやり遊んでいます。方針としては Java を使わない testsprite を動かす方がネットワークがつながるより価値が高い 以下 Android 上で native binary とたわむれるメモ。ちなみに既に WiFi とかそのへんの機能全部使えなくなってるのでマネしないでください。 Terminal Emulator 適当に Market からゲット。 クロスコンパイラ とりあえず深く考えず下記からダウンロードしてつっこんだ。 arm-none-linux-gnueabi のヤツね。 http://www.codesourcery.com/gnu_toolchains/arm/download.html 後述するけど家のクロスコンパイラ使った方が間違いなく良い。 busybox http://android-dev.g.hatena

    Android であそぶ - 兼雑記
    kgbu
    kgbu 2008/12/27
  • Quine いろいろ - 兼雑記(2008-11-02)

    Quine の難しい点はたぶん、 自分自身を出力しようとして永久に書き終わらないよギャース クォート文字列中にクォート文字を入れられないよギャース という2点じゃないかなぁと思います。前者は変数を使えば簡単です。後者はクォート文字をエンコードできるようにしてやる、っていうのがまぁ基的な考えかたではないかと思いますが、これは色々方法があります。一般的な作り方としては以下とかがすごくわかりやすかったです。 http://d.hatena.ne.jp/KeisukeNakano/20070814/1187070401 format 系 多くの言語で手軽に書ける…と思う。 %s で自分自身を出力できる && クォート文字列は %c で、っていうのが基的な発想。 Ruby だと、 printf a="printf a=%c%s%c,34,a,34",34,a,34 とかが基形。いくつか短くする

    Quine いろいろ - 兼雑記(2008-11-02)
  • 2008-10-01 - 兼雑記 ■[Program] デバッガとスレッドとイベント

    実行パスが一つしか無くて、ユーザやらネットワークやら、外部とのインタラクションもブロッキングして読んで問題ないようなプログラムならいいんですが、まぁなんかそうもいかないことも多く、そういう時はスレッドやら select/epoll やら使ってごにょごにょしてるわけです。でまぁ、あろはさんのとこのコメント欄を荒らさせてもらったんですが、まぁデバッガに欲しいスレッドやらイベントサポートの話。なんとなくもやもや思ってることを適当にまとめてみます。 まずまだマシなスレッドの方。まぁ適当に 100 スレッドくらいのスレッドプールの中の一つのスレッドが SEGV したとする。さあデバッガの出番。とりあえず適当に現在のスレッドの値を調べてみたところ、なんかおかしな値が入ってたとします。でまぁ、シングルスレッドでバグが無いとしたら、レースコンディションです。でそいう時にとりあえず、 thread appl

    2008-10-01 - 兼雑記 ■[Program] デバッガとスレッドとイベント
    kgbu
    kgbu 2008/10/01
    threadのアイデンティティが貧困だからデバッグに困る、というような話、なのかな。
  • ■ - 兼雑記

    なんかバグってるけど accel と horizontal は実装しておいた。

    ■ - 兼雑記
  • 言葉責めの会 - 兼雑記

    http://shinh.skr.jp/h/?AlohakunKotobaZeme とにかくあろは先生多忙で疲れてる中ありがとうございますというのが感想です。私の大学での研究とか5分も問い詰められたら泣き出します。 今までは、 先生: Prolog だと仕様に how を入れんと解けん部分がある 先生: ET だと解っけまーすウッハー 生徒: え、どうやってるの?実装は? 生徒: ETI とかあるけどできる気配ないお (;-;) 生徒: 理論的にはどうなってるの? 先生: 論文参照。でもまだ出版されてないもげもげも で、ただ単に、うさんくさい、というだけの感想になっていたと思う。このへんは当日も言ったんだけど、 実装ができている 理論的にできることがわかっているが実装は無い 理論的にできるともできないともわかっていない 理論的にできないことがわかっている みたいな状態 + あろはさんが説明

    言葉責めの会 - 兼雑記
  • Symbolic Polyglot - 兼雑記

    久々に優雅な時間を過ごしました。もう少し縮みますけど見た目を優先した面もあり。 http://ja.doukaku.org/comment/7271/ まめさんの偉業を見てから二大チューリング完全言語の共演を見たかったのでした。 Symbolic Polyglot Quine とかもできるだろうけど大変そうだなぁ。 Ruby の syntax highlight $/=' ';%#;$/=~('(?{'.(', =$ )'^'_@|_ @||').'$&`,'.('/-).+`&/-'^'__@@_@@@_').'<>})');"#;(___=->(_,*__){$.=/./=~_ $><<([*?`...$&][$.]&&[*$&...?{][$.]?[*?@..$&][~(/@./=~[*$/..?@]*''+_)]+$':_) __[$.]&&___[*__]})[*[*$<]]#"

    Symbolic Polyglot - 兼雑記
  • 更新履歴兼雑記 - Perl記号ゴルフとAcme::EyeDrops

    ここからが題です。 Perl は頭がおかしいです。すごすぎる。この感動を伝えたいと思います。まず Perl の基からです。 Hello world! を書きましょう。 ''=~('(?{'.('[[).[|`%,,/`[/[@$'^'+)@@/^(@@@@@,@),@').'! "})')えーと。このくらいわかりますよね。これは Hello world という一番簡単なプログラムなのでわからない人はちょっとプログラムの才能が無いです。嘘ですが。 Perl では記号だけでは出力もできないかな、というような話をしていたところ、 Acme::EyeDrops の出力は記号だけで出力してるぞ、ということでした。これは見たことがあったのですが、確かに今見ると記号だけです。で、これの出力の意味を理解してたんですが、なんともすごいものでした。書いてから後で Perl ヤロウどものことだから既に常識だ

    更新履歴兼雑記 - Perl記号ゴルフとAcme::EyeDrops
  • Rubyで実装し直したFixnum#timesの方が速い

    http://d.hatena.ne.jp/Gimite/20080802/1217647596 でちょっと思い出した、前からやってみたかった実験をやってみたらだいたい思った通りな感じだった。 class Fixnum def times i = 0 s = self while i < s yield i i += 1 end end end s = 0 1000000.times{|i| s+=i } p s みたいなコードを書くわけです。ご存知の通り、 Ruby の Fixnum#times は C 言語で実装されてます。それを Ruby で実装しなおしたら当然遅くなります。ホント時間のムダです。実はそうでもないんです。 > time ruby1.9 bench.rb 499999500000 ruby1.9 bench.rb 0.10s user 0.00s system 91%

    Rubyで実装し直したFixnum#timesの方が速い
    kgbu
    kgbu 2008/08/19
    インラインのコードとのインターフェースが重くちゃだめだってことかしら。並列処理の粒度の問題となんとなく似てるかなぁ。
  • Rubygrind - 兼雑記

    あんま深く考えず valgrind を Ruby の head のテストに適用してみたところ、結構もにょもにょ漏れてるもんだなぁと気付いたので、いくつか修正してみたりしたのですが、その時案外困るのが、リークする最小のコードが簡単に作れない、ってことでした。 valgrind は C 言語的にどこで malloc を呼んだかは教えてくれるものの、 Ruby コードでどこだったかは教えてくれないからです。修正はできたけど具体的にどこで漏れてるかはよくわからん、ということさえありました。 というわけで、 Ruby 的にどこで漏れたかを教えてくれる valgrind 用の tool 、 Rubygrind を作ってみました。 http://shinh.skr.jp/binary/rmemcheck.tgz これを valgrind-3.3.1 のディレクトリに展開して、 > diff -u con

    Rubygrind - 兼雑記
    kgbu
    kgbu 2008/08/19
    Rubyのコードで、どこでメモリリークが起きているかを指摘するツール
  • x86 とか - 兼雑記

    最近あろはさんの文章を見ると必ず DIS りたくなるので、恋というやつだと思います。若者言葉で言うとツンデレのツンの方。 http://alohakun.blog7.fc2.com/blog-entry-952.html まず Intel ってμop の仕様ってそれなりに公開してたような…と思って少しぐぐったけど、今一つ見当たらず。とりあえず x86 命令が何μopになるかとかいうの見つけたけど Pen Pro 時代とかだった… http://download.intel.com/jp/developer/jpdoc/ia_opti.pdf まぁなんにせよこう、なんかこうまるで情報囲い込んでちょっぱやコンパイラ作ってがっぽがっぽみたいなことは別にインテルさん思ってなくて、 CPU 屋なんだから単に自分とこの CPU を十分に使いこなせるコンパイラも作ることで CPU 売りやすくするってだけ

    x86 とか - 兼雑記
    kgbu
    kgbu 2008/07/12
    MAXQというかmovだけしかないアーキテクチャは、その上モノが楽しかろう。Cell automatonベースの場合はどういう命令セットが作りやすいだろうか?そういや、論理回路もNANDだけで作れたよな。