タグ

rubyに関するhohoho_ho2005のブックマーク (625)

  • 日本人が間違いやすいコーディング上の英語 - Qiita

    コードレビューしていく中で、コードのレビューというよりは英語のレビューをしている時があって、日人が特に間違えやすいと思われるポイントをいくつかまとめておきたいと思います。 下記はrubyのコードをサンプルにしています。特にrubyはコードを英文として読めるように書けるというのをこだわっているのでより英語表現を意識した書き方をしたいですね。 自動詞と他動詞 日語の自動詞と他動詞は、"を"をつけるかどうかの問題で動詞の問題ではないので、日人は自動詞や他動詞の意識が低いようです。英語では使い方をしっかりしないと意味のわからないメソッドが完成します。

    日本人が間違いやすいコーディング上の英語 - Qiita
  • gdbを使ったrubyのデバッグ - クックパッド開発者ブログ

    技術部の国分 (@k0kubun) です。 先日byebugの高速化を行っていた最中、変更を加えたbyebugを使っていると一定の確率でrubyがSEGVするバグを発見しました。 私はC言語のコードのデバッグの経験はなかったのですが、デバッガの使い方を調べながらSEGVの原因調査を行いパッチを送ったところ無事取り込まれ、最新の高速なbyebugが安全に使えるようになりました。 その際、ruby自体をデバッグするために必要な情報が分散していて大変だったので、まだrubyのデバッグをしたことがないけれどやってみたいという人を対象に、gdbというデバッガを使ったrubyのデバッグの方法を紹介します。 デバッグ用にrubyをビルドする デバッグ時に変数名やソースコードなどの情報を見るためには、最適化オプションをオフにしてデバッグ用にrubyをビルドしておく必要があります。 rubyのデバッグ用ビル

  • マルチスレッド/プロセスまとめ(Ruby編) - Qiita

    プログラムの実行単位 固有のメモリ空間を持つ(リソースを共有しない) マルチプロセスの場合、物理/仮想メモリ領域間のアドレス解決のオーバーヘッドが高い。 プロセスの実行単位 共通のメモリ空間を持つ(リソースを共有する) マルチスレッドの場合、物理/仮想メモリ領域間のアドレス解決は発生しない。 ユーザースレッド ユーザー空間(アプリケーションが利用するメモリ空間)を利用 1つのプロセスに複数のスレッドがあっても、1つのスレッドしか実行されない。 OSカーネルを介さないスレッド切り替えのため、スレッド切り替えに伴うオーバーヘッドが少ない。 仮想VM上で実行されるスレッドをグリーンスレッドと呼ぶ。 カーネルスレッド カーネル空間(カーネルが利用するメモリ空間)を利用 1つのプロセスに複数のスレッドがある場合、同時に複数(CPUコア数分)のスレッドを実行できる。 OSカーネルを介するスレッド切り替

    マルチスレッド/プロセスまとめ(Ruby編) - Qiita
  • Ruby のオススメの機能7選 - Qiita

    この記事は Ruby Advent Calendar 2015 の 8日目です。 比較的あまり知られていないと思うオススメの Ruby の機能を 7つ紹介します。 Enumerator.new Enumerator.new は知ってはいても、あまり使わない人が多いように思います。 私は非常によく使います。 理由は スコープを新たに導入したい Producer-Consumer パターン。値の生成と消費でフェーズの違いを明確化したい。 そのメソッド内で1度使いたいだけなのに yield するメソッドを別に作るのはちょっと気が引ける。名前空間を汚したくない。 全部、一度配列にしちゃうとメモリが気になる。メモリ消費を節約したい。 ネストを浅くしたい Enumerable モジュールの機能が欲しい といったところです。 たとえば下記のようなかんじで使います。 # Producer フェーズ use

    Ruby のオススメの機能7選 - Qiita
  • レキシカルスコープ/ダイナミックスコープとは? - Qiita

    そもそも、スコープには二種類ある。 レキシカルスコープ ダイナミックスコープ それぞれは、変数の参照の仕様のことであり、RubyJavaJavascriptpython等多くのメジャーな言語でレキシカルスコープが採用されています。 レキシカルスコープの例 非常に単純です。以下のコードを見て下さい。 var = '私はトップレベル' def a_method return var end def b_method var = '私はオブジェクトの中身' return var end a_method #-> '私はトップレベル' Ruby等を書いていると当たり前ですが、a_methodからb_methodのvarを参照することは出来ません。 これが レキシカルスコープ です...!!! しかし、世の中には関数を評価した時に変数のスコープが決定する言語があるらしいです。 それらをダイナミ

    レキシカルスコープ/ダイナミックスコープとは? - Qiita
  • rubyのRPMを作るのをDockerとCircleCIにやらせたら便利だった - critical alertのブログ

    この記事はフィードフォースエンジニア Advent Calendar 2015 - Adventar4日目です! みなさんrubyのRPMビルドってどうしてますか! CentOSをメインで使っていると最新のrubyはyumで入らないのでどこかのリポジトリからインストールするか自前でビルドする必要があるかと思います。 プロビジョニングのタイミングでrbenvやmakeで入れてもいいのですがciや新規ホストを立てた時など毎回rubyのビルドをするので時間がかかってしまうんですよね。 それが嫌でrubyはリリースされるたびにrpm化してインストールするようにしています。 ところがrpmのビルド環境って用意するのが面倒だったりビルドしたい環境ごとにvagrantを立ち上げて〜とか意外と手間がかかる。 自動化したいなーと思っていて、Dockerは特定の環境を再現するのに最適だし、CircleCIはG

    rubyのRPMを作るのをDockerとCircleCIにやらせたら便利だった - critical alertのブログ
  • http://best-ruby.com/

  • レガシーな開発環境をモダン化している話

    2015/11/25に行われた第96回PHP勉強会のLTで発表した資料です。

    レガシーな開発環境をモダン化している話
  • RubyとAWSでつくるメディアストレージ基盤 - Qiita

    概要 基盤の果たす役割としては、「利用者が基盤に向けてファイルをアップロードし、なんらかの(変換を含む)処理を行って利用サービス側に通知する」というものになる。 そこで、想定する利用イメージを大まかにでも理解してもらうため、抽象的なイメージを図示する。 ファイルをアップロードしたいユーザーは、まず基盤の利用サービスに対してアップロード権限の発行を依頼する。 図では省略したものの、利用サービス側はその依頼を受けて、基盤に対してアップロードチケットの発行を依頼し、取得した情報をアップロードしたいユーザーに対して返す。 アップロードユーザーはそれを受けて、基盤に対してファイルのアップロードを行い、アップロード・バリデーション・変換が済んだものについては基盤が利用サービスに結果を通知するというのが大まかな流れとなる。 次に、基盤の持つ責務について簡単に解説したい。 基盤は、メディア

    RubyとAWSでつくるメディアストレージ基盤 - Qiita
  • Rubyプロジェクトの始め方の備忘録 - Qiita

    自分の記憶力が薄弱すぎて、Rubyで何か書くかとなった時にいつも下準備の仕方を調べている気がするので、後で楽するために備忘録を残しておきたいと思います。 余談ですが、自分の記憶力が薄弱すぎて(大事なことなので2回繰り返した)「自分のために残すメモ的な意味の熟語なんだっけ?忘備録だったっけ?」って思ってググったら、「備忘録」(忘れるのに備える記録で備忘録)が正しくて、よく見る「忘備録」は誤記で「備えるのを忘れた記録になる」という意味になってしまうようです。 勉強になりました。 前提となる環境 Mac OS X giboをインストール済 ruby-build,rbenvをインストール済 準備 ディレクトリを作ってgit initしてからgiboで.gitignoreをお手軽に作成する。giboは、RubyOSXVimを引数に指定する(OSXVimはなくてもいいかも) $ mkdir ru

    Rubyプロジェクトの始め方の備忘録 - Qiita
  • Rubyのattr_accessor等について - Qiita

    Rubyのattr_accessor,attr_reader, attr_writer等が良く分からなくて,モヤモヤしていたので,調べて自分なりに納得したことをまとめておく. 例として以下のコードを考える. class Triangle attr_accessor :baseLength, :height def initialize(baseLength, height) @baseLength = baseLength @height = height end end sankaku = Triangle.new(10.0, 3.0) puts sankaku.baseLength puts sankaku.height

    Rubyのattr_accessor等について - Qiita
  • Ruby on Rails Tutorial (3rd ed.) を一周終えた - #-

    ぽちぽち続けてきてちょうど 40 日かかったが、Ruby on Rails Tutorial (3rd ed.)(原典)を一周終えることができた。カタチあるものをこうして作ることができ、達成感もひとしおである。 hashedhyphen/rails-tutorial hashedhyphen/toy_app hashedhyphen/sample_app Heroku に deploy できればいいのだが、SendGrid や AWS を動かすのにクレジットカード(無料の範囲内)が必要とのことなので、近いうちにクレカデビューしようと思う。 また、自機が Windows7 だったこともあり、環境構築やその他でつまづいた箇所がいくつかあったが、それらは Qiita にまとめてみた。Windows 機でチュートリアルを進める方の参考になれば幸いである。 hashedhyphen - Qiita

    Ruby on Rails Tutorial (3rd ed.) を一周終えた - #-
  • メタプログラミングRuby第2版 / 第4章ブロック[勉強メモ]

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

    メタプログラミングRuby第2版 / 第4章ブロック[勉強メモ]
  • Ruby 2.3 プレビュー(言語・組み込みライブラリ編) - 弥生開発者ブログ

    Misoca開発チームのeitoballです。RubyKaigi2015 の開催を指折り数えて待っている今日この頃です。株式会社Misoca は、「Additional Sponsor」として、RubyKaigi2015 に協賛しています。 今日は、今年のクリスマスにリリースが予定されているRuby 2.3 の初めてのプレビューリリースが、11月11日に リリース されたので、NEWS を読みながら、新しく追加される予定の機能などを試していきたいと思います。 言語の変更 frozen string literal pragma(文字列リテラル凍結のプラグマ)の追加 文字列リテラル を記述すると、#freezeを呼び出すと同じように凍結されるプラグマが追加されます。 有効にするには、次のようにファイルの先頭にプラグマを書きます。 # frozen-string-literal: true 文

  • Selenium Webdriverの自分用Tipsまとめ 1 - Qiita

    Selenium IDEから、Selenium WebDriver(Ruby)環境構築メモ。 覚えている限り。 動機 Windows端末上でSelenium IDE使ってWebページテストしていたけれど、ページ遷移が面倒だし、自分でKickするのは面倒くさいなあ。 →世の中にはSelenium Webdriverというものがあるらしいぞ。 →おまけに、サーバ内でモニターなくても試験できるヘッドレス環境というのもあるらしいぞ。 →さらに、Jenkinsという、タスクをKickするのに便利なモノもあるらしいぞ。 →JenkinsとSelenium Webdriverを組み合わせて、おまけにHeadlessでサーバ内でブラウザ立ち上げてテストしてしまえば、割と楽にできるのでは? という安易な考えでスタート。 環境 VMでUbuntuを用意。 14.04使ってます。 $ cat /etc/lsb-

    Selenium Webdriverの自分用Tipsまとめ 1 - Qiita
  • サンプルコードでわかる!Ruby 2.3の主な新機能 - Qiita

    はじめに Ruby 2.3が2015年12月25日にリリースされました。 そこでこの記事ではRuby 2.3の主な新機能を紹介していきます。 対象となるバージョン 以下のとおり、この記事では ruby 2.3.0 を使っています。 参考文献 今回紹介するサンプルコードは下記のサイトにあったコードをベースにしています。 New features in ruby 2.3 - BlockScore Blog ただし、実行結果を確認するために Minitest を使ったり、コードをいくつか変更したりしています。 サンプルコードはGitHubにあります この記事で使ったサンプルコードはGitHubに置いてあります。 興味のある方は手元で動かしてみてください。 JunichiIto/ruby-2.3-sandbox それではここからRuby 2.3の新機能を紹介していきます。 深い階層にあるハッシュの

    サンプルコードでわかる!Ruby 2.3の主な新機能 - Qiita
  • [Ruby] よく使うRspecのレシピ集(Rspec3.3) | DevelopersIO

    モバイルアプリサービス部の五十嵐です。 最近Rspecをガッツリ書いたので、調べたことをユースケースごとにまとめてみます。 対象バージョンはRspec3.3です。 リフレクション Rubyのリフレクションを使用したテストの書き方です。 インスタンス変数を操作したい インスタンス変数を取得したい場合はinstance_variable_get、設定したい場合はinstance_variable_setを使います。また、instance_variable_setでモックを仕込むことでレシーバオブジェクトのインスタンス変数や動作を操作することができます。 obj = Person.new(name: 'Hoge') # initializerで@nameにnameがセットされる想定 name = obj.instance_variable_get('@name') expect(name).to

    [Ruby] よく使うRspecのレシピ集(Rspec3.3) | DevelopersIO
  • 「メタプログラミングRuby 第2版」を読んだよ - 雀巽の日記帳

    諸事情による帰省の道中、メタプログラミング Ruby 第2版を読みました。 メタプログラミングRuby 第2版 作者: Paolo Perrotta,角征典出版社/メーカー: オライリージャパン発売日: 2015/10/10メディア: 大型この商品を含むブログ (3件) を見る 新幹線って快適ですよね。LCC のほうが安いんですが、新幹線のほうが好きだし楽なので新幹線をついつい使ってしまいます。 快適すぎてめっちゃ眠くなりますが、片道4時間を全部寝て過ごすのも勿体無いので寝落ちを繰り返しながら読書をしてきました。 以前から、会社の同僚に「プログラミング3大神書籍 for Rubyists」として、リーダブルコード、リファクタリング Ruby、メタプログラミング Ruby を薦められていたのですが、やっと全部読み切ることができました。 necojackarc.hatenablog.com

    「メタプログラミングRuby 第2版」を読んだよ - 雀巽の日記帳
  • SIerからWeb系に転職して半年。転職前にやっといてよかったなぁと思ったこと - suusan2号の戯れ

    SIerから自社Webサービスをやってる会社に転職して半年たったのでまとめる。当は試用期間が終わったころに書こうと思っていたのに、すっかり忘れてました。。。 SIerでは仮想化のインフラエンジニアっぽいことしてました。いまはRubyの会社でRails触ったりReact触ったりしています。 以下は、これをやっておくと転職のときに有利…とかいうものではなく、転職後になってやっておいてよかったなと思ったことですので注意。 やっておいてよかったなと思ったこと Gitの使い方を覚えておく Gitは普通に使いますし、Gitが全く使えないと開発に参加するところから大変です。 当然、仮想化のインフラエンジニアなんてやってたのでGitなんて全然仕事では触ってませんでしたが、趣味の自分一人の開発でも更新はGitHubでプルリクエストを送りセルフマージする感じにして慣れるようにしてました。 以下のでは、なん

    SIerからWeb系に転職して半年。転職前にやっといてよかったなぁと思ったこと - suusan2号の戯れ
  • Ruby/Pythonで依存パッケージをローカルインストールして開発環境構築やCIビルドを高速化する - Steel Dragon 14106

    Ruby/Pythonで依存パッケージをローカルインストールして開発環境構築やCIビルドを高速化する By raimon, 2015-11-08(日), in category Git 一般的にRuby/Pythonで書かれたアプリケーションの依存パッケージはBundler/pipでインストールされるが、rubygems.orgやPython Package Indexからの取得・展開に時間がかかり、またこれらの中央サーバがまれにダウンしていると何もできなくなってしまうケースがある。 回避策の一つとして、依存パッケージをGitリポジトリに飲んでしまい、パッケージリポジトリとは通信せずローカルインストールで済ませる、いわゆるvendoring(ベンダリング)と呼ばれる方法がある。 サンプルリポジトリ それぞれのサンプルとなるGitリポジトリをGitHubに作成した。 ruby-local-g