タグ

Rubyに関するHeavyFeatherのブックマーク (213)

  • 第5章 ガ-ベージコレクション

    プログラムの実行時イメージ 突然だが、章を始めるに先立ち、プログラム実行時のメモリ空間の状態につ いて予習をしておこうと思う。この章ではコンピュータの低レベルな部分にか なり踏み込んでいくことになるので、あらかじめある程度の知識を仕入れてお かないと太刀打ちできないのだ。それにこの後の章になればいずれ必要になっ てくる。ここで一回やってしまえば後が楽だ。 セグメント 一般的なCプログラムではメモリ空間の中に以下の部分を持つ。 テキスト領域 スタティック変数やグローバル変数の置場 マシンスタック ヒープ テキスト領域はコードが置いてあるところ。二番目は見ての通り。マシンスタッ クには関数の引数やローカル変数が積まれる。ヒープはmalloc()で割り当てて もらうところだ。 三つめのマシンスタックについてもう少し話そう。マシン「スタック」と言う くらいだから当然スタック構造をしている。つまり

  • High Performance Rails (long edition)

    Which I talked at Rubykaigi 2013 is: https://speakerdeck.com/mirakui/high-performance-rails

    High Performance Rails (long edition)
  • RubyMotion - naoyaのはてなダイアリー

    ちょっと前に RubyMotion を触ってみてこれは面白いなと思いブログにでも書こうかと思った矢先にドラゴンクエスト10が発売してしまい、あれよあれよといううちに一ヶ月経ってしまいました。 それはさておき「るびも」こと RubyMotion ─ いや、るびもと呼んでいるのは自分だけですけど。Ruby で iOS のネイティブアプリが書けるというツールチェイン。コンパイラ、テストスイート、プロジェクト作成用スクリプトその他を含みます。主に CUI はターミナルでのコンパイルを想定していて、Xcode で開発するのに比べるとだいぶ *nix してるわーという気分になれる代物です。iOS アプリなのに Ruby! iOS アプリなのに CUI! ・・・ これだけでワクテカな方も多いかなと思います。 以下そんなるびもちゃんRubyMotion 様をざっと紹介していきたいと思います。なお、あらかじ

    RubyMotion - naoyaのはてなダイアリー
  • Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)

    第 379 回 PTT の発表で使った資料です。 http://www.ci.i.u-tokyo.ac.jp/~sasada/ptt/arc/379/

    Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
  • Rubyistなら知っておくべき地味だけど便利なメソッド - joker1007’s diary

    備忘録兼、初心者向けのメソッド一覧。 余裕があればRails編とかも書こうかな。 これ忘れてるとか何事?とかいう突っ込みがあれば是非お願いします。 もうちょっとコードの具体例書きたかったけど、めんどくさくなってきたw Array Array#combination(n), Array#permutation(n) 配列のデータを元に組み合わせ(順列)を作ってくれます。 ブロックを渡さない場合はEnumeratorで組み合わせの各要素を列挙します。 Enumerator Enumerator#with_index(offset = 0) Enumeratorの各要素に合わせてindexを列挙してくれるEnumeratorを返す。 each_sliceやcombination等にメソッドチェインで繋げて使う。 Enumerator#with_object(obj) with_indexと同様で

    Rubyistなら知っておくべき地味だけど便利なメソッド - joker1007’s diary
  • Rubyで開発するときに入れておきたい三種のRubyGems - KAYAC engineers' blog

    「つくるための三種の神器」というテーマで続けている「777ブログウェイ」! 9日目となる日は「Rubyで開発するときに入れておきたい三種のRubyGems」と題して、定番の RubyGems を3つご紹介します。 1. bundler「bundler」は、アプリケーションが依存するgemを管理するツールです。今やgem管理のデファクトスタンダードです。 「gem install hoge」のようにコマンドで gem をインストールしていくと、あれよあれよとグローバルな領域にどんどん色んなgemが…それも複数バージョン混在していきます。そして、いずれは、このアプリケーションで必要なgemはどれだっけ…バージョンはいくつだっけ…といった具合に、どんどん依存関係が分からなくなってきます。ここで活躍するのが「bundler」です。 使い方はいたって簡単。1) bundler のインストールgem

    Rubyで開発するときに入れておきたい三種のRubyGems - KAYAC engineers' blog
  • あなたが理解できない,たった一行のRubyのコード (動的言語に対する静的解析の限界) - 主に言語とシステム開発に関して

    あなたは,下記のコードを理解できない。 p f /g+h/i これはRubyのコードである。「p」は,コンソールに出力する関数である。 問: だいたい,何をやっているコードですか? ※例えば,四則演算など。 構文をおおまかに説明して下さい。 どれが変数で,どれが関数で,どれが演算子か? ↓回答 回答: 一意に決定できない。 下記に, このコードの複数の解釈方法と, この件が引き起こす問題 について述べる。 ※なお,この問題が起きるのは動的言語に限らず,静的言語でも同様に発生しうることを前もって述べておく。 (1)分数の計算とみなすパターン 先行するコードを下記のように書いた場合: test1.rb # 変数に数値を代入 f = 2 g = 1 h = 2 i = 1 # 演算結果をpで出力する p f /g+h/i 実行結果: >ruby test1.rb 4 「分数の計算」とみなされる。

    あなたが理解できない,たった一行のRubyのコード (動的言語に対する静的解析の限界) - 主に言語とシステム開発に関して
  • Sass - チュートリアル

    この文書は古いSassウェブサイトに載っていたチュートリアルの訳で、2013年12月現在もう新しいウェブサイトには存在しません。新しいウェブサイトでのチュートリアルにあたるSassの基の日語訳を参照してください。 Translation of: Sass - Tutorial Ruby と Sass のインストール まず、Sass がちゃんと動作するようにします。OS X を使用しているのなら、既に Ruby がインストールされているでしょう。Windows ユーザーならば RubyWindows インストーラーで、Linux ユーザーならパッケージ・マネージャーでそれぞれ Ruby をインストールすることが出来ます。 Ruby のインストールが完了したら、以下のようにして Sass のインストールを行います: gem install sass 最初の Sass スタイルシート 非

  • MacRubyがiOSに来た!RubyでiOSのネイティブアプリ開発ができる「RubyMotion」登場:Rails Hub情報局:エンジニアライフ

    MacRubyがiOSに来た!RubyでiOSのネイティブアプリ開発ができる「RubyMotion」登場 Rubyを使ってiOS向けアプリが開発できる開発環境「RubyMotion」が登場しました。MacRubyプロジェクトの生みの親であるLaurent Sansonetti氏は7年間勤めたアップルを2011年暮れに退社して、新たにHipByteというスタートアップを立ち上げていたようです。 FAQや動画ビデオを見て分かったRubyMotionの特徴を列挙します。 Rubyを使ったiOSアプリの開発が可能 ツールは有償で199ドル(現在キャンペーンで149.99ドル) 無償版やオープンソース版はない 作成したアプリはAppStoreでの流通が可能 iOSのAPIの全てにアクセス可能 C/C++/Objective-Cで書かれたRuby処理系のMacRubyベースで1.9対応 Rubyコード

    MacRubyがiOSに来た!RubyでiOSのネイティブアプリ開発ができる「RubyMotion」登場:Rails Hub情報局:エンジニアライフ
  • RSpecによるユニットテストの書き方 — recompile.net

    2012年04月19日 最近、新人のテストコードを見る機会があり、ユニットテストの書き方について考える機会があった。ユニットテストはテンプレートみたいなものがあるので、それさえ押さえれば、誰でも簡単に書くことができる。 ここでは、その方法について紹介したい。サンプルはRSpecで書くが、その他のユニットテストフレームワークでも、応用ができるとおもう。 はじめにごく単純化すると、テスト対象は状態を持ち、入力を与えると何らかの出力を行なうものである。入力が変われば出力は変化するし、状態が変化すると入力が同じでも出力が変わる(かもしれない)。 ユニットテストは、テスト対象の状態を操作し、与えた入力によって意図通りの出力を得られるかを確認する作業のことをいう。なので、ユニットテストを書くときには、オブジェクトの状態ごとにメソッド単位で入力と出力を確認するようにする。 RSpecの疑似コードで書くと

    RSpecによるユニットテストの書き方 — recompile.net
  • ついに軽量Rubyの「mruby」のソースコードが公開!:Rails Hub情報局:エンジニアライフ

    Rubyの生みの親、まつもとゆきひろさんが、ついに新しいRuby実装である「mruby」のソースコードをGitHub上で公開しました! 2012年4月20日です。ライセンスは、MITライセンスとなっています。 以下にまつもとさんがmrubyについて語るインタビュー動画を貼り付けます。18分30秒のあたりからどうぞ。インタビューは昨秋の時点でのものです。 公開されたmrubyのレポジトリから、Readmeの一部を引用します。 mrubyはISO規格に準拠したRuby言語を様々な環境で動作可能となるように軽量化したものです。モジュール構成によりインタプリタ実行形式やコンパイル&VM実行形式でも動作させることができます。 2010年度の経済産業省の地域イノベーション創出事業により開発されました。 MRI(Matz Ruby Implementation)版との互換性 以下要修正 + シンプルな文

    ついに軽量Rubyの「mruby」のソースコードが公開!:Rails Hub情報局:エンジニアライフ
  • Ruby on Railsが簡単というのは嘘 - toyoshiの日記

    WinユーザがRailsアプリをこれから公開しようと思った場合 Windowsで学習を開始するのは不可能なのでLinuxをいれる でもWindowsで進めようとしてmsysGitをいれたりするが結局半日無駄にする なぜかgemが最新じゃないと怒られる gemを単純に使っても後から困るのでrvmかrbenvが必要。使い方覚えないといけない やっとRails3.2導入。javascriptエンジンが入ってないので起動しない やっと起動 HTML書いてるのは情弱だけ => hamlを覚える js書いてるのは情弱だけ => coffee scriptを覚える css書いてるのは情弱だけ => scssを覚える テスト書いてないコードはレガシーコードっていわれる しかたないのでRspecいれる => Rspec覚える ユニットテストだけではしかたないといわれcapybaraもいれる => capyb

    Ruby on Railsが簡単というのは嘘 - toyoshiの日記
  • 最近やってるRailsプロジェクトのテスト方法 - #詰んでる日記

    Railsエンジニアになってから1年半くらいが経ち、社内のRailsプロジェクトを全部で5つくらい触って、今やってるAbilie*1でようやく人並みにテストを書いてる気がしてきたので、現時点でやってるテストの方法をまとめておく。 テストのルール的なの rspecでは必ずモデルのテストは書くようにしてる。ヘルパーも大体書いてるけど、コントローラやルーティングのテストはあまり書いてない。 というのも、コントローラーのコードを極力短くしてモデルを太らせているのでコントローラのテストはあんまり意味が無い気がしていて、その代わりにCapybaraでテストを書いておけば十分なんじゃないかなと思ってきたから。Capybaraは書いてるので、そういう意味では書いてるとも言える。 社内の管理者だけが使える管理画面も作ってるけど、そっちはテストあんまり書いてない。ここは動かなくなっても一般ユーザーには影響が

    最近やってるRailsプロジェクトのテスト方法 - #詰んでる日記
  • おまいらもMacRubyでMacアプリ作ろう - すがブロ

    このエントリはRuby AdventCalender 2011の企画です Ruby Advent Calendar の25日目の記事です。24日目は@kwappaさんのHappy Xmas, Rubyists! | Kwappa研究開発室でした。 ちなみに、12/25と言うと、バカボンのパパや銭形のとっつぁんの誕生日として知られていますね*1。 26日はid:tackunさんのSinatraを使って、RESTFulなWeb-APIを作ってみたい - tackun noteです。 補足 2012/05/30 追記 MacRubyの情報は目次 - MacRuby DoJo (道場)に詳しく載っています。また、MacRubyとXCodeのバージョンによってはうまくプロジェクトが作成できない場合もありますが、そこについてもきちんとケアされていますので、MacRuby の環境を構築しよう - Mac

    おまいらもMacRubyでMacアプリ作ろう - すがブロ
  • Rubyistよ、irbを捨ててPryを使おう | Webシステム開発/教育ソリューションのタイムインターメディア

    Pryは結構前からgithubのリポジトリを追いかけている人達には認知されていましたが、RailsCastsでも紹介されたことから、Ruby界で一気に広がりを見せています。 ちなみに発音はpra'i(ぷらい)です。英単語で「覗く」などを意味します。 今回はそんな便利なPryについて少し紹介したいと思います。 Pryはirbの代わりになるREPL Pryを一言で説明すると、irbと同様にREPL環境を提供してくれます。 では、さっそくインストールしてみましょう。

    Rubyistよ、irbを捨ててPryを使おう | Webシステム開発/教育ソリューションのタイムインターメディア
  • HTTPで正しくキャッチボールをするには | Lab by engineering@dwango.jp

    皆さんはキャッチボールは好きですか? 私はバスケットボールの方が好きです。 キャッチボールは、自分と相手双方がボールをうまくキャッチできるように投げる必要があります。これは、サーバーとクライアントの間でも同じで、クライアントから投げられたボール(リクエスト)をサーバーは正しく投げ返す(レスポンス)必要があります。 ここで、サーバーがボールをあさっての方向に投げたり、異常なスピードで投げ返すとどうなるでしょうか。おそらくクライアントはそのボールを取ろうとしますが、追いつけずにボールを落としたり、どこかにぶつけたりしてしまうでしょう。 今回は、HTTPについて、どうして正しくレスポンスを返さないといけないのかということについて、Rackを使用して解説していきます。 対象読者 Webアプリケーション開発に興味のある方、これから開発を行おうとしている方 Rackについて まず、今回使用するツール

  • 223Soft -

    Document Data Structure in MongoDB Express MongoDB lets you easily store structured and unstructured data in a flexible and dynamic database schema. It supports CRUD operations on complex data objects using JSON as the main data type. Its an open source solution so it may not be as robust or well supported as commercial management tools. However it is easy to deploy and works well for most use cas

  • 例えば 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 (移転しました)
  • さいきんの Rails サービスを高速化をしてみた - 2nd life (移転しました)

    先日のももクロハッカソンで出会った wantedly を作ってる仲さんが と言ってたので、面白そうなので wantedly を速くしてみました。 wantedly ちなみにデータが数百万オーダーもなさそうなのに、どのページもログインすると2-5秒ぐらいかかっていたので、確実に速くできそうだなぁという感覚はやる前からありました。 アプリケーションサイドのチューニング 初心者*1にありがちな問題として SQL に適切にインデックス張ってない キャッシュすべき場所をキャッシュしていない 無駄なデータを引きすぎてる ことがよくあります。ので順に実装を見ていきました。 SQLに適切なインデックスを張ってない 張ってありました!びっくり!\(^o^)/ キャッシュすべき場所をキャッシュしていない Facebook API を利用したアプリケーションなんですが、ユーザのデータの取得を毎回馬鹿正直に HT

    さいきんの Rails サービスを高速化をしてみた - 2nd life (移転しました)
  • 素人がWebサービスを作ってみて分かった9つのこと:Rails Hub情報局:エンジニアライフ

    こんにちは、@IT編集部の西村賢です。IT系のオンラインメディアで編集・記者をしております。タイトルに「ど素人」と書くと、ちょっと嘘になるので「素人」と書きましたが、素人がWebアプリを作ってみた体験談と感想を書いてみたいと思います。「オレもプログラミングを勉強して何か作ってみたい!」と考えている人や、「自分でサーバを借りて何かやってみようと思っていたんだよね」という人の参考になれば幸いです。 去年の夏、Webアプリケーション開発フレームワークのRuby on Railsのことを調べていて「面白そうだな」と思い、ドキュメントに従ってサンプルアプリをいくつか作ってみました。作ったり壊したりしている間に、こう思いました。 「あれ? これなら自分が欲しかったサービスが作れちゃうんじゃないの?」 で、「Worklista」(ワークリスタ)という名前のWebサービスを作りました。3カ月ほど前から親し

    素人がWebサービスを作ってみて分かった9つのこと:Rails Hub情報局:エンジニアライフ