タグ

ブックマーク / mametter.hatenablog.com (7)

  • Ruby 2.0 リリース週記 (2012/05/14 - 20) - まめめも

    Ruby 2.0.0 のリリースに向けた活動について、毎週くらいのペースで書きたいなあと思ったので始めます。飽きたらやめます。 ユーザ視点で面白そうな機能や、リリースに向けた進捗について書くつもりです。コミット単位の詳しいニュースは nagachika さんの ruby-trunk-changes を見るといいです。 Ruby 2.0 について Ruby 1.8 、1.9 に続く Ruby の新系統です。 新系統といっても、RubyKaigi 2010 の開発者会議にて、まつもとさんから「100% 互換」のスローガンが発表されていますので、原則として仕様変更は入らない予定です。*1 今のところ 2.0 に入ることが発表されている大きめの新機能は、 Module#prepend キーワード引数 の 2 点です。[ruby-core:39837] それぞれの詳細は、そのうち説明したいと思います

    Ruby 2.0 リリース週記 (2012/05/14 - 20) - まめめも
  • あけましておめでとうございます 2011 - まめめも

    古来より日のプログラマの間には、「正月はフラクタル」という風習があります。 フラクタルについて、知識としては知っていても、実際にプログラムを書いたことはない人も結構いると思います。そんなフラクタルに、年に一度くらいは想いを馳せたり、手を動かしたりしてみよう、という風習です (去年の例: (1) (2)) 。 ちなみになぜ正月かと言うと、毎日と毎年が自己相似して末永く平穏に暮らせることを祈念するとか、もちに生えたカビがマンデルブロ集合に見えたとか、門松が L-system を想起させたとか、諸説ありますがわかっていません。 今年はコッホ曲線してみました。難読化などはしませんでした。 R3 = Math.sqrt(3) AA = " _,_ _,_..,_wypy _,_>qjgrq,gwamg _;_~ypyrrrLmmmy~~~g~qmgrmpgmmmm _,_\ ],_..,_4ZZy

    あけましておめでとうございます 2011 - まめめも
  • parallel と concurrent 、並列と並行の覚え方 - まめめも

    縦軸が時間、横軸がタスクと覚える。 なにやら縦棒が多ければ、同時に実行する様を表している。 なにやら横棒が多ければ、タスク同士が通信しながら実行する様を表している。 行と列の覚え方のパクリです。 以下余談。 タイムシェアリング *1 のことを concurrent という人もいる *2 けれど、何人かの有識者に聞いてみたところ、「複数のタスクが協調して実行すること」という概念を指すというのが正しいようで、タイムシェアリングはその実装形態のひとつらしい。concurrent と parallel は独立した概念で、concurrent なものを parallel に実行するというのもあるらしい。 また、parallel は 1 つのタスクを分割して実行するニュアンス、concurrent は複数のタスクが協調して実行するニュアンス、もあるらしい。 ほとんど伝聞なので、間違ってたら教えてくださ

    gologo13
    gologo13 2010/09/21
  • The Qlobe - まめめも

    RubyConf に参加するためには、やっぱり 山手 quine みたいに東京限定ネタは通じにくいですよね。これからは Quine もグローバルでないといけないと感じました。 でも世界的に有名な環状線とか知らないので、世界的に有名な回るものを書いてみました。 v=0000;eval$s=%q~d=%!^Lcf<LK8, _@7gj*LJ=c5nM)Tp1g0%Xv.,S[<>YoP 4ZojjV)O>qIH1/n[|2yE[>:ieC "%.#% :::##" 97N-A&Kj_K_><wS5rtWk@*a+Y5 yH?b[F^e7C/56j|pmRe+:)B "##% ::##########" O98(Zh)'Iof*nm.,$C5Nyt= PPu01Avw^<IiQ=5$'D-y? "##: ###############" g6`YT+qLw9k^ch|K'),tc 6ygIL8x

    The Qlobe - まめめも
    gologo13
    gologo13 2010/09/05
    いやぁいみわからんす
  • 山手 quine - まめめも

    t="+,m-n./mAm0o1p23a4q56r7sBt89u-t-1:v;A<w4x=y1z>[?]A^@CD_ CD_EsF`GHmIJbKa*l";eval$s=%w{F=%q{ceY8#<DvO1=x&t9CSOqMYkzH U.kCpz+Vo8hB.1AF&tq21+$/IrMY]U.aDd!-1y!4MMGQm6m?bYh($QMYpX s4g,x1UlbNKH?>NzbisMn?sT@m3,F.Abb`xW!r%'%Ybee>xkUfjf[(*^Nd Xo_"@hQh%Fx*q[iB7EM"suSG8GVOIzceg/O=4CL,d[-k]twgVP`&wcfaT` 2M)j8sFY?(HKzOrVCHO_694[Uq8g @i/i;tMBG#;-;B]rV[])`3'<os^. OV(SA<=ok%m[iV#qt[&dJ7SIdB;/ VUnVIrH;hEJ*QWD"E+

    山手 quine - まめめも
  • 僕でもわかる継続と部分継続 - まめめも

    callcc と shift/reset についてわかるとこだけ書いてみます。 継続 callcc という操作は、現在から実行終了まで、継続をまるごと取り出します。例題。 p [1] + callcc {|k| [2] + k.call([3]) } #=> [1, 3] callcc では callcc がリターンしてから実行終了するまでの継続 k が取り出せます。k.call([3]) で継続が呼ばれると、いきなり「callcc が [3] を返した瞬間」に実行が飛びます。つまりこんな感じ。 p [1] + [3] あとは自明ですね。"[2] +" のあたりは無視されます。 部分継続 shift という操作は、現在から reset まで、継続の一部だけを取り出します。この継続の一部を部分継続といいます。例題。 p [1] + reset { [2] + shift {|k| [3] +

    僕でもわかる継続と部分継続 - まめめも
    gologo13
    gologo13 2010/05/27
    [shift/reset]
  • Ruby でパターンマッチ - まめめも

    ref: 未来の国のアリス - d.y.d. で紹介されている implicit future が Ruby に欲しい! # promise を作る x = Promise.new a = [1, x, 2, x, 3, x] # 今はまだ値になっていない p a #=> [1, _promise_, 2, _promise_, 3, _promise_] # この promise は 42 に決めた! (代入ではないよ) x === 42 # x の箇所は勝手に 42 になっている p a #=> [1, 42, 2, 42, 3, 42] というのも、これがあれば Ruby でパターンマッチができる気がするんですよね。こんな感じに。 # 何にでもマッチする箇所には _ と書く (実体は Promise.new) def _ Promise.new end # + と定数だけからなる抽象

    Ruby でパターンマッチ - まめめも
    gologo13
    gologo13 2010/05/23
    implicit futureでパターンマッチ
  • 1