読者です 読者をやめる 読者になる 読者になる

GoogleのContainer Registry (gcr.io) からDocker Imageのメタデータだけを取得する

GCPではContainer RegistryにDocker Imageを格納できる。格納したImageの取得にはdocker pullコマンドが使えるけど、時々Imageのメタデータだけを参照したいことがある。そういうとき、いちいちdocker pullするのは時間がかかるし、ストレージも食う。 そう…

Scheme interpreter in Clojure (SICP 4.1: The Metacircular Evaluator)

SICPをようやく読み終え、Schemeインタプリタの実装に興味が出てきたので、Clojureで実装してみた。Schemeの仕様に則ったしっかりしたものではなく、SICP 4.1節のコードをClojureで書き換えて、パーサーを足したりしただけのもの。パーサー周辺は遅延シーケ…

SICP 3.3.4: A Simulator for Digital Circuits

SICP 3.3.4節にあるデジタル回路シミュレータをClojureで実装する機会があったので残しておく。Clojure初心者なので色々問題あるかもだけど、参考までに。 emacsのciderが便利すぎた。

pkg/errorsの導入時につまづいたところのメモ

Go

最近、既存のプロジェクトにpkg/errorsを導入する機会がありました。使い方のガイドラインが開発者のブログ記事の後半部分にあったので、参考にさせて頂きました。大体問題なく導入できましたが、悩んだ・つまづいたところもあったのでメモしておきます。 そ…

Mac OS X El Capitanにrlwrapをソースからインストールする

つまづいたところのメモ。 rlwrapをbrewからインストールしようとしたら、パッケージのダウンロードで失敗していた。 % brew install rlwrap [master] ==> Downloading http://utopia.knoware.nl/~hlub/rlwrap/rlwrap-0.42.tar.gz curl: (7) Failed to conne…

luciでAppEngine/Goの異常系テストを手軽に書く

こんばんは。アドベントカレンダー Google Cloud Platform(2) 24日目担当の @ks888 です。 昨日の記事に続いて、AppEngine/Goのテストに便利なluci/gaeというライブラリを紹介していきます。昨日は簡単な紹介として、AppEngine/Goのテスト実行時間を短縮する…

AppEngine/Goのテストを100倍高速化するライブラリluciの紹介

こんばんは。アドベントカレンダー Google Cloud Platform(2) 23日目担当の @ks888 です。 突然ですが、luciというライブラリをご存知でしょうか。AppEngine/Goのテストに効果を発揮する素晴らしいライブラリなのですが、あまり使っているという話を聞きませ…

NightmareでE2Eテストをするときに役立った独自アクションのメモ

アドベントカレンダー ソフトウェアテスト6日目担当の @ks888 です。 ソフトウェアテスト Advent Calendar 2016 - Qiita 最近はNightmareでE2Eテストを書くことが増えてきました。Nightmareを使うと、例えば以下のような感じでテストを書けます。 var Nightm…

OSSプロジェクトにLambCIを導入しようとした話

最近はLambStatusというOSSを作っているのですが、今回は、このプロジェクトでCIを回すためにLambCIを導入しようとした話です。結果は失敗に終わったのですが、つまづいた箇所とかが参考になるかもしれないので残しておきます。 LambCIとは LambCIは、AWS La…

Go言語のインターフェースの値は、メモリ上でどう表現されているか

Go

前回の記事では、Go言語のスライスと文字列の値がメモリ上でどう表現されているか見てみました。今回はインターフェースへの理解を深めるべく、インターフェースの値がメモリ上でどう表現されているかGDBでみてみます。 インターフェースの値 まず、インター…

GDBでGo言語のスライスの値をのぞいてみた

Go

最近Go言語をよく触っています。触っているうちに、スライス、文字列、インターフェースなどの値がメモリ上でどう表現されているか知っておくと実装やデバッグ時に役立ちそうだなーと思うことが度々でてきました。そこでGo言語本体のソースコードを読みつつ…

StackdriverでGCP上のサービスを監視してみた

今関わっているサービスは、GCPのGoogle App Engine (GAE) とGoogle Container Engine (GKE) を使って開発しています。そのサービスの監視にStackdriver Monitoringを使ってみたときのメモです。 現在の印象としては、かなり面白い機能はあるけど、基本的に…

AWS LambdaでCI環境を作れるOSS「LambCI」試用メモ

これまでそれほど縁がなかったサーバレスですが、LambCIというOSSを使うとAWS LambdaでCI環境が作れるという話を聞き、ちょっと使ってみました。 GitHub - lambci/lambci: A continuous integration system built on AWS Lambda LambCIとは LambCIの紹介とし…

各EC2インスタンスに配置したSnortのアラートをELK (ElasticSearch, Logstash, Kibana) で監視する

EC2でネットワークのパケット監視をしたい場合、どうするのがいいんでしょうか。商用だとDeep SecurityとかAlert Logicとかありそうですが、値段もそれなりにします。なんとかOSSでできないかということで、ネットワーク型IDS/IPSであるSnortと、ELK (Elasti…

Site Reliability Engineering: How Google Runs Production Systems の読書メモ

SRE

最近Site Reliability Engineer(SRE)という職種やチームがよく話題になります。当初は、コードをよく書けるインフラエンジニアがふつうにやっていたことに名前を付けただけと思っていましたが、Googleの出しているSRE本(Site Reliability Engineering: Ho…

AWS WAFをバイパスしてSQLインジェクション攻撃をしてみる

最近はAWS WAFを触っています。こういう防御ツールは、やはり攻撃をどれぐらい防いでくれるか気になります。AWS WAFの場合、SQLインジェクション系の脆弱性を探ってくれるsqlmapをかけたところ、攻撃をブロックしてくれたという記事があります。 記事を読ん…

ApacheのDigest認証モジュールがどのようにnonceを生成しているか

前回の記事で、Digest認証がどうやって攻撃に対策しているかまとめました。いくつかの攻撃への対策として、nonceと呼ばれるワンタイムトークンが重要な役割を果たしていました。このnonceの生成方法は実装者に任せられているのですが、実際のWebサーバではど…

Digest認証はどのような脆弱性対策をしているか

最近CTFをやってみたのをきっかけに、Digest認証のRFC(RFC2617)を読みました。今どきDigest認証を使うことはあまりなさそうですが、RFCにはセキュリティ面で考慮したことが色々書かれていて勉強になりました。古典大事。というわけで、いくつかの攻撃手法…

Ansible Playbook向けデバッガをStrategy Pluginとして作り直しました

細々と開発を続けていたAnsible Playbook向けデバッガですが、ここ数ヶ月Ansible v2では動かない問題がありました。Ansible v2はPlaybookのレベルではv1との互換性を保持していますが、内部はがっつり書き換わっています。開発していたデバッガはAnsible内部…

JAWS DAYS 2016でAmazon Auroraの話を聞いてきた

AWS

3月12日に開催されたJAWS DAYS 2016に行ってきました。いくつかセッションを聞いてきたのですが、今回は[Deep Dive]Amazon Auroraセッションについて復習がてら書きます。 「クラウドソーシングLancers」を支えるAurora 【JAWS DAYS 2016】ランサーズを支え…

PackerのAnsible Provisioner利用時につまづいたところのメモ

PackerがリモートホストへのAnsible実行に対応しましたね!リリースノート。これまでもAnsible LocalというProvisionerはありましたが、構成管理の対象になるホストにAnsibleがインストールされてしまう問題がありました。今回追加されたAnsible Provisioner…

LVS(Linuxロードバランサ)のスケジューラの実装をみてみた

最近あるロードバランサにさわった時、参考のためにLVSのlc(Least-Connection)スケジューラの実装を確認していました。lcスケジューラは文字通り、接続数が一番少ないサーバに処理を割り振るアルゴリズムを実装しています。ただ実際の実装を見ると、もう少…

AWSサポートへの質問と回答のメモ(監視編)

AWS

前回に引き続き、昨年AWSサポートに質問した内容とその回答をまとめていきます。 CloudWatchのアラームがINSUFFICIENT_DATA状態になる条件について 背景と質問 CloudWatchのアラームは、OK、ALARM、INSUFFICIENT_DATAの3つの状態間を遷移します。このうち、…

AWSサポートへの質問と回答のメモ(データストア編)

AWS

あけましておめでとうございます。昨年もAWS上でインフラを構築・運用していく中で、AWSサポートにはずいぶんとお世話になりました。今回は年明け最初のブログということで、昨年AWSサポートに質問した内容とその回答をいくつかまとめてみたいと思います。 R…

海外のAnsible Meetupではどんなトークがあるのか調べてみた

先日Ansible Meetup in Tokyoが開催されました。僕は、Serverspecのテスト作成を補助するKirbyというツールについてLTしてきました。 発表資料: Serverspecを導入したものの放置気味な人へ Kirbyチュートリアル: Ansible + Serverspec + Kirbyによるサーバの…

Ansible + Serverspec + Kirbyによるサーバの自動構築

最近、Serverspecによるテストが不足している場合に指摘してくれるツールとして、Kirby(カービィ)というものを作りました。 GitHub Ansible MeetupのLTで紹介したときの資料 この記事では、Kirbyをちょっと試してみたいという方の参考になるように、Ansibl…

Ansible向けのコードカバレッジツールKirbyを作りました

PythonやJavaでコードを書く場合、コードカバレッジの測定は、よくやりますよね。最近、Ansibleでもコードカバレッジを測りたくなったのですが、それらしいツールがなかったので、作ってみました。名前はKirbyです。今回はKirbyがどんなツールなのか紹介して…

Ansible+DockerfileによるDockerイメージの作成

Dockerイメージの作成にAnsibleを使いたい場合、Packerを使う方法がよく知られています。 Packer の provisioners に Ansible を指定して Docker イメージを作成する - Qiita ただ、Packerの売りは、Amazon EC2、VirtualBox、Dockerなどの各種VM用イメージを…

スマートグラス MOVERIO BT-200AV をレンタルで使ってみた

EPSONは、2年ぐらい前からMOVERIOというブランドでスマートグラスを出している。気になりつつも値段が高くて手を出せなかったのだが、最近レンタルサービスを始めたようなので、早速レンタルして使ってみた。4日間だけのレンタルなので、忘れないうちに感想…

Ansible Playbook向けのデバッガを作りました

(追記:このページの情報は若干古くなっています。Qiitaに紹介記事がありますので、参考にして下さい) Ansibleは強力な構成管理ツールですが、実環境で使ってみようとすると、うまく行かない点がいくつか出てきます。その中には、欲しいモジュールがない、…

AnsibleがPlaybookを処理する流れを追ってみた(2)

前回のエントリで、Ansibleがplaybookを処理する部分の実行の流れをまとめた。今回は、前回まとめきれなかったRunnerクラス周りの処理をまとめる。 このエントリでまとめること 今回はRunnerクラスの実行の流れをまとめる。Runnerクラスは、moduleを設定対象…

AnsibleがPlaybookを処理する流れを追ってみた

最近、サーバの構成管理ツールAnsibleのコードを読む機会があった。忘れる前にメモしたことをまとめておく。 このエントリでまとめること このエントリでは、Ansibleのplaybookを処理する部分の実行の流れをまとめる。playbookを一度でも書いたことのある人…

ライフログ収集リストバンド UP by Jawboneを使ってみた

ここ最近、Jawbone社が出しているライフログ収集リストバンドUPを使っていた。 自分の睡眠時間の把握が目的だったので、今回は睡眠ログのみ収集。着用も睡眠中・前後のみ。実をいうと、最初の1週間ぐらいは面白く使っていたのだが、1ヶ月もすると飽きて使わ…

Androidのフェイスアンロック機能を使ってみた

バージョン4.0以降のAndroidには、フェイスアンロックという機能がある。これは、自分の顔を携帯電話のフロントカメラに写すことで、携帯電話のロックを解除する機能。あまり期待せずに2週間ほど使ってみたが、意外と面白い機能だった。以下、顔認識の精度の…

VIVITEK QUMI Q5 (モバイルプロジェクタ) を使ってみた

VivitekのQUMI Q5というモバイルプロジェクタをここ最近 自室で使っている。アニメや映画を100インチ級の大画面で見たかった、というのが理由。TVという選択肢もあったが、値段が張るし、横幅2mの物体をおくスペースがない。その点、モバイルプロジェクタは…

Orbi Yokohama (オービィ横浜) に行ってきた

Orbi Yokohamaに行ってきたときのメモ。今ひとつだった点もあるけど、楽しい&新しい体験がいくつかできたので行って良かった。1. 良かった点123.4シアターの巨大スクリーン。幅40m、高さ8m あるらしい。 このサイズのスクリーンに一つの映像が映し出される…

CEATEC 2013に行ってきた

CEATEC 2013に行ってきたときのメモ。 自動車、ディスプレイの2つについて書く。1.自動車自動車向けパーソナルアシスタントが気になった。自動車向けパーソナルアシスタントとしては、ホンダとカヤックの「ROAD DJ」、トヨタの「エージェント」があった。「…

Eye-Fi mobi を使ってみた

Eye-Fi社のSDカード「Eye-Fi mobi」を使ってみたときのメモ。1.Eye-Fi mobi とはEye-Fi社が2013年6月に発売した WiFi機能搭載のSDカード。 デジカメで撮影した写真を保存するのはもちろん、WiFi機能を使って撮影した写真をスマホ等に自動転送することが…