2012年10月29日月曜日

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

titanium_help日本語情報は下記Siteで。

 

そして大人しく本家の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
関連Wiki
17:11 Local Databaseの使い方。
設定値の保存とかによく使う。ObjectもJSON形式で保存すればいいよ。とか。
DatabaseとTableViewとの関連付け。
Working with Remote Data
関連Wiki
22:05 Web Server(Service)との通信方法とDemo。
Media and the Filesystem
関連Wiki
32:44 Audio Fileの再生、録音。
Videoの再生、Streaming。
端末のCameraまたはGalleryから写真を取得。
端末内の特定のDirectoryからFileを読み込み。
KitchenSink内の関連Sampleを解説。
Using Location Services
関連Wiki
33:24 位置情報関連
(まだ見てない)
Integrating Contacts & Social Media
関連Wiki
23:03 端末内のアドレス帳との連携、ソーシャルメディア。
(まだ見てない)
Integrating Web Content
関連Wiki
13:37 (まだ見てない)
Deployment & Distribution
関連Wiki
36:45 Android MarketとApp Storeへの登録方法、Build方法。概要だけ。

 

Official Documents は常に開きながら。Kitchen SinkなどのSampleを参考になる。

 

 

Titanium 3.0から「Alloy」というMVC Frameworkが標準になるらしいので、これを使った方がいいみたい。触ってみたけど、まだ発展途上なのでオススメしない。

 

 

Coding Guide(コーディング規約)関連

 

Viewの配置と位置関係に関しては下記記事を一読しておく。

親Viewに「layout: 'vertical'」を設定して、相対位置でViewを追加していくことが多いと思う。デフォルトは「layout: 'absolute'」

 

< Related Posts >

2012年10月22日月曜日

Nginx+PHP-FPMのTuning設定

nginx_php-fpm_tuningNginxとphp-fpm上で動いているWordPressの表示速度を最適化するために調べたときの覚書。

環境: CentOS 5.8 64bit, nginx 1.2.4, php-fpm 5.3.17

参考にしたのは下記Site.

 

目次

  1. ServerのCPU数に合わせてnginxを設定
  2. nginxのfastcgi cacheを設定
  3. 「Too many open files」対策
  4. 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;

 


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;

    server {
        ...

        location ~* \.php$ {
            ...

            # fastcgi cache
            fastcgi_cache         wpcache;
            fastcgi_cache_key     "$scheme://$host$request_uri";
            fastcgi_cache_valid   200 10m;
            fastcgi_cache_valid   301 1d;
            fastcgi_cache_valid   404 1m;
            fastcgi_buffer_size   16k;
            fastcgi_buffers       128 16k;
        }
    }
    ...
}

詳しくはOfficial Documentを参考に。

体感では早くなったのか分からない。。。設定が悪いのかな?

 


3.「Too many open files」対策

(2014/10/03 追記)開発用サーバーで「Too many open files」エラーログが頻発するので、調べてみるとworker_rlimit_nofileを設定するといいらしい。
参考:nginx で Too many open files エラーに対処する - Shin x blog

# vi /etc/nginx/nginx.conf

worker_rlimit_nofile 4096;

events {
    worker_connections  1024;
}

# /etc/rc.d/init.d/nginx configtest
# /etc/rc.d/init.d/nginx restart

 


4.gzipを有効にしてTraffic量を軽減する

nginxのconfに追記

server {
    gzip              on; 
    gzip_types        text/plain
                      text/xml
                      text/css
                      application/xml
                      application/xhtml+xml
                      application/rss+xml
                      application/atom_xml
                      application/javascript
                      application/x-javascript
                      application/x-httpd-php;
    gzip_disable      "MSIE [1-6]\.";
    gzip_disable      "Mozilla/4"; 
    gzip_buffers      64 8k;
    gzip_min_length   1000;
}

実際gzipを有効にすると、遅くなったところがあるので今のところ無効にすることにした。

速度の計測はGoogle ChromeのDeveloper Toolsを使うと簡単。詳しくは前の記事を参考に。

 

< 2012/11/26 Modified >
WordPressのAjaxで処理する箇所(wp-load.php)のみgzipを有効にしてみた。

location ~ /wp-load\.php {
    gzip           on;
    gzip_disable   "MSIE [1-6]\.";
    gzip_disable   "Mozilla/4";
    gzip_buffers   64 8k;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_intercept_errors on;
    include        fastcgi_params;
    client_max_body_size 20M;
}

location ~* \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_intercept_errors on;
    include        fastcgi_params;
    client_max_body_size 20M;
}

 


WordPressとMySQLの設定は下記記事も参考に。

 

< Related Posts >

2012年10月18日木曜日

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

motion_capture社内のWeb strategy Meetingのために調べたことを覚書。Idea次第で面白いことが出来そうな予感がする。

参考Site

 


Kinectとは

250px-KinectSensorMicrosoftからXbox 360向けに発売されたGame Device。人の動き(Gesture)や音声認識を可能にする。

「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)を使うことも可能

 


事例紹介

 

 

< Related Posts >

2012年10月17日水曜日

nginxのgzip_staticを有効に設定

nginx_gzip_staticnginxの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 >

2012年10月16日火曜日

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

Titanium_command-lineTitanium Studioが重いので、Command Line(Terminal)からBuild、実行できないものかと調べたときの覚書。

環境: Mac OS X 10.8.2, Titanium SDK 2.1.3.GA

Official Wikiに全ての答えがある。

 

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 >

2012年10月15日月曜日

[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

image

 

basics/builtins

image

 

basics/controller_events

image     image

 

basics/markup_events

image     image

 

basics/markup_require

image     image

 

basics/multiple_views

TapするとViewが切り替わる

image     image

 

ui/android_menu

下記Errorで起動せず。

[ERROR] Script Error = 'undefined' is not an object (evaluating '$.__views.index.activity') at index.js (line 34).

 

ui/buttonbar

image     image

 

ui/coverflow

Swipeすると画像をカバーフロー形式で一覧できる。

image     image

 

ui/map

image     image

 

ui/navgroup

image     image

 

ui/picker

image     image     image

 

ui/splitwindow

下記Errorで起動せず。

[ERROR] Script Error = this API is not available on non iPad devices.   in -[TiUIiPadProxy createSplitWindow:] (TiUIiPadProxy.m:43) at index.js (line 24).

 

ui/tabbedbar

image     image

 

ui/tabgroup

image     image

 

ui/tableview

image     image

 

ui/toolbar

image

 

widgets/basic

image     image

 

widgets/complex

image     image

 

widgets/widget_drawer

image     image     image

 

widgets/wpath

image     image

 

models/localStorage

下記Errorで起動せず。

[ERROR] Script Error = No support for localStorage persistence in non MobileWeb environments.

 

models/properties

image     image

 

models/sql

image

 

advanced/device_query

image

 

advanced/form_factor

image

 

advanced/inheritance

image     image     image

 

advanced/platform_folders

image     image

 

< Related Posts >

Related Posts Plugin for WordPress, Blogger...

Blog Archives