Team Geek メモ
Team Geek
以下は印象に残ったあたりのメモ。
p8 隠したらダメになる
p15 三本柱 (HRT, heart, not hurt)
- 謙虚 (Humility)
- 尊敬 (Respect)
- 信頼 (Trust)
p18 人間関係は確実にプロジェクトよりプロジェクトより長続きするものである。
p19 組織を自分の仕事に使うことを学べば、組織を自分の要求に合わせられるようになる。そうしなければ、宣戦布告なしの小さな戦争を人生をかけて日々戦うことになるだろう。
p23 過ちから学ぶには、失敗を文書化することである。我々の業界では、「ポストモーテム」を書くという。適切なポストモーテムには、学習した結果として何を学んだかと何を変更するかを記述する。書き終わったら見つけやすい場所に置いて、変更を継続できるようにする。
p24 優れたポストモーテムには以下のことが含まれる。
- 概要
- イベントのタイムライン (調査開始から解決に至るまで)
- イベントの根本原因
- 影響と損害の評価
- すぐに問題を解決するための行動一式
- 再発を防止するための行動一式
- 学習した教訓
p35 自己選択的な文化
p71 アンチパターン: パフォーマンスの低い人を無視する
p73 アンチパターン: 人間の問題を無視する
p74 アンチパターン: みんなの友達になる
p74 アンチパターン: 採用を妥協する
p87 幸せを追い求める 「何か必要なものはある?」 ここで重要なのは、暗黙的な目標を明確化することである。
p99 チームの文化に含めないことについても議論すべきである。効率的で動きの早いチームを目指しているのであれば、やりたくないことも明確にしておいたほうがいい。
p145 プランB: 逃げる
Macのカメラが認識されないとき
Macでruby buildがうまくいかないときのxcodeのアレ
毎回忘れてて調べ直すいつものやつ
sudo xcrun cc xcode-select --install rbenv install 2.4.0
rails new skip-いろいろ して react_on_rails を使おうとた場合に遭遇したあれこれ
これは整理して書いておこうと思ってもう2ヶ月経ってしまったものなので、この際ちらかったままに公開だけしておこうというメモです。
意気込んで、
rails new app --skip-action-cable --skip-action-mailer --skip-bundle --skip-javascript --skip-listen --skip-puma --skip-spring --skip-test --skip-turbolinks
などどして react_on_rails を使い始めようとした際に得た知見です。 react_on_rails をまっとうに使っている記事はもう色々あるので、 こういうの公開しておく意味はありそうかなと思ったのでした。
RailsでRuby2.4のHash#compactを使うp-rがある
読みました。短くまとめます。
これがマージされると、Ruby 2.4 で加わる Hash#compact / Hash#compact! を Rails でも使うようになる。
Hash#compact
が無い環境では、従来どおり activesupport 版を使うような変更ですね。
# activesupport/lib/active_support/core_ext/hash/compact.rb + unless Hash.instance_methods(false).include?(:compact) + # Returns a hash with non +nil+ values. + # + # hash = { a: true, b: false, c: nil } + # hash.compact # => { a: true, b: false } + # hash # => { a: true, b: false, c: nil } + # { c: nil }.compact # => {} + # { c: true }.compact # => { c: true } + def compact + select { |_, value| !value.nil? } + end
Ruby 2.4 の Hash#compact #compact!
は C 実装です。ActiveSupport 版に比べて速くなるでしょう。
yaml_checker という Gem を作りました
https://rubygems.org/gems/yaml_checker
ファイル名かディレクトリを指定すると、.yml / .yaml 拡張子のファイルのみ YAML.load_file して回って、例外を起こしたものをまとめて標準出力する。というやつです。
$ yaml_checker path/to/directory $ yaml_checker path/to/directory/foo.yml $ yaml_checker path/to/directory/bar.yaml
invalid なファイルを含む時の様子です。
$ yaml_checker examples/ (/path/to/examples/dir1/dir2/invalid.yml): did not find expected key while parsing a block mapping at line 1 column 3 (/path/to/examples/dir1/invalid.yml): did not find expected key while parsing a block mapping at line 1 column 3 (/path/to/examples/invalid.yml): did not find expected key while parsing a block mapping at line 1 column 3 (/path/to/examples/dir1/dir2/invalid.yaml): did not find expected key while parsing a block mapping at line 1 column 3 (/path/to/examples/dir1/invalid.yaml): did not find expected key while parsing a block mapping at line 1 column 3 (/path/to/examples/invalid.yaml): did not find expected key while parsing a block mapping at line 1 column 3
もう少し機能的に色々考えていて書き始めたのですが、とりあえずこれだけあればいいかという気持ちになってきて公開しました。必要が生じたらまたという気持ちです。
capybara, poltergeist, phantomjs で js: true なテストをする
save_and_open_page や save_screenshot する場合には、 html の charset が設定されていないと日本語が文字化けてしまいました。 そういう場合には書きましょう。
<meta charset="UTF-8" />
まず install phantomjs (Ubuntu での例です)
$ wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 $ sudo cp -ip phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/ $ phantomjs --version 2.1.1
Gemfile
group :test do gem "capybara" gem "launchy" # save_and_open_page するなら gem "poltergeist" end
rails_helper.rb
require "capybara/poltergeist" Capybara.javascript_driver = :poltergeist
sample feature spec
# sample_spec.rb require "rails_helper" RSpec.describe "Sample", :type => :feature do before do visit foo_path end feature "bar" do senario "baz", js: true do click_link "baz" # target: "_blank" な場合は別 window になる within_window(switch_to_window(windows.last)) do expect(current_path).to eq("/foo/bar/baz") expect(page).to have_content "some content" # save_page("save.html") # save_and_open_page save_screenshot "screenshot-#{DateTime.now}.png" # 全画面とりたい場合は full: true で save_screenshot("screenshot-#{DateTime.now}.png", full: true) end end end end
save_and_open_page で js, css も反映されたい場合、 assets が localhost で完結している場合には別途 rails s しておいて、 rails_helper.rb などに以下の様に設定しておくというのが簡単かなあと思いました。
Capybara.asset_host = "http://localhost:3000"