タグ

rubyに関するmasudaKのブックマーク (113)

  • Rubyのtrueとfalseの話 - Qiita

    この記事は、技術同人誌としてまとめるはずだった原稿をほぼそのまま転載しています。諸事情により向こうかなり長い間同人誌即売会に売り手として参加することが難しくなったためです。 長いですが、お楽しみいただければ幸いです。 まえがき このは、Rubyコミッタである卜部昌平に、そのである私、卜部一恵がRubyのtrueとfalseについて突っ込んで聞いてみた話です。文は両者の対話形式で進んでいきます。 私は昌平と同じ大学同じ研究室に所属していたのでプログラミングについての基礎は一応ありますが、エンジニアとして職を得たことはありません。つまり、プログラミング初級者です。このはそのくらいのレベル感のだと思います。 私自身が初級者なりにRubyを使っていて、if文が思った通りに動かない、そんなときに抱いた疑問からこのが生まれました。 同じような疑問を抱いている方の一助になれば幸いです。 は

    Rubyのtrueとfalseの話 - Qiita
  • RubyGems の複数の脆弱性について

    Posted by usa on 29 Aug 2017 Ruby の標準添付ライブラリである RubyGems に、複数の脆弱性が発見されました。 RubyGems の公式ブログにて報告されています。 詳細 以下の脆弱性が報告されています。 a DNS request hijacking vulnerability. (CVE-2017-0902) an ANSI escape sequence vulnerability. (CVE-2017-0899) a DoS vulnerability in the query command. (CVE-2017-0900) a vulnerability in the gem installer that allowed a malicious gem to overwrite arbitrary files. (CVE-2017-0901

    masudaK
    masudaK 2017/08/30
    めっちゃ報告されてる
  • Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その1 - ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記

    Rubyのリファクタリングでオブジェクト指向設計に沿った美しいコードになるまでの方法を書いた。 元ネタはこちらのBen Orenstein氏のリファクタリングで、そこに私なりの解説とコードを加えた。かなり追加したのでOrenstein氏の原型とはだいぶ違う箇所もあるがオブジェクト指向設計とリファクタリングに対する考え方は同じなはず。 github.com 全3回に渡ってリファクタリングする。 「イケてない」から「マシ」にするためのリファクタリング 「マシ」から「いいね」にするためのリファクタリング 「いいね」から「スゲーいいね」にするためのリファクタリング 今回は1.の「イケてない」から「マシ」にするためのリファクタリング。 イケてないコード 以下にあるのがなんかイケてないコード。一応動くし、テストもパスしている。でもそのコード品質は平均よりちょっと下。 範囲を指定してその間の売上の総合計

    Rubyのリファクタリングでイケてないコードを美しいオブジェクト指向設計のコードへ改良するための方法 - その1 - ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記
  • Java 歴 23 分の Ruby エンジニアが Effective Java を読んで感動した話 - scramble cadenza

    イントロ 例外処理を書くことはよくやっているのだけれど、その時の主軸となる考え方について、今までなんとなくで行っていた部分が多かった。 毎回考えるポイントは例えば以下のような疑問。 どこのレイヤーで、どこまで例外処理を行えばよいのだろうか? どの例外をキャッチし、どの例外を伝搬させればよいだろうか? 前提条件をチェックし、失敗した場合、例外を出したほうがよいか、nil, false を返すほうがよいか? 例外をどういう単位でラップさせるのが良いだろうか? 例外をチェインし過ぎると却って煩雑になる気がする。どうすれば良いのだろうか。 しかし、この辺りの話って、API の設計だったり、仕様の影響もあるので、都度対応が異なってしまうもの。 したがって抽象化して理解することが難しく感じた。 とてもよく使ってるし、とても大事な事なことなのに。 そんな今更な事で悩んでいた時に、Effective Ja

    Java 歴 23 分の Ruby エンジニアが Effective Java を読んで感動した話 - scramble cadenza
  • KPI に寄与できない開発課題を、組織全体で取り組むということ - クラウドワークス エンジニアブログ

    はじめに クラウドワークスエンジニアの八木です。 先般の記事でも触れられていた通り、クラウドワークスではシステムのフレームワークとして採用している Ruby on Rails を 3 系から 4 系に移行しました。 残念ながら、「こことそことあそこを直して、さあリリース!!!」とはいかず、それなりの時間を投入して行いました。 今回は、Rails のバージョンアップをスムーズに行えないという技術的課題は一旦脇に置いておいて、フレームワークのバージョンアップという「事業の KPI に直接寄与できない開発課題」に対して、クラウドワークスの開発チームがどのように取り組んだか、組織体制の話を書いてみたいと思います。 チーム体制の変遷 まず、クラウドワークスで Rails4 対応するために組んだ組織構成について、時系列に沿って簡単にご紹介します。簡単にご紹介と言いつつ先に要約すると、最初は Rails

    KPI に寄与できない開発課題を、組織全体で取り組むということ - クラウドワークス エンジニアブログ
  • 海外転職の面接の時に英語で聞かれるRubyとRailsの基礎質問を徹底マスターしておく方法 - Qiita

    海外転職技術面談の形式に関してはこちらのブログに何度か書いたので、今回はその具体的な対策を書いた。ずばり「RubyRailsに関する英語の基礎質問と解答例」 書類選考をみごとに通過したら次は電話面談かもしくはオフィスでの面談になる。いづれにしても採用側の会社からはエンジニアが2,3人ぐらい出てきて応募者の相手をすることになる。最初は当に基礎的な技術質問から入る。それは誰にでも分かるような質問と答えで応募者に話してもらって緊張をほぐす意味と、あともうひとつは「箸にも棒にもかからない人に早々とご退場」願うためだ。あくまでメインは技術質問ではなくコーディングインタビューの方。 なんにしても技術質問の時点で詰まってはいけない。そんなに難しいことでもないし、技術分野に合わせて聞かれる内容はほぼ同じなので十分に対策が取れる。英語がネイティブじゃない応募者が詰まる原因とその対策は以下の3つの順にな

    海外転職の面接の時に英語で聞かれるRubyとRailsの基礎質問を徹底マスターしておく方法 - Qiita
  • ruby - Rubyのモジュールを名前空間で使っているのかMix-inで使っているのか - スタック・オーバーフロー

    masudaK
    masudaK 2016/02/25
  • Ruby 2.0.0 および Ruby 2.1 の今後について

    Posted by usa on 24 Feb 2016 Ruby 2.0.0 および Ruby 2.1 の今後の公式サポートについてお知らせします。 Ruby 2.0.0 について かねてからの予告通り、日(2016年2月24日)をもって、Ruby 2.0.0 の公式サポートは終了となります。 今後、より新しいバージョンの Ruby で行われたバグ修正やセキュリティ修正は、2.0.0 にはバックポートされず、また、2.0.0 の新しいパッチリリースも行われません。 現在まだ Ruby 2.0.0 を使用しているユーザーは、速やかにより新しいバージョン(2.3 等)に移行するよう強く推奨します。 Ruby インタプリタ開発者、あるいは企業内で Ruby インタプリタの保守を担当されている方で、今後も Ruby 2.0.0 の公式リリースが継続されないと困る、という適切な理由がある方は、r

  • ハッシュは頻繁に参照する値を最後に入れると高速 - まめめも

    明日から RubyKaigi なので、ちょっとした小ネタを一つ。 例えば、0 から 9999 までをハッシュに順に入れます。 h = {} 10000.times do |n| h[n] = true end このとき、h[9998] や h[9999] は、h[0] や h[1] より高速です。 どのくらい高速かというと、 1_000_000_000.times { h } # 40.8 sec (ループ自体の速度) 1_000_000_000.times { h[9999] } # 57.2 sec 1_000_000_000.times { h[0] } # 89.1 sech[0] は 89.1 - 40.8 = 48.3 nsec 、h[9999] は 57.2 - 40.8 = 16.4 nsec ということになります。なんと 3 倍も速い。*1 なぜこんなことが起きるのか ハ

    ハッシュは頻繁に参照する値を最後に入れると高速 - まめめも
    masudaK
    masudaK 2015/12/10
    面白いけど、気にしないのが一番
  • 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
    masudaK
    masudaK 2015/12/08
    Object#tapよい。
  • サンプルコードでわかる!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
    masudaK
    masudaK 2015/11/25
  • requireとincludeとextendとmodule_function(1) : As Sloth As Possible

    Rubyで自作の外部モジュールを読み込む方法 - include と extend と module_function - (゚∀゚)o彡 sasata299's blogを読んでて、もしかしたらちょっと誤解があるのかなと思ったのでrequireとincludeとextendの話を。 requireはKernelモジュールのメソッド Rubyで外部ライブラリを読み込むには、require を利用します。 Rubyで自作の外部モジュールを読み込む方法 - include と extend と module_function - (゚∀゚)o彡 sasata299's blog これはその通り。もっと具体的に言うと、requireは引数のファイル名のRubyファイルを読み込んで実行するメソッドです。引数が絶対パスだったときはそのファイルを、そうでない場合はロードパスを優先順位上位から辿って最初

    requireとincludeとextendとmodule_function(1) : As Sloth As Possible
    masudaK
    masudaK 2015/07/02
  • Rakeの基本的な使い方まとめ - うなの日記

    Rakeの基的な使い方のまとめです。 インストールから、Rakefileの書き方、組み込みライブラリの使い方まで。 忘れたときに見返す用に。 Rakeって何? rubyで処理内容を定義できるビルドツール。「xmlでなくrubybuild.xmlを書くAnt」ですな。 ruby専用とかいうわけではなく、javaのビルドなんかにも(使おうと思えば)使えます。 処理内容をrubyで書けるので、ループとか条件分岐も思いのまま。 ただし、組み込みのタスクはちょい少ないので、ちょっとした作業させるにもコーディングが必要そうかな・・・。便利なライブラリがどっかにあったりするのかもですが・・・。 rakeツールのインストールと使い方 インストール rubyrubygems は事前にインストールされている前提で。 $ gem install rakerakeのgemをインストールするとrakeコマ

    Rakeの基本的な使い方まとめ - うなの日記
  • DocomoruでBOTと雑に会話する - Qiita

    docomoが提供している雑談対話APIを利用し、docomoruというライブラリを使いながらBOTと雑談する方法について説明します。後半では、Rubotyを使ってチャットサービス上でBOTと雑談する方法について説明します。 docomoru docomoruは、docomoのAPIを利用することを目的として作られたRuby製のライブラリです。gem install docomoru でインストールできます。docomoのAPIキーが必要なので、予め https://dev.smt.docomo.ne.jp/ からアプリ登録申請を済ませてAPIキーを発行してもらいましょう。 使い方 docomoruはCLI経由で利用でき、APIキーと文字列を与えると雑談対話APIにリクエストを送り、レスポンスをJSON形式で標準出力します。APIキーは、--api-keyオプションか、環境変数DOCOMO

    DocomoruでBOTと雑に会話する - Qiita
  • Unicornの2倍のパフォーマンスを実現したRackサーバ「Rhebok」をリリースしました - blog.nomadscafe.jp

    “Hello World”なベンチマークでUnicornに比べ2倍高速に動作するRackサーバをリリースしました。 rubygems: http://rubygems.org/gems/rhebok github: https://github.com/kazeburo/rhebok PerlのGazelleをベースに作っています。Rackアプリケーションの運用経験がほぼないので、機能不足があると思います。issue等で教えて頂ければ幸いです。 なぜ高速に動作するアプリケーションサーバが必要なのか Unicornは高速に動作します。多くのアプリケーションにとっては十分でしょう。それでもRhebokでさらに上のパフォーマンスを出そうとしたのは、技術的なチャレンジの他に以下のようなアプリケーションで高速なアプリケーションサーバが必要とされると考えているからです。 ソーシャルゲーム、広告サーバ、

  • Rails開発で有用な便利Gem一覧:2014年版 - Qiita

    Ruby Advent Calendar 11日目 Ruby - Rails開発で有用な便利Gem一覧:2013年版 - Qiita ↑去年のAdventCalendarで書いた上記の記事の2014年版です。 だんだん毎年恒例的になって来ました。 最近はデファクトスタンダードがほぼ固まってきて、かなり毎回使うGemのリストが固定化して来ました。 ※2014/12/11時点 DBアダプタ sqlite3 pg mysql2 この辺りはもう変わらないですね。 RubyRailsのバージョンが上がっても継続的に開発が続けられているのは素晴らしいと思います。 ログイン認証 omniauth omniauth-twitter omniauth-facebook omniauth-github omniauth-identity (omniauth-githubのリポジトリのURLが変わってました。

    Rails開発で有用な便利Gem一覧:2014年版 - Qiita
  • Ruby でラインメモリプロファイラ - Qiita

    プロファイラ好きなモニタの前の皆さんこんにちは。@sonots です。この記事では、Ruby コードのどの行がどのぐらいメモリを消費しているか調べる方法を紹介します。 オブジェクトの数を数える Ruby には ObjectSpace というオブジェクトの情報を集めたり操作したりする module があります。 このモジュールの each_object メソッドを使用すると、RubyVM 上の全てのオブジェクトを取り出すことができます。 このメソッドを使って、以下のようなコードを書くと、実行した地点で、RubyVM 中にどのクラスのオブジェクトが何個存在しているのかカウントできたりするわけです。興味深いですね! ObjectSpace.each_object.inject(Hash.new 0) {|h,o| h[o.class]+=1; h } #=> {Class=>241, Strin

    Ruby でラインメモリプロファイラ - Qiita
  • Heroku+Firebase で無料+簡単ツイート収集 - Qiita

    イイ感じに Tweet を収集したい。 というわけで何も考えずに Tweet を収集出来る Heroku-ready アプリを作りました。 キーワードを指定し、合致する Tweet を収集することが出来ます。 使い方 git clone git@github.com:kaiinui/tweet_collector.git config/keys.yml に Twitter App のキーと Firebase の Base URI を書く(下記参照) config/words.yml にトラッキングしたいワードを書く。("xvideo"とか面白いと思います。) ./push これでたくさんツイート収集してツイートコレクターの称号をゲットしましょう! 注意点 日語ワードを使うと上手く取れません。(TwitterAPIの都合) 1つの Twitter App につき1つのtweet_coll

    Heroku+Firebase で無料+簡単ツイート収集 - Qiita