タグ

rubyに関するkageroh_のブックマーク (96)

  • Webスクレイピングライブラリ "Yasuri" をリリースしました - Qiita

    はじめに こんにちは.私はWebスクレイピングが大好きなのですが、Rubyでもっと簡単にスクレイピングができればと思い、ライブラリを書いてみました. ようやくREADMEとUSAGEが書けたので公開しようと思います. ソースはGithubで公開しています. 特にドキュメントの英語が大変怪しいので、つっこみいただけると喜びます. tac0x2a/yasuri gemでも公開しているので、以下のコマンドで簡単にお試しできます. 簡単なサンプルと解説を書いてみました. Yasuriでお手軽スクレイピング よろしければ使ってみてください>< Yasuri とは Yasuri (鑢) は簡単にWebスクレイピングを行うための、"Mechanize" をサポートするライブラリです. Yasuriは、スクレイピングにおける、よくある処理を簡単に記述することができます. 例えば、 ページ内の複数のリンクを

    Webスクレイピングライブラリ "Yasuri" をリリースしました - Qiita
  • サクサク引ける Rubyリファレンスマニュアル

    キーボード操作 [↓]次の項目を選択 [↑]前の項目を選択 [Enter]選択された項目を開く Fork me on GitHub ≫ https://github.com/miyamae/rubydoc-ja/tree/master 静的なファイルだけで構成されているので、ダウンロードしてローカルで利用することもできます。 作ってる人=みやまえ@BitArts

    サクサク引ける Rubyリファレンスマニュアル
  • GemのいろいろXML/HTMLparserをまとめたい(Oga特集) - Qiita

    動機 前に徹夜テンションのままとあるgemの紹介を書いたんだけど、いろいろとひどかったのでまじめにまとめたかったし新しいXMLパーサが出てきたので調べるついでにまとめてしまおうと思った。 ぱーさいろいろ 冷静に思い出すと結構ある rexml rubyの標準ライブラリ普通に使う分には申し分ないやつ DOMParserからSAXParser、PullParserと一通りそろっている とりあえずこれでなんとかなるケースは多い Nokogiri HTML/XMLパーサでなんだかんだ一番人気? CSSで要素を取り出せるのでHTMLのパースに使うといい感じ libxml使います HappyMapper XMLをオブジェクトにマッピングできるパーサ クラス作っとけばうまいことマッピングできるのでおすすめ (以前HappyMapperを紹介したけど糞記事すぎて申し訳ないしもはや恥ずかしくて見ることすらでき

    GemのいろいろXML/HTMLparserをまとめたい(Oga特集) - Qiita
  • Ogaってゆー新しいXML/HTMLパーサーについて - Qiita

    OgaというXML/HTMLパーサーがありました。 XML/HTMLパーサーには、標準のREXML以外にもすでにNokogiriやOxがありますが、 Rubiniusでうまく動かなかった(GVLでロックされないから?)ので、極力C拡張を使わずに作ったものだそうです。 MRIでもNokogiriのインストールは時として鬼門になったりするので、ナイスな代替があれば嬉しいかも。 機能とか特徴 XMLとHTML(5)のパース DOMパース ストリーム/プルパース SAXパース 少ないメモリ消費量 高パフォーマンス。パフォーマンスが十分に出てなければそれはバグだ。 XPath 1.0のサポート XML名前空間のサポート らしいです。 インストール いつものように。

    Ogaってゆー新しいXML/HTMLパーサーについて - Qiita
  • Rubyの正規表現で対応する括弧を考慮していい具合にマッチさせる - There's an echo in my head

    1.9以降に搭載された正規表現エンジン(oniguruma, onigumo)では (?<name>式)によってマッチした式部分に名前(ここではname)を付けることができ、 それにマッチした内容を後方参照\k<name>で参照でき、 また\g<name>でその式を再帰的に呼び出すことができる これを使えば、括弧のペアを対応させた上でマッチさせることができる。 たとえば次の例ではLispのシングルクォーテーション記法をquote関数の呼び出しに変換する。 regexp = /'(?<paren>\((?:[^()]|\g<paren>)*\))/ replace = '(quote \k<paren>)' # 1段 "'(+ 1 2)".match(regexp) #=> #<MatchData "'(+ 1 2)" paren:"(+ 1 2)"> "'(+ 1 2)".gsub(reg

    Rubyの正規表現で対応する括弧を考慮していい具合にマッチさせる - There's an echo in my head
  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

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

  • The Ruby Toolbox - Know your options!

    Find actively maintained & popular open source software libraries for the Ruby programming languageThe Ruby Toolbox is a catalog of all Rubygems that keeps track of popularity and health metrics to help you choose a reliable library CategoriesTo give you an overview of what open source libraries are available for a given task we group projects for common problems into categories. The catalog itsel

    The Ruby Toolbox - Know your options!
  • Rubyで使われる記号の意味(正規表現の複雑な記号は除く) (Ruby 2.0.0)

    ! ? # % & | + - * / ^ ' . , < > = ~ $ @ _ {} [] () " : ` \ ; ! !true not 演算子。演算子式/notを参照。 3 != 5 「等しくない」比較演算子。演算子式/notを参照。 def xxx! 「!」はメソッド名の一部です。慣用的に、 同名の(! の無い)メソッドに比べてより破壊的な作用をもつメソッド(例: tr と tr!)で使われます。 /xxx/ !~ yyy 正規表現のメソッド =~ の否定。マッチが失敗したらtrueを返します。 ? ?a リテラル/文字列リテラル。長さ 1 の文字列。 def xx? この場合の「?」はメソッド名の一部分です。 慣用的に、真偽値を返すタイプのメソッドを示すために使われます。 xx ? yy : zz 演算子式/条件演算子。三項演算子とも呼ばれます。if xx then yy e

  • Ruboto: jruby on android をつかってみる - Qiita

    まあだいたい Rubotoを使ってRubyAndroidアプリをかく を追体験しただけなんですが。 まず動機ですが、別にRubyAndroid appを書きたいわけではないです。やりたいのことは以下のふたつ。 Ruby REPLからAndroid appを操作することと Android appのテストをRubyで書くこと 特にテスト。文字列操作とかリスト操作はRubyのほうが得意なので、得意なことを得意な言語でやれば効率いいんじゃないかと思うわけです。 ruboto setupがコケる homebrewでandorid sdkをインストールしている場合、ruboto setupがコケます。 $ ruboto setup --target android-19 Java runtime : Found Java Compiler : Found Apache ANT : Found An

    Ruboto: jruby on android をつかってみる - Qiita
  • Rubotoを使ってRubyでAndroidアプリをかく

    最近iOSアプリ界隈ではRubyMotionやMobiRubyが盛り上がってきてますが、AndroidでもRubotoをつかえば簡単にrubyで開発することができるようになります。 そもそもjavaで実装された処理系であれば大抵javaクラスの呼びだしは簡単にできるようになっているので、jrubyやjythonでandroidアプリを開発することは以前から可能でした。 しかし、以下のような問題があって実際にやるとなるとそれなりに面倒なものでした。 jrubyやjythonをdalvikvm用バイナリ(dex)にコンパイルするのに時間がかかる1 androidjavaでは使えない機能を使って処理系を実装してある場合があるので、何らかの方法で回避する必要がある スクリプトのソースファイルの配置やパスの設定を自分でやる必要があり、パッケージングが面倒 アプリのフットプリントが大きくなる2 Ru

  • APICacheで頻度を抑えながらキャッシュを効かせてWeb APIを叩く - Qiita

    公開Web APIをプログラムから叩きたい。 けどうっかり「連打」してしまって(要するにsleep入れずにループまわしてリクエスト連投)… サービス提供者に迷惑をかけたらどうしよう… この種のプログラムのテストは少しだけ不安があります。 同じリクエストを繰り返し送ることもあり得るので、結果のキャッシュもしたい。 こういった理由で、リクエスト頻度を抑え、結果をKVSなどでキャッシュしつつAPIを叩くプログラムを自作しようとしたらすでに同様なことを実現するRuby Gemがありました。 APICache(api_cache)です。 READMEを読んでこれは使えそうだと思い、簡単なプログラムを書いてみました。動作はしましたが、実はかなり使いにくいものであることもわかりました。 APICacheサンプルプログラム localhost:9292というダミーのWebサービスAPICacheでアクセ

    APICacheで頻度を抑えながらキャッシュを効かせてWeb APIを叩く - Qiita
  • MechanizeでChromeのCookieを扱って面倒なログインを飛ばす - それマグで!

    ログイン処理を書くのが趣味だけど、どうしてもログインを自動化しにくいサイトが有る。 たとえばYahooやニコニコ動画。ニコニコ動画はブラウザログインすると別ログインがキックアウトされる多重ログイン禁止。Yahoo JapanはログインフォームにJS検知が埋まっていて画像認証になる。回避策考えるのが面倒。msn(live.com)はすげー面倒だし。 ログインフォーム処理を高速回避 ログインフォームの作成処理を高速回避して、とりあえず目的だけ達したいことは多い。 そういう時は、ブラウザのCookieを取り出せば楽ちん。 ChromeCookieを使うMechanizeパッチ #coding: utf-8 require 'mechanize' class Mechanize def load_chrome_cookie(cookie_domain, cookie_path="/") case

    MechanizeでChromeのCookieを扱って面倒なログインを飛ばす - それマグで!
  • vim使っているrubyistで、これ入れていないのはヤバいプラグインまとめ 9個 (2013-10-04更新) - Qiita

    vim使っているrubyistで、これ入れていないのはヤバいプラグインまとめ 9個 (2013-10-04更新)RubyVimctags Rubyの開発効率を高めたい! vimRubyRails開発するときに、デフォルトの状態では非力ですよね。 開発効率を高める9つのプラグインを紹介します。 alpaca_tags   ctagsの非同期生成 neosnippet   Rails/sinatra/rspec等の補完 swtich.vim    .present?:.brank?など対応するキーワードを切り替える rubocop    文法エラー、スタイルチェック vim-rails    Railsプロジェクト用プラグイン unite-rails    Railsプロジェクト用Unite-source vim-endwise   if...endなど対応するキーワードの自動補完 rub

    vim使っているrubyistで、これ入れていないのはヤバいプラグインまとめ 9個 (2013-10-04更新) - Qiita
  • Rubyを用いたログインのセキュリティについて - Qiita

    ログイン分野において最も重要なのは、 全てのパスワードに常にソルトとハッシュをかける ことである。 ソルトとは、ユーザごとに設定したパスワードが同じものであっても、ハッシュによって得られる値がユーザによって違うものになるようにするプロセスである。 ソルト化しなかったパスワードはレインボー攻撃に弱くなる。 (ここではレインボー攻撃については割愛する) 次は、ソルトを適用したログイン名とパスワードの例である。 # -*- coding: utf-8 -*- require 'digest/sha1' $hashes = { } $salts = { } def hash(password, salt) # hash化の際にsaltを含む Digest::SHA1.hexdigest("#{salt}#{password}") end def generate_salt(login) Diges

    Rubyを用いたログインのセキュリティについて - Qiita
  • seleniumでスクレイピング [Ruby] - 酒と泪とRubyとRailsと

    RubyからChrome/Safari/IE/Firefoxを操作してスクレイピングする方法として、『Selenium』を使う方法があったので、ちょっと試してみました。今回はその時のメモです。 Rubyからブラウザを操作する方法としては、他にGem『Watir』を使う方法もあるので、よかったらこちらもご検討下さい!

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

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

  • 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

  • リテラル (Ruby 1.9.3)

    数値リテラル 文字列リテラル バックスラッシュ記法 式展開 コマンド出力 ヒアドキュメント (行指向文字列リテラル) 正規表現リテラル 配列式 ハッシュ式 範囲オブジェクト シンボル %記法 数字の1や文字列"hello world"のようにRubyのプログラムの中に直接 記述できる値の事をリテラルといいます。 数値リテラル 123 0d123 整数 -123 符号つき整数 [[trap:Numeric]] 123.45 浮動小数点数 .1 など "." で始まる浮動小数点数は許されなくなりました。0.1 と書く必 要があります。 1.2e-3 浮動小数点数 0xffff 16進整数 0b1011 2進整数 0377 0o377 8進整数 ? 表現では全てのバックスラッシュ記法が有効です。 文字コード以外の数値リテラルには、`_' を含めることができます。 ruby インタプリタは `_'

  • るびすたんす 文字列の一部を置換する

    正規表現にマッチした文字列を置換するにはString#subかString#gsubを使います。 subメソッドは最初にマッチした文字列のみを置換します。 gsubメソッドはマッチした文字列すべてを置換します。 それぞれ第1引数に正規表現、第2引数に置換後の文字列を指定します。 p "あいあいあい".sub(/あい/, "愛")     #=> "愛あいあい" p "あいあいあい".gsub(/あい/, "愛")   #=> "愛愛愛" subメソッドとgsubメソッドはブロックを取ることもできます。 マッチした部分がブロックに渡され、ブロック内で処理された後、マッチした部分と置換されます。 p "abracatabra".sub(/.a/){|matched| '<' + matched.upcase + '>' }                                    

  • ruby-jquery: jQuery Expression Generator - Kentaro Kuribayashi's blog

    String-jQuery written by id:motemen intrigued me. I tried to port it to Ruby: https://github.com/kentaro/ruby-jquery It's almost the same as the original one except one big difference. require 'jquery' jQuery() #=> jQuery() jQuery('a') #=> jQuery("a") jQuery(:document) #=> jQuery(document) jQuery('a').text() #=> jQuery("a").text() jQuery('a').text('aaa') #=> jQuery("a").text("aaa") jQuery('a').foo

    ruby-jquery: jQuery Expression Generator - Kentaro Kuribayashi's blog