Ruby

ruby 0.62 のソースコードを復活させた

RubyKaigi の後夜祭で、akr さんが「327 種類の Ruby をビルドする方法 〜0.49 から 2.6.0-preview2 まで〜」という発表をされていました。RubyKaigi 2018 After Party で話したスライドです: 「327 種類の Ruby をビルドする方法 ~0.49 から 2.6.0-preview2…

emruby: emscripten でブラウザで動く MRI

(この記事は Ruby 25th anniversary のための寄稿です)Ruby をブラウザで動かすというと Opal ですが、他の選択肢として、C で書かれた Ruby 処理系を emscripten で JS に変換するという選択肢もあります。 しかし調べてみたところ、mruby を WebAssembly…

SA-IS 法のメモ

suffix array を線形時間で構築する SA-IS 法についてのメモです。SA-IS 法の解説はわりと世の中にいっぱいありますが、実際のプログラムにする方法がよくわからなったり、どうしてそれでうまく行くのか書かれてなくて気持ち悪かったりするものが多くて、自…

RubyKaigi 2017 の予稿:An introduction and future of Ruby coverage library

RubyKaigi 2017 の 2 日目に "An introduction and future of Ruby coverage library" というタイトルで発表します。事前資料の公開が推奨されていたので、簡単ですがどんな内容かを書いておきます。 要約 カバレッジ(テストカバレッジ、コードカバレッジ)…

『Ruby でつくる Ruby』の購入方法

書籍『Ruby でつくる Ruby』が発売されて 2 月ほど経ちました(当時の告知)。いろいろなところでわりと好意的な感想が聞こえてくるので、うれしい限りです。 本書はラムダノートにとっての最初の出版ということで、発売当初は直販サイトでしか入手できませ…

書籍『Ruby でつくる Ruby』が発売されます

ref: https://www.lambdanote.com/collections/frontpage/products/ruby-rubyおかげさまで、ASCII.jp で連載していた『Ruby で学ぶ Ruby』が紙の本になる運びとなりました。わーい。『Ruby でつくる Ruby ― ゼロから学びなおすプログラミング言語入門』と微…

どうぶつしょうぎ名人

どうぶつしょうぎ AI を作りました。絶対に勝てません。無力感を味わってください。ref: http://mame.github.io/dobutsu-shogi-master どうぶつしょうぎとは 3 マス x 4 マスの単純化された将棋です。ライオン(王相当)、ぞう(1 マスしか進めない角行)、…

『Ruby で学ぶ Ruby』非公式あとがき

ref: http://ascii.jp/elem/000/001/230/1230449/「Ruby で Ruby を作りながら Ruby を学ぼう!」という ascii.jp の連載、おかげさまでほぼ予定通りに無事に終わりました。執筆の経緯を書いておきます。昨年の 6 月ごろ、「抽象によるソフトウェア設計」や…

二分探索サンプルコード集(コピペ用)

二分探索は、感覚的なわかりやすさに反してバグが入りやすいことで有名なアルゴリズムです。20 の教科書のうち 15 でバグっていたという報告もあるそうです。実際、自分も書くたびにバグに苦しんできました。変な値を返すだけでなく、out of bounds アクセス…

『Rubyで学ぶRuby』連載開始

「Ruby で Ruby を作りながら Ruby を学ぼう!」というトンデモ連載企画、『Ruby で学ぶ Ruby』を ascii.jp で始めました。ref: http://ascii.jp/elem/000/001/228/1228239/何を言ってるかわからないかもしれないので補足すると、「Ruby(言語)で Ruby(の…

『オブジェクト指向設計実践ガイド』を読んで

オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方posted with amazlet at 16.09.01Sandi Metz 技術評論社 売り上げランキング: 20,383Amazon.co.jpで詳細を見る自著を書いたご縁で、技術評論社さまから贈本いた…

川崎 Ruby 会議 01 で基調講演しました

8/20 (土) に、川崎教育文化会館で川崎 Ruby 会議 01 が行われました。恐れながら、基調講演なるものをさせて頂きました。 Ruby で高速なプログラムを書く from mametter 内容は、東京 Ruby 会議 05 で話した Optcarrot の完全版でした。基調講演というと「…

Optcarrot: Ruby で書かれたファミコンエミュレータ

ウソみたいな本当の話。Ruby でファミコンエミュレータを書いてみました。気になる速度ですが、自分の環境では 20 fps ちょっと出ます。ファミコンは 60 fps なので、実速の 1/3 です。Ruby3x3 (Ruby 3 は Ruby 2 の 3 倍速い)という matz の宣言が実現す…

Writing Qlock

俺の卒業制作書き時計 pic.twitter.com/NSBi45Lj77— K / $uzuki (@BellTreeNursing) 2016, 2月 7うわーすごいなーと思ったので、パクリ インスパイアされてみました。Ruby プログラムで書き時計。 eval(T=%(eval(%(E=27.chr;Z=32.chr;$ ><<E+"[2J";K=->q{(q-q*(1-3844.0/q</e+"[2j";k=->…

『API デザインケーススタディ』の紹介

著者の田中哲さん (@tanaka_akr) から献本をいただきました! *1APIデザインケーススタディ ~Rubyの実例から学ぶ。問題に即したデザインと普遍の考え方 (WEB+DB PRESS plus)posted with amazlet at 15.12.14田中 哲 技術評論社 Amazon.co.jpで詳細を見る本(…

RubyKaigi 2015 終了

2 年ぶりの RubyKaigi 参加でした。相変わらず楽しいですね。自分たちが審査員やらせてもらった TRICK 2015 の発表については前の記事に書いたとおりですが、ひとつ重要なことを書き忘れてました。参考文献ですね。ああいうプログラミングをもっと見たいなー…

TRICK 2015 落選作供養:そろばん時計

TRICK 2015 に投稿して落選したぼくのプログラムはこちら。 $><<"\e[2J";z= 32.chr;loop{s=(0.. 8).map{|i|[i>7??+:?|]* 2*((i>7??-:i==2??=:z)*22)} j=1;Time.now.strftime("%H%M%S" ).bytes{|c|3.upto(9){|i|s[i%8][j+- j[2],3]=(i<8?c%5!=i%5:c<53!=i> 8)…

TRICK 2015 結果発表

RubyKaigi 2015 で発表させていただきました。入賞作品はこちら。https://github.com/tric/trick2015発表資料はこちら。http://www.slideshare.net/mametter/trick2015-resultsたくさんの投稿ありがとうございました!今回の入賞作は、発表会場でパッと見て…

ハッシュは頻繁に参照する値を最後に入れると高速

明日から RubyKaigi なので、ちょっとした小ネタを一つ。例えば、0 から 9999 までをハッシュに順に入れます。 h = {} 10000.times do |n| h[n] = true end このとき、h[9998] や h[9999] は、h[0] や h[1] より高速です。どのくらい高速かというと、 1_000_…

TRICK 2015 (第二回 超絶技巧 Ruby 意味不明コンテスト in rubyKaigi) 開催中です

Ruby で役に立たないけどなんか面白いプログラムを作って競おう、というプログラミングコンテスト、TRICK が 2 年ぶりに開催されています。現在投稿募集中。https://github.com/tric/trick2015/blob/master/README.ja.md一言で言えば IOCCC の Ruby 版です。…

『あなたの知らない超絶技巧プログラミングの世界』発売しました(記念碑あり)

書籍『あなたの知らない超絶技巧プログラミングの世界』、ついに本日発売されました!あなたの知らない超絶技巧プログラミングの世界posted with amazlet at 15.09.01遠藤 侑介 技術評論社 売り上げランキング: 3,000Amazon.co.jpで詳細を見る本について詳し…

告知:「超絶技巧プログラミング」の本を書いてます

突然ですが告知です。今までこの日記とかで公開してきた奇妙なプログラムを集めて、本を書くことになりました。今日はエイプリルフールではありません。コンセプトは、「実務に役立たないプログラミング本」です。誰得?という声が聞こえてきそうですが、手…

アスキーアート化放射線耐性 Quine

半年以上ぶりの更新?ref: https://github.com/mame/radiation-hardened-quine/blob/master/rquine.rb2 月に公開した放射線耐性 Quineをアスキーアート版にバージョンアップしました。旧版はナイーブな冗長化として、同じコードを 2 回繰り返す手法をとって…

放射線耐性 Quine (1 文字消しても動く Quine)

ref: https://github.com/mame/radiation-hardened-quine放射線はメモリエラーを引き起こすらしいです。そんな放射線が飛び交う過酷な環境でも、できることなら Quine したい。ということで、プログラム内の 1 文字をランダムに消しても元のプログラムを出力…

クリーネの再帰定理+ Quine が書けることの証明

クリーネの再帰定理のプログラマ向け説明(+証明)を書いてみました。何か間違ってたら教えて! 前提 すべてのプログラムは文字列を 1 つ入力して文字列を 1 つ出力する、という世界を考えます。なお、プログラム自体も当然文字列です。 プログラムは eval …

Merry Quine-mas 2013

今夜は、年に一度の W. V. Quine の命日イブです。 %;";;t=%!k$2#3RWpBs%Yseml,Ia6-m8zP}9my+dHN`PLgB.Fr5>*`Y{6;l.1[PzNd~iEm8Y&b>{aC> vTMNq>T7Ynv.|i#P[S~z6X0R.Ndg5*LL.DSOU5"-:z*QoRjaYx=$pCEW:}`u~q,o'FOblKwA63ZhQqM v"I|4[X5T@C],2VcvKRU10x$Nh,z;3R…

ICFP Programming Contest 2013 Judges' Prize 受賞しました

わーい。 ICFPc での受賞は 7 年ぶり 2 回目 (前回) 。*1 コンテストの内容と自分の戦略はすでに書いた通りです。特に以下の点が評価されたそうです。 スクリプト言語 (Ruby) でコンパクトかつエレガントに書かれていること そのわりに、今回のような計算速…

メジャーな数学関数を自力計算する

三角関数や対数などの近似計算の方法を短い Ruby コードでご紹介。だいたいマクローリン展開です。子供のころ何気なく sin とか log とか使っていて、ふと「コンピュータはどうやってこの値を計算してるんだろう」と思ったものです。そんな昔の自分に見せて…

RubyKaigi 2013 参加記録

2 年ぶりの RubyKaigi 2013 でした。全日通して風邪気味だったんで、現地に行ったのは 2 日目の午後と 3 日目の午後だけという体たらくでしたが、それでもしっかり楽しませて頂きました。印象に残ったことだけ抜粋的に記録しときます。 初日 家でずっと ust …

TRICK 2013 結果発表

RubyKaigi 2013 で発表させて頂きました。発表資料はこちら。(なんか embed できないので URL だけ。後で考える)http://www.slideshare.net/mametter/trick2013-results締切直前まで投稿がほとんどなくてすごくハラハラしてたんですが、直前にぞろぞろっと来…