Ruby

Unsplash API (unsplash_rb) を試した

写真サービスだと Unsplash が大好きで,気分転換に見ることも多いし,発表資料の背景写真はほとんど Unsplash から引っ張ってきている.全ての写真を自由に使えるし,シンプルなサービスながら,非常にクオリティが高い. Unsplash 関連ツール 公式で Chrom…

AWS SDK for Ruby で S3 の暗号化(サーバサイド/クライアントサイド)を試してみた

S3 でオブジェクトの暗号化を検討する場合,大きく2種類ある. サーバサイド暗号化 暗号化/複合を AWS 側に任せる サーバー側の暗号化を使用したデータの保護 - Amazon Simple Storage Service クライアントサイド暗号化 暗号化/複合を自前で行う クライア…

rbenv plugin としてインストールした ruby-build が動かないときは ${RBENV_ROOT} を疑う

とある Ruby 環境(長年稼働している)で以前から rbenv + ruby-build の挙動が微妙で,このまま放置するのはダメだろう!と勝手に奮起して調べてみた. 結論から言うと /etc/profile に RBENV_ROOT の設定がされていて悪さをしていた.RBENV_ROOT の存在に…

Hologram でスタイルガイドを自動生成してみた

ペパボテックカンファレンスで知った Hologram をさっそく試してみた.Hologram を一言で表現すると「CSS のスタイルガイドを自動生成するツール」のこと.Ruby で書かれてるので,困ったら直せそうだし良さそう. Hologram 以外にも 結構イロイロある.最近…

migration_comments + annotate で MySQL のカラムコメントを管理する

今まで MySQL のカラムにコメントを付ける習慣がなかったんだけど,いざ新メンバーとして既存コードを読んで理解する立場になってみると,ちゃんと書かれたコメントのおかげでスキーマを理解しやすかったし,メンバー間の認識相違も生まれないし,重要だなと…

Ruby で Unix Time を扱う

Unix Time を見ても日付わからん! 変換サイトもあるけど pry で確認する方が手軽だし試してみた. ➜ ~ pry [1] pry(main)> Time.now.to_i 1441628493 [2] pry(main)> Time.at(1441628493) 2015-09-07 21:21:33 +0900 [3] pry(main)> Time.parse('2015-09-07…

Marvel Comics API っていう神 API を発見した

Marvel のキャラクター名を指定したらイメージ画像が返ってくるっていう簡単なスクリプトを自分で書いたんだけど(クローリングで),いろいろ調べてたら Marvel Comics API っていう API を発見して,マジで Marvel 神じゃん!ってなってた. Marvel Develo…

Elasticsearch のノード名と Marvel のキャラクター一覧を比較してみた

Elasticsearch のノード名はデフォルトだと "Iron Man" や "X-Man" などアメコミのキャラクター名が自動的に設定されるようになっていて,実際にコードを見たら2825種類の候補の中から選ばれるようになっていた. elasticsearch/names.txt at master · elast…

表参道.rb #3 に参加してベンチマークの重要性を学んだ

昨日は 表参道.rb #3 に参加してきた! 会場を間違えて隣のマンションで迷ってたのは禁句www omotesandorb.connpass.com 表参道.rb と僕 表参道.rb #1 以来の参加で,そのときは LT をしたりした. kakakakakku.hatenablog.com 参加レポート 既に参加レポー…

O'Reilly 本を全冊買うと144万円?

O'Reilly 本を全冊買って動物園にしたら最高だよなー!(夢) Cygames 社に続いて全冊買った記事が昨日バズってたけど総額が書いてなかったので雑に集計してみた. もしかしたら全冊割引的なアレで総額を公表できないのかもしれないけど! O'Reilly Japan - …

Faker のコードを読んだりテストを直したり

Faker::Company.name で企業名を生成する GitHub - stympy/faker: A library for generating fake data such as names, addresses, and phone numbers. FactoryGirl でテストデータを生成するときに Faker を使ってるんだけど,企業名を Faker::Company.name…

auto_strip_attributes を紙でコードリーディングしてみた

Rails でフォームのテキストフィールドを保存するときに 先頭の半角スペース / 全角スペース 末尾の半角スペース / 全角スペース を自動で除去したいという要求があった. 別に Gem を使うまでもなく実現できそうだけど,調べたところ auto_strip_attributes…

Ruby Gold に合格するなら必読本だと思う /「Effective Ruby」を読んだ

Ruby 関連だと最近は Metaprogramming Ruby 2 を読んだり,Ruby Gold に合格したり,表参道.rb で LT したりしてるんだけど,今さらながら Effective Ruby を読んだら最高すぎてビックリした.実は6月末には読み終わってたんだけど,少しバタバタしててまと…

send_data でダウンロードするファイル名をテストする

Rails で send_data を使って CSV ダウンロードを実装してて,ダウンロードする CSV ファイル名を Capybara でテストしたかった. response_headers から取れる こんな感じで書けた. 実際には 'attachment; filename="xxx.csv"' ってなってるから eq ではな…

Rails で簡単に PV を計測できる impressionist を触ってみた

impressionist Rails で簡単に PV を計測できる Gem の impressionist を触ってみた. README にも書いてある通り,Google Analytics などの計測ツールを使わなくても自前で PV を集計できる点がメリット.逆に複雑な分析をしたかったり,高トラフィックなサ…

表参道.rb #1 で Ruby 資格ネタの LT をしてきた

今日は「表参道.rb #1」に参加してきた! LT 大会 + 懇親会って感じで凄く勉強になったー.楽しかったー. 開場提供の Sansan 様ありがとうございました!オシャレな空間でビックリしました! omotesandorb.connpass.com LT した 誰得な気がするけど Ruby Go…

Ruby Association Certified Ruby Programmer Gold version 2.1 に合格した

Ruby Association Certified Ruby Programmer Gold version 2.1 に合格した!5月の目標に掲げてたから達成できて良かった! 対策方法などを簡単にまとめておこうと思う. ちなみに累計で33個目の資格!今年は既に3個目だし結構ペース良い感じ. GitHub - kak…

Module#prepend で継承チェーンを入れ替える

昨日は時間を捻出できなくてブログを書けなかった!継続日数は13日でストップ!まぁ継続日数を目標にしてるわけではないし,引き続き学びがあったら少しでもアウトプットできるように頑張ろうと思う. Module#prepend 引き続き Ruby Gold の対策をしていて,…

Enumerable#lazy で無限大のリストを扱う

今回 Ruby Gold 2.1 を受験するので,Ruby 1.8 から Ruby 2.1 で追加された機能を勉強しておく必要がある. 詳しくは Ruby Association から出てる以下の PDF に書いてあるのでしっかりと理解する. Ruby技術者認定試験改訂のお知らせ Enumerable#lazy PDF …

Capybara で非表示要素を find する

Capybara で style="display: none;" になってる非表示要素を取ろうとしたら Capybara::ElementNotFound になって困った. 結論から言うと,自分の Capybara の環境設定だと非表示要素は無視されるようになってた. visible: false で見れるようになった こ…

.freeze 関連の問題は Object.object_id を意識して解く

Ruby Gold の .freeze に関する問題でよく考えればわかるのに間違えた!早とちり厳禁! array = [1, 2, 3].freeze array += [4, 5] p array # >> [1, 2, 3, 4, 5] object_id で確認する .freeze してるのに操作しようとしてるから「例外発生でしょ!」って思…

Ruby の Array.new を size と val で初期化する

今日も Ruby Gold のサンプル問題を解いてて,Array.new の挙動で知らなかったところがあった! 問題 (2015年4月8日) ITトレメ Ruby技術者認定【Gold】試験 − @IT自分戦略研究所 ary = Array.new(3, "a") ary[0].next! p ary # >> ["b", "b", "b"] Array.…

Ruby の alias は評価時点の定義のまま残る

Ruby Gold のサンプル問題を解いてて alias の挙動に関する問題を間違えたので動作確認をした. ITトレメ Ruby技術者認定【Gold】試験 − @IT自分戦略研究所 class Foo def foo "foo" end end class Bar < Foo def foo super + "bar" end alias bar foo unde…

メタプロは魔術だ /「Metaprogramming Ruby 2 - Part 1. Metaprogramming Ruby」を読んだ

4月から Metaprogramming Ruby 2 を読んでて,やっと Part 1. Metaprogramming Ruby まで読み終えたので簡単にまとめる.引き続き Part 2. Metaprogramming in Rails を読む. ここまで読んで,今まで「何となく Ruby を書いてた」自分に気付くことができた…

Stomp で ActiveMQ から Subscribe する簡易スクリプト

Stomp Stomp を使うと Ruby で ActiveMQ などの Queue でメッセージングを行える. stompgem/stompgithub.com ActiveMQ 管理画面 ActiveMQ をインストールすると管理画面も一緒に入ってて,以下の URL でメッセージングの状態を確認できる. Publish した後…

Rails で全角文字を禁止するカスタムバリデータ

フォームで全角文字の入力を禁止したいなーと考えてて,最初は format: { with: } で正規表現を書いてみたんだけど,記号の部分を網羅するのが面倒で微妙だった. ascii_only? ascii_only? (String) - APIdock 判定できそう! pry(main)> 'abc'.ascii_only? …

Singleton Methods と Class Macros

最近「Metaprogramming Ruby 2: Program Like the Ruby Pros (Facets of Ruby)」を読んでて,Part 1. Metaprogramming Ruby まで読み終えることを4月の目標にしてる.洋書で読んでるってこともあって全然進んでないけど頑張る! P114. Introducing Singleton…

ActiveDecorator で関連先のモデルをデコる

Rails で view のロジックを切り出すために ActiveDecorator を使ってる. The Ruby Toolbox で Rails Presenters のランキング見たら ActiveDecorator は全然人気なくて,Draper 最高!な雰囲気を感じる.うむ. Rails Presenters - The Ruby Toolbox ちな…

pry で !!! ってすると強制終了できる

基本的に RubyMine 使ってるので pry 使ってデバッグするってことは少ないけど,さっきループの中で binding.pry しちゃって ( ゚д゚) って顔してた. 調べたら exit-program の alias に !!! が設定されてて,簡単なコマンドで強制終了できた.めでたしめでた…

Ruby で iTune と Google Play のアプリ情報を取得する

iTune のアプリ情報を取得する "itunes-search-api" Gem を使って簡単に取得できる. 取得できる項目が非常に多いので,いろいろと応用できそうな感じ. rlivsey/itunes-search-api bundle install gem 'itunes-search-api' irb で主要な情報を取得してみる …