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)

Monthly Sales of Ashley Madison

直近では月に2,000万ドル超えですか。女性会員がほとんどいなくても、2,000万ドルですか。2013年夏ころから急激に売上を増やしてますね。

Gitlab を Apache と共存させてサブディレクトリで動かす

だいたいはこの記事の通りで大丈夫だった。

GitLabをサブディレクトリ(Subdirectory)でインストールしてWordPressと共存させる

この記事は、こちらの記事を参考に書かれている。

GitLab omnibus をサブディレクトリで運用する

で、このままだと 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.