ELB配下のApacheで外部はHTTPSにリダイレクトし、内部のサーバのみHTTPで通信させる

やりたい事 ApacheにELB経由でHTTPでアクセス来たらHTTPSでアクセスするようにクライアントに要求する ApacheにELB経由でHTTPSアクセス来たらELBでHTTPのポートのApacheにアクセスする 他の内部(10.X.X.X)のEC2からHTTPにアクセスが来た場合はそのまま通す …

Redshiftでウィンドウ関数を使ってスコアに応じたカテゴリごとのランキングを出す

概要 Redshiftではウィンドウ関数を使って便利な集計ができます。 (ウィンドウ関数に関してはPostgreSQLウィンドウ関数のTipsを参考にするといいです。) その記事のウィンドウ関数に手を加えてちょっと便利なことをしてみます。 やりたい事 以下のようなデ…

オープンソースのデータ可視化ツールのre:dashでらくらく分析共有

ウェブサービス、ソーシャルゲームなどを運営していると数値データがたまります。 その数値データを分析して、次の施策に活かすのが非常に大事です。 生のデータをMySQLなどを叩いて、数値に出して、Excelにグラフを貼り付けるのもいいですが、毎回やってい…

Redshiftのディスクがスペースが予想外に増えたのでVacuumした話

背景 最近分析で使えそうだと思って、個人アカウントでRedshiftを使ってみていろいろ検証してます。 そうすると、運営上、Diskのスペースがどのくらいなのか気になります。 これはWebコンソール上で、Clustersからたどっていきパフォーマンスのタブから確認…

自分のミスによりRoute 53のAレコード切り替えでのサーバ移行で失敗した話

はじめてDNSを使って、運営していサーバを別のサーバに移行しようと思ったときに失敗した話です。 そのサービスではドメインとサーバをRoute 53のAレコードにIPアドレスを登録して運営していました。 Route 53でAレコードをIP-AからIP-Bに変えて移行するつも…

AWSをはじめて扱う人へのQ&A

AWSをはじめてさわる人がサービスがありすぎてどこから手をつけたらいいのかわからない問題があるので、情報をQ&A方式でまとめてみました。 サービスがあるすぎるのですがはじめはどれを勉強すればいいですか? Webコンソールにログインすると多くのサービス…

Macで特定のディレクトリ以下で変更されたファイルをリアルタイムで表示する

用途 既存のファイルが多すぎて、バッチなどを走らせたときに、どのファイルが更新されたり作られたかわからないときに使うといい 方法 fswatchを入れて以下をたたくとよろし fswatch -0 . | xargs -0 -n 1 -I {} echo {} 応用 fswatch を使えば、ソースコー…

New Relicを使って手軽にローカル開発環境のrailsアプリのプロファイル

いまのところRailsで動かしたNew Relic Ruby Agentでしか確認していないのですがNew Relicのプロファイラがlocalで利用できます。 まずはスクリーンショットを確認してみます。 初めてみたとき すげー と思いました。 いままでNew RelicのWeb上でしか確認で…

長い時間かかるバッチを並行実行し何倍も早くする

何倍も早くなるかどうかは処理している内容によりますが、並行に実行することにより長い時間かかっていたバッチがはやくなることがあります。 並行に実行できそうな例 ゲームの設定などが入っているマスターデータを順番にBigQueryにインポートしているが遅…

スマフォゲームアプリの負荷試験いろは

スマフォゲームアプリの負荷試験をしたので、どのように実施したのか共有したいと思います。 今回はDAU10万人を想定して負荷試験を行いました。 使ったツール 負荷試験クライアント locust 性能監視 New Relic (通常の監視に加え、MySQL Pluginを入れるとい…

TableauでRedshiftに実行されたクエリを確認する

TableauでRedshiftにつなぎにいっていろいろ確認しているときに、Tableauが発行しているSQLを確認したいときがあります。例えば以下の場合です。 psqlでRedshiftにつなぎにいくときに、長ったらしい、JOINをかくのが面倒なので、TableauでGUI上で作成しても…

廃止予定の実装であることをスマートにお知らせする - debtcollerctor

廃止予定(deprecated)なクラスやメソッドをモジュールのユーザに通知するために python では warnings があります。 以下をコードを実行すると # -*- coding: utf-8 -*- import warnings def deprecated_method(): warn_msg = "`deprecated_method` is depre…

コードレビューでコーディング規約違反ですと言われないためにgit hookでコミットするときに自動で直す

チームでコードレビューを実施する際に、コーディング規約違反ですというのを何十個もつけた事があって、これを不毛な作業だし、時間がもったいないという事で解決するのに以下の方法を実施しました。 gitのコミットフックを利用して、コミットする際にコー…

スマフォアプリゲーム開発における問題と対策

自分が関わっているスマフォゲーム開発で起こる様々な問題と、それをどのようなツールで解決しているのかを共有したいと思います。 同僚と話していたときに、他のチームがやっていて便利な事が共有されたらいいよねという話があったので、まず自分のチームの…

Redshiftでの接続アカウント管理 (read-onlyユーザとグループの作成)

背景 Redshiftをチームで使うときにはユーザアカウントとパスワードを共通で使うのではなく個々人に別々に付与するのがセキュリティ的にも好ましいです。 ここでは、どのようにユーザをRedshiftで管理するかの一例を紹介します。 はじめに Redshiftは接続で…

BigQueryのWeb UIでテーブル名が長すぎて確認できないときの対処法

BigQueryを使っているとどうしても長いテーブルを作る必要が出てくるかもしれません。 その際にクエリブラウザで見てみると以下のように長いテーブル名は省略されてしまいます。 その際に便利なのが、StylebotというChromeのExtensionです。 これを使ってCSS…

Apacheにかわるwebサーバ: uWSGIパフォーマンスチューニング

背景 PythonとDjangoでソマートフォンゲームのアプリケーションサーバを開発しており、そのwebサーバとしてuWSGIを使っています。 uWSGIには多くのパラメータがありすぎてどれを選んでいいかわかりにくいです。 実際に負荷試験をして、各種パラメータを変え…

踏み台サーバ越しにあるMySQLにSequel Proでつなぎにいく

背景 Sequel ProはMySQLをGUIでいじれるのでいろいろ便利です。 もちろんSQL生で叩いてもいいですが、効率面からもSequel Proのほうが早かったりします。 以下は、Sequel Proの画面です。 ローカルにあるMySQLは簡単につなげるのですが、その時に困るのが、…

詳解 NewRelic で監視&性能改善

概要 1年半ほどNewRelicを本番環境+開発環境で使ってきて知見が溜まってきたので共有したいと思います。 ここで説明している機能は有料版のものも含みます。 NewRelicとは NewRelicとはサーバ、またはアプリケーションの状態をモニターし、その性能を改善す…

hubotをHipChatと連携させる + Backlog, Stashから情報を取得してHipChatになげるcronjobを実行

背景 会社でBacklogを使っているが、HipChatに通知を流したい 会社でStashを使っているが標準のHipChat連携機能ではPull Requestをしても通知が来ないので通知するようにしたい。 楽しいボットを作ってみたい ゴール HubotをHipChatにつなげる HipChatに地獄…

ディレクターがゲームのマスターデータをSourceTreeを使ってgitで管理するときに使えそうな差分確認ツール

背景 自分が関わっているスマフォゲーム開発で使える ゲームのマスターデータをSourceTreeを使ってGUI上で、git管理したい ディレクターの方はWindowsを使っているのでWindowsで使えるツール 日本語のデータも扱える 無料で使える 行単位ではなくワード単位…

Unite 2015にいってきたので、そのメモ

背景 Unite 2015にいってきたので気になったことをメモします 全体の資料 http://japan.unity3d.com/unite/unite2015/schedule 基調講演 http://www.famitsu.com/news/201504/13076554.html こちらは見れませんでしたが資料より掴んだことの箇条書き 『Repub…

JSONを返せるREST ServerモックのEasyMockを試してみる

背景 JMeterの動作を確認するために、モックサーバが必要 ゴール 自分で使用する際の、モックサーバの要件を定義する EasyMockが要件を満たせるか確認する 環境 Type: Mac mini OS: OS X Yosemite (10.10.2) CPU: 2.6 GHz Intel Core i7 Memory: 16 GB 1600 …

MessagePackをPythonで使ってみる

背景 仕事でMessagePackを使う機会があるので理解を深めたい ゴール PythonでMessagePackを試し、プロトコルのフォーマットを確認する JSONとのパフォーマンス比較 (Serialization, Deserialization, サイズ) 環境 Type: Mac mini OS: OS X Yosemite (10.10.…

Git LFS を試してみる

背景 いままでのgitの場合、PSDや画像ファイルなどの巨大なバイナリファイルを扱おうとすると容量を大きくとったり、gitの各種オペレーションが多くの時間とられたりするのを改善するものです。 Git LFS Specificationによると、repositoryにblobsを書くので…

gRPCをMacに導入し、Hello Worldを実行する

ゴール 手元のMacでgRPCを導入し、Hello Worldを実行する Mac環境 System Version: OS X 10.10.2 gRPCインストール goのバージョンを1.4以上にする GOPATHの設定 goのバージョンを1.4以上にする gvmを導入する。ここやここを参考にした。 $ bash < <(curl -s…