FFFT

主にwebプロダクト開発に関連する話をつらつらと

2018-01-01から1年間の記事一覧

MySQL/SQLiteで日別・週別・月別で集計するクエリまとめ

Re:dashでメトリクスを作成する際に日別、週別、月別にデータの推移を見たく、いろいろ触ってみたので残しておく。データ分析対象のアプリケーションのDBはMySQLを使用している。 また、adwordsで使われている集客コストをspread sheetに吐き出して、Re:dash…

Re:dashでmysqlとQueryResultのデータソースからそれぞれ週毎にデータを集計しようとすると週がズレる。。。その対応

結論ですがmysqlとSQLiteの週単位に変換するための関数のズレが原因でした。週毎のCACをRe:dashで見れるようにしようとした際にハマりました。 CACはCost Acquisition Customerの略で「1顧客の獲得にいくらかかったか」を表す数字です。 この数字を週毎にチ…

cloud functions × puppeteer × Google Apps Scriptで超低コスト定期実行クローラを作って金曜ロードショーを毎週slackに通知させる

cloud functions × puppeteer × Google Apps Scriptで定期実行されるクローラを作ってみます。 今回は毎週月曜に今週の金曜ロードショーをslackで通知させるようにしてみます。cloud functionsはGCPで利用できるAWSのlumbdaのようなもので、サーバーやランタ…

adwordsのレポートデータをspread sheetに定期的に吐き出してredashが取り込めるようにする

まずはspread sheetにgoogle adwordsの日毎のコストデータを吐き出させます。spread sheetのGoogle Adsというアドオンを使うのがシンプルで楽そうだなーと思い、試してみました。 実際にシンプルにadwordsのレポートデータを引っ張ってこれるんですが都度手…

redashのQueryResultはSQLiteで実行される

QueryResultを使った週単位のデータ集計をしようとしたときの話。 分析対象のアプリのDBはmysqlを使っているのでその流れでdate_formatを使って書いたらエラーになった。mysqlの関数使えないのかー。どうやるんだー。となって公式から漁る。 が、見つからず…

IE11で画面を行き来するアプリケーションでAPIが呼ばれず画面の情報が古いまま表示される

タイトルのとおりの事象が発生。IE11でreact, redux-sagaの構成のフロントアプリケーションで外部アプリケーションからのwindow.location.hrefでの遷移時になぜか最新の情報が画面にレンダリングされない、、、というところから調査スタート。 safari, chrom…

GCPのCloud SQLにlocalのSQLクライアントから接続

GCPのアカウントで認証してproxy経由で接続させます。gcloudコマンドを使うのでインストールしてない方はこちらを参考に。 GCPのgcloudコマンドを公式に沿ってインストール - FFFT Cloud SQL Admin APIを利用するプロジェクトで有効にします。 Google Cloud …

Cloud Functionsでhttpメソッドのチェックとheaderのチェック

Cloud Functionsで関数を作成するとデフォルトで下記の関数コードが生成されます。 exports.helloWorld = (req, res) => { let message = req.query.message || req.body.message || 'Hello World!'; res.status(200).send(message); };引数で渡されるreqでh…

5分でCloud FunctionsからCloud Storageのファイルを参照して中身を返却するAPIを作る

まずはCloud Storageに適当なバケットを作成します。 作ったバケットに適当なファイルを入れます。自分は「test-20180903」というバケットに中身が「Hello,world」の「sample」というファイルを入れてます。 ※Cloud Storageのバケット名は全世界で未使用でな…

GCPのCloud Functionsで30秒でAPIを公開してみる

直前に下記の記事を書いたんですがCloud Functions触ったら30秒でできました。 便利ー。1分でlambdaとapi gatewayでAPIを作ってみる - FFFTGCPコンソールからCloud Functionsを選択して「関数を作成」から新しく関数を作ります。実はそのままページ下部の「…

1分でlambdaとapi gatewayでAPIを作ってみる

1分でできちゃいます。やってみます。AWSコンソールからlambdaを選択して「関数を作成」を押します。デフォルトで「一から作成」が選択されたままになっているかと思います。 そのままさっと入力項目を埋めていきます。 3項目です。名前。なんでもいいです。…

goのTime型でjsonパース時のフォーマットチェックが厳格でハマる

ハマった。time - The Go Programming Language公式にはパース時の説明は特に載ってない。リクエストをstructにbindする処理のエラー内容を見るとRFC3339に準拠したフォーマットで送らないとパースできないとのこと。 厳格だー。下記のフォーマットでいけま…

GCPのgcloudコマンドを公式に沿ってインストール

Macでの手順を公式に沿ってまとめてみます。Windowsはこちら。 Google Cloud SDK ドキュメント | Cloud SDK | Google Cloud GCPのgcloudコマンドとは gcloud の概要 | Cloud SDK のドキュメント | Google Cloud 公式より引用。 gcloud は Google Cloud Platf…

GKEでingressをcreateした際にquota exceededと怒られたときの対応

GKEで新しくワークロードを追加しようとしてingressをcreateした際に下記のエラーが発生。 googleapi: Error 403: Quota 'BACKEND_SERVICES' exceeded. Limit: 9.0, quotaExceeded Compute Engine APIのBackend Servicesのリソースが足りねぇぞ、とのこと。…

JWT(Json Web Token)とは。何に使えるか。

JWTとは JSON Web Tokenを使っていて非常に便利なのでまとめてみます。 JSON Web TokenはJWTと略され、ジョットと読みます。jwt.ioこんな感じのトークンです。 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwia…

型って大事(強い型づけ、弱い型づけ)

強い型づけと弱い型づけの話。 強い型づけはプログラムのコンパイル時にエラーを検知してくれる。 Javaやaltjava(scala, kotlinとか)、後はgolangなどの言語ですね。 対して弱い型づけはプログラムの実行時にエラーがはじめて検知される。 Rubyが代表的な言…

sentryで表示されるデータの中で秘匿性の高いものにマスクをかける

デフォルトでsentryが秘匿性の高さそうなものをマスクしてくれています。 下記を参照。Sensitive Data – Sentry Documentation追加でfilteredで表示されるようにしたい場合は対象プロジェクトのsettingからDATA PRIVACYのAdditional Sensitive Fieldsに追加…

IE11でURLSearchParamsを使った処理でエラーが発生する

developer.mozilla.orgURLSearchParams APIは、URLの細々した操作を簡略化してくれるもので自分がIEでぶちあたったのはx-www-form-urlencoded形式でAPIをコールする箇所でした。 こんな感じで使ってた。 const params = new URLSearchParams(); params.appen…

SPAの状態管理のパターンとパターン分けの考え方

SPAの状態管理のパターンとパターン分けの考え方についてまとめたいと思います。 SPAの状態管理のパターンとパターン分けの課題 フロントエンドで持つ「状態」には様々なものがあります。 認証情報 検索クエリ APIをコールして取得するサーバサイドで管理さ…

Sentryのエラー検知をslackに通知

Sentryの設定が完了したら、エラーの発生を開発者がすぐに知れるようにSlack連携をオススメします。 設定はとてもカンタン。 数分でできます。 まずはSlackのどこのチャネルで通知を受けるかを決めます。 チャネルを決めたらSlack Incoming Webhooksを使って…

フロントエンドアプリケーションへのSentry導入のススメ

Sentryはさまざまな言語に対応しているイベントログ収集ツールです。 サーバサイドのエラー検知にも大変便利に働くのですがやはりなかなか検知と詳細の把握が難しかったフロントエンドで最大の価値を発揮します。 エラーの発生デバイスやブラウザ、ユーザー…

react-reduxアプリケーションにSentryを導入する

react-reduxのアプリケーションにSentryを導入していきましょう。サンプルのプロジェクトはcreate-react-appを使用して下記の条件で作っています。 "react": "^16.4.1", "react-dom": "^16.4.1", "react-redux": "^5.0.7", "react-scripts": "1.1.4", "redux…

IE11でreact-scripts-tsを使ったreactアプリケーションで画面が真っ白になる

こちらの記事で諸々まとめてくれている。 medium.com最終的に記事を書いた人がreact-scripts-tsに向けて修正プルリク投げてそれがマージされているのでバージョンアップすれば解決します。 github.com 対応はシンプルでreact-scripts-tsのバージョンを2.16.0…

ReactによるSPA開発時にぶちあたったIE問題の一覧と対応まとめ

時の経過とともにシェアが緩やかに下がっているIEですがまだまだ全体の20%を占めているのが現状。みんなchrome使えばいいなーという想いはありますが現実的にIE対応しないと20%の人がサービス使えなくなっちゃいます。 IE対応を頑張るReactエンジニアのため…