タグ

ブックマーク / d.hatena.ne.jp/shunsuk (7)

  • RubyでPythonのdecoratorを実装する。 - このブログは証明できない。

    こちらのスライド。RubyRubyを拡張する。つまりメタプログラミングの話。 Extending Ruby with Ruby // Speaker Deck メタプログラミングを使って他の言語の機能を実装しようという内容になってる。 Python: Function decorators Scala: Partial application Haskell: Lazy evaluation 今回は、この中でPythonのdecoratorを実装するというのをピックアップ。 githubにソースコードがあがってて、スライド中では未解決になってた問題がすでに解決されている。 michaelfairley/method_decorators ここから載せるコードは、githubの方じゃなくてスライド中のコードに一部手を入れたものになってる。ひとつのメソッドに複数のdecoratorを指定でき

    riywo
    riywo 2013/10/23
  • YAMLで改行する方法 - このブログは証明できない。

    Railsのtest/fixturesにテストデータを用意するときなど、改行が入った文字列を使いたい場合がありますね。\nを入れてもダメです。代わりに特別な書式をつかいます。 memo: | 1行目です。 2行目です。 3行目かな? 4行目いっちゃう? 上の書き方だと、最後の行の末尾にも改行が入ります。入れたくない場合は、こう書きます。 memo: |- 1行目です。 2行目です。 3行目かな? 4行目いっちゃう? ちなみに、明示的に最後に改行を入れることを示したい場合は、こうです。 memo: |+ 1行目です。 2行目です。 3行目かな? 4行目いっちゃう? 文字列を加工して\nを入れたりしなくていいので、YAMLってステキだったんですね。

    riywo
    riywo 2013/10/23
  • Rubyのリフレクション解説(eval族のはなし) - このブログは証明できない。

    Rubyのリフレクションについてステキな記事を見つけてしまいました。 no title 前提知識 Rubyでは何でもオブジェクトだと言われます。まずは、この辺について。 最初に思い浮かぶのはこれですね。 5.class #=> Fixnum "hello".class #=> String class自体はどうでしょうか? class Foo;end #=> nil Foo.class #=> Class ここから2つのことが解ります。Fooは定数であるということ。そしてClass型のオブジェクトを参照しているということ。 これはどうでしょう? Foo = Class.new (irb):8 warning: already initialized constant Foo => Foo 予想通りエラーになります。定数 Foo を再度初期化しようとしたからです。 Fooクラスを定義したい時

    riywo
    riywo 2013/07/03
  • Rubyのdo endと{ }は違うらしいよ。 - このブログは証明できない。

    メソッドにブロックを渡す時には、2通りの書き方があります。 [1, 2, 3].each do |i| puts i end [1, 2, 3].each { |i| puts i } この違いを意識することはあまりないのですが。。 マニュアルを見ると。 ただし、do...endと {...}で動作が異なる場合があります。 foobar a, b do .. end # foobar がブロック付きメソッドとして呼び出されます foobar a, b { .. } # b がブロック付きメソッドとして呼び出されます これは{ }の方がdoブロックよりも結合強度が強いためです。 no title となっています。 さっそく、実験。 def foobar a, b if block_given? yield a, b else puts a * b end end do end foobar

    Rubyのdo endと{ }は違うらしいよ。 - このブログは証明できない。
    riywo
    riywo 2013/06/13
  • Rubyのblock、Proc、lambdaを理解する - このブログは証明できない。

    新年おめでとうございます。2009年の最初のネタはプログラミングのネタにすることにしました。 Rubyについてのステキなエントリーがあったので、紹介します。 no title 私は翻訳能力がないばかりか、リーディング能力も貧相です。ぜひ、原文を読んでみてください。 はじめに Rubyblock、Proc、lambdaはパワフルですが、解りにくい。Rubyはクロージャを使う方法が4つあって、それぞれチョットずつ違います。ここでは、そのへんを解説したいと思います。 Block もっとも簡単で、かつRubyっぽいと言えば、Blockですね。 array = [1, 2, 3, 4] array.collect! do |n| n ** 2 end puts array.inspect # => [1, 4, 9, 16] 何が起こっているか? まず、block付きでArrayの"collect

    riywo
    riywo 2013/02/18
  • モジュール変数はインクルードしたクラスでも共有される。 - このブログは証明できない。

    iPadアプリをつくっていたはずが、Objective-CではなくRailsでつくっていました。きっと疲れているんだと思います。だから今日も小ネタでいいや。 Rubyリファレンスマニュアルより。 モジュールで定義されたクラス変数(モジュール変数)は、そのモジュールをインクルードしたクラス間でも共有されます。 module Foo @@foo = 1 end class Bar include Foo p @@foo += 1 # => 2 end class Baz include Foo p @@foo += 1 # => 3 end サンプルコードを追加してみる。 module Foo @@foo = 1 def print_foo p @@foo end end class Bar include Foo @@foo += 1 def test print_foo end end B

    riywo
    riywo 2012/12/05
  • タブレット型MacBookついに登場!「MacBook Paper」を公開! - 医者を志す妻を応援する夫の日記

    以前より噂されていたタブレット型MacBookがついに登場した。その名も「MacBook Paper(マックブック・ペーパー)」。アルミ削り出しの前モデルから一転、素材には紙が使用されている。MacBook Airを超える史上最薄を実現、さらに史上最軽量となっている。さっそく、入手したMacBook Paperを使ってみた。 体は紙で作られており、古紙(70%)入りの再生紙が使用されている。ブラウンのボディに白いアップルのロゴが光る。 B5大学ノートとほぼ同じサイズであり、従来のMacBookに比べるとはるかに小さい。 MacBook Airよりも薄い。「ソフィーの世界」と比較してみると一目瞭然だ。 間違いなく史上最軽量のノートブックだ。鞄の隙間にスッと差し込んで持ち運ぶことができるだろう。 体を開いたところ。大学ノートをモチーフに作られており、一見しただけでは普通の大学ノートと見分け

    タブレット型MacBookついに登場!「MacBook Paper」を公開! - 医者を志す妻を応援する夫の日記
    riywo
    riywo 2008/11/07
    なんという釣りwww マインドマップツールが一番吹いたw
  • 1