kitak blog

Kみたいなエンジニアになりたいブログ

Ruby

ActionController::APIを継承したコントローラで暗黙的にテンプレートの描画をおこなう術

こんにちは。バジルと海鮮の和物をたべました、きたけーです。 ActionController::APIを継承したコントローラで暗黙的にテンプレートの描画をおこなう方法を知ったのでメモ(具体的にどこで必要になったかというとJSONを生成する手段をActiveModelSerializers…

Rails template つかってみた

こんにちは。朝型です、きたけーです。 Railsで新しくプロジェクトつくるときに「あのgemいれて」「この設定書いて」みたいなのを結構やると思うんですけど、そういうあるあるな作業をまとめて、ひな形にできる仕組みがあるので使ってみました。以下のような…

Rails寺子屋#5で師範業とライブコーディングをやりました

こんにちは。気がついたら財布が。きたけーです。 今日は Rails寺子屋第5回( Rails寺子屋 第5回 - Rails寺子屋x高専カンファレンス | Doorkeeper , Rails寺子屋 )ということでチームラボさんで、師範業とライブコーディングをやらせていただきました。 師範…

MeCab を Ruby から使うための natto gem

こんにちは。エスプレッソマキアートダブル、きたけーです。 形態素解析エンジンのMeCab を Ruby から使いたくて色々調べてみたんですが、nattoというgemをみつけました。メカブナットウ mecab gemっていうのもあるのですが、「ビルドでインストールに時間が…

doorkeeper で Resource Owner Password Credentials flow を試してみた

こんにちは。ガイヤーンをたべました、きたけーです。 doorkeeper gem で、OAuth2 で定義されているアクセス権委譲のフローの中から「Resource Owner Password Credentials グラント種別」を試してみました(フローの種類のことを「グラント種別」というらし…

active_model_serializers から jbuilder に乗り換えるためにスクリプトを書いた

こんにちは。焼き鳥は、ぼんじりとじゅんけいが好きです、きたけーです。 最近、プロジェクトでJSONを生成するときに rails-api/active_model_serializers · GitHub を使っていたのを、rails/jbuilder · GitHub に乗り換えることになったので、ぽちぽちコー…

rack-attack の throttle の実装がどうなっているかコード読んでみた

こんにちは。中華スープに入っている揚げ卵が好きです、きたけーです。 先日、ブログで紹介したrack-attack ( rack-attack middleware を使って IPアドレスでアクセスを制限したり、同一IPアドレスからの大量のリクエストを防ぐ術 - きたけーTechブログ) で…

mixpanel のイベントのプロパティにリストを設定して、後から色々分析する術

こんにちは。さんまが食べたい、きたけーです。 mixpanel のイベントのプロパティにはリストを設定することができます。こんなかんじです。ランダムで僕の財布がすっからかんになった要因が追加されます。 require 'mixpanel-ruby' require 'dotenv' Dotenv.…

Rubyでmixpanelのイベントをtrackしたり、データをexportする術

こんにちは。最後の100円玉をつかってしまいました、きたけーです。 仕事で最近mixpanelを扱う必要がでてきたので、Rubyのclientライブラリを触ってみました。 mixpanel-ruby 公式のライブラリ mixpanel/mixpanel-ruby · GitHub イベントのtrackとか属性の設…

rack-attack middleware を使って IPアドレスでアクセスを制限したり、同一IPアドレスからの大量のリクエストを防ぐ術

こんにちは。味噌汁を飲んでいます、きたけーです。 世の中は脅威で満ちている。 特定のパスへのアクセスをIPアドレスで制限したり、同一IPアドレスからの大量のリクエストを防ぐには、kickstarter/rack-attack · GitHub というrack middlewareが便利です。 …

VCR gemでアクセストークンとかをいいかんじにする術

こんばんは。おなかが空きました。きたけーです。 最近、RubyでWeb APIのラッパーライブラリをつくっていて、VCR gemを使っています。 VCR gemは、テストでおこなうHTTPの通信を初回に記録し、次回以降は記録された内容をつかう(通信を偽装する)ことで、テス…

Ruby Hiroba 2014 の生活発表会で発表しました

こんにちは。きたけーです。 もう先週になりますが、「Railsのサービスで特別対応をしたときの話」という題で、Ruby Hiroba 2014 で発表してきました。 人前で発表するのが、大学の学会発表以来だったので会場に向かうまでドキドキしていましたが、イベント…

Twitterで、今日、特定のキーワードでツイートされた回数、ツイートしたユーザーのフォロワー数を数えるRubyスクリプトを書いた

こんにちは。キャベツ炒め大好き きたけーです。 小さくてもその日に書いたコードを載せていきます。 今日は、Twitterで今日、特定のキーワードで「ツイートされた回数」、「ツイートしたユーザーのフォロワー数」を数えるスクリプトを書きました。 バイラル…

Githubで今日なにをしたか、調べるスクリプトを書いた

こんにちは。ブログの最終投稿日時が99日前で「意識が低まっているのでは?」と言われちゃったきたけーです。最近、春の陽気につられて意識も高まってきたので、リハビリします。 最近、会社のその日の業務内容の報告にGithub(ペパボではGH:Eもつかっている)…

ActiveRecordのモデルクラスの一覧を取得する

こんにちは。一日一日暗くなるのが早くなってきました。きたけーです。 最近、「テストデータの用意」で頭の中であれこれ思案していることがあるのですが、どうにもそれを形にするためには道具が少なすぎるような気がするので、使えそうなものを少しずつ集め…

Selenium WebDriver(リモートサーバー)+Capybaraを試してみた。

こんにちは。お金がなくて困っています。きたけーです。 今日、朝、Selenium WebDriver(リモートサーバー)とCapybaraを試してみたのでそのまとめ。 Selenium WebDriverなんぞそれ?っていう人は、このスライドをみると便利さが分かるのではなかろうか。 よう…

Resqueで色々やって、Redisに何が格納されているのか調べてみた

こんにちは、Go! Go! Heaven が頭から抜けないきたけーです。 最近、仕事や趣味でResqueをよく触っています。バックグラウンド処理をおこなう便利なライブラリなんですけど、「◯◯なときって何が起こるの?」と疑問に思うことが多かったので色々なケースでRed…

Github APIのシンプルなラッパー Octokit gemを触ってみた

こんにちは。来年から会社に入ってくる後輩に「きたけーさんってブログかいてるんですか? みたことないんすけど」と言われてちょっとしょんぼりしたきたけーです。(結果がすべてだから、これは僕のせいです) 先日、GithubがOctokitというGithub APIの簡単な…

「初めてのRuby」読書会の補足2(p36 mapの省略バージョン)

こんにちは.先輩を刺す刺さないとか言われてしまったきたけーです(刺さないです).前回から少し日が空きましたが前回同様に補足を書いていこうと思います. 今回はp36の例2-14です. acids = ["Adenin", "Thymine", "Guanine", "Cytosine"] String#downcase…

「初めてのRuby」読書会の補足(p28 オブジェクト指向編)

会社で@adarapata先輩のもと,新卒のエンジニア・デザイナーで「初めてのRuby」読書会をおこなっています.読書会の時間だけだと,どうして理解が浅くなってしまう部分もあるので掘り下げるための補足をブログで書いていこうと思います. p.25のオブジェクト…

RubyでWebページの本文抽出をするAPIをつくってみた

かなりシンプルですが,この記事のライブラリをWebAPIを通して利用できるようにしました.ブラウザ拡張とかで使うと便利だとおもいます.このライブラリは1.9系では動きませんが,ここを参考にパッチをあてたものを利用しています. 利用方法 リクエスト API…

おいっこ・めいっこのためにRubyで簡単な計算ゲームをつくった

入社してもうすぐ一ヶ月.研修のために福岡に滞在しているきたけーです.滞在しているのはウィークリーマンションで,従業員の方がとても気さくです.毎日,快適に過ごしています. 今日は従業員のお子さん二人(男の子)がフロントで遊んでいて「計算のお手伝…

Rubyでオブジェクトの特異クラスを取得する

特異クラスは,「あるオブジェクト専用の」存在しないようで実はしっかりと存在しているクラス.このクラスに定義されたインスタンスメソッドは特異メソッドになる.特異クラスはSingleton Class, またはEigen Classと呼ばれている.まるで雲をつかむような…

Pryの終了をフックする

Pryを終了するときに何か処理をしたいなぁという場合のフックの紹介(irbでも使える). Pryのフックといっても使うのはRubyスクリプトの終了のフック. 事前にしたい処理が決まっている場合には, .pryrcに以下のように記述すればいい. .pryrcは単なるRubyスク…

なんとなくFizzBuss

(1..100).map {|n| if n % 3 == 0 || n % 5 == 0}.join(" ")

to_sとto_strの違いのメモ

Object#to_sはオブジェクトの文字列表現. Kernel#printやKernel#putsは文字列以外のオブジェクトが引数に渡された場合にこのメソッドを使って文字列に変換する. to_strは暗黙の変換用. 暗黙の変換...? オブジェクトが「文字列が使われるすべての場面で代置可…

文字列検索をするメソッドを書いてみた

String#indexがあるので車輪の再発明ですが, Enumerableのメソッド, Enumeratorオブジェクトを理解するために単純に文字列検索をするメソッドをかいてみました. # coding: utf-8 def simple_search(text, pattern) text.chars.each_cons(pattern.size).each …

Rubyでモジュール関数を定義する

モジュール関数の例をあげるとMathモジュールのsqrtメソッド. Math.sqrt 4 # => 2 include Math sqrt 4 # => 2 self.sqrt 4 # これは無理 自分でもこのようなモジュール関数を定義するには, module_functionメソッドを使います. module Hoge def hello puts …

systemuでタイムアウトを設定する

こんにちは. 今, つくっているプログラムで外部コマンドを呼び出すためのsystemuというgemを利用しています. コマンドの処理時間が長い場合にタイムアウトを設定したかったので, まとめておきます. require 'systemu' has_timed_out = false timeout_sec = 1…

gemのありかを知るにはwhich

インストールしたgemの置き場所を知るには, 「gem which」コマンドを利用します. gem which 名前 Bundlerを使ってるときは Bundlerを使ってるときは「bundle exec」でBundlerの環境として実行してあげます bundle exec gem which 名前