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

pg_basebackupを試す

今回は、クラスタ化していないシングルなPostgreSQLでpg_basebackupを試してみました。
試した環境はCentOS7のPostgreSQL9.2です(pg_basebackupは9.1以降)。

まずはマニュアルを参考に。
https://www.postgresql.jp/document/9.2/html/continuous-archiving.html

(さらに…)

Facebooktwittergoogle_pluslinkedintumblrmail

雑用係、新品のTimeMachineさん過熱状態(?)で奮闘する

こんにちは。
一昨年夏に発売された某PS4ゲームに、いまだどっぷり7週目を楽しんでいる雑用係です。

年明けにAppleのAirMacTimeMachineを購入しました。
先代のTimeMachineが1〜2年ほど前に壊れ、繋ぎで使っていた先代TimeMachineより古いExtremeの調子が秋〜年末に掛けてついに悪くなり、満を持して購入。

 

開封してから設定〜利用開始までサクッとすませました。
実によろしい。
iPhone、iPad、MacもAppleTVもIEEE802.11acに対応してるのに、部屋の無線LANが11nしかなかったという悲しい状態から、ようやく脱したので快適です。

快適だったんです。

コトは、購入から10日ほど経った頃でした。

(さらに…)

Facebooktwittergoogle_pluslinkedintumblrmail

pg_bigmで何かの全文検索を高速化してみたい

こちら で使ったpg_bigmですが、どこかで利用出来るものはないかと思っていたのですが、そういえばSphinxを使った検索で日本語対応しようとしてunigramとか色々と入れてみたけど結局失敗してしまったTiny Tiny RSSが有ったなぁと思い、試してみました。

(さらに…)

Facebooktwittergoogle_pluslinkedintumblrmail

Laravelのテスト用便利トレイトの動作を変えてみる

Laravel 5.5 です。

Laravelにはunit test等の際にuseするとよろしくやってくれるトレイトがあります。
昨日の記事に出てきたRefreshDatabaseやDatabaseMigrations、他にはDatabaseTransactions、WithoutMiddleware、WithoutEventsがあります。

本当に便利なのですが、すこし動作を調整したいこともあります。

例えばDatabaseMigrationsでマスターの流し込みまでやりたいとか。
(さらに…)

Facebooktwittergoogle_pluslinkedintumblrmail

QNAPのopkgを入れたらipkgが使えなくなった話

ipkgが、QNAPのバージョンアップのたびに動きが怪しくなっていくので、こちらを参考にopkgを導入。
https://qiita.com/nak1114/items/b534cd3bd79db3e3f256

するとipkgの/bin等へのパスが切れたりして、ipkgで動かしていたhttpd+mod_dav_svnが動かなくなり、まだsvn使っているのでどうしようという事に。

調べた感じではopkgにはhttpdがなく、lighttpdくらいで、mod_davは使えなさそうです。

opkg list|grep http

仕方ないので、他の方法は無いかと見て行ったところ、subversionは有ったのでsvnserveで代用をする事に。
幸いリポジトリは一つのフォルダ内に複数のリポジトリ、という構成で作っていたので、リポジトリの一つ上のパスで起動させれば全部含める事が出来ました。

ipkg install subversion-server
ipkg install subversion-client
svnserve -d --root /path/svn/

各リポジトリのconf/svnserve.confを設定(ここは省略)。

最後にクライアント側をsvn switchで置き換えで一応完了となりました。

# 確認
svn ls svn://qnap/myrepo/
# 置き換え
svn switch --relocate http://qnap:8000/svn/ svn://qnap/
Facebooktwittergoogle_pluslinkedintumblrmail

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