かまたま日記3

プログラミングメイン、たまに日常

TOEIC 213回 結果

Listening: 335 (300), Reading: 255 (295), Total: 590 (595) *1 あまり勉強できてなかったので残当。。リスニングが上がっているのがちょっと救い。 過去ログ TOEIC 210回 結果 - かまたま日記3 TOEIC 207回 結果 - かまたま日記3 *1:括弧の中は前回(210回…

メソッドの引数にメソッドの返り値を渡す場合、blockの渡し方に注意する

たとえば、 こんなメソッドがあるとします。 def foo(arg) puts "#{arg}, #{block_given?}" end def var if block_given? yield else 'no block' end end 下記のようにブロックの渡し方でfooメソッド側のblockとなったりvarメソッド側になったりします。想定…

GitHubのPull Requestで変更されたファイル一覧を取得する

Git

結論から言うと、あるPull Requestがmasterにマージコミットされると、 直前のコミット*1と、Pull Requestの最後のコミットの二つが親コミットになっているので、最初の親をHEAD^で取得しHEADとのdiffを見る。 たとえばこのPRがマージされた場合の、masterの…

Little Glee Monsterにハマっている件

TL;DR 最近 Little Glee Monster (以下リトグリ)というボーカルグループにハマっておりまして、その良さを共有したいというポストです。 リトグリとは? このブログにたどり着くであろう想定読者(Web系エンジニア)の方は知らない人が大半だと思うので軽く紹介…

GoogleのAPIトークンをS3に保存する

GoogleAPI Clientには Google::Auth::TokenStore というトークンを保存するためのインターフェースが存在していて、デフォルトでは Google::Auth::Stores::FileTokenStore Google::Auth::Stores::RedisTokenStore のふたつがある。これのS3バージョン。 ひと…

GmailをAPI経由で取得する

GmailのAPI経由で未読のメールを1件検索して既読にするサンプル。OAuthのトークンがない場合はコンソールに出てくるURLをブラウザで開いて認証後に出てくるコードを入力する。 require 'google/apis/gmail_v1' require 'googleauth/stores/file_token_store'…

BashのPS4でデバッグが捗る

Bashでset -xとするとデバッグモードとして処理内容が逐次出力されますが、PS4という環境変数で出力内容を調整できます。 test.sh #!/usr/bin/env bash PS4='+ [${BASH_SOURCE}:${LINENO}] ${FUNCNAME:+$FUNCNAME(): }' set -x hello() { name=$1 echo "Hell…

シェルスクリプトで再実行するための関数

retry() { command="$@" local try_count=0 local retry_limit=3 local wait_seconds=300 until sh -c "$command"; do [ $try_count -eq $retry_limit ] && return 1 sleep $wait_seconds try_count=$(expr $try_count \+ 1) done } # example retry ls -ltra…

北海道旅行に行ってきた

8/10~13 の3泊で北海道に行ってきました。 1日目(8/10) 直前に飛行機を取ろうとしましたが、羽田発の便は全滅だったので茨城空港から出発。東京駅から500円のバス便があるのでそれを利用しました。茨城空港はガルパン推しがヤバかったです。 12時前に新千歳…

シン・ゴジラを観た

かなり評判が良かったので見てきました。感想としては評判に違わぬ内容で面白かったです。 全体的に日本よりなところ(アメリカが完全悪者扱い)とかは賛否が別れるかと思いますが、庵野節ってことで僕はアリかなと思いました、ところどころでエヴァネタとかも…

Terraformをバージョン管理できるtfenvを作った

github.com 名前を見てもお分かりのようにrbenvと同じような感じのterraformのバージョン管理ツールです*1。複数プロジェクトをterraformで管理しててそれぞれのバージョンが分かれてる場合を想定して作ってます。 ぜひぜひ、使ってみてください! 基本的な…

Terraform 0.7.0での変更点

とりあえず、ここ に書いてあることのざっくりメモ 各providerのバイナリファイル(terraform-*)が不要になったので、消す planで結果がmapだった場合foo#ではなくfoo% になった concat()はstringでは動かなくなった、listのみ, stringの結合は${var}-fooみた…

Terraformのcountでvariable以外のinterpolationを使えない

version Terraform 0.6.16 本文 ドキュメント にも書いてあったのですが、Terraformで複数リソースを一気に定義するときに count という項目を使うのですが、ここでは直接数字を入力するか、 variables で定義した値に対するinterpolationしか使えないようで…

GitHubのissueを擬似的に消すためのRubyスクリプト

GitHubのissueは削除することが出来ないので、タイトルと本文とコメントを全部消すことで、擬似的になかったことにします。 (これでもタイトルの変更履歴は残るので、完全に消すことは出来ないわけですが...) require 'octokit' require 'highline/import' O…

Recruit Technologies Open Lab #03 Infrastructure as Code に参加してきた

atnd.org スピーカーが興味深い方ばかりだったので、参加してきました。 多くの方が Infra as Code の本質はインフラがコード化することで、ソフトウェア領域での知見が適用できるようになって来たと言っていたのが印象的でした。 バージョン管理するように…

JenkinsでRubyスクリプトの出力をすぐに出す

問題 JenkinsのJobでRubyスクリプトを呼んだら、処理が終わるまで puts とかの標準出力がJenkinsのコンソールに出ない 対策 標準出力がバッファリングされないようにRuby側に以下の記述を追加する $stdout.sync = true

Kubernetes meetup #2 に参加してきた

k8sjp.connpass.com Kubernetes(以下k8s)の勉強会に参加してきました。当日にキャンセル待ちから繰り上がったので僥倖でした。 k8s は以下の動画を見たくらいであまり詳しくないまま参加したので、簡単な機能説明や出来ることなどを説明してもらったのは良か…

TOEIC 210回 結果

Listening: 300 (250), Reading: 295 (275), Total: 595 (525) *1 目標にしていた600点届かず。次も頑張ります。 過去ログ TOEIC 207回 結果 - かまたま日記3 *1:括弧の中は前回(207回)の得点

家電三種の神器を買ってQOLが上がった件

先月に一大決心してルンバ、食器洗い乾燥機、ドラム式洗濯機を買いました。 全部かなりなライフチェンジングな買い物で満足しています。 どれも良かったですが、しいて言えば個人的な費用対効果としては ルンバ > 食洗機 > ドラム式 かなと思いました。参考…

GitHubでsquash mergingが出来るようになった。

最近某氏のGitの記事がバズったので対抗意識を燃やしてGitHubの新機能の記事を書いてみることにします。 github.com ここ3日くらいのうちにプルリクをマージしてる人はUIの変化で気づいている人も多いかと思いますが、この機能はPull Requestをマージすると…

Chrome Developer Tools で帯域制限した状態のテストをする

Web開発をやっていると地方や海外の回線が遅い環境の場合の挙動確認を行いたい場合があったりするのですが、そんな時に便利なのがタイトルの機能です。 たとえば何もしない場合、今インターネットに繋いでいる回線でこのブログを開いた場合、だいたいこのブ…

Jinja2テンプレートでデリミタを文字列として表示する

ここ最近Jinja2というかAnsibleネタが続きますが、AnsibleのJinja2テンプレートでデリミタになってる文字列({{, {%など)自体を表示したい場合、{{}}式の中に表示したい文字列を書きます {{ "{% Hello }" }}

Jinja2テンプレートでincludeしたファイルにインデントをつける

環境 Jinja2 2.2.8 *1 何に困っていたか AnsibleでNginxの設定ファイルを作ってた時に、共通設定ファイルを作って必要な箇所でincludeしていたが、共通ファイルの方がインデント付いてなくて出来たファイルのインデントが崩れてしまう。 例 このファイルを(c…

Ansibleでパイプを使いたい場合はshellモジュールを使う

AnsibleにはCommandモジュールとShellモジュールがあるのですが、commandモジュールは安全な代わりに一つのコマンドしか実行できません。|や;なんかを使って複数のコマンドを同時に実行したい場合はShellモジュールを使いましょう。 Commandの場合はパイプ以…

AWS上に構築したAnsible Towerのバージョンアップ

会社で使っているAnsible Towerのインスタンスが急にEC2のDynamic Inventory出来なくなり*1、急きょバージョンアップすることになったのでそのメモ。 基本的に以下のページの手順に従うだけです。 12. Upgrading an Existing Tower Installation — Ansible T…

TOEIC 207回 結果

Listening: 250, Reading: 275, Total: 525 まあ英語やりはじめて最初にしては悪くなかったかと。ここから上げていきます。

Nexus5を修理に出した

現在Nexus5を使ってるんですが、昨年の2月頃からずっと画面が破損したまま使ってました。 ケータイ落として画面割れたショック…— かまたま (@kamatama_41) February 8, 2015 最初の頃はまだ割れもそんなに酷くなかったんですが、いろいろあって最近はこの記…

Pythonでリストを結合して文字列にする

str#join(iterable)を使います。 他の言語*1と違ってセパレータとなる文字列クラスの方にメソッドがあるのでちょっと違和感を感じますね。 >>> ','.join(["a", "b", "c"]) 'a,b,c' *1:JavaとRubyしか知りませんが

ngx_mrubyでメンテナンス画面表示を自動化する

自らのホスト名の名前を持つフラグファイルの存在(中身は空)をチェックし、503とメンテナンス画面を返すためのnginxの設定 特定のremote_ip(オフィスネットワークを想定)だったらメンテナンス画面は出さない仕組みもついでに パフォーマンスはベンチ取ってな…

2015年振り返り、2016年の抱負

仕事関係 転職 9月に3年半勤めたCA社を退職し、新しい挑戦を始めたのが一番大きい変化でした。扱うサービスから会社の規模、テクノロジースタックまで何から何まで違う仕事に入って大変ですが刺激的な毎日を送っています。とりあえず今のサービスを世界一に…