日々精進

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

2013-12-01から1ヶ月間の記事一覧

iOSで使えるフォント名の一覧を知る方法

iOS

実行時にデバッグウィンドウで下記を実行すると一覧が出る。 po [[UIFont familyNames] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]

カレンダー等の許可ダイアログを複数回出す方法

iOS

カレンダー等の許可ダイアログは一度OKすると二度と出ないので テストしづらい。が、Bundle Identifierを変更するとまた出せる。

バイナリに含まれるシンボル一覧を表示する

iOS

nmコマンドを使う。 nm libPods-OpenSSL.a以下のようなシンボルテーブルが表示される。 一番左の列のアドレスが空欄のシンボルは未定義。 libPods-OpenSSL.a(xcbc_enc.o): 00001738 s EH_frame0 U _DES_encrypt1 00000000 T _DES_xcbc_encrypt 00001750 S _D…

OpenSSLをcocoapod経由でインストールするとビルドエラー「Undefined symbols for architecture i386」

iOS

これは下記のpublicなpodspecが原因。 https://github.com/CocoaPods/Specs/blob/master/OpenSSL/1.0.1/OpenSSL.podspec このpodspecでビルド対象のファイルをsource_filesメソッドに渡しているが、実はこれがOpenSSLの一部しか無くて、 ビルド対象になって…

.bash_profileに定義した環境変数が正しく設定されない

mac

例えば、以下の設定を.bash_profileに書いた場合 export http_proxy=http://proxy:9080/以下のようになった。 echo $http_proxy #=> export/proxy:9080/なんだこれ・・・と思っていたら、.bash_profileの改行コードがCRになっていたのが原因だった。 LFに変…

targetを追加したら「duplicate symbols for architecture」エラー

XCodeのtargets>Build Phases>Link Binary With LibrariesにlibPods.aとlibPods-.aの両方が入っていることが原因。 libPods-.aにそのターゲット用のライブラリが全部入っているのでこっちだけでいい。 libPods.aを削除すると直った。

ビルドエラー「File not found: /Users/name/Library/Developer/Xcode/DerivedData/appname-bdakpnwzcghihlaqsqhitzdfvhzx/Build/Products/Debug/appname.app/Contents/MacOS/appname」

mac

まだXCode5移行時のビルドエラーと闘ってます。移行思ったより手強い。。 このエラーはテスト用ターゲットをビルドしたときに、Build Settings>Linking>Bundle Loaderで指定しているテスト対象のアプリがビルドされていないと起こる。 Edit Scheme>Build>Tar…

ビルドエラー「ld: symbol(s) not found for architecture x86_64」

mac

ビルド時にシンボルが見つからないよ、というエラー。 以下のようなメッセージが出ているので、この場合はCopySymbolicHotKeysメソッドを定義しているファイルを探してそのファイルがプロジェクト内にあれば、ビルドターゲットがおかしいのでビルド対象を増…

ビルド環境をプロダクト毎に分ける仕組みをDockerを使って構築したい

iOS

下記のようにDockerを使ってビルド環境を分けられるよという記事をいくつか見たので、早速iOSアプリでやってみようと思ったら、DockerがMacに対応してなかった。。 第8回Jenkins勉強会で「Jenkins with Docker」というLTをしました #jenkinsstudy - Yahoo! J…

ビルド時に「Xcode cannot run using the selected device. Choose a destination with a supported architecture in order to run on this device.」

mac

Target>Build Settings>Architectures>Valid Architecturesでi386を選んでいるとこのエラーが出る。i386を削除すると直った。

gemのバージョンを指定してinstall, 実行

install sudo gem install cocoapods -v 0.23.0 実行は以下。 ・Gemfileを作って以下を書く。 gem "rack", "1.3.5"・bundler経由で実行 bundle exec pod --version #=> 0.23.0参考:ruby - How to switch between different version of gem installed? - Sta…

ビルド時に「Directory not found for option '-F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/Developer/Library/Frameworks'」

mac

調べてみると、 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/ の下にDeveloperフォルダがない。Systemフォルダはある。 cocoapodが作ったPods-.xcconfigを見てみると、下記の行があったので、 FRA…

rbenvを入れてる環境でgem updateしてもgemが更新されない

cocoapodsをupdateしようとしたら、updateできなくて困った。 gem update cocoapods #=>Successfully installed cocoapods-0.29.0 gem list cocoapods #=>cocoapods (0.29.0) pod --version #=> 0.23.0 (!?)インストールは成功してるっぽいのに、podのバー…

XCode4で開発したMacアプリをXCode5に移行する

mac

XCode4で開発したMacアプリをXCode5に移行する時にやったことリスト ・XCode5で全XIBを表示し、XIBフォーマットをXCode5に移行 ・「linker command failed with exit code 1 (use -v to see invocation)」というビルドエラーが出た。 Framework not found xx…

フォルダ毎の容量を調べるアプリ

mac

OmniDiskSweeperを使うとフォルダ毎の容量がわかる。 ディスクの空き容量を増やしたい時に、容量食ってるフォルダ・ファイルを調べるために使ってます。おすすめです。 参考:Macの容量を空けたい人へ。フォルダやファイルのサイズが一目でわかるアプリ「Omn…

pip installを実行すると「Wheel installs require setuptools >= 0.8 for dist-info support.」エラー

setuptoolsが古いのが原因だが、setuptoolsよりdistributeを使った方がいいらしいので、以下を実行して直した。 sudo easy_install distribute参考:Pythonで一番最初に入れるべきパッケージ setuptools と pip - Life with Python

pipを実行すると「pkg_resources.DistributionNotFound: pip==1.4.1」

mac

pipが壊れていることが原因。以下を実行してpipを再インストールすると直った。 sudo easy_install --upgrade pip参考:python - pip broke. how to fix DistributionNotFound error? - Stack Overflow

javaプログラムを実行すると「Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FilenameUtils」

これはcommons-io libraryにクラスパスが通ってないことが原因。 以下からcommons-io libraryをダウンロードし、パスを通せばいい。 Commons IO - Commons IO Overview 参考:What can cause java.lang.NoClassDefFoundError? - Stack Overflow

pmd5.0.5でコードの重複検出が出来ない

pmd5.0.5とObjCLanguage–0.0.7-SNAPSHOT.jarを使ってコードの重複検出をしても出力されるファイルが常に空になる。 原因はpmd5.0.5を使っていることで、pmd4.2.5を使うと正しく動作する。 参考:Safx: JenkinsでObjective-Cのコード重複を採れるようにする

GHUnitのテストカバレッジを出力する方法

やり方がHack感あってかっこいい。fopen$UNIX2003とかなんなんですかこれは。。やり方は↓ GHUnitのテストカバレッジをJenkinsで表示する - TOKOROM BLOG

cocoa podでインストールしたライブラリの.pchを修正する

マクロでライブラリのログ出力を切り替えたりするなど、設定を変更することがあるのでこれは便利。 podをインストール後の処理を定義出来るとは知らなかった。やり方は↓ 参考:CocoaPodsで自動生成されたターゲットにPreprocessor Macroを定義する方法 | 踊…

AppStore申請時の設定

mac

・利用開始日は3週間ぐらい先にしておく 理由は利用開始日を基準として新着アプリかどうかが判定されるから。 ・プライマリ言語は英語で 理由はローカライズしてない国のAppStoreでアプリを表示すると説明文がプライマリ言語になるから。 AppStore申請ひと…

Mac App IDを登録しようとすると画面が固まる

mac

Register Your Mac App ID画面でContinueボタンを押した後、Loading...から先に画面が進まない現象が起こった。 原因はChromeを使っていたこと。Safariでは問題が起きなかった。 AppleのサイトはSafariを使って見た方がいいなこれは。。

ファイルパスの空白をエスケープする

sedで置換すればいい。でもエスケープしてもシェルスクリプトの実行結果がおかしくなることがあるのでなるべく空白は使わない方がいい。 FILE_PATH=$( echo "$FILE_PATH" | sed 's/ /\\ /g' )参考:linux - Unix command to escape spaces - Stack Overflow

iptablesの設定を再起動しても維持する

サーバを再起動するとiptablesの設定が消えるので、 以下をやる必要がある。 iptablesの設定をファイルに保存する。 sudo rm /etc/sysconfig/iptables sudo iptables-save > /etc/sysconfig/iptables起動スクリプトに以下を追加。 sudo iptables-restore < /…

起動している仮想マシンの一覧を表示する方法

仮想マシンを起動したまま忘れていてメモリを食っていたということがあったので、仮想マシンの一覧を表示する方法を探したところvagrant-global-statusというプラグインでできるらしい。 以下でできる。これは便利。 vagrant plugin install vagrant-global-…

opscode community以外からcookbookをインストールする方法

Berksfileに以下のように取得先リポジトリを指定すればよい。 意外とこれ書いてるところがなくて困った。 cookbooksフォルダの下にチェックアウトしたフォルダを置いたりしてもだめなので注意。 cookbook 'casperjs', git: 'git://github.com/jenkinslaw/cas…

ms office 2013のライセンス認証をしようとすると、「申し訳ございません。サーバーに一時的な問題が発生しています」とでる

IEのリセットをすると直った。てかなんでこのエラーメッセージからIEのリセットをすれば直るとわかるのか。。リセットの仕方は下記サイト参照。 参考:officeのライセンス認証についてです。「申し訳ございません。サーバー... - Yahoo!知恵袋

公式アプリを使ってアプリのアップロードを自動化する

最初アプリをアップロードするスクリプトを書こうとしたが、公式アプリがやってくれることを知ったので使うことにした。 公式アプリは↓からダウンロードできる。てかなんで専用のページが無くてBlogからダウンロードなんだろう。。 HockeyApp for Mac, Versi…

Job設定をGitでバージョン管理する

JenkinsのJobをバージョン管理する場合、config.xmlのみバージョン管理すればいい。 config.xml以外のすべてを無視する.gitignoreの書き方は以下。 * !jobs !jobs/*/ !config.xmlgitignoreの書き方がむずくて困っていたところにgitでJenkinsのconfig.xmlをバ…