投稿

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

MacをMavericksにしたらTortoiseSVNのコミットが失敗する

イメージ
TitaniumもMavericksをサポートするようになったので、開発サーバーになっているMac miniをMavericksにアップグレードしてみたときの覚書。環境: OS X Mavericks 10.9.1, Windows 8.1, TortoiseSVN 10.8.4WindowsからMacの共有フォルダにあるソースをTortoiseSVNでコミットしようとすると下記エラーError: Commit failed (details follow): 
Error: Can't move 
Error:  '\\hoge\hogehoge\.svn\tmp\svn-CF8BDE60' 
Error:  to 
Error:  '\\hoge\hogehoge\.svn\pristine\3a\3abd0eabfa1e58f83cfcce2403a3dc22dcb7ad79.svn-base': 
Error:  パラメーターが間違っています。  Macのログには下記エラー$ less /var/log/system.logDec 25 11:21:11 local smbd[184]: File system does not support 0X0, size attrs
Dec 25 11:21:11 local smbd[184]: File system does not support 0X40000, file attrs
Dec 25 11:21:11 local smbd[184]: File system does not support 0X0 time attrsフォーラムにも上がっていてまだ直ってないらしい。Server File Sharing unstable on mac and...: Apple Support CommunitiesSMB1のみに切り替えると出来るという情報があるが私の環境では成功しなかった。しょうがないので、しばらくはSSH経由でsvn commitすることにした(一度別フォルダに退避して、svn checkoutしてから上書きする)。MacのSubversionを1.8に挙げないとTortoiseSVNでログを確認できないのが不便。Appleさん、早く直してくださ…

Node.js + Expressの環境でファイルをアップロードする処理

イメージ
Titaniumで開発しているアプリからファイルをアップロードして保存する処理を開発していたときの覚書。環境:node.js v0.10.22, express v3.4.6, busboy v0.0.12よく見かけるのはapp.use(express.bodyParser());としてreq.filesを参照する方法。しかし、これを記述すると下記エラーをnodejsが出力する。connect.multipart() will be removed in connect 3.0
visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives
connect.limit() will be removed in connect 3.0リンク先を見ると、ディスクにファイルを保存するのはセキュリティ上の問題から非推奨となり、他のパーサーを使えとある。multipartybusboyを試した結果、難易度は上がるけどbusboyを使ってストリーム形式で処理することにした。理由はbusboyはアップロードするファイルサイズを制限できるから。ちなみにmultipartyはTitaniumからアップロードしたcontent-typeに対応してない(multiparty3.1.0で確認)。こちらのissue#29にあるように正規表現を直せば対応可能。サンプルコードはGitHubのReadmetestを見れば何となく分かると思う。実際に使ってみた注意点をいくつか(※v0.0.12)アップロードしたファイル名が日本語だとfilenameが化ける。issue#20に上がってる
→ filenameを使わない実装を推奨
→ ちなみにmultipartyは大丈夫
→ v0.0.13で修正されたらしい。試してない。  busboy.on('file')の中でfileに対して操作をしないとbusboy.on('end')が発生しない。このissue#16で説明してる。 ファイルサイズの制限に引っかかったら「limit」イベントが発生するので、書き込み中のファイルは自前で削除する必要がある。< Related Posts >node.jsでImageMagick + g…

node.jsでImageMagick + gmをインストールして画像処理

イメージ
Node.jsで画像処理(Resize, Crop)をする方法を調べたときの覚書。環境: CentOS 5.10, node.js v0.10.21GraphicsMagickもしくはImageMagickをnode.jsから利用できるモジュール「gm」が良さそうなのでインストールしてみた。< 2014/08/21 Modified >
CentOS6.5の環境ではYUM経由でImageMagick 6.5.4-7がインストールされて問題なかったので、こっちを推奨。まずはImageMagickでJPEGとPNGをサポートするようにライブラリをインストール
# yum install libjpeg libjpeg-devel libpng libpng-devel何となくJPEG 2000にも対応しておく
# yum install jasper-develImageMagickをソースからコンパイル(yum経由は古いから)
# cd /opt/software/
# wget http://www.imagemagick.org/download/ImageMagick.tar.gz
# tar xzvf ImageMagick.tar.gz
# cd ImageMagick-6.8.6-4/
# ./configure
# make
# make installバージョンの確認
# convert --version対応しているフォーマット一覧
# convert -list format今度はgmのインストール
# cd /home/project/hoge/
# npm install gmImageMagickを使う場合は次のようになる。var gm = require('gm').subClass({ imageMagick: true });
gm("img.png").resize(150, 150).write('/path', callback);USING IMAGEMAGICK | gm : GraphicsMagick for node.js< Related Posts >REST APIのテストする開発ツール Google Chrome「Postman」nginx + node.js + …

REST APIのテストする開発ツール Google Chrome「Postman」

イメージ
iPhone, Androidアプリ向けにRest APIなWebサービスを開発している時にアプリを起動せず簡単にテストするツールを探したときの覚書。参考testing - What tools can I use to test a REST API? - Stack OverflowWhat tools do you use to test your public REST API? - Stack OverflowREST / HTTP API Tools for Development and Testing | Minimum Viable PontificationGoogle Chrome拡張機能「Postman - REST Client」多機能でサクサク動くので使いやすい。履歴機能など必要なものは揃っていて、ソースコードも公開されているので素敵すぎる。Firefoxアドオン「Poster」「Postman - REST Client」があればいらない。インストール後は右下の「P」かツールから起動する。「Headers」は任意の値を設定するときに使う。「Parameters」を登録しておけば「Body from Parameters」で値を生成してくれるので便利。< Related Posts >nginx + node.js + pm2でアプリ向けのREST API環境を構築iOS SimulatorからPOSTしているDATAを確認(Network監視)IEのAjax通信をDebugするときにPOST情報を表示「Fiddler2」jQueryを使ってPHPとJSON形式のデータをやり取りする方法

Titaniumを使ったアプリと苦労した事とかのまとめ2013年

イメージ
Titanium™ Advent Calendar 2013の12日目です。今年の仕事はTitanium Mobileを使ったアプリ開発の1年でした。今回は開発したアプリの紹介と経験をまとめてみました。開発したアプリがこれ。teniteo(iPhone用アプリ)teniteo(Android用アプリ)このアプリの特徴WordPressのフロントエンド。本体 → http://teniteo.jp/ソースコードはiPhone, Android共通。たまに内部で処理を分岐。 Alloyは使ってない。
参考:[Titanium] AlloyのSample App Screenshot一覧サーバー側はWordPress(PHP)のプラグインで処理
参考:[Titanium] JSON.stringifyした値をPOSTしてもjson_decodeが失敗するMapモジュールを使ってる。
参考:[Titanium] Google Maps API v2用Androidモジュールを設定
参考:[Titanium] iOSとAndroidで地図アプリ(Google Maps)を起動Facebookアカウントでのログインも出来る。
参考:[Titanium Mobile] Facebook Moduleを使ったLoginが失敗するアクセス解析はサーバー側でやる。
参考:【PHP】Server-SideでGoogle Analyticsを使ったTrackingをする苦労したこと最初はどんな書き方をしていけばいいか分からない。
→ 最近公開されたChariTiというアプリが非常に参考になる。
参考:[Titanium Mobile]Performance改善のためApplicationの設計を見直す
参考:Titanium Mobileを使ったAndroid, iOS App開発に役立つLink集iPhoneアプリの方が開発しやすいがAndroidも途中で確認しないと後でハマる。
参考:Galaxy S4に対応したAndroid Emulator AVDを作成特にAndroidのマルチ画面関連の知識は避けて通れない
参考:anyDensity="false"から脱出するためにAndroidの画面サイズ関連を理解するAndroid2.3以下で画像を加工するとたまに落ちる
参考:[Titan…

Google Play BooksへPDF形式を登録・出版(電子書籍化)

イメージ
愛知県中心に発行しているフリーペーパー「teniteo」の東京版「teniteo mini」を無事出版できた。バックナンバー | teniteo[テニテオ]iPhone, Android向けのteniteoアプリも利用者が増えてきたので、以前から要望のある「フリーペーパー自体をスマフォで見れるようにしたい」というのをGoogle Play Booksでどの程度実現できるか試してみた。詳しくは公式ヘルプで。Google の Books ヘルプセンター利用登録後、ブックスパートナーで設定できる配信先は2つ。Google Play
→ 主にスマフォ向け「Playストア」で検索でき、購入後Androidの「Playブックス」で読める。
Googleアカウントで紐付いていて、いろんなプラットフォームで読む方法が提供されている(Web, Android, iOS)Google ブックス
→ 主にPC向けGoogleの書籍検索から検索・プレビューが出来るようになる。
プレビュー出来る範囲を指定可能。
Flash版のデジタルブックと比べて、本のような動きは出来ないけど問題なく読める。
Googleの検索に引っかかるようになるのは大きい。40ページ(46MB)のPDFファイルをアップロードして処理完了するまで、約1時間かかった。ページごとのPDFをアップロードすることも可能。その際はファイル名をガイドラインに従う必要がある。書籍の設定: コンテンツ ファイル - Books ヘルプ結局2時間経ってもGoogle Play、Google ブックスに表示されなかったので、次の日(約22時間後)確認したら表示されてた。teniteo mini 2013.WINTER 東京版 - Google Play の書籍teniteo mini 2013.WINTER 東京版: 就学前の子供を持つママの為の地域情報誌「テニテオ」 - Google ブックスでも「要対応」に次のエラーが表示されていて、Google Playから購入できない(価格は「無料」に設定)。この書籍は次の理由で掲載されていません: 価格情報がないか、適切ではありません「Google Playの設定」から価格のところで国コードを入力する箇所に「WORLD」としていたのが原因みたい。「JP」に変更してしばらくしたら無料でダウンロードできるよう…