コピペコードで快適生活

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

Goことはじめ(JSONの取り扱い)

Go

http://gihyo.jp/dev/feature/01/go_4beginners/0004 より学んだことメモ package main import ( "fmt" "log" "encoding/json" ) // // 構造体にタグをつけることでJSON変換時の // ルールを定義することができる // 何も指定しない場合はpublicなフィールド…

goenvインストールメモ

Go

# インストール $ git clone https://github.com/syndbg/goenv.git ~/.goenv # ~/.bash_profile に追記 export GOENV_ROOT="$HOME/.goenv" export PATH="$GOENV_ROOT/bin:$PATH" eval "$(goenv init -)" # 反映 source ~/.bash_profile # 使えるバージョン確…

Goことはじめ3

Go

第3章 型システム―型を用いた安全なプログラミング:はじめてのGo―シンプルな言語仕様,型システム,並行処理|gihyo.jp … 技術評論社 より学んだことメモ。 package main import ( "fmt" ) // // 型の拡張 // 同じ型でも違う意味を持つもの(同じintでもIDを…

geminaboxにgem登録する手順メモ

# 準備 gem install geminabox --no-ri --no-doc # Gemを作る gem build -V ***.gemspec mv ***-0.1.0.gem pkg/. # アップロードする gem inabox ./pkg/***-0.1.0.gem --host http://example.com

Goことはじめ2

Go

第2章 基本文法―覚えやすいコンパクトな言語仕様:はじめてのGo―シンプルな言語仕様,型システム,並行処理|gihyo.jp … 技術評論社 より学んだことメモ。 基本的な文法について package main import ( "fmt" "os" "errors" "log" // f "fmt" -> と記述する…

シェルのtestコマンド

シェルのtestコマンドの理解が怪しかったので、使い方をメモしておく。 #!bin/sh # $?==0 で正常終了 # 数値の比較 ## 1 == 1 test 1 -eq 1; echo $? ## 1 != 2 test 1 -ne 2; echo $? ## 1 < 2 test 1 -lt 2; echo $? ## 2 > 1 test 2 -gt 1; echo $? ## 1 …

Goことはじめ

Go

http://gihyo.jp/dev/feature/01/go_4beginners で学んだことをメモしていく。 はじめに # インストール brew install go # ./bash_profileの設定 export GOROOT=/usr/local/opt/go/libexec export GOPATH=$HOME export PATH=$PATH:$GOROOT/bin:$GOPATH/bin …

ActiveRecord::Base.transactionで並列で同じレコードを扱ったときの動きメモ

排他制御まわりがちゃんとわかっていなかったので整理。 Article.find(1).value # => 1 def inc row = Article.find(1) row.value = row.value + 1 row.save end # 同時並行処理する Thread.new { inc } Thread.new { inc } Article.find(1).value # => 2に…

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

クロス集計を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"> # irbでeach回して処理した後、そのリストを出力させたくない list.each do |row| # 何かしらの処理 end; 0 </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: …