martinfowler.com流し読み - FunctionLength

はじめに 最近、https://martinfowler.com/tags から過去の全ての投稿を閲覧できることを発見したので、新しいものから順に遡って読むことにした。 いつまで続くかはわからない。 本日のエントリ 日本語訳はこちら。 概要 あるコードを関数として切り出す際…

martinfowler.com流し読み - FunctionAsObject

はじめに 最近、https://martinfowler.com/tags から過去の全ての投稿を閲覧できることを発見したので、新しいものから順に遡って読むことにした。 いつまで続くかはわからない。 本日のエントリ 概要 第一級関数とクロージャを持つ言語では、Function As Ob…

2016年の進捗

はじめに 年の瀬に一年間でやったことをまとめておくと後になって振り返るときにいいのではないかと(急に)思い立ち、2016年にやったことをまとめることにした。 今年は社会人2年目の年だった。 お仕事 RRRSPec導入による自動テスト高速化 今年、直接・間接…

Rails 5におけるActive Record Observerの代替ライブラリを作った

はじめに 最近、Rails 5におけるActive Record Observerの代替ライブラリとして、Everettというものを作りました。 本エントリでは、このgemの紹介と作成のきっかけや工夫した点などを述べたいと思います。 Everettとは 概要 READMEの冒頭にも書いてあるよう…

react-native-router-fluxをいい感じに使う3つの方法

はじめに 最近React Nativeをいじっていて、react-native-router-flux周りの知見が溜まってきたので忘れないうちに書き留めておこうと思う。 react-native-router-fluxとは 簡単に言うと、ネイティブアプリの画面遷移をreact-routerっぽく書けるようにするラ…

codeclimate-test-reporterのv1に対応した

はじめに 自分の開発しているgemでは、自動テストの実行にTravis CI、(テストカバレッジの計測を含む)コードの品質管理にCode Climateを利用している。 先日、Code Climateにテストカバレッジの計測結果を送信するためのgemであるcodeclimate-test-reporte…

【Amazon Linux】capybara-webkitでスクリーンショットを撮った際に日本語が表示されない問題を解決した

はじめに 普段EC2インスタンス(Amazon Linux)にSSHをして開発しているのですが、E2Eテストの中で page.save_screenshot "screenshot.png" などとしてスクリーンショットを撮ると、日本語が表示されずにいました。 検索すると日本語フォントをインストール…

Chaiをやめてpower-assertを使うことにした

はじめに 前回のJavaScript速習エントリの「おわりに」も書いたんですが、ここ最近はずっとNode.jsを触っていて、最近はテストを書くのにも慣れてきました。 その過程でChaiをやめてpower-assertを使うようになったので、その理由を忘れないように書き留めて…

t_wadaさんが提案するJavaScript速習コースを実際に履修してみた

はじめに もう2ヶ月前の話なのですが、日本のTDD第一人者で、最近はpower-assert-jsの開発などJS界隈でも活躍されている@t_wadaさんが、Twitterでこんな提案をされていました。 『JavaScript: The Good Parts』と『WEB+DB PRESS Vol.87 第1特集』のあわせて2…

Railsで静的ページの管理を簡単にするgemを作った

はじめに 先月、エラーページをAsset Pipelineで管理する - WEB SALADというエントリを書いたのですが、あの後「これはエラーページに限らずもっと一般化できるのでは」と思ってgemを作ってみました。 yasaichi/gakubuchi このエントリでは、このgemの紹介と…

エラーページをAsset Pipelineで管理する

はじめに Railsでエラーページをいかに楽に書いて管理するかを模索した結果、Asset Pipelineを使う方法が良さそうだったのでまとめます。 追記(2015/08/17) このエントリで提案した手法をgem化し、その使い方を解説したエントリを書きました。 よろしけれ…

Effective Rubyを読んだので感想を書いてく

はじめに Effective Ruby、やっと読み終わった!!! ゴールデンウィーク中の課題図書だったのに、思ったよりも内容が重くて読み終わるのに一ヶ月くらいかかってしまった。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メデ…

RubyとRailsで特定のバージョン下でのみ適用したいパッチを書く方法

はじめに RubyとRailsで、特定のバージョン下において適用したいパッチを書く方法を調べたのでまとめました。 実装例 以下の通りです。 if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0.0') # Ruby 2系で適用したいパッチ end if Gem::Version.…

Railsで配列の要素から"A, B, and C"形式の文字列を作る時はArray#to_sentenceが便利

はじめに タイトル通りです。 最初は自分で実装しようと思ったんですが意外とめんどいことに気付き、色々探していたら該当の処理をよしなにやってくれるメソッドを見つけたのでまとめました。 Array#to_sentence Array#to_sentenceは、ActiveSupportのArray…

Railsでのpreflightリクエストの実装およびテスト例

はじめに Railsでpreflightリクエストの処理を実装する機会があったのでまとめてみました。 preflightリクエストとは CORS(Cross-Origin Resource Sharing)という、originをまたいだAjax通信の際に発生するリクエストのことです。 発生条件など、詳しくは…

Railsでidが前後のレコードを取得するメソッドを実装してみた

はじめに Railsでとあるサービスを実装しているときに、詳細画面でidが前後のレコードへのリンクをつけたかったのですが、ActiveRecordではそのようなメソッドが用意されていないようなので実装しました。 方針 基本的には次のリンク通りなのですが、5年前の…

Rubyでパス文字列を組み立てるときはPathnameクラスを使おう

はじめに Rubyで文字列操作だけでパス文字列を組み立てようとすると苦しいコードになりがちですが、Pathnameクラスを使うといい感じに書けることがわかったのでまとめました。 Pathnameとは Rubyの組み込みクラスで、パス名をオブジェクト指向っぽく扱うこと…

パーフェクトRuby on RailsのBasic認証の実装がしっくりこなかったので書き換えてみた

はじめに 現在パーフェクトRuby on Railsの10章を読んでいるのですが、そこに掲載されていたBasic認証のためのRack Middlewareの実装がしっくりこなかったので書き換えてみました。 実装 credentialsのチェックを別メソッドを切り出すことで、何をやっている…

ActiveSupportを使ってHash#camelize_keysを実装する

はじめに ActiveSupportにHash#camelize_keysってあってもよさそうなのに、ないのか、、、— yasaichi (@_yasaichi) 2015, 3月 11 先日RailsでとあるAPIを実装していたときに、Hashの各キーをlowerCamelCaseに変換するメソッドがActiveSupportにないことに気…

細かすぎて伝わらないBeamerの知見10個

TeX

はじめに TeXで書いた修論の内容をパワポに持っていくのが面倒すぎたので、 Beamerでスライドを作りました。 そのときに色々とはまった(が解決した)部分をまとめました。 細かすぎて伝わらないBeamerの知見10個 英数フォントをHelveticaに変える professio…

Rubyで総和・平均・分散・標準偏差を算出する

はじめに タイトル通り。もう何回か自作してる気がするので、そろそろメモしておく。 実装 Arrayクラスを書き換えます。 class Array def sum reduce(:+) end def mean sum.to_f / size end def var m = mean reduce(0) { |a,b| a + (b - m) ** 2 } / (size …

zsh+tmuxな環境でなぜかキーバインドが変わってしまう問題を解決した

はじめに 僕は普段zshからtmuxを立ち上げて作業をしているのですが、その時だけ「C-aで行頭にジャンプ」等のキーバインドが使えずに困っていました。 ターミナルを立ち上げた時のzshでは普通に使える、という状態だったのでしばらく放置していたのですが、さ…

scikit-learnで構築したモデルをシリアライズする

はじめに 11月となり、僕の修士研究*1も大詰めになってきました。 研究ではPythonの機械学習ライブラリであるscikit-learnを使っているのですが、先日、「(1時間かけて)訓練したモデルをシリアライズしておけば、評価用のプログラムと分割できて、色々と捗…

attr_readerとattr_accessorを拡張してto_hメソッドを簡潔に実装する

はじめに 先日Ruby on Railsであるサービスの開発を行っていた際に、自作のクラスにto_hというインスタンスメソッドを実装する必要が出てきました。 このメソッドの要件は以下の通りです。 attr_readerまたはattr_accessorで設定したgetterメソッドの名前をk…

RSenseを使ってVimをIDEっぽくする(Ruby向け)

はじめに 夏休みの間、普段とは別のバイト先でIntelliJ+Spray(Scala)で開発をしていたんですが、 IDE+静的型付け言語の組み合わせって色々補完してくれていいなあと思いました。 色々探してみたんだけど、Railsのメソッドを補完してくれるvimのプラグインっ…

乃木どこ開始5分前にYoするサービスを作った

はじめに 若干旬が過ぎた感もありますが、Yoを使った「乃木どこが始まるよ」というサービスを先日リリースしました。 本エントリでは最初にサービスの簡単な紹介をしたあと、備忘録も兼ねて苦労した点について述べていきます。 サービス概要 乃木坂46の冠番…

Pythonでx-means法を実装した

はじめに 最近、このままだと修士論文がすごくシンプルな内容になりそうなことに気づいたので、ページ数を稼ぐためによりよい示唆を得るために、何か分析を足す必要が出てきました。 色々考えた結果、x-means法によるクラスタリングを行うことにしたのですが…

Python3でstatsmodelsをなんとかインストールした

はじめに 今まで統計関連のコードはRで書いてたのですが、最近はこれをPythonに置き換えようと色々なライブラリを試してます。 で、その過程でstatsmodelsをインストールしようとしたらエラーが出たんですが、なんとか解決したので、その方法を忘れないよう…

google-api-ruby-clientをRailsで使おうとしたときにはまったこととその解決策

概要 タイトル通り。備忘録も兼ねてまとめておきます。 Google::APIClient.newでエラーが出る NameError: uninitialized constant Googleって出てえっ?ってなったパターン(笑) これはGemfileで gem 'google-api-client' としか書いておらず、gemの読み込…

独自クラスをDraperを使ってdecorateする

はじめに 最近Draper使ってview周りのコードを書いてるんですが、ほんと素晴らしいですよねこのgem。 で、model以外でも使えたらもっと便利なのにな〜と思いながら色々調べていたら、Draper::Decoratableモジュールをincludeすれば何でもdecorateできるとい…

RailsでURLのクエリ文字列を組み立てるときはHash#to_queryを使うと捗る

はじめに Railsでコードを書いていて、ControllerやhelperでURLのクエリ文字列を組み立てる場面ってありますよね。 こうゆうとき、僕は今まで query = { hoge: 1, fuga: 2 } query.map{ |k,v| "#{k}=#{v}" }.join("&") とかやってたんですけど、これだと値が…

スルガ銀行マイ支店の口座を解約する方法

はじめに 三菱東京UFJ-VISAデビットの登場により、すっかり使わなくなったスルガ銀行Visaデビットカード。 元々デビットカードが欲しくて口座開設したので、この機会に解約しようと思ったんですが・・・ マイ支店のよくあるご質問に解約方法が載っていない!…

Dive Into Python 3の覆面算をRubyで書いてみた

はじめに 最近、必要に迫られてDive Into Python 3を読んでPythonの勉強をしているわけですが、その第8章で出てきた覆面算のコードをRubyで書いてみた。 実装 以下の通りです。なるべくオリジナルに近づけたつもり。 # encoding: utf-8 DOCUMENT = <<EOS Find solutions to alphametic equations. > Alphame</eos>…

Railsで環境毎にサブドメインとパスを切り替える

はじめに 先日、とあるAPIを作成していたときに 開発環境では、http://localhost:3000/api/users/1のように、パスの最初にapiをつける。 本番環境では、http://api.example.com/users/1のように、apiというサブドメインを利用するためパス内のapiは不要。 と…

Ruby / Railsで文字列がIPアドレスとして適切かどうかチェックする

概要 最近、ある文字列がIPアドレスとして適切かどうかチェックする方法を調べる機会があったので、その結果を備忘録としてここにメモしておきます。 実装 正規表現を考えるのは面倒だったので、Rubyの標準ライブラリであるIPAddrを使いました。 例 引数の文…

Ruby / Railsで任意のオブジェクトが配列の要素かどうか調べたい

はじめに RubyやRailsで任意のオブジェクトが配列の要素かどうか調べる場合、普通、include?を使うと思います。 例えば、以下のような感じ。 ystk = "中田ヤスタカ" perfume = %w(あ〜ちゃん かしゆか のっち) perfume.include?(ystk) # => false 僕はtrueだ…

pTeX使ってて出会ったエラーとその対処法まとめ

概要 先日、Homebrewで最小構成のTeX環境を構築するというエントリで 「色々はまった」と書いたんですが、実はその大部分は以下の内容です 笑 というわけで、備忘録も兼ねてつらつらと書いていきたいと思います。 エラーとその対処法 Metric (TFM) file not …

Homebrewで最小構成のTeX環境を構築する

Homebrewに移行した際に、MacPortsで構築したTeX環境が(当たり前ですが) 全て消えました。で、Homebrewで再構築しようとしたら色々はまったので、 備忘録も兼ねてまとめておきます。 手順 brew-caskを使ってインストール 日本語が使えるようにする ヒラギ…

Macの移行アシスタントで「バックアップにボリュームがありません」と言われて先に進めない場合の解決法

Mac

Time Capsuleと新しいMacを購入して、バックアップ取って移行するか〜 と思ってたらはまったのでメモ。 状況 Time MachineでTime Capsuleにバックアップを作成している。 移行アシスタントで「バックアップにボリュームがありません」と言われて先に進めない…

東工大ポータルのマトリックス認証で自動入力を行うブックマークレット

概要 タイトル通り。勉強も兼ねて作ってみました。 セキュリティ的には全くよくないので、使用は自己責任で。 実装 以下のコード中の"[A,1][B,1][C,1]...[J,7]"をカード裏面のマトリックスに置き換えて(※)使う。 ※ 例えば、[A,1]がA、[B,1]がBなら"AB"とい…

Rubyでcsvファイルを1行ずつ行番号つきで読み込む

概要 タイトル通り。 行数に応じて処理を分岐したかったので調べてみた。 実装例 Shift_JISからUTF-8に変換して読み込む場合。 numが1から始まる行番号を表す。 # encoding:UTF-8 require 'csv' CSV.foreach(path, encoding: "Shift_JIS:UTF-8") do |line| n…

RでLPP(Locality Preserving Projection)

R

概要 大学院の講義の課題で、必要に迫られたので作ってみた。 実装 similarity matrixであるWはk-nearest neighborを元に生成しているが、 これの解釈がいまいちわからなかったので正しいか不明。 ちなみにぼくは「データjからの全データへのユークリッド距…

R on Rails with Rserve

概要 RをRailsで動かすまでの簡単なチュートリアル。 誰かの役に立つかもしれないと思って書くことにした。 そもそもRをRubyで動かすには 主なライブラリが3つある。 RSRuby 実行速度は3つの中で最も速いらしいが、パスを通さないとだめだったり、 その他実…

RCaBoChaをR-2.15.1で使おうとしたらだめだった

R

タイトル通り。 たぶん同じとこでひっかかる人がいると思うのでメモしておく。 問題 RCaBoChaの関数RCaBoChaDFとかがR-2.15.1で使えない。 原因 RCaBoChaの最新バージョン0.29βはR-2.13.0以降に対応していない。 でも互換性あるでしょと思って実行すると res …