u16suzuの blog

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

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…

開発時のみ実行するコードを実現するマクロ

微妙に objc の時と変わった。 毎回、手でやるのがたいへんな画面操作を、自動でやりたいときなどに、この中に組み込んでいたりする。 #if DEBUG // こんなかんじで、 画面遷移を自動でさせちゃう。 let vc = EntryViewController.instantiateFromStoryboard() vc.e…

swiftのコピペコード置き場

UILabel 開発中のデバッグでたまにコードで置いちゃう。 let label = UILabel.init(frame: CGRectMake(0, 100, 0, 0)) label.text = "Test Label" label.sizeToFit() view.addSubview(label) イニシャライザの UILabel.init(frame: frame) は UILabel(frame: …

Swift で enumを定義する

以下のように enum で環境を定義して、そこにAPIのBase URLを持たせることをよくする。 enum Env: Int { case Local case Staging case Production func baseURL() -> String { switch(self) { case .Local: return "http://localhost:3000" case .Staging: re…

swiftでテーブルビューの delegate と datasource を書く

// MARK: - UITableViewDelegate func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { tableView.deselectRowAtIndexPath(indexPath, animated: true) } // MARK: - UITableViewDataSource func tableView(tableView…

ES6について WebDB Press でざっと斜め読みした var ではなく let を使うことでブロックスコープを使える for loop でも let を使うと良い 関数定義にアロー演算子を使えるようになった クラスが使えるようになった constで定数定義できる

会社の人と飲んだ 仕事を早めに切り終えて, 会社の同僚5人と久しぶりに飲みに行った。 自然と話題は会社のことや仕事のことになった。 普段なかなか話せないような、 思っていることをざっくばらんと話せる場があることはとてもいいことだ。 冷や汁を初めて作っ…

今日は rake db 系のコードを読んでみた。 いつもお世話になっているコマンドなので, 内部の処理をあまり理解せずに使っていることに違和感を感じていた。 とくにいくつか,名前がにていて何が異なるのかがわからないコマンドがいくつかあった。 rake db 系のコ…

今日も Rails Guides を少し読み進めた。 Railsが提供している楽観的ロックについて。 楽観的ロックは複数の異なるプロセスが1つのレコードを同時に編集することを許可する。 そして,レースコンディションが起きたとき ActiveRecord::StaleObjectError を投げる…

今日もコツコツと Rails Guide を読んでいる。 keyword でgroup by して,それぞれの個数を求める。 Trend.group("keyword").count 4日連続で何かしらの勉強ができている。 いいかんじ。 ただ、寝不足でめっちゃ眠いですね!

where メソッドに between句を range で指定する

今 Rails Guides の ActiveRecordのところを読んでいる。 Hashで range を指定することで, between 句が書ける事を知った。 Client.where(:created_at => (Time.now.midnight - 1.day)..Time.now.midnight)

はてぶをスクレイピングして遊んだ

今日は nokogiriを使って, はてなブックマークのプログラミングカテゴリをスクレイピングしてみた.

たまにはRailsのIssueを読んでみる

今日はこのIssueを読んでみた ActionController::Parameters#== does not works as expected · Issue #21032 · rails/rails · GitHub hash = { foo: :bar } params = ActionController::Parameters.new(hash) params == hash #returns false あるHashから生…

おすすめのログ系コードスニペット

// @""をはじめから入力してある NSLog NSLog(@"%@", <#object#> ); // メソッド名と行数を表示 NSLog(@"Function: %s, Line: %d", __PRETTY_FUNCTION__, __LINE__ ); // コールスタックを表示 NSLog(@"%@", [NSThread callStackSymbols]);

画面タップでキーボードを隠す

ios

viewDidload あたりに以下を追加 // 背景をタップしたら、キーボードを隠す UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; [self.view addGestureRecognizer:gesture…

UIScrollViewのコンテントオフセットとコンテントインセットについて

公式ドキュメントによると コンテントオフセット contentOffset The point at which the origin of the content view is offset from the origin of the scroll view. あらかじめxポイントスクロールした状態にしておく時に使う。 offset の意味は埋め合わせ、…

正規表現による検索

// 正規表現オブジェクトを作成 NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:@"reg_exp" options:NSRegularExpressionCaseInsensitive error:nil]; NSString *targetString = @"target string" // 検索実…

デバッグ用のマクロ

iOS

#ifdef DEBUG #define DLog(fmt, ...) NSLog((@"%s:%d\n " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); #else #define DLog(...) #endif