その人がどんなイベントに行くかをtwitterに自動投稿してくれる。
それを見て、「あ、俺も行きたい!」って思う人もいるかも。
5月
15
ソーシャルカレンダー
5月
15
好きな映画とかアニメのランキングを登録しておくと似た人を推薦してくれるサービス
なかなか、まわりに趣味の話ができる人がいない人におすすめ。
3月
28
PHP ceil関数のバグ? いや、仕様です。
ceil(52800 * 1 – 26400)
の結果が
3697
になる事象に遭遇。
電卓をたたくと、3696になるはずである。
すわ、PHPのバグか?と思ったが、いろいろ調べていくと仕様らしい。
ceil(round(52800 * 1 – 26400,5))
のように小数点5位で無理矢理まるめると
3696
になった。
やれやれ。
3月
11
amazonの欲しい物リストでマッチング
amazonの欲しい物リストを登録すると、同じような好みの人とマッチングしてくれるサービスとか面白いかもね。
2月
15
ORA-01861: literal does not match format string
オラクルを触っていて、以下のエラーが発生。
ORA-01861: literal does not match format string
<間違い>
update “XXXXX”.”YYYYY” set “APDAY” = ’2012/02/29 12:34:56′ where “ZZZZZ” = 20000734
<正解>
update “XXXXX”.”YYYYY” set “APDAY” = TO_DATE(’2012/02/29 12:34:56′, ‘yyyy/mm/dd hh24:mi:ss’) where “ZZZZZ” = 20000734
2月
13
the entitlements specified in your application’s code signing
デバッグ時にdist.plistのget-task-allowのcheckboxをOn
2月
12
iPhone/iPadアプリのiOS5対応
最初のiPhoneアプリをリリースして、1年半。放置していましたが、サポートサイトに「iOS5で動かないよ」という書き込みが。
最新のXCodeでコンパイルし直せばいいんじゃないのと、mac miniを立ち上げて、最新版のXCodeをインストールしようとすると、「Lionに上げろ」という。しょうが無い確かオンラインでダウンロードしてアップデートできたはずと、インストールしようとすると、「Core 2 Duo以上じゃないとだめ」といういう。残念!!うちのmac mini は、Core Soloでした。
数千円の売上しか上がってないのに、数万かけて新環境をつくるのもなんだかなあと思っていたら、知り合いからMacBookを借りることができたので、調査を始めました。
Lionまでインストールされていた状態だったので、XCodeの最新版をインストール。
プロジェクトを取り込んでみると、Warningがいくつかでていたので、それはちゃちゃっと直す。
さて、iOS5エミュレーターで実行。
だめでした。。。
EXC_BAD_ACCESSとか言っているので、何かメモリアクセスの部分でエラーになっているようです。
しかし、デバッガがとまった場所は、appleのライブラリ内なので、自分のコードのどこが影響しているのかわかりません。
Googleでいろいろ検索したところ、以下のサイトにたどり着きました。
http://program.station.ez-net.jp/special/xcode/xcode4/leak-check.asp
簡単に設定を記すと、
(1)アップルメニューのProductからEdit Scheme…を選択。
(2) “Run” スキームの “Diagnostics” タブの中から “Enable Zombie Objects” を選択。
で、エラーの原因となっているところがわかるらしい。
では、実行!!
おお!!確かに、自分のコード内でひっかかりました。
さて、ここからが本題。
ポインタ変数にアクセスしているところで、エラーになっている様子。
さて、ここでもいろいろググります。
で、たどり着いたサイトがここ。
http://www.zero4racer.com/blog/88
「2.オブジェクト型を生成する時には、必ずプロパティを作成する」の項目が該当していたよう。
ここで記載されているようにポインタ変数を、@property,@synthesize宣言した上、アクセスするときは、self.xxxxxのようにアクセスすとことが必要ということらしい。
さて、上記の修正を施した後、実行。
さて、どうか。。。。うまくいった!
やった~
iOS5になって、メモリ管理が厳しくなったようですね。
あとは、リリースするだけと思ったが、そこにも難関が。。。
続きは次のエントリで。
1月
29
Zendframework でOracle接続
Zendframework でオラクル接続しています。
config.iniにデータベース接続定義が記述されています。
mysql のときは、db.params.hostが必要でしたが、database.adapterをoracleにすると不要なようです。
オラクルのtnsnames.oraを使ってくれるようですね。
database.adapter = “oracle”
database.params.username = “user”
database.params.password = “password”
database.params.dbname = “test”
database.params.charset = “UTF8″
database.params.default = true
1月
14
Movable Type 4 (MT4)で画像が表示されなくなる問題
昔作ったMovable Typeのサイトで画像が表示されなくなったということで、ヘルプ依頼がきた。
レンタルサーバーの管理画面からディスクの空き容量を見ていると、かなり残り少ない。
↓
昔のファイルを削除してもらって、ディスク容量をあける。
↓
再構築
↓
まだ、駄目。
phpMyAdminをみるとmt_assetとmt_logテーブルが「使用中」となっていいて表示できない。
表示しようとすると、
Can’t open file: ‘mt_asset.MYD
というエラー。
ググるとテーブルを復旧すると直るらしい。
http://e-club3.hyperposition.com/seoblog/affairs/20070702215412.html
テーブル一覧からmt_assetとmt_logを選択して、テーブルの復旧を実行。
テーブルの内容は見られるようになった。
ブログを再構築。
↓
OK。
mission complete.
7月
09
さくらのVPSでfacebookアプリを動かす。
passwdでrootのパスワード変更
とりあえず、すべてのモジュールを最新に
yum update
tidyが必要なので、インストール
yum install php-tidy
※phpも一緒にインストールされる。
xmlも必要なのでインストール
yum install php-xml
facebookアプリを起動すると以下のエラーが発生
Fatal error: Uncaught exception ‘Exception’ with message ‘Facebook needs the JSON PHP extension.’ in /var/www/html/facebook.php:7 Stack trace: #0 /var/www/html/index.php(256): require() #1 {main} thrown in /var/www/html/facebook.php on line 7
jsonが無いらしい。
pecl install json
peclが無いと怒られる。
yum install php-pear
yum install php-devel
再度
pecl install json
vi /etc/php.d/json.ini でファイルを作って
extension=json.so
と記載。
service httpd restart
アプリを動かしてみると
Fatal error: Call to undefined function mb_convert_encoding()
というエラーがでる。
yum install php-mbstring
service httpd restart
動きました。
6月
24
[cakephp] find(‘count’)について
何も考えずに、
array(
"conditions" => $conditions, // 検索条件
'fields' => array('User.id')
);
$count = $this->User->find("count", $params);
とやって、$countが帰ってこないなあと思ったら。
fieldsを指定していると、countが実行されないらしい。
参考:http://d.hatena.ne.jp/solitary_shell/20090228/1235816868
array(
"conditions" => $conditions, // 検索条件
'fields' => array()
);
$count = $this->User->find("count", $params);
として、対応。
6月
10
[cakephp]他のコントローラーへPOSTすると何も表示されない
他のコントローラーの処理へPOSTで遷移しようとすると、何も表示されないままおわってしまうという現象に遭遇。
Securityコンポーネントを使用していたため発生していた。
そんなにセキュリティに気を使わなくてもよい画面だったので、Securityコンポーネントをはずして対処。
6月
10
[cakephp] group by を使っていると paginateが返す値がおかしい。
group byを使用して、paginateを使うと、帰ってくる値がおかしい。
結局、以下のように自分で計算・取得しなおして、対処した。
array(
"conditions" => array('Test.keyword' => $keyword), // 検索条件
'fields' => array('Test.id'),
'group'=>'Test.id',
'order'=>'Test.created'
);
$this->Test->recursive = 0;
$this->paginate = array_merge($params, array("limit" => $limit));
$results = $this->paginate();
// paginateが返す件数とページ数などがおかしいので修正する
$sql = 'SELECT id
FROM tests Test';
$sql .= " WHERE keyword='".$keyword."' ";
$sql .= " GROUP BY id ";
$results_count = $this->Test->query($sql, false);
$this->params['paging']['Test']["current"] = isset($this->params["named"]["page"]) ? $this->params["named"]["page"] : 1;
$this->params['paging']['Test']["page"] = isset($this->params["named"]["page"]) ? $this->params["named"]["page"] : 1;
$this->params['paging']['Test']["count"] = count($results_count);
$this->params['paging']['Test']["pageCount"] = intval(ceil(count($results_count) / $limit));
$this->params['paging']['Test']["prevPage"] = ($this->params['paging']['Test']["page"] > 1);
$this->params['paging']['Test']["nextPage"] = ($this->params['paging']['Test']["count"] > ($this->params['paging']['Test']["page"] * $limit));
// paginateが返すレコードがおかしいので修正する
$limit_from = ($this->params['paging']['Test']["current"]-1) * $limit;
$sql = 'SELECT id
FROM tests Test';
$sql .= " WHERE keyword='".$keyword."' ";
$sql .= " GROUP BY id ";
$sql .= " LIMIT ".$limit_from.",".$limit;
$results = $this->Test->query($sql, false);
6月
10
[cakephp]input(“id”)はhiddenになる
最近は、cakephpの仕事をしています。
個人的メモ。
echo $form->input(‘id’);
と記述すると、
のようなタグが出力される。
idは、キーとして使用される事が多いので、cakeが自動的に判断して、hiddenにしているようだ。
親切なんだけど、しばらく悩んだ。
11月
10
iPhoneアプリ AppStore申請まとめ
(1)事前に準備するもの
・AppStore用画像ファイル(512×512)
・サポートサイト
・アプリの名称および説明文
・アプリのスクリーンショット
→オーガナイザでキャプチャが取れます。(Default.pngとして保存されます。)余分な枠が付いてしまうので、画像編集ソフトで切り抜きました。サイズが決まっているので、それに合わせないとアップロード時に怒られます。
(2)配布用AppID作成
iOS Provisioning Portalから、App IDs→New App IDで、新しく作成する。
Description: アプリの説明
Bundle Seed ID(App ID Prefix): Generate Newのまま
Bundle Identifer (App ID Suffix): アプリのID。他とぶつからないようにドメインなどを使用する。
(3)配布用Provisioningファイルの作成
iOS Provisioning Portalから、Distribution→New Profileを開く。
Distribution Method: App Storeのまま
Profile Name: 適当に
Distribution Certificate: 自分の情報が出ているはず。変更できない。
App ID: (2)で作ったApp IDを選択
↓
直後は、StatusがPadingになっているので、何度かリロードするうちに、Activeになる。
(4)配布用Provisioningファイルの登録
(3)の画面で作成したProvisioningファイルをダウンロード。
ダウンロードしたファイルをダブルクリックすると自動的にオーガナイザが起動し、登録される。
(5)プロジェクトの設定
プロジェクトを選択し、情報を見るで設定を開く。
コード署名IDで、(3)で作ったファイルを選択する。
(プロジェクト名)-Info.plistファイルを開き、Bundle identifierを、(2)で作ったIDと同じく設定する。
(6)「iTunes Connect」にログインする
(7)契約情報の登録
※これを先にやらないと、アプリを有料で登録できません。私は、アプリの登録を先にしてしまってから気付きました。
契約情報と銀行の情報を登録します。
トップ画面上のContracts, Tax, and Bankingのリンクをクリック。
(8)Contracts Tax, and Banking画面
Contract Region = All、Contract Type=iOS Paid ApplicationのRequestボタンを押します。
(9)Add New Legal Entity画面
すでに内容は入力されていました。iOS Dev Centerに登録したときの情報が表示されているのでしょう。
変更してsubmitし直せと出ています。
新宿区が抜けていたので、追記して、Save。
(10)Review Agreement画面
言語をJapaneseにすると日本語で表示されます。
なんとか流し読みしましたが、ちゃんと読むのはきついなあ。。。
Agreeのチェックを入れて、Submit。
↓
Thank youの画面になるので、Done。
Contracts Tax, and Banking画面に戻ります。
Contract Region = All、Contract Type=iOS Paid Applicationが「Contracts In Processに移動しているはずです。
(11)Contact Information 連絡先の登録
Contact InfoのSet Upをクリック。
5種類登録しないといけないが、最初は誰も登録されていないので、選択できない。
Create New Personで一人追加して、みんな同じ人を選択して、Submit。
(12)Bank Information 銀行情報の登録
Bank InfoのSet Upをクリック。
Banking Informationで、Choose Bank Accountが空。
Add Bank Accountをクリック。
Bank Countryで、Japanを選択。
全銀コードを入力するようになっていますが、下のフォームで検索できます。
銀行名や都道府県をローマ字で入力するなり、郵便番号をを入力するなりして、一つに絞り込めれば、自動的に全銀コードが入力されます。
確認画面が表示されるので、Next。
↓
Bank Account Number:口座番号
Account Holder Name: 口座名義
→個人の名義で登録しました。本当は会社の口座を使いたかったのですが、名義のローマ字入力方法がわからなかったので。。。知っている方教えてください。。。
Bank Account Type: 口座種別
Bank Account Currency: JPYにしました。
と入力して、Nextをクリック。
↓
確認画面が表示されます。
「I certify that the information above is ….」のチェックを入れて、Save。
↓
Banking Informationの最初の画面に戻るので、追加した銀行を選んで、Save。
(13)Tax Information 税金情報の登録
Tax InfoのSet Upをクリック。
“U.S. Tax Forms”のSet up をクリック。(たぶん、これでよいはず。)
↓
「Are you a U.S. citizen, U.S. resident, U.S. partnership, or U.S. corporation?」と聞かれる。→No
↓
「Do you have any U.S. Business Activities?」→No
↓
「Certificate of Foreign Status of Beneficial Owner」の入力。
すでに入力されている項目もある。Type of Beneficial OwnerとTitleだけ入力して、
「I declare that the individual or organization named i….」のチェックボックスを入れて、Confirm→Submit。
(14)Contracts, Tax, and Bankingの入力完了。
Contract Region = All、Contract Type=iOS Paid ApplicationのStatusが、「Processing」に変わったので、Done。
(15)New Application画面の入力
「Manage Your Application」→「Add New Application」とすすむ。
Primary Language:言語を選択
Company Name:作者名を入力
(16)App Information画面の入力
App Name:アプリケーションの名前
SKU Number:製品番号らしい。私は、App IDを入れました。
Bundle ID:登録済みのアップIDから選択
(17)Rights and Pricing画面の入力
Availability Date: 今日の日付がデフォルトで表示されているはず。そのままにしました。
Price Tier: これで金額が決まるようです。今回は、115円のつもりなので、「Tier 1」を選択しました。
Discount for Education Institutions: 教育機関向けの割引だそうです。115円で割引されても困るので、今回はチェックを外しました。
※この時は、気付かなかったのですが、契約情報や銀行情報を登録していなかったので、アラートが出ていたはずなのですが、気付かずに進めたので、Freeで登録されてしまっていました。
Price Tier Effective Date: Now
Price Tier End Date: None
にして、Save。
ここで、
「Your contract for this price tier is being reviewed and is not yet active. Your app cannot be available on the App Store until your contract becomes active.」という警告がでてしまいました。
契約プロセスが完了していないのかなと想像。
(18)Version Information画面の入力
<Metadata>
Version Number: 今回は、初回なので1.0にしました。
Description: 適当に。
Primary Category: 今回は、Entertainmentにしました。
Secondary Category: 選択せず。
Keyword: カンマ区切りで複数入力
Copyright: 「2010 〜 Inc」のように入力するようです。
Contact Email Address: 連絡先のメールアドレス
Support URL: サポートサイトのURL
App URL: 省略
Review Notes: 省略
<Rating>
全部Noneにしました。
<EULA>
エンドユーザー向け使用許諾契約を独自に作る場合に必要らしい。今回は、無視。
<Images>
Large 512×512 Icon: AppStoreに載るときの画像。サイズ指定があるので、合わせる。
iPhone and iPod touch Screenshots:スクリーンショット画像。サイズ指定があるので、合わせる。
iPad Screenshots: iPad専用画面はないので、未選択。
この後、確認画面になるので、確認して、Done。
(19)アプリのアップロード
Manage Your Appsに、今登録したアプリが表示されていると思います。それをクリック。
アプリの詳細画面になります。VersionsのCurrent Version のView Detailsをクリック。
該当バージョンの詳細画面になります。右上のReady to Upload Binaryをクリック。
(20)Export Compliance画面
Export Compliance(輸出コンプライアンス)とのこと。
暗号化処理を含んでいるかどうかの確認らしい。今回は、No。
↓
アプリケーションのアップロードについての説明書きの画面が表示される。→Continue
※契約や銀行の情報の登録をせずにすすめていると、PricingがFreeになってしまいます。アラートが出ていたはずです。私は見逃していたので、Freeで登録されてしましました。
その後、契約情報や銀行情報を登録して、再度Pricingを選ぶと有料アプリが選べるようになりました。
しかし、現時点では、
「Your contract for this price tier is being reviewed and is not yet active. Your app cannot be available on the App Store until your contract becomes active.」
という警告がでて、Pricingが登録できませんでした。Statusが「Processing」なので、しばらく待ってみることにします。
→30分もしないうちに、Statusが変わってようで、「Contracts In Effect」に移りました。
(21)アプリのアップロード
とりあえず、アプリのアップロードだけ進めることにしました。
現時点では、オーガナイザーからしかアップロードができないようです。
XCodeで通常の「ビルドと実行」ではなくて、「ビルド」→「Build and Archive」でビルドすると、オーガナイザーのArchived Applicationsにアプリが表示されます。
表示されたアプリケーションをダブルクリックし、日付のところを選択すると、下のSharingエリアの「Submit Application to iTunes Connect」のボタンが押せるようになります。
クリックすると、IDとパスワードを聞かれるので、iOS Dev Centerのアカウントを入れます。
Identityを聞かれるので、App Store配布用のPropositioningを選択して、Submit to iTunse Connect。
しばらくすると、「Submitされたよ」というダイアログが表示されます。
この時点で、iTunes Connectのステータスが、「Waiting For Upload」から「Upload Received」に変わりました。
その後、すぐにステータスが、「Waiting For Review」に変わりました。
で、再度Pricingの設定を試みていたら、警告が無くなったのですが、登録は完了できないままです。
「The following error(s) occurred:
No changes have been made. Please make your changes or click “Cancel”」
というエラーが出ます。
Reviewが終わらないと登録出来ないんでしょうか。。。
10月
23
ダイエット
技術的なこととは、全然関係ありませんが、ダイエットの話です。
ここで書くことは、私が勝手に思いついてやっていることなので、科学的根拠とか確証はありません。ご了承の上、お読みください。
実は、ここで書いた記事は、英訳して英語版に載せています。今英会話勉強中なのです。技術的な記録以外の記事は、ライティングの演習のためにやっていることです。
英会話教室のGABAは、通常のスピーキングのレッスンの他に、英作文を持って行くと添削して返してくれるサービスがあります。おすすめです。
さて、現在ダイエット中です。
一番重かったときは、82キロだったのが、現在74キロです。
とりあえず、目標達成なのですが、まだお腹も出ていることだし、そんなにつらいダイエットではないので、10キロ減を目標に、72キロを目指そうかと思っています。
いつから、このダイエットを始めたのかは、はっきり覚えてはいないです。7/10に82キロだった記録は残っています。(高血圧なので、時々血圧を測るのと同時に体重も量ってメモしているのです。)すくなくとも、2ヶ月くらいはダイエット生活は続けていると思います。
実際やっているのは、夕食をヨーグルトと野菜ジュースだけにしているのと、ウォーキングです。
ウォーキングは、平均して1日30分以上歩いています。都内だと駅の間隔がせまく路線もいろいろあるので、その日の気分でどこまで歩くか調整できます。ただダイエットに役に立っているのかわかりません。たくさん歩いた日よりも、昼食も夕食も軽く済ませた日の方が体重が減っている気がするし。
夕食は、よくスーパーにある450グラムのプレーンヨーグルトを1個食べます。結構お腹にたまるので、満腹感が得られます。ヨーグルトはもともと好きなので、不満はありません。栄養不足を補うために、野菜ジュールを1杯飲みます。あと、サプリメント「マルチビタミン&ミネラル」も飲んでいます。
朝食と昼食は、普通に食べます。朝食は、ほとんどシリアル(フルーツグラノーラ)かチーズトーストです。
だけど、この生活だとタンパク質が不足気味なのですよね。昼食で補えてればいいのですが。タンパク質不足を補うために、玉子のせチーズトーストもやってみたのですが、面倒なので最近食べてません。
あとは、夜に25分以上湯船につかって、汗を出します。入浴前と入浴後に体重を量っていますが、風呂に入るだけで、500グラムは減っています。25分にしたのは、20分以上有酸素運動すると脂肪が燃焼し始めると聞いたからなのですが、関係ないかもしれません。
普通に定食とかお弁当を夕食に食べると、体重が増えていくので、おそらく他の人よりも基礎代謝が低いのでしょうね。筋肉を増やして、基礎代謝を増やした方がいいような気がします。体脂肪率は、25%超えですし。。。もっともコストパフォーマンスの良い筋肉増強用器具は、これ(トータルフィットネス(TotalFitness) エクササイズウィル STT021)がいいんじゃないかと誰かが言っていました。今度、買って試してみようと思います。
最近困っているのは、寒くなってきて、夜にヨーグルトを食べていると寒く感じることです。何か暖かい物を食べたくなってしまいます。何か、暖かくて、カロリーが低くて、おいしくて、簡単に作れる料理がないか考えています。コンソメスープにミックスベジタブルとベーコンを入れて、レンジで温めるだけ、というのが良さそうな気がしてます。今度、試してみようかな。
というわけで、目標まであと2キロ、もうちょっとダイエット頑張ります。
10月
21
文章を形態素解析して名詞にGoogle検索のリンクをはるTwitterクライアント
Twitterクライアントに表示されたツイートの中で出てきた単語を検索して調べたいときがあります。
よくあるクライアントでは、選択してコピーして、ブラウザにペーストして検索でした。
自動的に形態素解析して、単語毎にクリックできるようにして、自動的にブラウザが開くTwitterクライアントがあればいいなと思っていました。
しかし、なんとSAEZURIの最新バージョンでは、ツイート内の単語を選択して、右クリックすると「Googleで検索」コマンドが表示されるようになりました。
これでTwitter生活がかなり快適になりました!
10月
21
iPhone/iPadアプリのadhoc 配布(配信)まとめ
iPhoneアプリを知り合いに試してもらうために、adhoc配信について試してみたので、メモ。
(1)Device ID(識別子 UUID)の追加
iOS Provisioning Portal -> Devices -> Add Device で、配布先のDevice ID(識別子 UUID)を登録。
Device ID(識別子 UUID) は、配布先の端末をiTunesに接続して、確認可能。
iTunesに接続して、概要タブで見る限りは、識別子(UUID)が表示されていませんが、シリアル番号が表示されているところをクリックすると、表示が変わります。
(2)Profileの追加
iOS Provisioning Portal -> Provisioning -> Distribution -> New Profile で、Profileを追加
この時に(1)で追加したDeviceを選択
(3)Profileをダウンロード
開発環境のPC上で、Profileをダウンロードし、Finderからダブルクリックすると、オーガナイザが自動起動し登録される。
しかし、「A valid signing identity matching this profile could not be found in your keychain」というエラーになっている。
(4)Distribution用のCertificatesを追加
iOS Provisioning Portal→Certificates→DistributionからDistribution用の自分の証明書をダウンロード。
ダブルクリックしてキーチェーンに追加。
これで、(3)のエラーが消えます。
(5)plistの追加
XCode上のプロジェクトを右クリックし、新規ファイル追加→Code Sigining→Entitlements→次へ→dist.plistとして追加。
追加したdist.plistの”「get-task-allow」のチェックを外す。”という記載が他サイトの説明にあるが、どこをどうすればよいかわからかった。
調べると、iOS SDK 4からは、get-task-allowの定義が新規作成時に追加されなくなったらしい。
dist.plistの編集画面で、右クリックAdd Rowで行を追加し、get-task-allow という名前に変更する。(チェックをはずしたまま)
参考サイト:http://for-our-happy-life.blogspot.com/2010/07/sdk4entitlementsplist.html
(6)構成の追加
XCode上のプロジェクトを右クリックし、情報を見る→構成で、Releaseを複製して、AdHocDistributionを追加。(名前はたぶんなんでもよい)
(7)plistの設定
「アクティブなターゲットを編集し、Code Signing Entitlements に dist.plist と入れる」とある 参考:http://www.sukechan.net/archives/185/
この段階では、コード署名権限には、dist.plistがすでに設定されていた。
(8)プロビジョニングプロファイルの選択
プロジェクトのターゲット→(プロジェクト名)を選択し右クリック、情報を見る。
コード署名 ID > Any iPhone OS Device でそのプロビジョニングプロファイルを選択する。
→(4)を忘れていると、adhoc用のプロビジョニングプロファイルが選択できない!
エラーが無い状態であれば、選択できるようになっているはず。
(9)ビルド
Device – x.x | AdHoc Distribution | (プロジェクト名)を選択し、ビルトと実行
「実行可能ファイルの起動エラー」と出るがファイルはできている。(Deviceではなく、Simulatorで作成すると、実機にインストールできなかったので注意)
Finderから、プロジェクトのフォルダを開き、build→AdHocDistribution-iphoneosの中にアプリのファイルを取り出す。(*.dSYMは必要ないらしい。)
「codesignは、キーチェーンに含まれるキー”
(10)配布先へ送る
(3)でダウンロードしたxxxxxxx.mobileprovisionと(9)で取り出したアプリのファイルを圧縮して、配布先へメールなどで送る。
(11)配布先端末へのインストール
(10)で圧縮したファイルを解凍すると、xxxxxx.appディレクトリと、xxxxxxx.mobileprovisionがある。(Windowsで解凍した場合)
xxxxxx.appディレクトリと、xxxxxxx.mobileprovisionをiTunesのデバイスの所にドラッグ。
mobileprovisionをドラッグしたときに、「”xxxxxx.mobileprovision”はこのiPhoneで再生できないため、xxxxxxにコピー出来ませんでした。」と表示されるが、ちゃんとコピーされているらしい。
→同期後にデバイス上で、[設定]-[一般]-[プロファイル]を開きmobileprovisionファイルが登録されている事を確認できる。
アプリのリストから、画面が表示されているところにドラッグして、iTunes下部の適用ボタンを押す。
↓
完了!!
<参考>
・一度、ad hoc用ビルドをした後に、デバッグ実行しようとしたときに、「 The executable was signed with invalid entitlements.」というエラーが出て実行できなくなりました。(5)でdist.plistのget-task-allowのチェックを外していたのが原因だったよう。チェックを入れると実行できました。
参考:http://www.electrodream.jp/iphonedev/index.php/2009/06/the-executable-was-signed-with-invalid-entitlements/
9月
22
GAE/j用struts2環境構築
仕事でGAE/j上でstruts2を使いたかったけど、完全なまとめページがなかったので、自分でまとめました。
主に参考にしたサイト:http://d.hatena.ne.jp/suzune64/20090613/1244872314
同僚にも助言をもらいました。感謝!!
<環境>
eclipse: Pleiades All in one for Ultimate Developers 3.5 Galileo
GAEプラグイン:http://dl.google.com/eclipse/plugin/3.5 からインストール
9月
13
実機テスト出来た! – Apple Developer Program
以前、iPhone Developer Programを購入したものの、Activate出来なかったという記事を書きました。
その後、2回ほどコンタクトフォームから問い合わせたのですが、1ヶ月近く待っても、返事は来ません。しびれを切らして、今日電話をしてみました。
サイトには、日本用の電話番号が載っています。言語はEnglish or Japaneseとなっています。英会話勉強中でもあるし、単純な英語なので、なんとかなるだろうと電話してみました。いざ電話してみると「日本語の場合は、2を押してください。」とかいうではありませんか。迷わず、2を押してしまいました。(苦笑)その後、「電話が混み合っています。」というガイダンスを20分ほど聞いて、ようやくオペレータに繋がりました。
状況を説明すると、「手動で認証するためにメールを送るので、それに必要事項を記入して返信してください」とのこと。登録時に使用したメールアドレスと名前を伝えます。「では、メールが届くまでお待ちください。」と言われ、電話は終了。あっけない。
15分後くらいに、「Apple Developer Programの認証手続きについて、」というメールが届きました。即、請求先住所と注文番号を記入して返信します。「いつ有効になるかなあ」と、時々Activateのリンクをクリックしていたら、30分後くらいにステータスが変わって、Activateできました。(その後で、サポートから「調整が終わったので、手続きを進めてください。」というメールが届いています。)
その後は、手持ちの書籍「iPhone SDK3 プログラミング大全(ゲームプログラミング)」の説明に従って、作業しようとしたのですが、ちょっと段取りが違いました。(まあ、バージョンも上がってますしね。)
(1)ローカルで証明書要求を作成
→これは問題なく完了。
(2) 証明書の承認とダウンロード
→とりあえず、「iPhone Dev Center」から「iOS Dev Center」 に名称が変わっています。で、(1)で作った証明書をアップロードします。書籍には、「Approveボタンを押す」と書いてありましたが、押すことなくリロードするだけで、StatusがIssuedに変わり、Downloadボタンが表示されました。そして、証明書と「WWWDR intemediate certificate」の2つをダウンロードします。それぞれ、別々にダブルクリックするとアプリが立ち上がり、キーチェーンに登録されました。
(3)デバイスの登録
ここで、デバイス(私の場合は、iPad)をMacにつなぐのですが、こわいのでメインのWindows機で念のためバックアップをとります。(Mac miniをアプリ開発にしか使ってないので、iTunseはWindowsで使っているのです。)これに、20分くらいかかりました。
iPadをMac miniにつなぎます。iTunesが立ち上がりますが、怖いので即終了させます。(あらかじめ、自動同期しない設定にしておくべきでした。)
Xcodeを起動すると自動的に「オーガナイザ」が立ち上がり、iPadが認識されています。 (うろ覚えですが、この時にiOS Dev CenterのIDとパスを入れた気がします。)
書籍では、Identifierのコードをコピーして、iOS Dev CenterサイトのProgram Portal/Deviceで「Add Device」を押すように書かれていますが、すでに自動的に登録されていました。
(4)App IDの作成
ここで躓きました。 iOS Dev CenterサイトのProgram Portal/App IDsでApp IDを登録すると、書籍には書いてあるのですが、「New App ID」ボタンを押すと、
———————————————–
We are unable to process your request.
Please go back to the previous page, or quit your browser and try your request again.
———————————————–
と表示されて、登録出来ません。 しかし、「Xcode: Wildcard AppID」というアプリがすでに1個登録されています。もしや、これがそのまま使えるのではと思い、このまま先にすすみます。
(5)Provisioning Profileの作成
ここでも書籍では、「Add Profile」でProfileを追加するように書かれているのですが、iOS Dev CenterサイトのProgram Portal/Provisioningを見ると、「Team Provisioning Profile」というのが1個すでに登録されています。これも、そのまま使えるんだろうと思い、このファイルをダウンロードして、先に進むことにしました。
(6)プロファイルのインストール
ここでは、Xcodeの「オーガナイザ」で、プロファイルを追加するように書かれているのですが、認識されているiPadを選んでも追加するようなフォームが表示されません。あれあれ、と思いメッセージを読むと、「このバージョンのiOSには対応してないよ」と書いてあります。iPadはこの前アップデートしたので、3.2.2になっています。インストールされているXcodeは、3.2.3。iOS 3.2.2には対応していないようです。iOS Dev Centerで確認すると、「Xcode 3.2.4 and iOS SDK 4.1」がリリースされていました。ならばと、新しいXcodeをダウンロードして、アップグレードします。インストールに時間がかかり30分ほど待ちました。改めて、Xcodeを起動し直すと、iPadデバイスの画面が変わっており、プロファイルを追加できるようになっていました。しかし、すでに「Team Provisioning Profile」が1個登録されています。試しに、(5)でダウンロードしたファイルを追加してみても何も変わりません。同じもののようです。これで、この手順は完了。
(7)Xcodeプロジェクトの設定
書籍では、プロジェクトの設定を変更して、Profileを変更したり、App IDを編集したりするように書いてあります。しかし、Profileはですでに選択されているし、App IDの追加もしていないので変更のしようがありません。これもこのまま進めてしまうことにしました。(苦笑) 書籍では、この後、Xcodeのメイン画面左上のプルダウンから、Deviceを選んで、「ビルドして進行」でアプリが実機で起動すると書いてあります。しかし、私の場合このプルダウンで「SDKがないよ」(正確には忘れちゃいました)みたいな表示になり、実行できなくなっています。「なんでかなあ」と思い、メニュー→プロジェクトの設定を編集を開いて見てみると、「iOS Deployment Target」が「iOS 4.0」になっています。iPadは、まだ4には上がってないようなあと、3.2に変更してみると、Deviceが選択できるようになりました。そして、「Device – 3.2」を選択して、「ビルドと実行」をクリック、ビルドが終わると、しばらくしてiPadから「ぴろっ」と音がし、アプリが起動しました!ちゃんとシミュレータ通りの動きをしています!感動です!見せびらかしに行かなければ。
というわけで、ようやく実機テストまでたどり着きました。まだ、画像を綺麗に書き直す必要があるので、公開は先になると思いますが、実機で動くようになってので、人には見せられるようになりました。やれやれです。おしまい。