おれの技術日記

元はJava+SQLがメインのエンジニア、フロントエンドは軽くかじった程度で苦手。最近忘れっぽいので覚えたことをいろいろメモするためにブログ開始。

GCPでオレオレGoogle Analytics(リアルタイム版)を開発する(その3)

前回まででブラウザ→Cloud Functions→Pub/Subとデータを送るところができたので、今回はPub/Sub→Dataflow→BigQueryとデータを格納するところを作る。 1. BigQueryにデータを格納する箱を作る まずは一番後ろのBigQueryにデータセット・テーブルを作成する。…

GCPでオレオレGoogle Analytics(リアルタイム版)を開発する(その2)

前回の続き。次にCloud Functionsでブラウザから飛んできたビーコンを受ける口を作る。 1. Cloud Functionsを設定 とりあえずエンドポイント名とかは何でもいいと思うけど、注意点は未認証の呼び出しを許可する必要があるくらいだろうか。これだけでAPIコー…

GCPでオレオレGoogle Analytics(リアルタイム版)を開発する(その1)

あまりに放置しすぎて存在すら忘れていたこのブログ、久々に手を動かしたので備忘録を残す。今回作るのはこんな感じ。GAみたくwebサイトのページにタグを埋めてビーコンを飛ばし、それをCloud Functionsで受け取ってBigQueryにストリーミングinsertし、リア…

Machene Learning Crash Course 4 - First Steps with TensorFlow #2

さあ、用語も覚えてついにTensorFlow!! と思ったが、どうやらここからさらに先に進むためにはpandasを学ぶことは避けて通れないようである。pandasはSeriesとDataFrameという2つのデータ構造を提供するためのライブラリ、Seriesはちょっと便利な1次元配…

Machene Learning Crash Course 4 - First Steps with TensorFlow #1

ついに来たTensorFlow、名前はよく聞くしML=TensorFlow的なイメージはあるけれど全然中身はわからないという。しかもたぶんガンガン機能追加とかされてるから適当に日本語サイトをググっても常に古めの情報になってしまうんでないかという懸念から更に億劫…

Machene Learning Crash Course 3 - Reducing Loss

機械学習はiterative approachによって損失を減らす。iterative approachというのは若干直訳しにくいところがあるけれども、まあ要はたくさんのsampleを処理することによって徐々に損失の少ないweightとbiasによせていく、ということだろう。で、ずっと計算…

Machene Learning Crash Course 2 - Descending into ML

教師あり学習(Supervised ML)においてモデルを作るというと、そのモデルは という式で表される(nはfeatureの数)ので、 モデルに含めるfeatureを決定する トレーニングデータ(labeled examples)を使ってw(weight)とb(bias)を決定する というステッ…

Machine Learning Crash Course 1 - Framing

一念発起して、Googleが無償公開しているMachine Learning Crash Courseに挑戦しつつその記録をここに残すことにした。 英語で学ぶのは億劫ではあるものの、仕事の半分くらいは結局英語なのでMLに関しても英語で説明・議論できなければ意味がないので、その…

Gmailでメールの振り分けを設定する方法

Outlookに慣れた人がGmailを仕事で使おうとすると戸惑う場合が多いと思う。なんせフォルダという概念がない。代わりにラベルというものがあるようなんだけれど「ラベル?おれはそういうのじゃなくてフォルダ分けしたいだけなんだけど」と思ったりする。ラベ…

バスケット分析(併売分析)のためのSQL

いわゆる売上トランザクションテーブル、こんなデータから OrderID Date ProductID ・・・ 0000001 2017-07-01 A001 ・・・ 0000001 2017-07-01 A002 ・・・ 0000002 2017-07-02 A003 ・・・ 0000003 2017-07-02 A001 ・・・ 0000003 2017-07-02 A002 ・・・…

月次累計を求めるSQL

こんなデータがあるときに Date Sales 2017-07-01 110 2017-07-02 120 2017-07-03 130 ・・・ ・・・ 2017-07-31 410 2017-08-01 100 2017-08-02 110 ひとつカラムを追加して、月次累計(Monthly Running Total)を求めたい場合に Date Sales MRT_Sales 2017…

MySQLでカレンダーテーブルを作る

自分がよく使うSQLをライブラリ的にここに残しておく。こんな感じでSQLを書くと SELECT @date:=date(date_format(CURRENT_DATE(),'%Y-%m-01')) as Date UNION ALL SELECT @date:=DATE_ADD(@date, INTERVAL 1 DAY) FROM `テーブル名` WHERE @date < last_day(…

JavaScript再入門4 - call, apply, bind

JavaScript再入門3 - thisは何を意味するか - おれの技術日記の続き。例によってこちらにお世話になります。 最強オブジェクト指向言語 JavaScript 再入門! 7. call/applyを使ってthisをコントロールしつつ関数をコールする。 前回のブログの中で、thisと…

JavaScript再入門3 - thisは何を意味するか

JavaScript再入門2 - おれの技術日記の続き。例によってこちらにお世話になります。 最強オブジェクト指向言語 JavaScript 再入門! 6. thisの解釈は状況によっていろいろ。 Javaにおいてthisといえば非常に明確で、インスタンス変数を明示的に指定するとか…

JavaScript再入門2 - スコープチェーンとクロージャ

JavaScript再入門1- プロトタイプチェーンとコンストラクタ関数 - おれの技術日記の続き。例によってこちらにお世話になります。 最強オブジェクト指向言語 JavaScript 再入門! 4. 変数のスコープはグローバル/ローカルのみ、スコープチェーンのルールに従…

JavaScript再入門1- プロトタイプチェーンとコンストラクタ関数

JavaScriptは昔から触ってるけれど、いつも何となくググりながら場当たり的なコードを書いてやり過ごしてきてプロトタイプとかきちんと理解してないので、備忘も兼ねて勉強したことを記録してみる。参考:最強オブジェクト指向言語 JavaScript 再入門! 1. …