ruby
ri かわいいよ ri ri 便利だよ。gem のインストールが遅いからと ri doc を消すことを推奨するエントリ多いけど ri 便利だよ? ri があるものを全部インストール ri の documentation があるものを全部インストール gem rdoc --all --ri ri のrdoc を全部消…
rbenv でruby 2.3.3 を入れようとしたらエラーになった。 takuya@Desktop$ CC=/usr/bin/gcc CONFIGURE_OPTS="--with-readline-dir=/usr/local/opt/readline --with-openssl-dir=/usr/local/opt/openssl" rbenv install 2.3.3 Downloading ruby-2.3.3.tar.bz2…
zip ruby には buffer モードが有る。 zipruby をそのまま使うと、一時ファイルを作って出力先にzip を用意しなくちゃいけないので、tmpfile などと組み合わせる必要がるけど、変数だけでメモリ内部でぱぱっと作れないのか調べた。 ruby-zip-in-memory-sampl…
日本語URIを扱うという戦い ruby のURIで日本語を含む文字列が扱えなくなったので、何とかしないといけないとアレコレ模索した。 >> URI.parse 'http://example.com/あああ' URI::InvalidURIError: URI must be ascii only "http://example.com/\u{3042}\u{3…
JavaScript の String#replace はコールバックが使えて便利。 置換でコールバックの関数使えると便利なんですよね。 > a.replace(/a/, function(e){ console.log(e); return ''}) a 'bc' > js のこの仕様が結構過ぎで多用しまくっててクセになってた ruby で…
対応しなくなったんですよ。マジで。 日本語を含むとエラー >> URI.parse 'http://example.com/あああ' URI::InvalidURIError: URI must be ascii only "http://example.com/\u{3042}\u{3042}\u{3042}" from /Users/takuya/.rbenv/versions/2.2.3/lib/ruby/2…
ruby って to_s が自動的に呼ばれない。 たとえば、Hashと文字列を結合しようとした時 h = { name:'takuya' } str = 'this obj is ' + h puts str Hash を String にする方法がないからエラー takuya@~/Desktop$ ruby test.rb test.rb:5:in `+': no implicit…
binding.pry 便利すぎて書きまくったら地獄だった。 pry で binding.pry を使いまくるのですが、binding.pryをループ中で使うと大変なことになる。 loop { binding.pry } 抜けられない・・・ each/mapなどの loop 中でpry すると抜けらないのですが、これを…
PDF 読み込み遅んだよ! PDFってなんでこんなに無駄にページ数多いの。ってなりなす。PDFをMagickで読み込んだら遅いのなんのって。 require 'Rmagick' name = 'out.pdf' im = Magick::Image.read(name) # めっちゃ遅い im.esize #=> 300 PDFが枚数多いとも…
以前作ったSlideShareの保存スクリプトを改良した Prawn使ってたので、どうしてもA4サイズになっちゃって困ってたので、JPEGをそのままPDFにすることにした #!/usr/bin/env ruby # require 'rmagick' require 'mechanize' require 'open-uri' require 'pry' …
rmagick で PDFを作るのがちょっと手間だったのでメモ ruby の imagemagick 実装である rmagick が有ります。 RMagick を使えば、magick 関連が使えるbindings で重宝する。 無論、Rubyからmagickを使うには、convert/mogrifyのシェル呼び出しで済むのだ。 …
知らなかった。%s は%s しか使えないんだと思ってました。 縦幅が綺麗に揃った文字列を出力するにはどうすればいいか、ずっと気になっててruby はruby で各種関数、php はphp で各種関数を使ってたけど、良く考えたら printf で出来ることに気付いた Dir.glo…
GET引数をハッシュに変えたい 実は、頻繁にやるんだけど、毎回適当に行っていて、これといった方法を決めてなかったので、ちゃんと方法を決めることにする。 require 'uri' module URI class << self alias :_parse :parse def parse a, original=false retu…
File.rename はデバイスを超えてrename 出来ない。 File.rename を何気なく使っていました。 require 'fileutils' するのが面倒くさいという、それだけの理由で。 そして今日は見事にドハマリした。cron でエラーが出ているので追いかけてみたら。なんとrena…
Mac OSXの濁点・半濁点問題。 濁点をどう扱うか問題。Mac OSXの HFS がUTF-8で保存するんだけど、濁点と文字を別に保存する。 ぜっけい→ せ゛っけい とくべつれっしゃ→とくへ゛つれっしゃ のように保存する。正しいとか悪いとか別にどうでもいいんだ。コレは…
ruby から外部コマンドを起動する spawn ruby で外部コマンドを呼び出すときに spawn を使って管理してみた。 spawn の特徴とか。 だいぶ昔に導入されたこの機能については、次のスライドが良いみたい。https://staff.aist.go.jp/tanaka-akira/pub/spawn-200…
exec の引数について 1つだけなら、問題ない。 Kernel.exec("ls") 2つになると・・・ Kernel.exec("ls -lt ") ただし、これはシェル経由の呼び出し。 3つになると・・・ Kernel.exec("ls -lt /") これもシェル経由の呼び出し シェル経由ってのは、sh に引…
できればMechanizeで動かしたいけど、Watirでブラウザのオートパイロットが楽だしねぇ。 なんでWatirなの? Q:Watir骨董品じゃん?Capybara-webkitで良いんじゃない? A1: Capybara 機能多すぎてスクレーピングには初期学習コストが高そう。 A2: Capybara は…
ruby からSelenium をぱぱっと使う つかいかたは、とっても簡単。 require 'selenium-webdriver' driver = Selenium::WebDriver.for :chrome driver.close() 要素辿る系はちょっとコマンドタイプ量がおおくなり手順が多いので、Rubyなら watir を使うほうが…
bundle 最初に知ること bundler で出来ることを最初に知ることが必要 bunder はプロジェクトで使ってるgem を一覧するためのもの。 bundler は 必要なgem をインストールしてくれる bundler は、自作ライブラリのgem化が出来る bundler は、プロジェクトに必…
面倒くさいんですよ。 ファイル名に [] ブラケットが混ざるととても扱いが面倒くさい。 以下の様なファイル構造があるとする。 takuya@~/Desktop$ tree '[資料]授業資料' [資料]授業資料 └── a └── b たとえば、globする場合 >> Dir.glob '[資料]授業資料/*'…
active record めんどくさいし めんどうだし、遅いんですよ。SQLわかってれば、ActiveRecordってメッド生やすの面倒だし、オブジェクト作ったり手続きが面倒だったんで。 ruby で mysql2 を使ったアクセス BestGem でダウンロード数を比較したらhttp://bestg…
openssl で暗号化すると便利なんだけど 暗号化をおこなったデータをそのままプログラムを経由して読みたいよね。やっぱり。 openssl で暗号化 → ruby で復号化 openssl enc -e -aes-256-cbc -salt -in test.json -out enc.json -pass password:my_pass これ…
openssl コマンドでファイルを暗号化します。 ファイルを暗号化してパスワードをつけたい場合、一番お手軽なのはWindowsのExcelのパスワードですが、 一般のファイルで、ファイルにパスワードをつけたい場合は、opensslをコマンドから使うのが手軽です。 ope…
文字列を指定数で分割するには? 文字列を配列と考える。 文字列を正規表現でマッチする。 の2パターンがアプローチできる。 文字列を配列と考える場合 "914119904bf39f27a487d9240d3aab9b68732fc7".chars.each_slice(2).map(&:join).join(":") #=>"91:41:19…
はじめに。 xpath 便利です。 Xpathの書式を学ぶにはトライ・アンド・エラーが1番です。Xpathをもっと使うのためには、手軽なツールが必要です。 libxml のxpathコマンド 手軽なツールはlibxmlについてくるxmlintです。xmllint についてはココに書きました→…
ruby の Time.now や Date.tody をフォーマットして整形するのもよく使うものってショートカットが用意されてるんじゃないのと思ってたら、date -I のようなショートカットが使えることがわかったのでメモ よく使うショートカット Time.now.strftime("%F %T"…
TABを置換してCSVを作りたいとしよう。TAB置換には何を使いますか? sed/awk/tr/perl/ruby 色々と考えられる。 一番楽なのは tr tr '\t' ',' tr コマンドで文字を置換するのが多分楽 takuya@atom:~$ sudo atq | tr '\t' ',' 806,Wed Aug 6 19:47:00 2014 a w…
require した時のパッケージが実体どこにあるか知りたい時があります。 たとえば、ライブラリの本体パスを知ることでmanual やサンプルにアクセすることが可能だからです。 Gemのファイルの場所を調べよう。 取得方法 Gem::Specification.find_by_path( "gem…
Pitというキーバリューストアがあります。プログラムから使う。 保存先は ~/.pit ~/.pit にYMLファイルを保存してプロファイルを作ることが出来る 保存方法 保存は irb からパパっと。 require 'pit' Pit.set("http://www.yahoo.co.jp", { "username"=> "tak…