u16suzuの blog

日々学んだことのメモブログです。

Classをインスタンス化する時にHashで渡した値でInitializeする

Classをインスタンス化する時にHashで渡した値でInitializeする class Person attr_accessor :name, :age, :address def initialize( hash={}) if block_given? yield( self ) else hash.each do |k, v| public_send("#{k}=", v) if respond_to?("#{k}=") en…

Macの特殊キー

記号 ⌘ Command ⌃ Control ⇧ Shift ⇪ Caps Lock ⎋ ESC ⌥ Option Tab

Hash.newにブロックを渡す

以下の記事を読んで初めて知ったのでメモ。 Ruby で メモ化カッコカリ( #rubytokai 発表メモ) - 名古屋で数学するプログラマ(仮) Hash.new にブロックを渡すことができる。 このブロックはすぐには実行されずに、h["key"] と言う形で参照されたキーがhash…

atomのタブやfuzzy-finderなどのフォントサイズを一括で変更するbash script

仕事でノートPCをモニタにつないだり、ノートPC本体だけで使ったりすることがあり、 atomの編集部分以外のフォントサイズを手軽に一括で変更したくて書いた。 ### change atom font size atom_font() { cd ~/.atom/styles case "$1" in "pc" ) ln -sfv font_…

オブジェクトのパラメーターとメソッドの引き数名が同じ時は、メソッドの引数が優先される

オブジェクトのパラメーターとメソッドの引き数名が同じ時は、メソッドの引数が優先される。 もしも、パラメーターを呼びたい時はselfをつける。 class Foo attr_accessor :name def bar(name) p name # => "aaa" 引数が優先されている p self.name # => "do…

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…