投稿

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

Titaniumで作ったサービス「たなごころ」の紹介。技術編

イメージ
Appcelerator Titanium Advent Calendar 2015 の16日目。今年開始したサービスの紹介。 園と保護者の連絡サービス「たなごころ」 保護者のスマホへ通知できて便利だよ。というサービス。 アプリは管理画面で承認しないとログインできないけど、スクリーンショットでだいたいのイメージは伝わると思う。 Android版デモ用アプリ | Google Play iOS版デモ用アプリ | App Store   詳細は上記サイトを参照してもらうとして、今回は技術的な特徴を紹介。 期間:約8カ月。ガラケー対応でプラス2カ月 要員:私一人(画面デザインはデザイナーに依頼)   簡単なシステム構成図はこんな感じ。     その他の特徴 園ごとにWordPressを立てて、アプリをリリース 園の運用に合わせてカスタマイズ(GitLab + Redmineで管理) 仮想サーバー4台(プロキシ:1、管理画面:1、アプリAPI:2)借りてネットワークを構築。負荷を見ながら増やす予定 現在位置を発信するアプリも作った。これは園のバスに乗る保育士さんに持ってもらってバスの現在位置を把握するため   Titaniumアプリ関連 Alloyは使ってない AndroidとiOSでファイルを分けない。必要なときだけ分岐する アイコンは全部ウェブフォント・・・にしたかったけど、一部ドロップシャドウがかかっているのは画像 Windowは起動してから1つだけ。ページっぽく見えるのはViewのvisibleで切り替えてるだけ Android 2.3対応のために Titanium SDK 3.5.1.GAから上げれない 今後の技術的な課題など Google Container Engineへ移行したい ガラケーとAndroid2.3を切り捨てることができたらどんなに楽か もっと自動化しないと私一人では耐えられない(深刻) 導入してもらった園には好評で来年度からは一気に増える。1法人で5施設契約してくれたところもある。 個人でも法人でも、技術セットが似てる方がいれば連絡ください。空いてる時間で手伝ってほしいです(切実)。 <

WordPress + WP-APIプラグイン + Titaniumアプリ

イメージ
Titanium Advent Calendar 2015 の9日目。WordPressとTitaniumアプリの連携。 TitaniumアプリからOAuth認証する方法を記事にしようと思ったけど、時間がなくなったので、WP-APIを使うと簡単にWordPressとやりとりできるよという話。 環境: CentOS 6.7, PHP 5.6.17, WordPress 4.3.1   目次 WP REST API v2をインストール Titaniumアプリからデータ取得 OAuth認証をしたい WordPress.org + Node.js   参考 WP REST API v2 Documentation   1.WP REST API v2をインストール ダウンロードしてきて、wp-content/pluginsに配置してアクティベートする。 WordPress REST API (Version 2) | WordPress Plugins 管理画面のSettings → Permalinksで「Default」以外を選んでRewriteを有効にしておく。 これでREST APIが有効になったか確認。 http://dev.wordpress.com/wp-json/wp/v2/posts/ のURLにアクセスしてみるとJSON形式のデータを取得できる。   2.Titaniumアプリからデータ取得 Titanium Studioから新規アプリを作成してapp.jsを下記のように編集。 var win = Ti.UI.createWindow({   backgroundColor:'#fff' }); win.add(Ti.UI.createButton({   title: 'Get data from WordPress' })); win.children[0].addEventListener('click', function() {   var client = Ti.Network.createHTTPClient({     onload: function(e) {       console.log(JSON.parse(e.so

静的WordPress向けNginxのfastcgi_cache設定

イメージ
WordPressで開発した静的ウェブサイトを公開するためにnginxの設定を見直したときの覚書。 環境: CentOS 6.7, nginx 1.8.0, PHP 5.6.15 fastcgi_cacheはPHP-FPMなどのバックエンドの結果をキャッシュする機能。 Nginxの設定ファイルの記述はWordPressの公式サイトを参考にした。 Nginx | WordPress Codex   設定ファイルをGistにアップしたのでこっちを見ながらの方が分かりやすいかも。 Nginx Configuration Files for WordPress | Gist   目次 FastCGIキャッシュ機能を有効に Nginxの設定ファイルを準備(キャッシュなし) キャッシュ機能が有効な設定ファイル Gzipの設定ファイル   1.FastCGIキャッシュ機能を有効に Nginx全体の設定なのでhttpディレクティブに記述する必要がある。 # cd /etc/nginx/ # less nginx.conf http {     # FastCGI Cache     fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=WORDPRESS:100m inactive=1d;     fastcgi_cache_key "$scheme$request_method$host$request_uri";     fastcgi_cache_use_stale error timeout invalid_header http_500; } ゾーン名: WORDPRESS 共有メモリ使用サイズ: 100M 保持期間: 1日間   2.Nginxの設定ファイルを準備(キャッシュなし) 各サイトごとの設定 # cd conf.d/ 共通の設定ファイルを作って、各サイトでincludeさせる。 まずはアクセス制限用設定ファイルを作成 # mkdir global # vi global/wordpress_restrictions.conf # # Global Restrictions for WordPress

TCP/IPとUNIX Socketの接続でどれくらい違うか

イメージ
NginxからPHP-FPMの接続とPHP-FPMからMariaDBの接続をTCP/IPとSocketで比較してみた。 環境: CentOS 6.7, nginx 1.8.0, PHP 5.6.15, MariaDB 10.0.22 基本的な概念は下記記事が分かりやすい。 nginx - 調べなきゃ寝れない!と調べたら余計に寝れなくなったソケットの話 - Qiita   リクエストはWindows上のab.exe(Apache Bench)からMac上のVMware Fusionの仮想マシン(CentOS)にあるWordPressに対して行う。 まずはPHP-FPMもMariaDBもTCP/IP接続で計測 C:> .\ab.exe -n 50 -c 5 http://dev.hoge.or.jp/ 1回目:14.03 [#/sec] 2回目:14.00 [#/sec] 3回目:19.92 [#/sec] 平均: 15.98 [#/sec] PHP-FPMへの接続をUNIX Socketに変えてみる。 PHP-FPMの設定 # less /etc/php-fpm.d/www.conf ;listen = 127.0.0.1:9000 listen = /var/run/php-fpm/www.sock Nginxの設定 # less /etc/nginx/conf.d/hoge.conf #fastcgi_pass  127.0.0.1:9000; fastcgi_pass   unix:/var/run/php-fpm/www.sock; サービス再起動 # /etc/rc.d/init.d/php-fpm restart # /etc/rc.d/init.d/nginx restart sockファイルをnginxから読み取れるように権限を変更しないと「502 Bad Gateway」になる # chown nginx.www /var/run/php-fpm/www.sock 計測実行 1回目:18.35 [#/sec] 2回目:17.64 [#/sec] 3回目:14.01 [#/sec] 平均: 16.66 [#/sec] ちょっとだけ速くなった。   次はMariaDBへの接続をUNIX Socketに変えて

アプリを別のアカウントへ移行(譲渡)

イメージ
Androidアプリ、iPhoneアプリを別アカウントへ移行させたときの覚書。   目次 Androidアプリを移行 iOSアプリを譲渡   1.Androidアプリを移行 公式ヘルプを参考に 別のデベロッパー アカウントへのアプリの移行 - Google Play デベロッパー ヘルプ 「デベロッパー コンソールの登録に使用した取引 ID」が少し分かりにくい。 Googleペイメント でデベロッパー登録したときの取引ID。 別料金もかからずすぐに反映された。   2.iOSアプリを譲渡 下記サイトが参考になる。 iTunes - App Storeに上がっているアプリを譲渡する方法 - Qiita 。。。一週間経っても移行先のアカウントにアプリが表示されないため、サポートに問い合わせてみた。 その後2回ぐらいサポートに督促のメールを送って、申請から約1ヵ月後に移行先アカウントにアプリが表示された。 メンバーセンターのApp IDsも移行される。 「Provisioning Profiles」は新規作成する。 別料金はかからなかった。   < Related Posts > Titaniumアプリでプッシュ通知(Push Notification)【iOS版】 Titaniumで作成したアプリをApp Storeに申請してみた

titaniumでビルドしたAPKファイルを解凍して中身をチェック

イメージ
titaniumでビルドしたAPKの中身がどうなっているか調査したときの覚書。 環境: Titanium SDK 3.5.1.GA 参考サイト Android apk の解析 - Qiita android リバースエンジニアリングのメモ | 開発メモ@uehi apkファイルはzip形式でアーカイブされているだけなので、unzipで解凍できる。 $ mkdir temp $ cd temp $ cp ../project/build/android/bin/hoge.apk ./ $ unzip hoge.apk assetsディレクトリに画像やフォントファイルがそのまま出力されている。 ソースコードはclasses.dexに入っているらしい。 これを変換するツールをダウンロードする。 dexからjarに変換するdex2jar pxb1988/dex2jar | GitHub そのjarをclassに変換するjad JAD Java Decompiler Download Mirror ダウンロードしたdex2jarを解凍。実行可能に $ unzip dex2jar-2.0.zip $ chmod +x dex2jar-2.0/*.sh 実行 $ ./dex2jar-2.0/d2j-dex2jar.sh classes.dex エラー Exception in thread "main" java.lang.UnsupportedClassVersionError: com/googlecode/dex2jar/tools/Jar2Dex : Unsupported major.minor version 51.0 JDK 1.7でないとダメみたい。 前の記事 などを参考にJDK 1.7にして再実行。 $ ./dex2jar-2.0/d2j-dex2jar.sh classes.dex dex2jar classes.dex -> ./classes-dex2jar.jar jarを展開 $ jar -x < classes-dex2jar.jar ダウンロードしたjadを解凍して実行可能に $ unzip jad158g.mac.intel.zip $ chmod +x jad

【Titanium】JDK 1.7だとエラーになるのでJDK 1.6をインストール

イメージ
Titaniumの開発でAndroidデバイスにインストールして動作確認しようとしたらエラーになったときの覚書。 環境:Mac OS X El Capitan 10.11.1, Titanium SDK 5.0.2.GA エラーメッセージ $ appc ti build -p android -T device [ERROR] Titanium requires JDK 1.6 when building on Mac OS X. [ERROR] You can download it from http://appcelerator.com/jdk-osx [ERROR] If you still see this message, then you may need to set the JAVA_HOME to help Titanium locate the JDK. [ERROR] To see which JDKs Titanium finds, run "appc ti info --types jdk --output json". 参考になったフォーラムの投稿記事 Titanium requires JDK 1.6 when building on Mac OS X | Community Q&A 結局JDKをインストールするしかないみたい。 公式サイトからダウンロードする Java for OS X 2015-001 インストールされた場所を確認 $ ls /Library/Java/JavaVirtualMachines/ 1.6.0.jdk       jdk1.7.0_80.jdk 1.7と切り替えたいので下記記事が参考になった。 MacでのJAVA_HOME設定 - Qiita java6に切り替えてみる。 $ export JAVA_HOME=`/usr/libexec/java_home -v 1.6` 確認 $ echo $JAVA_HOME /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home titaniumコマンドを使って確認 $ ti info --types jdk デフォルトで1.6を使

TV SlideViewの代替アプリ「sMedia TV Suite」を試す

イメージ
TV SlideViewのプラグイン が ZenFone 2 Laser に未対応で「お出かけ転送」出来ないので、代わりのDTCP-IP対応アプリを探したときの覚書。 自宅の環境 nasne(ナスネ) BDZ-EW510 | ブルーレイディスクレコーダー | ソニー AtermWG1800HP | 製品一覧 | AtermStation まずは昔使っていた Twonky Beam を試してみた(700円)。 転送途中でなぜかWifiが切断される。 → あとでルーターの設定とかいじってたら直った。 他にもDTCP-IP対応アプリがあったので購入してみた。 撮りためたTV番組を視聴 sMedio TV Suite - Google Play の Android アプリ 3つとも使ってみて、簡単な比較表を作ってみた。   TV SlideView Twonky Beam sMedio TV Suite 値段 500円 700円 900円 動画操作 CMスキップ (たまに失敗する) 30秒スキップ 10秒戻し 30秒スキップ 10秒戻し スキップが安定しない お出かけ転送 レコーダーがSony製ということもあり転送が安定してる 転送はバックグラウンドで行うので他の作業ができる BDZ-EW510から転送した動画の音飛びがひどい nasneとの連携は問題なし 転送中はアプリを切り替えてはダメ BDZ-EW510との接続がうまくいかないことが多い nasneとの連携は問題なし 転送中はアプリを切り替えてはダメ SDカード保存 × × ○ 使い勝手 使いやすい シンプルで分かりやすい 無駄なページが多くて使いにくい 感想 録画番組を削除する目的で使用中 悪くはない 「SDカード保存」が決めてでこれを使っている sMedio TV SuiteのUI改善を期待   < Related Posts > ASUS ZenFone 2 Laserを購入 Aterm MR03LN+激安SIMで自宅LAN構築。もう回線工事とかいらない Windows 8 + nasne + REGZA TV + Android + iPadで快適テレビ生活

PhpStorm10.0でTitanium開発用コード補完設定

イメージ
PhpStorm 10.0にアップグレードしてTitanium用コード補完を設定したときの覚書。   環境(WindowsからMac上のソースコードにアクセス) Windows: PhpStorm 10.0, Node.js 4.2.1 Mac: Node.js 0.10.37   目次 設定からダウンロードできない tsd typingsをインストール PhpStorm側で設定 Globalを個別に設定   1.設定からダウンロードできない PhpStormのSettings → Languages & Frameworks → JavaScript → Librariesから「Download...」しようとしてもtitaniumがなくなっている。。。 最近はTSDという TypeScirpt で書かれた書式設定用パッケージマネージャーを使うらしい。 Home | DefinitelyTyped DefinitelyTyped/tsd | GitHub   2. tsd typingsをインストール Macのコンソール上でtsdをインストール $ sudo npm install tsd -g titanium用書式設定を検索 $ tsd query titanium インストール $ tsd install titanium --save tsd.jsonとtypingsディレクトリが作成された。package.jsonとnode_modulesディレクトリの関係と同じ。 <2016/03/22 追記> tsdがdeprecatedになったのでtypingsに変更 $ sudo npm remove tsd --global $ sudo npm install typings --global 検索 $ typings search --name titanium 既存のtsdからアップグレード $ rm -rf typings $ typings init --upgrade $ typings install $ rm tsd.json   3.PhpStorm側で設定 Librariesの設定画面で「Add...」からtypingsディレクトリを選択する。

ASUS ZenFone 2 Laserを購入

イメージ
Nexus5が壊れたので、代替機はどれがいいものかと調査したときの覚書。 Nexus5は約19ヵ月で壊れたので、月々2,094円の計算。 Nexus5X も気になるけど高い!!(¥59,300~) 考えた結果、格安スマホを買うことにした 開発でゴリゴリ使うから寿命が短くなりがち 1年半ぐらいで買い替えた方がよさそう AndroidもOSとして落ち着いてきたので、最新を追わなくても大丈夫そう 欲しいと思う端末がない 格安スマホの実力を試してみたい   購入候補にあがった端末 ASUS ZenFone 2 Laser | 価格.com(¥28,766~) FREETEL SAMURAI MIYABI | 価格.com(¥20,340~) HUAWEI P8lite | 価格.com(¥27,700~)   ZenFone 2 Laserにした理由 ASUSが一番信頼できそう 端末自体はそんなに違いはないみたい。   使ってみた感想 使うアプリはNexus5と変わらないし、サクサク感を含めて使い勝手は変わらない 電源ボタンが端末の上部、音量ボタンが背面にあるのは間違えて押さなくていいかも 電源ボタンを押さなくてもダブルタップでスリープ解除できるのが便利 録画した番組をスマホ転送して見ていたけど、 TV SlideViewのプラグイン がZenFone2に対応してなくて「お出かけ転送」できない。これが一番痛い誤算   あとでDTCP-IP対応のアプリ探す。   ちなみに通話用のガラケー(F-01C)は5年ぐらい使っているけど、まだ現役でこれからも使う予定。 < 2016/03/03 Modified > F-01CのSIMをマイクロSIMに変えて、ZenFone 2 Laserの2番目SIMとして装着してみた。 通常は使えないが、「設定」→「モバイルネットワーク」→ 「優先ネットワークタイプ」を「2G」にすると使えるようになる。 そうすると格安SIM(IIJmio)が使えなくなる。 通常は「2G」に設定しておいて、Wifi環境がないところでネットワークを使いたい場合は「2G/3G/4G」に変更する使い方で運用中。 Docomo側で制御しているらしい。そのうち使えなくなるかもしれない

Nexus 5が故障 → 電池交換 → ダメ

イメージ
1年半前に買ったNexus5が突然電源が切れて、起動しなくなったので、電池交換してみたときの覚書。 現象 電源ボタン長押ししても起動しない 電源ケーブルを指すと一瞬「Google」の文字が表示された後、すぐ再起動がかかる。これがずっとループする 電源ケーブルを指してループしているときに、音量ボタンの下を長押ししているとセーフモードに入りそうな画面になるがすぐ再起動がかかってループ ちなみに数日前にAndroid 6にアップデートした。   Googleストアサポートに電話してみた。 Google ストア サポートへの電話 - Google Store ヘルプ 最初の番号を押してカテゴリー分けされる所で戸惑う。確か 1.購入に関する問い合わせ → 3.端末の故障に関する問い合わせ という順番で押した気がする。 状況を説明すると、付属の充電ケーブルを使ってほしいとか言われる。 こちらはバッテリーが原因だと思うので交換出来ないかと聞いてみると Google ストア サポートでバッテリー交換はできない LGのサポートに電話して、修理もしくはバッテリーの交換になる サポート期間の1年を過ぎているので有償になる という回答だった。予想はしていたので「そうですよね」で電話は終了。   自分でバッテリー交換してみることにした。 参考サイト 1年以上使用した「Nexus 5」のバッテリーを自分で交換してみました - GIGAZINE   Amazonで購入したものたち Li-Ion Polymer Battery 3.8V BL-T9 (for Google Nexus 5 LG D820 D821) ピーツール(P.Tool) 精密細工用工具 両頭ヘラ型 04673 バッテリーを購入してから到着まで4日かかった。店舗の住所を確認すればよかった。   すでに持ってたもの 45in1 精密ドライバーセット   裏カバーを外すのに失敗して、一箇所ツメをグリグリして切断してしまった。。。 あとは参考サイトに従って交換は無事完了。 。。。が、電源を押してみても起動せず。 電源ケーブルを挿してみても最初の症状と同じ。原因はバッテリーではないみたい。この届いたバッテリーが壊れていない保証はないけど。 諦めて、新しいス

一眼レフカメラデビュー。「ニコン D5500」を買った

イメージ
仕事の撮影は他の人にお願いしていたけど、カメラのスキルも覚えようと一眼レフカメラを買った。 買ったのは「 ニコン D5500 」 これに決めた理由 自撮りも出来るバリアングルタッチパネル 手頃な価格(コストパフォーマンス) 軽量 キャノンかニコンかで迷ったときは下記記事が参考になる。 中立の立場で考えるNikon or Canonの比較と選び方 - NAVER まとめ     価格.comでみると本体のみよりレンズキットの方が安かった。71,622円で購入。 ニコン D5500 18-55 VR II レンズキット 価格比較 | 価格.com 付属のレンズと購入した単焦点レンズ ニコン AF-S DX NIKKOR 18-55mm f/3.5-5.6G VR II 価格比較 | 価格.com ニコン AF-S NIKKOR 35mm f/1.8G ED 価格比較 | 価格.com   その他購入した関連グッズ Nikon ニュートラルカラーフィルターNC 58mm NC-58 Transcend SDHCカード 32GB Class10 UHS-I対応 (最大転送速度90MB/s) 無期限保証 TS32GSDHC10U1E (FFP) Transcend USB 3.0 Super Speed カードリーダー (SD/SDHC UHS-I/SDXC UHS-I/microSDXC UHS-I 対応) ブラック 2年保証 TS-RDF5K Nikon FLX スリングバッグ ブラック フレックスシリーズ 14.1L ブラック FLXSGBK 今すぐ使えるかんたんmini Nikon D5500 基本&応用 撮影ガイド [Kindle版] 本体も含め合計金額は132,997円。   < 2016/02/25 Modified > その後追加購入した関連グッズ。 ニコン AF-S DX NIKKOR 10-24mm f/3.5-4.5G ED 価格比較 | 価格.com Kenko レンズフィルター PRO1D プロテクター (W) 77mm レンズ保護用 252772 | Amazon.co.jp Velbon 携帯用一脚 ウルトラスティック スーパー8 8段 大型30m

グループウェア「Aipo」を別サーバーに移行

イメージ
移行作業をしたときの覚書。ちなみにAipoのインストール・導入は初めて。 環境 移行元: CentOS 5.10, Aipo 7.0.2.0 移行先: CentOS 6.7, Aipo 7.0.2.0   参考 インストール手順 - オープンソース|無料グループウェア「アイポ」   目次 移行先に必要なライブラリをインストール 同じバージョンのAipoを移行先にインストール 移行元からデータを移行 移行先サーバーでリストア nginxにリバースプロキシの設定   1.移行先に必要なライブラリをインストール 移行先のサーバーで必要なライブラリをインストールする。 # yum install gcc nmap lsof unzip readline-devel zlib-devel sudo   2.同じバージョンのAipoを移行先にインストール 公式サイトのダウンロード から移行元と同じバージョンをダウンロードしてくる。 解凍して/usr/localに配置 # tar -xzvf aipo7020aja_linux64.tar.gz # cd aipo7020aja_linux # tar -xzvf aipo7020.tar.gz # mv aipo /usr/local/ インストール実行 # cd /usr/local/aipo # sh ./bin/installer.sh ファイヤーウォール設定 # system-config-firewall-tui ポート番号: 81 プロトコル: tcp スタートしてみる # ./bin/startup.sh found temp directory Using CATALINA_BASE:   /usr/local/aipo/tomcat Using CATALINA_HOME:   /usr/local/aipo/tomcat Using CATALINA_TMPDIR: /usr/local/aipo/tomcat/temp Using JRE_HOME:        /usr/local/aipo/./jre Using CLASSPATH:       /usr/local/aipo/tomcat/bin/bootstrap.jar Start

CentOS7にDockerをインストール

イメージ
Dockerを理解しつつインストールして試したときの覚書。 環境: CentOS 7.1, docker 1.7.1-108   目次 やりたいこと Dockerとは CentOS7上にDockerをインストール コンテナを起動   1.やりたいこと Dockerで開発環境を構築 Google Container Engine(GKE) にDockerをアップロード 本番環境のバージョンアップはDockerを切り替えるだけで、サーバーメンテナンス不要に GitLab, Jenkins( Drone ), Redmineとうまいこと連携して幸せに   2.Dockerとは まずはDockerを理解するところから。私が読んだ本はこちら。 Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!] [Kindle版]   3.CentOS7にDockerをインストール Dockerエンジン(DockerサーバーとDockerクライアント)をインストール # yum install docker 確認 # docker version Client version: 1.7.1 Client API version: 1.19 Package Version (client): docker-1.7.1-108.el7.centos.x86_64 Go version (client): go1.4.2 Git commit (client): 3043001/1.7.1 OS/Arch (client): linux/amd64 Server version: 1.7.1 Server API version: 1.19 Package Version (server): docker-1.7.1-108.el7.centos.x86_64 Go version (server): go1.4.2 Git commit (server): 3043001/1.7.1 OS/Arch (server): linux/amd64 サービスの起動と有効化 # systemctl start docker # systemctl enable docker 確認 # systemctl -t servic

【Titanium】ModuleのGUIDを変えてビルド

イメージ
Titaniumの開発でGitHubにあるモジュールをcloneしてzipファイルをそのままコピーしてビルドしたら下記エラーになった時の覚書。 環境: Titanium SDK 3.5.1.GA エラーメッセージ Unlicensed module(s) detected. You must be a subscriber to use one or more of the modules included with this project. サポートBBSに回答があった。 モジュールの追加エラー | Don't Fall - Titanium Mobileユーザー会サポートBBS モジュールのguidを変更してビルドするといいらしいのでやってみた。   まずはgit cloneするところから。 $ cd Documents/Titanium_Studio_Workspace/ $ git clone https://github.com/iamyellow/TiKeyboardListener.git モジュールのguidを変更する $ cd TiKeyboardListener/ UUIDを生成 $ uuidgen D9D4FF49-EEBD-4485-A973-91F013DF2401 それを貼り付け $ vi manifest #guid: 48556ddf-0d85-4e4e-afc0-c430bd449826 guid: D9D4FF49-EEBD-4485-A973-91F013DF2401 SDKのバージョンも修正 $ vi titanium.xcconfig TITANIUM_SDK_VERSION = 3.5.1.GA Titanium Studioを開いてFile → Import... → 「Existing Folder as New Project」からモジュールとしてインポート。 プロジェクトを右クリック → Publish → Package - iOS Moduleから使用するプロジェクトを選択(Mobile App Project)して「Finish」   < Related Posts > TitaniumアプリでPush Notification【And

さくらのメールボックスのメールをGmailで送受信

イメージ
自前メールサーバーから「 さくらのメールボックス 」へ移行したときの覚書。 「hoge.sakura.ne.jp」がさくらのメールボックス上のドメイン名だとする。   目次 MXレコードの設定 さくらのメールボックス管理画面でアカウント作成 GmailからSMTP設定して送信できるようにする   1.MXレコードの設定 ドメインの管理はValue-Domain(バリュードメイン)で管理しているのでDNSの設定からMXレコードを追加する mx hoge.sakura.ne.jp. 10 txt @ v=spf1 include:_spf.google.com a:www1234.sakura.ne.jp ~all spfは管理画面の「サーバー情報の表示」にあるホスト名を登録する。 「mail.hoge.co.jp」を「hoge.sakura.ne.jp」の別名にする場合 cname mail hoge.sakura.co.jp. 最後のドットが必要   2.さくらのメールボックス管理画面でアカウント作成 「メールアドレスの管理」からアカウントを作成。 この時に「メール転送」項目に転送先Gmailを追加して、「転送専用にする」にチェック。 転送されるかメールを送って確認。 ウェブメールにログインして個別に設定することも可能。 https://secure.sakura.ad.jp/rscontrol/?webmail=1   3.GmailからSMTP設定して送信できるようにする Gmailの設定 → アカウントとインポート → メールアドレスの追加 「エイリアスとして扱います」のチェックを外す。 確認のメールが送信される。   < Related Posts > Gmail(Google Apps)経由でメールを送信するPostfixのSMTP設定 [Google Apps]DNSのSPFとDKIMを設定してSecurityを高める(送信Domain認証)

【CentOS6】YUM(Remi)経由でPHP5.4からPHP5.6に移行

イメージ
PHP5.4のサポートが切れるのでPHP5.6にアップグレードしたときの覚書。 環境: CentOS 6.7, PHP 5.4.44   目次 現状の確認とバックアップ PHP 5.6にアップグレード 日本語形態素解析「MeCab」を再インストール   1.現状の確認とバックアップ PHP 5.5と5.6の変更点を確認 PHP: PHP 5.4.x から PHP 5.5.x への移行 - Manual PHP: PHP 5.5.x から PHP 5.6.x への移行 - Manual インストールされているパッケージを一覧表示 # yum list installed | grep php php.x86_64                5.4.44-1.el6.remi      @remi php-cli.x86_64            5.4.44-1.el6.remi      @remi php-common.x86_64         5.4.44-1.el6.remi      @remi php-devel.x86_64          5.4.44-1.el6.remi      @remi php-fpm.x86_64            5.4.44-1.el6.remi      @remi php-gd.x86_64             5.4.44-1.el6.remi      @remi php-mbstring.x86_64       5.4.44-1.el6.remi      @remi php-mcrypt.x86_64         5.4.44-1.el6.remi      @remi php-mysqlnd.x86_64        5.4.44-1.el6.remi      @remi php-pdo.x86_64            5.4.44-1.el6.remi      @remi php-pear.noarch           1:1.9.5-13.el6.remi    @remi php-pecl-igbinary.x86_64  1.2.1-1.el6.remi.5.4   @remi php-pecl-memcache.x86_

【Node.js】非同期処理をasyncからPromise(bluebird)に乗り換えるか

イメージ
ES6から非同期処理の仕組みが強化されたので調査したときの覚書。 今までは async.js を使っていた。全く問題なかったけど、速度的には遅い方らしい。 Why I am switching to promises   目次 Promise Generator 今後どう書いていくか   まずはES6で標準入りしたPromiseとGeneratorを理解するところから。   1.Promise 下記サイトが分かりやすい。 Chapter.1 - Promiseとは何か | JavaScript Promiseの本 Promiseは非同期処理を抽象化したオブジェクトとそれを操作する仕組みの事をいいます。 今までコールバックしていたのをPromiseを通して操作すると一貫した書き方が出来るようになる。 Node.jsエンジニアなら2014年内に知っておきたいPromise入門 | Tokyo Otaku Mode Blog Promiseをラッピングして使いやすくしているライブラリが bluebird 。 よく使うasync.parallel()はPromise.all()で置き換えることが出来る。 bluebird/API.md at master · petkaantonov/bluebird | GitHub   2.Generator 処理を任意の時点で止めて再開できるフロー制御の仕組み。 「function*」でGeneratorであることを宣言。「yield」キーワードで止める箇所を指定。 非同期関数をyieldで宣言して、順次実行するのに便利。 Generatorを利用したフロー制御のライブラリが co 。 サンプルプログラムとかは下記記事を参考に。 Node.js 0.12 では yield が使えるのでコールバック地獄にサヨナラできる話 - てっく煮ブログ   3.今後どう書いていくか 個人的にGeneratorの「function*」「yield」という見慣れないキーワードを書くのに抵抗があるので、Promise中心でいく予定。 既に試してみた方の記事もあるので参考に。 Node.js - 最近のjs非同期処理 PromiseとGeneratorの共存 - Q

Titaniumでlodashを使う

イメージ
Titaniumで開発するときは外部ライブラリを使わずネイティブなJavaScriptの書き方をしていたけど、Alloyは underscore.js 使っているし、新規開発は lodash を使おうと設定したときの覚書。 ちなみにAlloyを使わずにレガシーな書き方をしてる。 環境: OS X 10.10.4, Titanium SDK 4.1.0.GA   参考 UnderscoreとLodashが統合に向けて議論 | InfoQ lodash custom builds   1.lodashをダウンロード、インストール 今後のバージョンアップを簡単にするためにlodashコマンドをインストール $ cd /path/to/project/ $ sudo npm install -g lodash-cli コマンド確認 $ lodash --help 「modularize」にしようか迷ったけど、とりあえず一つのファイルの方が管理しやすいので「modern」でインストール。 $ lodash modern --production --output Resources/lib/lodash.js var _ = require('lib/lodash');     2.PhpStrom用設定 なぜかPhpStormでunresolvedのWarningが出るので、npmとしても追加する。 $ npm install lodash --save-dev node_modulesを「library home」に設定。 Settings -> Languages & Frameworks -> JavaScript -> Libraiesで「lodash-DefinitelyTyped」を追加しても「unresolved」は消えなかった。   複雑な処理はAPI(サーバー)側でやっているので、そんなにlodashの出番がない。。。   < Related Posts > 今年のTitanium向けに書いた記事まとめとアプリ紹介2014版 【Titanium】thisとparentとchildrenを使った書き方

CentOS6にfontcustomをInstallしてWebフォントを作成

イメージ
IE8のサポートが2016/01/12に終了するし、受注したホームページ案件にWeb(アイコン)フォントを使用したときの覚書。 WebフォントはIE9以上でないと表示できない。 簡単に流用出来てしまうし、手間と効果を考えるとホームページ程度なら画像で十分な気もする。 環境: CentOS 6.6, fontforge-20090622, fontcustom-1.3.8   目次 fontcustomをインストール SVGをフォントに変換 Twitter Bootstrapと併用する   1.fontcustomをインストール gemを実行するのでRubyが必要。前の記事を参考に。 SE奮闘記: GitをSourceからBuildしてRubyの最新版をInstall あとはGitHub上のREADME通りに。 FontCustom/fontcustom | GitHub フォント作成プログラム fontforge をインストール # cd /opt/software/ # yum install fontforge woffに変換用プログラムをインストール # wget http://people.mozilla.com/~jkew/woff/woff-code-latest.zip # unzip woff-code-latest.zip -d sfnt2woff && cd sfnt2woff && make && sudo mv sfnt2woff /usr/local/bin/ gem経由でfontcustomをインストール # gem install fontcustom 確認 # fontcustom --version fontcustom-1.3.8   2.SVGをフォントに変換 デザイナーが作成したイラストレーターファイルからSVGとして書き出す。出力時のオプション。 変換コマンド実行 # /path/to/project/fonts/ # fontcustom compile svg/ --name=icons --output=icons CSSも出力してくれるので使いやすい。   3.Twitter Bootstrapと

子育て支援ウェブサービス

イメージ
teniteo や たなごころ を開発しているので、気になったサービスの覚書。WBSなどテレビで紹介されてた。   参考 知らないと損!子育てのヒントになる便利サイト6個 - WooRis(ウーリス)WooRis(ウーリス)     タスカジ( https://taskaji.jp/ ) 働いているママと働きたいママを結ぶ「家事シェア」サービス。 1時間1,500円の安さ。 フィリピンの人が多いらしい。 アプリ:なし ※ウェブがスマホ対応   おかん( http://okan.jp/ ) 毎月真空パックされたおかずを郵送してくれる。 アプリ:なし 個人的に利用しているけど、メニューが変わり映えしないし、味付けも濃いので飽きてきた。     エニタイムズ( https://anytimes.co.jp/ ) 「困った」と「できる」を繋ぐお仕事仲介サービス。 値段は自由に設定可能。 アプリ:あり     ベアーズ( http://www.happy-bears.com/ ) 家事代行サービスの大手。 しっかりと教育された専任スタッフが家事代行してくれる。 アプリ:なし     cookpadベビー( http://www.happy-mama.com/ ) 育児系情報サイト。 2015年5月からクックパッドに移管されて、レシピとの連携が大幅強化。 「はっぴーママ」は育児タウン誌 アプリ:なし     アズママ( http://asmama.jp/ ) 登録した近所の人と子育てを助けあう。 謝金は500円~700円。利用者感で直接やり取り。仲介手数料なし。 アプリ:なし       < Related Posts > 子育て情報サイト「teniteo」アプリをアップデート

npm install --globalを毎回実行するのが面倒くさい

イメージ
nvmでiojsを追っていると頻繁にnpm install --globalを実行するのが面倒くさい。 設定ファイルから簡単にインストール出来ないかと調査したときの覚書。 環境: nvm 0.25.4 下記サイトで議論されている。 node.js - Install dependencies globally and locally using package.json - Stack Overflow Add "globalDependencies" option in package.json for installing global dependencies. · Issue #2949 · npm/npm | GitHub   package.jsonに書くのは推奨されてないみたいなので自分用のシェルスクリプトを書くことにした。 # su - node $ vi npm-global.sh #! /bin/sh # Install Node Packages npm install -g grunt-cli node-dev pm2 npmlist # Show Installed List echo echo 'Completed!!' echo npm -g list --depth=0 $ chmod +x npm-global.sh $ ./npm-global.sh 必要なものが増えたら書き足していく。   issueで「nvm reinstall-packages」を使えばいいという議論があるので、そのうち出来るようになっていると思う。 Npm global modules · Issue #668 · creationix/nvm | GitHub   < Related Posts > nvmをUpgradeしてio.jsをInstall

WP-CLIをInstallしてWordPressのVersion管理

イメージ
WordPressのインストール、アップデートを自動化したくて調査したときの覚書。 環境: CentOS 6.6, PHP 5.4.42, WordPress 4.2.2 WordPressをコマンドラインで管理する方法はいくつかある。 ライブラリ 説明 WP-CLI PHP Archive(PHAR)という形式で配布されている。 YeoPress yeoman というウェブアプリ向けのツール管理ソフトのWordPressジェネレーター。npmっぽく管理できる Git GitHubにWordPressのリポジトリがある ので、ブランチをチェックアウトして運用する。 プラグインの単体テストもやる予定なので、WP-CLIをインストールしてみた。 参考 Unit Tests for WordPress Plugins - Setting Up Our Testing Suite - Pippins Plugins   目次 WP-CLIをインストール WordPressをインストール、アップデート プラグインの一覧とアンインストール テーマの一覧と削除 初期インストール時のwpコマンドまとめ   1.WP-CLIをインストール 公式サイトを参考に。 Command line interface for WordPress | WP-CLI # curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar # chmod +x wp-cli.phar # mv wp-cli.phar /usr/local/bin/wp rootでwp --infoを打つとエラーになるので、ユーザーを変更して確認 # su - node $ cd /path/to/wordpress/ $ wp --info PHP binary:     /usr/bin/php PHP version:    5.4.42 php.ini used:   /etc/php.ini WP-CLI root dir:        phar://wp-cli.phar WP-CLI global config: WP-CLI pr

CoreOS入門。VMware FusionでCoreOSを起動してみる

イメージ
dockerを調査するためにCoreOSをインストールしてみたときの覚書。 環境: VMware Fusion 7.1.2 CoreOSはLinux Kernel 4.0なのでVMware Fusionでは対応してないと思ったら、公式にVMwareに対応した仮想マシンを配布しているのでダウンロードするだけで試せる。 Running CoreOS on VMware | CoreOS   目次 CoreOSとは 仮想マシンをダウンロード 起動してSSH経由でアクセス   1.CoreOSとは CoreOSはLinuxディストリビューションの一つ。 詳しくは下記参照 CoreOS Overview CoreOS 入門 - Qiita   特徴 パッケージ管理(yum, apt)の代わりにdockerで全てのユーザーサービス(パッケージ)を管理 複数台でのクラスタ構成をOSがサポート(CoreOS clusterと呼ぶ)。fleetを通して管理 CoreOS cluster上のサービスはホストのetcdを通して繋がる。データベースの接続先などetcdに問い合わせるとクラスタ内のどこかにあるアドレスを返す。 自動アップデートが出来る。反映させるために再起動は必要。クラスタ構成しているならサービスの切り替えなどは自動でやってくれる   2.仮想マシンをダウンロード 公式ページからダウンロード CoreOS Release Notes Stable → Browse Images → coreos_production_vmware_insecure.zip   3.起動してSSH経由でアクセス 解凍して、vmxファイルをダブルクリックするだけで起動する。 起動後のコンソール画面にIPアドレスが表示されているので、SSHでアクセスする。 SSHの秘密鍵は同封されている「insecure_ssh_key」を指定する。 今日のところはここまで。   いろいろな単語が出てくるけど、それぞれの違いと役割がまだわかっていない。 docker, etcd, fleed, fannel, Kubernetes 参考サイト Open Container Projectが発足:DockerとCor

Titanium + Socket.IO(WebSocket)について調査

イメージ
TitaniumでWebSocketを活用したリアルタイムアプリを作りたくて調査している時の覚書。 TiWSというTitaniumモジュールは管理する人が変わりながらメンテナンスはされているみたい。 omorandi/tiws | GitHub Socket.io 1.0には対応していないみたい。 Compatibility Socket.io 1.0 · Issue #9 · omorandi/tiws   Socket.IOにはiOS, Android用のクライアントライブラリが公開されているので、これらをTitaniumモジュールとしてラッピングしたい socketio/socket.io-client-swift | GitHub nkzawa/socket.io-client.java | GitHub   TitaniumモジュールでSwiftはまだ使えない?Titanium 4.0からはSwiftでも大丈夫になった感がある。 [TIMOB-18844] iOS: Swift is not supported for Extensions - Appcelerator JIRA   この前Google NextでFirebaseの話を聞いたので、こちらも気になったりしてる。 Firebase - Build Extraordinary Apps 準リアルタイムなバックエンド開発を支援するGoogleのFirebase Titanium - Firebaseを使ってリアルタイムサービス - Qiita   < Related Posts > Google Container Engineについて調査 TitaniumでWebSocketを使いたくてtiwsをビルドする アプリ向けのサーバーAPIは「REST」 or 「WebSocket」?

git(GitLab)ユーザーのrubyプロセスが100%に近くなる

イメージ
ある日突然git fetchが失敗するので調べたときの覚書。 環境: CentOS 6.6, GitLab 7.11.4 → 7.12.0   Mac上でgitコマンドを打つと下記エラー $ git fetch origin remote: Counting objects: 48, done. remote: fatal: unable to create thread: Resource temporarily unavailable error: git upload-pack: git-pack-objects died with error. fatal: git upload-pack: aborting due to possible repository corruption on the remote side. remote: aborting due to possible repository corruption on the remote side. fatal: protocol error: bad pack header あれ?と思ってもう一度実行 $ git fetch origin [FATAL] failed to allocate memory fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. SSH接続で既に失敗する。 サーバー側でSSHデーモンを再起動しようとすると「fork: メモリを確保できません」とエラーになった。 topコマンドを打つとgitユーザーがrubyコマンドを一生懸命実行していてcpu使用率が100%になっている。 試しにGitLabサービスを止めてみるとCPU100%状態が収まったので、GitLabが原因だと判明。 # gitlab-ctl stop もう一度GtiLabを実行しながらログを確認。 # gitlab-ctl start # tail -f /var/log/gitlab/unicorn/unicorn_stderr.log /opt/gitlab/embed