日々精進

新しく学んだことを書き留めていきます

2014-04-01から1ヶ月間の記事一覧

swiftのstructはallocated inlineなので速いらしい

mikeash.com: Friday Q&A 2014-06-20: Interesting Swift Featuresに書いてあったんだけど、「As a bonus, it should be more efficient as well, since structs can potentially be allocated inline rather than requiring allocation on the heap.」らし…

Jenkinsでビルドすると「Caused by: hudson.plugins.git.GitException: Command "git fetch --tags --progress ssh://・・・" returned status code 128:」エラー

原因はsshキーにアクセス出来ないこと。 このエラーメッセージが表示された時にJenkinsが動いているMacで「sshキー・・・のパスワードを入力して下さい」というダイアログが表示されている。 これにパスワードを入力しても再度ダイアログが表示されるだけで…

Jenkinsでビルドすると「User interaction is not allowed」エラー

Keychainへのアクセスが許可されていないことが原因。 以下のコマンドを実行して許可すると直る。。はずが、直らなかった。 security unlock-keychain ${HOME}/Library/Keychains/login.keychain security set-keychain-settings -t 3600 -l ~/Library/Keych…

JenkinsのCSSが壊れる問題

MacにインストールしているJenkinsのCSSが壊れ、表示が崩れる問題の原因は、以下によると「JettyのキャッシュがOSの日次処理(`man 8 periodic`)で削除されてしまう」ことらしい。 人類最大の謎。JenkinsのCSS壊れる問題が解明された - laiso 以下のIssueを見…

storyboard上のview controllerのサイズを変更する

iOS

初期状態では変更出来ないので変更出来るようにする方法。 以下記事を参照してもらえばわかるけど、ViewControllerを選択し、Sizeをfreeformに変更すればOK。 参考:iphone - Changing size of view controller on storyboard for editing purpose? - Stack …

スペースを含むファイル名をpecoで選択する

ファイル、フォルダなどの名前をpecoで選択する場合、以下のようにするとファイル名などにスペースが入っていると正しく選択出来ない。 ls -l | peco | awk '{ print $9 }'以下のようにfindを使うと切り出す必要が無いのでこちらの方が良い。 find . -maxdep…

ObjCで定義したクラスを継承したクラスをswiftで定義した時に、インスタンスがswiftで定義したクラスの型にならない場合がある

hosokawa0825/THLoadXibView · GitHubを使ってswiftでViewクラスを定義した。 継承構造は以下。 UIView > THLoadXibView > MySwiftView ObjC側コードで以下のようにしてMySwiftViewインスタンスを作ると、実行時型もMySwiftViewになる。 MySwiftView *v = [[…

awkで切り出した文字列を他のコマンドに渡す

pecoを使い出してから快適ターミナル生活を楽しんでおります。 ファイル選択をpecoでやりたくて以下のaliasを定義してみた。以下に出てくる\はすべてバックスラッシュが正しい。(はてなにバックスラッシュ出せない。。情弱ですいません) alias -g F='`ls |…

swiftで定義したクラスに自動的にPrefixが付くのを防ぐ

実行環境:XCode6-Beta4 swiftで定義したクラスには実行時に以下のルールでPrefixが付く。 _TtC<targetNameのutf16count><targetName><クラス名の文字数><クラス名>なので、THClassはNSStringFromClassでクラス名を文字列にすると_TtC5TName6THClass…

swiftで定義したクラス名は自動的に実行時にPrefixが付く

今やってるプロジェクトでは以下の規約を使っている。 ・Viewクラスとそれに対応するXIBファイルは同じ名前にする ・Viewクラスのインスタンスを作る時にXIBファイル名を指定しなければViewクラスと同じ名前のXIBからインスタンスを作る しかし、swiftで定義…

super.initをイニシャライザで呼ぶと「property not initialized at super.init call」エラー

エラーメッセージの通り、super.initを呼ぶ前にすべてのプロパティを初期化してないといけない。 でもsuper.initしないとbaseクラスのメソッドが使えないので、UIViewControllerのサブクラスのイニシャライザは以下のようになる。 init() { self.homeViewCon…

delegateにオブジェクトを代入すると「Cannot assign to the result of this expression」エラー

以下のように、delegateに代入するとエラーになる。 self.urlDownloader?.delegate = self以下のようにunwrapすると直る。 self.urlDownloader!.delegate = self以下のサイトの記事ではこの原因は「self.urlDownloader?を評価した結果、nilになることがある…

Objcで定義したクラスをswiftで使おうとすると「use of undeclared type・・・」エラー

Objcで定義したクラスをswiftで使う場合、Bridging-Header.hにimport文を書かないといけない。 それは書いているのだが、なぜか以下のようにIBOutletの型として定義しているところで「use of undeclared type・・・」エラーが発生し困った。 @IBOutlet var t…

すべてのリモートリポジトリのbranchをcheckoutし、pullする

git

Pull Requestをレビューする時に、リモートリポジトリからレビュー対象のブランチを探してチェックアウトして、すでにチェックアウトしてたらpullして・・・という一連の作業を効率化したいと思い、ローカルのすべてのbranchの状態をリモートと一致させるfun…

.zshrcに定義するfunctionなどではgit branchでなく、git for-each-refを使う

git

git for-each-refはbranchの一覧を表示するが、git branchより細かく表示する情報を加工したりできるので aliasやfunctionでbranchを選択するところではこっちを使った方がよさそう。 例えば、pecoでbranchを選択するglobal aliasは以下のように定義するとコ…

pecoでmigemo検索出来るようにしたはずなのに検索できない

アホみたいなことでちょっとはまってしまった。。 CustomMatcher · peco/peco Wiki · GitHubを参考に、migemo検索出来るようにしたはずなのに検索出来ない・・・と思っていたら、 単にmatcherを切り替えていないだけだった。 peco/peco · GitHubに書いてある…

pecoでconfig.jsonが読み込めない

homebrew経由でインストールすると~/.peco/config.jsonを読んでくれないらしい。 go getでローカルビルドしてインストールすると、直るらしい。 参考:brewed peco can't resolve ~/.peco/config.json · Issue #101 · peco/peco · GitHub

peco導入しました。

これめっちゃ便利。 もっと速く導入すれば良かった。。 以下を選択するコマンドを入れた。 ・ssh pecoでsshするalias - Qiita ・snippet peco/percolでCUIなスニペットツールを作ってみる - Glide Note - グライドノート ・コマンド履歴、ディレクトリ履歴 p…

Macが無線ルータに自動再接続してくれないのを直す方法

IT

システム環境設定>ネットワーク>使ったことのあるネットワーク から一度削除して、再度Wifiつなぎ直すと直った。 参考:MacBookAirが無線LANに自動接続できないときの対処法| kawapara

PushしたViewControllerのviewWillDisappearが呼ばれない場合がある

iOS

今日知ってびっくりしたんだけど、 画面を表示してもviewWillDisappearが呼ばれないケースがある(viewWillAppearは呼ばれる)。 どのようなケースかというと、 ・pushViewController: animated:を使って、アニメーション付きでViewControllerAを表示する ・…

50%ポイント還元の値引率は33.3%

たまにはIT以外のネタを。 50%ポイント還元というと、50%の値引きではという気がするが、実はそうではない。 例えば、2万円分を購入し、1万円分のポイントを貰った場合、3万円のものを2万円で購入したことになる。 つまり、(3 - 2) / 3 * 100 = 約33.3%引き…

iTerm2のタイトルバーにカレントディレクトリのパスを表示する

以下を実行すると表示出来る。zshなら.zshrcなどに書いておくとよい。 precmd() { eval 'echo -ne "\033]0;$PWD\007"' }これは便利だなぁ。 bashならPROMPT_COMMANDにコマンドを渡せばよい。 参考:terminal - For iTerm2, how do I make the working direct…

Google Playからアプリをインストール出来なくなった。GooglePlayアプリをアンインストールしたら直った

タイトル通り、Google Playからアプリをインストール出来なくなった。アプリの「インストール」ボタンをタップしても、アプリのインストールがいっこうに始まらない。。 GooglePlayアプリのアップデートのアンインストールを実行すると直った。 やりかたの詳…

instrumentsのCall TreeでSymbol Nameにメソッド名を表示する方法

iOS

instrumentsのプロファイラなどを使ってCall Treeを表示しても、メソッド名が表示されなくてどのメソッドで時間がかかっているのかわからん・・・という場合。 以下手順でメソッド名を表示出来る。 ・instrumentsをStop ・メニューのFile>Re-Symbolicate Doc…

文字列からUIEdgeInsetsを生成する

iOS

以下を使うと簡単にできる。 UIEdgeInsetsFromString(string)UIの設定をファイルから読み込む時とか使えそう。

UIEdgeInsetsをCGRectから差し引く

iOS

以下のコードで簡単にできる。 CGRect newRect = UIEdgeInsetsInsetRect(rect, insets);これは便利。

AppCodeのsoft wrapは超重い

AppCodeを3.0にしてから、めちゃ動作が重くなって困っていたが原因はsoft wrapを設定していることだった。 以下の設定のチェックを外すと超軽くなった。 Preferences>Editor>use soft wraps in editorとuse soft wraps in console soft wrapを使っていると、…

jenkinsのJob設定画面で「ロード中」が表示されたままになる

原因はプラグインのエラー。 自分の場合はプラグインのバージョンをすべて最新にすると直った。 参考:Jenkins にすべてのプラグインを入れたらどうなるか (フェンリル | デベロッパーズブログ)

Jenkinsでビルドする時、ブランチ名に「.」が入っているとビルドエラーになる

test1.0.0のようなブランチをビルドしようとするとエラーになった。 エラーメッセージは以下。 make: *** [build_stg] Error 65 Build step 'シェルの実行' marked build as failuretest1_0_0のようにするとビルドできた。 こんな制限があるのか。。エラーメ…

クラッシュレポートを実機から取り出す方法

iOS

実機のログをOrganizerで見ていると、以下のようなファイルにクラッシュレポートを保存したよというメッセージが出ることがある。 /var/mobile/Library/Logs/CrashReporter/###.plistこれはiOSデバイスの以下の画面から見られる。 設定>一般>情報>診断/使…