bauer's diary

凡人の凡人による凡人のための備忘録

Redisでttlを指定していないキーを探し、削除する

1. はじめに Redisを長く運用していると、いつの間にかSwap Usageが高騰したり、Freeable Memoryが枯渇してきて問題になることがあります。 そんなとき様々な原因が考えられますが、その一つにTTLを指定していないキーが容量を逼迫していたときの対処につい…

certコマンドはSSL証明書の更新作業に便利だった

サーバー・インフラエンジニアをしていると定期的に必要な作業があります。 その一つがサーバー証明書の更新作業です。 これまでの更新確認作業 証明書の更新作業自体は、各プロジェクトで利用されているサーバ証明書の発行会社の手順に従って適用するかと思…

サクッと立てたAWS EC2でサクッとgoを実行したい

さくっと一時的にバッチ実行するインスタンスを立てたい。 そんなときのために構築手順をまとめておきます。 インスタンス起動 AWSコンソールから起動 必要に応じてEBSのボリューム増やしたり、カスタマイズします。 基本設定 インスタンスが起動したらsshし…

Jenkinsで重いジョブと一緒に動かしたくない&特定の日時でしか実行したくないとき

小ネタですが、どなたかのかゆいところに手が届けばと思い、投稿します。 前提 Jenkinsでサービスのジョブ実行を制御している バッチサーバーのリソースは諸事情により簡単に増やせない といった方々にご一読頂けたら嬉しい内容です。 要件 特定の重いジョブ…

AWS EC2インスタンスのIPアドレスを即座に確認する

AWS

はじめに サービスを運用しているエンジニアなら障害検知システムを導入して、日々の障害に備えているかと思います。自身が所属するプロジェクトではAWSをメインに使っていて、監視サービスが異常を検知した場合、slackにインスタンスのホスト名を表示してい…

Stripeをシステム導入する際に知っておいたほうがよいこと 〜その2〜

前回の記事 kitakitabauer.hatenablog.com今回はStripeを使った開発上で困ったことを紹介します。 ただし、こちらは2017年08月時点の情報なので、中には改善されていることがあるかもしれないのでご了承ください。 テストカードの発行元設定が全て日本以外 h…

Stripeをシステム導入する際に知っておいたほうがよいこと 〜その1〜

はじめに Webサービス運営するにあたり、特にECサイト構築の中でも決済部分は重要かと思います。 自社システムでもそういったニーズがあり、どのオンライン決済サービスを選定すべきか慎重に判断しなければなりません。まずはじめに、他のオンライン決済サー…

npmパッケージ公開手順の備忘録

npm

はじめに 最近下記のnpmパッケージを公開したのですが、 手順をすっかり忘れていたので、備忘録としてここにまとめておきます。www.npmjs.com npmデベロッパー登録 まずはこちらのサイトでnpmデベロッパーの登録を行います。 https://www.npmjs.com/signup必…

"狭小住宅" は他人事とは思えない等身大の小説だった

著者:新庄 耕 第36回すばる文学賞受賞作 以下、内容紹介より引用 学歴も経験も関係ない。 すべての評価はどれだけ家を売ったかだけ。 大学を卒業して松尾が入社したのは不動産会社。 そこは、きついノルマとプレッシャー、過酷な歩合給、挨拶がわりの暴力が…

AWS LambdaでサーバーレスにEC2メンテナンスをslackに通知する 〜その4〜

4回に分けて連載しましたが、本記事で最後となります。 ここでは、Lambda関数の実装解説と、実践で困ったことを紹介します。 前回の記事 kitakitabauer.hatenablog.com インストール ご紹介するコードを含めたツールは、実行が可能な状態でnpmかGitHubからイ…

AWS LambdaでサーバーレスにEC2メンテナンスをslackに通知する 〜その3〜

前回の記事 kitakitabauer.hatenablog.com 登場人物おさらい この記事では4を行っていきます。 Lambdaを実行するIAMにアタッチするポリシー スケジュール実行に必要なCloudWatch Events設定 SlackのIncoming Webhooks設定/Webhook URL取得 Lambda Functionの…

AWS LambdaでサーバーレスにEC2メンテナンスをslackに通知する 〜その2〜

前回の記事 kitakitabauer.hatenablog.com 登場人物おさらい 4は少し長くなりそうなので、この記事では1, 2, 3を行います。 Lambdaを実行するIAMにアタッチするポリシー スケジュール実行に必要なCloudWatch Events設定 SlackのIncoming Webhooks設定/Webhoo…

AWS LambdaでサーバーレスにEC2メンテナンスをslackに通知する 〜その1〜

はじめに 直近の業務で下記案件に対応する機会がありました。 EC2メンテナンスイベントが、英語のメールで通知されるだけじゃ見落としがちなのでslackに通知したい 色々な方法が考えられますが、せっかくなので興味があったAWS Lambdaを使ってみました。手順…

GoでSet型を実現する場合の選択肢

Go

はじめに Go言語には標準で Set 型がありません。 ここでは2通りの実現方法を検討してみます。 1. map ✕ structで実現する mapのフィールドに空のstructを使ってsetを定義します。 structは何もフィールドを持たない場合、サイズは0になるのでコストがかかり…

GitHubの2段階認証におけるプロトコル最適解を考える

なに? cloneしたときに選択したプロトコルが、ローカルGit設定の remote url にそのまま設定されるのですが、 そもそもプロトコルは何を選べばいいのか、ベストプラクティスは何かを検討します。 前提 現場では2段階認証が必須となっているので、前提項目と…

golang製のREPL内でUnixタイムスタンプから日付フォーマットを取得する

Go

忘れがちだけど、よくある動作なので書き留めておきます。 準備 goreをインストールしておきます。 github.com $ go get -u github.com/motemen/gore "gore" とは、コード補完もしてくれるREPL(Read-eval-print loop)で、文字通り読んで評価して表示して繰り…

「学力の経済学」は、今の日本の教育を考えさせられる良書だった

この本に出会った経緯 最近、テレビでも話題になっている慶應義塾大学の教育経済学者である、中室牧子さん著書の本を読みました。 投稿時点のAmazonの"経済学・経済事情"カテゴリで、ベストセラー1位になっている人気図書です。「学力」の経済学作者: 中室牧…

Jenkinsの全ジョブに対して条件でフィルタリングするワンライナー

掲題の通りです。 業務で棚卸しするときに必要だったので手順をまとめておきます。コマンド中の "/var/lib/jenkins/jobs" は、 それぞれの環境に合わせてJenkinsのジョブ直下を指定してください。 disabled一覧 不要なジョブを整理するためにdisabledのフラ…

本家の最新を取り込みながら安全に自分のリポジトリで修正したいとき

はじめに 本家リポジトリをforkして、それを上流に設定し、最新を取り込みながらfork先のリポジトリに修正したいときに今回の手順を踏みます。 本家に直接pushができないときに、こういった形を取ることがあります。 この流れを"Fork & Pull モデル"と呼びま…

Goのことはじめ その3:IntelliJ IDEAでGoを書くために

はじめに これまでNode.jsやPythonではVimを使ってきましたが、WebStormなど優秀なIDEが登場してきたこともあり、Goをお仕事で書くタイミングでそろそろIDEにも慣れておきたく、IntelliJ IDEAを使うことにしました。 IntelliJ IDEA(インテリジェイ アイディ…

ISUCON6で屈辱的に負けてきた

はじめに 去る2016年9月18日(日)に、ISUCON6の予選に参加しました。 結果は最高スコア12023で屈辱的に敗退しました・・・ その一部始終をまとめておきたいと思います。 ISUCONとは? お題となるWebサービスを決められたレギュレーションの中で限界まで高速化…

ghq/peco/hubを組み合わせてローカル・リモートリポジトリに即座にたどり着く

はじめに あまりにも有名な下記ツールを組み合わせて、ストレスなく、リポジトリにたどり着くような設定にしたのでまとめておきます。あまりにも有名なので、ツールの説明は割愛します。が、ざっくりいうと、Go製のリポジトリ管理ツール github.com 同じくGo…

Goのことはじめ その1:GOPATHとghqのルート指定

Go

はじめに 業務でGoを触ることになったので、Goに関して気になったことをまとめていこうと思います。 GOPATH GOPATHはGoで使う環境変数なのですが、2つの役割があります。 ビルド時のインポートパスのルート(正確には$GOPATH/src配下) go getコマンドで外部パ…

dotfiles整理 その2:zshrcから分割した設定ファイルが読み込まれない問題への対処

kitakitabauer.hatenablog.com 前回の記事はこちら。 この構成に変えたあと、.zprofileに記述した部分が読み込まれなくなりました。 ターミナルアプリで起動されるのは、ログインシェルではなく、インタラクティブシェル という事実を下記記事にて知りました…

dotfiles整理 その1:zshの構成を見なおそう

はじめに 最近ちょっと時間ができたので、随分放置してきたdotfilesを整理をすることにしました。 まずはzsh。 これまでは.zshrcに全て記述していたので、前々から役割毎に分けたいと思っていました。 大まかな方針は下記の通りです。 ZDOTDIR を指定して、"…

きたるISUCON6向け武者修行その4 -kataribeでHTTPリクエストのパフォーマンスを可視化しよう-

kitakitabauer.hatenablog.com 前回はNginxのチューニングを行いました。 今回はISUCONの過去問でも登場してきたプロファイリング用のツールを予習しておきます。 kataribeとは? "Nginx/Apache/Varnishncsa Log Profiler"と書かれている通り、 アクセスログ…

Node学園 22時限目メモ

eventdots.jp こちら、参加してきたのでメモる。 「Node学園祭 2016の告知」by yosuke furukawa さん 11/12(土) dotsイベント会場で開催する予定。13日とは異なるので注意。 ハンズオンメイン 今年もpaypalがスポンサー 11/13(日) サイバーエージェントオフ…

きたるISUCON6向け武者修行その3 -Nginxのチューニングをしてみよう-

kitakitabauer.hatenablog.com 前回MySQLのチューニングを行いました。 今回はNginxのチューニングを行います。 Nginxのバージョン確認 $ nginx -v nginx version: nginx/1.6.1 古すぎないので問題なさそうです。 デフォルトのnginx.confを確認 /etc/nginx配…

きたるISUCON6向け武者修行その2 -MySQLのチューニングをしてみよう-

kitakitabauer.hatenablog.com 前回プロビジョニングしたリポジトリにインストールされたMySQLの設定を確認していじっていきます。 MySQLのバージョンを確認 $ mysql --version mysql Ver 14.14 Distrib 5.6.31, for Linux (x86_64) using EditLine wrapper …

きたるISUCON6向け武者修行その1 -仮想環境を構築して負荷試験を実行してみよう-

強い意志の元、今年こそISUCONに参加しようと思います。 ISUCONとは? お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル、それがISUCON isucon.netそこで、まずはチームメンバーとISUCON4(2014年開催)の復習…