taoru's memo

Objective-c,cocos2d,など開発についてのメモ(andoroidも少しだけ)

sedコマンドで \+ が使えなくて困ったら -E オプションを使う

sed

タイトル通り 困ったので、冷静になって man でマニュアルを見たところ、 -E オプションで (modern) regular expressions になることがわかった $ man sed -E Interpret regular expressions as extended (modern) regular expressions rather than basic re…

Cocos2d-x v3.1プロジェクトのspine-runtimeを更新する

Cocos2d-x v3.1プロジェクトのspine-runtimeを更新する Spineが出力するフォーマットが変わり、Cocos2d-xに付属されているspine関係のクラスを更新する必要がでてきた。 Forumでも報告されてた http://esotericsoftware.com/forum/viewtopic.php?f=9&t=2609&…

std::Vectorの内容をログ出力する

Cocos2d-xやり始めました。CCLOGでstd::Vectorの内容を出力するstd::accumulate()がVector内の要素を順に加算してくれるようなので、 numericをincludeして使ってみた。space入れられないしダサいけどとりあえず… C++難しい。

terminalでUUIDを自由に生成するコマンド

uuidgenというコマンドで、uuid文字列を自由に生成できる。 CoreBluetoothの開発などで、CBUUIDを新しく定義したいときなどに使う。 $ uuidgen 9B93632B-74D9-46B9-BC6A-503423BD08FC $ uuidgen B9EA6DEE-ADDF-477B-9CC9-58F6B2169CAF $ uuidgen 28CEB791-33…

複数アプリ間で同一IDを取得する

記事のタイトルつけるセンスが無い(切実)アプリAとアプリBをタオル株式会社(仮)がリリースしたとして、 アプリAとアプリBを同時にやってくれているユーザーにインセンティブあげたい!という場合に ユーザーを特定するための同一IDの取得が必要になる。UUI…

subviewをタッチした場合にUIGestureRecognizerのイベントを無視する

UITapGestureRecoginizerや、UISwipeGestureRecognizerでviewにgestureイベントを取得するようにセットしていた場合、 タッチイベントがsubviewにいかなくなってしまう。しかし、tableviewをタップされた場合はtableviewだけにイベントがいってほしい! とい…

Foundation.frameworkを検索対象に含める方法

Objective-cでのfor-inの仕様を調べていて、NSFastEnumerationに準拠しているクラスならfor-inが使えることがわかった。そこで、どのクラスがNSFastEnumerationに準拠しているのか調べてみた。 この記事はprotocolに準拠しているクラスを探す方法についての…

CCSpriteのanchorPointを変更した際の位置ズレを吸収する

CCSpriteはanchorPointをセットすると位置がズレる。 瞬間的に位置がズレてしまうので、ズレないように見せるためにpositionを補正する CCSprite *sprite = [CCSprite spriteWithFile:@"hoge.png"]; sprite.anchorPoint = ccp(0.5f, 0.5f); // 位置ズレ前のb…

UILabelでadjustsFontSizeToFitWidthが効かなくてハマった

UILabelのsubClassを作っていて、initializeをoverrideして案件で最適なLabelクラスを作っていた。adjustsFontSizeToFitWidth = YESにセットしているのに、なぜかscaleしてくれない! という問題が発生し、ハマってた。 UILabel.hの当該コメントを見て即解決…

NSCFStringエラーでハマった(凡ミス)

NSStringをpropertyにセットして、いざ使おうとすると何もエラーを吐かずにクラッシュして困った。 凡ミスだったのでメモを残しておく。breakpointをセットして、クラッシュ該当箇所でログを吐いてみたら、 該当文字列のクラスがNSCFStringになっていた。 (l…

NavigationBarのBarButtonItemに使えるIdentifier一覧

StoryBoardを学んでいて、BarButtonItemを設置することがあったのだけれど 結構種類があって使っていないと忘れてしまいそう。せっかく色々用意してあるのだから、適宜使っていきたい。 どんなのがあるのか覚えるためにも一覧にしてみた。 Identifier Image …

cocos2d-iphonev2.1-rc2アップデートメモ

ブログまとめるの結構労力がいるので、適当にメモするくらいしておく4th coordinated release: cocos2d-iphone v2.1-rc2 and much morerc2の変更点はgithubのchangelogで見られる。 cocos2d-iphone/CHANGELOG at develop-v2 · cocos2d/cocos2d-iphone · GitH…

既にsuperviewを持っているviewを他のviewにaddSubviewした場合の振る舞い

あるUIViewがaddSubviewしたときに、すでにsuperviewを持っている(addSubviewされている)viewを貼り付けようとした場合の振る舞いを初めて知った。UIView Class Referenceによると UIView Class ReferenceDiscussion This method retains view and sets its …

CocosBuilderのTimelineとCCActionが共存できなくてハマった

最近はCocosBuilderを使ったりして遊んでおります。 raywenderlichさんとこにもCocosBuilderTutorialがあるのですが、日本語訳してくれた方がいるのでなんとかbuildまでこぎつけました。 CocosBuilder入門CocosBuilderとXcodeがあればもうbuildできるとばか…

はてなダイアリーからはてブロに移行しました

今更ですが。 はてなダイアリーだとgistが貼り付けられなかったり、色々と不便だった。 - 記事のインポート - はてブの移行 - 記事のリダイレクト 以上三点をナビゲーション通りに行いました。

CCNodeのカテゴリで、他のCCNodeをゆったり追うSoftFollowというのを作ってみた その3

CCNodeのカテゴリで、他のCCNodeをゆったり追うSoftFollowというのを作ってみた その2 - 追記2/26 - taoru's memo ↑の続編になります。今回はタイトル詐欺になるけど、カテゴリではなくCCActionを継承してTTSoftFollowを作った。 prefixどうしようかな〜と…

CCRenderTextureで輪郭線を描く

cocos2dを使っていて、CCSpriteに輪郭線を付けたい!ということがよくある。「輪郭線」「Outline」「Outline Stroke」などでググると、色々出てくるけどCCRenderTextureを使う方法がメジャーみたい。 ということで試してみた。CCSpriteとCCLableTTF(CCSprite…

InsertSubviewしたときはaddSubviewはいらない

UIViewをサブビューとして画面に表示させたいとき、 UIView *subview = [[[UIView alloc] init] autorelease]; [parentView addSubview:subview]; のように書くとparentViewのサブビューリストの末尾にsubviewが追加される(一番上に表示される)で、既存の…

kmVec2でのベクトル計算

Kazmath - Kazade/kazmathcocos2dにも標準で入っているライブラリKazmathの勉強をする。今回は特にkmVec2に関するメソッドを色々と試す。 以前にも一度ベクトル計算を試している(※)が、kmVec2Dotとか何をしているか分かっていない。 2Dでベクトル計算ができ…

cocos2dv2.1で追加されたCCClippingNodeを試す

この記事は、cocos2dv2.1で追加されたCCDrawNodeを試す - taoru's memo の続きです。 今回はCCClippingNodeを試す。これを使うといわゆるmask効果を得られる。が、適当に試しててもなかなか思い通りにできなかったので、練習する。 CCClippingNode.h につい…

cocos2dv2.1で追加されたCCDrawNodeを試す

cocos2d v2.1-rc0 が出ましたので、色々試してみようかと。中でも以下の2つ CCClippingNode CCDrawNode をマスターしたいところです。とりあえずCCDrawNodeを練習した記録を残す。 まずはサンプルを見ながらシンプルな三角形を書くコード - (id)init { if (…

UITableViewのCellを、タッチ中(highlight)だけ色を変える(半透明にしたい)

UITableViewのcellは、defaultのままだとタッチすると青くなる。単純なセルの色変更なら、UITableViewDelegateのdidSelectRowAtIndexPath中でcellを取得した後に、 cell.selectionStyle = UITableViewCellSelectionStyleGlay; などセットすれば色を変えられ…

UIViewをUIImageに変換する

拡張子が.pngの場合、UIImageに渡すファイル名では拡張子を省略できる(iOS 4以降) UIImage Class Reference On iOS 4 and later, if the file is in PNG format, it is not necessary to specify the .PNG filename extension UIImage *image = [UIImage ima…

Xcodeプロジェクトのgitignore設定とgitattributes設定

Xcodeプロジェクトをgit管理するとき、ユーザーデータやスワップファイルは無視させる。 こちはら使っていればすぐ.gitignore設定しなきゃ!って気がつくので問題があまりない。しかし、これだけでは複数人開発をしたときに .pbxproj という拡張子のついたフ…

ファイル名に自由にsuffixをつけるNSString+Suffixを作った

suffixといえば、retina用画像なら hoge@2x.png のように@2xをつけるのだけれど、 オリジナルのsuffixを使いたい場合があったので、やり方を調べた。が、サクッとやるメソッドは用意されていないっぽい…? ので簡単なExtentionを作った。要件 拡張子の前にsu…

CCNodeのカテゴリで、他のCCNodeをゆったり追うSoftFollowというのを作ってみた その2 - 追記2/27

CCNodeのカテゴリで、他のCCNodeをゆったり追うSoftFollowというのを作ってみた - taoru's memo という記事を書いたんだけど、 kmVec2でベクトル計算するのがかっこく見えたので使って書きなおしてみた。CCNode+SoftFollow.h #import "CCNode.h" @interface …

CCNodeのカテゴリで、他のCCNodeをゆったり追うSoftFollowというのを作ってみた

要件 CCNodeが、CCNodeを追って欲しい 自動追尾だけど、自然な感じで追って欲しい 指定したい項目は、対象Node、 引っ張られる強さ、対象との距離 気軽に使いたい ということで、CCNodeのカテゴリで CCNode+SoftFolloというのを作った。 CCDelayを継承してAc…

NSInvocationを組み立てるのが面倒くさかったので1メソッド呼び出しにしてみた

引数付きでSelectorを保持したいと思い、調べてみたらNSInvocationが良いらしいということがわかった。が、いちいちSignature作って、setTargetして、引数セットして…というのが面倒なのでビルドメソッドを作った。 一応動いてはいるけど、これが安全なのか…

cocos2d v2.0 個人的に覚えておきたいアップデート内容

cocos2d v2.0 の安定版が出た。(7/9) http://www.cocos2d-iphone.org/archives/2003 v2.0 highlights:OpenGL ES 2.0 support Better Physics engine support Better DoubleResolution sprite support Easier to maintain Retina Display code Faster MotionS…

CCTouchDispatcher と isRelativeAnchorPoint が非推奨だった

ブログなどで紹介されているクラスやメソッドが、Cocos2d 2.xでは非推奨になっていることがよくある。 ソースを追えば、現在の推奨メソッドが発見できたりする。 [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouche…

CCLabelTTFでカスタムフォントを使う

カスタムフォント(自作フォント)を使いたいなら、ビットマップフォントを生成して、 CCLabelBMFontを使うしかないと思っていました。が、どうやら私のフォント指定の方法が間違っていただけで、実はそのままCCLabelTTFでttfフォント使えるんですね。 フォ…

プレフィックスヘッダーに関するメモ

Cocos2d の新規 HelloWorldプロジェクトを 作成 HelloWorld/Supporting Files/Prefix.pch に、 #ifdef __OBJC__内に #import "cocos2d.h" を追加する #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #import "cocos2d.h" #endifすると、HelloWorldのspf(seconds per fra</foundation/foundation.h></uikit/uikit.h>…

ダイアログ表示でBadTokenExceptionが出る

final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder( getApplicationContext() ); 例えばhogeActivity内で、上記のようにAlertDialogを作成する処理を書くと、 android.view.WindowManager$BadTokenException: Unable to add window -…

vimでディレクトリ内の全ファイルの文字コードを変換する

以前、vimでEUCやShift_JISで書かれたファイルをUTF-8に変換するという記事を書いた。あるプロジェクトで、Javaのソースファイルが全てShift-jisで書かれていて困った。 数十ファイルを1つずつvimで開いていくのは面倒なので、方法を調べたら簡単にできたの…

AndroidのImageViewで、縦横比を維持しつつ拡大するときにハマった(5/10追記)

ImageViewをxml内に記述するとき、縦横比を維持するために <ImageView android:layout_width="match_parent" android:layout_height="135dp" android:adjustViewBounds="true" android:background="@drawable/hoge" /> としていたが、縦横比が固定されずに横長になってしまう。 adjustViewBounds してるのに…と思っていたが、リソースの指定方法を勘違いしていた。backgroundはViewの背景であって、 ImageViewのリソ</imageview>…

Terminalで「ls」したら「ls -G」が実行されるようにして、色も設定する。

最近macを使い始めたので、色々と設定方法を調べるところから入るので大変。デフォルトではlsしても、ファイルもディレクトリも白文字で表示されてしまう。 $ ls -G すると、ディレクトリとシンボリックリンクなどを色分けしてくれる。毎回オプションつけて…

IS06の充電ができない(解決)

AUのAndroid、IS06を開発で使うことがあったのですが、この機種では 「充電と通信が同時にできる」と謳われているケーブルではパソコンと接続しても充電できません。 SIRIUSα IS06 まとめ wikiとのこと。ひどい。 色んなケーブルを試したり、本体が壊れたの…

REXMLライブラリを使ってxmlを出力するときの覚書

require 'rexml/document' doc = REXML::Document.new doc.add_element("hoge") doc.add_element("fuga") ↑はエラーになる rootには1つしかノードを追加できない

vimでEUCやShift_JISで書かれたファイルをUTF-8に変換する

vim

最近はもっぱらvim使ってます。vimのデフォルトエンコードはUTF-8にして使っているのですが、 EUC-JPやShift_Jisで書かれたファイルを編集しようとしたら文字化けします。ついでに改行コードが対応していないくて1行で表示されてしまっているのもの直します…

Chromeが重いので軽量化する

OS:Ubuntu11.04 Let's note CF-W5すること ・IPv6の無効化 ・ChromeのDNSプリフェッチの無効化 結果から先に言うと 超快適になった Core2Duo メモリ1G だけどまだ戦える気になった。 - 以前、IPv6無効化の記事を書いた。 「ipv6」の検索結果 - taoru's memo…

古いpubuntuのアップデートでエラーが出るので対処した

Portable Ubuntu for Windows での話です。PorableUbuntuのアップデートマネージャが動かなくなった - taoru's memopubuntuのバージョンが9.04だったのですが、 アップデートができなくなりました。サポートが終わったりしたのかな。つい最近対処法を書いて…

PorableUbuntuのアップデートマネージャが動かなくなった

PorableUbuntu for windows sudo update-manager -dでいつもはアップデートマネージャ起動していたが、 Segmentation fauld が出るようになってしまった。起動する気配もない… 久々に起動したらこうなっていたので、直前の変化もよく覚えていない。 原因わか…

配列から複数の要素を削除しようとしてはまった

ある配列から、複数の要素を同時に削除しようとしてはまった。a = ["apple","banana","lemon","orange"]があったときに、 an を含む要素だけを取り除きたいとする (bananaとorangeを取り除きたい) a.each do |youso| if(youso =~ /an/) a.delete(youso) end …

Let'note CF-W5 に Ubuntu11.04 を入れた

windowsXPが今まで入っていたレッツノートさん。とっても遅かったので、このたびUbuntuを入れることにしました。 - まず起動が早い。そしてシャットダウンが早い。圧倒的スピード!Core2Duo メモリ1Gとかですが、素晴らしい早さで動いております。 - 使いそ…

Ruby/Mechanizeをインストールするときにはまった

Portable Ubuntu for Windows上での作業です。 gemでMechanizeをインストールした。ときに少しはまった。 sudo gem install mechanizeすると、 ----- libxml2 is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help wi…

rubygemsのアップデート

$ sudo apt-get install gemでgemを入れた後、 単純に sudo gem update --system してもアップデートされない。 $ sudo gem search -r rubygems-update ↑確認するだけ $ sudo gem install rubygems-update $ sudo /var/lib/gems/1.8/bin/update_rubygemsこれ…

UbuntuからEvolution mailを削除

メールなんてPortable Ubuntuで使いませんし。 sudo apt-get remove --purge evolutionubuntuを再起動したら、gnome panelが消えちゃったりはしなかったけど 見た目が古くなった。なぜに。

PortableUbuntu(9.04)のIPv6を無効化する

ちょっと高速化するらしいのでやってみる $ cd /etc/sysctl.dここに入ったところ2つのファイルがあった。 10-network-security.conf が怪しそうだったので、 sudo vi 10-network-security.confで編集モードに入り、 net.ipv6.all.disable_ipv6=1と1行どこ…

(私的メモ)Ubuntuを入れ直すときにやっておくこと(自分のため)

※apt-getでMecabは入れないこと※ ↑主にこいつのせい 0.97にしてから0.98にアップデートするところで詰まって諦めた。入れ直すときの流れ ・セーフモードで痕跡を全て削除 rd /s Portable_Ubuntu_DOSなんちゃら ・もう一度Portable_Ubuntuを展開 ・リポジトリ…

RDE使っててできる.1とか.2ってファイル

RDE

RDEで作業してると、ディレクトリ内に 例えばtest.rbを編集してたら,test.rb.1 test.rb.2なんていうファイルがいつの間にか出来てた。 どうやらバックアップらしい。RDE上で ツール->設定->ディレクトリ にバックアップ設定があった。無効にしてもいいけど、…

QLOOKアクセス解析