2014年5月20日火曜日

doxygen+graphvizでXCodeプロジェクトのクラス図を作る

特に自分がハマった点を中心に。

・・メモる前に間違えてターミナルを閉じてしまって途方に暮れている。。
思い出す限りで書きます。。ショック。


環境: OSX 10.9.2

主な参考記事
http://qiita.com/paming/items/b40662d4e3494c00ae30


doxygenとgraphvizをインストール

Homebrewを使いました。

brew install doxygen graphviz

以下ログ
==> Downloading http://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.3.1.src.tar.gz

################################################################## 100.0%

==> ./configure –prefix /usr/local/Cellar/doxygen/1.8.3.1
==> make
==> make MAN1DIR=share/man/man1 install
Warning: Could not link doxygen. Unlinking…
Error: The brew link step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link doxygen’
Error: Permission denied - /usr/local/opt

パーミッションエラーが・・・
https://github.com/Homebrew/homebrew/issues/19670
こちらの解決策に従います。

sudo chmod -R $USER /usr/local
ドキドキしながらchmod。

もう一度チャレンジ。
brew install doxygen graphviz

今度は、doxygenはインストールできたが、graphvizが出来ない模様。
libpngが404でErrorとか言われる。

https://github.com/Homebrew/homebrew/issues/20109
これこれ。これが発生。

というわけで、
brew update
を実行する。

・・updateできない。。

http://boiled-octopus.blog.so-net.ne.jp/2013-03-24
これこれ。これが発生。

上の記事を参考に、
git diff
とやったら抜けられなくなって焦るgit初心者。
qとかwqとか叩いたら抜けられたような・・うろ覚え。

git statusで、masterに変更が無い状態にできたのを確認して、
再度brew updateを実行する。

・・できた!!

この状態で、
brew install graphviz
してみると、成功。
doxygenとgraphvizがインストールできた模様。


XCodeのプロジェクトをdoxygenしてみる

htmlフォルダが作られてしまうので、
対象のプロジェクトをコピーしたものにdoxygenしました。ビビリなもので。
対象のプロジェクトのディレクトリに入ります。
AppDelegateがある階層にしました。(どこでも良いでしょう)

doxygen -g

を実行すると、「DoxyFile」というファイルが生成される。
vim使いではない私は、これをファイルエディタ等で開いて、中身を編集。

http://momijiame.tumblr.com/post/23166110981/doxygen-graphviz
http://www.fides.dti.ne.jp/~oka-t/doxygen.html
こちらの記事を参考にしました。
前者の方と同じ内容で実行しています。

さあ、 いざdoxygen!

doxygen

ずらずら〜〜〜とファイルが生成されていきました。
やった!

同じ階層に出来上がったhtmlフォルダのindex.htmlを開く。
Classes - Class Hierarchy
生成されたクラス図を見る事ができました。わいわい!

以上です。

2013年6月25日火曜日

UIImageをタイルで並べたら黒い線が出た

Viewの背景をパターン画像でタイル塗りした時に
一定間隔で黒い線が出ている。。
iOS5.1で現象を確認。

    UIImage* bgImage = [UIImage imageNamed:@"xxx.png"];
    [targetView setBackgroundColor:[UIColor colorWithPatternImage:bgImage]];

こんな感じで書いてるんですが。

原因は、XCodeが行うPNGファイルの圧縮によるもののようです。

・プロジェクトのBuild Settings - Packaging - Compress PNG Files を No にする。
または
・http://d.hatena.ne.jp/wasabi-arts/20090301/1235856525

こちらの方法で解決しました。

2013年6月15日土曜日

ADT22.0にしてみたら

PagerAdapter実装してるところでExceptionが出た。

 java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged!
うんぬん。。

解決策はこちらにあって。
http://stackoverflow.com/questions/16756131/fragmentstatepageradapter-stopped-working-after-updating-to-adt-22

コンテンツを追加等した後は、
notifyDataSetChanged()
を呼ばないとダメになったようです。

http://developer.android.com/reference/android/support/v4/view/ViewPager.html
リファレンスにも書いてありました。。
すんませんでした。。

2013年6月5日水曜日

Push NotificationsをEnableにしようとしてハマる

iOS Apps - Identifiers - App IDs - iOS App ID Settings
Push NotificationsをEnableにしようとしてハマった事


■Service - Push NotificationsをEnableにするため、
Enableにチェックを付けてDoneするが、Disableのまま変わらない。

(原因)
既に作成してあるCertificateが古いため(?)Enableに出来ない。(??)
Expiresが期限内であっても、
作成した時点から一定期間過ぎていると、うまくいかないようです。

(対応)
既に存在するCertificateをRevokeして、
新しく「Create Certificate」する。

これでEnableにできるようになりました。


■ アプリにプッシュ通知の確認アラートが出ない

(原因)
Provisioning ProfilesにPush NotificationsのEnable状態が反映されていない。

(対応)
iOS Apps - Provisioning Profiles - iOS Provisioning Profiles
該当のProfileを選択し、Editする。
内容に変更があってもなくても、Generateする。
更新したProfileをダウンロードして、Organizerに反映し、XCodeを再起動。
アプリをビルドし直す。

※Enables Servicesに「Push Notifications」の文字が見えていても、
Enableにした後、Editし直していなければ、
それは見かけ倒し。(←だまされた…)

該当のProvisioning Profileをテキストエディタで開いて、
<key>aps-environment</key>
上記キーが存在していなければ、Editし直す必要があります。


以上です。

2013年5月29日水曜日

iOSアドレス帳にグループ追加でハマる

ABAddressBookAddRecord
結果がfalseになって、グループ追加ができない・・なぜ! を調べている。

今のところ、auとsoftbankで連絡先の挙動…仕様…が異なるせいかと。 
auの方がややこしい印象。


【softbankの場合】
・iOS5
 未検証

・iOS6
 iCloudアカウントが未設定:trueが返る
 連絡先のデフォルトアカウント:項目なし

【auの場合】
・iOS5
 検証中

・iOS6
 iCloudアカウントが未設定:false
 iCloudアカウントが設定済み:これだけではfalse
 連絡先のデフォルトアカウントがキャリアメール:false
 連絡先のデフォルトアカウントがiCloud:true !!

au iPhoneの場合は、連絡先のグループ追加をするには
連絡先のデフォルトアカウントにiCloudが設定されている必要があるようです。

softbankは、iCloudアカウントを設定してなくてもできました。


・グループ削除
削除したいグループが存在している状態ならば、
iCloudアカウントの設定状態に関わらず、実行できました。
(au iOS6で確認)

2013年3月26日火曜日

そうだったのかService

AndroidのServiceのこと。
サービスってメインスレッドで実行されてるんですね
勝手に別スレッドでやってると思ってた・・・。

サービスのスレッド作ってそこで処理走る訳じゃないよ、
ANRのリスクを減らしたいなら別スレッドを自分で用意してねと書いてあった・・

2013年1月31日木曜日

cocos2dxのBox2Dプロジェクト

cocos2d-xのBox2Dプロジェクトを
Android用にビルドするときにはまったメモ。

以下、太線部分を追加します。

・HelloWorldScene.hを書き換える
#include "Box2D/Box2D.h"

・Android.mkを書き換える
15行目付近
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static box2d_static

19行目付近
$(call import-module,CocosDenshion/android) \
$(call import-module,cocos2dx) \
$(call import-module,extensions) \
$(call import-module,external/Box2D)


以上です!