タグ

rubyに関するhrfmsdのブックマーク (41)

  • 開発用プロキシ、「CocProxy」が便利 - プログラマでありたい

    CocProxyというツールがあります。名前の通りプロキシサーバーなのですが、用途が開発用です。置換プロキシと言うらしいですが、これがとっても便利です。例えば、クローラーの開発や、HTML,CSS,JavaScriptの修正をする際に、このCocProxyを利用するとダウンロード待ちのイライラが解消され、効率アップ間違いなしです。ローカルのみで完結するのと、Webへのアクセスが必要とするのでは、スピードが数十〜数百倍違います。一回だけでみたら、数百ミリSecの差ですが累積で考えると大きいですよ。 CocProxyとは? Ruby製のProxyServerです。かつ標準ライブラリで動くことを目標としているので、Rubyの環境があれば、ダウンロードして直ぐに使えます。また基的には1ファイルで完結するので、導入も簡単です。Ruby1.9をベースにしていますが、Ruby 2.0でも特に問題なく動

    開発用プロキシ、「CocProxy」が便利 - プログラマでありたい
  • 最強の情報収集術!初心者向けRuby+NokogiriでWebスクレイピング徹底解説 - サラリーマン休日副業で月10万円以上目指すページ

    はじめに 情報氾濫の時代、インターネット上には数えきれないほどの情報で溢れています。効率よく情報収集を行うことができたら・・・そんなあなたにオススメしたいのはWebスクレイピング。 プログラミングを使って自動でWeb情報をクローリングし、加工した上で必要な情報を効率よく収集します。 プログラミングと聞いて顔が曇った方も多いかも知れませんが、現在はプログラミングの敷居もかなり下がっています。 Rubyは日語製のスクリプト言語。和製ゆえにドキュメントも豊富です。今回はWindowsな方向けにRubyの導入から実際にサンプルプログラムを動かしてみる所まで詳説したいと思います。 Rubyのインストール Ruby InstallerのHPから「Ruby 2.0.0-p***」をダウンロードします。 RubyInstaller - Homepage インストーラーを実行してください。 日語を選択。

    最強の情報収集術!初心者向けRuby+NokogiriでWebスクレイピング徹底解説 - サラリーマン休日副業で月10万円以上目指すページ
  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

    正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/

  • Ruby概論のスライドがすばらしかったのでまとめてみた(第一部)

    Spice Lifeの五十嵐邦明さんの一橋大学のRuby概論スライドがかなりすばらしかったのでまとめてみました。こんなキャッチーな資料がネットで手に入るというのは当にありがたい限りです! (05-02 07:45) MATSUOKA Koheiさんの2014年度の講義資料を追加 ちなみに、スライドがたくさんあるので3部作ですw (1)『Ruby概論のスライドがすばらしかったのでまとめてみた(第一部)』<= 今ここ< strong> (2)『Ruby 概論のスライドが素晴らしかったのでまとめてみた(第2部)』 (3)『Ruby 概論のスライドが素晴らしかったのでまとめてみた(第3部)』 🗻 2014年ブログ一橋大学でRubyの非常勤講師をはじめました MATSUOKA Koheiさんが講師をされている2014年に現在開催中のRuby講義の資料です。勉強になります! Ruby講義第1回:

    Ruby概論のスライドがすばらしかったのでまとめてみた(第一部)
  • あらためてRuby製のクローラー、"anemone"を調べてみた - プログラマでありたい

    3年ほど前に、Ruby製のクローラー"anemone"を紹介しました。その当時から完成度が高く、Rubyでクローラーを使う場合はanemoneを利用してきました。最近、他に新しくて良いのがないか調べましたが、機能面の網羅性という意味でanemoneを超えるものは見つけられませんでした。そこで改めてanemoneのソースを読んでみたところ、クローラーが必要とする機能を必要最小限で実装され、やはり中々良い出来です。冬休みの宿題ではないですが、勉強の意味を兼ねてソースを追っていくことにします。 Anemoneが利用しているライブラリ一覧 anemoneが利用しているライブラリは、4種類に分類できます。 Ruby標準or一般的なライブラリ データ取得で利用しているライブラリ データ解析で利用しているライブラリ データ保存で利用しているライブラリ この分類別に構造をみるとわかりやすいので、順番に追っ

    あらためてRuby製のクローラー、"anemone"を調べてみた - プログラマでありたい
  • Rubyでの内部DSLは意外と簡単に作れる | Has-key Engineer Blog

    こんにちは、株式会社Has-keyでプログラマをしています@yuutetuです。 ブログでは初めての投稿になります。よろしくお願いします。 今では、ビルド作業を自動化するMakefile・構文解析器の作成を支援するyacc等の様々なDSLが広く使われています。今回は、内部DSLに向いていると言われるRubyを用いて、簡単な内部DSLの実装方法を紹介したいと思います。 DSLとは DSL(Domain Specific Language)は、特定の処理を行うことに特化したプログラム言語です。C言語やJava言語、Ruby言語といった汎用プログラム言語はPCで処理できる幅広い領域の処理を行うことが出来るのに対し、DSLでは特定の処理のみに限定することにより簡潔で直感的にプログラムを書くことができます。 DSLには以下の様なものがあります。 Makefile(ビルド作業の自動化) yacc(

  • CI で稀に失敗してしまうテストへの対処方法 - クックパッド開発者ブログ

    技術部の福森です。 クックパッドでは RSpec と Jenkins を利用して CI による自動テストを行なっています。 テストの数は 12000 examples を越えていて、テストによっては稀に失敗する物が出てきています: 時間帯依存で失敗してしまうもの 他に同時に実行されるテストに依存しているもの (並列実行で組合せが変わり再現する) インテグレーションテストでの ajax リクエストの微妙なタイムアウト etc また、番環境を壊さないよう、 CI で成功したリビジョンのみデプロイ可能となっており、開発者が push しデプロイしたいと思っている時に無関係な原因で失敗する事を避けたいという欲求があります。 なぜなら、再度ビルドを実行する時間 (およそ 10 分) の間待たされる事になるからです。 そこで、そのようなテスト起因での失敗を減らし、かつ開発者にそれらを修正してもらうた

  • るりまにpullreqを送る方法、1から10のはなし - たごもりすメモ

    Rubyを書いている人ならきっと一度以上はお世話になっているRubyリファレンスマニュアル、通称「るりま」。 これが前まではsvnでリポジトリ管理+修正はredmineでチケットを切って依頼、みたいなすげーダルいフローでなんか見付けても依頼が面倒で面倒で面倒で諦めていたんだが、これがなんとgithubに! やった!!!!!! https://github.com/rurema https://github.com/rurema/doctree https://github.com/rurema/bitclust ということで一度pullreqを送ったんだけど、すこし注意が必要だったのでここにメモる。みんな真似してどんどんpullreq送ろう! 手順 以下の通り。 doctree リポジトリをforkしてclone pullreq送るために自分のアカウントでforkして、それをcloneして

    るりまにpullreqを送る方法、1から10のはなし - たごもりすメモ
  • 綺麗な設計を身に付けるためのSandi Metzルール

    Webアプリやモバイルアプリの受託開発やコンサルティングを行うthoughtbot社のブログにて、Sandi MetzルールというRubyプログラマ向けのルールが紹介されていました。 Sandi Metz’ rules for developers このルールは、プログラマーでありPractical Object-Oriented Design in Rubyという書籍も執筆しているSandi MetzさんがRuby Roguesポッドキャストに出演した際に紹介していたものです。 そのルールは以下の通りです。 クラス内のコードが100行を超えてはならない メソッド内のコードが5行を超えてはならない 4つより多い引数をメソッドに渡すようにしてはならない(ハッシュによるオプションもパラメーターとみなす) コントローラーではただ1つのオブジェクトだけをインスタンス変数化できる ビューは1つのイン

    綺麗な設計を身に付けるためのSandi Metzルール
  • SinatraとCoffeeScriptでわかる、Sprocketsの使い方 « blog.udzura.jp

    アセットパイプラインなどで使えるとして話題の Sprockets gem 、自分向けまとめ。確認しないで書いているところもあります。 アセットパイプラインを支える技術 – sprockets Sprockets: Rack-based asset packaging Web assets 、具体的には主に CSSJavaScript の圧縮/依存性の解決/各種ソースからの変換をサポートするための Rubygem 。 asset とは資産、財産の意。 執筆時点現在のバージョンは 2.0.3 。なお、 rack-sprockets gem は、 sprockets( 具体的には、 require 'sprockets' map '/assets' do environment = Sprockets::Environment.new environment.append_path 'ap

  • 知って得する!55のRubyのトリビアな記法

    Rubyはたのしい言語です。Rubyを触っているとマニュアルにも書いていない「小さな発見」に遭遇することがよくあります。このような「発見」は、プログラムの質や効率の改善には直結しないかもしれません。いや、むしろチームプログラミングでは妨げになる可能性すらあります。しかしその一方で、言語自体が自分の知らない領域を持ち続けていることが、その対象に対する興味を失わせないための大きな要因である、というのもまた疑いのない事実なのです。つまり「発見」はたのしさに直結しているのです。 このブログにおいて「知って得するRubyのトリビアな記法」というタイトルで、今まで3回記事を書きました。 “知って得する21のRubyのトリビアな記法” “第2弾!知って得する12のRubyのトリビアな記法” “第3弾!知って得する12のRubyのトリビアな記法” これらのトリビアには、ネット検索で見つけたもの、Twitt

  • What is chef

    OpscodeのChefとは何なのかを中級者以上向けに説明します。 普通のHow to とは方向性が違うので注意。Read less

    What is chef
  • Rubyのcaseを〇〇(言語名)のswitch文だと思っている人たちにぼくから一言ガツンと申し上げたい

    Rubyのcase」を一瞥し「あー要は〇〇(言語名)のswitchね」などと早合点し、その後もその真の価値を知ることなく一生を終えるプログラマが近年跡を絶たない。加えて、「今更条件分岐?RubyはOOPなんだからポリモフィズムじゃね?」とか「HashにProc突っ込んでcallするのがオレ流。」とかうそぶく人たちもまた増加の一途を辿っている。 そんな世の中にあって、ぼくは一言、できればガツンと一言申し上げたい。生まれも育ちもRubyなぼくから、是非ともそんな人たちに「Rubyのcase」について一言申し上げておきたい。 ─ 問題1 ─ 名前name、レベルlevel、ポイントpointの各属性を持った複数のCharacterオブジェクトcharlie, liz, benがある。 class Character < Struct.new(:name, :level, :point) def

  • PHPを愛する試み - maeharinの日記

    僕はRubyが好きだ。プライベートではRubyばっかり使っている。でも、仕事ではPHPを使わなければならない。これまでPHPは書きにくいーと思い込んでいてあまり好きではなかったのだけど、仕事で使う以上PHPを好きになった方がきっと幸せになれる。何かを好きになるにはどうすればよいか。そう、相手のことを知る努力をすればいいんだ!ということで、PHPについて知る努力をしてみた。 PHP The Right Wayを読む http://ja.phptherightway.com/ ☆PHPへの愛が100上がった☆ これは... PHP好きになれるかも! 普段Rubyで書いてるコードをPHPで書いてみる 折角なので自分が普段Rubyを使っていて便利だなーと感じていることをPHPではどう書くのか(厳密では無いにしても大体同じ内容はどう書くか)試してみた。Rubyは1.9.2、PHPは5.3.10。 多

    PHPを愛する試み - maeharinの日記
  • Ruby 2.0.0で学ぶ、14個のデザインパターンを作りました[GoF][Design Pattern] - 酒と泪とRubyとRailsと

    GoFのデザインパターンとは、「プログラミングのベストプラクティスを体系化したもの」です。このベスト・プラクティスをしっかりと理解して設計すれば、ソフトウェア設計の効率を高めることができます。またデザインパターンが「プログラミングの思想」の共有をよりスムーズにしてくれます。先人たちの試行錯誤の結果を効果的に利用して、プログラミングをもっと楽しんでしまいましょう! 🗻 デザインパターンのポイントGoFのデザインパターンには下のプリンシパルがあります。 変わるものを変わらないものから分離する インタフェースに対してプログラミングし、実装に対して行わない 継承より集約 委譲、委譲、委譲 必要になるまで作るな(You Ain’t Gonna Need It./YAGNI) 🤔 デザインパターン一覧 アブストラクトファクトリ ビルダ ファクトリメソッド シングルトンパターン アダプタ コンポジッ

    Ruby 2.0.0で学ぶ、14個のデザインパターンを作りました[GoF][Design Pattern] - 酒と泪とRubyとRailsと
  • Rubyのカレンダー | Advent Calendar 2012 - Qiita

    About reserved postingIf you register a secret article by the day before the same day, it will be automatically published around 7:00 on the same day. About posting periodOnly articles submitted after November 1 of the year can be registered. (Secret articles can be registered anytime articles are posted.)

    Rubyのカレンダー | Advent Calendar 2012 - Qiita
  • 「非Rubyな会社でRubyで仕事にRubyを持ち込むための5つの方法」

    札幌Ruby会議2012参加のため、9/13から札幌にいます。大規模なRubyのイベントに参加するのは初めてなのですが、せっかくなのでなにかおしゃべりしようと思ってトークに応募したらLTは通ったので、「非Rubyな会社でRuby仕事Rubyを持ち込むための5つの方法」ちょっと話してきました。 スライドをちょっと補足すると、僕(や、隣席のるびりすと氏)は、特定のサービスにアサインされているということはなくて、広く全社のサービスを見るという仕事をしているので、まあいろいろやっているわけです。そのため、ある種自由にあれこれできる立場であるということもあります。だからといって、では非Rubyな言語のサービスをがっつりやってるひとにはこのトークは響かないかというとまったくそんなことはないと思っています。 スライドにある通り、現状、ベストプラクティスとされる開発プロセスは、Ruby発のものであった

    「非Rubyな会社でRubyで仕事にRubyを持ち込むための5つの方法」
  • Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)

    第 379 回 PTT の発表で使った資料です。 http://www.ci.i.u-tokyo.ac.jp/~sasada/ptt/arc/379/

    Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
  • Rubyistなら知っておくべき地味だけど便利なメソッド - joker1007’s diary

    備忘録兼、初心者向けのメソッド一覧。 余裕があればRails編とかも書こうかな。 これ忘れてるとか何事?とかいう突っ込みがあれば是非お願いします。 もうちょっとコードの具体例書きたかったけど、めんどくさくなってきたw Array Array#combination(n), Array#permutation(n) 配列のデータを元に組み合わせ(順列)を作ってくれます。 ブロックを渡さない場合はEnumeratorで組み合わせの各要素を列挙します。 Enumerator Enumerator#with_index(offset = 0) Enumeratorの各要素に合わせてindexを列挙してくれるEnumeratorを返す。 each_sliceやcombination等にメソッドチェインで繋げて使う。 Enumerator#with_object(obj) with_indexと同様で

    Rubyistなら知っておくべき地味だけど便利なメソッド - joker1007’s diary
  • Rubyで開発するときに入れておきたい三種のRubyGems - KAYAC engineers' blog

    「つくるための三種の神器」というテーマで続けている「777ブログウェイ」! 9日目となる日は「Rubyで開発するときに入れておきたい三種のRubyGems」と題して、定番の RubyGems を3つご紹介します。 1. bundler「bundler」は、アプリケーションが依存するgemを管理するツールです。今やgem管理のデファクトスタンダードです。 「gem install hoge」のようにコマンドで gem をインストールしていくと、あれよあれよとグローバルな領域にどんどん色んなgemが…それも複数バージョン混在していきます。そして、いずれは、このアプリケーションで必要なgemはどれだっけ…バージョンはいくつだっけ…といった具合に、どんどん依存関係が分からなくなってきます。ここで活躍するのが「bundler」です。 使い方はいたって簡単。1) bundler のインストールgem

    Rubyで開発するときに入れておきたい三種のRubyGems - KAYAC engineers' blog