MacにComposerでライブラリをインストールしてPHPから呼び出す
PHPのライブラリのちょっとした検証を行おうとしたら今のPCでComposerを使ったことがなかったようだ。PCでさらにフレームワークなしでPHPを使うのが久々すぎて忘れていたので手順をメモしておく。
今回はphpunitをhome以下にインストールする想定とする
$ composer global require "phpunit/phpunit" $ tree -L ~/.composer /path/xxxx/.composer ├── ca │ ├── files │ └── repo ├── composer.json ├── composer.lock ├── keys.dev.pub ├── keys.tags.pub └── vendor ├── autoload.php ├── bin ├── composer ├── doctrine ├── myclabs ├── phar-io ├── phpdocumentor ├── phpspec ├── phpunit ├── sebastian ├── theseer └── webmozart
~/.composer以下にインストールされたことを確認
phpが呼び出す
<?php require_once("vendor/autoload.php");
が、ここでエラー。PATHが通ってないのでPATHを通す。ここで勘違い。環境変数PATHに ~/.composer を追加すればよいと思っていたがphpの場合そんなのじゃなかった。/etc/php.iniにinclude_pathというのがあってここにパスを追加する必要があった。
php.ini
・・・ ; UNIX: "/path1:/path2" include_path = ".:/php/includes:/home/xxxxx/.composer" ・・・
色々すっかり忘れてる。。以上です
Fastlaneにてcordova(ionic)プロジェクトのiOSアプリをDeploygateにアップロードする手順
今回やりたいことは以下
・cordova(ionic)プロジェクトで作成したアプリをビルド
・ビルドしたアプリをデプロイゲートへアップロード
とりあえずはデプロイゲートまでアップするのが目標
fastlaneインストール
fastlaneをインストール
$ sudo gem install fastlane
AdHoc版のビルドまでできるように
ionicプロジェクトの作成して最新のcordova-iosをインストール
$ ionic start --v1 fastlane_demo $ cd $_ $ ionic platform rm ios && ionic platform add ios@latest
fastlaneディレクトリを作成
$ cd fastlane_demo $ mkdir fastlane
fastlane/Appfile
app_identifier "xxx.yyy.zzz" # アプリのバンドルID apple_id "xxx@xxx" # AppleID team_id "xxxxxxxx" # TeamID
team_idはxcodeのSigningのTeamで選択してるやつのID。
IDはAppleDeveloperのMembershipから確認できる。
fastlane/Fastfile
platform :ios do desc "AdHoc Build For iOS" lane :build do gym( workspace: 'platforms/ios/fastlane_demo.xcworkspace', silent: true, clean: true, export_method: "ad-hoc" ) end end
こちらのFastfileにタスクを記述してコマンドで実行する形。
$ fastlane ios build
成功すればプロジェクト直下のディレクトリに ipaファイルとdSYMファイルが出来上がってるはず。
基本的にxcodeからアーカイブしてエクスポートしてるのと同じはずなので、うまくいかない場合はxcodeから試してみてうまくいくか確認するとよいかも。
Deploygateにアップロード
あとはデプロイゲートにアップロードする
fastlane/Fastfile
platform :ios do ・・・ desc "Upload Deploygate For iOS" lane :upload_deploygate do deploygate( api_token: 'xxxxx' # デプロイゲートのAPIキー user: 'xxxxx', # デプロイゲートのアカウント ipa: 'xxx.ipa' # ipaのパス ) end end
実行
$ fastlane ios upload_deploygate
まとめ
git cloneしてから一連の作業をまとめるとこんな感じかな
$ ionic prepare && fastlane ios build && fastlane ios upload_deploygate
とりあえずCircleCIに乗せる前段階の調査としてこんな感じで。以上です
iOS iTunesConnectに継続課金の自動更新登録(Auto-Renewable Subscription)が表示されない原因
https://terakoya.site/ios_dic/ios-dic-in-app-purchese/
こちらを参考にiTunes Connectで設定を行なうところでつまづいた。
App内課金コンテンツを追加するところで以下の3種類しか選択肢に出てこず、自動更新登録が表示されない。。
・消耗型
・非消耗型
・非更新登録
ググるとこちらに解決方法があった
ちゃんと所在を明らかにしろってことですね。色々登録しないとダメみたいです。
iTunes Connect -> Agreements, Tax, and Banking -> Contract Type: Paid Applications and fill fields [Contact Info, Bank Info, Tax Info]
引用元:ios - Why I didn't see Auto-Renewable Subscription in iTunes Connect - Stack Overflow
以上です
【vue.js】コンポーネントを分割してテンプレートを分割
1画面1コンポーネントみたいな形で実装されているプロジェクトで。v-ifが増えてごちゃごちゃしてきたのでコンポーネントの分け方をメモしておく。vue.jsの基本構文だけども。。
Main.vue
<template> <div> <part-free v-if="user.isFree" v-bind:user"></part-free> <part-premium v-if="user.isPremium" v-bind:user"></part-premium> </div> </template> <script> import PartFree from './PartFree.vue' import PartPremium from './PartPremium.vue' export default { data: { user: { name: 'Yamada', isPremium: true, // isFree: true } }, components: { 'part-free': PartFree, 'part-premium': PartPremium, } } </script>
PartPremium.vue
<template> <div>Premium : {{ user.name }}</div> </template> <script> export default { props: { user: Object } } </script>
PartFree.vue
<template> <div>Free : {{ user.name }}</div> </template> <script> export default { props: { user: Object } } </script>
ずらずら書いたけど、以上です
cordova-plugin-purchaseでQuotaExceededError (DOM Exception 22): The quota has been exceededエラー
cordova-plugin-purchaseを使っての継続課金機能の開発中にこちらのエラーが多発した。iOSの話。
Error in Success callbackId: InAppPurchase1613437489 : QuotaExceededError (DOM Exception 22): The quota has been exceeded.
この辺りの処理も呼ばれなくなり正常に処理できなくなったので調べて見た。
store.when('PRODUCT_ID').approved(function(product) { ・・・ }) store.when('PRODUCT_ID').verified(function(product) { ・・・ })
プラグインのソースを見ていたらこの辺りの処理や端末から取得可能なレシートを1度ローカルストレージに保存するような実装になっていた。
SandBox環境だと何度も課金するのでレシートデータもどんどん膨大になっていく。それをそのままローカルストレージに保存するところで容量オーバーのエラーになっている様子。アップルIDを変えてログインしなおしても同じ端末だと古いレシートも処理しているようで回避できず。。今時点の対策としては端末を初期化するしかなさそう。。
これ調べるのに1日くらいかかってしまった。。すっきりしないけど、以上です
ionic3でcordova pluginを使用する
ionic2からionic-native経由でcordovaプラグインを使うような形になってる。
素のcordovaプラグインを使うことも多いと思うのでメモしておく。
pages/home/home.ts
import { Component } from '@angular/core'; import { Platform } from 'ionic-angular'; declare var MyPlugin :any @Component({ ・・・ }) export class HomePage { constructor(public plt: Platform) { this.plt.ready().then((readySource) => { MyPlugin.myMethod() } } }
以上です
multitailでパスワード認証のサーバーを監視
ちょっと調べた感じだとsshpass使わないとできないかも
multitail -s 2 -l "sshpass -p 'password' ssh user@srv1 'tail -f /path/to/log'" \ -l "sshpass -p 'password' ssh user@srv2 'tail -f /path/to/log'" -l "sshpass -p 'password' ssh user@srv3 'tail -f /path/to/log'" -l "sshpass -p 'password' ssh user@srv4 'tail -f /path/to/log'"
以上です