投稿

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 setup Path 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 Post...

[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 Developers   iOS6の場合は「forceDialogAuth=false」でFacebookアプリの「バンドルID」...

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 nodejs v0.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...

[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 mta Sendmailを使ってた場合はchkconfigも忘れずに # chkconfig --add sendmail # chkconfig sendmail off # chkconfig postfix on Postfixの設定ファイルを編集。 # vi /etc/postfix/main.cf myhostname = 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/...

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

イメージ
今までSubversionとMS Excelでやってきたプロジェクト管理をGitとRedmineでやろうと設定した覚書。 環境:Amazon Linux AMI 2013.03, Redmine 2.2.3, ruby 1.9.3 Redmineのインストールは ALMinum を利用すると一発で完了する。Amazon AMIにも対応しているので、数行のコマンドを打つだけで後は自動でやってくれる。詳しくは前の記事で。 Project管理をRedmineでするためにALMiniumをInstallと設定   事前準備 スナップショットを取っておく ホスト名(アクセスするためのURL)を決めておく   設定内容 SSL(https)サポートを有効にしますか?(y/N) N (メール設定)番号選択: 1 Jenkinsをインストールしますか?[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....

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

イメージ
Amazon EC2にSquidをインストール、設定したときの覚書。EC2にSSH接続するまでは 前の記事 を参考に。 環境:Amazon Linux AMI(Region:Oregon) 2013.03, Squid 3.1.10     1.インストール rootになっておく # sudo su # yum install squid     2.設定 今回はローカルユーザー(Linux User)で認証するためPAM(Pluggable Authentication Module)認証を使う。 # vi /etc/squid/squid.conf auth_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 1234 EC2の場合は管理画面の「Security Groups」から使用するポートを登録すればOK。iptablesを設定する必要がない。     3.Linux Userを使うためのおまじない Linux Userを使うためにはchmodする必要があるらしい。詳しくは下記 squid : Optimising Web Delivery # chmod u+s /usr/lib64/squid/pam_auth     4.ユーザーの作成とSquid起動 Linux Userの追加 # adduser -s /sbin/nologin daiki # passwd daiki Squidを起動して、自動起動登録。 # /etc/...