投稿

4月, 2013の投稿を表示しています

Titanium CLIでAndroid向けにCompile(Build)と実機でDebug

イメージ
iOS向けの開発が一段落したのでAndroid向けに作業し始めたときの覚書。環境: Mac OS X 10.8.3, Titanium SDK 3.1.0.GA, Android SDK Platform-tools 16.0.2公式ドキュメントを参考に。CLI Quick Start | Titanium 3.X - Appcelerator DocsとりあえずコマンドオプションをAndroidプラットフォームに向けてビルドしてみると下記エラー。
$ titanium build -p android --log-level trace --target device[ERROR] Unable to detect Android SDK targets.「--adnroid-sdk」のオプションを付けても同じエラー。先に「setup」しないとダメらしい。
$ titanium setupPath to the Android SDK: (this is needed for building Android apps) /Applications/android-sdk-macosx設定ファイルは~/.titanium/config.jsonに保存された。Android実機にインストールするときには
設定 → セキュリティ → 提供元不明のアプリ
設定 → 開発者向けオプション → USBデバッグ
がオンになっていないと認識してくれないので注意。KichinSinkで試してみる。
$ titanium clean
$ titanium build -p android --log-level trace --target device実機でconsole.logの出力を監視したい場合はAndroid SDKのadb(Android Debug Bridge)を使う。別コンソールを起動して
$ cd /Applications/android-sdk-macosx/platform-tools/
$ ./adb -d logcat | grep -G '\(TiAPI\)\|\(TiApp\)'< Related Posts >Titanium SDK 3.0からのTitanium CLIを使ってみるiOS SimulatorからPOSTしているDAT…

[Titanium Mobile] Titanium.Utils.base64encodeに日本語を与えると正しく変換できない

イメージ
アプリからPHPにPOSTした際にjson_decodeがたまに失敗するので原因を調査。環境: Titanium SDK 3.0.2.GAデコードすると、文字列が途中で切れる感じ。SDK 3.1が出たけど直っているか試してない。参考にしたのは下記サイト。Titanium Mobileおぼえがき - 戸袋に手を引き込まれないようにバグらしいので、下記サイトで公開されているのを利用。Javascript で Base64 encode/decode - elm200 のノマドで行こう!< Related Posts >Titanium SDK 3.0からのTitanium CLIを使ってみるTitanium Mobileを使ったAndroid, iOS App開発に役立つLink集

[Titanium Mobile] Facebook Moduleを使ったLoginが失敗する

イメージ
Titaniumには、Facebookのアカウントを使ったログインやウォールへの投稿を簡単に実装できるモジュールがある(SDK 3.1からモジュール化した)。Facebookモジュールは公式ドキュメントが詳しい。Modules.Facebook | Titanium 3.X - Appcelerator Docsこれを使ってFacebookのアカウントを使ってログインする仕組みを開発しているときに、なぜかiPhone 4Sで認証が完了しない。ポップアップ(forceDialogAuth=true) → Facebookのログイン画面 → ログイン後画面が白くなって先に進まないiPod touchだと問題なくできる。自分の環境ではiPod touchしかないのでデバッグできない(再現しない)ので困った。ちなみにエミュレータ上では問題なく成功する。環境: Titanium SDK 3.1.0.GA, iPod touch(iOS 6.1.3), iPhone 4S(iOS 6.1.3)調べてみるとiOS6だと以下のことに注意と公式ドキュメントにも書いてある。Facebookに登録したアプリのバンドルIDとTitaniumのapp id(tiapp.xmlの「id」)が一致している必要がある。iOS 6以外は動かない。iOS 5の場合はforceDialogAuth=trueで処理する必要がある。 iOSデバイス側の設定 > Facebook でアカウントを登録しておく必要がある。(→ 登録してなくても成功した)  「forceDialogAuth」はfalse permissionsプロパティに含めることができない設定がある。詳しくは公式ドキュメントで。 書き込み権限を取得するには「reauthorize」を使う必要がある。ちなみにこの技術はFacebookのSingle Sign-On (SSO)と呼ばれている。iOS and Android: Single Sign-On Best Practices- Facebook DevelopersiOS6の場合は「forceDialogAuth=false」でFacebookアプリの「バンドルID」がキーポイントの様子。なるほどねーと実装してみたけどやはりiPhone4Sだと動かない。まとめるとiPhone4S…

Googleの検索結果の自分の写真が著作情報として表示されるようになった

イメージ
いきなりGoogleから「Google の著者情報プログラムへようこそ」というメールが来た。このブログが検索結果にヒットすると著作情報が表示されるようになったらしい。最近ネコの画像から自分の写真に変えたので、それが原因かな?自分が検索しているときに何となく写真が出ているのは閲覧を避ける傾向にあったので、表示されてもあまり嬉しくない。表示されたい方は公式サイトを参考に。作者情報 – 検索サービス – Google< Related Posts >Google八分?Googleのインデックスから削除された?

MacPortsを使って特定のバージョンをインストールする(nodejs編)

イメージ
Titanium SDK 3.1がリリースされたので、何となくnode.js自体をアップグレードしたら動かなくなったときの覚書。環境: Mac OS X 10.8.2, Titanium SDK 3.1, node.js 0.8.22, npm 1.2.18参考にしたサイトは下記howto/InstallingOlderPort – MacPortsまずはMacPorts自体を最新にする。
$ sudo port selfupdate
$ sudo port -d sync何も考えず全てアップグレードしてみる。
$ sudo port upgrade outdatedするとnodejsがv0.10.4とnpm 1.2.18にアップグレードされてTitanium関係のコマンドが動かなくなった。インストールされたソフトを一覧
$ sudo port installed古いバージョンにスイッチする
$ sudo activate nodejs @0.8.16_0+python27+sslせっかくなのでnodejs v0.8系の最新をインストールしてみる。ChangeLogはGitHubのwikiにある。MacPorts公式リポジトリから「nodejs 0.8.22」で検索。Portfileのリビジョン番号が「103783」とわかる。ダウンロードしてインストール
$ svn co -r 103783 http://svn.macports.org/repository/macports/trunk/dports/devel/nodejs/
$ sudo chown -R macports:macports nodejs
$ sudo mv nodejs/ /opt
$ cd /opt/nodejs
$ sudo port install確認
$ sudo port installed nodejsv0.10.4はアンインストール。インストールディレクトリも削除。
$ sudo port uninstall nodejs @0.10.4_0+python27+ssl
$ cd
$ sudo rm -rf /opt/nodejs/nodejs 0.8.22に対応するnpm 1.2.14にダウングレード。下記エラーが出たのでまずは一旦npmを全部アンインストールすることにした。Error: org.ma…

[xyzzy]Titanium Mobile開発するときのoutline-tree2用正規表現

イメージ
何度もEmacsに乗り換えたいと思いながら未だにxyzzyを使い続けてる。。。最近はTitanium Mobileを使ったiOSアプリ、Androidアプリを開発しているので、その時に設定した関数(メソッド)一覧を出力する正規表現の覚書。設定方法は前の記事が詳しい。[xyzzy]outline-tree2用のJavaScript関数(Class, Method)一覧表示する正規表現単純に「prototype」をキーワードとして一覧にする正規表現はこれ。\(\.prototype\.\)\([A-z]+\)これだけで十分分かりやすい。書き方は function Detail() {
}; Detail.prototype.window = function() {
};こんな風に統一する必要がある。 Lisp用の正規表現は下記を参考に(文字化けする場合はエンコードをeuc-jpにする)。GNU Emacs Lisp Reference Manual - 正規表現のシンタックス< Related Posts >Titanium Mobileを使ったAndroid, iOS App開発に役立つLink集[xyzzy]outline-tree2用のJavaScript関数(Class, Method)一覧表示する正規表現【PHP】正規表現で気になったPOSIXとPCREの違い正規表現で文字列の否定

Gmail(Google Apps)経由でメールを送信するPostfixのSMTP設定

イメージ
自宅内で開発している際にLAN内のLinux Serverからメールが送れなかったので、Gmail経由で送信するようにしたときの覚書。環境:CentOS 5.9, Postfix 2.3.3参考にしたのは下記ブログPostfix から Gmail 経由でメールを送る - 冒険するコンピューティング今使っているメールサーバがPostfixか確認する
# alternatives --display mta変更する場合は
# alternatives --config mtaSendmailを使ってた場合はchkconfigも忘れずに
# chkconfig --add sendmail
# chkconfig sendmail off
# chkconfig postfix onPostfixの設定ファイルを編集。
# vi /etc/postfix/main.cfmyhostname = dev.hoge.net
mydomain = hoge.net
myorigin = $mydomain
inet_interfaces = localhost
mydestination = localhost.$mydomain, localhost
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crtログインユーザー情報ファイルを作成
# vi /etc/postfix/sasl_passwd[smtp.gmail.com]:587 info@hoge.net:(password)Google Appsなら送信用のユーザーを作ってもいいかもしれない。ファイルのハッシュ化、権限変更してPostfix再起動
# postmap /etc/postfix/sasl_passwd
# chmod 600 /etc/postfix/sasl_pas…

Amazon EC2の環境にALMiniumを利用してRedmineをインストール

イメージ
今までSubversionとMS Excelでやってきたプロジェクト管理をGitとRedmineでやろうと設定した覚書。環境:Amazon Linux AMI 2013.03, Redmine 2.2.3, ruby 1.9.3RedmineのインストールはALMinumを利用すると一発で完了する。Amazon AMIにも対応しているので、数行のコマンドを打つだけで後は自動でやってくれる。詳しくは前の記事で。Project管理をRedmineでするためにALMiniumをInstallと設定事前準備スナップショットを取っておく ホスト名(アクセスするためのURL)を決めておく設定内容SSL(https)サポートを有効にしますか?(y/N) N(メール設定)番号選択: 1Jenkinsをインストールしますか?[y/N]yアプリケーションを動作させるためにセキュリティの設定を行いますか?[Y/n]Yメール送信はGoogle Appsを使うことにした。設定方法は下記参照。メール通知のためのconfiguration.ymlの設定 | Redmine.JP< Related Posts >Amazon Route 53を利用したDynamic DNSを構築Amazon EC2にSquid(Proxy Server)を設定してLocal Userで認証Project管理をRedmineでするためにALMiniumをInstallと設定

Amazon Route 53を利用したDynamic DNSを構築

イメージ
自宅のフレッツ光で固定IPを取得しようとすると月額4725円(wakwak)かかるので、開発サーバはAmazon Route 53を利用したDynamic DNSを構築することにした。環境: CentOS 5.9参考にしたのは下記ブログAmazon Route 53 で Dynamic DNS - 9mの日記1.Amazon Route 53でドメイン名を追加Route 53にアクセス。Hosted Zones → Create Hosted Zoneネームサーバの変更はRecord Setを編集してからにする。2.Record Setの編集(移行)Name Serverの変更がインターネットに伝搬するまで時間が掛かる(1時間ぐらいで反映された)ので、Record Setの登録をしておく。この辺はExampleを見れば大して移行は難しくない。Google Apps用のtxtレコードはダブルクオーテーションで囲む必要がある。spfとDKIMは改行して登録する。3.確認。ネームサーバの変更LinuxまたはMacでnslookupを打って確認してみる。
# nslookup -type=ANY -timeout=10 hoge.net ns-295.awsdns-36.com下記サイトでも確認できる。nslookup(dig)テスト【DNSサーバ接続・応答確認】ドメインを選択して表示される「Delegation Set」をレジストラに登録する。ちなみに私はvalue-domainを使っている。既存のName Serverは全て削除して登録。だいたい反映されるまで1時間ぐらい掛かった。4.認証ツールのインストール今度はLAN内の開発用サーバで作業。ちなみにこのサーバはVMware Fusion上のCentOS5。Amazon Route 53にアクセスするために認証ツールをダウンロードする。ここから。
# wget http://awsmedia.s3.amazonaws.com/catalog/attachments/dnscurl.pl
# chmod +x dnscurl.pl
# mkdir /opt/software/route53
# mv dnscurl.pl /opt/software/route53/AWSのアカウントコンソールでアクセスキーを生成。アクセスキー…

Amazon EC2にSquid(Proxy Server)を設定してLocal Userで認証

イメージ
Amazon EC2にSquidをインストール、設定したときの覚書。EC2にSSH接続するまでは前の記事を参考に。環境:Amazon Linux AMI(Region:Oregon) 2013.03, Squid 3.1.101.インストールrootになっておく
# sudo su
# yum install squid2.設定今回はローカルユーザー(Linux User)で認証するためPAM(Pluggable Authentication Module)認証を使う。# vi /etc/squid/squid.confauth_param basic program /usr/lib64/squid/pam_auth
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server acl password proxy_auth REQUIRED
http_access allow password logformat squid %tl %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt上記設定を「http_access deny all」の前あたりに挿入。一応ポート番号も変えとくhttp_port 1234EC2の場合は管理画面の「Security Groups」から使用するポートを登録すればOK。iptablesを設定する必要がない。3.Linux Userを使うためのおまじないLinux Userを使うためにはchmodする必要があるらしい。詳しくは下記squid : Optimising Web Delivery# chmod u+s /usr/lib64/squid/pam_auth4.ユーザーの作成とSquid起動Linux Userの追加
# adduser -s /sbin/nologin daiki
# passwd daikiSquidを起動して、自動起動登録。
# /etc/rc.d/init.d/squid start
# chkconfig squid on< Related Posts >Amazon EC2(AWS:Amazon Web Service)を利用する手順【Ce…