Ashley Madison の月別売上推移
カードトランザクションデータを月別に集約してグラフを描いてみた。
> # DBで月毎の売上を集計する
> con <- dbConnect(MySQL(), dbname='xxx', user='xxx', password='xxx)
> rs <- dbSendQuery(con, 'select date_format(date, "%Y%m") yyyymm, sum(amount) amount from creditcard_transactions group by date_format(date, "%Y%m")')
> data <- fetch(rs, n=-1)
> # データの概要を確認する
> summary(data)
yyyymm amount
Length:89 Min. : 79
Class :character 1st Qu.: 3585339
Mode :character Median : 4942854
Mean : 7093373
3rd Qu.: 7363206
Max. :23430359
> # データの先頭を確認する
> head(data)
yyyymm amount
1 <NA> 79.00
2 200803 97676.25
3 200804 266162.40
4 200805 1310610.90
5 200806 1610211.16
6 200807 2324480.04
> # データの末尾を確認する
> tail(data)
yyyymm amount
84 201501 21414885
85 201502 19140610
86 201503 21420715
87 201504 21376923
88 201505 23430359
89 201506 10823819
> # NA の入ったデータを取り除く
> data <- subset(data, complete.cases(data))
> # 軸が指数表示にならないようにする
> options(scipen=5)
> # プロットする
> barplot(data$amount, names=data$yyyymm)

直近では月に2,000万ドル超えですか。女性会員がほとんどいなくても、2,000万ドルですか。2013年夏ころから急激に売上を増やしてますね。
Gitlab を Apache と共存させてサブディレクトリで動かす
だいたいはこの記事の通りで大丈夫だった。
GitLabをサブディレクトリ(Subdirectory)でインストールしてWordPressと共存させる
この記事は、こちらの記事を参考に書かれている。
で、このままだと Font Awesome のアイコンが表示されていなかったので、Apache の設定を以下のようにした。
<IfModule mod_proxy.c>
ProxyRequests off
ProxyPass /gitlab http://127.0.0.1:8000/gitlab
ProxyPassReverse /gitlab http://127.0.0.1:8000/gitlab
ProxyPass /assets http://127.0.0.1:8000/gitlab/assets
ProxyPassReverse /assets http://127.0.0.1:8000/gitlab
</IfModule>
たぶん、どこか一カ所変えれば、URL の名前空間 /assets を汚さなくてもいいのだと思うけど。
Ashley Madison のダンプデータを MySQL にインポートする
AWS の m4.10xlarge に MySQL をインストールし、デフォルト設定のままでインポートを実施した。
$ time mysql -uroot am < am_am.dump
real 22m23.287s
user 1m59.696s
sys 0m1.292s
$ time mysql -uroot aminno < aminno_member.dump
real 207m36.535s
user 2m45.308s
sys 0m1.900s
$ time mysql -uroot aminno < aminno_member_email.dump
real 65m30.872s
user 0m20.640s
sys 0m0.540s
$ time mysql -uroot aminno < member_details.dump
real 52m8.523s
user 0m26.888s
sys 0m0.932s
$ time mysql -uroot aminno < member_login.dump
real 125m25.691s
user 0m40.116s
sys 0m1.456s
m4.large で aminno_member が数時間(6-8時間くらい?)だったように思うので、m4.10xlarge にしたのはムダだった。
たぶんこういうことをすると速くなる。
たった3秒でInnoDBのデータローディングが快適になるライフハック http://nippondanji.blogspot.jp/2010/03/innodb.html
アシュレイ・マディソンのメールテンプレートが参考になる
ウェブサービスを作る上で欠かせないのが、メールによるユーザーへの各種通知や働きかけ。ユーザー登録時や商品購入時に送るトランザクションメールだけではなく、サイトへの足が遠のいたユーザを再度アクティブにするために、ユーザーが関心を持ちそうな情報を随時提供したり、クリスマスなどのイベント時に特別オファーを提供したりする。
achcancel-ja_JP.xml
「申し訳ありませんが、お客様のこの度の取引はキャンセルされ、お引き落としはされておりません」
achfail-ja_JP.xml
「申し訳ございませんが、お取引は承認されませんでした」
coupon-ja_JP.xml
「{:brand_link:}のキャッバックのお知らせです」
directpaymentreceived-ja_JP.xml
「お支払が完了しました」
engagercost_conversion-ja_JP.xml
「エリート会員登録への感謝の気持ちとして、{:bonus:}ポイントのボーナス・クレジットをお受取りください」
Importing Ashley Madison CreditCardTransactions CSVs to MySQL
アシュレイ・マディソンのクレジットカード取引CSV を MySQL にインポートする
各CSVの頭にあるヘッダはこうなっている。カード番号は、下4桁のみ。
Each CSV files have the following header. It contains last 4-digits of credit card number.
ACCOUNT,ACCOUNT NAME,AMOUNT,AUTH CODE,AVS,BRAND,CARD ENDING,CVD,FIRST NAME,LAST NAME,MERCHANT TRANS. ID,OPTION CODE,DATE,TXN ID,CONF. NO.,ERROR CODE,AUTH TYPE,TYPE,TXT_CITY%2CTXT_COUNTRY%2CTXT_EMAIL%2CTXT_PHONE%2CTXT_STATE%2CTXT_ADDR1%2CTXT_ADDR2%2CZIP%2CCONSUMER_IP,
これに対応したテーブルを作る。フィールド長がわからないので、適当に varchar(255) にしておく。インデックスも、使いそうなフィールドに適当に付けておく。
I created the corresponding table below. Each field length is unknown, so use varchar(255). Additionally, I added some indexes to maybe useful fields.