コピペコードで快適生活

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

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 …

screenコマンドメモ

本番サーバで手動でバッチをまわしたけど、sshのセッションが切れて「あぁぁぁぁ」って、状況にしたくないときとかに使う。 セッションを作る screen デタッチする <ctrl> + <a> おしてから d セッション一覧 screen -ls アタッチする screen -r screen -r セッション</a></ctrl>…

package.jsonで読み込み先を指定してインストール

たまにしか使わなくてよく忘れるのでメモ。 リポジトリ向ける { "name": "app", "version": "0.0.1", "description": "app", "author": "kinosuke", "dependencies": { "common": "git+ssh://git@github.com:account/rep.git#branch" } } ローカル向ける { "…

GNU版のコマンドセットをMacに入れておく

メモ $ brew install coreutils $ brew install gnu-sed $ brew install gawk $ brew tap homebrew/dupes $ brew install homebrew/dupes/grep 第29回シェル芸勉強会:福岡サテライト : ATND より転載

Rubyで外からプライベート変数にアクセスする

# プライベート変数の定義状況を確認する obj.instance_variable_defined?('@raw') # プライベート変数にアクセス obj.instance_variable_get('@raw')

SJISのCSVからシェルで集計するまでの流れ

CSVのデータを集計を、シェルでさくっと終わらせたいときのためのメモです。 まずは文字コードを変換 だいたいCSVはSJISであることが多いので、シェルで正しく処理できるようにUTF-8に変換します。 # 使える文字コード一覧 iconv -l # f(from)の文字コード #…

iTerm2ショートカットメモ

cmd + Enter フルスクリーン表示cmd + d 縦分割。cmd + shift + d 横分割。参考 iTerm2で外せないショートカットキー一覧 iTerm2ショートカット備忘録

Redisへの負荷を分散するためにtwemproxyを使ってシャーディングする

概要 Redis負荷分散のために前段にプロキシ(twemproxy)を配置/運用した内容について記載します。 twemproxyはコンシステントハッシュを使用してシャーディング(キーの分散)を実現します。 なお、twemproxy詳細については https://github.com/twitter/twempro…

zipコマンドメモ

# zip圧縮 zip -r filename.zip fileDir # zip圧縮(パスワード) zip -re filename.zip fileDir # zip解凍 unzip filename.zip

SublimeTextで設定したことメモ

随時追加 ¥(円)マークで\バックスラッシュを入力 Sublime Text 2 -> Preferences -> Keybindings - Userでキーマップの設定画面を開き、下記の行を追加する。 { "keys": ["\u00a5"], "command": "insert", "args": {"characters": "\\"}}参考にさせていただ…