読者です 読者をやめる 読者になる 読者になる

Rodhos Soft

備忘録を兼ねた技術的なメモです。

URLSessionConfigurationのメモ

URLSessionConfigurationのメモこちらに良い記事があった。 qiita.com とりあえずメソッド一覧。あとから説明を追記する形で。 open class URLSessionConfiguration : NSObject, NSCopying { // デフォルト open class var `default`: URLSessionConfigurati…

canvasのサンプル

html5のcanvasで線を描く。 <head> <title>HTML5 canvas</title> </head> <body> <div align="center"> <h1>sample</h1> </div> <div align="center"> <canvas id="canvas" width="200" height="200" > <p>error</p> </canvas> </div> <script> var example = document.getElementById('canvas'); var context = e…</body>

円を描く

extension CGRect { init(_ center:CGPoint, _ size:CGSize) { self.origin = CGPoint(x:center.x - size.width/2, y:center.y - size.height/2) self.size = size } } extension CGPoint { init(_ x:CGFloat, _ y:CGFloat) { self.x = x self.y = y } } ext…

値の受け渡し

コントローラからテンプレートへ値をセットするには $this->set('poi',10); これでテンプレートでは$poiに10が入る。 <p> </p>

エレメント

レイアウトにはめ込んで使える。Templete/Elementフォルダにいれておき、 element(hoge) ?> で読み込める。 値をわたしたければ element(hoge, ['x'=?10,'y'=>5]) ?> のように渡す。色々部品化しておくと良いようだ。

レイアウト

使用するスタイルシートwebroot/css/cake.hello.cssを用意する。 body { background: #eee; color: #999; margin: 10px 8px } #header { font-size: 18pt; font-weight: bold; margin: 10px; } #content { background: #fff; color: #999; padding: 10px 25p…

テンプレート

src/Template/Hello/index.ctpを作ってテンプレートを以下のように用意 <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Hello Page</title> </head> <body> <h1>midashi</h1> <p> hello hello </p> </body> </html> コントローラ側でautoRenderをtrueにしてテンプレートを読み込む。

フォワードとリダイレクト

setAction(other); } public fun…

Hello World

/helloにアクセス /hello/otherにアクセス

プロトコルMisc

CustomStringConvertible description オブジェクトの文字表示 print CustomDebugStringConvertible debugDescription オブジェクトの文字表示 debugPrint LosslessStringConvertible 文字列からそのままオブジェクト構築できる TextOutputStream write(_ st…

Tensorflowの画像認識のチュートリアル

キータにも書いたが、自分のメモとしてTensorflowの画像認識のチュートリアルのサンプルに結果表示をいれたものをメモしておきたい。 コードの説明はコメントの形で埋め込んだ。qiita.com #coding:UTF-8 # rdtensorflowsample.swift # KatagiriSo import inp…

制約を更新する。

UIViewのupdateConstraintsを上書きする。superを最後に呼ぶことを忘れない。制約の反映はsetNeedsUpdateConstraintsを呼ぶ。

乱数

let x = arc4random() % 5 let x = arc4random_uniform(5) seed指定いらない。

デバイスごとのUI調整

途中にUIViewを挟んでそのUIViewのアスペクト比を決め、左右などを固定することで、そのUIViewに隣接する形でビューを拘束配置していけば画面の大きさが変わった際の調節ができる。

単語

inherently 生得的に、本質的に verbose 冗長なsibling 兄弟(男女別のない) ancestor 先祖 descendant 子孫trail 通った跡、痕跡 trailing end 終端

proxyでrsyncが使えない時

gitが入っていれば代わりにgitを使う。 howto/SyncingWithGit – MacPortsgitのproxy設定は gitでプロキシを設定 - Qiita

toolbarの色をかえる

let button = UIBarButtonItem(customView:button) self.toolbarItems = [flexl, button, flexr] self.navigationController?.toolbar.barTintColor = UIColor.White self.navigationController?.setToolbarHidden(false, animated: true)

無限ループ

UICollectionViewを継承したクラスをつくり、layoutsubViewsで中心からコンテンツが1/4程度外れていたらContentOffSetを中央へ移動させるようにすれば良い。 let totalContentWidth = CGFloat(cellCount) * cellWidth let centerOffsetX = totalContentWidth…

BehaviorSubject

BehaviorSubjectは最後の値を覚えていてsubscribeで即座に値が返ってくる。最初の値はこちらで指定できる。 class Temperature { private let behaviorSubject = BehaviorSubject(value:0) var behavior : BehaviorSubject<Int> { return behaviorSubject } func </int>…

ダイナミックタイプ

自動的に文字の大きさを設定してくれる。フォントを対応するタイプを指定すれば良い。 UIFont.preferredFont(forTextStyle: .body) ストーリボードでもできる。コンテンツサイズの変更は次の通知を受ければ解る。 Notification.Name.UIContentSizeCategoryDi…

UITextViewの縦方向の中央寄せ

contentSizeをオブザーブして textView.addObserver(self, forKeyPath: "contentSize", options: .new, context: nil) contentSizeに変化があれば、中身を調節する。 override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NS…

Observable

次のようなクラスを定義する。 class Temperature { private let eventSubject = PublishSubject<Int>() var event: Observable<Int> { return eventSubject } func doSomething(x:Int) { eventSubject.onNext(x) } } テキストフィールドの編集が終わったタイミングで</int></int>…

RXSwift

RxSwiftを試してみた。CocoaPodでインストールした上で以下をインポート import RxSwift import RxCocoa 使い方は textFiled!.rx.text .map { guard let text = $0, text.lengthOfBytes(using:.utf16) > 0 else { return "" } return "\(text)!" } .bindTo(l…

継続モナド

継続モナドはSwiftで段階的に作れる。1. まず継続渡しの関数を作る。 func getA(complete:(String)->Void) { complete("X") } 2. 継続渡しの関数を引数にとるクラスを作る。 typealias Func<T> = (T)->Void public struct RDFuture<T> { public var f:(Func<T>)->() p</t></t></t>…

proxy

git

.gitconfig に設定を書くこれはターミナルでできる。 git config --global http.proxy http://name:pass@host:port git config --global https.proxy https://name:pass@host:port

Realm

Realmを試してみた。便利だ。。 import Foundation import RealmSwift class Man : Object { // ObjectはRealmのクラス dynamic var name = "" // dynamicはobjective-Cのランタイムを利用して値にアクセスする dynamic var age = 10 let cats = List<Cat>() // L</cat>…

proxy

export USERNAME= export PASSWORD= export HOST= export PORT= export PROXY=$USERNAME:$PASSWORD@$HOST:$PORT export http_proxy=http://$PROXY export https_proxy=https://$PROXY export ftp_proxy=ftp://$PROXY export HTTP_PROXY=http://$PROXY export…

コレクションビューの隙間

水平な線形レイアウトで隙間を調整したい時、しかもminimumをなくしたいと考えた時、ラインも修正すると良い。

セクション

セクションは流れていく。それを止めるには stackoverflow.com

画面の一部を切り取る

resizableSnapshotView これとUIView.transitionを組み合わせて一部分の画面遷移を再現できる。

viewWillLayoutSubviews

viewWillLayoutSubviewsはviewのlayoutSubviewsの前に呼ばれる。 ちなみにlayoutSubviewsはレイアウト更新タイミング、制約つけたいときはupdateConstraints。viewWillLayoutSubviewsは結果的にViewWillAppearとViewWillDidAppearの中間で呼ばれることになる…

インライン展開

iOS

CG_INLINEを使えば良い。

画面切替

iOS

snapshotViewとの組み合わせでいける。 let currentView = self.view.snapshotView(afterScreenUpdates: true)! self.view.addSubview(currentView) UIView.transition(with: currentView, duration: 0.5, options: [.transitionFlipFromRight], animations:…

幾つかのメモ 2

ImageButtonはボタン背景がついてしまう。 画像つきボタンはImageViewを使えば良い。 文字付きアイコンはShapeを定義してバッググラウンドに指定する。 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="@color/hoge"/> </solid></shape>

SNS関連

ツイート 以下でツイート対応アプリが出る。 String url = "http://twitter.com/share?text=" + text; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

GSON関連

リストを変換 Gson gson = new Gson(); Type listType = new TypeToken<List<ItemClass>>(){}.getType(); List<ItemClass> items = gson.fromJson(jsonArray, listType);</itemclass></list<itemclass>

レイアウト関連

Drawableフォルダには画材的なxmlを置く。 dimensフォルダにはデバイスの大きさごとの指定を置く。 FrameLayoutは何もしないレイアウト RelativeLayoutは何々は何々の上にあるとかを指定するレイアウト 絶対座標は使わないこと。 データバインディングはデー…

基本的なこと

他の画面から送られてきたデータを取得 Bundle extras = getIntent().getExtras(); if (extras != null) { mHoge = extras.getString("HOGE"); setTitle("title"); } } 他のxmlファイルのレイアウトを取得 mView = (LinearLayout) getLayoutInflater().infla…

エミュレータのプロキシ認証

やったこと。 エミュレータの設定でプロキシ設定する うまくいかなかったのでコマンドライン上でabd, emulatorを使うことにした。 まずパスを通した。 export PATH=/Applications/adt-bundle-mac-x86_64***/sdk/platform-tools:$PATH export PATH=/Applicati…

幾つかのメモ

アダプター アイテムからアイテム用のビューへの変換、動的に行われる。getView convertViewはリサイクルされてきたビューのこと。 データバインディング DataBindingUtil.inflateでbindingを取得して、そいつにデータをセット、 データはレイアウトのほうで…

画面遷移カスタマイズ2 viewの遷移

ビューの遷移を真似たい場合snapshotViewとtransitionをくみあわせる。 let currentView = self.view.snapshotView(afterScreenUpdates: true)! self.view.addSubview(currentView) setup() UIView.transition(with: currentView, duration: 0.5, options: […

画面遷移カスタマイズ

class PushAnimator : NSObject, UIViewControllerAnimatedTransitioning { func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { return 1.0 } func animateTransition(using transitionContext: U…

UIViewのレイアウトライフサイクル

制約更新 updateConstraintsIfNeeded() → updateConstraints()が呼ばれる。 フレーム更新 layoutIfNeeded() → layoutSubViews()が呼ばれる。 端末回転によるフレーム変更、UIScrollViewでcontentOffsetの変更時等 レンダリング setNeedsDisplay() → drawRect…

AutoLayoutの制約式

基本は A = aB + b の連立方程式を解く。 Alignment Rectangle (外接矩形) 装飾(影、角丸等)を除いたビュー。AutoLayoutはフレームではなくAlignment Rectangleを用いている。 Alignment Rectangleの表示方法 Edit Scheme のRunのArgumentで起動オプションと…

Adaptive Layout

Adaptive Layout = レスポンシブレイアウトiPhoneとiPadという端末の区別はない。 どのようなウィンドウサイズでもレイアウトを維持する。 二つのポイント1. AutoLayout 2. トレイトコレクション サイズクラスはトレイトコレクションに含まれる値の一つ サイ…

商品の値段とNSNumberFormatter

SKProductの価格の加工などで使う。 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; formatter.formatterBehavior = NSNumberFormatterBehavior10_4; formatter.numberStyle = NSNumberFormatterCurrencyStyle; formatter.locale = loca…

iPhone/iPadの画面

iOS

基本的には以下をみるqiita.comデザイン的には基本は横幅を気にする。 5sだと320 6だと375 6plusだと414 ipad 768 ipad pro 1024縦はテーブル等で表示する場合はそこまで気にならない。ipadは回転を許容する場合は気にする必要がある。 5sだと 568 6だと 667…

FutureパターンをSwiftで書く

Swiftでまずリクエストプロトコルを作る。 public protocol Request { func getResult()->String } それを実装するFurureを作る。 public class Future:Request { private let semaphore:DispatchSemaphore = DispatchSemaphore(value: 0) private var ready…

Appleのサンプルムービー

iOS

http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8

回転させたときのレイアウト変更

iOS

XCode8で回転させた場合のレウアウト変更はSizeClassを使うとできる。 拘束条件を個別にinstallで設定する。全画面にしたい場合は上下左右にマージン0で設定してやる。サイズの変更は以下の参考に書かれているような変更で呼び出しを受ける。 iOS8以降で、ど…