その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

2017-01-01から1年間の記事一覧

DynamoDB LocalでもDynamoDB Streamsは使える

TL;DR DynamoDB LocalはDynamoDB Streamsをサポートしている. 本物のDynamoDB Streamsのように,一定期間以上古いレコードについてはトリミングされる (具体的なトリミング期間については未調査). ドキュメントが少ない (見つけられなかった……) のに加え,…

手っ取り早くウェブアプリケーションにOAuth2認証を導入する

bitly/oauth2_proxyを用いて,ウェブアプリケーションに手っ取り早くOAuth2認証を導入するという話です. oauth2_proxyは良い感じでOAuth2による認証を肩代わりしてくれる君で,何らかのリバースプロキシの認証機構と組み合わせて利用すると簡単にOAuth2ログ…

AWS Elastic Beanstalkで初期環境構築時にhealth checkが延々通らないためにその一生を終えたくない時に読む

AWS Elastic Beanstalkは摩訶不思議な理由でhealth checkが通らなくなることがあります. たとえばEBの環境を新規に構築する際に,とりあえず動作するかどうか確認するためにAWSが用意してくれているサンプルアプリをデプロイしようとするでしょう.しかしこ…

suコマンドでユーザを切り替える時に任意のコマンド実行してからシェルを立ち上げて欲しいんですけどって時

例えば踏み台サーバに個人のアカウントで入ってから,或るuserにsuで切り替わって色々する,みたいなシチュエーションがあると思います. そんな時に,或るuserにsuする際にあらかじめ任意のコマンドを実行しておいてほしいという時がある.あるのです.とい…

定期的にtcpdumpをある期間だけ実行したいという時

tcpdumpの提供する-Wオプションと-Gオプション,ならびにcrontabを併用するといける.tcpdumpの-Wオプションはログローテーションを行う回数で,-Gはそのローテーション期間を秒数で指定できる. 例えば $ tcpdump -w ./%Y%m%d%H%M%S.pcap -W1 -G60などとや…

訳あってcarton等を利用せずに,しかしきれいなperl環境を保ったままモジュールをインストールしたいんですけどって時

plenvやperlbrew等できれいなperl環境を利用している際に,Perl::Critic (例えばエディッタのsyntax checkingに引っ掛けているようなシチュエーション) やLなどの自分の環境でだけ動かすようなモジュールを環境グローバルに入れたくないという場合が生きてい…

ElasticsearchあるいはKibanaのDockerイメージからX-Packを取り除く方法

ElasticsearchのX-Packはマジ便利なんですが,有償なので (だたしmonitor機能なんかは無償のBasicライセンスで使えて最高) 使わない人も多いでしょう. そんな場合,Elasticsearch/KibanaをDockerで動かすという時にX-Packを取り除きたくなるというのが人情…

Elastic BeanstalkでImmutable deployを試す

やり方についてはドキュメントを読むと良い.docs.aws.amazon.com option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: Immutable HealthCheckSuccessThreshold: Ok IgnoreHealthCheck: false Timeout: "600" 設定ファイルでやるならばこうい…

相手のサーバにHTTP(S)で接続できるかどうかを確認するときにリトライしながらやりたいんですけどって時

例えばCIでテストのためのストレージのコンテナを上げる際,そのストレージが上がりきるまで待たなければテストには使えないわけですが「上がりきるまで何秒待てばよいのか」というのは一概に決められるものではありません. そうした際,実際にストレージに…

Groovyで動的にメソッドを生やす

インスタンスにメソッドを生やす class EmptyCat {} def cat = new EmptyCat() cat.metaClass.nyan = { return 'meow' } cat.nyan() // => 'meow' インスタンスの metaClass からMetaClass (HandleMetaClass) を引っ張ってきて,それ経由で生やしたいメソッ…

CircleCI 2.0でElasticsearchを起動しつつテストする

例えばElasticsearchを使ったプロジェクトがあったとして,それをCircleCIで継続的にテストしたいとする.CircleCI 2.0はコンテナベースのCI環境なので,そのプロジェクトが採用している言語のコンテナの上でElasticsearchを動かす必要がある.どうするか.c…

SSL/TLS化しているサイトにリクエストを投げたら証明書の検証にしくじっているという時

表題のような状況のトラブルシュートについて記します.moznion.hatenablog.comというかこれの続きです.怪奇現象など存在しない. 背景 ブラウザとかcurlとかからはリクエストが通るのにJavaからは通らない Let's encryptの証明書を使っている Let's encryp…

Multiple projectなgradleのprojectでcheckstyle pluginを有効にする

Multiple projectなgradle projectだと, apply plugin: "checkstyle" と書いてもそれだけではcheckstyle pluginがうまく動かない.おそらく Unable to create Root Module: config ... などというエラーとともに死ぬであろう. というのも,gradle checksty…

Karabiner-Elementsでcolonとsemicolonを入れ替える

[追記] コメントで指摘がありましたが,Karabiner-ElementsのGUI上で complex modifications → Add rule → import more rules from the Internet → Exchange semicolon and colon を選択することで所望の動作の実現が可能なようです.従って本記事はcolonとs…

社内でDDD勉強会をやった

DDD (Domain Driven Design/ドメイン駆動設計) についての学習気運があり,その勉強会を社内でやったのでその経過を記すものです. DDDに関する詳細な内容には触れません (良い本や資料が巷には溢れています).読書会自体をどうやったか的な話です. 前提 de…

私信です

私信ですが転職いたします.以下の通りです.From: LINE To: Soracom関係各位に感謝を申し上げます.ありがとうございました. 以上です.よろしくお願いします.なお本記事は以下のレギュレーションに従いました.タイトルで煽らない、かしこまった見出しも…

Kyoto.なんか #3で「そして物語は更に何度目かのアプリ内通知再実装を迎える」というタイトルで話してきました

kyoto-nanka.connpass.com「そして物語は更に何度目かのアプリ内通知再実装を迎える」というタイトルで話してきました.スライドは以下です.speakerdeck.com前回開催のKyoto.なんか #2では「そして物語は何度目かのアプリ内通知再実装を迎える」というタイ…

builderscon tokyo 2017に参加してきた

builderscon.io参加してきました. 見た中で印象に残ったトークについて感想を少し.詳細な内容を何も書けないんですがはちゃめちゃに面白かったブラウザ拡張のクロスブラウザ対応についての話.いろいろな便利ツールを自作して利用していて格好良かった.と…

YAPC::Fukuoka Hakata 2017にてWeb Application Good Error Messageというタイトルで話してきました

表題のとおりです.話しました. これは僕が普段の開発中にエラーメッセージと触れあう時に気にしていたり,考えていることを上手いこと言語化したいという試みから始まったものです.speakerdeck.com発表中にdan kogaiさんから「『間違えたことを言っている…

Exit statusのセマンティクス

*nixのexit statusのセマンティクスについてかつて質問して,答えていてもらっていたことを思い出したので記します. moznion [5:46 PM] signal受け取ってexitする時,そのsignalの値をそのままexit codeに使う,みたいなお作法みたいなのってあるんでしたっ…

JSON::XSでデシリアライズする時にtrueとfalseの扱いを変更する

Perl5の話題です. JSON::XSを用いて,JSON StringをPerlのHashRefにデシリアライズする時にtrueとfalseの扱いを変えたいという話です.デフォルト状態でJSON::XSを用いてデシリアライズすると, true は Types::Serialiser::true すなわち JSON::PP::Boolea…

List::Haystack - A immutable list utility to find and count element

Perl5の話題です.List::Haystackというものを書きました.CPANにもアップロードしています. 経緯としては以下.Perl,immutableな感じで,List (Array) 中から要素をfindしたり,出現回数を取るモジュールって存在しているんでしたっけ— パブリックイメー…

Perl5のサブルーチン呼び出し時に二項演算子を期待していたら単項演算子の引数として認識されてしまう

sub func { return 100; } みたいなサブルーチンがあった時に, say(func - 99); みたいな感じで呼び出すと,パッと見 1 が出力されそうに見えるが,実際は 100 が出力される. これは - 99 が func の引数として解釈されて食われるためである. B::Deparse …

YAPC::Fukuoka 2017 HAKATAのトークプロポーザルを出した

yapcjapan.org出しました.最近YAPCでしか喋ってない感じがしますね.果たしてそうなのです.というわけでプロポーザル内容は以下のとおりです. Web application good error messages and bad error messages Webアプリケーションを作り,運用していると例…

OpenWrtの環境に対してAnsibleでプロビジョニングをかける

メモ. Ansibleを利用するという文脈におけるbareなOpenWrtの環境の特徴としては以下のようなものがある; sftpが有効ではない Pythonランタイムが入っていない これらを解決すれば,あとはいつものように普通にAnsibleを使える (はず). というわけでそれぞ…

OpenWrtの設定を強制的に初期状態に戻す (failsafe modeに入る)

OpenWrtでうっかりLANのInterfaceの設定をしくじってしまったりすると,Web UIに入れなくなってしまい (もちろんsshもできない) その後の設定が一切不能になって詰む事があります.そういう時に工場出荷時 (という表現が正しいのかどうかはわかりませんが) …

WZR-HP-AG300HにOpenWrtを焼く

BUFFALOの無線LANルータであるところのWZR-HP-AG300HにOpenWrtを焼いて利用する際のメモです.なおマシンのOSはmacOSです.Windows等だとちょっと違うかもしれないが概ね問題ないはず.buffalo.jp AG300HとマシンをLANケーブルで繋ぐ 適切なケーブルで繋ぐ …

MyBatis + GroovyでMapperを作っている時に良い感じでWHERE IN使いたいんですけど〜って時

MyBatisのMapperをGroovyのannotationを使って書くと何かと便利 (主に「XMLを書かなくても良い」という点で便利) なわけですが,そんな中で「WHERE IN」を利用したSELECTを @Select annotationベースでどうやって書くのかという件です.要は SELECT * FROM u…

MacでErlang/OTPをソースコードからビルドする時にNo usable OpenSSL foundって言われるんですけどって時

前提 OpenSSLがbrewで入っている. 結論 こうすれば良い (brew環境下あるある); $ ./configure --with-ssl=$(brew --prefix openssl)Ref. Erlang -- Building and Installing Erlang/OTP 所感 わざわざソースコードからビルドしなくても,brew使ってるんだっ…

サービスを提供するにあたって取得されたくないアカウント名が集まっているライブラリが欲しいんですけど〜みたいな時

例えば `logout` みたいなユーザ名を取得されてしまうと,ユーザ側からすると不気味に見えるし,URL設計が終了している時などに脆弱性になり得る (とは言うものの,そもそもそういった脆弱性は根本的に防ぐべきだし,URL設計を終了させてはならない). ので…