投稿

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

nodejsからPHPを実行してWordPressのユーザー認証

イメージ
nodejsを使ってiPhone, Androidアプリ用のRest APIを開発する際に、WordPressのデータベースを使ったユーザー認証をしたかったので調査。環境: CentoOS 5.10, node.js 0.10.21, php 5.4.21 最初はPHPでやっていることをJavaScriptで再現しようとしたけど、ソースコードを読んで無理そうだと諦めた。なので、nodejsからPHPを外部コマンドとして呼び出して返り値を受け取ることにした。nodejsから外部コマンドを実行するのは"child_process"を使うらしい。Child Process Node.js v0.10.22 Manual & Documentationnodejsから実行するPHPファイル。wp_checkpassword.php<?php
/**
* WordPress Check Password for CommandLine
*
* @usage
*   # php wp_checkpassword.php --hash="hash" --password="password" --path="/path/to/wordpress"
*/$options = getopt(null, array('hash:', 'password:', 'path:'));//
// Validation
//
if (empty($options['hash']) ||
    empty($options['password']) ||
    empty($options['path'])) {
  exit('option error');
}
//
// @see wp-includes/pluggable.php line:1448
//
$check = false;
require_once($options['path'] . 'wp-includes/class-phpass.php');
// By default, use the portable hash…

[Titanium Mobile]Performance改善のためApplicationの設計を見直す

イメージ
Android, iPhoneアプリが一段落したので、次期開発に向けてアプリの設計とより良いパファーマンスを得られる書き方など調べ直したときの覚書。環境:Titanium SDK 3.1.3.GAまず公式ドキュメントBest Practices and Recommendations - Titanium 3.X - Appcelerator Docsアプリのサンプルも公開されてた。Community app - Titanium 3.X - Appcelerator Docsでもこれ2年間更新されてない(SDK v1.8.1)ので、abcsWriterの方がいいかも。appcelerator-titans/abcsWriter | github両方とも「名前付き関数(named function)」を多用しているので無名関数(nameless function, anonymous function)とどっちがいいか調査。nameless vs named function · jsPerfAre named functions or anonymous functions preferred in JavaScript? - Stack Overflow名前付き関数の方が速いらしい。var hogeFunc = function() {};このような無名関数を基本使っていたのでショック。今後は名前付きにしよう。。。< 2013/11/20 Modified >ChariTiというアプリが非常に参考になる。lib/core.js, lib/http.js, utilities.jsとかヨダレが出そうになるぐらい。別記事で詳細を紹介する予定。去年のCODESTRONG(カンファレンス)のビデオを見てみた。Breakout session - iOS Internals and Best Practices - CODESTRONG 2012今後気をつけること。setterを使うよりプロパティでアクセスした方が速い "透明"はコストが掛かるので常に背景色を設定した方が速い関連した記事も見つけた。これは実際やってみる。Titanium Mobileでアプリ開発: UI部品数が多いView表示の高速化
→ visible=falseにして…

携帯(スマフォ)2台持ちなら激安SIM月額490円がお得

イメージ
最近激安SIMがあることを知ったので、契約して使ってみた。参考サイト格安SIM(ドコモMVNO等)LTE比較ランキング (2013年11月更新) | 最速資産運用契約したのはこちら。月額490円|ServersMan SIM LTE 100:【dream.jp】概要初期費用:3150円 月額:490円 ドコモ回線 回線最大速度100kbps(ドコモのXiは最大150Mbps) 転送量制限なし 高速化するオプション有り 1年縛り、2年縛りとかがないので気軽に試せる切り替える前のドコモ料金はこちら。ガラケー(F-01C)基本使用料
(FOMAタイプSS_バリュー)
+1年割り
+ファミリー割引924円ガラケー(F-01C)パケ・ホーダイ ダブル定額料372円スマフォ(Galaxy S2)基本使用料
(Xiデータプランフラットにねん)3791円スマフォ(Galaxy S2)SPモード300円これをガラケー+激安SIMにするとガラケー(F-01C)基本使用料
(FOMAタイプSS_バリュー)
+2年割り924円スマフォ(Galaxy S2)ServersMan SIM LTE 100490円単純計算で毎月3973円安くなる。100kbpsでも通勤途中は録画して転送した動画を見ているので問題なし。体感的には「ちょっと遅いかな?」という程度。電車の中の繋がりにくさは同じ。今度利用者数が増えると遅くなりそうな予感。。。「Xiデータプランフラットにねん」の解約金1万円を払っても変更した方が断然お得。ただ自分のスマフォが他社のSIMに変更出来るかは要確認。「パケ・ホーダイ ダブル定額料」を解約すると「Xiデータプランフラットにねん」が正規料金になってしまうので、月末(3日前ぐらいからOK)にドコモショップで手続きする必要がある。< 2013/11/28 Modified >
ドコモショップに行ってきたら解約当月は必ず「Xiデータプランフラットにねん」の正規料金を請求されるので、月末に行こうが関係ない。日割りに出来ないので、新しいSIMカードが届いたらすぐ解約しても大丈夫。値段は変わらないので月末まで持っててもいいかも。前の担当者は研修生だったので対応があやふや。やっぱり慣れている人だとサクサク話が進むので早い。ServersMan SIMカードは申し込んでから届くまでに1…

nginx + node.js + pm2でアプリ向けのREST API環境を構築

イメージ
前回の記事でWeb APIについて勉強し、モバイルアプリからのリクエストはNode.jsで捌くことにした。そのために環境を構築したときの覚書。環境:CentOS 5.10, Node.js 0.10.21, nginx 1.4.3, pm2 0.6.5< 2014/05/30 Modified >
CentOS6版も書いたのでそちらも参考に。SE奮闘記: CentOS6 + nginx + PHP5.4 + MariaDB10 + WordPress + node.jsの環境を構築する手順をまとめ1.Node.jsをインストール< 2013/12/09 Modified >
本番環境の場合は実行ユーザーで作成した方がいいので、この記事の最後の方を参照。前の記事を参考にnvmでインストールする。SE奮闘記: LESSファイルを監視してCSSファイルに自動コンパイルする環境を構築# nvm install v0.10.21
# nvm alias default 0.10.212.「Hello World」を作成プロジェクトディレクトリに移動
# cd /home/project/ExpressというNode.js向けのフレームワークをベースにする。restifyというREST Webサービス用に特化したモジュールもあるけど、開発のスピードと下記ベンチマークを参考にExpressを選択。expressjs vs perfectapi vs restify 速度比較 | ab benchmarks on EC2 medium instanceexpressjsの公式ドキュメント通りに「Hello World」を作る。
# vi package.json{
  "name": "hello-world",
  "description": "hello world test app",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "express": "3.x"
  }
}# npm inst…

iOSアプリをDistributeするときに120x120が必要になった

イメージ
Titanium Mobileで作成したアプリをストアに送信する「Validation」をしたときに下記エラーが出るようになった。Missing recommended icon file - The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format.120x120のアイコンが必要になったらしい。環境: Titanium SDK 3.1.3.GA参考にしたサイト。Icons and Splash Screens - Titanium 3.X - Appcelerator DocsiOS Human Interface Guidelines: Icon and Image Sizes | iOS Developer Library[iOS 7] iOSアイコンファイル早見表(2013/9) | Developers.IO上記サイトを参考にResources/iphone/appicon-60.pngResources/iphone/appicon-60@2x.pngを用意したらValidationが通った。< Related Posts >Titaniumで作成したアプリをApp Storeに申請してみた