dogwood008の開発メモ!

最近のマイブームは機械学習, Ruby on Rails。中でも機械学習を使った金融商品の自動取引に興味があります。

2022-06-01から1ヶ月間の記事一覧

今日はスキップします、、、

ちょっと腹痛

【Ruby, Python, JS】mapのそれぞれの言語の違い

Ruby Enumerable#map { |item| ... } -> [object] 配列等のオブジェクトに対し、mapメソッドを呼ぶ。Arrayが返るが、Enumerable#lazyを使って下記のように書けば、遅延評価することもできる。 val = (1..99999999).lazy.map { |i| i.to_s } => #<Enumerator::Lazy: ...> val.to_a # </enumerator::lazy:>…

【Ruby】「最低〜以上の数」を出すには、maxを使う

要旨 # 10以上の数(=最低で10)が欲しい場合 [1] pry(main)> [3, 10].max => 10 [2] pry(main)> [15, 10].max => 15 関連 blog.dogwood008.com

【Ruby】「〜を超えない数」を出すには、minを使う

要旨 # 10を超えない数(=最高で10)が欲しい場合 [1] pry(main)> [3, 10].min => 3 [2] pry(main)> [15, 10].min => 10

【Ruby】ブロックの中で特定のメソッドを呼ぶだけであれば、省略記法 & がある

要旨 (0..10).to_a.map(&:to_s) => ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] 詳細 「Proc展開」 "Proc coercion" 等の名前で呼ばれていることがあるが、特定の呼び名は決まっていないようだ。 参考 docs.ruby-lang.org

【Ruby】p だけで出力できる

要旨 [1] pry(main)> p 'test' "test" => "test" 詳細 手っ取り早く表示させるのに便利。 参考 docs.ruby-lang.org

【JavaScript】console.log の他にも、console.warn や console.error がある

要旨 console.log('log') console.warn('warn') console.error('error') それぞれの見た目 詳細 主要なブラウザは、全て対応している。 console.log() では埋もれてしまうくらい沢山の出力がある際、特定の出力を目立たせる時に便利。 参考 developer.mozill…

【EKS】502が出る原因の一つ:ACMの証明書のARNが間違い

要旨 背景 用語 詳細 要旨 AWS Load Balancer Controller で指定するACMのARNが誤っていると、構成によっては502が返る。 これは、ALBのホスト名に対し直接httpsで繋ぎに行くと、ブラウザのアドレスバーからたどれる証明書を見ることで確認できる。 背景 Rou…

目がバグってる

左目が開かないので、今日も休みます。。。

今日も大事を取ってお休みします

昨日は熱があったけど、今日は下がった!明日からは普段通り!

本日体調不良につき、お休みします🙇‍♀️

コロナではなさそう。

【Ruby】正規表現マッチには、^ と $ ではなく \A と \z を使おう

要旨 ^ と $ の場合 [1] pry(main)> regex = /^https:\/\/.+$/ => /^https:\/\/.+$/ [2] pry(main)> 'javascript:exploitcode() /* https://safesite.example.com */'.scan(regex) => ["https://safesite.example.com"] rubular.com \A と \z の場合 [3] pry…

【Python】ロガーとハンドラをログレベルで制御して、表示のオンオフを管理する

要旨 とりあえずここに書いてあることを真似しておけばOK。 詳細 詳細はまた別の日に記載するとして、ひとまずコードだけを置いておく。個人的には非常に便利に使用しているので、きちんと使用方法やTipsを話をまとめ直したい。 import sys from logging imp…

【Ruby】Object#yield_selfとObject#then

要旨 # カレントユーザに所属する最新のコンテンツについて、 # 公開済みならそのタイトルを、未公開なら「(下書き)」を返す latest_title = current_user.contents.last.then { |content| content.published? ? c.title : '(下書き)' } 詳細 Object#yie…

【Python】DataFrameを全て特定の型としてパースする

要旨 import pandas as pd df = pd.DataFrame(some_list).astype(int) 詳細 DataFrame.astype(type) で、好みの型に変換できる。 ただし、 timezone-naive な型(タイムゾーンが付加されていない)を timezone-aware な型(タイムゾーンが付加されている)へ…

【ActiveRecord】ActiveModel::Model#allはやめておいた方が良い

要旨 find_each を使おう。 batch_size を指定すれば、一度に取得するレコード数を制限できる。 Model.find_each(batch_size: 100) do |model| ~~~ end 詳細 #all は、一度に全てのレコードを取得するので、まずデータベースに負荷がかかってしまう。さらに…

【Python】Pythonの三項演算子は独特

概要 # Python variable = 'Trueの時の値' if condition else 'Falseの時の値' 詳細 RubyやJavaScriptだとこんな感じ。 # Ruby or JavaScript variable = condition ? 'Trueの時の値' : 'Falseの時の値' ちなみに、三項演算子は英語で Ternary operator とい…

【Nuxt】asyncDataとfetchの用途の違い

背景 asyncDataもfetchも、どちらも非同期にデータを外部サーバへ取りに行く処理を定義するための関数である。どちらも似たような処理ができるものの、2つ用意されているという事はそれぞれに異なる用途がある事を示す。 ここではCSR (Client-Side Rendering…

【Shell】変数が未定義の時、エラーを出して止めるには ${VAR_NAME?}

要旨 $ export SOOME_VALUE=abcde $ echo ${SOME_VALUE?} sh: SOME_VALUE: parameter null or not set SOME_VALUE を定義したつもりで、できていないときに気付くことができる。 詳細 変数名の後ろに ? を付けると、その変数が定義されていないときにエラー…

【JavaScript】オブジェクト同士の比較:{} === {} は false

概要 {} === {} // => false 詳細 JavaScriptでの比較は、落とし穴が多い。詳しくは参考に挙げたページを見てもらえるとわかるが、 +0 === -0 が false になったりと良く知っていないとハマりがちである。 ではどうやって object 同士を比較すれば良いか、と…

【Ruby】Object#tapのすすめ

要旨 user_id = params[:user_id].tap { |uid| p User.find(uid).name } contents = Content.made_by(user_id) ... 詳細 Object#tap は self 自身を返す。なので、ちょっと中身を覗いたりするのに便利。上記の例で言えば、 uid に self すなわち params[:use…

【Ruby】文字列をメソッド名として実行する

要旨 method('some_method').call(arg1, arg2) 詳細 methodに String, Symbol を渡すと、 Method オブジェクトが返る。これに対して Method#call を呼ぶと、そのメソッドを実際に呼ぶ事ができる。 呼びたいメソッドに引数を渡したい場合、 call(arg1, arg2, …

【Ruby】Nillableな変数を引数として受け得るなら、Object#to_sしておけば色々と便利

概要 変数に対してメソッドチェインの途中で String#capitalize 等の String クラスのメソッドが挟まる場合、変数の初期段階で Object#to_s を読んでおくと不用意に Nil#some_method が出てしまうことを回避できる。 詳細 Object#to_s は、 Object が nil の…

【Ruby】Array#filter と Array#map を組み合わせて使うなら、 Array#filter_map というメソッドがあるよ

要旨 「3の倍数と3のつく数字」だけを String に変換した Array<String> を得る方法: (1..100).filter_map { |i| i.to_s if i % 3 == 0 || i.to_s.include?('3') }.to_a # => ["3", "6", "9", "12", "13", "15", "18", # "21", "23", "24", "27", "30", "31", "32",</string>…

【Ruby, Active Support】Array#include?(Object) もあるが、 Object#in?(Array) もある

概要 %w[a b c d e].include?('c') == 'c'.in?(%w[a b c d e]) 詳細 Array#include? Ruby 標準のメソッド。一方、 Object#in? は Active Supportを require すると使えるようになるメソッド。 ただし、 Active Support全体を require する必要はなく、下記の…

【Ruby】Ruby 3.2でWebAssemblyのサポートが始まる

www.ruby-lang.org ブラウザでRubyが動く時代が来る…のか?

【Shell】tail -f で随時書き込まれる内容を表示できるが、less +F でもできる

要旨 less +F も tail -f も、基本的な動作は同じ。 その動作は、監視対象のファイルに追加書き込みがあった場合、その内容を随時標準出力(ほとんどの場合画面上)に出力し続けるというもの。 ただし、 less +F は通常の less と変わらない動作モードへ変更…

【Shell】一気に深いパスのディレクトリを掘るには、mkdir -p

要旨 下記のように -p オプションを付けると、その深さまで必要に応じてディレクトリを掘ってくれる。 mkdir -p /path/to/the/directory/you/want なお、既に存在する場合も終了コードが0となり、正常終了扱いになる。 詳細 これ以上書くことはあまりない。R…

【GTM】Google Tag Managerは、任意のHTMLを配信できる

Google Tag Manager (GTM) は、Google Analytics のトラッキングコードを配信する目的で、良く使用される事が多い。しかし、その他の使い方として、任意のHTMLを配信することもできる。もちろん、<script></script>で囲めばJavaScript (JS)を配信することもできる。 やり方は…

【Ruby】Hash#fetchがデフォルト値を取る時、ブロックを与える方がパフォーマンスが良い

要旨 ブロックを使うのがおすすめ。 詳細 Hash#fetch は、Hashに指定したKeyが存在する際に、そのValueを返すメソッドである。 このメソッドは、指定したKeyが存在しなかった際、デフォルト値を返すことができる。その際、デフォルト値の与え方は下記の2通り…