日々精進

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

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

ReactiveCocoaでTwo way binding

追記:下記は間違いで、正しくは2014-08-03 - 日々精進参照。 昔はRACBindを使ってやってたけど、バージョン2.3.1ではTwo way bindingのやり方が変わったっぽい。 以下のように書くとできる。 // RACBind returns a following terminal RACChannelTerminal *…

Jenkinsでビルドするとcodesignがパスワードの入力を求めてくる

Jenkinsでビルドすると、パスワードの入力を求めるダイアログが表示されて鬱陶しい。。 これはJenkinsがcodesignする時に証明書にアクセスできないことが原因。 証明書をキーチェーンの「ログイン」から「システム」にコピーするとJenkinsからも証明書にアク…

Jenkinsでビルドすると「sshキー〜のパスワードを入力して下さい」が何度も出る

2014-04-28 - 日々精進で照会した方法でJenkinsからキーチェーンにアクセスできるようにしていたのだけど、以下のコマンドでは-t 3600が指定されているので、1時間たったらまたパスワードを入力する必要があった。 security unlock-keychain ${HOME}/Library…

ReactiveCocoaをインストールすると「file not found with include; use "quotes" instead 」ビルドエラー

1.9.7をインストールすると掲題のビルドエラーが発生した。 バージョンを2.3.1にすると直った。 やっぱメジャーバージョンアップしてるからインストールすると色々壊れた。。直さなきゃ。

alfred workflow検索サービスpackalが便利

最近ようやくalfred workflowの便利さに気付き、workflowを探していたところ、packalというサービスがあった。 数百のworkflowが登録されていて、検索できるという素晴らしいサービス。イメージとしてはcocoa controlsみたいな感じ。 Home | Packal とりあえ…

NSWindowを閉じようとしたら、確認のアラートを出す方法

mac

手順は以下。NSWindowControllerのサブクラスを作ってそこに実装する ・Window閉じていいよフラグのプロパティを追加する ・self.window.delegate = self;しておく ・windowShouldCloseメソッドの中で、Window閉じていいよフラグがYESならYESを返す。そうで…

atosでクラッシュレポートをsymbolicateする

iOS

以下のようなコマンドでsymbolicateできる。が、なんかヘン。。symbolicateして表示されたメソッド名が間違ってるっぽい。 atos -arch armv7s -o アプリ名.app.dSYM/Contents/Resources/DWARF/アプリ名 0x00407a5fなんでもっと簡単にsymbolicateできないんだ…

ubuntu14.04にsshでログインできるようにする

以下を実行するとsshでログインできるようになる。 sudo apt-get install aptitude sudo aptitude install ssh sudo vi /etc/ssh/sshd_config # PermitRootLoginをnoにする参考:Ubuntuでsshdの設定をしてリモートから接続できるようにする - そ、そんなこと…

NSWindowをtexturedにすると動作がおかしい

mac

具体的には、以下のような挙動になる。 ・ウィンドウのグラデーションが濃すぎる ・タイトルバーを表示出来ない どうもNSWindowにNSTextFieldを配置していると起きるっぽい。 解決策はNSWindowのcontent borderをNoneにすること。 これである程度改善される…

Macのdockアイコンの表示・非表示をruntimeに切り替える

mac

以下でできる。 ・PlistのLSUIElementをYESにする。 ・下記コードを実行するとDockアイコンが表示される。kProcessTransformToForegroundApplicationをBackgroundに変えれば非表示になる。 if (![[NSUserDefaults standardUserDefaults] boolForKey:@"Launch…

NSWindowの表示・非表示イベント

mac

表示イベントはNSWindowControllerの-(void)showWindow:(id)sender 非表示イベントはNSWindowDelegateの-(void)windowWillClose 名前が対称になってないし、メソッドが定義されているTypeが違うのが気になる。 参考:cocoa - How can I track opening and cl…

OSXで「Assertion failure in -[NSTextFieldCell _objectValue:forString:errorDescription:]」エラーが出てアプリが落ちる

mac

NSTextFieldのstringValueにnilを代入していることが原因。 UILabelはnil入れても大丈夫なのにな。。

NSViewのアニメーションを実行すると「CoreAnimation: warning, deleted thread with uncommitted CATransaction」

OSX

self.alphaValue = 1;を実行すると、Viewが全然表示されず、10秒後に「CoreAnimation: warning, deleted thread with uncommitted CATransaction」というエラーメッセージが表示されるという現象が起きた。 原因はself.alphaValue = 1;をbackground threadか…

NSViewのalphaValueを変更すると、「CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.」

OSX

NSViewのalphaValueのAPIドキュメントを見ると、 Prior to OS X v10.6, views not managing a Core Animation layer did not support this method.と書いてある。実は裏でCoreAnimationが使われているらしい。 Launch Arguments & Environment Variables - N…

CasperJSのヘッドレスブラウザ内のconsole.logの出力をコンソールに出す

普通にthis.evaluateの中でconsole.logを実行してもコンソールには出力されない。 そのconsole.logはヘッドレスブラウザの中で実行されるので。 コンソールに出力させるには以下のようにする。 casper.start('http://google.com/', function() { this.evalua…

CasperJSでスクレイピングしたデータを送信する先を環境毎に変える(改良版)

2014-07-04 - 日々精進でjsファイルを生成し、それをclientscriptとしてヘッドレスブラウザに渡す方法を書いたが、かなり遠回りなやりかただった。 そんなことしなくても、 this.evaluateの引数にオブジェクトを渡せばCasperJS本体からヘッドレスブラウザ内…

おすすめMacアプリ

mac

下記記事を見ていくつかMacアプリを新しくインストールした。 新たに殿堂入りすべきだと思うアプリ10選 - Macの手書き説明書 ・nvALT+SimpleNote SimpleNoteというサービスは初めて知ったけどメモを複数端末で共有したいだけなら良さそう。 Evernoteは職場か…

ObjCでTwitterに投稿する文字列の文字数を数えるライブラリ

文字数数えるの大変だからイヤだな。。と思ってたら、twitter公式のライブラリがあった。 詳細は下記サイト参照。 参考:ツイートから@やURLなどを抽出するライブラリ twitter-text-objc - スーパーソフトウエア 世界最強のホットテクノロジー - アプリ開発…

OSXアプリのTab順を設定する

mac

IBでViewを右クリックし、nextKeyViewのOutletを次のTab順のViewに繋げればいい。 参考:cocoa - Tab Order in interface builder? - Stack Overflow

CoreAudioで音楽を鳴らす

mac

意外と簡単にできた。以下のようにAVAudioPlayerを使えばよい。mp3も再生できる。 NSString* path = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"mp3"]; NSURL* file = [NSURL URLWithString:path]; self.audioPlayer = [[AVAudioPlayer allo…

NSTableViewのセルクリックイベント

mac

セルクリックイベントを捕まえるだけで苦労するのがOSX。修羅の国や。。 以下のNSTableViewDelegateメソッドがクリックイベントの代わりに使えるよという情報があったが、このメソッドは名前の通り選択可能かどうかを返すメソッドなので、すでにselect状態に…

macでmenuを使わずにコピー・ペーストなどのコマンドを実装する

mac

普通はMenuを使ってコピー・ペーストなどのコマンドを実装するが、メニューバーアプリなどでMenuが使えない場合は以下のようにする。 ・NSApplicationのサブクラス(MyApplicationクラスとする)を作る ・PlistのPrincipal classに「MyApplication」を設定 …

tail -f の出力をjqで加工する

普通にtail -f | jq '.'のようにjqに渡してもうまくいかなかった。 tailからの出力を1行ずつシェルで切ってjqに渡してやらないといけない。 以下のようにwhile read line...コマンドを使うと1行ずつ渡せる。 tail -f app.log | sed -r "s/\x1B\[([0-9]{1,2}(…

logをjqに読み込ませると、「parse error: Invalid numeric literal at〜」エラー

jq

エラーの原因は、文字列はJSON形式になっていないこと。jqに渡した文字列を一旦ファイルに保存し、catで表示しても普通にJSON形式になっているように見えた。 stringsコマンドで表示すると以下のようにへんな文字列が頭にくっついていた。 strings file #=> …

alfredで隠しファイルを表示する

ファイル・フォルダをブラウズしている時に.を打てば隠しファイルが表示される。 alfred便利だから使い方ちゃんと調べた方がよさそうだなぁ。 参考:Cheatsheet - Alfred v2 Support

NSTableViewのHeader Viewを非表示にする

mac

IB上でTable Header Viewをhiddenにすることはできるが、そうすると Header Viewがあったところに隙間ができてしまう。 これを詰めるには、以下を実行すればよい。 [tableView setHeaderView:nil]; 参考:objective c - Hiding NSTableView header? - Stack …

NSPopoverが表示されない

mac

原因は、showRelativeToRect:に渡すデータが間違っていたこと。 view.boundsを渡さないといけないが、view.frameを渡してしまっていた。 bounds渡すAPIって珍しいから間違えた。。

CasperJSでスクレイピングしたデータを送信する先を環境毎に変える

※追記 もっといい方法がありました。詳細は→2014-07-16 - 日々精進 CasperJSが今どの環境で実行されているかは2014-07-03 - 日々精進に書いた方法で、環境変数から取得する。 スクレイピングしたデータをHTTPで送信している場合、そのリクエストはCasperJS内…

CasperJSで環境変数を取得する

以下のようにする。 system = require('system') console.log(system.env.PATH)参考:CasperJSで環境変数を参照する - さいたま産エンジニアの覚え書き

WebstormのFile Watcherでcoffeescriptのコンパイルが効かない

File Watcherでcoffeescriptのコンパイルを随時行う設定をしているが、なぜかコンパイルしてくれない。 しょうがないのでコマンドラインでwatchすることにした。 以下のコマンドを実行すると、カレントディレクトリからrecursiveに.coffeeファイルを探し、コ…