Node.jsのProxyでdirty checkとmethod missingを実現してみる

過去にphpのマジックメソッドを使ってRailsのfind_all_by_*メソッドを実装してみる | WEB EGGという記事を書いたのですが、Node.jsでもProxyの登場により、似たようなことができるのでは?と思ったので試してみました。

今回の題材は、同じくRailsのActiveRecordから、ActiveModel::Dirtyモジュールです。

こんな感じに変更を検知するためのマジックメソッド、ユーティリティが加わるモジュールだそうです。

昔であればBackbone.jsのモデルが似たような仕組みを提供していました。
ですが、あれば独自のセッタを提供しており、それを利用しているから変更が検知できるという仕組みです。 いわば白魔術です

今回は、 独自のセッタ を提供せず、普通にオブジェクト操作しているだけで変更検知ができちゃう機能の実装を目指します。
白魔術に対して言うなれば、黒魔術です。

ちなみに使用しているNode.jsのバージョンはv6.1.0です。

Continue Reading…

CircleCI 1.0でDockerやdocker-composeを使用する際の制限と気をつけること

こんにちは。
かれこれ1年くらい仕事でCircleCI + Dockerを使ってみているのですが、 とにかくツラい
CircleCI + Docker構成でCIしたい方はだいぶマゾいとすら思います。
他のCI系のサービスどうなんだろうと調べつつも、これまで戦ってきたノウハウは備忘録として残そうと思います。

なにがツラいかというと、

という構成だと、色々なDockerに関する操作が動きません。
ローカルでは動くので、基本ドはまりする要素満載です。
更にdocker-composeでブラックボックスに包むと、余計にわけがわからなくなります。

ということでハマったことと、CircleCIでDockerを扱うための基本戦術を残します。

Continue Reading…

PHPUnitのカバレッジレポート(XML)を使ってカバレッジの計算してみた

こんにちは
仕事の方でテストカバレッジをGUIなしに集計する必要が出たので、

  • メソッド単位のカバレッジを集計したい
  • クラス単位でのカバレッジを集計したい
  • ファイル単位でのカバレッジを集計したい
  • ディレクトリ単位でのカバレッジを集計したい

の集計をするために、PHPUnitが出力するClover形式のXMLと格闘して得られた、XMLの構造と扱い方についてまとめてみました

Continue Reading…

AWS Athenaでテーブルを作る時にAccess Deniedと怒られたら試すこと

こんにちは
はじめてAWS Athenaを使用してみました

試しにS3に置いてあるCSVをもとにテーブルを作ろうとしたらAccess Deniedのエラーが発生
権限は足りており、疎通確認もできているので、権限系の問題ではない。ではなぜ?

調べてみたらしょーもないところでドハマリしていたので、備忘録を残しておきます

Continue Reading…

HTTP APIのテストツールDreddがSwaggerに対応していたので試してみた

以前に

APIドキュメントでAPIサーバをテストする | WEB EGG

という記事を書いたときに紹介したDreddですが、
いつのまにか自社サービスのApiaryだけでなくSwagger(OpenAPI v2)にも対応していたそうです。

ついでにロゴも洗練されてかっこよくなってます。

自分で書いた過去記事の末尾でも軽く触れていますが、
OpenAPI initiativeも未だ活動続いてますし、「乗るしか無い、このビッグウェーブに」といったところなんでしょうか。
なんにせよApiaryにロックインすることなく、Swaggerで記述した仕様書がテストできるようになったというのは嬉しいことなので早速試してみました。

Continue Reading…

すごーい!きみはフレンズ言語をDockerizeできるフレンズなんだね!

すごーい! きみはプログラミング言語を実装できるフレンズなんだね – Qiita

こちらの記事と勢いに感銘を受け、フレンズ言語を動かそうとしてみたのですが、
リポジトリを覗いてみるとF#。Releaseで配布されているのはexe。
Windowsだ!たーのしー!

ということでDockerizeしてフレンズ言語をLinuxでもMacでも手軽に動かせるようにしてみました。わーい!

Continue Reading…

Dockerのビルド時にGithubのプライベートリポジトリをcloneする

表題についてざっと調べると、

などの情報が出てくるのですが、そんな大げさな話じゃなく単にcloneがしたいだけなんです。
調べても意外と出てこなかったのでdocker buildの待ち時間に記事として残しておきます。
なお、記事のタイトルは非正確で、厳密にはプライベートリポジトリをnpm installする話です。

Continue Reading…