仮説を立てる

原因不明の問題を調査してるいときは どれだけ多く仮説を立てられるか。 どれだけ早く仮説を立てられるか。 どれだけ立てた仮説を検証できるか。 あたりが大切なのかなと思ったり。

Puppeteer + 何?

Puppeteer は Chrome を操作するライブラリなので E2E のテストで利用するには、テスト用フレームワークと組み合わせた方が便利そう。 何と組み合わせるかを悩んでいてたけれど、最終的に Jasmine に決めた。 理由は、Puppeteer のテストが Jasmine で書かれ…

Puppeteerで自己署名証明書を使ったサイトのテストをする方法

ignoreHTTPSErrors: true を puppeteer.launch の引数に渡す。 const browser = await puppeteer.launch({ ignoreHTTPSErrors: true, // <= これ args: ['--no-sandbox', '--disable-setuid-sandbox'] }); 正当な証明書を用意するハードルが下がって来ている…

vscode-fluentd

vscode-fluentdという Visual Studio Code の拡張機能を作った。 ここ最近はVimを離れてvscodeを使うことにしている。 fluentd の設定もちょくちょく書くことがあるのだが、vscode に fluentd のシンタックスハイライトがなかった。なので、作った。 形から…

Amazon Elasticsearch Service 小ネタ

お断り Amazon Elasticsearch Service に限った話ではないけれど。 elasticsearch-head を使う elasticsearch-head はローカル環境のDockerで実行させる. $ docker run --rm -p 9100:9100 mobz/elasticsearch-head:5 ブラウザで elasticsearch-head にアクセ…

JavaのDNSキャッシュのTTLが何秒になっているか

を調べるプログラム。 gist6fb0e42da6cb2aeb32da2cd2983f94b3 コンパイル時に以下のWarningが発生する。 NetworkaddressCacheTtl.java:5: warning: InetAddressCachePolicy is internal proprietary API and may be removed in a future release sun.net.Ine…

terraform と パラメータストア

terraform 0.9.7 で AWS パラメータストア(Amazon EC2 Systems Manager Parameter Store) がサポートされた。aws_ssm_parameter がそう。 簡単なものを試したのでメモしておく。 サンプル parameter_store.tf でパラメータを設定する。elastic_beanstalk_env…

Machine Learning その後

2017年3月27日、会社へ向かう電車の中で最後のビデオを見終えた。もちろん途中のクイズ・課題はすべて合格している(満点ではないけれど)。 感想 Week5が演習の山場。これを超えるとスルスルと進む。 Deep Learning がきっかけで機械学習について勉強し始め…

Machine Learning

Coursera の Machine Learning コースを 2016/12/27 から始めた。今、Week 4 の途中。とりあえずは、付いていけている。課題を満点でpassしていないのが、心残りだけれど期限があるので期限優先で進めている。順調に進めば、2017/04 には終わっているはず。

2016年の振り返り

Pull Requests 2016年はPRが多い年だった。 GitHubを使い始めてからこれまでに、PRを出した件数を年ごとに数えてみると以下の通りだった。 2010年:0件 2011年:0件 2012年:1件 2013年:0件 2014年:1件 2015年:2件 2016年:11件 2016年が飛び抜けて多い。基本的…

fluent-plugin-parameterized-path を作成した

fluent-plugin-parameterized-path という fluentd のプラグインを作成した。 どんなプラグインか ログをファイルに出力するプラグイン。 指定したキーの値から、出力するファイルのパスを決定する。 out_file とほぼほぼ同じ機能がある。symlink_path は未…

Digest認証で制御されているElasticsearchにアクセスする

Python Elasticsearch Client を使って, Digest認証のかかったElasticsearch に接続する方法. from elasticsearch import Elasticsearch, RequestsHttpConnection from requests.auth import HTTPDigestAuth es = Elasticsearch( ['myelastic.example.com'],…

vscode-digdag

Visual Studio Code のDigdag 向け拡張機能を作成している。名前はvscode-digdag。 一番初めのバージョンの公開は 2016年7月19日。すでにおよそ2か月が経過しているので、「作成した」というよりは「作成している」の方がしっくりくる。 開発も、当初はシン…

tokyo.ex #5 に参加した

beam-lang.connpass.com に参加してきた。19:00 に会社を出て 19:20 分に到着。ギリギリ。 細かいことは置いておいて、印象に残った部分を残しておく。 Phoenix について @ohrdev さんのお話。 Elixir の公開されているライブラリの数は 3000くらい。他の言…

VSCode に Integrated terminal という機能が追加されていた

VSCode 1.2.0 で Integrated terminal という機能が追加されていた。 大雑把にいうと、エディタのウィンドウの一部にターミナルを追加させる機能。 mix コマンドをコマンドパレットから実行できるように拡張機能を書こうとしてたんだけれど、Integrated term…

Visual Studio Code をコマンドラインから起動させる

問題 コマンドラインから Visual Studio Code を起動したいが、どう設定すればいいか不明。 環境 Mac OS X 10.10.5 Visual Studio Code 1.2.1 解決 コマンドパレットから shell Command: Install 'code' command in PATH を実行する。アンインストールも同じ…

Ueberauth: (FunctionClauseError) no function clause matching in Keyword.merge/2

問題 phoenix に ueberauth_identity を組み込もうとしたところ、コンパイル時に (FunctionClauseError) no function clause matching in Keyword.merge/2 というエラーが発生する。 環境 Elixir 1.2.6 Phoenix 1.1.4 ueberauth_identity 0.2.3 解決 config.…

(PHPUnit 5 未満では)データプロバイダでモックオブジェクトを作成しないほうがいい

前提 PHPUnit 5 未満を使用している(問題の確認をしたのは PHPUnit 4.8.21)。 問題 指定したメソッドが一回だけコールされることを確かめるテストで、指定したメソッドが一回も呼ばれていないのにテストが成功してしまう。 モックオブジェクトはデータプロ…

はてなブログでElixirのコードにシンタックスハイライトを適用する方法

2015/11/18 時点で、ここを見る限りElixir のシンタックスハイライトは未対応。 でも、大丈夫 Elixir と Ruby は見た目が似ていると言われている。ruby を指定しておけばそれっぽくハイライトされる。 defmodule, defmacro などなど Elixir にしかないキーワ…

HTTPリクエストからChannelへメッセージを送る

GETやPOSTなどのHTTPリクエストを受け取り、その処理の中でChannelにデータを送信したい場合、以下のように書くことでメッセージを送信できる。 HelloPhoenix.Endpoint.broadcast_from! self(), "rooms:lobby", "new_msg", %{uid: uid, body: body} http://h…

コマンドラインの引数を得る方法

Elixirでコマンドラインのツールを書く方法が(自分の観測範囲内では)二通りある。 一つはスクリプトとして実行する方法。もう一つは、escript を使う方法(こっちの方法も名前からするとスクリプトとして実行されてるっぽいけど)。 スクリプトとして実行…

Elixirで正規表現

Elixir の正規表現は Regexモジュール を使う。 仕事ではPHPを書くことが多い。PHPの正規表現は PCRE関数 が標準的だろう。普段使うPCRE関数をElixirのRegex で置き換えるとしたらどうなるのか? 比較の対象は preg-match と preg_replace の二つにする。理由…

Elixirのドキュメント生成方法

mix.ex の deps に ex_doc と earmark を追加する。バージョンは最新版で。 defp deps do [{:ex_doc, ">= 0.0.0", only: :docs}, {:earmark, ">= 0.0.0", only: :docs}] end パッケージのダウンロードとコンパイル $ mix deps.get $ mix deps.compile 環境変…

prefecture_jp というライブラリを作成した

prefecture_jpというライブラリを作成した。Hexにも上げた。 機能 都道府県コードから都道府県名への変換、またはその逆。都道府県コードは JIS X 0401 に対応(0埋め2桁の数字)。 使い方 単体で 都道府県コードから都道府県名を検索 iex> PrefectureJp.fin…

Elixir v1.1.0

v1.1.0 がリリースされていた (下書きしているときは、v1.1.0 だったけれど、現在の最新版は v1.1.1)。 機能追加で特記すべきことは、Enum, Dict, Task への関数の追加と、MapSet 型の追加、と書かれている。HashSet よりも速く、今後はSetの実装はMapSetが…

Elixir1.0.5 は Erlang18 に未対応ではなかった

というのを初めて知った。 きっかけは、dialyxir を使おうと思ったから。 dialyxir をインストールする時の必ずエラーが発生しインストールに失敗する。 エラーの内容は以下の通り。 Creating PLT /home/ymmtmsys/.dialyxir_core_18_1.0.5.plt ... ** (Funct…

HTTPoisonのプーリング

HTTPクライアントにHTTPoisonを利用してみた。 同時実行数を増やすと50コネクション以上のコネクションは作成されないことがわかった。コードを見てみると、内部ではhackneyが使われていることがわかった。 hackney のドキュメントをみると、何も指定がなけ…

Phoenix で Poolboy を使ってコネクション(プロセス)プーリング

Poolboy を使ってコネクションプーリングができるようにする。接続先は memcached。 memcached のクライアントにはmcdを使った。 サンプルのhello_phoenixを元にした。手を加えたファイルだけ以下に貼っておく (ちなみに Phoenix は v1.0.0)。 実行してみと…

Phoenixのデプロイ

Erlang (Elixir) の機能の中で気になっているのが、ホットデプロイだ。といっても、そういう機能があるからといって気軽にデプロイできるものでもないらしいけど。 デプロイに関するスライド。 http://sile.github.io/slide/kbkz_tech_05/#/ http://www.slid…

mix phoenix.new のオプション

アプリケーション作成時のオプションに何があるか調べてみた(といっても、大して調べてないけれど)。 答えはここに。 --app アプリケーション名?よくわかってない。 --module モジュール名を指定する。phoenix.new したときのディレクトリ名とモジュール…