日々精進

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

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

pod installしてビルドすると「Duplicate Symbol...」エラー

iOS

直接の原因はなぜかlibPod.aの他に各Podの.aファイルまでリンクしようとしているため。 pod installを再度実行したら直った。 なんだったんだろう。。

Nodeで実行中のjsファイルのファイル名を取得する

executingFileName = process.argv[1].replace(/^.*[\\\/]/, '')参考:javascript - How to pass command line arguments to Node.js? - Stack Overflow

nodeでHOMEディレクトリのパスを取得する

logs4jsを使ってログを出力しているが、ログの出力先を~/logs/app.logのように指定しても出力できなかった。 以下のようにすると出力できた。 log4js.configure({ appenders: [{ "type": "dateFile", "filename": "#{process.env["HOME"]}/logs/#{executingF…

npm install -g coffeeした後、coffeeを実行してもcommand not foundになる

原因はパッケージ名が間違っていること。 coffeescriptをインストールする場合はnpm install -g coffee-scriptとしないといけない。 ちゃんとドキュメント見ないといけないな。。 参考:CoffeeScript

PhantomJSでカレントディレクトリのパスを取得する方法

fs.workingDirectoryを使う var fs = require('fs'); fs.workingDirectoryついついNode環境と勘違いして__dirnameとか書きたくなるけど、PhantomJSは違うんだよね。。 参考:workingDirectory | PhantomJS

coffeescriptでグローバル変数を定義する方法

ブラウザ内では、windowオブジェクトのプロパティにすればよい。 window.global = "test" Node環境ではglobalオブジェクトのプロパティにする global.global = "test" 参考:Global Variables in Node.js

npm installでパッケージをインストールしようとしたら「npm ERR! network tunneling socket could not be established...」

原因はプロキシ設定とhttps接続を使っていること。 以下を実行すると直った。 npm config set proxy http://yourproxy npm config set registry http://registry.npmjs.org/proxyにhttpsのプロキシを指定したらそれだけでいけるかも。 参考:Node.js - Windo…

空撮用自動追尾ラジコンヘリがすごい

こりゃすごい。スノボなどやってる人を自動追尾して動画を撮ってくれるラジコンヘリ。 自転車の宙返りもブレずに撮れる! 驚異の空撮用ラジコンヘリを解説 HEXO+(エグゾプラス) | Kickstarter fan! これで6万は安いな。。ハードウェアスタートアップ面白いな…

UITableViewのrowHeightが-1になる

iOS

iOS8からSelf Sizing Cellsという機能が導入され、セル高さをセルが決めるようになったので、UITableViewのrowHeightが-1になってる。 rowHeightがほしければセルのオブジェクトを作って計算させること。 参考:objective c - Xcode 6 iOS 8 UITableView row…

MagicalRecordを使ってテスト用にCoreDataオブジェクトを生成する

iOS

data storeをmemoryにして、contextからオブジェクトを生成すればOK。 [MagicalRecord setupCoreDataStackWithInMemoryStore]; NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext]; CurrencyPair *cp = [CurrencyPair MR_create…

NSNumberFormatterでフォーマットしたら0.1が.1になってしまう

iOS

minimumIntegerDigitsを設定すれば0が消えない。 [formatter setMinimumIntegerDigits:1]; 参考:cocoa - No zero before decimal point - Stack Overflow

canMoveRowAtIndexPathが呼ばれない

iOS

canMoveRowAtIndexPathもmoveRowAtIndexPathも実装してるのになぜ呼ばれないんだ・・と思っていたら、canEditRowAtIndexPathを実装してなかったのと、self.tableView.editing = YESにしてなかった。 並べ替えをする場合、TableViewを編集モードにしないとい…

UIRectEdgeNoneを設定すると、タブバー・ナビバーの背景色がグレーになる

iOS

原因は、UIRectEdgeNoneによりタブバーなどの下にViewが入り込まなくなったので、透過させる必要ないでしょということでUIKitが勝手に不透明にするため。そのときなぜか色が変わるっぽい。 白にしたい場合はタブバー・ナビバーのtranslucentをNOにすればよい…

cellForRowAtIndexPathが呼ばれない

iOS

numberOfRowsInSectionは呼ばれてるし、1以上の数を返しているのになぜ。。と思ったら、TableViewのFrameが小さすぎて1行も表示できない場合、呼ばれないらしい。 Frameを大きくすると呼ばれるようになった。 参考:iphone - cellForRowAtIndexPath: not cal…

iOS8のToday ExtensionをRunすると、XCodeが「Waiting to attach」のままでattachされない

iOS

XCode6.1GM Seed2で発生。 シミュレータでwidetを表示している状態でRunすると起きる。 一度発生するとアプリを削除しないと直らない。 widget(通知センター)を閉じてからRunすると発生しない。 XCodeまだまだBuggyだなぁ。。Betaを使ってる方が悪いのか。 …

UITabBarItemの文字色等を変更する

iOS

UIAppearanceを使えば変更できる。 例は以下。 [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]} forState:UIControlStateNormal]; 参考:uitabbar - change tabbar text color,iPhone - Stack O…

.hをimportしているところで「lexical or preprocessor issue file not found」ビルドエラー

iOS

原因はTarget>Build Settings>Header Search Pathsにcocoa podがPodsのパスを書くんだけど自分でHeader Search Pathsをいじった時の値でそれが上書きされ、Podsの.hを検索できていなかったため。 Targetで設定しているHeader Search Pathsを削除したら直った…

Product Nameを変更した後でビルドすると、Testターゲットで「ld: file not found ... clang: error: linker command failed with exit code 1 (use -v to see invocation)」ビルドエラー

iOS

原因はTestターゲット>Build Settings>Testing>Test Hostにテスト対象のアプリのパスを書くんだけど、このパスにProduct Nameが含まれておりそれが古いままになっているため。 変更後のProduct Nameに直すと直った。 テスト対象アプリのInfo.plistからProduct…

SimPholders2でiOSシミュレータで動かしたアプリのDocumentフォルダをすぐ開く

iOS

SimPholders2はメニューバーに常駐してiOSシミュレータで動かしたアプリのDocumentフォルダをすぐ開けるようにしてくれる。 これは便利だ。 SimPholders2

gitにaddされていないファイルを削除する

git

以下を実行すると削除できる。いままでSourceTreeとかで一括選択して削除してた。。 git clean -fまだまだ知らない機能がいっぱいあるなぁ。 参考:How do I remove local (untracked) files from my current Git branch? - Stack Overflow

VagrantのboxにAmazon Linuxを追加する

amazon linuxのイメージファイルもちゃんと配布してる人がいた。 以下を実行するとダウンロードできる。 vagrant box add AmazonLinux201403 http://images.geekandi.com/amazon-linux/vagrant-amazon-linux64-2014.03-public-virtualbox.box参考:Amazon Li…

「diff: /../Podfile.lock: No such file or directory」ビルドエラー

iOS

原因はBuild Settings>User-Defined>PODS_ROOTがないため。 PODS_ROOTを追加し、値に${SRCROOT}/Podsを入力すると直る。 PODS_ROOTがない原因は謎。。Podfileの書き方が悪いのかもしれない。

gitのコミットメッセージからチケット番号を抽出するシェルスクリプト

git

リリース前に、前回リリース時点以降に取り込まれたチケットの一覧を確認したいという場合に使う。 以下のスクリプトを実行するとGitのコミットメッセージから[PJNAME-XXX]という文字列を取り出せる。ただし、一つのコミットに複数入っている場合は先頭の一…

macでsed -rを実行すると「sed: illegal option -- r」

mac

Macだとsed -rはsed -Eにしないといけないらしい。 仕様合わせてほしいなぁ。 参考:Flashes of Panic: sed: illegal option -- r

alfredのgitlab workflowでProxyを使わない方法

Proxyを介してインターネットと接続しているので、基本的にProxyは使いたいがGitlabサーバはイントラネット上にあるのでProxyを使いたくないという場合。 gitlab workflowを以下のように修正すればいい。 $options = array( CURLOPT_HTTPHEADER => array('PR…

「[MagicalRecord swizzleShorthandMethods]: unrecognized selector」エラー

iOS

実行時に「[MagicalRecord swizzleShorthandMethods]: unrecognized selector」というエラーが出た。 原因はPodプロジェクトをビルドし、リンクする時にデフォルトの設定では使われていないシンボルを削除すること。 アプリのターゲットのBuild SettingsのOt…

CoreDataでDBからデータを取得しようとすると「executeFetchRequest:error: A fetch request must have an entity」

iOS

原因はAppCodeでクラス名をRenameした時に、mogeneratorで生成したクラス内の以下のようなところのEntity名もRenameされてしまっていたこと。 return [NSEntityDescription insertNewObjectForEntityForName:@"Property" inManagedObjectContext:moc_]; Enti…

Macアプリの設定やDBが保存されるパス

mac

以下のパスの下に.sqliteなどができる。 /Users/<usename>/Library/Containers/<bundle identifier></bundle></usename>

[]

2014-07-31 - 日々精進でReactiveCocoaのtwo way bindingを紹介したが、これは間違いっぽい。 Bindした時になぜかnilが代入されてしまう。 以下のようにRACChannelToを使えばよい。 RACChannelTo(self, name) = RACChannelTo(currencyPair, name); Bindした…

XCodeでビルドすると「Pods-resources.sh: line 5: /resources-to-copy-.txt: Permission denied」エラー

iOS

ビルドターゲットのUser-DefinedにPODS_ROOTが無いか、値が設定されていないことが原因。 PODS_ROOTを追加して値を${SRCROOT}/Podsにすると直る。 pod installすると勝手に追加してくれるはずなんだけどな。。