タグ

Rubyに関するdiveintounlimitのブックマーク (67)

  • ソースコードの減らし方 - 基本的な考え方と10個の方法 - クラウドワークス エンジニアブログ

    ステップ数で評価が決まる現場では全く役に立たないテクニックではありますが、ソースコードの減らし方について紹介したいと思います。 開発Div. エンジニアのayasudaです。 2014年の夏にジョインし、会社名と同じサービス、クラウドワークス の開発に携わっています。 ご覧の通り、消したソースコードの方が多いので、ステップ数換算だとマイナスの働きしかしてませんね! 記事では、特に Ruby on Rails の運用されているプロダクトコードにおける、ソースコードの減らし方について紹介していこうと思います。 基的な考え方 ソースコードを減らすときの大原則は「ボーイスカウト・ルール - プログラマが知るべき97のこと」です。 普段、ソースコードを触るときに、一つでも良いので簡単な改善を入れる。これを積み重ねるのが大事です。 一度に一気に直そうとするのはあまり良くありません。大抵の場合、デグ

    ソースコードの減らし方 - 基本的な考え方と10個の方法 - クラウドワークス エンジニアブログ
    diveintounlimit
    diveintounlimit 2016/03/11
    正しい。
  • 米GitHub、Ruby向けのリファクタリング支援ツール「Scientist 1.0」を発表 | OSDN Magazine

    GitHubは2月3日、コードパスをリファクタリングするRubyライブラリ「Scientist 1.0」を公開した。重要なコードの書き直しと置き替えを安全かつ確実に行うことができるツールを目指すという。 Scientistはコードのリファクタリングを行う際に利用するツール。最初のバージョンは2014年2月に公開された。 数年前、GitHub内でアプリケーションにおいてアクセス制御のパーミッションコードなどの最も重要なシステムを書き換えるにあたって、作業を確実に行うために開発されたという。リファクタリングでは抽出レイヤを挿入する「Branch by Abstraction(BBA)」手法があるが、この手法では新しいシステムの振る舞いが置き替えたいシステムと同等かを確認できないという問題点を指摘している。一方で、テストについても、すべての可能性を網羅できないなど限界があるとしている。 Sci

    米GitHub、Ruby向けのリファクタリング支援ツール「Scientist 1.0」を発表 | OSDN Magazine
  • Ruby のオススメの機能7選 - Qiita

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

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

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

    マルチスレッド/プロセスまとめ(Ruby編) - Qiita
  • Railsアプリケーションにおけるエラー処理(例外処理)の考え方 - Qiita

    はじめに Railsアプリケーションを格的に作り込んでいくと、「エラー」とは無縁ではいられません。 しょうもないバグでエラーが発生することもありますし、ほとんど不可抗力ともいえるような大規模なネットワーク障害でエラーが発生することもあります。 エラーの種類がなんであれ、エラーが起きた場合は「原因を素早く特定し、速やかに復旧させること」と「あるエラーが引き金になって、さらに大きなエラーに引き起こさないようにすること」が重要です。 エラー処理を適切に実装していれば、原因の特定や復旧もすばやくできますし、さらに大きなエラーを引き起こす可能性も少ないです。 また、ソースコードも比較的シンプルに保てます。 逆にエラー処理が不適切だと原因の特定に時間がかかったり、異常なデータがどんどん増えてさらに大きなエラーを引き起こしたりします。 ソースコードにも無駄に複雑な処理フローや条件分岐がたくさん出てきて

    Railsアプリケーションにおけるエラー処理(例外処理)の考え方 - Qiita
    diveintounlimit
    diveintounlimit 2015/09/30
    これは良いものだ。
  • フレームワークに見る Web セキュリティ対策 - Qiita

    セキュキャン 2015 高レイヤートラック(Jxck) 資料は、セキュキャン 2015 高レイヤートラックの講義資料です。 セキュキャン参加者であるセキュリティエンジニアの卵を対象に、 Web のセキュリティの知見が、実際どのように Web アプリ開発に反映されているか、もしくはどう反映すべきかを、フレームワークの視点から解説することを目的としています。 将来、 Web のセキュリティに興味を持ったエンジニアが、その知見を多くの開発者に啓蒙する手段として、フレームワークに反映するというのは非常に有効な方法です。 ここではその実例として Rails を例にとり、 Rails がこれまでに積み上げてきたセキュリティに関する知見を振り返るとともに、フレームワークとしてそれをどう取り入れているかを解説します。 Intro Web アプリケーションを開発する場合、 Web アプリケーションフレーム

    フレームワークに見る Web セキュリティ対策 - Qiita
  • Gimei·日本人の名前、住所をダミーで生成 MOONGIFT

    ダミーデータを作るのは意外と面倒で、つい“ああああ”などとしてしまったり、同じ文字を繰り返してしまったりします。しかしそれでは実際にありそうな文字数が分かりづらかったり、雰囲気として物っぽさが感じられません。 そこで使いたいのがGimeiです。偽名、偽の住所などを生成してくれるライブラリです。 Gimeiの使い方 GimeiはRubygemでインストールできます。 gem install gimei 例えば男性を作る場合は以下のようにします。 gimei = Gimei.male gimei.male? #=> true gimei.female? #=> false gimei.kanji #=> "小林 顕士" もちろん実行する度に結果は変わります。 > gimei = Gimei.male => #< gimei::name:0x007fd2cb35b4c0 @gender=:ma

    Gimei·日本人の名前、住所をダミーで生成 MOONGIFT
  • すべてのRailsプロジェクトでいれておくべき7つの開発用Gem - Qiita

    元ネタはこちらになります。 いくつかは使ったことはあるのですが、使った事がないものもあったので自分で試しながらまとめてみました。 Awesome Print これはオブジェクトを見やすくしてくれるgemです。 まず、このgemを入れていない場合の出力をみてみましょう。 ちょっとわかりにくいですね。 それではgemをいれてみましょう。Gemfileに以下を追加します。 bundle installをして、rails consoleを立ち上げなおします。 だいぶ見やすくなった感じがします。 ただ、Rails4.2からは、PrettyPrintというのが標準ではいるようになっていて、標準でもだいぶみやすくなってますね。 Rails Panel このgemをいれると、ChromeのDeveloper ToolでRailsの情報を取得できるようになります。 まず、Railsアプリケーションにmeta

    すべてのRailsプロジェクトでいれておくべき7つの開発用Gem - Qiita
  • スクショ撮る君·指定したURLのスクリーンショット画像を作成 MOONGIFT

    Webサイトのスクリーンショットを撮る要望はずっと昔から存在し続けます。昔はIEを外部から操作してスクリーンショットを撮るものがあり、少し経つとFirefoxでスクリーンショットを撮るものが出てきました。最近ではWebKitベースが多いようです。 そんなWebサイトのスクリーンショットを撮ってくれるツールがスクショ撮る君です。URLを指定するだけのシンプルな仕組みです。 スクショ撮る君の使い方 デスクトップ版の撮影。表示されている内容は画像で保存できます。 スマートフォンを指定することもできます。 スクショ撮る君はCasperjs(node製のヘッドレスブラウザ)をキックしてスクリーンショットを取得して、その結果をBase64で返却しています。自分でスクショ撮る君を立てておくと便利に使えそうです。 スクショ撮る君はRuby製のソフトウェア(ソースコードは公開されていますがライセンスは明記さ

    スクショ撮る君·指定したURLのスクリーンショット画像を作成 MOONGIFT
  • [Ruby on Rails]Active Job – Sidekiqを使ってのJobの実行 | DevelopersIO

    はじめに 先日、Ruby on Rails 4.2がリリースされました。このリリースで新たに追加された機能にActive Jobがあります。今回はActive Jobについての簡単な説明と、実際に動かしてみたソースについて書きたいと思います。 Active Jobとは Active Jobについて、Rails Guideより以下の文を引用します。 Active Job is a new framework in Rails 4.2. It is a common interface on top of queuing systems like Resque, Delayed Job, Sidekiq, and more. Ruby on Rails 4.2 Release Notes Active Jobは一言で表すと、「キューを実現するためのインターフェース」と言えると思います。あくまで

    [Ruby on Rails]Active Job – Sidekiqを使ってのJobの実行 | DevelopersIO
  • Rubyの凄く面白い特徴をRailsのコードを例に解説 - Qiita

    これはドリコムAdventCalendarの6日目です。 5日目の記事は、ドリコムの開発を支えるGitリポジトリ@gussanです。 7日目は、般若心経F*ck、コピペで徳を高める話@おーはらさんです。 自己紹介 ドリコムでアプリケーションエンジニアとしてネイティブゲームの開発を行ったりマネージメントをしたりしています。 その他の事はこちら参照: https://gist.github.com/Shinya131/5d9e604d963177ee2cdc はじめに この記事は、プログラミング言語Rubyが持つ凄く面白い特徴を、 Ruby on Rails の一部であるActiveSupport core extensionsのソースコードを題材に解説する物です。 題材に使うActiveSupportは、version 4.1です。 対象とする読者 この記事は、以下のような読者に役立つ内容を

    Rubyの凄く面白い特徴をRailsのコードを例に解説 - Qiita
  • JMeter使うのだるいなーと思ってたらruby-jmeterというRubyでテストプランを書けるツールがあった | mah365

    JMeter使うのだるいなーと思ってたらruby-jmeterというRubyでテストプランを書けるツールがあった。知らなかった(迫真)。 典型的なRailsアプリのテストプラン そういう訳で典型的なRailsアプリのテストプランを書いてみたのがこちら。 ユーザーログインページでCSRFトークンを取得し、常にHTTPヘッダにつけるようにする ユーザーログイン情報をクッキーに保存 といった典型的な処理を盛り込んでいます。あとはREADME.mdを読んでもらえれば大体の書き方が把握できるかと思います。 ちなみに、# Debugというコメントの下2行をコメントアウトしてもらうと、JMeter上でデバッグ用の出力を表示することができます。テストプランが上手く動かないときに、リクエストヘッダやレスポンスを確認するのに便利です。 で、これをコマンドラインで ruby sample.jmx.rb && j

    JMeter使うのだるいなーと思ってたらruby-jmeterというRubyでテストプランを書けるツールがあった | mah365
  • 革命的に速いRubyアプリケーション・サーバー「Raptor」リリースへ | ソフトアンテナ

    革命的に速いとされるRuby用の新しいアプリケーション・サーバー「Raptor」のサイトが公開され期待を煽っています(Hacker News)。 公式サイトによると、RaptorはRailsやSinatraなどを動かすための新しいアプリケーション・サーバー。最適化されたHTTPエンジンにより従来のアプリケーションサーバーと比較して高速に動作し、Unicornの最大4倍、PumaとTorqueboxの最大2倍の速度で動作するとのこと。 現在まだ何もダウンロードできるものは公開されたおらず、パブリックベータ版のリリース日は2014年11月25日に設定されています。メールアドレスを登録しておくと、状態が更新されるか、あるいは第三者のレビューが公開されたときなどにメールで連絡してくれるようなので気になった方は登録してみてはいかがでしょうか。 ちなみに誰が開発されているかということに関しても「We

    革命的に速いRubyアプリケーション・サーバー「Raptor」リリースへ | ソフトアンテナ
  • Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT
  • 増えるログ、多様化するログをどう効率的に運用するか

    増えるログ、多様化するログをどう効率的に運用するか:今さら聞けないfluentd~クラウド時代のログ管理入門(1)(1/2 ページ) 仮想化やクラウド化、モバイル化の進展に伴い、管理すべきログが多様化・肥大化しています。そんな中でも効率よく、意味のあるログ管理を実現するツールとして注目されている「fluentd」を、これから始めたい方のために一から解説します。 システムを安定して効率良く運用していくために、ログ管理は欠かせない要素の1つです。仮想化やクラウド化、モバイル化の進展につれてシステムはますます大規模化し、それに伴い管理すべきログが多様化・肥大化する傾向にあります。 fluentdはこういった中でも、効率よく、意味のあるログ管理を実現するために非常に有用なツールです。連載では、fluentdの基と具体的な活用方法を紹介します。 ログ管理の現状と課題 環境の仮想化・クラウド化、さ

    増えるログ、多様化するログをどう効率的に運用するか
  • Ruby on Rails 4.0 勉強会資料

    Rails4 社内勉強会の発表資料です。 Blog: http://www.techscore.com/blog/2013/09/09/rails4-%E7%A4%BE%E5%86%85%E5%8B%89%E5%BC%B7%E4%BC%9A%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88/ (2013/10/03) TECHSCORE 体に Rails4 の記事を書きました!スライドでは書ききれなかった詳細についても解説していますので、そちらもご覧ください。see http://www.techscore.com/tech/Ruby/rails-4.0/Read less

    Ruby on Rails 4.0 勉強会資料
  • Railsなプロジェクトで利用している便利なGem一覧 | Webシステム開発/教育ソリューションのタイムインターメディア

    RubyにはGemと呼ばれるサードパーティのライブラリが豊富に存在します。 Gemは大変便利なもので、こういう機能ほしいなと思った際に The Ruby Toolbox や RubyGems.org や Google で検索すると大抵誰かがその機能を持ったGemを作っていたりします。 gemを利用するのも、RubyGems.orgに登録されているものならば と入力することで利用可能となります。 Gemはだれでも簡単に開発でき、審査無しですぐに公開できるため、日々大量のGemたちがRubyGems.orgに登録されています。反面、長年保守されていないGemや品質の低いGemも大量にRubyGems.orgに登録されているのが現状です。 同じ機能を持ったGemも大量に登録されていたりして、どのライブラリを利用してよいのか迷う事も多々あります。 今回は弊社プロジェクトで実際に利用している、便利な

    Railsなプロジェクトで利用している便利なGem一覧 | Webシステム開発/教育ソリューションのタイムインターメディア
    diveintounlimit
    diveintounlimit 2014/02/06
    幾つか便利そうなのある。
  • A Fast, Concurrent Web Server for Ruby & Rack - Puma

    Speed & Concurrency Current Release: 6.4.0 Unlike other Ruby Webservers, Puma was built for speed and parallelism. Puma is a small library that provides a very fast and concurrent HTTP 1.1 server for Ruby web applications. It is designed for running Rack apps only. What makes Puma so fast is the careful use of a Ragel extension to provide fast, accurate HTTP 1.1 protocol parsing. This makes the se

  • Ruby 2.1.0リリース!注目の新機能を見てみましょう|TechRacho by BPS株式会社

    2013年12月25日。おめでとうございます、Ruby 2.1.0がリリースされました! 日時間で26日という細かい突っ込みをしている場合ではありません。 まだ使ったことがない方、簡単に変更点を見てみましょう。 文法の変更 デフォルト値を伴わないキーワード引数 Ruby 2.0が出たときから誰もが思っていた疑問、「なんでキーワード引数はデフォルト値必須なんだ?」がついに解消されました。以下の記法で、デフォルト値をつけないキーワード引数を宣言できます。この場合、呼び出し時に対応する実引数を渡さないとArgumentErrorになります。 def hello(name: ) puts name end hello(name: "taro") # => taro hello # => ArgumentError: missing keyword: name キーワード引数同士ではデフォルト引数

    Ruby 2.1.0リリース!注目の新機能を見てみましょう|TechRacho by BPS株式会社
  • speed_gun で Rails のパフォーマンスを測定する - 鳩舎

    Web アプリケーションのパフォーマンスにうるさいみなさんこんにちは。 Rails アプリのパフォーマンスプロファイリングだと、 rack-mini-profiler が有名で、それ以外だと New Relic とかを使って測定していくのが普通のようですが、物足りない部分があったので、自前でプロファイラ gem を作りました。 Rubygems: http://rubygems.org/gems/speed_gun / Github: https://github.com/rosylilly/speed_gun 詳細は Github の README なんかを見ていただくとして、基的には rack-mini-profiler 的な情報収集が出来ると思ってもらって差し支えないです。 ちなみに計測画面はこんな感じ。 大きなスクリーンショットはこちら 小さくて何も見えないかも……とりあえず3セ

    speed_gun で Rails のパフォーマンスを測定する - 鳩舎