投稿

11月, 2012の投稿を表示しています

[Titanium Mobile] WebViewのheightにTitanium.UI.SIZEが効かない

イメージ
WebViewのheightにTitanium.UI.SIZEを設定すると、最初は正常に表示されるけど、画面を行ったり来たりしていると潰れて表示しなくなる現象が発生。環境: Titanium SDK 2.1.4, iOS Simulator 6.0下記のように後からsetHeightするらしい。var webView = Titanium.UI.createWebView({
    height: Titanium.UI.SIZE,
    width: Titanium.UI.FILL,
    disableBounce: true
});
webView.addEventListener('load', function() {
    var height = webView.evalJS('document.height;');
    webView.setHeight(height);
});
this.mainView.add(webView);"disableBounce"は上限にScrollしたときに余白部分を表示させない設定。SDK 2.0から使えるらしい。< Related Posts >[Titanium Mobile] heightが動的に変化するときScrollViewを更新Titanium Mobileを使ったAndroid, iOS App開発に役立つLink集

[PHP] dBugを利用したDebug用関数

イメージ
WordPressで開発するときによく利用している自分用Debug関数を覚書。利用するのはdBug.ObjectやArrayを見やすく色分けしてくれる。こんな感じ。まずは普通に画面に出力。dBug.phpが同じ階層に必要。if (!function_exists('a')) {
    function a() {
        if (!class_exists('dBug')) {
            require_once ('dBug.php');
        }
        foreach (func_get_args() as $v) new dBug($v);
    }
}
これはdebug_backtraceを返すだけif (!function_exists('b')) {
    function b() {
        return debug_backtrace();
    }
}dBugの結果をFileに吐き出す。Ajaxやアプリ開発などでよく使う。「wp_upload_dir」を使っているのでWordPress依存。ここを書き換えれば任意の場所に出力可能。if (!function_exists('d')) {
    function d() {
        if (!class_exists('dBug')) {
            require_once ('dBug.php');
        }        // buffering
        ob_start();
        foreach (func_get_args() as $v) new dBug($v);
        $html = ob_get_contents();
        ob_end_clean();        // write down to html f…

[Titanium Mobile] Basic認証をかけてる開発用SiteにPOSTする

イメージ
開発用ServerはBasic認証をかけているので、Titanium Mobileで開発しているアプリからPOSTする際に必要な設定を覚書。環境: Titanium SDK 2.1.4参考にしたSite.xhr authentication with RESTful API | Community Questions & Answers | Appcelerator Developer CenterSample Codeauth = 'Basic ' + Titanium.Utils.base64encode(username + ':' + password);
xhr.setRequestHeader('Authorization', auth);
xhr.send();< Related Posts >Titanium Mobileを使ったAndroid, iOS App開発に役立つLink集nginxでBasic認証を設定.htaccessと.htpasswdで簡易ユーザ認証

[Titanium] JSON.stringifyした値をPOSTしてもjson_decodeが失敗する

イメージ
Titanium MobileでWordPressと連携するアプリを開発しているときの覚書。環境: Titanium SDK 2.1.4, WordPress 3.3.2, PHP 5.3.19<現象>
アプリ側でJSON.stringifyした値をPOSTして、PHP側でjson_decodeしても失敗する。<原因>
JSON文字列のダブルクォーテーションがエスケープされている。PHPの設定で「magic_quotes_gpc」はOFFになっているし、アプリ側でPOSTしたDATAはエスケープされていない。Networkを監視して、POSTする値を確認する方法は前の記事を参考に。確認用のPHPで試してみるとwp-load.phpに対してPOSTした値のみエスケープされている様子しょうがないので、json_decodeする前にstripslashesすれば問題なさそう。WordPressの場合、「stripslashes_deep」という関数もある。< Related Posts >iOS SimulatorからPOSTしているDATAを確認(Network監視)Titanium Mobileを使ったAndroid, iOS App開発に役立つLink集【Android開発】HttpClientとHttpGetでサーバーとjson通信する【PHP】json_decode, json_encodeを使えるようにjsonをインストール

iOS SimulatorからPOSTしているDATAを確認(Network監視)

イメージ
Titanium MobileでApp開発しているときにiOS SimulatorからServerにPOSTしているDATAを確認したくて調査。環境: Mac OS X 10.8.2 Mountain Lion, Wireshark 1.8.3, XQuartz 2.7.4下記記事が参考になる。On the Wire: Network Capture Tools for API Developers - Google Data APIs | Google Developerstcpdumpを使う下記Commandで監視出来る。
$ tcpdump -A -s 0 -i en0 dst or src host hoge.com and port 80これはInterface「en0」上で「hoge.com」とのHTTP通信を監視する。Interfaceは
$ ifconfig
で確認。アプリ開発はこれで十分。< 2013/07/10 Modified >
Macのtcpdumpだとサーバー側でnoticeエラー(PHP)が出力されても表示されなくなった。しょうがなくサーバー(Linux)にSSHでアクセスしてtcpdumpコマンドを打つようにした。
$ tcpdump -A -s 0 -i eth0 host 192.168.1.85 and port 80
Wiresharkを使うWiresharkという無料のNetwork監視Softを使ってみる。参考にしたのは下記SiteInstalling Wireshark on Mac OS X 10.8 Mountain Lion - israeltorres.orgDownloadはWiresharkのOfficial Siteから。Install後は一度LogoutXQuartzもInstallしろと言われるのでDownload -> Install.Wiresharkを起動しても画面が表示されなかったので、ここで再起動再起動後は無事起動した。とりあえず、送信元からHTTPのみに制限する場合は「Filter」にip.src == 192.168.0.11 && tcp.port == 80を入力して「Apply」する。< Related Posts >ネットワークの監視に関する…

iOS Simulatorの写真アプリにSample Videoを保存する方法

イメージ
Titanium Mobileを使ってiOSアプリを作成している時に、iOS Simulatorに動画を保存するにはどうすればいいか調べた覚書。環境: Titanium SDK 2.1.4, Xcode 4.5.2参考にしたのは下記SiteiPhone/iPadシュミレーターのカメラロールに動画を登録する方法 - 山本大@クロノスの日記動画はApple SiteからDownloadする。QuickTime: Sample files動画をSimulatorにcopy
$ Downloads/sample_mpeg4.mp4 Library/Application\ Support/iPhone\ Simulator/6.0/Media/DCIM/100APPLE/写真アプリの設定を削除
$ cd Library/Application\ Support/iPhone\ Simulator/6.0/Media
$ mv PhotoData PhotoData.bakiOS Simulatorをたちあげて、Homeを長押しで写真アプリを削除する。もう一度写真アプリを立ち上げればCopyした動画が見えるはず。< Related Posts >Titanium Mobileを使ったAndroid, iOS App開発に役立つLink集Command LineからTitanium Mobile AppをCompile(build)する

NginxにSSL(VeriSign)をInstall、設定

イメージ
VeriSignのSSL「グローバル・サーバID」をnginxにInstall、設定するまでの作業をMemo.参考にしたのは下記Site.Apache + OpenSSL CSR生成手順 (新規)|CSRの生成|日本ベリサインApache + OpenSSL サーバIDインストール手順 (新規)|サーバIDのインストール|日本ベリサインnginx で ssl 設定をする秘密鍵(Key)と証明書署名要求(CSR)を作成疑似乱数を作成
# touch rand.dat
# openssl md5 rand.dat > rand.dat秘密鍵の作成
# openssl genrsa -rand rand.dat -des3 2048 > 2012key.pem秘密鍵はBackupしておく。証明書署名要求(CSR)を作成
# openssl req -new -key 2012key.pem -out 2012csr.pemサーバIDと中間CA証明書のInstallVeriSignで手続きを済ませたら「サーバID」という証明書が送られてくる。これに中間CA証明書を追記する。中間CA証明書はOfficial SiteにLinkがある。あとはnginxのconfを設定して再起動する。こんな感じserver {
    listen       443 ssl;
    server_name  hoge.jp www.hoge.jp;    root    /home/httpd/hoge/httpdocs;
    index   index.php index.html index.htm;
    charset utf-8;    location = /robots.txt  { access_log off; log_not_found off; }
    location = /favicon.ico { access_log off; log_not_found off; }    ssl on;
    ssl_certificate      /etc/nginx/ssl.d/2012cert.pem;
    ssl_certificate_key  /etc/nginx/ssl.d/2012key.pem;
    ssl_protocols…

[Titanium Mobile] heightが動的に変化するときScrollViewを更新

イメージ
ScrollViewの中にTableViewが入れ子になっていて、TableViewの行数が増えても自動的にScrollViewの高さが変化してくれなくてハマったときの覚書。環境: Titanium SDK 2.1.4.GAscrollView = Titanium.UI.createScrollView({
    layout: 'vertical',
    showVerticalScrollIndicator: true,
    contentHeight: 'auto',
    top: 0
});
中のViewを編集したあとに空のViewをScrollViewに追加すると更新(Refresh)できた。scrollView.add(Titanium.UI.createView());< Related Posts >Titanium Mobileを使ったAndroid, iOS App開発に役立つLink集Command LineからTitanium Mobile AppをCompile(build)する

Apple Remote Desktopで使用しているPort番号

イメージ
外部(Singapore)から日本にあるMacにRemoteで接続するために調べた覚書。Macに外部から接続するには、VNC関連アプリかApple Remote Desktopが手っ取り早い。ただRouterにPort Forwardingを設定するのがちょっと敷居が高い。Apple Remote Desktop(ARD)で使用するPort番号はOfficial Siteを参考に。Apple ソフトウェア製品で使われる一般的な TCP および UDP ポート下記のような製品を使えば業者が全部やってくれると思うので、簡単かもしれない。リモート コンピュータ アクセス: どこからでも自分の PC や Mac を操作 | LogMeIn Pro< Related Posts >MacからWindowsにリモート接続する(リモートデスクトップ)

モルディブ(Maldives)に行って来ました。

イメージ
今月5日~10日は休暇をもらってモルディブに行って来ました。Paradise Island Resort
View Maldives in a larger mapこんな海は初めて。鮫も激写 (^^;写真は防水携帯Xperia Active (ST17i)で撮影。島の周りはシュノーケリングで十分楽しめる。せっかくなのでスキューバダイビングも1回だけやってみた。PADIでオープンウォーターを取得していたので、ライセンスカードをもっていなくてもネットで検索して確認してもらえた。便利。シンガポールからだと飛行機も含めて一人S$3000弱で行って帰ってこれるので、シンガポールに住んでいるならぜひ。< Related Posts >SingaporeでScuba Diving(スキューバダイビング)【海洋ダイブ編】ThailandのBangkokでThai Boxingを見てきたAndroid携帯Sony Ericsson製Xperia ActiveをM1 Shopで買った