眠すぎて明日が見えない

我が人生、眠さに勝るもの無し

nginxでメンテナンスモード時の503と通常時の503でhtmlを分ける方法

nginxでメンテナンスモード時の503と通常時の503でhtmlを分ける方法について書きました。

Nginxのngx_http_sub_module#sub_filterの挙動

nginxには定義した特定のcontent-typeの時にレスポンスの中の文字列を書き換えるsub_filterという機能があります。 こちらですね。Module ngx_http_sub_module できることは文字列の書き換えで、 sub_filter 'example.com' 'www.example.com'; と定義すると…

「データベース技術 実践入門」読了

GW中どうせなら積んでいた本を読もうと思い、2012年ごろに出版された「データベース技術 実践入門」を読んだ。書いてあった内容は、実践入門というより広く薄い内容ではあったけど、自分が気にしていなかったことや知らなかったことなどもあったし、技術の振…

フロントエンドについて全く詳しくない自分がReactを使ってみた感想

ここ2ヶ月色々あって毎日終電まで作業していたせいもあってブログの更新がなかなかできてなかった。まだ山を超えてないのだけれど息抜きとちょっと気になることがあったのでブログ書こうかなとなった次第です。 先日とある時に、「Reactちょっと触ってみまし…

伝え方が9割!?

伝え方が9割という本を読んだ。 確かに伝え方を学ぶことで、選択が変わるということがよく理解できる本だった。 さっそく会社で実践してみたら、「めっちゃいいと思う。けどなんか見ているものが大きすぎる」みたいな捉えられ方をしてしまったので、使う場面…

MyISAMの暖気してくれる君をgoで書いた

github.com 雑ですが、必要に迫られて作ってみました。 作成の経緯 RDS上でMyISAMの暖気がしたかったのです。RDSだとデータディレクトリcatでOSのキャッシュに載せるとかできないからクエリなどでできないか調べつつ作りました。先人の方々で作っていらっし…

mackerel-agentをECSで使う

mackerel-agentをecsで使う

fizzbuzz

書いた gist.github.com

ECSでSpotFleetを使う

ECSでSpotFleetを使うための設定です。

ECSへCircleCI + ecs-deployを使ってデプロイする

ESCへの自動デプロイの設定をやったのでその備忘録です。ecrにリポジトリを作って、コンソール上から手動プロイできる状態まではできている前提で話します。 circleciへ環境変数を設定する ますcircleciのwebコンソールのtarget-project -> settings -> Envi…

勉強会で登壇してきた話

先日、DevLOVEというエンジニアの外部の勉強会で「越境」をテーマに初めて30min セッションでトークをしてきた。 詳しい内容は会社のブログで書くのでここは書かないが、勉強会に登壇した思いだけ残したい。 この半年の自分の目標として、「アウトプットして…

バックエンドエンジニアとしての行いと評価

ちょっと前だけど自分が主担当ではないサービスのログ監視を強化したことがあった。強化しようとおもったきっかけは垂れ流しになっている5xxエラーを見て、これらのエラーはユーザに取って良くないという意識というか空気づくりとサービス品質の向上のためだ…

目標調整

年明けに出勤日は毎日ブログを書いていくぞ宣言をしましたが、体調不良でまともに記事がかけませんでした。 何らかの影響で記事書けない日がでてしまうことは今後もありうるので、これからは週1-2ぐらいを目処に更新していくのをマストにブログを書いていき…

kramdownというgemについて調べる

最近kramdownというgemを触る機会が増えてきたのですが、使い方など参考にしようとググっても実際に使ってみた例などあまり多くはないようなので公式のドキュメントを参考にしつつ、実際に使ってみようと思う。長くなりそうなので今回は簡単な紹介だけします…

【MySQL】idカラムをとりあえずつくる

私は新規で作成するテーブルにはほぼ必ずidカラムを作成しています。定義は以下のような感じです。 `id` int(11) NOT NULL AUTO_INCREMENT, ... PRIMARY KEY (`id`) 自分がidカラムつけるのは主に、データ量が膨大なテーブルを扱う時にシーケンシャルな処理…

勤怠のChrome拡張を社内向けに公開する

先日勤怠のChrome拡張を作ったというブログを書きましたが、一人でしばらく使ってみて便利だったので今回社内向けに公開しようとおもって調べました。 macotasu.hatenablog.jp 社内向けに公開する方法 社内向け = 一部のユーザに限定して公開とした時に現状…

2017年の目標

2017年になりました。年始めということで「今年の目標」と「エンジニアをすることについて」を書こうと思い筆を取った次第です。 今年の目標 出勤日は毎日ブログを書く 個人でwebサービス一個作る 基本情報技術者試験受けてみる の3つになります。 出勤日は…

勤怠のChrome拡張を作った

会社の出勤時にいつも Chrome起動 -> ブックマーク開く -> 勤怠のページ開く -> 出勤ボタンを押す としていてこの操作に20秒 ~ 30秒ぐらいかかっていた。会社の出勤時間ギリギリでついた時とかこの時間がちょっと煩わしくてChrome拡張を作った。Chrome拡張に…

小さなチーム、大きな仕事【完全版】

誕生日のお祝いでカロリさんから頂いた「小さなチーム、大きな仕事【完全版】」を読んだ。 小さいほうが総じて動きやすい 素直に接しよう 進んでやることみつけて手を動かす人が大事 人をむやみに採用してもコストになるだけ。必要な人を考える 以上の点が印…

Railsでサーバー時刻を任意の時間にする

Railsとかに限った話じゃなくて、開発中のサーバー時刻を任意の時間に変更したいといったことはよくあると思う。 そうかの有名なアニメ、「時をかける少女」でいうタイムリープをしたいということである。 タイムリープする方法は アプリケーションの内部時…

Railsで複合PKを使う際に`Undefined method 'to_sym'`がでて辛かったメモ 

Railsでidとcreated_atを複合PKにしたくてschema.rbに直接下記のような定義を書いていた。 # 例 create_table "tests", id: false, force: :cascade do |t| t.integer "id", limit: 8 t.datetime "created_at", null: false t.datetime "updated_at", null: …

ActiveRecordのfind_or_create_byが投げるクエリを検証した

RubyのORMのActiveRecordにfind_or_create_byというメソッドがある。このメソッドはデータがあったらselectした結果が返ってきて、ない場合はinsertをしてその結果を返してくれるという夢のような機能を実現してくれているらしい。 このデータがあったらsele…

何でエンジニアをするのか

今年が終わりそうなので、自分がエンジニアをやる理由を振り返ってみる 新しい技術に触れる瞬間が楽しい コード書いている時間が楽しい 一つのアーキテクトを作り上げるのが楽しい 作り上げたものがユーザに届くのが嬉しい 生じる問題をエンジニアリングで解…

多段SSHする際の.ssh/configの設定

多段SSHの設定いつも忘れるのでブログる。 まず設定の例から書くと Host fumidai HostName hoge User macotasu Port 10022 Host target-server HostName fuga User macotasu Proxycommand ssh -CW %h:%p fumidai こんな感じでsshの設定をかいて多段sshにする…

アニメイトラボに入社しました

2年8ヶ月勤めていた面白法人カヤックを退職して、アニメイトラボで働き始めました。 10月~11月に転職活動をしていて、いくつかの魅力的な企業からオファーを頂いていたのですが、アニメイトラボは設立間もない会社で地盤整えていくフェーズだったのが楽しそ…

DDLとかの検証にDummyデータをさくっと用意するSQL

前にダミーデータサクッとつくりたいわっておもって、便利ストアドプロシージャつくったのでブログにも書いておく。 gist.github.com SELECTして結果をINSERTするところをコピペしていけば、ストアドプロシージャなんかつかわないでもいいんだろうけど、DRY…

NoPaste作った

丸一日かかってしまったけど、ちゃんと作ってみた github.com 構成 Kossy DBIx::Sunny etc... DBIx::Sunny初めて使ったけど、シュッと使えて便利だった 感想 今まで一人で一からアプリケーションを書くことは、あまりなかったから良い経験になった それと共…

ISUCON5 本戦での学び

ISUCON5の本戦をchatzmersとして参戦してきました。 結果からいうと惨敗でした。 敗因としてRobert C. Pike氏の下記の言葉に全て詰まっていると思います。 推測するな、計測せよ どういうこと? 今回使用されていたデータベースがpostgresでした。 僕たちは …

ISUCON5 予選4位通過でした

社内ISUCONには何度か参加したことあるものの、社外の人も参加するISUCONには初めての参加でした。 チーム名は「chatzmers」で、弊社の2013年新卒同期の @m0t0k1ch1 と @rg_gs と 僕 で出場し、最終スコア 21242 で予選総合4位で通過しました。 isucon.net …

DateTimeオブジェクトそのまま比較するのと、DateTime->epochで比較するのどっちが速いか

ふと気になったのでベンチマーク取ってみた。 ベンチマーク #!/usr/bin/perl use strict; use utf8; use warnings; use DateTime; use Benchmark qw(:all) ; my $now_1 = DateTime->now; my $now_2 = $now_1->clone; my @times = ($now_1, $now_2); my $toda…

commitにhookして、gofmtを実行する

golangっぽいコードに整形してくれるgofmtをcommit直前に実行し、 gofmtの結果追加の差分がでたら、1度commitを取りやめるようなcommit hookを書きました。 gofmtは差分があってかつ、拡張子が.goのファイルにのみ実行されます。 デモ コード gist.github.co…

変更のあったテストファイルだけ実行したい

ローカルPCで新しく追加したり、修正加えたテストを実行する時 prove -v t/hoge.t t/fuga.t ... みたいに普通にやっていたんだけど、 git使ってるし、変更あったファイルをテストするのもっと楽にできるやんって思って #!/bin/sh git diff --name-only HEAD …

go-irceventでbotを作った

go-irceventでbotを作成しました。 本当は既にあるperlで書かれたbot使えば良かったのだけれども、 どうぜやるならgolangでbot書きたいなって思って勢いで作りました。 気にした点とか 何も考えずにgo-ircevent使うとif Aというコマンドの時はみたいな条件分…

Multi-AZの役割

前回の記事でMulti-AZについてふれましたが、その続きです。 今回は自分の整理のために、Multi-AZが設定されている場合と無い場合で 障害が起こった際にどういった復旧手順の違いがでてくるか考察します。 Multi-AZを設定していない場合 Multi-AZが設定され…

Multi-AZ

今日 Multi-AZになってるの? みたいな話になって、そういばよく耳にする言葉だけど、 これ有効にすると何がおこるのか知らなかったから調べた。 というかドキュメント読んだ。 Multi-AZ 配置 - Amazon RDS | AWS まとめると AZはアベイラビリティーゾーンの…

容量がいっぱいになってmysqlが落ちた

容量がいっぱいになってmysqlが落ちたました。 もちろんテスト環境です。 落ちた時の状況としては テストデータ作成スクリプト流している 突然のRollback、mysqlに繋がらなくなる エラーログに'full~'みたいなエラーででてる っていった感じです。 サーバー…

S3から複数のファイルを落としてくるコマンドをGoで作ってみた

AwsConsoleでS3からファイル落とそうとすると,一個ずつポチポチしなきゃいけなくて辛いなーって思ったのでGoで書いてみました。※1 github.com 導入 1.aws configureでaccess_key_idとsercret_keyを設定 $ aws configure AWS Access Key ID [NONE]: *** AWS S…

mysqlでユーザ定義変数をつかう

SELECTで取ってきたレコードをソートして、ソートした結果に連番でidふるみたいなことできないかなーとおもってmysqlのドキュメント読んでたら変数を使えることを知りました。 MySQL :: MySQL 5.7 Reference Manual :: 9.4 User-Defined Variables 変数使え…

TeamGeek 第1章 天才プログラマの神話

TeamGeek読んだので第1章「天才プログラマの神話」を読んだメモ どんな本か プログラマがソフトウェア開発を効果的かつ効率的にために、他人の理解・コミュニケーション・コラボレーションの能力を向上させる 以上を目的とした本でgoogleの中の人が書いてい…

無刻印のHHKB

できるエンジニアの人が無刻印のHHKB使ってて、かっこいいなーと思って自分も買ってしばらく使ってた。 コードをガッて書く期間とかはタイピングきもちー!ってなってテンションあがってよかった。 けど運用とかで本番サーバーで何か実行するときに、いかん…

孫氏の兵法

孫氏の兵法を漫画で学ぶ本読んでみた。生き方が上手な人はどれも孫氏の兵法にのっとった行動をしているなと読んでて思った。きっと漫画だから深い話までは書いてないだろうけど、浅く孫氏の兵法について知れた気がする。

IRCクライント Txtual5

yosemiteのソフトウェアアップデートしてからLimeChatの画面が総崩れするぐらいひどくなって、他にいいクライアントないか探してみたところあった。 Textual 5Codeux Software, LLCソーシャルネットワーキング¥600 使ってみたけど、だいぶモダンなかんじで代…

リーダブルコード

去年買った本だけれどやっと手をつけて、読み終えた。 書いてある内容は、処理は細かくしようなど、基本的な事が多かったけど色々学びがあった。 特に印象が残ったこととして、 コードを書き始める前に、「簡単な言葉で説明できるか」 未使用のコードは削除…

くまみこ

くまみこの1 ~ 3巻読んだ。 田舎生活いいなっておもった。

バグのあるコードを見つけたい

この間他の人が作ったコードを実行したのけれど、そこにバグがあってつらーってなりました。 でもそのコード自分もレビューしてたし、なんで見つけられなかったのかなーって考えたことをまとめます。 作成した実装が本番で動くまで まず、実装したものが本番…

RowをInsertしようとしてすでにRowがあったら取ってくるメソッドの扱い

最近single_or_createというメソッドをつかっていて、つらくなったのでメモ。 まずsingle_or_createとがどういうコードかというと、 sub single_or_create { my $self = shift; my $row = eval { #…insertの処理を走らせる }; if (my $e = $@) { # ..depulic…

Wookmarkを使おうとしてハマった

wookmarkというpintarest風なタイル上のUIを実現するplugin使おうとしたけど、使い方がいけなかったらしくハマった。 やっていたことはhead内でjsの定義とjqueryの定義かいてたんだけど、実際はbodyに定義されている要素に対して動くものだから、bodyの閉じ…

ActiveRecordでRowが見つからなかったらnilを返したい

ActiveRecordでfindで検索してRowが見つかった時にActiveRecord::ResultNotFoundがでて自分はnilを期待していたのに(`ェ´)ピャーってなってドキュメントよんだのでメモ。 find findを使った時は、idを検索条件に入れて使う。またはprimary_keyでも大丈夫そ…

データを取ってくるときのrow reads減らしたい

以前書いた記事で limit,offsetを安易にrow readsが増えて大変 - 眠すぎて明日が見えない ^のようにlimit offsetを安易にやると辛いみたいな話を書いたけど、じゃあどうすればいいの?っていう部分まで書いてなかったので書きます。(ほとんど教えてもらった…

2014年の振り返りと2015年の抱負

新年を迎えたので、2014年の振り返りと2015年の抱負を書きます。 2014年の振り返り 箇条書きでまとめちゃうと 合宿で合計1ヶ月半ぐらい家を空けていた hisaichi5518さんと一緒に仕事してPerl力が上がった あまり外に出なかった 仕事を一緒にする人が増えてい…