注: Rubyは2.1.0からSemantic Versioningを採用しています。 Ruby 2.1.1, 2.1.2等はバグ修正やセキュリティfixのみを含むため、リファレンスとしては2.1に統一しています。
プログラムの高速化については本連載の第13回で紹介しています。プログラム中のどの部分を高速化すべきなのか,どのように効果を測定するのか,そもそも高速化が必要なのかを考察しました。今回は実際に高速化を試みます。 今回はプログラム高速化の実践編として,ある程度の大きさの具体的なプログラムを段階的に高速化しながら,実践的なテクニックを学ぶことにしましょう。 例題はマンデルブロ集合*1の計算プログラムです(図1)。マンデルブロ集合は非常に美しい集合ですから,本当はグラフィックス表示が好ましいでしょう*2。しかし,GUIを使うと,特定のGUIライブラリ(グラフィックス・ルーチン)に依存したコードが大量に必要です。今回のテーマは「高速化」ですから,直接関係のないGUIコードはできるだけ省くため,キャラクタ(英文字)で図形を表現することにしました。 1 require 'complex' 2 3 def
RESTful API の作成に特化したマイクロフレームワーク grape の存在を知ったので調査してみる事にしました。API の実装 に Rails の ActionController は重厚すぎる、Sinatra は軽いけど手間がかかる。。。という中で作られたこのフレームワーク、はたしてその実力は… grape の特徴# grape の特徴は概ね以下の通りです。grape 自体が Rack アプリケーションなので Rails3 に組み込むことが出来ます。というよりは組み込んで使うのが前提のようです(勿論単体でも動きます)。 Rack アプリケーション Sinatra ライクな DSL 自動で JSON にシリアライズ(#serializable_hash または #to_json が存在すればOKみたい) grape を使ってみる# 特徴を掴んだところで、実際にインストールして使って
Code School - RailsForZombiesのレベル1をみんなでやりました。 振り返り with 学習パターン 学習パターンでも参照して振り返ってみましょうか。 目的へのアプローチ、ふむ、目的を満たすためのアプローチはいくつかありうるから、ちゃんとそれを見つけないとねということ。はて、このゾンビ勉強会の目的とは何か。僕は勉強会そのmのを目的としてちょっと意識している。勉強会をやってみて、勉強会のことをわかって、よい勉強会のために何かを身につけたいということ。なぜ勉強会をやるのか、ということに決定的な理由、目的はつけにくいような気がする。一人でいつでもできることを、みんなで決まった時間にやる。どっちにも一長一短ある。イメージとしては、道そのものを探っている感じ。あえて目的を考えるなら、よい勉強会をつくること。そのためのアプローチを試す。 「先生役」を決めるような典型的スタイルに
Rubyを勉強し始めてマニュアルを眺めていたとき、どうしても理解できなかったことがある。 それはModuleで、クラスにincludeした場合にいったいどういう理屈で何が起こっているのかがわからなかった。別に内部的な話ではなく、たとえばincludeとextendの違いとか、そういう感じのことだ。 今回はこの間の記事では前置きでさらっと流してしまった部分、Moduleについて。 あ、そうそう。俺は別にRubyに詳しい人でもなくて、完全に理解できているわけではないから、間違っている可能性がおおいにある。なんとなく理解できた気がしたなら、実際に自分でコードを書いて検証するのがいいと思う。 俺の記事ではせいぜい、理解の壁になっている部分に小さなヒビを入れる程度にしかならないはずだ。 1. まず整理しよう。 Rubyはすべてがオブジェクトとなっていて、オブジェクトはそれぞれ自分自身をselfに切り
JavaScriptへコンパイルして実行することを前提としたスクリプト言語「CoffeeScript」がちょっとした注目を集めています。CoffeeScript自体は2009年末に登場し、その1年後の2010年12月にバージョン1.0がリリースされていますが、注目を集めたのは、数日前(2011年4月13日)にRuby on Railsの生みの親であるDHHが、次期バージョンのRails3.1でjQueryやSCSSと合わせて、CoffeeScriptをデフォルトとして採用するとTwitter上で発言して議論が巻き起こったからです。 Yes, it's true, Rails 3.1 is going to ship with CoffeeScript and SCSS in the box for use with the new asset pipeline. It's bad ass.
ダブル エクスクラメーション !! (感嘆符) を使う。 サンプルコード。 class Bd def initialize(obj) @obj = obj end def zehi? # 否定を否定 !!@obj end end puts Bd.new(true).zehi? puts Bd.new(false).zehi? puts Bd.new(nil).zehi? puts Bd.new(0).zehi? puts Bd.new(1).zehi? puts Bd.new('').zehi? puts Bd.new('hogehoge').zehi? 実行結果。 C:\>ruby r1.rb true false false true true true true ちなみに、環境。 C:\>uname -mrsv WindowsNT 1 5 x86 C:\>ruby -v ruby 1
Kerry Buckleyさん?のRSpecのスライドが凄くいいです。 RSpec 3分の1くらい知らない内容が載っていた感じです。 読みやすくとても良く纏まってるので また何度か読み返すと思います。 気になったとこ .rspec spec.opts ってdeprecateなんですね。 .rspecファイルらしいです。 fuubar テストの進行具合をプログレスバー表示してくれる かわいいツールです。早速installしてみます。 $ gem install fuubar Fetching: rspec-instafail-0.1.5.gem (100%) Fetching: fuubar-0.0.3.gem (100%) Fetching: rspec-core-2.4.0.gem (100%) **********************************************
『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日本 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直
Ruby これは何?小規模のグループで緩くコミュニケーションを取るための、Twitterクローンなマイクロブログです。Rails製です。このGW中に作りました。予め決められたグループで運用することを想定しているため、twitterに比べるとFollow機能等がありません*1が、その分グループ運用に適した他の機能も加わっています。 Timeline Wiki - Show Wiki - Edit なぜ作った?大学の研究室で日々の成果や意見等をつぶやくことで、学生や教員間で進捗を管理しつつコミュニケーションを取り、良い研究室生活を送ろう、という目的のもとで作りました。研究室でなくとも、友人間のグループや小規模なプロジェクト等、色々な用途に使えるのではないかと思っています。 また、Rails3を使ってまともなWebアプリを作ってみたかったので、その学習も兼ねています。コードはこちら(github
前置き Webアプリのテストなど、Webブラウザを使ってのルーチンワークの自動化にしばらく FireWatir を使っていましたが、 自分でパッチ*1をあてないと NameError や NoMethodError が出る*2 自分でパッチをあてないと text field に日本語文字列を設定できない FireWatirでテキストフィールドへ日本語を挿入するパッチ - usualomaの日記 - はてな?Rubyグループ UbuntuでFireWatirを使えるようにしてみた続き。 - いまいにっき 定数への再代入の警告がわらわら((-W0 で抑制することはできるけど気持ち悪い。)) といった点が不満であったので、Watir 2.0 と目されている、Webdriverベースの watir-webdriver に乗り換えました。 watir-webdriver Watir on WebDr
This document discusses using the RSpec testing framework for test-driven development. It provides an example RSpec test describing a class and array, explaining how the tests ensure the array is not nil and its last element is 'C'. The document also references resources on test-driven development, refactoring, and the bowling game kata coding exercise.Read less
_ テストコードを作らない文化が浸透している現場へRuby/Railsが導入された結果への対策を考えてみる まず、導入された結果は以下のようになっております。信じられないものもありますが、事実です。 1. マージが頻繁に行われる開発中はNoMethodErrorや文法エラーが続出。必要なコードのマージ漏れまで発生 2. 修正の度に人力テストが必要となり、コスト増大 3. これまで以上に責任論が追求される現場となる 4. コスト増加を恐れるあまりリファクタリングはおろか、巨大な迂回処理やコピペが横行する 本プロジェクトには、以下のようなテストコードを作(らない|れない)様々な原因があります。 問題分類 現場への影響
クラス名からクラスを得る方法は、リファレンスマニュアルによると eval を使う方法、Object#const_get を使う方法の二通りがあるようです。 #!/usr/local/bin/ruby class Player attr_accessor :name, :age def initialize(name, age) @name = name @age = age end end player1 = Object.const_get('Player').new('rubyo', 19) puts player1.name puts player1.age player2 = eval('Player').new('rubco', 18) puts player2.name puts player2.ageこの時クラス名が Net::HTTP のようにネストしている場合の方法につい
さてさて RMagickに関して いろいろと 勉強中な日々なんですが ドキュメントやリファレンスが英語なので なかなか 捗らない 笑) 高校の英語の点数が赤点間際だった私には酷な話なワケです 笑) ということで まず断っておく事は このRMagickの記事は『あくまで 現在の所 私はそういう風に思っている』 程度の認識で書いてます、 嘘も平気で書いている可能性も 十分にあるので 『ド素人の ruby(RMagick)奮戦記』程度の 感覚で読んでください 今回は 超基本的なところで Imageオブジェクト と ImageListオブジェクトについてです (rubyの場合はクラスと言った方がしっくり来るのかな?) Imageオブジェクトとは その名の通り 一枚の絵のオブジェクトですね メソッドなどは http://studio.imagemagick.org/RMagick/doc/index
Object#send(send)ならメソッドの呼び出し制限に関わらずメソッドを呼び出すことが可能なので、privateメソッドもテスト可能。 確か、1.9以降はメソッド呼び出し制限がObject#sendにも影響するとどこかで見た記憶があるのだけど結局そうはなっていないみたい。 1.9.1、1.8.7で確認済み。 ちなみにオマケ。 Pythonはメソッド名の前にアンダースコアを2つけるとprivateなメソッドになるのだけれど、実際のところ別名でメソッドを定義してそちらを呼び出してるっぽい。別名で定義された方はprivateではないので、そちらを呼び出してテストすることが可能。 他にもJavaだったらsetAccessible(True)を実行すればpublicなメソッドに変更されるのでテスト可能。と聞いただけで確認はしていない。
RSpec は Ruby の BDD(Behavior Driven Development). テストフレームワークの1つです。 Install RSpec % sudo gem install rspec Quickstart 下の方にあるサンプルコードのディレクトリ構成です。 lib/ ディレクトリに開発するライブラリを配置。 spec/ ディレクトリに spec(テスト) コードを配置。 sample_project/ lib/sample.rb サンプルのライブラリ spec/ sample_spec.rb sample.rb のテストプログラム spec_helper.rb すべてのテストで共通する処理を書くスクリプト ディレクトリを作成 まず、プロジェクトのディレクトリを作成して、その中に lib/ と spec/ ディレクトリを作成します。 % mkdir sample
タイトルはただのミリしらリスペクトで深い意味はない。 何か新しいことを勉強するときに「○○を1ミリも知らない俺が〜てみた」と脳内でつぶやくとコンテンツ化される(仮説)。Tue Apr 12 04:24:00 via twicliぴをふし kiwofusi あ、 勉強会づくりに参考になる素敵資料を紹介します。椅子の並べ方や雰囲気の作り方。AsianPLoP2010で @JoshuaKerievsky が熱く語ってくれた「勉強会パタン言語」 http://bit.ly/ejek6iFri Apr 22 23:15:45 via TweetDeckKenji Hiranabe hiranabe 勉強会パタン言語 http://www.industriallogic.com/papers/khdraft.pdf わたしも勉強会づくりに参考資料紹介します。手前味噌ですが → リアルイベント開催のため
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く