タグ

rubyに関するWackyのブックマーク (242)

  • RubyのJITに生成コードのメモリ局所性対策を入れた話 - k0kubun's blog

    昨日、RubyのJITの性能改善のためのパッチを入れた。 github.com JITすればするほどRailsが遅くなる問題 Rubyの次期バージョンである2.6には、バイトコードをCのコードに変換した後、gcc/clangでコンパイルして.soファイルにしdlopenすることで生成コードのロードを行なう、MJITと呼ばれるJITコンパイラが入っているのだが、マージしたころのツイートにも書いていた通り、Railsで使うとより多くのメソッドがJITされるほど遅くなってしまうという問題があった。 結果、"MJIT slows down Rails applications"というチケットが報告されることとなり、昨日までの5か月の間閉じることができなかった。 元の構成 対策を始める前のMJITは大雑把に言うとこういう感じだった。メソッド1つごとに1つの.soファイルが作られ、ロードされる。 無制

    RubyのJITに生成コードのメモリ局所性対策を入れた話 - k0kubun's blog
    Wacky
    Wacky 2018/07/30
    “最適化の余地が全くないようなただnil*1を返すだけのメソッドをたくさん定義して呼び出してみると、定義して呼び出すメソッドの数が多いほど遅くなることが発見された。”
  • Ruby 用の JIT コンパイラを作りました。ただし VM のではない。

    このところ Ruby VM 用の JIT コンパイラが話題だったようですが、Ruby 用の JIT コンパイラを試作してみました。 ただし VM 用の JIT コンパイラではありません。 代わりに? OpenCL も利用できます(ただし macOS のみ)。 Ruby は埋め込み DSL (embedded DSL, eDSL) のホスト言語としてよく使われます。 今回試作した JIT コンパイラは、Ruby 向けに作った C 言語風の eDSL 用の JIT コンパイラです。 そういう DSL は、構文だけホスト言語である Ruby の構文を借りて、実行は自前の JIT コンパイラを使うので、我々はそのような DSL を 半パラサイト DSL (hemi-parasitic DSL) と呼んでいます。 なんのためのもの? この eDSL は、Ruby プログラムの中で、一部の計算処理を高

    Wacky
    Wacky 2018/06/21
    “試作した JIT コンパイラは、Ruby 向けに作った C 言語風の eDSL 用の JIT コンパイラです。”
  • Ruby 2.6にJITコンパイラをマージしました - k0kubun's blog

    The English version of this article is available here: medium.com 2/4(日)に、去年のRubyKaigiが終わった直後の新幹線で開発を始め10月に公開したJITコンパイラをRubyのtrunk (2.6.0-dev) にマージし、昨日TD Tech Talk 2018で以下のような内容の発表をしました。 speakerdeck.com まだそれほど速くできていないということもあり、私はTwitterでのみ共有して満足していたのですが、海外の方がいくつか記事を書いてくださいました。 Playing with ruby's new JIT: MJIT - John Hawthorn Ruby’s New JIT – Square Corner Blog – Medium とても丁寧に書かれているので、私の記事がわかりにくければ

    Ruby 2.6にJITコンパイラをマージしました - k0kubun's blog
    Wacky
    Wacky 2018/02/16
  • Big Sky :: mruby で GUI!もう組み込み用途とは言わせない!mruby-fltk3 書いた。

    mruby と言えば組み込み用途のイメージが高いですが、Windows で何度も ruby 拡張のビルドエラーを潜り抜けて来て、ある程度 ruby 拡張の仕組みも知っている僕としては mruby の方がソースが綺麗し精神衛生上良いと言いたいが、言ってしまうとどこかしらからかオノが飛んで来そうな昨今でございます。 最近はmrubyでウォシュレットの噴出を監視するシステムも登場し、「TOTO さん、そろそろ気で mruby 組み込みウォシュレット 考えてみませんか」と言いたくなる状況です。 さて、そろそろ mruby にも GUI が欲しくなってきたので fltk3 を組み込んでみました。 mattn/mruby-fltk3 - GitHub https://github.com/mattn/mruby-fltk3 mrbgems 化してあります。 まぁまぁ忠実に fltk3 を移植してあり

    Big Sky :: mruby で GUI!もう組み込み用途とは言わせない!mruby-fltk3 書いた。
    Wacky
    Wacky 2013/01/18
  • iPhoneアプリを申請したでござる。なぜかWritten by Rubymotion!(アプリの名前はClipTo, Githubでソースコード公開ちう) | 諸葛亮孔明もびっくりですわ のブログ

    2012/09/26 2012/09/26 07:04 iPhoneアプリを申請したでござる。なぜかWritten by Rubymotion!(アプリの名前はClipTo, Githubでソースコード公開ちう) ここ最近ちまちまとXcodeでiPhoneアプリを作っていたのですが、どうにもモチベーションがあがらずですね。 なんとはなしに RubyMotion 買って サンプルコード 眺めてふむふむと。 ドキュメントに目を通すまでもなく、なにか1つちょろアプリをペロッと作れそうな気がしたので、前から欲しいのあったんだよねとシコシコと右手と左手を動かしてみたところ数時間で地味に便利なものができあがりまして、どうせならAppStoreに申請してしまおうと、体裁整えて、バグをつぶして、アイコン作って、最初使い方わからずまごまごしそうなのでガイドラインページ作って、どうせならGithubページにホ

    Wacky
    Wacky 2012/09/27
  • iPhoneアプリをRubyで開発できる、「MobiRuby」のソースコードが公開

    図2●増井氏がMobiRubyを用いて開発したゲームアプリの画面例。既にAppStoreで「MobiRuby」の名前で公開されている iOS向けのアプリをRubyで開発可能にするソフトウエア「MobiRuby」がリリースされた。開発者の増井雄一郎氏が、Github上でソースコードを公開した。併せて同氏は、2012年9月14日に札幌で開催された「札幌Ruby会議2012」で講演し、MobiRubyについて解説した(同氏の講演資料)。 増井氏は2012年3月よりMobiRubyの開発に着手し、約半年で公開にこぎ着けた。現在はアルファ版の段階だが、2013年第一四半期までに正式版(ver.1)を公開する予定である。MobiRubyはC言語で実装してあり、コード量は約3000行という。まつもとゆきひろ氏らが開発した軽量版のRuby「mruby」を用いている(関連記事)。 Objective-CとR

    iPhoneアプリをRubyで開発できる、「MobiRuby」のソースコードが公開
    Wacky
    Wacky 2012/09/16
  • C#/VBプログラム内で外部のRubyスクリプト・ファイルを実行するには? - @IT

    C#やVisual Basic(VB)で開発した.NETプログラムの中で、カスタム処理をプラグインの形で動的にアプリケーションに組み込んで実行したい場合に、そのプラグインをRubyスクリプト・ファイル(以降、Rubyファイル)で簡単に記述できるようにしたい場合はないだろうか? そのような場合には、IronRubyを用いることで、C#/VBプログラム内でRubyファイルを実行することが可能だ。稿ではこの方法について説明する。 ●事前準備 まずは、Ruby関連の開発環境を整えよう。IronRubyのダウンロード・ページを訪れ、最新のIronRubyをダウンロードして、インストールもしくは.zipファイルを展開する(インストーラ版とバイナリ版が用意されているが、稿の内容であればバイナリ版でよい。今回は「IronRuby 1.1.3 Binaries」をダウンロードして「C:\Projects

  • RubyでGPUを使おう - ✘╹◡╹✘

    ※この記事はRuby Advent Calendar jp 2011の28日目の記事です。 27日目 kk_Ataka EvernoteAPIRubyから叩きたい 28日目 r7kamura RubyGPUを使おう (←イマココ) 29日目 Daic_h (予定) こんにちは、r7kamuraです。耳を澄ませば2011年の崩れていく音がしますね。今回は年末用にとっておいた残り少ない意識を使って、RubyGPUを使う方法を紹介しようと思います。 GPU? 皆さんGPUはご存知でしょうか。3Dのゲームとかで綺麗なグラフィックを表示してくれるアレです。FF14とかと抱き合わせでハイエンドPC()に付いてたりするアレです。近頃だとノートPCにも搭載されるようになっていて、MacbookPro等にも搭載されています。*2 GPUを販売している会社はNVIDIAとAMDの二社が有名です。NVI

    Wacky
    Wacky 2011/12/29
  • 例えば GC を止める・Ruby ウェブアプリケーションの高速化 - 2nd life (移転しました)

    最近クックパッドでは、アプリケーションサーバの大半が Rails 2.3 から Rails 3 に置き換わったのですが*1、リリース前のベンチマークの時点ではあまりパフォーマンスが出ず四苦八苦していました。具体的には Rails 2.3 の時と比べ MRI 1.8.7 だとレスポンスタムが200%ぐらい遅い結果でした。Rails 3 になって実装が Merb core を取り入れ疎結合で綺麗になった反面、より多くのオブジェクトと・メモリを利用する様になった影響かと思います。 そこで Ruby インタプリタの変更*2を行い検証をしたところ MRI 1.8.7 (Rails 2.3と比べ) 約200%遅い MRI 1.8.7 -> Ruby Enterprise Edition 1.8.7 2011.03 (tcmalloc 無効) 約180%低速 MRI 1.8.7 -> Ruby Ente

    例えば GC を止める・Ruby ウェブアプリケーションの高速化 - 2nd life (移転しました)
    Wacky
    Wacky 2011/10/07
  • Heroku、クラウドでPythonのサポート開始、Engine YardはJRubyのサポート開始

    Ruby on Railsをクラウドで利用可能にしたことを起点に、Node.js、Clojure、Javaなど複数の言語への対応を進めてきたHerokuは、新たにPythonのサポートを発表しました。 PythonRubyPerlなどと同じくプログラマの生産性を重視した、いわゆるスクリプティング言語の1つで、クラウドではGoogle App Engineが最初の言語としてサポートしています。 HerokuPythonのフレームワークとしてDjangoに対応しました。Herokuによると、DjangoRuby on RailsへのPython的な答えとのこと。 But in 2005, the Django framework emerged as a Pythonic answer to Rails. 2005年、DjangoフレームワークがRailsへのPython的な答えとして

    Heroku、クラウドでPythonのサポート開始、Engine YardはJRubyのサポート開始
    Wacky
    Wacky 2011/10/06
    HerokuはPythonのフレームワークとしてDjangoに対応しました。
  • Twitterが、Ruby on RailsからJavaVMへ移行する理由

    オライリーが主催するイベント「Open Source Convention 2011」が7月25日から米国ポートランドで開催されました。 その中で、TwitterがなぜRuby on RailsベースのシステムをJavaVMベースへ移行しようとしているのかを解説したセッション「Twitter: From Ruby on Rails to the JVM」が行われ、ビデオが公開されています。 13分程度の短いセッションのポイントをまとめて紹介します。 世界最大のRuby on RailsによるWebサイトをJavaVMへ移行 Twitterのアプリケーションサービスグループ、Raffi Krikorian氏 Twitterは世界中からのツイートをリアルタイムで扱っている。リアルタイム処理が、ツイッターにおけるもっとも難しい処理だ。 Twitterは、おそらく世界最大のRuby on Rail

    Twitterが、Ruby on RailsからJavaVMへ移行する理由
  • Ruby を利用した大規模ウェブサービスの開発・運用 - RubyKaigi 2011 発表資料 - クックパッド開発者ブログ

    技術部開発基盤グループの id:secondlife こと @hotchpotch こと舘野です。 先日の RubyKaigi 2011 で、「Ruby を利用した大規模ウェブサービスの開発・運用」という内容で発表させていただきました。 前半はクックパッドのサーバアーキテクチャ、各種サーバのアプリがどんな風に動いているのかの紹介を、後半では「開発」→「デプロイ」→「フィードバック」→「開発」…という、サービス開発で行われているサイクルを30人以上エンジニアが居るクックパッドでどう高速に回し続けているかのお話しです。 Ruby を利用した大規模ウェブサービスの開発・運用 [slideshare id=8630511&w=425&h=355&sc=no] View more presentations from hotchpotch 当日のRubyKaigi 2011 での発表の動画は、以下を

    Ruby を利用した大規模ウェブサービスの開発・運用 - RubyKaigi 2011 発表資料 - クックパッド開発者ブログ
    Wacky
    Wacky 2011/07/24
  • text.ssig33.com - RSpec の書き方について

    RSpec の書き方について 要約:RSpec は単なるテストを英語っぽく書けるツールではなく開発の全プロセスを加速するツールであるのでプロジェクト初期から有効に利用する必要がある。 4/1 ですが気にせず真面目な話を書きます。 RSpec は多分 Ruby 界隈で一番使われているテストフレームワークの一つだと思います。であるので使い方の解説や概念の解説多いですが、個人的にはそれらの解説は的を外したものが多いと考えています。 RSpec の真髄を会得するには、 RSpec の spec をどのように書くかということを考えてゆく必要があると思います。 まず RSpec の特徴的な点とはなんでしょうか。 RSpec でテストは以下のように書かれます。 describe "肛門" do context "排便する時" do it "高速に排便されると肛門がすりきれる" do 肛門がすりきれるとい

    Wacky
    Wacky 2011/04/02
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    Wacky
    Wacky 2011/03/18
  • Ruby,Python,PHP,JavaScriptでマルチプラットフォームなデスクトップアプリを簡単に作成する Appcelerator Titanium Desktop - 仙台 Ruby Vim JavaScript フリーランスプログラマ

    古いエントリーなのですが、まだ時折検索エンジン経由?でいらっしゃる方がいるみたいなので追記 Titanium Desktopは今はTideSDKと変わってオープンソースプロジェクトになっています。 いいたい事を先に。 Ruby,Python,PHP,JavaScriptやってる人でデスクトップアプリ作成に興味ある人は Appcelerator Titanium Desktop さわってみるといいと思います。OS X, Windows,Linuxとマルチプラットフォームなデスクトップアプリをhtml,JavaScript,Ruby,Python等の慣れ親しんだ技術で簡単に作成、公開することができます。 予想以上にブクマされてるみたいなので、Titanium Desktopの特徴を箇条書きですが追加しておきます。 一言で言えばJavaScriptで記述するAdobe AIRのようなRIAフレー

    Ruby,Python,PHP,JavaScriptでマルチプラットフォームなデスクトップアプリを簡単に作成する Appcelerator Titanium Desktop - 仙台 Ruby Vim JavaScript フリーランスプログラマ
    Wacky
    Wacky 2010/02/23
    OS X, Windows,Linuxとマルチプラットフォームなデスクトップアプリをhtml,JavaScript,Ruby,Python等の慣れ親しんだ技術で簡単に作成、公開することができます。
  • IronRuby 日本語処理(その3) - M-Tea

    前回、前々回、IronRubyの日語処理について記述してきたが、今回は実際のコードのどの辺が影響しているか記述しようと思う。 前回の以下のコードをデバッガを使って追いかけてみた。 p Dir.glob('/test2/*') p Dir.glob('/test/*') 単純にステップ実行をしていくと、追いかけるのには苦労するので Dir.glob相当のコードの何ヶ所かにbreakを貼り実行してみた 以下にその時のコードを記載しておく 上記の時のローカル変数は以下のようになる ここで注目すべきは、MutableStringというclassである。 IronRuby.Builtins.GlobResults は OS から返却されたディレクトリとファイル一覧である。この部分は、実際のpattern "/test/*" にマッチするファイルを収集してくる。この一覧を foreach で繰り返し

  • ついに公開,楽天ROMA - なぜか数学者にはワイン好きが多い

    楽天、分散キー・バリュー型データストア「ROMA」のソースコードを公開 | 日経 xTECH(クロステック) ってかITpro速い(笑) 公開してすぐに記事になってる.きっと会場で記事書いたのでしょう. 西澤さんがまつもとゆきひろさんにエンターキーを押してもらって記念すべき初公開,としようとした時のトラブルについては触れられてませんw ROMAのページはこちら. Google Code Archive - Long-term storage for Google Code Project Hosting. さて,FreeBSDで実験してみます. ドキュメントの通りruby-1.9とruby-1.9用のgem,それからgem経由でeventmachineをインストールした後,いよいよROMAをインストールします. 最初から最後までトラブル無しでした.素晴らしい. # wget http://

    ついに公開,楽天ROMA - なぜか数学者にはワイン好きが多い
    Wacky
    Wacky 2009/10/27
    さて,FreeBSDで実験してみます.どれか一個サーバが落ちてても冗長性が確保されている,と.
  • 第23回 Rackとは何か(1)Rackの生まれた背景 | gihyo.jp

    はじめに SinatraやRamazeといったRubyのWebアプケーションフレームワークに興味をお持ちの方であれば、Rackという名前をしばしば目にしているかもしれません。どうやら様々なフレームワークに使われているらしいのだけど、そいつが一体なんなのかよくわからない、そんなあなたのために今日はそのRackをご紹介したいと思います。 様々なフレームワーク、様々なアプリケーションサーバ しばらく前なら、Ruby on Railsブームの真っ只中、Rubyと言えばRails、Webアプリケーションを作るならRails、といったイメージを持たれていた方も多かったと思います。実際にWebアプリケーションを作ったり、Rubyに触れたりしたきっかけがRailsだったという方も多いでしょう。 しかし最近は、RubyのWebアプケーションフレームワークと一口に言っても、非常に簡単にアプリケーションが書けて

    第23回 Rackとは何か(1)Rackの生まれた背景 | gihyo.jp
    Wacky
    Wacky 2009/10/26
    RackはこのWSGIに影響されて開発された,Rubyにおけるサーバとアプリケーション/フレームワーク間のインターフェースの役割を果たすライブラリです
  • 楽天、分散キー・バリュー型データストア「ROMA」のソースコードを公開

    写真1●楽天テクノロジーカンファレンスでソースコード公開を発表するROMAの開発者 西澤無我氏(左)と、Rubyの開発者で楽天技術研究所フェローのまつもとゆきひろ氏(右) 楽天は2009年10月24日、同社が独自開発した分散キー・バリュー型データストア「ROMA」をオープンソース・ソフトウエアとして公開した。ROMAはスケールアウトが容易で、耐障害性の高いデータストア。「楽天市場」と「楽天トラベル」で、ユーザーによる閲覧履歴の保存にROMAを使用している。同日に開催した「楽天テクノロジーカンファレンス」に合わせて、「github」でソースコードを公開した。 ROMAは、楽天技術研究所フェローのまつもとゆきひろ氏(プログラミング言語「Ruby」の開発者)と協力して、2007年から開発してきた分散キー・バリュー型データストアである(写真1)。Rubyを使った大規模システムを実現するための分散処

    楽天、分散キー・バリュー型データストア「ROMA」のソースコードを公開
    Wacky
    Wacky 2009/10/26
    ROMAはスケールアウトが容易で、耐障害性の高いデータストア。「楽天市場」と「楽天トラベル」で、ユーザーによる閲覧履歴の保存にROMAを使用している
  • concov 0.1 リリース - まめめも

    デモ: http://dame.dyndns.org:7001/ ソース: http://github.com/mame/concov/ 時系列に注目したコードカバレッジビューア concov をリリースします。concov は continuous coverage (造語) の略で、コードカバレッジの変化の追跡が簡単にできます。 背景 Ruby のテストメンテナ (自称) としての実体験として感じたことですが、コードカバレッジというのはテストを書けば一旦は上がりますが、その後何もしないとさまざまな要因で徐々に下がっていきます *1 。対策として、実行 (カバー) されなくなる箇所が発生したらそこをカバーするようなテストを継続的に足していく (テストをメンテナンスする) ことが有効ですが、カバーされなくなった箇所を同定するのは非常に面倒な作業でした。 concov とは? カバーされなく

    concov 0.1 リリース - まめめも
    Wacky
    Wacky 2009/10/18