タグ

rubyに関するhakobe932のブックマーク (324)

  • Rubyで高速にパターンマッチするgemを作った - TODESKING

    Ripperの出力とかParseletの解析結果などを扱うのに、ArrayやHashでパターンマッチして中身を取り出す処理を多用する必要があったのでパターンマッチライブラリを作りました。 GitHub: todesking/patm 同様のライブラリとしてはpattern-matchがあります。 機能面ではpattern-matchのほうが豊富ですが、PATMは高速なのが売りです(DSLによるメソッド定義を使用した場合、ネイティブRubyコードにコンパイルされるため50倍くらい速い。case式内で使用した場合でも7倍程度)。ベンチマークについてはこの記事の下のほう参照。 主な機能 DSLによるメソッド定義 extend Patm::DSL することで define_matcherを使ったメソッド定義が可能です。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

    hakobe932
    hakobe932 2014/05/27
    おしゃれ
  • Ruby/Rails勉強会@関西 60th #rubykansai

    お願い ・懇親会の出席する人は 28日 17時までに参加登録をお願いします。 お申し込みはこちら ・事前に参加者の一覧をナレッジサロンに提出し、ナレッジサロン受付で記名してもらうことで、入室が許可される仕組みになっています。名の事前登録がない場合は、入室に手間取ることになります。確実な事前登録をお願いします。 名の事前登録の方法は以下になります。 ご入力方法は以下のようになります。 Doorkeeper のページを表示する。 [http://rubykansai.doorkeeper.jp/events/9215] 「お申込みの確認」をクリックする。 下の方にある「回答の編集」をクリックする。 修正する。 「次へ」をクリックする。 ・行き方について グランフロントのナレッジサロンは行き方にコツが必要です。 グランフロント タワーC の 7階にあり、ザ・ラボ奥の 北3エレベータに乗るとた

    Ruby/Rails勉強会@関西 60th #rubykansai
    hakobe932
    hakobe932 2014/03/01
    来月のRuby勉強会だ!
  • Ruby Patterns - ✘╹◡╹✘

    この記事には、Rubyを書いているときに「これは言語化されたり公式化されたりしていないけれど基的には必ずこのパターンに則ってプログラムを書いているな」ということをふと思い出したときにやってきてそのパターンを書く。多分3パターンぐらいで終わると思う。ウケが良ければ思い出す確率が高くなると思う。題材さえあれば何も考えずに書けるので、これを書くコストは全然高くない。 名前が"?"で終わるメソッドは必ずtrueまたはfalseのどちらかを返す trueとfalse以外(例えばnil)が返る可能性がある場合は、必ず式の先頭に!!を付けてtrueかfalseになるようにしてる。 このパターンを守ることがとても大事だという風には全く考えていないけど、もしhas_user?がuserを返すとして、has_user?という名前のメソッドがUserオブジェクトを返すというのは一体どういう意味を持っているのだ

    Ruby Patterns - ✘╹◡╹✘
  • 橋本商会 » HerokuのSinatraにバックグラウンドワーカーを詰め込んで節約

    Webアプリと同じプロセスにworker入れてお金節約できる。 Webアプリは “リクエスト来る→サーバーで処理→レスポンス返す” というのを繰り返すわけだが、サーバーでの処理に時間がかかる場合にそこを別のプロセスに任せて、先にレスポンスを返しておいて、あとで結果は取りに来てよ、という実装をする事がある。 時間がかかる処理は2つに大別できる。 動画をエンコードするとか。CPU負荷が高くて時間がかかるのでWebサーバーとは別の場所で動かしたい Twitter APIを10回ぐらい使った結果をまとめて返すとか。CPU負荷は低いけどIO待ちが長い 2の方について、HerokuRuby環境で安く上げる方法をまとめる。 手法 HerokuのcedarスタックでRuby使う時はwebサーバーとしてThinが起動する。 ThinはEventMachineの中で動いてるので、EM::defer等が使え

    hakobe932
    hakobe932 2014/01/11
    なるほど便利
  • アドベントカレンダーを電子書籍で読めるサービスを作った - 2nd life (移転しました)

    http://advent-calendar2readlists.herokuapp.com/ Qiita や Adventar、ATND のアドベントカレンダーがオフラインの電子書籍で読みたい、と思ったので作った。例えば寿司アドベントカレンダーなら、URLを入れて変換すると、readlistsを裏側で叩いて、こんな感じに生成される。 http://readlists.com/307857dc/ 生成後は readlists の機能を使って、iPhoneiPad に送ったり、dropbox に epub を保存したり、その他いろいろな方法で、様々なデバイスで読むことが出来る(※なお readlists の kindle に送る、は一部文字がおかしくなるのでオススメしない)。また Qiita のアドベントカレンダーは、HTML の要素の関係で必要の無い要素も混じってしまっていて、ちょっ

    アドベントカレンダーを電子書籍で読めるサービスを作った - 2nd life (移転しました)
    hakobe932
    hakobe932 2014/01/11
    便利そう/非同期処理なるほど
  • ruby/ruby#495日本語解題

    三行で卜部って口だけ野郎でどうせたいしたもん書けないんでしょ? [1] [2]→ 見せてやんよゴラァ→ ごらんの有様教訓: 陰口は人に聞こえない所で。さすがに名指しはまずい。 どういうパッチかRubyのオブジェクトサイズを変更(大きく)する。そのことにより第一義的にはCPUキャッシュミスヒットが削減される。副次的作用として大きくなった余剰の領域にデータを詰め込めるので中間構造体を減らしてメモリアロケーションが最適化される。それらの総合的な結果として全体に高速化する。 前史とはいえこのアイディア、べつに最近涌いて出たものでもない。というか、俺がまだ大学院でNetBurstと戯れてたころの発想だから、かれこれ7~8年物だな。しかもこの間べつに秘密にしてたわけでもなくて、Rubyのオブジェクトって素数幅でいくなくね?ってのは、わりと口頭では折に触れて言ってたので、聞いたことがある人もいるはずか

    ruby/ruby#495日本語解題
  • はてなブックマーク REST API のクライアントライブラリ in Ruby - Sexually Knowing

    aereal/hatena-bookmark-restful · GitHub JSON over HTTP な API であるのではたして「クライアントライブラリ」が必要なのか怪しい気もするけれど、手軽に API を利用しようと思ったときに生の Hash じゃなくてちゃんとオブジェクトが返ってくると嬉しいこともあるだろうと思って書いた。 どうぞご利用ください。 ついでにおしゃれポイントについて書いておく。 バージョンを上げるタスク 別のエントリで書く YARD がパースする対象のファイルを Gem::Specification を参照して DRY にする API のバージョンとクライアントのバージョンを対応させている 非互換な変更があったときの影響を最小限に留める mixin の定義の中から具象クラスの定数を呼ぶ mix-in されるモジュールの中から具象クラス *1 に定義されている定

    はてなブックマーク REST API のクライアントライブラリ in Ruby - Sexually Knowing
    hakobe932
    hakobe932 2014/01/05
    おしゃれポイントおもしろい
  • rbenv のメカニズム - @kyanny's blog

    rbenv 環境下で実行された Ruby プログラムの中から他の Ruby プログラムを起動するときに、 rbenv 環境をリセットしたい―要するに別のバージョンの Ruby で外部プログラムを実行したい―という事情があったので rbenv のメカニズムについて調べた。 rbenv 環境下で ruby コマンドを実行するとき、実際にコンパイルされた ruby バイナリが直接実行されているわけではない。 rbenv 環境をお膳立てした上で ruby バイナリを exec するラッパーのシェルスクリプトが実行される。こういうものを binstub と呼ぶ。 binstub である ruby という名前のシェルスクリプトの中身をみてみると、最終的に rbenv exec というサブコマンドを呼び出している。 rbenv のサブコマンドはリポジトリでいうと libexec ディレクトリ以下にある。

    rbenv のメカニズム - @kyanny's blog
    hakobe932
    hakobe932 2013/05/11
    なるほど
  • 日本Ruby会議 2010, 8月27日〜29日

    Unix修正主義 スピーカー Tanaka Akira (National Institute of Advanced Industrial Science and Technology (AIST)) 概要 Ruby のライブラリ API は Unix の影響を色濃く受けているが、 Unix の API をそのまま提供しているのではなく、 Unix の失敗を修正している部分がいくつかある。 たとえば、ノンブロッキング I/O は、オープンしたファイルに対するフラグで指示するため、 特定の操作だけをノンブロッキングにすることが難しい。 これに対し、Ruby ではフラグでなく read_nonblock メソッドなどを用いることにより、それが簡単になっている。 また、プロセスを起動する fork システムコールは近年のマルチスレッド環境では大きな問題がある。 これに対し、Ruby ではその問

    hakobe932
    hakobe932 2013/04/28
    おもしろつらい
  • mruby introduction -- jinbocho.rb #01

    オブジェクト指向で考える アプリケーションアーキテクチャ設計 / Object-Oriented Conference 2020

    mruby introduction -- jinbocho.rb #01
  • Ruby Under a Microscope - Pat Shaughnessy

    Everyone knows that Ruby is a powerful language. Its dynamic nature allows you to concisely write the code you need to actually solve a problem instead of burying yourself under mountains of boilerplate. You don't have to fight it; you just get to enjoy the ride. But how is the magic created? And can you trust it? After all, MRI is written in C - a statically typed, compiled language which is pret

  • 滨州僭蓉教育咨询有限公司

    hakobe932
    hakobe932 2013/04/13
    おもしろそう
  • Cookpad の本番環境で使用している Ruby が 2.0.0-p0 になりました - クックパッド開発者ブログ

    技術部・開発基盤グループの村田です。 クックパッド日から、番環境を Ruby 2.0.0-p0 に移行しました。Ruby 2.0.0-p0 は 2013年2月24日にリリースされた Ruby の最新バージョンです。新しい Ruby を使って気持ち良く開発するために、できるだけ早く Ruby をバージョンアップしようと尽力してきた結果が実りました。 Ruby のバージョンアップでレスポンスが高速になった クックパッドRuby 2.0.0 に対応したことで、ユーザと開発者の両者にとって、これまでよりも快適になっています。 Ruby のバージョン移行は、Ruby Enterprise Edition から Ruby 1.9.3-p392 を経由して Ruby 2.0.0-p0 へと段階的に実施しました。Ruby を Enterprise Edition から 1.9.3、そして 2.0

  • なるほどUnixプロセス ― Rubyで学ぶUnixの基礎

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 Jesse Storimer, 島田浩二(翻訳), 角谷信太郎(翻訳) 達人出版会 3,520円 (3,200円+税) 『Working with Unix Processes』待望の完訳。並列処理やデーモン、プロセス生成、そしてシグナルといったUnixの基礎であるプロセスについてRubyで解説する、「今どきの」開発者に向けた新しいUnixプログラミングの手引きです。 ※書の公式ハッシュタグは#naruhounix になります。 関連サイト原著者による公式ページと訳者らによるサポートページがあります。 Working With Unix Processes - Learn the Fundamentals of Unix Programming in RubyなるほどUnixプロセスサポートページ 日語版刊行によせてRuby

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎
    hakobe932
    hakobe932 2013/04/06
    気になります
  • Securing Rails Applications — Ruby on Rails Guides

    This manual describes common security problems in web applications and how to avoid them with Rails. After reading this guide, you will know: All countermeasures that are highlighted. The concept of sessions in Rails, what to put in there and popular attack methods. How just visiting a site can be a security problem (with CSRF). What you have to pay attention to when working with files or providin

    Securing Rails Applications — Ruby on Rails Guides
  • Ruby Fiddle | Ruby Snippets in the Browser

    Welcome to RubyFiddle We wanted a way for people to experience some Ruby in the browser, as well as have a platform that can send cool Ruby scripts to one another. Sample Fiddles re-opening a class (String) 99 Bottles of Beer Instance variable get Using Yield to log "stuff" Fork RubyFiddle! What does this mean? In Github, forking is a way that you can build upon someone else's code. Once the proje

    hakobe932
    hakobe932 2013/03/22
    JS FiddleのRuby版ぽい
  • 大江戸 Ruby 会議03で、某レシピサイトの Ruby 1.9.3 対応で苦労した点を共有しました - 恒温動物の生活ログ

    こんばんは。今日は20時に退社しました。 先日、大江戸 Ruby 会議 03 が、深川江戸資料館で開催されました。大江戸 Ruby 会議は、Asakusa.rb のメンバーの生活発表会として位置づけられている地域 Ruby 会議です。そこで私は Ninja Talks の1枠を頂戴し、普段の仕事の話をしてきました。内容は、勤務先が運営するレシピ共有サイトが使用している Ruby のバージョンを Ruby Enterprise Edition から Ruby 1.9.3 へ移行する際に苦労した事柄の共有です。 スライド↓ 時間と内容の関係で、会議では言わなかった話があります。 ここで紹介されているコードのうち、"Before" に当たるものの中には、皆さんが一目見て「酷いなぁ」と感じるものがあると思います。中には、こんな書き方ができたのか!と驚くようなものもあるでしょう。 しかし、忘れて欲し

    大江戸 Ruby 会議03で、某レシピサイトの Ruby 1.9.3 対応で苦労した点を共有しました - 恒温動物の生活ログ
    hakobe932
    hakobe932 2013/03/19
    すごいけどつらそうな話
  • 桐島、Rubyやめるってよ #odrk03 - I am Cruby!

    大江戸Ruby会議03の招待講演として発表してきました。たのしかったです!! 桐島、Rubyやめるってよ from Narihiro Nakamura 「思いっきりエモい(emotional)、コードが一行も出てこないプレゼン」をRubyKaigi系列で一度やってみたいという思いがあり、上記のようなネタを考えてみました。 ただ、かなり幅広い層に見られる(古参Rubyist、初心者Rubyist、コミッタ)こともあり、いずれの層にも楽しんでもらえる話にしなければ、と思って、だいぶネタを練りました。 特に超練度が高いRubyistたちにどのように受け入れられるか心配ではあったのですが、artonさんや咳さんに「面白かった」と言ってもらえてホッとしました。 懇親会等ではありがたいことにみなさんから絶賛系のコメントをいただくことが多く、逆に心配になるくらいだったのですけど、akrさんだけは「目的オ

    hakobe932
    hakobe932 2013/03/17
    よかった/yharaさんの元気そうな姿が!
  • Thinは遅い? - lab.ursm.jp

    March 02, 2013 「Heroku でアプリケーションサーバを Uniron (or Puma, etc) にしたらn倍速くなったぜ!」みたいな話をたまに見掛けますが、当なんでしょうか。実験してみましょう。 テスト環境 Funtoo Linux x86-64bit Ruby 2.0.0-p0 Thin 1.5.0 Unicorn 4.6.2 Rainbows! 4.5.0 Puma 1.6.3 アプリケーションは Rack で、50msec の sleep の後に 500KB のレスポンスを返します。各サーバに対して100回のリクエストを、同時接続数を 1-20 の間で変えつつ投げました。詳しくはソースを見てください。 (凡例の c は concurrency、同時接続数です) はい、どう見ても Thin は遅いです。まったくスケールしません。当にありがとうございました。 こ

    hakobe932
    hakobe932 2013/03/15
    おもしろい
  • uu59のメモ | Rails4でデフォルトで入るturbolinksがオープンリダイレクタと合わさると何でもできてかなり危険

    Rails 4.0で入るturbolinksですが、これが有効だと無効の環境と比べてセキュリティリスクが微増するという話です。具体的にはRailsサービス内(同一ホスト内)にオープンリダイレクタがあり、CGMサイトであるとかユーザーが任意のリンクを張れる場合に、悪意あるスクリプトがそのサービスのホスト下で実行されてしまう。というのをmalaさんに指摘されました。 Railsであれば基的にredirect_to :action => "show", :id => @model.idみたいな感じで書いてリダイレクトしてるだろうけど、redirect_to params[:hoge]みたいに書いてる場合は?hoge=http://evil.example.comとかでevilなページに飛ぶし、turbolinksと関係なくよろしくないので暇を見て直しましょう。 話を戻してturbolinksだ

    hakobe932
    hakobe932 2013/03/13
    なるへそ