u16suzuの blog

u16suzu のブログです。

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

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>…

Rubyで設定系DSLを書いてみた

こちらのスライドを参考にしてRuby で設定系のDSLを書いてみました。 sixeight.hatenablog.com ところどころ、コメントを書いて理解しながら書いてみました。 # 設定系DSL class Awesome class Config attr_accessor :hoge, :fuga # (a) attr_accessor :method …

swift でシングルトンクラスをつくってみる

シングルトンクラスの定義 遅延実行で生成するパターン import Foundation class NetworkErrorAlertControllerManager : NSObject { static var sharedManager: NetworkErrorAlertControllerManager = { return NetworkErrorAlertControllerManager() }() ov…

よく使うクエリパラメータ系のメソッドを使い回せるようにする

ページネーションがあるAPIを作るとき毎回書くのが大変なので共通化した。 base_controller.rb に書いておくと、他のコントローラから使い回せて便利。 def params_page params[:page].try(:to_i).presence || 1 end def params_site_ids params["site_ids"].tr…

自分で作ったクラスで Enumerable モジュールを include して使う

class CatList include Enumerable def initialize(*cats) @cats = cats end def each for v in @cats yield v end end end cats = CatList.new( "mike", "cha", "tora" ) p cats.map(&:upcase) # => ["MIKE", "CHA", "TORA"]

セマンティックバージョニング2.0.0

仮にバージョンを A.B.C としたとき A: メジャーバージョン 後方互換性を持たない機能追加 B: マイナーバージョン 後方互換性を保つ機能追加 C: パッチバージョン 後方互換性を保つバグ修正 参考 セマンティック バージョニング 2.0.0

セッターを定義する

何も代入していないけれどもw class Man def age=(value) p "I am #{value}years old" end end Man.new.age = 3 # => "I am 3years old" Rubyをまたやることになりそうなのでリハビリ中。

あるクラスのインスタンスメソッドの一覧を取得する

class Human def say p "hello" end end p Man.instance_methods(false) # => [:say, :age=] 任意のクラスが include しているモジュール一覧を表示 p Array.included_modules # => [Enumerable, Kernel]

ContainerViewController のスニペット

import UIKit class ParentViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } // コンテナビューコントローラに追加 func addViewController(vc: UIViewController){ self.addChildViewController(vc) vc.view.frame…