タグ

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

  • Rubyと型についてのポエム - まめめも

    zenn.dev matz はじめコミッターの型に対する姿勢にも疑問を持っています。 というご意見が自分に刺さった気がしたので、他の話題はともかくこの点に関してだけ、ポエムを書きます。 「Rubyに型が欲しい」というのは、「もっと速い馬が欲しい」だと思っています。意味を知らない人は ヘンリー・フォード もっと速い馬が欲しい で検索してください。 これは批判でも皮肉でもありません。みんなが馬の乗り方を知っている世界では、誰も乗り方を知らない自動車より、速い馬のほうが確実で合理的です。まして、自動車が当に実現できるかどうかわからない段階では。なので、他言語で型注釈を書くことによるプログラミング体験が良いと思った人が、それをRubyでも享受したいと思うのは自然だと思います。実際、Steep や Sorbet は Ruby でそういうプログラミング体験を提供することを目指していて、すでにある程度

    Rubyと型についてのポエム - まめめも
    korin
    korin 2020/12/15
  • カロリーメイトリキッドのQuineを書きました - まめめも

    縁あって、カロリーメイトリキッドのプロモーション用にちょっとした Ruby プログラムを書かせてもらいました。 www.otsuka.co.jp ↑のリンクを開いて、cd .Quine したところにある CML_quine.rb がそれです。 cat CML_quine.rb とすると中身が見えます。ruby CML_quine.rb すると動きます。 CalorieMate-Liquid-Quine 実行してみましたか?サイト上で気楽に実行できるので、ぜひ試してみてください。 これがどういうプログラムなのか、簡単に解説しておきます *1 。 ローカルでの遊び方 サイト上で ruby CML_quine.rb をするだけでも楽しめますが、自分のパソコンに保存するとより楽しめます。 まず、cat CML_quine.rb した中身をまるごとコピーしてください。 n=2;で始まる行の頭から、'

    カロリーメイトリキッドのQuineを書きました - まめめも
    korin
    korin 2020/08/06
  • CPU律速なRuby/Pythonコードはデフォルト設定のdocker上で遅くなる - まめめも

    English version 要約 dockerはデフォルトでセキュリティ機構(Spectre脆弱性の対策)を有効にします。この影響で、RubyPythonのようなインタプリタは速度が劣化します。特にCPU律速なプログラムで顕著に遅くなります(実行時間が倍くらいになることがあります)。 現象 Rubyで1億回ループするコードを、直接ホスト上で実行する場合と、docker上で実行する場合で実行時間を比較してみます。 直接ホスト上で実行した場合: $ ruby -ve 't = Time.now; i=0;while i<100_000_000;i+=1;end; puts "#{ Time.now - t } sec"' ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux] 1.321703922 sec docker

    CPU律速なRuby/Pythonコードはデフォルト設定のdocker上で遅くなる - まめめも
  • 書籍『Ruby でつくる Ruby』が発売されます - まめめも

    ref: https://www.lambdanote.com/collections/frontpage/products/ruby-ruby おかげさまで、ASCII.jp で連載していた『Ruby で学ぶ Ruby』が紙のになる運びとなりました。わーい。『Ruby でつくる Ruby ― ゼロから学びなおすプログラミング言語入門』と微妙にタイトルが変わったので注意。 一番大切なことを先に言っておくと、書店に並ぶ予定はありません。ラムダノート株式会社という出版社の直販サイトで購入できます。アスキーじゃないの?と聞かないでください。追記:今はいろいろ購入方法が増えました。『Ruby でつくる Ruby』の購入方法をご参照ください。 ラムダノートは『型システム入門』のときにもお世話になった編集の鹿野さんが立ち上げた新しい出版社です。鹿野さんと高尾さんの編集コンビは、技術書については知る限

    書籍『Ruby でつくる Ruby』が発売されます - まめめも
  • "Purely Functional Data Structures" の邦訳『純粋関数型データ構造』が発売されます - まめめも

    純粋関数型データ構造posted with amazlet at 17.03.16Chris Okasaki KADOKAWA (2017-04-28) 売り上げランキング: 266 Amazon.co.jpで詳細を見る 伝説の名著、"Purely Functional Data Structures"(通常 PFDS)を翻訳しました。4 月末にアスキードワンゴから発売されます。 『20分でわかる Purely Functional Data Structures』などを通じて日に PFDS を布教した @kinaba との共訳です。ちなみに編集さんはアスキードワンゴ編集長の鈴木嘉平さん。 関数型プログラマ向けの紹介 「リストの結合が O(n) で遅いな」とか「まともなキューはどうやって作るの」とかいった問題に一度は直面したことがありますよね。純粋関数型プログラミングではどうしても無理、

    "Purely Functional Data Structures" の邦訳『純粋関数型データ構造』が発売されます - まめめも
  • 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 でパターンマッチ - まめめも
    korin
    korin 2010/05/23
  • simpletrace: ライブラリのスタックトレースを消すライブラリ - まめめも

    例えば、こういうスタックトレースをしばしば見ると思います。 $ ruby19 -ruri -e 'URI(nil)' /home/mame/work/ruby19/local/lib/ruby/1.9.1/uri/common.rb:156:in `split': bad UR I(is not URI?): (URI::InvalidURIError) from /home/mame/work/ruby19/local/lib/ruby/1.9.1/uri/common.rb:174:in `p arse' from /home/mame/work/ruby19/local/lib/ruby/1.9.1/uri/common.rb:626:in `p arse' from /home/mame/work/ruby19/local/lib/ruby/1.9.1/uri/common.rb:

    simpletrace: ライブラリのスタックトレースを消すライブラリ - まめめも
    korin
    korin 2009/06/27
  • rirb を github に登録して gem 化した - まめめも

    はるか昔に rirb (Remote IRB) というのを作って放置していましたが、github に登録して gem を公開してみました。せっかくなので再紹介。 rirb (Remote IRB) とは 実行中の Ruby プログラムにアタッチして irb プロンプトを開かせることができます。グローバルな状態を観察したり変更したりできます。 インストール $ gem install mame-rirb --source=http://gems.github.com/ 使い方 以下は数字をカウントアップするだけのサンプルコード。 $i = 0 loop do p $i $i += 1 sleep 0.5 end これを -rrirb 付きで実行します *1 。 $ ruby -rrirb count.rb 0 1 2 3普通にカウントアップしますね。 別のターミナルから同じディレクトリで r

    rirb を github に登録して gem 化した - まめめも
    korin
    korin 2008/10/25
  • Ruby で packrat parser - まめめも

    packrat parsing というパーサの実装方法があります。特徴は、再帰下降パーサ + 無限先読み可能 + memoize*1 という感じです。僕が下手な説明をするより、英語わからなくても Haskell わかればわかる素晴らしいスライドやPappy (reference implementation) を参照してもらったほうがいいです。 で、練習として Ruby で packrat parser を使って足し算と掛け算だけの電卓を作ってみました。 $ ruby arith.rb 1 + 2 + 3 => 6 1 + 2 * 3 => 7 1 + 2 * (3 + 4) => 15文法はこんな感じ。 式      = 空白 加算式 文字列終端 加算式    = 乗算式 ("+" 乗算式)* 乗算式    = プリミティブ ("*" プリミティブ)* プリミティブ = 数値 / "("

    Ruby で packrat parser - まめめも
  • 1