投稿

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

Titanium SDK 3.0からのTitanium CLIを使ってみる

イメージ
Titanium SDK 3.0のReleaseに新しいcommand-line interface(CLI)が含まれていたので使ってみた。 Titanium SDK 3.0.0に関してはOfficial Siteを参考に。 Release Notes Titanium SDK 3.0.0 - 12/14/2012 環境: Titanium SDK 3.0.0, node.js v0.8.16, titanium@3.0.22   今までも可能だったけど、いくつか設定が必要だった。詳しくは 前の記事 を参考に。 3.0.0からのTitanium CLIを使うとProjectの作成、BuildまでをCommand-lineで完結できるようになる(Titanium Studioを起動する必要がない)。 参考にしたSite. Titanium Command Line Utility Specification - Community - Appcelerator Wiki Titanium Command-Line Interface Reference   まずは準備。 node.jsのInstallが必要らしい。私はAlloyを試したときにInstall済みなのでそちらの記事を参考に。 MacにMacPortsをInstallしてnode.jsの環境を設定 for Alloy node.jsがIntasllされている環境だと、自動でInstallされるみたい。   使い方。 Project Folderに移動して下記Commandを実行 $ cd Documents/Titanium\ Studio\ Workspace/hoge $ titanium build -p ios --log-level trace Optionの意味は $ titanium build -h が一番詳しい。     < Related Posts > iOS SimulatorからPOSTしているDATAを確認(Network監視) Command Lineか...

XHProf + XHGuiをInstallしてPHPの実行結果を監視、解析する

イメージ
XHProfが便利と教えてもらったのでInstallしてみたときの覚書。 環境: CentOS 5.8, PHP 5.3.19, XHProf 0.9.2 (beta), nginx 1.2.5, mysql 5.5.28, Graphviz 2.12 参考にしたのは下記Site The Need for Speed: Profiling PHP with XHProf and XHGui   Install XHProf PECL(ピクル)に対応しているので、Install自体は簡単。 # pecl install xhprof-0.9.2 設定Fileを作成 # vi /etc/php.d/xhprof.ini extension=xhprof.so # /etc/rc.d/init.d/php-fpm restart   Install XHGui preinheimer/xhprof@GitHub からDownloadする。mysql serverはInstallしてある前提。 どこかに配置してconfigを設定 # cd /opt/xhprof/xhprof_lib/ # cp config.sample.php config.php # vi config.php $_xhprof['dbtype'] = 'mysql'; // Only relevant for PDO $_xhprof['dbhost'] = 'localhost'; $_xhprof['dbuser'] = 'root'; $_xhprof['dbpass'] = 'password'; // ※変更 $_xhprof['dbname'] = 'xhprof'; $_xhprof['dbadapter'] = 'Mysql'; // ※変更 $_xhprof['servername'] = 'mys...

[Titanium Mobile] WebView内のScrollを無効(Disable)にする

イメージ
WebViewを画面の中に組み込んでクリックは有効にしたいけど、スクロールは無効するTips。 環境: Titanium SDK 2.1.4 「scrollable」は効かなかった。「disableBounce」だけではダメ。「touchEnabled」はClickも無効になってしまう。 Official Forum ではhtml内に document.ontouchmove = function(event){ event.preventDefault(); } を記述する方法があるけど、親の画面のスクロールまで無効にしてしまう。 そこで、辿り着いたのがhtmlのCSSに html, body {overflow:hidden;} を記述する。これで大丈夫そう。 Sample Code var html = []; html.push('<!DOCTYPE html>'); html.push('<html>'); html.push('<head>'); html.push('<style>'); html.push(' html, body {overflow:hidden;}'); html.push('</style>'); html.push('</head>'); html.push('<body>'); html.push(content); html.push('</body>'); html.push('</html>'); var view = Titanium.UI.createWebView({     html: html.join(''),     disableBounce: true,     width: Titanium...

[Titanium Mobile] WebView内のLinkをClickしたときにSafariで開く

イメージ
WebView内のリンクをクリックしたときに遷移せず、イベントだけアプリに通知して、ブラウザを起動する方法。 環境: Titanium SDK 2.1.4 下記のようにHTML内にイベント通知用のJavaScriptを埋め込む。 // // HTMLを生成 // var html = []; html.push('<!DOCTYPE html>'); html.push('<html>'); html.push('<head>'); // window.onload用のJavaScriptを追加 html.push(getOnloadJavaScript()); html.push('</head>'); // Add body content html.push('<body>'); html.push(content); html.push('</body>'); html.push('</html>'); webview = Titanium.UI.createWebView({     html: html.join('') }); // // window.onloadで実行するJavaScriptを文字列で返す // var getOnloadJavaScript = function() {     // 全てのaタグのonclickイベントにフックする     var linkClick = function() {         var links = document.getElementsByTagName('a');         for (var i=...

[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() {     ...

[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 Center Sample Code auth = '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 Developers   tcpdumpを使う 下記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を使ってみる。参考にしたのは下記Site Installing Wireshark on Mac OS X 10.8 Mountain Lion - israeltorres.org DownloadはWiresharkの Official Site から。 Install後は一度Logout XQuartz もInstallしろと言われるのでDownload -> Install. Wiresharkを起動しても画面が表示されなかったので、ここで再起動 再起動後は無事起動した。   とりあえず、送信元からHTTPのみに制限する場合は「Filter」に ip.src == 192.1...

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

イメージ
Titanium Mobileを使ってiOSアプリを作成している時に、iOS Simulatorに動画を保存するにはどうすればいいか調べた覚書。 環境: Titanium SDK 2.1.4, Xcode 4.5.2 参考にしたのは下記Site iPhone/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.bak iOS 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証明書のInstall VeriSignで手続きを済ませたら「サーバ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_f...

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

イメージ
ScrollViewの中に TableView が入れ子になっていて、TableViewの行数が増えても自動的にScrollViewの高さが変化してくれなくてハマったときの覚書。 環境: Titanium SDK 2.1.4.GA scrollView = 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で買った

Titanium Mobileを使ったAndroid, iOS App開発に役立つLink集

イメージ
日本語情報は下記Siteで。 Titanium mobile で開発しだしたら役に立つ情報のまとめ | astronaughts.net (旧)Titanium mobile で開発を始める時に役立つ情報のまとめ | astronaughts.net   そして大人しく 本家のTutorial Video を見る(英語)。 どれも役に立つ内容ばかり。 動画 再生時間 説明 Titanium Overview 18:56 Titaniumの概要 You're a Native App Developer Now 33:06 Android SDKとXcodeの基本的な使い方。Debug Toolの紹介もある。Android, iOS開発したことがなければ見といた方がいい。 Titanium Studio 6:54 Titanium Studioの使い方。初めてTitanium Studioを使う場合は見といた方がいい。 Cross-Platform JavaScript Applications ( 関連Wiki ) 47:40 よく使うCoding Technics。 Fileの分割方法、どこでも呼び出せる関数の定義方法、Codingの注意点。 複数のPlatformで違う処理をする方法。 多言語Fileの作り方(Internationalization) 。 UI Fundamentals ( 関連Wiki ) 29:30 UIの基礎知識。 指定できる単位、画面、位置、Layout EventHandlerの基礎知識。 Working with Local Data ...

Nginx+PHP-FPMのTuning設定

イメージ
Nginxとphp-fpm上で動いているWordPressの表示速度を最適化するために調べたときの覚書。 環境: CentOS 5.8 64bit, nginx 1.2.4, php-fpm 5.3.17 参考にしたのは下記Site. Nginx and PHP-FPM Configuration and Optimizing Tips and Tricks nginx設定の検証(worker_processes、worker_cpu_affinity) | 楽しく情報処理技術者試験 Nginxを使ったもう一歩進んだWordPressチューニング | cloudrop apache のかわりにnginxを使ってみる(6) nginx でgzipを使うには | レンタルサーバー・自宅サーバー設定・構築のヒント Nginx | WordPress Codex 目次 ServerのCPU数に合わせてnginxを設定 nginxのfastcgi cacheを設定 「Too many open files」対策 gzipを有効にしてTraffic量を軽減する 1.ServerのCPU数に合わせてnginxを設定 ServerのCPU Core数を確認。 # cat /proc/cpuinfo |grep processor 最後が「processor:15」ならコア数は16。これをnginxのworker_processesに設定する # vi /etc/nginx/nginx.conf worker_processes  16; 【2019/04/03 追記】 worker_processes auto; でコア数を自動設定してくれる。 2.nginxのfastcgi cacheを設定 PHPの実行結果をcacheする設定をnginxに追記 http {     ...     fastcgi_cache_path /var/cache/nginx/fastcgi_temp/cache levels=1:2 keys_zone=wpcache:500m inactive=60m;   ...

Kinect for Windowsを調査。人の動きを検知して何か面白いことが出来るか考える

イメージ
社内のWeb strategy Meetingのために調べたことを覚書。Idea次第で面白いことが出来そうな予感がする。 参考Site Develop for Kinect | Microsoft Kinect for Windows 第1回: Kinectの概要 | エンジニアコラム|ユニダックス株式会社 Kinect for Windowsで機器を作るヒント(2) ―― Kinect for Windows SDK 1.5を試す|Tech Village (テックビレッジ) / CQ出版株式会社   Kinectとは MicrosoftからXbox 360向けに発売されたGame Device。人の動き(Gesture)や音声認識を可能にする。 Kinect - Wikipedia 「Kinect for Windows」はPC向けに近距離(Near Mode)に対応して2012年2月に発売。商用Applicationの開発が可能になった。   機能 RGB Cameraで色識別 Depth Censorで距離(深度)計測 赤外線を投射してDepth Censorが受け取っているので、暗闇でも識別可能 4つのMicrophoneで音声認識。発生源も分かる。 同時に2名までの骨格情報(Skeleton Data)。最大6名までの人物の認識 開発する際はSDKを通して人の骨格情報(Skeleton Data)を提供してくれる   価格、License Kinect for Windows : ¥24,800 商用利用可能 開発するのにWindows 7 + Visual Studio 2010以上の環境が必要 開発目的のためにKinect for Xbox360(¥14,800)を使うことも可能   事例紹介 東急プラザ 表参道原宿でのkinectを使った試着(iPadも使ってます) - YouTube 手術中にKinectを活用、執刀医がPCをジェスチャー操作 ニチイが世界初のシステム発売 - ITmedia ニュース...

nginxのgzip_staticを有効に設定

イメージ
nginxのgzip_staticを有効にすると静的なgzip圧縮ファイルを手動で用意しておけば、nginxがそちらを参照・送信するようになる。 CPUの負荷を軽減できる代わりにgzファイルを作る手間が増える。 WordPressのSitemapを作るPlugin がなぜ"sitemap.xml.gz"も作成するのか理由が分かった。 gzip_staticを使うには、nginxのCompile optionを指定してないといけない。 ./configure --with-http_gzip_static_module yum経由でInstallした場合は、どんなCompile optionが設定してあるか確認 # nginx -V Official SiteのRPMは with-http_gzip_static_module が付いてた。Install方法は 前の記事 を参考に。   < Related Posts > nginx + php-fpmの環境にAPCをInstallしてWordPressのCache機能を有効に CentOSにNginx + php-fpmをInstall、設定してWordPressを動かす

Command LineからTitanium Mobile AppをCompile(build)する

イメージ
Titanium Studioが重いので、Command Line(Terminal)からBuild、実行できないものかと調べたときの覚書。 環境: Mac OS X 10.8.2, Titanium SDK 2.1.3.GA Official Wikiに全ての答えがある。 Titanium Command Line Interface | Appcelerator Titanium Mobile   Aliasを追加する $ vim .bash_profile alias titanium="$HOME/Library/Application\ Support/Titanium/mobilesdk/osx/2.1.3.GA/titanium.py" alias ios_builder="$HOME/Library/Application\ Support/Titanium/mobilesdk/osx/2.1.3.GA/iphone/builder.py" 反映させる $ source .bash_profile 「hoge」projectで試してみる $ ios_builder run /Users/daiki/Documents/Titanium\ Studio\ Workspace/hoge/ 6.0 DirectoryのFull PathとSimulatorのVersionを与えるだけで動いた。 停止するときはControl-C   最初 OSError: [Errno 17] File exists のErrorが表示されたときはBuild以下のDirectoryを削除すると動いた。   < Related Posts > [Titanium] AlloyのSample App Screenshot一覧 TitaniumのMVC Framework"Alloy"用Sample Test Appsを動かす Titanium StudioにKitchenSink(コードサンプル集)をGitHubからDownload, Inst...

[Titanium] AlloyのSample App Screenshot一覧

イメージ
TaitaniumのMVC Framework "Alloy"をInstallしてSample Test Appを動かしてみた。Installの方法は 前の記事 を参考に。 環境: Mac OS X 10.8.2, Xcode 4.5, Titanium Studio 2.1.2, Titanium SDK 2.1.3.GA, node.js 0.8.11, Alloy 0.2.39 全て次のCommandで実行 $ /opt/local/lib/node_modules/alloy/ $ sudo jake app:run dir=basics/simple   basics/simple   basics/builtins   basics/controller_events        basics/markup_events        basics/markup_require        basics/multiple_views TapするとViewが切り替わる        ui/android_menu 下記Errorで起動せず。 [ERROR] Script Error = 'undefined' is not an object (evaluating '$.__views.index.activity') at index.js (line 34).   ui/buttonbar        ui/coverflow Swipeすると画像をカバーフロー形式で一覧できる。        ui/map        ui/navgroup   ...