タグ

programmingとRubyに関するhasidukiのブックマーク (24)

  • メタプログラミングRuby第2版 / 第4章ブロック[勉強メモ]

    def a_method return yield if block_given? 'ブロックがありません' end puts a_method #=> ブロックがありません puts a_method { 'ブロックがあります!' } #=> ブロックがあります! 用語: クロージャ『Rubyの動かないコード (初級編) ブロックとクロージャの性質 - 主に言語とシステム開発に関して』 の説明が非常に分かりやすかったので、お借りしました。まずはクロージャの説明。 - クロージャの外の(より広いスコープで定義された)変数はクロージャの中からでも参照可能 - クロージャの中で定義された変数はクロージャの外からは参照できない。 これってつまりはブロックと同じようなものということ。 - Rubyのブロックは、ブロック定義時のコンテキスト(変数とか)を保持する - Rubyのブロック内で宣言された

    メタプログラミングRuby第2版 / 第4章ブロック[勉強メモ]
  • http://allenlsy.com/metaprogramming-ruby-distilled/

    http://allenlsy.com/metaprogramming-ruby-distilled/
    hasiduki
    hasiduki 2014/10/08
    Metaprogramming Rubyのまとめとサンプルコード
  • Ruby on Rails ガイド:体系的に Rails を学ぼう

    Railsの仕組みを体系的に学べる大型コンテンツ Rails Guides に基づいた1,600ページ超えの大型リファレンスです。 プロダクト開発に役立つ実践的な知識が満載 Railsチュートリアルを完走し、Webサービス開発中の人に最適です。 全文検索やバージョン毎の検索にも対応 Proプランでは、さらに効率的な活用をサポートします。 このアイコンが付いているガイドは現在作業中 (WIP: Work In Progress) です。作業中のガイドはそれなりに有用ではありますが、不完全な情報やエラーが含まれている可能性があります。 はじめに Rails をはじめよう Railsのインストール方法と最初のRailsアプリケーションの作成に必要なすべてを解説します。 モデル Active Record の基礎 Active Recordの基礎となるモデル、データベースへの永続的な保存、Acti

    Ruby on Rails ガイド:体系的に Rails を学ぼう
  • 「関連する○○」機能を手軽に実現できる。そう、Elasticsearch ならね。 - クックパッド開発者ブログ

    セコン (id:secondlife, @hotchpotch) です。ウェブサービスにはよく「このエントリーに関連するブログ記事」や「このレシピに関連するレシピ」という機能が実現されてますよね。さて、この機能はどのように実現すれば良いでしょうか。例えば tf-idf で単語の類似度を求め…といった実装が必要になり、いささか面倒です。 しかしながら Elasticsearch や Solr *1を使うと手軽に実現できます。例えば、クックパッドニュースの記事では Solr を使い「この記事を読んだ人におすすめ」の機能に、最近クックパッドにジョインしたインドネシアの会社の DapurMasak では Elasticsearch を使い「Resep serupa(関連レシピ)」の機能で利用しています。 クックパッドニュースでのこの記事を読んだ人におすすめ DapurMasak での関連レシピ 使

    「関連する○○」機能を手軽に実現できる。そう、Elasticsearch ならね。 - クックパッド開発者ブログ
  • 橋本商会 » HerokuのSinatraにバックグラウンドワーカーを詰め込んで節約

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

    hasiduki
    hasiduki 2014/09/24
    “ThinはEventMachineの中で動いてるので、EM::defer等が使える。 Herokuは1プロセス目は無料、2プロセス目を起動させると課金されるが、EventMachineでworkerをWebアプリのプロセス内に同居させればお金がかからなくなる。 ”
  • Ruby Patterns - ✘╹◡╹✘

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

    Ruby Patterns - ✘╹◡╹✘
    hasiduki
    hasiduki 2014/07/11
    憶えたい
  • 全てがJSONになる - ✘╹◡╹✘

    TL;DR JSON Schemaを使ってこういうことが実現可能になった。 ダミーAPIサーバの提供 ドキュメントの自動生成 APIクライアントの動的定義 APIサーバのバリデータの動的定義 APIサーバのレスポンスの自動テスト JSON Schemaとは JSON SchemaというのはあるJSONのデータ構造を記述するための方法および書式の仕様で、 JSON SchemaもJSONで記述される。 これを利用すれば、リソースベースの(=RESTfulライクな)APIの仕様が簡便に記述できる。 例えば、我々のAPIレシピとユーザというリソースを扱っていて、 それぞれCRUDのAPIを備えており、レシピはidとtitleとdescriptionという属性を持つ、 という旨をJSON Schemaで表現できる。 なんで最近ちょっと流行ってんの Mobile First、 Service Or

    全てがJSONになる - ✘╹◡╹✘
  • http://blog.inouetakuya.info/entry/2014/06/08/194015

    http://blog.inouetakuya.info/entry/2014/06/08/194015
  • NameBright - Coming Soon

    rubylearning.com is coming soon This domain is managed at

  • RSpec/Capybara入門 - Ruby on Rails with OIAX

    Ruby on Railsプログラマーのための「RSpec/Capybara入門」を連載します。Railsを学習中の初心者がテスト駆動開発(TDD)あるいはビヘイビア駆動開発(BDD)を実践するための基礎的な知識や考え方を説明していきます。 メインテーマはRSpecとCapybaraですが、factory_girl、Database Cleaner、Zeusなどの関連するGemパッケージも途中で紹介していく予定です。また、CSSセレクタやXPathについても簡単に解説することになるでしょう。 いちおうRubyRailsの基礎知識を話の前提としますが、初心者を念頭に置いて丁寧な説明を心がけます。 できるかぎり具体的にコーディングと操作手順を示すつもりです。実際に手を動かしながら読み進めると、より理解が深まるでしょう。 記事一覧 イントロダクション (2013/08/14) RSpec/Ca

    RSpec/Capybara入門 - Ruby on Rails with OIAX
  • Ruby で作る、簡単 CLI ツールのススメ - Qiita

    Ruby 開発環境 AdventCalendar 10 日目です。前日は、 aereal さんでした。 さて、皆さんコマンド打ちまくってますか?僕は Ctrl+R で履歴から引っぱり出さないとタイポで撃沈します。 そんなこんなで皆さんいろんな CLI ツールをご利用中だと思います。 vim とか emacs とか、 rails g とか、 guard とか。実に便利なものたちですが、現実の開発現場に即した、素晴らしいニッチなツールというのは、得てしてそんなにないものです。 「こんなに重厚でなくていい」 「もうちょっとざっくりとした……なんというか痒いところに手が届くような……」 などなど、いろいろあると思います。例えば「チームで開発しているのだが、今行ったコミットのレビューを依頼するメールを書くのが面倒なので社内 Twitter 的なものに書こうかと思うのだがそれもめんどくさいのでコミット

    Ruby で作る、簡単 CLI ツールのススメ - Qiita
  • RailsでFactoryGirlを使ってみるメモ [俺の備忘録]

    Google+ボタン はてなブックマークボタン 更新日時: 2014年02月25日(火) 作成日時: 2013年08月06日(火) 前の記事 / 次の記事 Fixtureは充分にイケてると思っているので、基Fixtureで満足なんだけど、 Fixtureにできないことをするために、FactoryGirlを使ってみようと思い立ったメモ。 自分が知らないだけでFixtureできるのかも知れないけど、 DBに保存はしないけど値だけ欲しい時がある。 Rspecで言うと "valid_attributes" である値。 今までは自力で適当にモジュールつくって読み込んでたんだけど、 折角FactoryGirlってgemがあるんだから使ってみようかと思った。 ※ 適当にどんどん追加していったらかなり長くなってしまったので 暇が訪れたらまとめて新しい記事にしたいと思う(2014/02/25) 何年後にな

  • すごいぞRSpec(letとlet!編) - @yohfee.blog!

    すでに前回のすごいぞRSpec(shared example group編) - ぷろぐらまねがで登場してるけどあらためてletを調べるよ。rspec-core(2.5.1)/features/helper_methods/let.featureを参考に。 let 要するにメモ化するわけで、同一サンプル内だと同じオブジェクトを使いまわせるのだな。違うサンプルでは改めて評価される。さらに遅延評価なので実際に評価されるのは最初にメソッドが呼ばれたときだ。 $count = 0 describe 'let' do let(:count) { $count += 1 } it 'memoizes the value' do count.should == 1 count.should == 1 end it 'is not cached across examples' do count.shou

    すごいぞRSpec(letとlet!編) - @yohfee.blog!
  • Better Specs { rspec guidelines with ruby }

    translations Documentation RSpec is a great tool in the behavior-driven development (BDD) process of writing human readable specifications that direct and validate the development of your application. On the web there are many resources that give complete overview of _what_ you can do with RSpec. But there are fewer resources devoted to how to create a great RSpec test suite. Better Specs tries to

  • RSpec の入門とその一歩先へ、第2イテレーション - t-wada の日記(旧)

    和田 卓人(@t_wada) 作『RSpec の入門とその一歩先へ、第2イテレーション』はクリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスで提供されています。 #coffee.rb の写経会に招かれた(というよりは押しかけた?)ので、先日の RSpec チュートリアルの続きを記します。このエントリは写経会に参加しながらのライブ更新でした。 (更新) 第3イテレーションも書きました。続きに興味ある方はご覧下さい 前回終了時点のコードと実行結果 前回終了時点でのコードを以下に記します。 message_filter.rb class MessageFilter def initialize(word) @word = word end def detect?(text) text.include?(@word) end end message_filter_spec.rb r

  • RSpec の入門とその一歩先へ - t-wada の日記(旧)

    和田 卓人(@t_wada) 作『RSpec の入門とその一歩先へ』はクリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスで提供されています。 東京 Ruby 会議 03 の RSpec ワークショップの資料です。このワークショップでは参加者の方に「写経」(コードを書き写すこと)をして貰い、TDD/BDD と RSpec を同時に学べるように都度説明を入れるかたちで行いました。 第2イテレーションも書きました。続きに興味ある方はご覧下さい (更新) 第3イテレーションも書きました。続きに興味ある方はご覧下さい 1st iteration favotter の みたいな NG ワードのフィルタリング機能を RSpec で作りましょう。まずは NG ワードの検出機能を作成します。 このイテレーションでは最初ベタな形のテストコードと実装を書き、だんだんとそのコードを洗練させてゆきま

  • RSpec の入門とその一歩先へ、第3イテレーション - t-wada の日記(旧)

    和田 卓人(@t_wada) 作『RSpec の入門とその一歩先へ、第3イテレーション』はクリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスで提供されています。 大きく時間が開いてしまいました(すみません…)、RSpec 入門の第三イテレーションです。 (第3回 coffee.rb の開催に合わせたライブ更新で書かれましたので、まだ詳細の説明は途中のところもあります。) 第1イテレーション 第2イテレーション 前回終了時点のコードと実行結果 この「RSpec 入門とその一歩先へ」シリーズでは、メッセージフィルタを RSpec を使って開発することで、 RSpec の機能と TDD を同時に学ぶことを狙いとしています。 前回終了時点のコードと実行結果をまず記します。 message_filter.rb class MessageFilter def initialize(*w

  • ポイントシステム(6) -- Message Expectation

    前回の末尾で「次はスパイについて書きます」と予告したのですが、改めていろいろと調べてみると私が思っていたのと違っていて、話がうまくまとまりそうもないことが分かってきました。装飾に使うスパイの写真も選んであったので非常に残念ですが、今回は見送ることにします。 ReceptionDesk クラスの責任 前回、「残る課題」として、ReceptionDesk#sign_in のテストが RewardManager クラスの振る舞いに依存しているため、RewardManager クラスの仕様変更によってテストが落ちるようになる可能性がある点を指摘しました。 問題のエグザンプルのコードは次の通りです: specify 'ログインに成功すると、ユーザーの保有ポイントが1増える' do expect { ReceptionDesk.new(customer.username, 'correct_passw

    hasiduki
    hasiduki 2014/04/10
    Rspecのexpectシンタックス
  • Ruby & Railsの入門チュートリアル・まとめ【無料】

    最近、RubyRails系の入門チュートリアルを中心にいくつかの記事があったので、知っている入門系チュートリアルを一式をまとめてみました。当の初心者な方から、格的にRubyを勉強したいと思う人にすっごいオススメです! (2016/02/20 17:30) 全般的に内容をリファクタリング 😎 スライド 拙著ですが、Railsをスタートダッシュして学ぶときに良さそうな記事や資料をまとめました。 Ruby 概論のスライド Spice Life CTOの五十嵐邦明さんの一橋大学での講義「Ruby概論」のスライド。 🎳 動画 Ruby入門 (全22回) Ruby on Rails 4入門 (全28回) 最初に見てほしいのがRuby/Railsのドットインストール。このあたりから少しずつ始めていくといいと思います! 🐞 ハンズオンProgate | プログラミングの入門なら基礎から学べるP

    Ruby & Railsの入門チュートリアル・まとめ【無料】
  • [Rails] セッション管理をベタで実装してみる - Qiita

    Ruby on Rails Tutorialのエッセンスを自分なりに整理11 [Rails][RSpec] Capybaraでフォーム入力をシミュレートしてテストする http://qiita.com/kidachi_/items/b0e607c83e9da9380d7e の続き。 Ruby on Rails Tutorial(chapter8) http://railstutorial.jp/chapters/sign-in-sign-out?version=4.0#top 概要 普通はDeviseなどの便利なgemやライブラリを使うのだろうが、 内部動作を知るためにまとめる。 ※ あくまでRails上での「ベタ」です。 セッション管理の流れ 新規登録時 ユーザ作成にあわせて、remember_token(セッショントークン)生成 暗号化の上dbに保管 ログイン時 新たにremember

    [Rails] セッション管理をベタで実装してみる - Qiita
    hasiduki
    hasiduki 2014/03/24
    セッション管理