tahara
こんにちは、tahara です。 弊社のメインは Ruby on Rails ですが、 簡単な周辺システムは担当者の好きな言語を使って作ったりします。 今回は Rust を使って MySQL(Amazon Aurora)のレコードや MongoDB に入っいるログを集計して表示する Web アプリを Ru…
こんにちは、tahara です。 この記事はアクトインディ Advent Calendar 2016 11日目です。 rustup: the Rust toolchain installer について書いてみたいと思います。 rustup は Rust における Ruby での rbenv や RVM みたいなものです。 以前は、multirust …
こんにちは、tahara です。 Rails でメールを送信するとログに次のような感じで出力されますよね。 Sent mail to user@example.com (8.6ms) Date: Mon, 03 Oct 2016 14:32:16 +0900 To: user@example.com Message-ID: <57f1ed60d1544_656931b0dc404e7@yarn.m…
こんにちは、tahara です。 act-fluent-logger-rails の Rails5 対応をリリースしました。 https://rubygems.org/gems/act-fluent-logger-rails/versions/0.3.0
こんにちは、tahara です。 テストでも Paperclip を使っているモデルを FactoryGirl.create(:facility) とかすると、 ImageMagick の convert コマンドなどが走ってしまいます。 これがなかなか重くてテストを遅くしちゃっています。 そこで Paperclip のサ…
こんにちは、tahara です。 いつもコンソールで rails c していましたが Emacs にひきこもることにしました。 (defun rinari--wrap-rails-command (command) (concat (expand-file-name "~/.rvm/wrappers/default/bundle") " exec rails " command)) Pry 使…
こんにちは、tahara です。 Rails で config.action_mailer.delivery_method を :sendmail から :smtp にかえたら、44 分かかっていたメール送信バッチが 17 分で完了するようになりました。 ( ^-^)/:★*☆オメデト♪ なのでみなさん :smpt にしましょう! とい…
こんにちは、tahara です。 よくあるグループ毎の最大値を持つレコードを取得する SQL の書き方です。 ただし、MySQL 限定。 次のようなテーブルとレコードがあるとします。 create table foo ( id int(11), group_id int(11), value int(11), position int(…
こんにちは、tahara です。 アクトインディ Advent Calendar 2015 の25日目の記事です。 これです。 Delayed::Worker.max_attempts = 0 Delayed::Job は実行に失敗した場合、デフォルトで25回リトライします。 気のきいた機能なのですが、メール一斉送信を D…
こんにちは、tahara です。 アクトインディ Advent Calendar 2015 の8日目の記事です。 Common Lisp コードの方が多い gem をリリースしました。 前回はたった2行でしたが、今回は200行以上あります。 ちなみに Ruby のコードは40行くらいです。 lisp-rails-…
こんにちは、tahara です。 アクトインディ Advent Calendar 2015 の4日目の記事です。 ふだんいこーよを開発しているとき bundle exec guard ってやってます。 むかしは script/autospec でしたよね。 その当時は autotest-stumpwm でした。 このたび Gurad…
こんにちは、tahara です。 コードに account とか withdraw とか出てきたら悲観ロック(select for update)が必要ですね。 そのテストをするには次のものが必要になるかと思います。 コミットが機能する 複数スレッドがそれぞれ別々のコネクションでトラン…
こんにちは、tahara です。 ちかごろ Rails のテストは requests spec がいいな、と思ってます。 メリットは リクエストの view → controller → model → レスポンスの view と、ひととおりでテストできる。 実運用にそくしたエンドツーエンドテストがあると…
こんにちは、tahara です。 StumpWM は弊社エンジニア内で最も人気のあるウィンドウマネージャです。 そのシェアは 50% (3/6) もあります!? コードレビューにかかせない LGTM 画像も簡単に用意できちゃいます。 お好みの画像をブラウザに表示する。 StumpW…
こんにちは、tahara です。 Android からのファイルアップロードはエントロピーの神々に支配されているのでしょうか? 拡張子なし、Content-Type: application/octet-stream で jpeg ファイルが ブラウザから POST されたりします。 そんな POST に対応する…
こんにちは、tahara です。 たぶん第6回目となる社内エンジニア勉強会を開催しました。 持ちまわりで社内勉強会を開催しており、先日は私の担当でしたので、 このブログにも書いておこうと思います。 よくあるフィボナッチ数を求める fib 関数をネタにコード…
こんにちは、tahara です。 この「アクトインディ技術部隊報告書」は Common Lisp で書かれていますが、このたびソースを公開しました。 https://github.com/actindi-dev/tech-blog 作りを簡単に説明します。 Web サーバは nginx すみませんが Common Lisp …
こんにちは、tahara です。 Rails システムでのバウンスメール処理ってどうするのがいいんでしょう? ベステプラクティスではないかもしれませんが、弊社でのバウンスメール処理方法を書いてみたいと思います。 まずメーラークラスで return_path にバウンス…
こんにちは、tahara です。 今日は仕事納めなので、この一年を(技師部隊的な観点で)ふりかえってみたいと思います。 Docker でステージング量産できるようにした http://tech.actindi.net/3604628531 http://tech.actindi.net/3610143537 めちゃくちゃ便利…
こんにちは、tahara です。 システム開発で、もう15年くらい前からやってみたいことがありました。 Web アプリでの帳票出力に LaTeX を使うことです。 社内システムながらようやくその機会に恵まれました。 rails-latex といういい gem があり、めんどうなと…
こんにちは、tahara です。 EC2 はとてもいいのですが、たまにインスタンスが勝手にリブートしたりするんですよね。 わかっています。Multi-AZ 配置にしましょう、ということですよね。 ということで SolrCloud で Solr を冗長化しました。 次のような構成で…
こんにちは、tahara です。 いこーよ では Passenger を使っていました。 最近チケット毎に Docker でステージングを作り、リリースする流れになった中、 デプロイ時の再起動でリクエストがつまってしまうのが問題になってきました。 そのため Unicorn に変…
こんにちは、tahara です。 Docker を使って git push をトリガーにステージング環境をどんどんたてて開発しています。 いま見たら24面のステージング環境が動いていました。 新しいブランチを push すると Jenkins が Docker のコンテナを作りそこにデプロ…
こんなふうに書けるんですね。 [1] pry(main)> Experience.where.not(content: [nil, '']).to_sql => "SELECT `experiences`.* FROM `experiences` WHERE (NOT ((`experiences`.`content` = '' OR `experiences`.`content` IS NULL)))"
こんにちは、tahara です。 ちかごろ Docker を使ってステージング環境を作っています。 いろいろはまりました。 Btrfs 使ってる Btrfs を使っていると pwd が失敗したりします。 Btrfs 上では AUFS だと問題があるようです。 docker のデーモンを -s btrfs …
こんにちは、tahara です。 弊社もエンジニア一人体制がおわり、コードレビューが必要になってきました。 ついに GitHub Enterprise か! とも思いましが残念ながらコスト的に却下。 GitLab 導入しました。 インストールはこちらのページの手順を愚直に実行で…
こんにちは、tahara です。 Rails で is null と is not null ってどうやって書くの? is null Foo.where(bar: nil) is not null Foo.where.not(bar: nil) http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods/WhereChain.html#method-i-not ちゃ…
こんにちは、tahara です。 ようやく いこーよ も エンパ においつき Rails4 になりました! おいつかれたエンパ担当者は、「エンパはRails6くらいにしたい」などのたまっていましたが、 その時はエイリアンテクノロジーでつきはなしたいと思っています。 さ…
こんにちは、tahara です。 Rails で Fluentd へログ出力する act-fluent-logger-rails を Rails4 対応にしました。 いままで config.log_tags = [ :subdomain, :uuid ] 等を指定していても無視していましたが、 ようやくタグを付けられるようにしました。遅…
こんにちは、tahara です。 2つのハードディスクで RAID0 になっている外付けハードディスク2台で バックアップ用の Btrfs のファイルシステムを作っていました。 ある日2台ある外付けハードディスクのうち1台の AC アダプタが外れてしまいました。 そして B…