IT分からんわ~_~;

IT色々お勉強中のブログ

Ruby

ファイルの改行コードを変更して保存

rubyでcsvファイル読み込んで処理をしようとしたらエラーになったので `block (2 levels) in shift': Unquoted fields do not allow \r or \n (line 1). (CSV::MalformedCSVError) 改行コードが悪いっぽい vimで開いて改行コード変更 Windowsの形式を指定。 …

rbenvのruby versionを最新にする

$ brew update && brew upgrade ruby-build

elastic search スコアリング

ElasticSearchはsortが入っているとスコア順ソートにならない sortをクエリから抜くとスコア順ソートになる function_scoreを使うとドキュメントに対して自分でスコアをつけることができる 以下スコアリング設定方法 field_value_factor 特定のフィールドに…

VSCodeに入れたruby用のプラグイン

marketplace.visualstudio.com marketplace.visualstudio.com marketplace.visualstudio.com marketplace.visualstudio.com marketplace.visualstudio.com marketplace.visualstudio.com marketplace.visualstudio.com

Railsアプリの循環的複雑度を測定方法

Railsアプリの循環的複雑度を測定 そのまんま Gemfile gem 'metric_fu' spec/spec_helper.rb require 'factory_bot_rails' if ENV['RUN_COVERAGE'] == 'true' require 'simplecov' require 'metric_fu/metrics/rcov/simplecov_formatter' SimpleCov.formatte…

rails X-CSRF-TOKENからraw_token(毎回変わらないtoken)を取り出す方法

rails X-CSRF-TOKENからraw_token(毎回変わらないtoken)を取り出す方法 純粋に逆から実行していけば取れる 逆xorのメソッド作っておく def xor_byte_strings(s1, s2) # :doc: s2_bytes = s2.bytes s1.each_byte.with_index { |c1, i| s2_bytes[i] ^= c1 } …

rubyでFizzBuzzとか素数とか何となくやってみ

オーソドックスにこんな感じ class Hoge (1..100).each do |i| if i % 15 == 0 puts "FizzBuzz" elsif i % 3 == 0 puts "Fizz" elsif i % 5 == 0 puts "Buzz" else puts i end end end テストしやすくするにはこんな感じ class Hoge def fizzbuzz(i) i % 15 …

Railsで ActiveRecord::LockWaitTimeoutエラーが出た時

Railsで ActiveRecord::LockWaitTimeoutエラーが出た時 以下エラーが出た時 ActiveRecord::LockWaitTimeout: Mysql2::Error::TimeoutError: Lock wait timeout exceeded; try restarting mysqlがロックされている mysql -u root -p -h hoge -p mysqlに入って…

SPAのAPIのCSRF保護

翻訳自分で読むため、許可は取ってない blog.eq8.eu 用語定義 SPAとはJavascriptのフレームワーク(vueとか)でページをレンダリングし、残りの通信はバックエンドapi(railsとか)でする事 ユーザーがアクティブなセッションで認証されているサーバーにユーザ…

Surrogate Pair(取り敢えず入れたくない)

mysqlでutf8mb4の文字コードが入ってるくそDBに対してどう対応するか 文字コードが変えられない残念な人のrails対応 サロゲートペア拒否 validates :text, length: { maximum: CONTENTS::CAP::LONG::TEXT }, format: { without: /[\u{10000}-\u{10FFFF}]/,

Rails デフォルトのReferrer-Policyが変わった件について

Referrer-Policyとはどんなreferrerを返すか決めたポリシーのこと developer.mozilla.org デフォルトのポリシーはno-referrer-when-downgrade らしい - セキュリティレベルが同一の場合はそのままreferrer送る Railsでなぜかreferrerが切られて送られるので…

changed?メソッドsaved_change_to_へ

rails5.1から title_changed? ↓ saved_change_to_title? title_was ↓ title_before_last_save に変わった Deprecate the behavior of AR::Dirty inside of after_(create|update|save) callbacks by sgrif · Pull Request #25337 · rails/rails · GitHub 変…

ruby find_each each map違い

eachはSQL的にLIMITをつけずに全件メモリに確保。 find_eachはSQL的にLIMITをつけてデフォルトでは1000件ずつメモリに確保。 mapメソッドはブロックの返り値を集めた新しい配列を作成 ※ちなみにattributes、assign_attributesは多分一緒?

コードの可視性をよくするには

books.google.co.jp medium.com gihyo.jp

rspec高速化parallel_testsを試す

先ずはローカルで実行 dockerのコア数確認 cat /proc/cpuinfo | grep processor processor : 0 processor : 1 processor : 2 processor : 3 コア数分database準備 bundle exec rake parallel:create[4] table準備 bundle exec rake parallel:prepare seedが…

同じテーブルを親子関係にしちゃダメな理由

http://shirusu-ni-tarazu.hatenablog.jp/entry/2012/11/04/173742 不要なカラムが増えすぎちゃうから そもそもrailsで扱いづらい、nested使いづらくなる パフォーマンスがどうなのかは分からない 一応無理やりできるっぽい、おすすめしない 【Rails】has_ma…

rails dm 覚書

service mesh 組織が大きくなっても速いサイクルで開発できる kurbanetesと関係あり サービス同士を繋げる 型と実践 観察できるのは結果だけ こうゆう型をやって結果が出たと説明すると良い 具体的題材があると良い 定量評価大事 fintech 少人数、リモートワ…

マジックコメントでRubyの最適化をする Ruby Optimization with One Magic Comment

Ruby Optimization with One Magic Comment ソフトウェアのパフォーマンスの最適化は簡単です:少ないことをする方法を見つける。 Rubyは遅いという評判があります。その印象は10年前からですが、主要な犯罪者の1人はガベージコレクタです。 これは、gabage…

RubyGemsの複数の脆弱性 Multiple vulnerabilities in RubyGems

Multiple vulnerabilities in RubyGems Rubyに入っているRubyGemsには、複数の脆弱性が存在します。それはRubyGemsの公式ブログで報告されています。 詳細 次の脆弱性が報告されています。 ルート以外のシンボリックリンクされたベースディレクトリに書き込…

How Fast is Ruby 2.5.0?

engineering.appfolio.com 11月には、Ruby 2.5.0プレビュー1の速度結果を掲載しました。 Ruby 2.4よりはるかに高速でしたが、これは少し失望しました。 しかし、1つの非常に重要なパフォーマンスパッチが終了する前にリリースしたため、最終的な速度に大きな…

rubocopとの奮闘記録 途中

Use a guard clause instead of wrapping the code inside a conditional expression. 条件分岐のネストが深くなるのはダメ bad def hoge if boge? || kuzu? 'sine' end end good def hoge 'sine' if boge? || kuzu? end Don't use parentheses around the c…

Ruby on RailsによるJSON APIのシリアライズの高速化

英訳 Ruby on Railsアプリケーション向けの高速 JSON API gemのオープンソース・リリースを発表します。 Introduction 高速JSONAPIは、Active Model Serializer(AMS)が提供する主要な機能をすべて提供するとともに、 AMSよりも25倍高速というベンチマーク…

本当にインスタンス変数ダメなの?

ameblo.jp Ruby on Railsでcontrollerがインスタンス変数を持つ理由 - Qiita techracho.bpsinc.jp qiita.com

rails4からrails5にあげる

qiita.com こいつを参照してアップグレード、書いてなくてハマった部分 rubyのバージョンアップ、rbenv使ってたので最新にしてから2.4系取得 4.2.6飛ばして直接5にあげたので rails app:update を実行コマンド4と変わってるので注意 rails sをすると以下の…

Rails 5.2.0 beta: Active Storage, Redis Cache Store, HTTP/2 Early Hints, CSP, Credentials

英訳しただけ weblog.rubyonrails.org Railsのアップデートを扱うのが難かしいです。 利用できる良いプラグインがたくさんありましたが、フレームワーク自体に組み込むのが遅くなりました。 だから今できました! Rails 5.2の新しいActive Storageフレームワ…

rails 呼び出し先を確認

呼び出し先を確認 params[:controller] params[:action] caller_locations(1).first.label pry lsはオブジェクトのメソッドや、変数の表示 find-methodはメソッドを検索してくれます。 github.com

ActiveRecord忘れるので覚書

saveメソッドは、保存できない場合falseを返します。 save!メソッドは、保存できない場合例外ActiveRecord::RecordInvalidが発生します。 カラム名_changed?でそのカラムが変更されたか分かります。 model.changes {“report”=>[“こんばんわ報告”, “こんばん…

よくあるgem libv8とtherubyracerのインストールでエラーになるやつ

An error occurred while installing libv8 (3.16.14.7), and Bundler cannot continue. libv8はjavascript v8の何からしい bundle config build.libv8 --with-system-v8 こうするとlibv8はインストールできるがtherubyracerでエラー An error occurred whil…

rails db index名長すぎて怒られる

index名長すぎて怒れれたので以下のようにnameを指定してみる def change create_table :pogehoge_members_permissions do |t| t.references :pogehoge_member, index: true, foreign_key: true t.references :pogehoge_member_permission, index: true, nam…

rake taskの作り方

rake taskの作り方、何度やってもアホなので忘れてしまうのでメモ rails g task hogehoges taskできるので処理を追加 desc は説明 PogeNewsのpoge_idを一括更新 namespace :hogehoges do desc "hogehoges migration" task migrate_all: :environment do doma…