コピペコードで快適生活

明日使えるソースを自分のために

シェルでクロス集計するメモ

クロス集計をBash(とawk)だけで実装した話 より学んだことメモ 処理の流れ 1.必要なカラムの抽出 2.クロス集計の行と列の要素を取り出す。 # クロス集計表の行になる部分を抽出してユニーク化&ソート cat table.csv | cut -f 1 -d , | sort -u > rownam…

初めの方のシェル芸勉強会メモ

初めの方の問題見たらとてもピュアだった。2012年10月27日 Hbstudy#38 ファイルの一括変換 # カレントディレクトリの中からUtilの文字をHogeに変えてDesktopに保存する。 # ※basenameはディレクトリ名を除外したファイル名を返すコマンド grep -r "Util" ./.…

RubyのThreadメモ

まずは超簡単なところから。 n = 1 # この記述に至った時点で非同期で実行開始される t1 = Thread.new do puts "t1 start" puts "t1 n is #{n}" n = 2 sleep 5 puts "t1 end" end t2 = Thread.new do puts "t2 start" sleep 5 puts "t2 n is #{n}" # => 2 ス…

ActiveSupport::CallbacksでRubyクラスにコールバックを差し込む

ActiveRecordじゃなくてもコールバックは使えるんやで。 class Article include ActiveSupport::Callbacks define_callbacks :before_submit set_callback :before_submit, :before, :validation def validation puts 'Check!!!' end def submit puts 'Submi…

第37回シェル芸勉強会メモ

https://b.ueda.tech/?post=20180901_shellgei_37 にて学んだことメモ。 Q1 FizzBuzzのアニメーション seq 100 | gsed '0~3s/.*/Fizz/;0~5s/.*/Buzz/;0~15s/.*/FizzBuzz/' | # 0~3s みたいな書き方で3行ごとに置換を行う gawk '{printf("%08s\n", $1)}' | # …

ActiveRecordのafter_commitが発火するとき発火しないとき

発火する ・なにも変更せずにsaveしても発火する(select文しかないtransactionでcommitがされるため) ・destroyで発火する。self.destroyed?はtrue, self.reloadでActiveRecord::RecordNotFound ・soft_destroyでも発火する。self.soft_destroyed?はtrue (ka…

ndenvを使ってNode.jsをインストールする

ずっとnvm使っていたのだけど、プロジェクトディレクトリ移動するたびに手動でバージョン切り替えるのがさすがに辛くなってきたので、ndenvに乗り換えました。 インストール # clone git clone https://github.com/riywo/ndenv ~/.ndenv # パスを通す

Homebrewのコマンドメモ

ちゃんとわかっていない感あったのでメモ。 ## インストールされたformulaの一覧 brew list ## アンインストール brew uninstall FORMULA_NAME ## 更新のあるformulaを見る brew outdated ## 古いバージョンのformulaを削除 brew cleanup brew cleanup -n # …

第38回҈҈҉҈҈҉シ҈҉ェ҈҉ル҈҉芸҈҉勉҈҉強҈҉会メモ

https://b.ueda.tech/?post=shellgei_38 より学んだことメモ xxd コマンド 対象を16進数でダンプする/16進数から復元する。 pオプションはpostscript形式でダンプするの意味。 # ダンプする echo "ほげほげ" | xxd -p # 復元する echo "ほげほげ" | xxd -p |…

npmでパッケージ公開するまでのコマンド

# npm設定確認 # レジストリのURLも確認できる npm config list # レジストリを変える npm set registry http://npm.example.com npm set registry https://registry.npmjs.org/ # レジストリにユーザを追加 npm adduser --registry http://npm.example.com …

class_evalを使って、classに自由な名前でメソッドを追加

concernに書くとこんな感じか。 # # include ::Logica::DateRangeSearchable # date_range_name_is :validity, :valid # # klass.valid # -> validity_start_at, validity_end_atが期間内のみ取り出す # instance.valid? # -> validity_start_at, validity_e…

macOSのcurlで海外アクセスのチェックをやるときのproxy設定メモ

macOSのcurlで海外アクセスのチェックをやるときのproxy設定メモ HTTPのproxy フリーのproxy情報はこの辺から http://www.freeproxylists.net/ja/ # 設定 PROXY_HOST=xxx.xxx.xxx.xxx PROXY_PORT=xxxx export http_proxy="http://${PROXY_HOST}:${PROXY_PORT…

PostgreSQLでシーケンスの位置を変える

--「テーブル名_カラム名_seq」が名称となる。 -- 確認 SELECT * FROM app_users_id_seq; sequence_name | last_value | start_value | increment_by | max_value | min_value | cache_value | log_cnt | is_cycled | is_called ---------------+-----------…

Javascript覚書

// ゼロパディング // 文字列として0をN個連結して、後ろからN個分取る。 ('0000000000' + userId).slice(-10)

Rubyでたまにしか使わないけど便利なメソッドメモ

備忘のため。随時追加していく。 Ruby # フィールドをもつモックオブジェクトを作る Struct.new(:name, :tel).new('hogeo', '090xxxxxxxx') # => #<struct name="hogeo", tel="090xxxxxxxx"> Rails # 引数の文字列で指定した名前で定数を探す '::MyApp::User'.constantize # => MyApp::User(id: integ</struct>…

DeveloperConsoleに貼って、さっとCORSのチェックをやりたいとき用JS

xhrReq = function(url) { let xhr = new XMLHttpRequest(); xhr.open('GET', url, true); // プリフライト(OPIONSメソッドによる事前確認)をする場合は、 // カスタムヘッダをセットする xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); xhr.…

シェルでbase64のエンコード・デコード

$ echo -n '{"hoge": "fuga"}' | base64 eyJob2dlIjogImZ1Z2EifQ== $ echo -n 'eyJob2dlIjogImZ1Z2EifQ==' | base64 -D {"hoge": "fuga"}

自動ログインするブックマークレット

↓のコードを適宜修正して、ブックマークのURL欄にコピペする。 javascript:(function(){document.querySelector('input[name=login_id]').value = 'LOGIN_ID'; document.querySelector('input[name=password]').value = 'PASSWORD'; document.querySelector(…

prependでクラスメソッドを拡張する

singleton_classにprependすればOK。 class Hoge def self.hogehoge(*args) puts 'hogehoge' end end Hoge.hogehoge # => hogehoge Hoge.singleton_class.prepend Module.new { def hogehoge(*args) super(*args) puts 'extended hogehoge' end } Hoge.hogeh…

複数のサーバで一度にsshコマンドを実行したい

メモ。 HOSTS="host01 host02 host03" for host in ${HOSTS}; do echo $host ssh -t $host <

既存RailsアプリにRspecを入れる

既存RailsアプリにRspecを入れたときのメモ。 インストール Gemfileに追記 group :development, :test do gem 'rspec-rails' gem 'factory_bot_rails' gem 'database_cleaner' end RSpecの設定 必要なファイルが作成される。 bundle install bundle exec rai…

nslookupメモ

使い方 nslookup www.google.com Server: 192.168.135.1 # 問い合わせたDNSサーバのIP(LAN内のDNSサーバ) Address: 192.168.135.1#53 # 上記 + ポート番号 Non-authoritative answer: # キャッシュDNSサーバがレスしたの意味 Name: www.google.com Address: …

Dockerの基本的な使い方メモ

Dockerを触ることになったので、基本的な使い方をメモしておく。 用語 イメージ: コンテナのベースとなるファイル群 コンテナ: イメージから作成されたインスタンスpullできるdockerのイメージはここから確認できる https://hub.docker.com/explore/ 基本的…

PostgreSQLのEXPLAINについて

PostgreSQLで重たいクエリの調査したときのメモ。 EXPLAINについて EXPLAINは問い合わせプランを表示するコマンド。PosgreSQLではSQL実行前に、プランナで問い合わせの実行コストを見積もり、 最小コストの問い合わせプランを算出する(問い合わせの最適化)。…

sidekiq-unique-jobsのunique値ごとの挙動

ちょっと古いけど、sidekiq-unique-jobs v4.0.8のunique値ごとの挙動を確認したのでメモしておく。GitHub - mhenrixon/sidekiq-unique-jobs at v4.0.8 while_executing 同じargsは実行中にならない。 同じargsを実行しようとしたらworkerは待ちになる。後続…

RailsConsoleでSidekiqジョブの状況を見る

運用していると状況確認したいときがあるのでメモ。 ## 実行中ジョブ Sidekiq::Workers.new.each do |process_id, thread_id, job| puts "#{process_id}, #{thread_id}, #{job}" end ## 待ち状態のジョブ Sidekiq::Queue.new("#{QUEUE_NAME}").each do |job|…

ActiveRecordで固定の日時最小値チェックのバリデーションを入れる

# # app/models/concerns/my_app/extend_validation.rb # 複数のフィールドに対して一括でバリデーション設定できるようにするために # バリデーションメソッドを追加するモジュール # module MyApp module ExtendValidation extend ActiveSupport::Concern …

cancancanでActiveRecord::RecordNotFoundを出したくないときのパッチ

module MyApp module CanCan module ControllerResourcePatch def find_resource # もともと定義してあるfind_resourceを呼び出す super rescue ActiveRecord::RecordNotFound => e # エラーさせたくないので握りつぶす end end end end CanCan::ControllerR…

RubyのGrapeメモ

たまにしか使わなくて、よく忘れている書き方をメモ。 随時追加していく。 params :example # enumの値のみ許可 optional :status, { type: String, allow_blank: true, values: User.statuses.keys } }

Rubyのinclude,extend,prepend,Concernの使い方メモ

なんとなく理解が怪しかったので復習をかねて。 includeだけでクラスメソッドとインスタンスメソッドを同時に追加する module MyModule def self.included(base) base.extend(ClassMethods) end module ClassMethods def hogehoge puts 'hogehoge!' end end …