説明しよう!tips集とは!?
弊社のslackチャンネルには、各々が感じた、技術的なtipsを誰に向けるわけでもなく放り投げるチャンネルがあります!
↑こんな感じです。
この記事は既出であろうがなかろうが、tipsをひたすらまとめていく記事である!!
内容にまとまりがないのはご愛嬌です!弊社の仕事の様子の鱗片が少しでも感じられれば幸いです
前回: Vol.9
Ruby編
String#rjust
Rubyには任意の文字で任意の数を埋めてくれるString#rjustメソッドがある
"1".rjust(2,"0") # => "01"
"12".rjust(2,"0") # => "12"
"12".rjust(3,"0") # => "012"
ベンチマークガチ勢になります
Ruby高速化のためのベンチマークツール benchmark_driver.gem
Benchmark.driver do |x|
x.prelude %{ num = 0 }
x.report 'zero?', %{ num.zero? }
x.report '==', %{ num == 0 }
x.report '== Yoda', %{ 0 == num }
x.compare!
end
↓
Warming up --------------------------------------
zero? 29.992M i/s - 30.153M times in 1.005358s (33.34ns/i)
== 37.153M i/s - 37.163M times in 1.000283s (26.92ns/i)
== Yoda 37.050M i/s - 37.211M times in 1.004342s (26.99ns/i)
Calculating -------------------------------------
zero? 62.340M i/s - 89.976M times in 1.443295s (16.04ns/i)
== 116.231M i/s - 111.458M times in 0.958934s (8.60ns/i)
== Yoda 115.781M i/s - 111.150M times in 0.959999s (8.64ns/i)
Comparison:
==: 116230679.1 i/s
== Yoda: 115780859.2 i/s - 1.00x slower
zero?: 62340445.3 i/s - 1.86x slower
よくみるくるくるアイコン例です
loading_icon = %w(⠾ ⠷ ⠯ ⠟ ⠻ ⠽).cycle
loop do
printf loading_icon.next
sleep 0.1
printf "\b"
end
レス: コンソールで動いたすげえ
【悲報】ぼっち演算子、なぜかnilには例外を出さない模様
false&.foo
#=> NoMethodError: undefined method `foo' for false:FalseClass
true&.foo
#=> NoMethodError: undefined method `foo' for true:TrueClass
""&.foo
#=> NoMethodError: undefined method `foo' for "":String
[]&.foo
#=> NoMethodError: undefined method `foo' for []:Array
nil&.foo
#=> nil
ネストした配列にjoinを実行すると、再帰的に適応される
[ "a", [1, 2, [:x, :y]], "b" ].join("-")
#=> "a-1-2-x-y-b"
Ruby on Rails編
現在のページの場合はリンクを無効化するlink_to
link_to_unless_current
http://railsdoc.com/references/link_to_unless_current
HTML(slimなども含む)&ブラウザ編
lang="ja"だけでもダメな場合がある
ようなので、 <meta http-equiv="content-language" content="ja">
までつけてあげる必要があるっぽい。
Chromeの翻訳しますか?をやんわり避ける方法 - コード日進月歩
Javascript編 (node、vueなども含む!)
iframe内の要素を取得したい場合はこう書く
$("iframe").contents()
jQueryで複数のCSSを一括で当てたい場合はこう書く
const styles = {
"position": "absolute",
"width": "100%",
"top": "0",
"left": "0",
"height": "100%"
}
$("foo").css(styles)
jqueryのonで登録するイベントには名前空間をつけることができる
offする時に便利!
jQuery.fn.onに名前空間をつけることができる - Qiita
Javascriptのソートを信じないでください!w
レス: functionのparamがなかったらstringとしてsortされる
データベース編
良さげなmysqlオプションを学んだ
--skip-lock-tables
テーブルをロックしない
--single-transaction
ダンプを行う前にBEGINステートメントを発行する。内部的にスナップショットを取ってダンプを行うので、DBをロックせずに整合性の取れたダンプを取ることが可能
--quote-names
B名、テーブル名、カラム名などの識別子をバックティック文字で囲む。これらの識別子にMySQLの予約後が含まれていても問題なく動作するようになる
AWS & GCP & Heroku編
AWS Lambda のベストプラクティス
AWS Lambda 関数を使用する際のベストプラクティス - AWS Lambda
Docker & k8s編
k8sで立てたpodのステータスが Evicted のものをすべて削除するとき。
$ kubectl delete po $(ku get pod -o=json | jq '.items[] | select(.status.reason!=null) | select(.status.reason | contains("Evicted")) | .metadata.name' | xargs)
Git & GitHub編
ブランチ名に使える文字
ブランチ名に日本語が使える
何時によくcommitするんだろう?
git log master --date=format:%H --author=XXXX --pretty=format:%ad --since=2016-01-01 | sort | uniq -c
で1日でよくcommitするタイミングを出してくれます。左がcommit数、右が時間。
# 出力例 この場合だと、15時に13commitしてる。
11 13
12 14
13 15
14 16
15 17
16 18
conflictしてるファイル一覧を確認できる
git diff --name-only --diff-filter=U
ブランチを一斉削除
git branch --merged | grep -vE '^\*|master$|develop$' | xargs -I % git branch -d %
ツール編
slack: 特定の文字列でメンションをもらう
slackのPreferencesから特定のテキスト含んでいる場合にメンションを飛ばすようにできる。
Preferences > Notifications から設定できる。
「cat」を使いやすくしたツール「bat」が使いやすいらしい
https://github.com/sharkdp/bat
vscodeを使っている方へ
VSCodeのオススメ拡張機能 24選 (とTipsを少し)
ちなみに、自分がBracket Pair Colorizerを導入しました!
ぼくはatomを使っているんですが、社内のvscode率が高まってきたから乗り換えたほうがいいのかなぁ...悩み中。
考え方&仕組み編
半角スペースは2種類存在する
普段キーボードを叩いて入力されるのはu0020の方、
wysiwygエディタ等は連続したスペースをブラウザに適用するためu00a0( )に変換して表示してくれる
GoogleIMEを使ってる人は、日本語入力モードでU+00A0と打つと予測変換でu00a0のスペースを選択できます。
困ったのは、正規表現で\sを使った時に00a0の方はマッチしないこと。
(言語によるかもですが、rubyとgoはマッチしないようです)
気をつけましょう!
UnicodeのU+0020とU+00A0( )は別物である
なにそれこわい。
おすすめ編
録画好きのための記事を書きました
Chromeのブラウザ内(もしくはデスクトップ)操作をJavaScriptで録画する - Qiita
ヘッドレスブラウザ Chrome + Chromy で操作した内容を録画する - Qiita
編集後記
皆さんお久しぶりです! ずいぶんサボってましたがついに復活です!
突然エンジニアブログに画像がアップロードできなくなったりトラブルが有りまして...
業務の合間にちょろちょろ直していたら不定期まとめが遅れてしまいましたね!
今回も独断と偏見で面白そうなtipsのみざっくりpickupしてご紹介しましたがどうだったですか? tipsファンの皆さんをご満足させることができれば幸いです。
さて、今回は2018/09/01 ~ 2018/10/19で放出されたtipsをまとめてみました。(かなり期間長いな)
期間が長い割に書き上げることを優先したためちょっと内容は短めですが、ご容赦ください!
こんな感じで弊社の開発部はわいわいがやがややっておりますぞい!
雑談こーなー
久々にまとめましたがtips集は人力なのでけっこう大変です。
エンジニアなんだから自動化しろよ! って聞こえてきそう。
でもでも、言い訳をさせてもらうとですよ?
slackで好き勝手にみんな喋れる場所だから、いい意味で規則がないのです。だから自動化はちょっと大変...。
アイディアとしては、 ツイッターにコピペして垂れ流す っていうのもいいかなって思ったけど、かなり社内の業務内容そのままなtipsとかが流れちゃうと結構危険ですよねぇ〜。
社内のインプットを社外へアウトプットするのは難しいものですな。いいアイディアをお持ちの方がいれば、是非ご連絡ください!
一緒に勉強会でもしましょう!
それでは、また!