タグ

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

  • 新雑誌「n月刊ラムダノート」の『「コルーチン」とは何だったのか?』の草稿を公開します - まめめも

    Ruby でつくる Ruby』などでお世話になっているラムダノートが、新しい雑誌「n月刊ラムダノート」を創刊しました。 www.lambdanote.com コンピュータ関係の技術情報の記事だけが載るそうです。創刊号は、『TCPの再送制御機構』、『「コルーチン」とは何だったのか?』、『MLOpsの歩き方』、の 3 です。 『TCP の再送制御機構』は、パケットを送ってから返事が来るまでの RTT (Round-Trip Time) を計測する方法や、RTT を使った再送のアルゴリズムや、RTT を使わない再送のアルゴリズムなど、TCP の再送に関する仕様・実装の歴史から最新提案までを、日語話者の中では間違いなく世界一詳しい第一人者である西田佳史さん(@nsd)が広く深く紹介しています。 『「コルーチン」とは何だったのか?』は、ぼくが書きました。伝統的なコルーチンの説明から、JavaS

    新雑誌「n月刊ラムダノート」の『「コルーチン」とは何だったのか?』の草稿を公開します - まめめも
    tanku
    tanku 2019/03/29
  • どうぶつしょうぎ名人 - まめめも

    どうぶつしょうぎ AI を作りました。絶対に勝てません。無力感を味わってください。 ref: http://mame.github.io/dobutsu-shogi-master どうぶつしょうぎとは 3 マス x 4 マスの単純化された将棋です。ライオン(王相当)、ぞう(1 マスしか進めない角行)、キリン(1 マスしか進めない飛車)、ひよこ(歩相当、にわとりに成ったら金相当)の 4 種類の駒を動かして、相手のライオンを取るか、トライ(ライオンを一番奥の行まで運ぶ、ただし直後に取られる場合はだめ)に成功すれば勝ちです。詳しくは Wikipedia の記事を見てください。 どうぶつしょうぎは後手必勝であることが知られています(研究報告)。つまり、後手が正しくプレイする限り、先手は絶対に勝てません。どうぶつしょうぎ名人は常に正しくプレイするので、先手のあなたは絶対に勝てません。 なんで作ったの

    どうぶつしょうぎ名人 - まめめも
    tanku
    tanku 2017/02/12
  • 『Ruby で学ぶ Ruby』非公式あとがき - まめめも

    ref: http://ascii.jp/elem/000/001/230/1230449/ 「RubyRuby を作りながら Ruby を学ぼう!」という ascii.jp の連載、おかげさまでほぼ予定通りに無事に終わりました。執筆の経緯を書いておきます。 昨年の 6 月ごろ、「抽象によるソフトウェア設計」や「型システム入門」のときにおせわになった編集者の鹿野さんに声をかけて頂きました。「ふつうの Ruby 入門はもうたくさんあるので、ちょっと変わった Ruby 入門を書けないか」という話でした。 それを聞いた瞬間、「Ruby インタプリタの開発を通して Ruby を学ぶ」という構想が湧きました。Ruby は主に Web やテキスト処理を対象としているので、言語処理系や記号処理を題材にした入門は目新しそうだし、なによりそういうのに興味を持つ Ruby ユーザがもっと増えてほしい。

    『Ruby で学ぶ Ruby』非公式あとがき - まめめも
    tanku
    tanku 2017/01/19
    “拙著もどうぞあわせて読んでください。Ruby プログラムのサンプルがいっぱい載っています。”
  • 『Rubyで学ぶRuby』連載開始 - まめめも

    RubyRuby を作りながら Ruby を学ぼう!」というトンデモ連載企画、『Ruby で学ぶ Ruby』を ascii.jp で始めました。 ref: http://ascii.jp/elem/000/001/228/1228239/ 何を言ってるかわからないかもしれないので補足すると、「Ruby(言語)で Ruby(のインタプリタ)を作りながら Ruby(でのプログラミング)を学ぼう!」ということです。Ruby でのプログラミングを学ぶなら、Ruby インタプリタ以上の題材はありません(断言)。Ruby というプログラミング言語の質を、外側(ユーザ視点)と内側(処理系実装者視点)の両面で見ていきます。 対象読者は「Rubyを学びたいプログラミング初心者」です。Ruby 言語について最低限のことを伝えるところから始めるので、すでに Ruby を知っている人はダルく感じるかもし

    『Rubyで学ぶRuby』連載開始 - まめめも
    tanku
    tanku 2016/09/15
  • Optcarrot: Ruby で書かれたファミコンエミュレータ - まめめも

    ウソみたいな当の話。Ruby でファミコンエミュレータを書いてみました。 気になる速度ですが、自分の環境では 20 fps ちょっと出ます。ファミコンは 60 fps なので、実速の 1/3 です。Ruby3x3 (Ruby 3 は Ruby 2 の 3 倍速い)という matz の宣言が実現すれば、実速が達成されることになりますね! 試してみたい人はこんなふうに実行してください。 $ gem install ffi $ git clone http://github.com/mame/optcarrot.git $ cd optcarrot $ bin/optcarrot examples/Lan_Master.nesSDL2 か SFML が適切にインストールされている必要があります。Debian/Ubuntu なら apt-get install libsdl2-dev で。 Ru

    Optcarrot: Ruby で書かれたファミコンエミュレータ - まめめも
    tanku
    tanku 2016/04/01
  • 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.abs2)**0.5) /2};I=->f,a,b,z,t=p{(a-b).abs>(f<1?1:1-(K[a]-c=K[b]). abs)?I[f,c= (a+b)/2,b,I [f,a,c,z,t],t :''''''''''''''''''''''''''''''': ]:f<1?(x,y=b. rect;d="'."[y%2 : : ];c=z[y/2+5];c[ x+=58]=t||(

    Writing Qlock - まめめも
    tanku
    tanku 2016/02/10
  • [Ruby] Ruby 3.0 の特大の非互換について - まめめも

    タイトルは釣りです。すみません。Ruby 3.0 はかなり先の将来の話なので、最終的にどうなるかはわかりません。でも Ruby 3.0 に重大な変更が予定されているのは事実なので、一緒に考えて欲しいと思います。 immutable string literal Ruby 3.0 では文字列リテラルをデフォルトで immutable (破壊的変更不可) にする、という方針が『決定』しました。(Feature #11473: Immutable String literal in Ruby 3) つまり、次のようなプログラムが動かなくなります。(当チケットから少し改変して引用) sql = "SELECT #{sec_id}, pt.path, st.doc_count " sql << "FROM #{stats_tablename} AS st " #### ←ここで例外: can't m

    [Ruby] Ruby 3.0 の特大の非互換について - まめめも
    tanku
    tanku 2015/10/04
  • Quine リレー - まめめも

    ref: https://github.com/mame/quine-relay/ 以下は、自分自身を出力する REXX プログラムを出力する Python プログラムを出力する R プログラムを出力する (...略...) を出力する Scala プログラムを出力する Ruby プログラムです。合計 50 言語を使います。 eval$s=%q(eval(%w(B=92.chr;N=10.chr;n=0;e=->(s){s.gsub(/[#{B+B+N}"]/){B+(N==$&??n:$&)}};E=->(s){'("'+e[s]+'")'} ;d=->(s,t=?"){s.gsub(t){t+t}};D=->(s,t=?@){s.gsub(B){t}};Q=->(s,t=?$){s.gsub(t){B+$&}};puts(eval(%q("objectXQRX extendsXApp{

    Quine リレー - まめめも
    tanku
    tanku 2013/07/15
  • RubyKaigi 2013 参加記録 - まめめも

    2 年ぶりの RubyKaigi 2013 でした。全日通して風邪気味だったんで、現地に行ったのは 2 日目の午後と 3 日目の午後だけという体たらくでしたが、それでもしっかり楽しませて頂きました。 印象に残ったことだけ抜粋的に記録しときます。 初日 家でずっと ust 見てました。 matz のキーノート 「(他言語作ってきたやつを) 全力で潰す」みたいに毒のあること言ってなかったと思うけど、そういうこというと潰す相手が出てこないので、「言語作るの楽しいよ」と言っておいて、いざ作ってきたやつ全力で潰すのだろう。 hsbt さんの root 話 hsbt さんをコミッタに推薦したのは、ぼくの Ruby コミッタ活動の業績 top 3 に入ると自負しています。ほっといてもそのうちなったんだろうけど。 ko1 の RGenGC 話 アルゴリズムに当に問題ないんか、ずっと気になっている。。。

    RubyKaigi 2013 参加記録 - まめめも
    tanku
    tanku 2013/06/04
  • TRICK 2013 結果発表 - まめめも

    RubyKaigi 2013 で発表させて頂きました。 発表資料はこちら。(なんか embed できないので URL だけ。後で考える) http://www.slideshare.net/mametter/trick2013-results 締切直前まで投稿がほとんどなくてすごくハラハラしてたんですが、直前にぞろぞろっと来て、結果的には入賞作品だけで二桁を数えることができ、ほっとしました。審査って面白いですね。 来年も同じようにできるかどうかは正直わからんのですが、できたらやりたいですね。というか他の人が主導でやってくれてもいいですよ。 次回に備えて反省点や心残りをつづっておきます。 もうちょっと計画的に。スタートも資料完成も遅くて、RubyKaigi 運営に大変迷惑かけてしまった。 告知を Google Sites でやったけど、GitHub Pages の方がよかった気がする。来年は

    TRICK 2013 結果発表 - まめめも
  • Ruby 2.0.0 リリース週記 (2012/06/04 - 06/10): 新機能提案のスライド募集 - まめめも

    今回はみなさんにアナウンスがあります。 Ruby 2.0 リリースマネージャの遠藤です。 機能提案の一次締め切り (8/24) まであと 3 か月を切りました。 提案の進捗はいかがでしょうか。matz の返事がなくてどうにも進まない? そんなあなたに、機能提案を加速する大チャンスをご案内します。 7 月に東京で matz を含めた開発者会議を行い、機能提案の採否判定会を行う計画をしています。 そこで matz から accept の一言が出れば、めでたく採択決定。 しかし現時点で feature ticket は 350 以上もあります。チケットを順次眺めていては何日あっても足りません。 そこで、この会議を円滑に行うために、意欲のある機能提案者や推薦者のご協力をお願いしたいと思います。 お願いしたいこと: 「1 分で説明できる提案スライド」を作ってください スライド 1 枚 (相当) 必ず

    Ruby 2.0.0 リリース週記 (2012/06/04 - 06/10): 新機能提案のスライド募集 - まめめも
    tanku
    tanku 2012/06/13
  • RubyKaigi 2011 終了 - まめめも

    参加してました。コミッタ特権でタダ飯をらえるのも残念ながら最後です。 今まではマジタダ飯にならないように何かしら発表することを心がけてたんですが、今回はネタ準備できず、ついに聞くだけ。"1.8 and 1.9" でちょびっとだけ壇上出たけど、その分弁当もらってしまったし。申し訳ない。なのでせめて見た発表ごとの一言感想を書きました。最後に。 そして Ruby とかなり関係ない Alloy は、ジュンク堂出張店で販売していただき、個人的な予想をはるかに上回る人数 (予想 1 桁、結果 2 桁) に汚い字でサインさせていただきました。ありがとうございます!おまえら買ったばかりのを汚していいのか!ちなみにサインは実行可能な Quine になっています。typo してなければ RubyKaigi 中のコミッタの行動にプライバシーはないと思うので、サインさしあげたコミッタだけ晒すと mrkn さ

    RubyKaigi 2011 終了 - まめめも
  • /dev/dsp で音声を鳴らす方法 - まめめも

    超絶技巧 Ruby プログラミングの質疑で「どうやって音を鳴らしているのか」という質問があったので、自分のための記録を兼ねて簡単に紹介。 といっても Linux Sound programming with OSS API にある通り。Ruby で書くとこんな感じ。 # デフォルトでは 8bit 8000 Hz SampleSize = 256 SamplingRate = 8000 # ... 0:ラ 1:ラ# 2:シ 3:ド 4:ド# 5:レ 6:レ# 7:ミ 8:ファ 9:ファ# 10:ソ 11:ソ# 12:ラ ... tone = 3 # ボリューム: 0 〜 SampleSize/2 まで volume = 60 # 再生する長さ: 秒 length = 2 # 周波数: 基準のラは 440Hz 、1 オクターブ上がると倍になる freq = 440 * 2**(tone / 1

    /dev/dsp で音声を鳴らす方法 - まめめも
  • RubyKaigi 2010 終了 - まめめも

    参加してました。 「超絶技巧 Ruby プログラミング」の発表資料と、発表で使ったソースコードを以下に置いておきます。 ref: http://dame.dyndns.org/misc/rubykaigi2010/rubykaigi2010-endoh.ppt ref: http://dame.dyndns.org/misc/rubykaigi2010/rubykaigi2010-endoh.zip 追記: slideshare にもアップロードしました。でも一部崩れてるので、なるべく ppt でご覧ください。 @mrkn さんに「pdf に直してからアップロードすればよい」と教えてもらいました! 超絶技巧 Ruby プログラミング - Esoteric, Obfuscated Ruby ProgrammingView more presentations from mametter. 動

    RubyKaigi 2010 終了 - まめめも
    tanku
    tanku 2010/08/29
    "「超絶技巧 Ruby プログラミング」の発表資料と、発表で使ったソースコードを以下に置いておきます"
  • Merry Quine-mas - まめめも

    open("/dev/dsp","wb"){|h|s=%q{d=["-KQW[UZbgu*HNT+]TNOOOTZ+cZTUUUUUZbagmssUZbagm ss+wmpgja+KQW[dfnu","-KEKOINV[W*HBH+QHBCCCHN+WNHIIIIINVU[aUUINVU[aUU+YOR[^I+KEK OXZbW","-W[acg vsc*TZ`+eaaaaa--vucavuca+eadsvs+W[dgvrtc","-K991LIL77777dIIIII-- LKKILKKI+Mad[ ^U+K991LHJK"].map{|l|l.unpack("C*").map{|c|[(c/6-4)*12/7-8,"012 35b"[c%6,1]. hex]}*4};y=32.chr;l="@"+[(m="Jnx4sn3sgd1")+"vnqkc!6sgd2Lnqc4gz r4bnld

    Merry Quine-mas - まめめも
  • RubyKaigi 2009 参加記録 - まめめも

    なんだかいろいろありました。以下、個々の感想。敬称略で。 1 日目 Using Git and GitHub to Develop One Million Times Faster (Scott Chacon) 開始ぎりぎりに到着。git の説明はまあいいかなーと思ってマシンの設定やらネットワークの設定やら自分の発表資料の見直しやらしていたら終わってしまっていた。 Ruby の数 (後藤謙太郎) どういう主張なのかよくわからなかった。(覚えてないだけかも) Real ってたまに聞くけど何か知らない (発表でもよくわからなかった) ささださんの Float の VALUE 埋め込みは哲学的にどうなんだろう などが気になったけれど、時間が押してたので遠慮した。 Ruby の標準乱数生成器とその改良案 (村田賢太) 要約すると「Ruby の乱数生成器は生成ステートを出力できないからダメ」という話

    RubyKaigi 2009 参加記録 - まめめも
  • 回文や XML にマッチする鬼車の正規表現 - まめめも

    ref: 鬼車 正規表現 Version 5.9.1 ref: Ruby Freaks Lounge: 第6回 Ruby M17N 事始め:正規表現編 \g と \k について今までちゃんとわかってなかったけれど、少しわかったような気になったのでメモ。Ruby というより鬼車の話なので、PHP でも使えるかもしれない。試してないけど。 田中哲スペシャル \g の基 \g で参照される括弧の中身がそこにそのまま書かれたと思えばいい。 re = /\A(?<foo>abc...def)\g<foo>\z/ # \g<foo> を展開して考える # /\A(?<foo>abc...def)abc...def\z/ と同じ意味 p "abc123defabc123def".match(re) # マッチ p "abc123defabc456def".match(re) # マッチ p "abc1

    回文や XML にマッチする鬼車の正規表現 - まめめも
    tanku
    tanku 2009/04/10
    田中哲スペシャルの使い方
  • ruby 1.9 を日常的に使うぼくが 1.9 の新機能を寸評する - まめめも

    なんか偉そうな見出しですが、ruby 1.9 を主に使うようになって 1 年ちょっと経ったので、1.9 の新機能に思うところや注意点などを書き残そうと思うのです。さらに 1 年後に見たとき、「あのころはあんなふうに考えてたなあ」などと感慨にひたる予定です。 あらかじめ断っておくと、ぼくの ruby 1.9 経験はすべて趣味範囲なので、エンタープライズとかシステム運用の問題とかは知りません。あとぼくは ruby のコミッタなので、色眼鏡もあると思います。あしからず。 YARV VM 実行になったという話。一般的には「速い」という文脈で語られます。1.8 と比べると確かに速いです。でも、1.9 ばかり使い出すとなんとも思わなくなるはずです。速さなんて相対的な価値ですから、当然ですけどね。好意的に考えれば、「なんとも思わない程度に、遅くて困ることが減った」のかもしれない。 コンパイルフェーズを挟

    ruby 1.9 を日常的に使うぼくが 1.9 の新機能を寸評する - まめめも
    tanku
    tanku 2009/01/27
    もう読んだけど、このタグを付けないといけない気がした。lambda の構文いらない子扱いになりつつあったのか。
  • callcc と coroutine と semi-coroutine - まめめも

    Ruby で callcc を使って coroutine や semi-coroutine を書いてみました。あまり考えずに試行錯誤で書いたので間違ってるかもしれませんが、とりあえず晒してみます。 coroutine は Modula-2 で採用されているもの、semi-coroutine は Lua で採用されているもの *1 を実装したつもりです。 callcc で coroutine まずサンプル。以下のコードは 1 、3 、2 を出力して終了します。 c1, c2 = Coroutine.new { p 1; c2.start; p 2 }, Coroutine.new { p 3; c1.start; p 4 } c1.start $ ruby -rcoroutine test.rb 1 3 2かいつまんで解説。 coroutine.start で coroutine を起動しま

    callcc と coroutine と semi-coroutine - まめめも
    tanku
    tanku 2008/12/23
  • Lightweight Language AHP : おすすめ軽量言語診断 - まめめも

    http://dame.dyndns.org/misc/llahp/ 30 問の質問に答えると、PerlPythonRubyPHP の中からあなたの価値観に合った言語を教えてくれる AHP です。各言語を以下の 4 つの評価基準で評価してください。 実行速度 コードを高速に実行できる。 開発環境 ライブラリ、ドキュメント、IDE などが充実している。 記述性 短く簡潔に、メンテナンス性の高いコードが書ける。 変態性*1 遊び心や信念がある (Acme::* 、TOOWTDI 、DRY 、callcc など) 。 AHP の詳細は前のセクションを見てください。「評価基準が作為的」とか言われそうですが、いいのを思いつかなかっただけなので許してください。「書きやすさと読みやすさがあるから記述性などとひとくくりにはできない」とかも言われそうですが、気合いでひとくくりにしてください。 ち

    Lightweight Language AHP : おすすめ軽量言語診断 - まめめも
    tanku
    tanku 2007/10/13
  • 1