タグ

ブックマーク / blog.willnet.in (16)

  • 良いエンジニアを採用するにはどうしたらいいか - おもしろwebサービス開発日記

    以前ソフトウェア開発者採用ガイドの読書感想文を書いたときに反響が思ったより大きかったので、エンジニア採用というテーマは関心が高いのだなと感じました。 上記感想文のエントリでも書いていますが、お手伝いしている会社の方などから「どうやったら良いエンジニアを採用できますか?」と聞かれることがよくあります。先のエントリでは「頑張るしかないですねとしか答えようがない」と書きましたが、頑張るとはいったい何を頑張るのか、きちんとまとめておいたほうが良いなと思いエントリをしたためる次第です*1。 あくまで僕はこう思いますという話で、この通りにしたからといって必ず良いエンジニアを採用できる保証はありません。あしからず。 想定読者 良いエンジニアを採用したい偉いひと、もしくは人事のひとです。 前提: 良いエンジニアとは このエントリでの「エンジニア」とはいわゆるweb系のエンジニア(例: サーバサイドエンジニ

    良いエンジニアを採用するにはどうしたらいいか - おもしろwebサービス開発日記
  • RejectKaigi2017でファイルアップロードについて発表した - おもしろwebサービス開発日記

    先日行われたRejectKaigi 2017でファイルアップロードについて発表しました。資料はこちら。 内容的には、WEB+DB PRESS Vol.95で書いたファイルアップロード話を最新にしたものになります。Rails5.2で新しく追加されるActive Storageというファイルアップロード機能を紹介しつつ、ファイルアップロード全般の話題について触れています。 ファイルアップロードをただしく実装するにはそれにまつわる様々な要素についての知見が必要で、webエンジニア的には腕の見せ所ではないかと思います。Active Storageの登場でファイルアップロードについての知見が広まって、ただしく実装できる人が増えるといいなと思います(( ⁰⊖⁰)/) あわせて読みたい WEB+DB PRESS Vol.95posted with amazlet at 17.08.20小出 淳子 黒澤

    RejectKaigi2017でファイルアップロードについて発表した - おもしろwebサービス開発日記
  • Rails 5.x について発表した - おもしろwebサービス開発日記

    昨日開催された、Increments ++ Tech TalkにてRails 5.xというタイトルの話をしました。 内容はWEB+DB PRESSの連載ではページ数の関係で載せられなかったRails 5.0のトピックと、Rails 5.1で入る(入りそう)な機能の話です。分量が多くなってしまい、いろいろ端折りながら喋りました。 スライド中でも触れていますが、発売中のWEB+DB PRESS Vol.93でRails 5のメジャーな変更について取り上げ済みですので、気になる方はぜひ一読ください。 WEB+DB PRESS Vol.93posted with amazlet at 16.08.19原田 騎郎 吉羽 龍太郎 松浦 隼人 須藤 涼介 生沼 一公 森下 雅章 前島 真一 鍛治 匠一 伊藤 直也 のざき ひろふみ うらがみ 高山 温 佐々木 健一 わかめ まさひろ ひげぽん 遠藤 雅伸

    Rails 5.x について発表した - おもしろwebサービス開発日記
  • 最近の Rack サーバ事情について - おもしろwebサービス開発日記

    先月、heroku推しサーバが unicorn から puma に変わったという発表がありました。unicorn だとスロークライアントの影響を受けやすいというのが理由なようです。 もう少し詳しく調べてみましょう。 そもそもスロークライアントってなに その名の通り遅い回線のクライアントです。3G環境のモバイル端末などが該当します。 「unicorn だとスロークライアントの影響を受けやすい」とは unicorn はプロセスモデルのサーバであり、blocking I/O モデルを採用しています。つまり、クライアントとの通信中プロセスが専有されるということです。 例えば unicorn がワーカプロセスを3つ立ち上げていて、そこへ通信完了に10分かかるようなスロークライアントが3つ接続されたら…、続くクライアントはスロークライアントの通信が完了するまで実行を待たなければならなくなります。プ

    最近の Rack サーバ事情について - おもしろwebサービス開発日記
  • ginza.rb 第33回で Rails 5 の新機能について学んだ - おもしろwebサービス開発日記

    3/15は ginza.rb の33回目のミートアップでした。 Ginza.rb 第33回 もうすぐやってくる!Rails 5を見ておこう - Ginza.rb | Doorkeeper 前回のミートアップ時に、きっと Rails 5.0 がリリースされているだろうと思い Rails 5.0 をテーマとして設定しましたが、見事に期待が外れましたね>< 未完成のリリースノートを読みつつ、主にメジャーな機能について内容を確認していきました。ざっとメモ書きを載せます。何か間違っている点などありましたら教えていただけると嬉しいです! Ruby on Rails 5.0 Release Notes — Ruby on Rails Guides ActionCable ご存知 websocket 用 pubsubサーバとして postgres と redis に対応している Basecamp のチャッ

    ginza.rb 第33回で Rails 5 の新機能について学んだ - おもしろwebサービス開発日記
  • Rails::API について発表した - おもしろwebサービス開発日記

    FiNC さんの社内マイクロサービス勉強会と、表参道.rb にて、そろそろリリースされそうな Rails 5 におけるメジャーフィーチャの一つ Rails::API について話しました。 雑感 スライド読むと分かるように、Rails::APIAPI サーバを作る時の銀の弾丸でもなんでもなくて、条件に合致したときに使うとちょっとだけ速くなりますよ、軽くなりますよという機能なのでした。 Rails::API の機能面としてはそれだけなのだけど、Rails は Rack Middleware や ActionController::Base 内の Module が疎になっていて、着脱が簡単なんですよというのを示す良い例にもなっていると思います。使っていない Middleware や Module を外すことで、手軽にちょっぴり速く/軽くできるので、API サーバに限らず不要なものがある場合

    Rails::API について発表した - おもしろwebサービス開発日記
  • rspec-rails を 3.0.0.rc1 にアップデートする際に気をつけること - おもしろwebサービス開発日記

    rspec-rails を 3.0.0.rc1 にアップデートすると、きっとテストがこけまくるようになるはず。そんな時は spec_helper.rb に次の設定を足してあげてください。 config.infer_spec_type_from_file_location! これまでの rspec-rails は、例えば spec/controllers 配下のテストであれば自動で type: controller を付与してくれていました。しかしrc1から前述の設定を足してあげないと自動付与しなくなりました。 これ結構なハマリポイントだと思うのですが、あんまり周知されていないようなのでエントリ書いてみました。無駄に時間を費やす人が一人でも減ることを祈っております…。

    rspec-rails を 3.0.0.rc1 にアップデートする際に気をつけること - おもしろwebサービス開発日記
    morygonzalez
    morygonzalez 2014/05/21
    rspec-rails 3 から `type: controller` とかを自動付与してくれなくなったので `config.infer_spec_type_from_file_location!`
  • Rspec で rake タスクをテストする用の gem を作った - おもしろwebサービス開発日記

    しばらく前に表題の gem を作りました。 willnet/rake_shared_context 中身はただの shared_context です。これは僕のオリジナルな gem ではなくて、thoughtbot 社のブログに書かれた shared_context のコードをほぼそのまま gem にした感じです。毎回 rake タスクをテストするためにブログからコピペしてくるのが面倒になったので作りました。 これを使うと下記のような rake タスクがあったときに # lib/tasks/reports.rake namespace :reports do desc "Generate report" task :generate => :environment do ReportGenerator.generate end end 下記のような感じで rake タスクのテストを書くこと

    Rspec で rake タスクをテストする用の gem を作った - おもしろwebサービス開発日記
  • minitest で mock や stub を使う - おもしろwebサービス開発日記

    minitest には標準で mock や stub の機能が付いています。それらの挙動について学んだのでメモ。 コード例 下記のような Person クラスと Whisky クラスがあるとします。これらについて minitest の mock と stub を使ってテストを書いてみます。 class Person def eat(food) food.taste end def drink(whisky) whisky.alcohol.upcase end end class Whisky def alcohol # まだ実装されていない end end mock minitest では下記のように mock を書きます。 describe Person do subject { Person.new } describe '#eat' do it '引数にとったオブジェクトの #tas

    minitest で mock や stub を使う - おもしろwebサービス開発日記
  • Rails4.0に含まれる strong_parameters について - おもしろwebサービス開発日記

    注意 このエントリは急いで書いたので間違いが含まれている可能性が高いです。気づいた方はご指摘ください。 序文 strong_parameters とは、mass assignment で余計なパラメータをモデルの属性にセットさせないための新しい仕組みです。Rails 4.0 からはこれが標準になります。Rails2.x と 3.x はattr_accessibleやattr_protectedなどで似たような機能が提供されていましたが、これだと管理が煩雑になるケースがありました。 今年の3月くらいにGitHub が mass assignment の脆弱性を突かれたことで 、この問題をどうにかしようという流れが起き、最終的に strong_parameters が作られるという経緯を辿りました。 mass assignment とは Rails ではこんなコードをよく見ると思います。 de

    Rails4.0に含まれる strong_parameters について - おもしろwebサービス開発日記
  • Devise でメールアドレス変更時にも確認メールを出す - おもしろwebサービス開発日記

    有名なRails用認証プラグインである devise は、機能毎にモジュール化されており必要な物だけを選んで使うことができます。例えば Confirmable というモジュールを使うと会員登録時に確認メールを飛ばすことができます。ただ、デフォルトではメールアドレス変更時には確認メールが飛びません。そこで下記のやり方でメールアドレス変更時にも確認メールを飛ばすようにしました。 やり方 User モデルを devise 用のモデルとして使っていると仮定します。 config/initializer/devise.rb に下記の一文を追加します。 config.reconfirmable = true さらに、メールアドレス変更時の一次保存用カラムを追加します。 rails g migration add_unconfirmed_email_to_user unconfirmed_email r

    Devise でメールアドレス変更時にも確認メールを出す - おもしろwebサービス開発日記
    morygonzalez
    morygonzalez 2013/04/17
    "devise が敷いてるレール上から外れない前提なら便利だと思いますが、それなりに凝ろうとしたら死あるのみではないでしょうか"
  • Rails 4.0 に入る予定の turbolinks について調べた - おもしろwebサービス開発日記

    Rails 4.0 のデフォルト Gemfile に入るらしい、pjax っぽいことをして画面遷移を高速化する gem turbolinks について軽く調べてみました。 Introducing Turbolinks: github.com/rails/turbolin…. This will ship as default-on in Rails 4.0 Gemfile. PRESS TURBO BUTTON! yfrog.com/odqcgsxj— DHHさん (@dhh) 9月 26, 2012 実態は100行ほどの coffee script なのでざっくり読んでみるとどんな挙動をするのかわかりやすいです。 turbolinks/lib/assets/javascripts/turbolinks.js.coffee at master · rails/turbolinks · Gi

    Rails 4.0 に入る予定の turbolinks について調べた - おもしろwebサービス開発日記
  • Capybara の README 意訳 - おもしろwebサービス開発日記

    注意 この訳はだいぶ古い(2011年7月時のREADME)です。最新版の訳をgithub上に載せたのでこちらをご覧ください。 はじめに Rails のエンドツーエンドテスト用のデファクトスタンダードプラグイン Capybara の README 意訳です。いつもと比べて直訳成分多めです。 テスト関連はどうにも日語の情報が少なくて、覚えるのが大変ですね>< 概要 Capybara は Rack アプリ(Rails, Sinatra, Merb等)の統合テストを簡単にするのが目的です。Capybara は現実のユーザがウェブアプリとやりとりするのをシミュレートします。テスト用のドライバを選択できます。デフォルトでは Rack::Test と Selenium ドライバをビルトインでサポートしています。HtmlUnit, env.js は外部の gem としてサポートしています。 完全なリファ

    Capybara の README 意訳 - おもしろwebサービス開発日記
  • Rails 3 の Action Mailerまとめ - おもしろwebサービス開発日記

    Ruby on Rails Guides: Action Mailer Basicsを読んでの自分用メモです。 Mailerを作る rails generate mailer UserMailer Mailer概要 defaultでmailメソッドのデフォルト引数を指定できる mailメソッドでmailを送る controllerと同じように、ここで定義したインスタンス変数はviewでも使える class UserMailer < ActionMailer::Base default :from => "notifications@example.com" def welcome_email(user) @user = user @url = "http://example.com/login" mail(:to => user.email, :subject => "Welcome to

    Rails 3 の Action Mailerまとめ - おもしろwebサービス開発日記
  • bundle exec を省略する - おもしろwebサービス開発日記

    Railsアプリの開発に bundler を使うようになって、gem 関連でハマることは少なくなったような気がします。ただ、その代わりに、なにかコマンドを叩くときに bundle exec をつけ忘れてエラーになることが時々あって、そんな時に少々めんどくさく感じます。bundle exec を省略できたらどんなに幸せでしょうか。 そんなわけで、 bundle exec を省略する方法をまとめたので紹介したいと思います。 rvm の gemset をアプリ毎に作って切り替える方法 下記のエントリに詳しくまとまっています。これの通りにやれば bundle exec から解放されるのは間違いないのですが、個人的にはアプリ毎に gemset を作るのは大げさな感じがします。 rvmのgemsetを使ってbundlerと賢く付き合う方法 - Hello, world! - s21g bundler-

    bundle exec を省略する - おもしろwebサービス開発日記
    morygonzalez
    morygonzalez 2011/11/16
    bundle exec を省略する方法
  • Rails 3 のルーティング定義について - おもしろwebサービス開発日記

    Rails 3のルーティングで気になったところについて。いつものメモです。あくまで気になったところなので全部網羅しているわけではありません。あしからず。 基map.connect から match メソッドに変更。オプションも下記のように変更。 # Rails 2 map.connect 'products/:id', :controller => 'products', :action => 'view' # Rails 3 match 'products/:id', :to => 'catalog#view' # :to は省略可能 match "/account" => "account#index" # :controller/:action 形式であればさらに省略可能 match "account/overview" Named Routes asオプションで指定するように

    Rails 3 のルーティング定義について - おもしろwebサービス開発日記
  • 1