u16suzuの blog

u16suzu のブログです。

MySQLの参照系のインデックスチューニングについて

最近MySQLのインデックスに関する勉強をしているので、それについてまとめたいと思います。 今回参考にした本です。内容が充実しおり、とてもオススメの本です。 Linux-DB システム構築/運用入門 (DB Magazine SELECTION)作者: 松信嘉範出版社/メーカー: 翔…

MySQLのカバリングIndex が効いているかを実験してみる

ダミーのテーブルを作成する CREATE TABLE item ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(10), description VARCHAR(30), price INT UNSIGNED, created_at DATETIME ); Indexをはる CREATE INDEX price_index on item( price ) INSERT INTO item …

まとめてファイル置換する

hoge ディレクトリの中にある.rbファイル中にある文字列 foo を barに置換する。 -i "0" を指定することでバックアップファイルを作らないようになる。 $ find ./hoge -type f -name "*.rb" -print0 | xargs -0 sed -i "" -e "s/foo/bar/g" Redis.new.flusha…

git のエイリアスを2個登録した

git

git add と git commit を同時に行う ga コマンドを追加, "$*" とすることで 以下のようにcomit log をダブルクオーテションで囲まなくてもよくなる。 $ga hoge fuga def git_add_commit(){ zle accept-line git add --all . && git commit -m "$*" } zle -N…

この記事を参考にして、git の diff を綺麗にする設定をした。 qiita.com

ActiveSupportの Array のメソッドを一通り眺めてみる

ActiveSupport の Array の拡張メソッドを一通り眺めてみた extract_options! 引数のオプション部分だけをかえしてくれる. メソッドを定義するときに便利 def options(*args) args.extract_options! end options(1, 2) # => {} options(1, 2, a: :b) # => {:…

学習のためRailsのコードリーディングをした時のmemo

rails と rspec scopeのマージは、以下のようにかくと、paramsの条件分岐が綺麗に書ける. scope = User.where( id: user.id ) scope = scope.where( 'created_at >= ?', params[:date_from].to_date ) if params[:date_from].present? scope = scope.where( …

opensslコマンドについて調べた

RSAの秘密鍵を生成 pemという拡張子にしているが、これはテキストエンコーディングで保存しているということのみを表し、暗号方式とは関係ない openssl ではデフォルトでpem形式で保存される $ openssl genrsa 1024 > private.pem Generating RSA private ke…

ディレクトリの作成と移動を同時に行うコマンド

zsh

function mkcd { mkdir $1 && cd $_ } 参考: blog.tstylestudio.com 全くzshに関係ないけど、fish便利だから、そろそろ仕事でも使いたい。pecoとの連携ができてなかったので、そこが設定できたら使えそう。

DBやKVSの楽観ロックと悲観ロックについて調べた

楽観ロック 参照時にロックをしない 仕組み : バージョンを保持しておき、バージョンが更新されていたら、その後の変更は破棄される 同じリソースへの更新が、頻繁に発生しないことを想定したロック 変更が破棄されるためリトライを考慮した設計にしなければ…

Macでディレクトリにあるファイル内の全ての文字列を置換する

-d を -F に変換する場合 $ grep -Rl '\-d' ./* | xargs sed -i.bak -e 's/\-d/\-F/g'

2016/08/03の日記

このブログ記事に書いてあるスクリプトを読んで、わからないところを調べた。 83億レコードを移行し、日々2,500万レコードのアクセスログをBigQueryに記録している話(インフラ編) | Money Forward Engineers' Blog set -o pipefail bash に set -o pipefai…

2016/8/2(tue)の日記

shell起動時に自動的に指定のディレクトリに移動するようにした。 毎朝仕事を開始する時に、いつも仕事用のディレクトリにcdで移動するのが大変なので書いた。 以下のように .open_directory にディレクトリを指定すると、shell 起動時に移動してくれる。 $ …

2016/8/1(mon)の日記

プロジェクトで使っている bundler で入れたgemの調査をするためのコマンドをbashで書いた。 Ruby 書くときは atom がメインエディタになりつつある。 RubyMineは重いので、コードリーディングの時だけ使っている。 ### bundler でインストールした gem を編…

2016/7/31(Sun)の日記

今日はマクドでRuby script 用のDSLを書いて遊んだ。 仕事でよく使うテスト用のスクリプトなんだけど、実行するタスクを引数で指定できるようになっている。 それをDSLで指定できるようにした。 @argv = [ {env: "pro"}, 'login', 'start' ] @env = "dev" p …

2016/7/28(木)の日記

jbuilderについて extract! # activerecord objectのアトリビュートを指定して書き出し ignore_nil! # このメソッドを書いた後は, nil のkey-valueをjsonに書き出さない. ignore_nil! false でオフにできる. Splat演算子 a, b = *[1,2] # => a = 1, b = 2 *c…

2016/7/27の日記

Rubyのメソッドに関する雑多なメモ << # 右ビットシフト `*2` と同じ意味 >> # 左ビットシフト `/2` と同じ意味 | # 論理和演算子. 0011|0101 => 0111 8.to_s(2) #=> "1000" : 2進数表現の文字列を取得 "0x4d2".hex #=> 1234 : 16進数を10進数に変換. 0xはな…

「Rubyのしくみ」(Ruby Under a Microscope)を読んだ

「Rubyのしくみ」(Ruby Under a Microscope)を読みました。 Rubyのしくみ -Ruby Under a Microscope-作者: Pat Shaughnessy,島田浩二,角谷信太郎出版社/メーカー: オーム社発売日: 2014/11/29メディア: 単行本(ソフトカバー)この商品を含むブログ (4件) を…

KPTふり返りのテンプレート

最近、MTGのファッシリテーションをするようになったので、すぐに使い回せるようにテンプレート化しておく。 スケジュールのメール文フォーマット お疲れ様です。 以下のフォーマットで、KPTふり返りMTGを行います。 もし、KPTに関してご存じない場合、参考資料に目…

cssのパディングとマージン

css

パディングとマージンどっちがどっちかよく忘れるのでメモしておく。 コード <html> <head> <style type="text/css"> div { padding : 10px; /* 要素とボーダーラインのあいだの距離 */ border : 5px solid maroon; /* ボーダーラインの幅 */ margin : 10px; /* ボーダーラインと画面の端の距離 *</style></head></html>…

2つの proc を合成して1つの proc にする

# 2つの proc を合成して1つの proc にする def foo(arg1, arg2) Proc.new do arg1.call arg2.call end end p1 = Proc.new { p 123} p2 = Proc.new { p 456} res = foo( p1, p2 ) res.call # => 123\n456

例外を投げるclosure

() throws ->(String) in と書くと例外を投げるクロージャを定義できる enum MyError : ErrorType { case Hoge } let c = {() throws ->(String) in throw MyError.Hoge } do { try c() } catch { print( "\(__FUNCTION__): L\(__LINE__)") }

Swiftでクラスからインスタンスを生成する

インスタンス化するクラスを定義 class Hoge { required init(){ } class func newInstance()->Hoge { return Hoge.init() } } 呼び出し let hogeClass: Hoge.Type = Hoge.self let hogeObject = hogeClass.init()

Rubyで行列とベクトルの演算

固有ベクトルは任意の行列m を適用した際に,向きが変わらないベクトルのこと require 'matrix' m = Matrix[ [2,1], [1,2] ] v1 = Vector[1, 1] v2 = Vector[1, -1] # v1は m の eigen vecotr p m * v1 # => Vector[3, 3] # v2 is eigen vector of matrix m t…

UIWebView でリンクをクリックしたとき safari で開く

UIWebView でリンクをクリックしたとき safari で開く func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { if(navigationType == UIWebViewNavigationType.LinkClick…

UIView の bounds と frame プロパティについて

サイズはどちらも同じで座標系が異なる bounds : 座標系が自分のビュー基準 frame : 座標系が親ビュー基準 あとで読む frameとboundsの理解をちょっとだけ深める - Qiita [iPhone] UIView の frame と bounds の違い | Sun Limited Mt.

swiftでKVO

監視対象のプロパティに dynamic 修飾子をつける Observer は NSObject を継承している必要がある dynamic var fbNativeAd:FBNativeAd? addObserver(self, forKeyPath: "fbNativeAd", options: [.New, .Old], context: nil) deinit { removeObserver(self, f…

swiftのディープコピー

swift はデフォルトで deep copyになる。 また、引数で受け取ったオブジェクトはletになってて直接加工できない。 そのため、ディープコピーを作ってそれを編集する必要がある。 // swift はデフォルトで deep copyになる let ar = [1,2,3,4] var ar2 = ar ar2.in…

swiftの filter メソッドを使ってみた

0から100の範囲で10で割り切れる値を得る print( (Array<Int>)(0...100).filter({$0 % 10 == 0}) ) // => [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]</int>

swiftのジェネリクスを使ってみる

// ジェネリクス関数 func swapAnyObject<T>(a:T, b:T){ print( a.dynamicType, b.dynamicType) } // ジェネリクス関数その2 // http://qiita.com/mini_house/items/73cefa9612d5c7680d7e より func myRepeat<ItemType>(item: ItemType, times: Int) -> [ItemType]{ var r</itemtype></t>…