Twitter Facebook github

kitchen-ec2でChefレシピをEC2で実行する

お久しぶりです。
最近またAWSのサービスを一通り触ってみていて、プロビジョニングまでAWSマネージドでやってくれるOpsWorksを本番環境で使ってみたいと思い、Chefに取り組んでいます。

Chefにはレシピをローカルのvagrantで簡単に実行・テストできる test-kitchen というgemのツールがあるのですが、
これを初めて使ってみたところ非常に使い勝手がよく、当然ながらEC2でも試したいという気になりました。

今回は test-kitchen からEC2を扱える、kitchen-ec2を使ってみます。

環境

  • 実行元は手元の MBP macOS High Sierra 10.13.5
  • ruby 2.3.3 (rbenv) gem 2.7.2
  • Chef DK 3.0.36 をインストール
  • Test Kitchen version 1.21.2
  • aws-cli/1.11.63 Python/3.5.2

test-kitchen は単体でgemからインストールできますが、Chef DKに付いてくるので真っ新な環境ではこっちを入れた方がよいと思います。

Chef DK
https://downloads.chef.io/chefdk

AWS CLI で認証情報を設定

kitchen-ec2では、AWSの認証情報(APIキーとトークン)は環境変数か、aws-cliの認証情報から読み込むことになります。
今回は既にインストール済みのaws-cliを使っていますが、必要に応じて先に aws configure を行ってAPIキーを登録してください。

参考
AWS CLI の設定
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-getting-started.html

インストールと準備

ChefDKで入れたtest-kitchenにはkitchen-ec2は付いてこないので、個別にgemで入れます。

適当なディレクトリでmetadata.rbを作り、それを元にinitし、
サンプルとして、適当なディレクトリを作成するレシピを用意します。

Read More »

Amazon Linux に php7.1 をインストール

昔の記事 Amazon Linuxで nginx + php7 環境構築 を見返しつつセットアップを進めていたら、どうやら今はphp7.1系がリリースされているとのこと。

基本的に同じremi-php70のリポジトリで7.1のphpも参照できるようなので、特に難しいことはないですが備忘録として簡単にメモ。

nginx、php-fpm 諸々は古い記事をご参考ください。

雑な記事を量産しないようにしたい

Homebrewで最新のzshをインストール

以前、 zshことはじめ の記事でzshについて軽く触れましたが、
つい先日チェックした際にzshのバージョンが上がっていたので、これを機にHomebrew経由のzshに乗り換えることを決意しました。

バージョンの確認

Mac標準のzsh

Homebrewのzsh

Homebrewでインストール

依存関係で gdbm と pcre が先にインストールされます。

バージョンを確認します。

Read More »

2017年 100個の目標

2017年 新年おめでとうございます!!!
今年もまた無事にお正月を迎えられて嬉しいです!

2017年は仮想通貨元年と言われてます。
BitCoinなどの暗号通貨を支える技術が今年はアツくなるのかも?
IT×金融のビジネスを展開している身としてはワクワクします!

去年の反省は誕生日のエントリで吐き出したので、今回はまた新たな一年に向けて決意を新たにします。

ことしの目標

わたしが尊敬するエンジニアの一人がやっていたことをマネして、
今年やりたいこと100個を箇条書きで挙げていきます。

挙げるにあたって、次のことを心がけました。

  • 小さいことから大きいことまで思いつくままに挙げる
  • できるできないをあんまり考えない
  • 毎月何回やる、よりは12を掛けて毎年何回やる、で書く
  • 達成できたかどうか曖昧にならない目標にする

達成したら打ち消し線で消して、いくら消せたかまた来年振り返ります。
みなさん大体3割くらい達成できるそうです。

Read More »

22歳になりました

またひとつ大人になりました。
そろそろ年齢を書くのがつらくなってきたので、来年あたりからは16進数にしようかと思ったり・・・

22歳というと普通に大学に行けば卒業する年齢なわけで、周りはまだ学生なんて呑気な言い訳も言えない歳になりました。

私にとって21歳、そして2016年は冒険の1年で、色々なことに挑戦した挙げ句、結局どれもこれもうまくいかず、今までで一番の挫折を味わった年でもありました。

Read More »

jEnvでバージョンの異なる複数のJavaを管理する

Rubyのrbenv、nodeのnodeenvなどと同じように、Javaにも複数のバージョンを管理するための*env、jEnvがあります。

今回は真っ新のMacにJavaの開発環境を構築する際に、1.7、1.8、9(EA)をインストールすることにしたので、その手順をまとめておきます。

HomebrewでJDKをインストール

jEnvでは、nodeenvなどと異なりjEnvコマンドからJDKをインストールすることはできません。
先にJavaをインストールする必要がありますが、今回は後々アップデート等が楽なHomebrew経由でインストールしようと思います。
もちろんOracleのホームページから直接インストーラーで導入してもかまいません。

Javaの古いバージョン、またEAのバージョンをbrewで導入するには、versionsのリポジトリをtapする必要があります。

バージョンを付けずにインストールすると、執筆時点ではJava8がインストールされます。
今回はその前後の7と9も追加でインストールしておきます。

Read More »

zshことはじめ

Macでzshを使うときのセットアップメモ。

環境

  • macOS Sierra 10.12.1
  • Homebrew 1.1.2

インストール

Macはデフォルトでzshが入っているので、常に使う場合はログインシェルを変更するだけで事足ります。

まずは次のコマンドでプリインストールされているシェルの一覧を表示させます。

これによると /bin/zsh にあるようですね。バージョンも確認しておきます。

執筆時点での最新版も同じ5.2のようなので、今回はこれをそのまま指定することに。
もし最新版ではないようなら、Homebrewなどで brew info zsh して新しい方を使うといいでしょう。

(2017/01/02 追記)
追記時点でHomebrewからインストールできるバージョンが 5.3.1 になりました。
Homebrewを使ったインストール方法の記事を書きましたので、ご参考ください。
Homebrewで最新のzshをインストール

Read More »

iCal形式でインポートした予定をまとめて削除する

やらかしました・・・。

foursquareのチェックインをカレンダーに表示させ、ライフログとして活用しているのですが、新しいMacのセットアップ中に数千件のチェックインデータが含まれているiCalendar形式のカレンダーファイルを、普段使いのメインカレンダーにインポートしてしまいました。

MacのカレンダーアプリにはFantasticalを使っていて、Googleアカウントと同期させています。インポート中、マズイかも・・・?と思った時には既に遅く、既に同期されてしまった後でした。。
もちろんインポートをUndoするような気の利いた機能はないので、なんとか元に戻す方法を考えてみます。

こんなひとが対象

  • iCalendar形式(.icsファイル)で取り込んでしまったイベントをまとめて削除したい
  • Googleカレンダーで取り込んだ or Googleカレンダーと同期している

iCalendarの仕様を確認してみる

事が起きた後にicsファイルをテキストエディタで開いてみました。何事もない普通のテキストファイルのようです。
Googleに頼ってみると、RFC 5545 でしっかりとフォーマットが定められていました。

https://tools.ietf.org/html/rfc5545

BEGIN:VEVENT から END:VEVENT までが1件のイベントを表すようです。

Read More »

Skypeのチャット履歴を抽出する方法

備忘録として簡単にメモ。

Macの場合 "~/Library/Application Support/Skype/(自分のアカウント名)/main.db" に、SQLiteのデータベースとして保存されている。
バックアップを取る場合は上のファイルをコピーすればOK。

メッセージをクエリするには、sqlite3をインストールし、上のDBの Messages テーブルを対象とすればよい。

Messagesテーブルのスキーマ

.schema で出力してみる。

特定の相手とのメッセージを抽出するには?

海外のスタックオーバーフローで dialog_partner = ‘相手のID’ で抽出すれば良い、とする記事もあるけど・・・

これを実際にやってみると、Skype上ではちゃんと発言しているのに記録されていない歯抜けのメッセージが出てきたりする。

実際に抽出できていないメッセージを、抽出できたメッセージを比較したところ、どうやら dialog_partner カラムが空文字だったりして、どうも確実ではない様子。

そこで、上のSQLで convo_id というデータを得られるので、それを元に再度SELECTする。

これで自分の環境では、相手とのやり取りを漏れなく取得できる。

ファイルにエクスポートするには

導入中のChrome拡張がマルウェア化した話

注意喚起と反省をかねて書きます。

数年来、開発に使っていたChrome拡張の “jQuery Injector” が突如マルウェア化しました。
この拡張機能はjQuery未導入ウェブページにワンクリックでjQueryをロードできる開発者向けものです。(執筆時点でGoogle 拡張機能ストアからは削除済み)

なお、今回は私用のChromeアカウントで感染が判明し、仕事などで使用している個別のアカウントでは関連する拡張機能を導入しておりませんので、所属する会社や個々に依頼いただいている業務データなどへの影響はないことを先に明記いたします。

ことのはじまり

数日前から、ウェブブラウジングしていると希に “Sponsored by <ドメイン名>” というポップアップ広告が出現するようになりました。偶然にも最初の数回が初回アクセスの英語圏のサイトで起こったため、マルウェアによるものだと気付くのが遅れてしまいました。

何度か表示されている内に、拡張機能によるものだと推測し調査を始めました。

Read More »