Mixpanelのevent propertiesで、一つのpropertyが許容できる文字列長は255バイトまでだった

data

キーワード: mixpanel, size, max, len property, event property

 

mixpanelでトラッキングをする際、event propertyを定義出来るのですが、1つのpropertyが許容する文字の長さは255バイトまでだったということが分かりました。

 

実際に確認してみたコード(事前に「pip install mixpanel」が必要です)

gistc2d0f1a570f718a2f4c22ffc4d3edfc7

 

 

f:id:momota10:20170703230515p:plain

実際にログとして計測できたproperty。上のコードと比較するとデータが欠損しているのが分かります。

 

このことを知らずに1つのプロパティーに情報を突っ込みまくってたらデータに欠損が生じて分析が困難な状態になってしまいました。。辛い。

 

 

pythonでmixpanelを扱う概要は下記記載。

mixpanel.com

 

 

【Python】Seleniumを使ってTwitterにログインするスクリプトを書く

hidden meadow

Webブラウザのレンダリングエンジンを実装する必要があったので、練習がてらにSeleniumを使ったTwitterログインのスクリプトを作ってみました。

環境はMac & Python3です。

 

Selenium - Web Browser Automation

 

gist969d904b4cad239da2a5c00df1ad87e7

 

Seleniumを使うことによってWebサービスのテストやWebページのクローリング及びスクレイピングが可能となります。

 

いくつか覚えないといけないお作法もあったり、レンダリングエンジンの気持ちになる必要があったりと慣れていないと少し大変ではありますが使いこなせると面白いことができるのではないかと思いましたまる

 

 

インストール方法

1. Installation — Selenium Python Bindings 2 documentation

 

役立ったTips

4. Locating Elements — Selenium Python Bindings 2 documentation

5. Wait機能 — Selenium Pythonバインディング 2 ドキュメント

 

 

Redshiftで「Check 'stl_load_errors' system table for details.」と怒られた時

このSQLで原因が分かる

SELECT
  starttime,
  TRIM(colname),
  LENGTH(raw_field_value),
  err_code,
  TRIM(err_reason),
  raw_field_value
FROM stl_load_errors
ORDER BY starttime DESC LIMIT 20;

各エラーコードの詳細(日本語)は以下に記載されている。

docs.aws.amazon.com

mailgunのopenのイベントトラッキング(open, click)をユニークにする方法

Mailgun at Partner Palooza

 

mailgunのopenのイベントトラッキングをユニークにする方法を紹介します。

 

mailgunは、デフォルトではメールの開封(open)やメール内でのアクション(click)といったログは取得できませんが、コンソール画面で設定をする事によって取得することが出来るようになります。

 

が、以下の様なパターンがあったとします。

  1. Aさんへのメール送信をリクエストする
  2. メールが無事送信(Delivered)される
  3. Aさんはメールを開いた
  4. 後日、改めてAさんはメールを開いた

このとき、送信数1に対して開封数が2となってしまい、計測としては使えない状態となってしまいます。

 

これを防ぐためにはメールの開封トラッキングをユニークにする(=一意性を持たせる)必要があるのでが、これはタグ機能を使う事によって実現できます。

 

 

Railsで実装するには

railsでmailgunを使ってメール送信をする方法はいくつかありますが、今回はAction Mailerの機能をラップしたmailgun_railsというgemを使ってみます。

 

gist7724c4db8f518350e6c932455f174c3e

 

この様に、タグをオプションとしてつけてあげる事でメールが一意になり、求めている計測結果を得ることができます。

 

f:id:momota10:20170624194047p:plain

 

2つのメールアドレスに送り、それぞれ複数回開いたときの結果です。Unique OpenおよびOpenの二つのデータがきちんとトラッキングされています。

 

なお、この機能はmailgunのブログに記載がありましたので引用しておきます。

Simple open and click counters are not enough to determine how many users your messages are reaching since users often click or open messages multiple times. When you are using tags, we provide unique clicks and opens that give you an exact measurement of how many distinct users are engaging with the messages you are sending.

 

 

blog.mailgun.com

 

github.com

 

User Manual — Mailgun API documentation

【Python】pandas DataFrameのixとilocの違いについて

Python books

pythonライブラリ「pandas」の話。

 

DataFrameを操作する予約語「ix」、「iloc」の違いが分かっておらず、痛い目を見たのでどのような違いがあるのかを残しておきます。

 

gist97eb1fc2b3d1c07760ad542cba523b6a

 

結果がどのようになるかというと...

f:id:momota10:20170608090321p:plain

 

ixではindexのintegerで取得していますが、ilocではinteger関係なく「何行目」なのかで取得しています。

 

「onBeforeunloadHandler」を仕込むとChromeではPage Unresponsiveのエラーが発生する

Google

(ちょっと詰まったのでメモ)

 

JavaScriptの関数にはページのリロードやブラウザの戻るをクリックしたときに、その遷移を防止するためにブラウザのモーダルで可否の確認を出現させる

「onBeforeunloadHandler」

というのがあるのですが、どうもChromeではこの関数を利用すると下のような

「The following page has become unresponsive. You can fot it to become responsive or kill it.」

というエラーが突如現れてきます。

 

f:id:momota10:20170604234239p:plain

確認のモーダル

 

f:id:momota10:20170604234243p:plain

Reload後に出現するエラー

 

ちなみにこれはChromeのバージョンによっては出現しないようで、

58.0.3029.110 (64-bit)

だと出現するのですが、

55.0.2883.87 (64-bit)

だと出ないことが確認されました。

 

Chromeが悪意ある人によるモーダルを表示させまくるといった行為を防止する目的でこのようにしているようです。今後「onBeforeunloadHandler」関数はあまり推奨されるものではないのかもしれません。

 

この現象は下記の執筆現在、下のリンク先にて確認することができます。

blog.yuhiisk.com

 

また、JCBのカード申し込みページにおいても同様の事象が確認できました。

オンライン入会申込

 

 

GitLab CI で「ERROR: Build failed: Get http://unix.sock/v1.18/version: dial unix /var/run/docker.sock: socket: too many open files」と出た時の対処

いつもの様にpushしてCIがpassするのを待っていたら下記の様なエラーに遭遇。

gitlab-ci-multi-runner 1.3.2 (*****)
Using Docker executor with image python:3.5.2-alpine ...

ERROR: Build failed: Get http://unix.sock/v1.18/version: dial unix /var/run/docker.sock: socket: too many open files

このエラーにはgitlab本家にもissueとして上がっており、どうやらgitlab-ci-runnerを再起動すると直るみたいです。
EC2の上に立てていたので、コンソール画面からrebootしてjobをretryしたら問題なく動いてpassしました。

gitlab.com