‘未分類’ カテゴリーのアーカイブ

funcphoneとSMSフロー(メニューアプレット編)

電話番号を米国番号で取得した場合、SMS機能が使えるようになる事は前回お話いたしました
今回はSMSフロー編集にあるアプレットご紹介したいと思います


SMSフローの編集は左メニューより「管理→フロー→編集 SNSフロー」から行うことができます

メニューアプレット

以前書きました「funcphoneを使った電話転送」で疲れているメニューアプレットのSMS用のようなイメージです

決まった単語を送信すると、フローで設定したメッセージを返信することができます

設定してみる

  1. 編集 SMSフローから編集画面を開き、「メニューアプレット」をセットします
  2. Menu Promptには電話番号宛に何かメッセージが送られてきた場合に最初に送るメッセージを設定しています
  3. Menu Optionsにはメッセージを送ってきたユーザが入力した単語に対して何を返信するのか設定しています
  4. 左メニューから「管理→番号」画面をひらき、フローを該当の電話番号にセットします

以上で設定は完了です

確認してみる

  1. スマートフォンから設定した番号あてにメッセージを送ってみます
    下の画像の「問題ください」がそれです
  2. しばらくするとMenu Promptに設定した文章が送られてきます
  3. キーワードを入力してみましょう
    Menu Optionsに設定したKeywordが入力されますと、設定したReplyが返ってくることを確認できます
Facebooktwittergoogle_pluslinkedintumblrmail

実行されたJenkinsFileはReplayから確認できる

muraveです。

なうなやんぐなのでPipelineでJenkinsFileを使ってビルドについてもソースコード管理したいわけですが、他チームのJenkinsFileを参考にしたいときにJenkins上から内容が確認できないと、お願いしてJenkinsfileを送ってもらうという悲しいことになったり(実際に発生)。

Jenkins上から確認できるように出来ないものかとプラグインを探したり、ファイルは残っていたのでそれを参照できるようにできないかいろいろ試したりしていました。

しかし、そんな事をしなくても内容をみることができる方法がみつかったのでした。

まぁ、答えはタイトルに書いちゃってますが、こんなん予想できませんわー。

一部マスクしますが、キャプチャを貼っておきますね。

cursor_%e3%81%a8_replay__26__jenkins_

スクリプトを参照する場合は間違ってRunしないように注意ですね。

Facebooktwittergoogle_pluslinkedintumblrmail

JenkinsのwithCredentialsでユーザー名とパスワードを扱えるのかを確認したいだけだった

muraveです。

なうなやんぐはPipelineでJenkinsFileを使ってビルドについてもソースコード管理ですよねー、ということで試してみているんですが、ユーザー名やパスワードをJenkinsFile内に書くわけにはいかないわけで。

方法を探してみたところ withCredentials でどうにか出来そうでした。

Fetch a userid and password from a Credential object in a Pipeline job.

ここを見ながらザックリと Pipeline script なジョブを作成して動作を確認しようとしたところ、少々ハマリました。

テスト用にユーザー名test、パスワードpassword、credentialsIdがtestの認証情報を作成しています。

node {
    stage 'withCredentials Test'
    withCredentials([[$class: 'UsernamePasswordMultiBinding', 
            credentialsId: 'test',
            usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {

        sh 'echo uname=$USERNAME pwd=$PASSWORD'
    }
}

これを実行したログを確認すると

[credential_****] Running shell script
+ echo uname=**** pwd=****

みたいな表示。うーん。何か権限的に引っかかってるのか、表示が潰されているだけなのかがわかりません。

結論を先に言うとユーザー名、パスワードについて表示を****で潰すようになっているようです。
あとで気づいたのですが[credential_****]のところもジョブ名がcredential_testなのでユーザー名であるtestが潰されているのでした。

ではユーザー名、パスワードが本当に取れているのかをどのように確認したのか?ですが次のような Pipeline script を作成しました。

node {
    stage 'withCredentials Test'
    def uname   //withCredentials外にUSERNAMEを持ち出す為に使用
    withCredentials([[$class: 'UsernamePasswordMultiBinding', 
            credentialsId: 'test',
            usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {

        sh 'echo uname=$USERNAME pwd=$PASSWORD > idpw.txt'
        sh 'pwd'    //ワークスペースの位置確認をしたかったのだが、しかし

        println(env.USERNAME)   //groovyでの扱い
        uname = env.USERNAME    //withCredentials外にUSERNAMEを持ち出す
    }

    stage 'withCredentialsの外で出力'
    println(uname)

    stage 'ワークスペースの位置確認'
    sh 'pwd'
}

実際に行ったのはidpw.txtファイルにリダイレクトして内容を確認でしたが、その際の謎動作の説明のための処理や、その後にログ上で確認できないかな?と思ってやってみたことも混ぜてあります。

ログから抜粋してまとめると以下のようになります。

Entering stage withCredentials Test
Proceeding

[credential_****] Running shell script
+ echo uname=**** pwd=****

[credential_****] Running shell script
+ pwd
/var/jenkins_home/workspace/credential_****

****


Entering stage withCredentialsの外で出力
Proceeding
test


Entering stage ワークスペースの位置確認
Proceeding
[credential_test] Running shell script
+ pwd
/var/jenkins_home/workspace/credential_test

idpw.txtの位置が知りたくてpwdしているのですがwithCredentialsのブロック内で実行すると

[credential_****] Running shell script
+ pwd
/var/jenkins_home/workspace/credential_****

と、ユーザー名のtestと同じだったために一部マスキングされてしまっています。まぁ、大体の位置は予想がついたのでidpw.txtを探して内容確認はできたわけですが(ちゃんとユーザー名、パスワードが出力されていました)。

最後にブロック外でpwdしてみるとちゃんと

Entering stage ワークスペースの位置確認
Proceeding
[credential_test] Running shell script
+ pwd
/var/jenkins_home/workspace/credential_test

と出力されているのがわかります。

ログだけでの動作確認ですがブロック外ならマスキングされないのがわかったのでuname変数を定義して外に持ちだしてやればいいかな〜と

Entering stage withCredentialsの外で出力
Proceeding
test

やはりマスキングされずに出力されました。動作の確認はできましたが、これは通常はやってはいけないパターンですね。

以上です。

Facebooktwittergoogle_pluslinkedintumblrmail

Dockerのデータボリュームをバックアップ・リストア

現状試しているのはローカルストレージドライバでのデータボリュームの場合ですが、コンテナでバインドして扱うのが常道な感じです。

データ・ボリュームのバックアップ・修復・移行
http://docs.docker.jp/engine/userguide/dockervolumes.html#id9

に書いてあるやり方ですね。

jenkins-masterというコンテナの /var/jenkins_home をバックアップ・リストアする例をあげます。

バックアップ

$ docker run --rm -u root --volumes-from jenkins-master -v $(pwd):/backup alpine tar czvf /backup/alp.tar.gz -C /var jenkins_home

リストア

$ docker run --rm -u root --volumes-from jenkins-master -v $(pwd):/backup alpine sh -c "rm -rf /var/jenkins_home/* && cd /var && tar xzvf /backup/alp.tar.gz"

念のためユーザーにrootを指定し、Alpine Linuxで実行しています。バックアップ時、相対ディレクトリ指定のためtarの-Cオプションを使用しています。展開時はゴミファイルが残るのが嫌だったのでリストア対象ディレクトリ内を全て削除してから展開していますが、削除はしないほうが安全かもしれません。

以上です。

データボリュームコンテナについての蛇足
データ永続化のために別途データボリュームコンテナを作成している場合でもローカルストレージなデータボリュームを使用していれば同じこと、docker save や docker export でバックアップというわけにはいかないようです。残念。

Facebooktwittergoogle_pluslinkedintumblrmail

宿泊業向けセミナー「自社及び顧客理解に基づくマーケテイングの展開」を聞きました

どうも、ランカードコム(宿泊業支援機関IT系)のmuraveです。

こちら、長崎県内で宿泊業を営む事業者及び支援機関向け「長崎県宿泊業生産性向上促進セミナー」

http://www.pref.nagasaki.jp/object/event-koza/event/249247.html

のセミナーとしてはラストでマーケティングに関するセミナーです。
マーケティングといえば、以前のセミナーについての私の感想は

セミナー「宿泊業における顧客満足と効率性を両立させる方法」を聞きました
宿泊業生産性向上促進個別テーマセミナー(人材育成・IT)に参加しました

に書いたのですが、人材育成・ITセミナーレポートの最後に宿泊業のお手伝いをできそうな弊社サービスの紹介もありますのでよろしくお願いします(自然な流れでダイレクトマーケティングの再利用)。

今回もいいセミナーでした。
(さらに…)

Facebooktwittergoogle_pluslinkedintumblrmail

宿泊業生産性向上促進個別テーマセミナー(人材育成・IT)に参加しました

8月18日(木曜日)の午後に開催された「長崎県宿泊業生産性向上促進セミナー」の個別テーマセミナーに参加しました。

人材育成とITの2つの講演があり、両方に参加しました。

(さらに…)

Facebooktwittergoogle_pluslinkedintumblrmail

セミナー「宿泊業における顧客満足と効率性を両立させる方法」を聞きました

こちら県主催の長崎県内で宿泊業を営む事業者及び支援機関向け「長崎県宿泊業生産性向上促進セミナー」のスタートアップセミナーでした。

http://www.pref.nagasaki.jp/object/event-koza/event/249247.html

「対象外じゃないの?」とおっしゃるあなたのお気持ち、わかります。

が、民泊の運用サポートを行うソフトを作ってまして、一応、支援機関枠ということで一つよろしくお願いします。
対象の中小宿泊業から見ると敵対勢力をサポートしている気もしますが、技術は中立ですよ?

(さらに…)

Facebooktwittergoogle_pluslinkedintumblrmail

RoundCubeの容量円グラフを出す

RoundCubeでフォルダ一覧の下に、円グラフで何パーセントとか出ますよね。あれですあれ。

rc_quota

単に表示させたいだけなので、MailDir++形式で全体を設定するだけです。
Postfix側のVDA設定とかユーザ別設定とかは除外。

いつも通り、こちらで使ったのを再利用。

設定するファイル

quotaで設定して、imap_quotaでIMAP経由で取得出来るようです。

  • /etc/dovecot/conf.d/10-mail.conf に追加
mail_plugins = quota
  • /etc/dovecot/conf.d/90-quota.conf に追加
plugin{
  quota_rule = *:storage=10M
}
plugin{
  quota = maildir:User quota
}
  • /etc/dovecot/conf.d/20-imap.conf に追加
  mail_plugins = $mail_plugins imap_quota

後は再起動するだけ。

service dovecot restart
Facebooktwittergoogle_pluslinkedintumblrmail

PostgreSQL8.1で2カラムの日付検索にインデックスを使う

RHEL5系、まだまだ現役です。2020年まで。

開始日と終了日の有るテーブルで、「今日」がこの期間内に有るデータを検索する場合、開始日と終了日で個別にインデックスを貼る事になるかと思いますが、極端に過去や未来のデータが多くなったりすると、片方のインデックスが無駄になります。
btreeで複数列にインデックスを作っても、そのままではインデックスを使ってくれなかったので、かなりねじった方向で出来ました。

(さらに…)

Facebooktwittergoogle_pluslinkedintumblrmail

Fastlaneの基本 〜gym入れてみる〜

Fastlaneファイルの基本構造を確認したところで、
次にパッケージを1つ動かしてみようと思います
gymを入れてみました。ipaファイルを作るパッケージです
sudo gem install gymでインストールします

test:FastlaneTest test$ gym --workspace "FastlaneTest.xcodeproj/project.xcworkspace" --scheme "FastlaneTest" --clean --use_legacy_build_api
[11:38:10]: Using legacy build system - waiting for radar to be fixed: https://openradar.appspot.com/radar?id=4952000420642816
[11:38:10]: xcrun xcodebuild -list -workspace 'FastlaneTest.xcodeproj/project.xcworkspace'

+----------------------+--------------------------------------------+
|                       Summary for gym 1.6.2                       |
+----------------------+--------------------------------------------+
| workspace            | FastlaneTest.xcodeproj/project.xcworkspace |
| scheme               | FastlaneTest                               |
| clean                | true                                       |
| use_legacy_build_api | true                                       |
| destination          | generic/platform=iOS                       |
| output_name          | FastlaneTest                               |
| output_directory     | .                                          |
| silent               | false                                      |
| buildlog_path        | ~/Library/Logs/gym                         |
+----------------------+--------------------------------------------+

〜中略〜

[11:38:34]: Successfully exported and compressed dSYM file
[11:38:34]: Successfully exported and signed the ipa file:
[11:38:34]: /Users/test/WorkSpace/test/FastlaneTest/FastlaneTest.ipa

スクリーンショット 2016-04-27 14.17.04

ipaファイルができていることが確認できます!
—use_legacy_build_api をパラメータに入れていないと
“The operation couldn’t be completed. (IDEDistributionErrorDomain error 1.)”
というエラーが発生するようです(参考:http://qiita.com/takecian/items/6d34448d61c69e0d4a7f)
以上を確認した上で、最初に作ったFastlaneファイルにgymを入れてみます

  1 fastlane_version "1.81.0"
  2 default_platform :ios
  3
  4 platform :ios do
  5   before_all do
  6     say ["before all"]
  7   end
  8
  9   desc "テストですよー"
 10   lane :test do
 11     gym(
 12     workspace: "FastlaneTest.xcodeproj/project.xcworkspace",
 13     scheme: "FastlaneTest",
 14     clean: true,
 15     use_legacy_build_api: true
 16     )
 17   end
 18
 19   desc "テストですよー2"
 20   lane :test2 do |options|
 21     say [options[:hoge]]
 22   end
 23
 24   after_all do |lane|
 25     say ["after all"]
 26   end
 27
 28   error do |lane, exception|
 29     say ["エラー"]
 30   end
 31 end

ipaファイルを消して実行

test:fastlane test$ fastlane test
[14:29:08]: -------------------------------------------------
[14:29:08]: --- Step: Verifying required fastlane version ---
[14:29:08]: -------------------------------------------------
[14:29:08]: fastlane version valid
[14:29:08]: ------------------------------
[14:29:08]: --- Step: default_platform ---
[14:29:08]: ------------------------------
[14:29:08]: Driving the lane 'ios test' 🚀
[14:29:08]: -----------------
[14:29:08]: --- Step: say ---
[14:29:08]: -----------------
[14:29:08]: $ say 'before all'
[14:29:10]: -----------------
[14:29:10]: --- Step: gym ---
[14:29:10]: -----------------
[14:29:10]: Using legacy build system - waiting for radar to be fixed: https://openradar.appspot.com/radar?id=4952000420642816
[14:29:10]: xcrun xcodebuild -list -workspace 'FastlaneTest.xcodeproj/project.xcworkspace'

+----------------------+--------------------------------------------+
|                       Summary for gym 1.6.2                       |
+----------------------+--------------------------------------------+
| workspace            | FastlaneTest.xcodeproj/project.xcworkspace |
| scheme               | FastlaneTest                               |
| clean                | true                                       |
| use_legacy_build_api | true                                       |
| destination          | generic/platform=iOS                       |
| output_name          | FastlaneTest                               |
| output_directory     | .                                          |
| silent               | false                                      |
| buildlog_path        | ~/Library/Logs/gym                         |
+----------------------+--------------------------------------------+

〜中略〜

[14:29:45]: Successfully exported and compressed dSYM file
[14:29:45]: Successfully exported and signed the ipa file:
[14:29:45]: /Users/test/WorkSpace/test/FastlaneTest/FastlaneTest.ipa
[14:29:45]: -----------------
[14:29:45]: --- Step: say ---
[14:29:45]: -----------------
[14:29:45]: $ say 'after all'

+------+-------------------------------------+-------------+
|                     fastlane summary                     |
+------+-------------------------------------+-------------+
| Step | Action                              | Time (in s) |
+------+-------------------------------------+-------------+
| 1    | Verifying required fastlane version | 0           |
| 2    | default_platform                    | 0           |
| 3    | say                                 | 1           |
| 4    | gym                                 | 35          |
| 5    | say                                 | 1           |
+------+-------------------------------------+-------------+

[14:29:46]: fastlane.tools finished successfully 🎉

スクリーンショット 2016-04-28 14.48.52

スクリーンショット 2016-04-28 11.48.50
例えば、FastlaneTestスキーマをコピーしたFastlane2も

 10   lane :test do
 11     gym(
 12     workspace: "FastlaneTest.xcodeproj/project.xcworkspace",
 13     scheme: "FastlaneTest2",
 14     clean: true,
 15     use_legacy_build_api: true
 16     )

とschemeの値を編集すれば同じようにipaファイルが作成されます

次はリリースまでの一通りのパッケージを入れた状態のFastlaneファイルを用意してみようかと思います

Facebooktwittergoogle_pluslinkedintumblrmail