投稿

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

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

イメージ
TitaniumもMavericksをサポートするようになったので、開発サーバーになっているMac miniをMavericksにアップグレードしてみたときの覚書。 環境: OS X Mavericks 10.9.1, Windows 8.1, TortoiseSVN 10.8.4 Windowsから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.log Dec 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 Communities SMB1のみに切り替えると出来るという情報があるが私の環境では成功しなかった。 しょうがないので、しばらくはSSH経由でsvn commitすることにした(一度別フォルダに退避して、svn checkoutしてから上書きする)。 MacのSubversionを1.8に挙げないとTortoiseSVN

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 リンク先を見ると、ディスクにファイルを保存するのはセキュリティ上の問題から非推奨となり、他のパーサーを使えとある。 multiparty と busboy を試した結果、難易度は上がるけど busboy を使ってストリーム形式で処理することにした。 理由は busboyはアップロードするファイルサイズを制限できる から。 ちなみにmultipartyはTitaniumからアップロードしたcontent-typeに対応してない(multiparty3.1.0で確認)。 こちらのissue#29 にあるように正規表現を直せば対応可能。 サンプルコードは GitHubのReadme と test を見れば何となく分かると思う。   実際に使ってみた注意点をいくつか(※v0.0.12) アップロードしたファイル名が日本語だとfilenameが化ける。 issue#20 に上がってる → filenameを使わない実装を推奨 → ちなみにmultipartyは大丈夫 → v0.0.13で修正されたらしい。試してない。  busboy.on('file')の中でfileに対して操作をしないとbusboy.on('end')が発生しない。 このissue#16 で説明してる。 ファイルサイズの制限に引っかかったら「limit」イベントが発生するので、書き込み中のファイルは自前で削除

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

イメージ
Node.jsで画像処理(Resize, Crop)をする方法を調べたときの覚書。 環境: CentOS 5.10, node.js v0.10.21 GraphicsMagick もしくは 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-devel ImageMagickをソースからコンパイル(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 gm   ImageMagickを使う場合は次のようになる。 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」

イメージ
iPhone, Androidアプリ向けにRest APIなWebサービスを開発している時にアプリを起動せず簡単にテストするツールを探したときの覚書。 参考 testing - What tools can I use to test a REST API? - Stack Overflow What tools do you use to test your public REST API? - Stack Overflow REST / HTTP API Tools for Development and Testing | Minimum Viable Pontification   Google 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&

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の設定」から価格のところで国