コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

AWSにてリソース作成数には上限があるし、緩和しないと作れなくなる

やっているとぶつかる系だけどそういえば書いたことなかったな系メモ

参照元

AWS曰く

AWS アカウントの AWS サービスに対するデフォルトの制限 (クォータとも呼ばれます) を示しています。特に明記されていない限り、制限はリージョンごとに存在します。多くのサービスには、変更できない制限が含まれています。

とのことでこの制限は申請すれば緩和させることはできる

参考リンク

モデルとはなにかを説明する前に読み直したいスライド『モデルとは何であって、何でないのか』

スライド回顧録です

speakerdeck.com

  • モデルという言葉の成り立ち
  • 「解決したい問題領域から必要だと思われる情報を抽出して(逆に不要だと思われる情報を捨て)記号化、可視化したもの」ということの説明

というのが(LT用の資料ということもあり)数枚で説明されている資料ですごくサッと取り出しやすい資料なので、関連リンクとあわせて時折読み返したい

関連リンク

Rubyのblockはrescueで拾えるし、eachの場合は後続処理は実行される

あれ、そうなんだ!というの、原理としてはなんとなくわかるが情報のソースがないのでとりあえずできるよというところまで

環境

$ ruby -v
ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-darwin18]

コード例

def kicker(array)
  vals = array.each_with_object([]).with_index do |(value, result),index|
    result << value / value
  rescue
    p "Error!"
  end

  vals << 10000
  vals
end

p kicker([10,20,30])
p kicker([10,0,20,30])
$ ruby test.rb
[1, 1, 1, 10000]
"Error!"
[1, 1, 1, 10000]

参考リンク

Googleアドマネージャの仕込まれている状況を見るためのコンソールはURLに特定のパラメータをつけると見ることができる

2019年8月時点の公式の見解のうちの一つ。

使いたくなるケース

  • Googleアドマネージャ(旧名 DoubleClickPlatformことDFP)にて配信状況を確認したい
  • Googleアドマネージャの設定が正常にできているかを確認したい

やり方

URLのクエリストリングとして ?google_console=1 を入れると広告の設定を見れる「Google サイト運営者コンソール」 が表示される。サイトや接続元に関して制限があるわけではないのでGoogleアドマネージャを使っているサイトはどこでも見れる。

どこのサイトでもどの部分がアドマネージャを使っているかを可視化できるのでサイトデザインとしてどう考えているかを調べたりするのにも有効。

なお、公式で推奨しているのはJSの手法なので、こちらはあくまでもサブの手法の様子。ただスマホなどで確認する場合はこちらのほうが手段としては楽。

参考サイト

Rubyで 0 を 判定するなら zero? のほうがスマート

若干ポエム寄りな話。

環境

$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin18]

ドキュメント曰く

自身がゼロの時、trueを返します。そうでない場合は false を返します。 - instance method Numeric#zero? (Ruby 2.6.0)

使う利点

  • if a == 0 よりも if a.zero? のほうが見え方がスマート
  • そもそもNumericなので数値以外に使うとExceptionを発行するので文字列が変数に混入するなどに気づきやすい
  • 数値であることを明確にできるので後続処理が書きやすい

関連リンク

ActiveSupportにはdate型に対してその日の範囲を作るall_dayというメソッドがある

前にまとめたけど、こんなんのもあるのかというメモ

環境

$ bin/rails --version
Rails 5.2.2

やり方

all_dayメソッドを使うだけ

date = "2019-08-17".to_date
# => Sat, 17 Aug 2019

date.all_day
# => Sat, 17 Aug 2019 00:00:00 UTC +00:00..Sat, 17 Aug 2019 23:59:59 UTC +00:00

使い所

例えばActiveRecordで範囲計算をするとき、date型をうっかり入れてしまうと時間情報が欠落してしまうので、上手く行かない場合がある。 その場合は allday をつかって範囲をとってあげるといい

例えばこんなUserがあって

User.last.created_at
#  User Load (0.3ms)  SELECT  `users`.* FROM `users` ORDER BY `users`.`id` DESC LIMIT 1
#=> Sat, 17 Aug 2019 07:43:19 UTC +00:00

date型でwhere文を作るとうまくいかない

date = "2019-08-17".to_date
# => Sat, 17 Aug 2019

User.where("created_at <= ?",date).pluck(:id)
#   (0.3ms)  SELECT `users`.`id` FROM `users` WHERE (created_at <= '2019-08-17')
=> []

そのため、all_dayを使ったほうが確実に取れる

User.where(created_at: date.all_day).pluck(:id)
#   (2.2ms)  SELECT `users`.`id` FROM `users` WHERE `users`.`created_at` BETWEEN '2019-08-17 00:00:00' AND '2019-08-17 23:59:59'
#=> [5]

参考リンク

使い捨てのスクリプトの置き場の名前のはoneshotがよさそう

よく名付けに困るので情報的にありがたい話、ruby-jpよりの備忘メモ。

話のはじまり

Railsワンオフスクリプトを置く場合の置き場はどこか』

出てきた意見

  • lib/tasks/oneshot/nanika.rake
  • bin/【使い捨てであることが分かる名前】/
  • script/【使い捨てであることが分かる名前】/
  • script/oneshot/

などの意見が出てきておりました。

個人的な意見

やり取りの中でもあったんですが

  • ディレクトリでわける
  • 一回こっきりだとわかる
  • rubocopの対象外としたい
  • bin配下はちょっと領域違うので分けたい

などがあったので script/oneshot が結構良さそうだなと思ったので、gem含めて布教して行きたくなった所存

参考リンク