説明しよう!tips集とは!?
弊社のslackチャンネルには、各々が感じた、技術的なtipsを誰に向けるわけでもなく放り投げるチャンネルがあります!
↑こんな感じです。
この記事は既出であろうがなかろうが、tipsをひたすらまとめていく記事である!!
内容にまとまりがないのはご愛嬌です!弊社の仕事の様子の鱗片が少しでも感じられれば幸いです
Ruby & Ruby on Rails編
- rubocopが古くてatomのlinter-rubocopでエラー出る問題
configで別の新しいrubocop設定yml用意してあげると大丈夫そうでした
/usr/local/bin/rubocop --config /Users/username/pjt/rubocop/.rubocop.yml
- Railsでto_queryに引数を渡すと名前空間付きになる
{ id: 1, name: "hoge"}.to_query("user")
#=> user[id]=1&user[name]="hoge"
- rubyで式が定義されているか調べるときのメソッド
defined? hoge
a = true
b = nil
defined? a #=> "local-variable"
defined? b #=> "local-variable"
defined? c #=> nil
- pry中のwhereami
のエイリアスは
whereami
のエイリアス @
- BCryptでハッシュ化したパスワードともとの平文の比較
元の平文のパスワードと合っているかを判定するとき、左辺と右辺を逆にするとfalseになる。
[11] pry(main)> my_password = BCrypt::Password.create("my password")
=> "$2a$10$PTCnedbK76CvSWyGVN.cfuQ2XwFDZWuTENL/OIvpIv0X8XmLksP3K"
[12] pry(main)> decoded_pass = BCrypt::Password.new(my_password)
=> "$2a$10$PTCnedbK76CvSWyGVN.cfuQ2XwFDZWuTENL/OIvpIv0X8XmLksP3K"
[13] pry(main)> decoded_pass == "my password"
=> true
[14] pry(main)> "my password" == decoded_pass
=> false
ちなみに普通の文字列を比較するときは、左辺と右辺を逆にしても結果は変わらない模様。
[15] pry(main)> hoge = "hoge"
=> "hoge"
[16] pry(main)> hoge == "hoge"
=> true
[17] pry(main)> "hoge" == hoge
=> true
※ 時々遭遇する理屈不明な謎挙動。調べると理由がわかるんですが、なんで!?ってなりがち。
※ しかし、次の日、回答が!
decoded_pass
は String なのかな? Stringを拡張したオブジェクトの可能性があると思う。
Stringじゃなかったね。てことは、 ==
は BCrypt::Password のメソッド
pry(main)> ret = BCrypt::Password.create("my password")
=> "$2a$10$q4p9T2PeNu7yYc34qlVGXup5HBxOFJsQNRlPD0QKbXD0Y9OCw/.XG"
[4] pry(main)> ret.class
=> BCrypt::Password
[16] pry(main)> $ BCrypt::Password
From: /Users/kawamata/.rbenv/versions/2.4.4/lib/ruby/gems/2.4.0/gems/bcrypt-3.1.12/lib/bcrypt/password.rb @ line 23:
Class name: BCrypt::Password
Number of lines: 63
class Password < String
...
def ==(secret)
super(BCrypt::Engine.hash_secret(secret, @salt))
end
...
end
※ たしかに、深掘りしてみるとBCrypt::PasswordはStringを継承していて、==メソッドが独自で生えてますね!面白い〜〜!
- rspecでTime.nowを使っているコードを確認したい時
timecop
のgemを使って、Time.nowを設定できる
before do
Timecop.freeze(Time.local(2018, 2, 15))
end
Time.now # いつ実行されても以下の価値が出る
=> 2018-02-15 00:00:00 +0900
Javascript編 (nodeなども含む!)
- npm-check-updates
パッケージ自体の更新と package.json
の更新を行う
https://github.com/tjunnone/npm-check-updates
yarnだと
https://github.com/yhnavein/yarn-check
が便利かもしれない。
- npm5からpackage-lock.jsonになった
参考: npm5から導入された package-lock.jsonについて | kakts-log
- setTimeoutの中でもとのthisを呼び出す方法。
最高
func: function() {
var self = this;
setTimeout(function() {
console.log(self, self.name);
}, 100);
}
JS 呼び出し元の this を担保するメモ。
javascript jQuery ES5 ES6
CSS(style)編
- SCSS などの各種 CSS メタ言語で & の使い方で class も結合できる
.hoge {
width: 100px;
&__piyo{
width: 120px
}
}
↓
.hoge {
width: 100px;
}
.hoge__piyo {
width: 120px;
}
html(slimやhamlなどを含む)編
- slim で 画像と文字を横並びさせたリンクを張りたいとき
= link_to image_tag('hoge.png') + 'hogepiyo'
+
で繋げれる、 ()
は必須。
mysql編
- mysql8 以降では 認証方式が変わった
Mysql2::Error (Authentication plugin 'caching_sha2_password' cannot be loaded ~~~
みたいなエラーが出たら、 /etc/my.cnf
に下記を記載するとよい らしい
[mysqld]
default-authentication-plugin=mysql_native_password
Git編
- gitでaddし忘れたファイルがあった時は
git add hoge/foo/bar
git commit --amend --no-edit
で追加できる
- よくつかうエイリアス
git config --global alias.cma '!git cm --amend --no-edit'
git config --global alias.psf '!git push origin $(git rev-parse --abbrev-ref HEAD) -f'
% git cma
% git psf
※ git rev-parse --abbrev-ref HEAD はcurrent branchが出るらしいぞ!
- push.default=current を設定したら
git push origin
だけでもcurrent branchへpushする
linux編 & AWS編
- awsのアクセスキーが最後に使われたサービスがわかる
aws iam get-access-key-last-used --access-key-id XXXXXXXXXXXXXXXXX --output json
ツール編
- chromeでiframeを使った動画の自動再生はmute状態じゃないと再生されないように
参考: Safari, Chromeの自動再生ポリシー変更のまとめ - Qiita
※ 音量で暴走することあるからこのアップデートは助かりますなぁ!
- CIrcleCI v2 の環境変数優先度
- Global
- Project(Global)
- Job (Global/Project)
- Container (None)
- Step (Global/Project/Job/Container)
- Bash (Global/Project/Job/Container)
参考: https://medium.com/veltra-engineering/circleci-2-0-a0549c65bc3b
おすすめ編
- このブログをこっそり眺めていこうと思います
※ こっそりじゃなくしてごめんなさい!でも紹介しちゃいます!
- diff2html githubと同じようなdiff画面をnodeでできる
すごそう
- hubコマンド便利
手元でissue一覧みたり、
prにcheckoutできたり便利
編集後記
豊作ですね!!
今回はまとめていて思ったんですが、「あれ?私gitのオプション知らなさすぎ...?」って感じでした! 割といろんなコマンド駆使すればなんとかなるものではありますが、もっとオプション使って便利にやりくりすべきですなぁ。
今回は2018/06/09 ~ 2018/06/15で放出されたtipsをまとめてみました。こんな感じで弊社の開発部はわいわいがやがややっておりますぞい!
休日にも独学のtipsを流してくれる人がいるほど、熱心な人もおります! tips共有ありがてぇ!
では、この企画が続けば、また次回に!