-
自分のコーディングスタイルを公開してみた
Tuesday, January 17, 2017
普段自分がどうプログラム言語を書いているのが整理しつつ、こういう書き方していますというのを、 Githubのリポジトリ作って公開してみました。 my-styleguide …
-
PDFGeneratorを1.1.4にアップデートしました。
Sunday, April 3, 2016
遅れましたが、Xcode7.3、Swift2.2に対応した PDFGenerator 1.1.4をリリースしました。 PDFGenerator …
-
PDFGeneratorを1.1.3にアップデートしました!
Thursday, March 24, 2016
今日、PDFGeneratorを1.1.2から 1.1.3 にアップデートしました! PDFGenerator …
-
SNSShareをv1.0.0にアップデートしました
Friday, March 11, 2016
最近はちょこちょこと前に作ったライブラリの改修をしたり、TravisCIやHoundCIを導入したりしています。 それでずっとやろうと思って後回しにしていたライブラリの改修をして、無事、アップデートしました。 SNSShare …
-
`git remote add upstream`を楽にする
Friday, March 4, 2016
最近他の方のリポジトリをforkして、remoteにoriginとは別に upstream としてfork元のリポジトリをセットすることが多く、 git remote add upstream git@github.com:<fork元user/fork元リポジトリ> みたいに追加することが多いのですが、毎回これを打つのが面倒だったので、 “自分のuser名/リポジトリ名” だけで、 upstream を設定するスクリプトを書いてみました。 …
-
PDFGeneratorをv1.1.1にアップデートしました!
Sunday, February 28, 2016
先日の勉強会の間に、PDFGeneratorをv1.1.1にアップデートしました!という事後報告を。 こんなに継続して開発してるのは初めてですし、使ってくれてる人が居て、issue をくれる人がいるというのは、 本当に感謝しないとなあと思っています。 今回は1.1→1.1.1へのマイナーアップデートです。 何を修正したのか 今回は、 issue/13 の内容を修正した形になります。具体的には、 UITableView(おそらくUIScrollView,UICollectionViewでも)で、 contentInset が設定されていると、上手く描画されない (section headerとかの位置がinset分ズレたりする) といったものでした。最初普通にUITableViewControllerを作って試したものの再現できず、 contentOffset をいじっても再現できずで、 たまたま contentInset をいじったら再現が取れて、、と、再現までに時間がかかってしまいました>< どう修正したか UIScrollViewを描画する前に、一度 frame の originの値、 contentOffset の値を0にリセットをかけるので、それと併せて contentInset もリセットをかけるようにしました。 まずはこんな感じで、UIScrollViewにprivateな extension を用意して、、 private extension UIScrollView { typealias TempInfo = (frame: CGRect, offset: CGPoint, inset: UIEdgeInsets) var tempInfo: TempInfo { return (self.frame,self.contentOffset,self.contentInset) } func resetInfoForRender() { self.contentOffset = CGPointZero self.contentInset = UIEdgeInsetsZero self.frame = CGRect(origin: CGPointZero, size: self.…
-
Travisでcarthageを使う場合
Thursday, February 25, 2016
travis ciを使って、CarthageのビルドチェックやReleaseにframework.zipを貼り付ける場合に、 before_install: - brew update - brew install carthage といった感じに書くのですが、どうやら最近のtravis ciのbrew上には最初からCarthageが入っているらしく、 brew install carthageのところでコケてしまいます。 なので、brew install carthage を削除すればいい…のですが、必ずしもcarthageのバージョンが最新とも限らないので、以下のようにして、最新のものを使うようにします、 before_install: - brew update - brew unlink carthage - brew install carthage 一度unlinkすれば、新しい物をダウンロードできるようです。
-
キーボードの「次へ」を押して、次のTextField,TextViewに移動する処理を簡単にしたFormChangeableを作ってみた
Saturday, February 20, 2016
ずっと構想はあったものの、うまく形にできずに早2ヶ月経ってしまったのですが、ようやく形にできたので公開してみます。 sgr-ksmt/FormChangeable …
-
travisで特定のブランチ/タグだけ実行するようにする
Friday, February 19, 2016
最近TravisCIを使うようになったのですが、 デフォルトのままだと全てのブランチのpushやPRに反応してしまうので、 特定のブランチとタグ にだけ反応するようにしました。 ちなみにTravisCI上でも設定はできますが、こちらは全てのブランチのpush/PRに対して実行するしないを決めるものなので、今回したかったことと違いました。 …
-
EnhancedAutoreleasePoolを作成しました。
Sunday, February 14, 2016
以前記事にしたautoreleasepoolから例外を投げられるようにするを更に使いやすい形にして、 sgr-ksmt/EnhancedAutoreleasePool として公開しました! 前回紹介したtryが可能になるものに加えて、autoreleasepool()内で値を返すことができようにし、更にtry可能なautoreleasepool()も準備しました。 定義としてはこんな感じです。 public func autoreleasepool(@noescape code: () throws -> ()) rethrows public func autoreleasepool<V>(@noescape code: () throws -> V?) rethrows -> V? public func autoreleasepool<V>(@noescape code: () throws -> V) rethrows -> V これで、以下の様な書き方もできます。 let value = autoreleasepool { doHighPressureMemoryTask() return "value" } autoreleasepool()の機能により局所的にメモリの圧迫を抑えつつ、必要な値を返戻することができます。 次回あたりに、あまり詳しく解説されているところがないので、throwsとrethrowsの違いでもまとめてみることにします。