Rubyで配列の中央値(メジアン)を求める

Rubyで中央値(メジアン)を求めるコード

(a.size % 2).zero? ? a[a.size/2 - 1, 2].inject(:+) / 2.0 : a[a.size/2]

動作確認

a = [3, 5, 10, 23, 88]
(a.size % 2).zero? ? a[a.size/2 - 1, 2].inject(:+) / 2.0 : a[a.size/2] # => 10

a = [3, 5, 10, 23, 88, 100]
(a.size % 2).zero? ? a[a.size/2 - 1, 2].inject(:+) / 2.0 : a[a.size/2] # => 16.5

そもそも中央値とは?

wikipediaから引用

中央値(ちゅうおうち、英: median)とは、代表値の一つで、有限個のデータを小さい順に並べたとき中央に位置する値。たとえば5人の人がいるとき、その5人の年齢の中央値は3番目に年寄りな人の年齢である。ただし、データが偶数個の場合は、中央に近い2つの値の算術平均をとる。中央値の事を、メディアン、メジアン、中間値とも呼ぶ。ただし、「中間値の定理」の中間値はこの意味ではない。 中央値 - Wikipedia

Rubyで改行、空白を削除する

文字数を取得する時などに改行や空白文字を削除したい

text = "春はあげぽよ
 
てか、どんどん白くなる山の端らへんが異常に明るくなって、紫の雲が細く風に流されてるの見て、マジパねぇ、ウケる。

夏は神テン

満月がデラヤバなんてあえてウチの口から言うまでもないけど、新月の時だってホタルがダマになって飛んでるのとか見たら超キレイだからマジで。今度スパダチと見にいけって、マジで。でも、ソロとかペアで飛んでるのだって、それはそれで弱々しい光でなんつーかぼっち臭がするし、ウチは好き。わんちゃん雨とか降ったらマジアガる。"

text.length # => 227

text.gsub(/\r\n|\r|\n|\s|\t/, "").length # => 220
.gsub(/\r\n|\r|\n|\s|\t/, "")

改行、空白、タブを置換してます。

content_tagで閉じがないhtmlタグ<br/>や<img/>を出力する?

<br /> を出力したくて

content_tag(:br)

とやったら

<br></br>

と出力されてしまった…

content_tagじゃなくてtagを使うとのこと
なるほどcontentがあるかないかの単純な話だったらしい
tag知らなかった…

結果

無事brタグが出力されました

tag(:br)

<br />

Tagging a string as html safe may be a security risk

RuboCop(0.48.1) で Tagging a string as html safe may be a security risk と怒られた

htmlタグを直書きせずにcontent_tagを使えということらしい↓

# bad
"<p>#{text}</p>".html_safe

# good
content_tag(:p, text)

# bad
out = ""
out << content_tag(:li, "one")
out << content_tag(:li, "two")
out.html_safe

# good
out = []
out << content_tag(:li, "one")
out << content_tag(:li, "two")
safe_join(out)

引用元
Class: RuboCop::Cop::Rails::OutputSafety — Documentation for rubocop (0.41.2)

RailsでHSTS includeSubDomainsを外す方法

Rails5からforce_sslを設定しているHSTSでサブドメインまで対象にされてしまうようで設定から外したい

config/initializers/new_framework_defaults.rb に以下を追加でサブドメインを外すことができます

Rails.application.config.ssl_options = { hsts: { subdomains: false } }

参考

ssl - How can I turn off includeSubDomains for HSTS in rails? - Stack Overflow