notebook

都内でWEB系エンジニアやってます。

BigQuery+Dataportalでインタラクティブフィルタを活用する

プライベートでブログのPVなどを集計していて BigQueryにTwitterのエゴサやGoogleAnalyticsのPVなどを取り込んで、Dataportalから参照してグラフにして定期的に見るようにしている 記事についてのデータ(urlやタグ)はjsonで持っていてこちらもBigQueryに定期…

Node REPL+Puppeteerでの開発Tips

Puppeteerでスクレイピングしていてやっと「これ楽だわ」みたいな感じのやり方が定着してきた気がするのでアウトプットしておく ちなみにどこまでいってもなるべくClickなどの操作をせずにページ内容を読み取れるのがベターだと思っている あと、REPLにかん…

じぶん Release Notes (ver 0.33.8)

swfz (ver 0.33.8) がリリースされました、更新内容は次のとおりです 技術 やったこと BigQuery(Dataform) pocketのAPI+BigQuery+Dataportalで可視化 SearchConsoleの被リンク項目を一括で取得できるようなスクリプトを書いて収集→Dataformで整形 Twitterの…

jqで曜日判定をする

jqで土日を判定するみたいなことができる isoの日付からfromdateでunixタイムスタンプへ変換しそれをgmtimeへ渡すと日時に関する配列が返ってくる その中に曜日の情報も含まれている よくある2020-08-01のような形式のテキストを判定してみる $ echo '{"star…

jqで複数ハッシュのmergeをする

RubyでいうHash.merge的な処理をjqでもやりたいとき 集計結果をいくつかのファイルに出力しておき最後にサマリーとしてJSONにまとめたいときなどに使う 書いていて感じたけどあまりこういう機会はないかもしれない… 01.json { "hoge": 1, "fuga": 2 } 02.jso…

WSLからWindowsへ通知を送る

GitHub CLIを使ってターミナルでGitHub Actionsを操作する - GitHubブログ github.blog GitHubのCLIにworkflow,runが増えた記事を見て 記事の中でnotify-sendを用いてworkflowが終わったらデスクトップ通知するみたいなのを見た そういえばworkflow以外にも…

DataformでAPIからパイプラインを実行する

Dataformで個人プロジェクトのデータ整形を行ってみた そのときにAPIでパイプラインを実行したときのメモ REST API ドキュメントはこちら Use the REST API | Dataform docs.dataform.co まだREST API自体がBetaらしく今の段階ではプロダクション導入とかは…

じぶん Release Notes (ver 0.33.7)

swfz (ver 0.33.7) がリリースされました、更新内容は次のとおりです 技術 やったこと GCP Workflows CloudFunctions CloudLogging Pub/Sub これらを用いてエラーログからSlack通知するみたいなことをした Dataform 個人的にやっているTogglの集計作業をData…

GCPのCloud WorkflowsとCloud SchedulerでTogglの前日読書時間を自動でPixelaに記録する

今回の記事までにいくつかCloud Workflowsの記事を書いた GCPのCloud Workflowsを試す - notebook swfz.hatenablog.com Cloud Workflowsでランタイム引数のデフォルト値を設定する - notebook swfz.hatenablog.com これらで行ったことをもとに今回はテーマを…

CloudLoggingに流れたログをSlack通知する

すでにいろいろと記事も出ているが自分で触って試してみたため残しておく やったことはLogging -> 集約シンク -> Pub/Sub -> Functions -> Slack でWARNING以上のログをSlackに通知する 集約シンク AWSでいうCloudWatchLogsのロググループに対するkinesis da…

Cloud Workflowsでランタイム引数のデフォルト値を設定する

実行時に引数を渡すときにデフォルト値を設定したい というよくあるパターンをWorkflowsで行えるか試してみた 今回は失敗したパターンも書きながら流れを追って書いていく 結論だけ知りたい方は最後の方を見てください ランタイム引数の扱い Workflowsでラン…

GCPのCloud Workflowsを試す

ちょうど気になっていたので使ってみる Workflows ワークフロー | Google Cloud cloud.google.com サーバレスでHTTPベースのAPIサービスを組み合わせてワークフローを定義できる 外部APIも対応しているので色々できることはありそう 目次 こんな感じで試して…

じぶん Release Notes (ver 0.33.6)

swfz (ver 0.33.6) がリリースされました、更新内容は次のとおりです 技術 やったこと GCP CloudFunctions Workflows Sentry とりあえずGatsbyのブログと本ブログに入れてみた イベント 3月は次のイベントに参加した(視聴) Tech x Marketing #エンジニアリン…

dateコマンドで月初、月末、先週の期間を出力する

バッチ処理などの期間指定でよく遭遇するこの手の期間指定 必要になるたび調べていたのでよく使うものをまとめた 今 $ date Wed Mar 17 02:51:47 JST 2021 前日起算の月末 $ date -d "$(date -d "1 day ago 1 month" +"%Y-%m-01") 1 days ago" Wed Mar 31 00…

dummy-jsonを使ってダミーデータを生成する

dummy-jsonというnodeのライブラリを使ってみたのでメモ dummy-json BigQueryなどサンプルのJSONを作ってロードしたいときや、カラムの情報をある程度コントロールしてサンプル作りたいとき または、モック用にAPIレスポンスを適当に生成したいとき Rubyでい…

BigQueryで連続した日付のデータを生成して集計データと突き合わせる

スクリプティングを使ってみたくて題材探してみようと思ったがこのケースならSQL組み合わせるだけで良かった SQL WITH # 歯抜けサンプルデータの用意 sample_data AS( SELECT * FROM UNNEST(ARRAY<STRUCT<d DATE, item STRING, sales INT64>> [ ("2020-10-04", "hoge", 100), ("2020-10-19", "fuga", 5</struct<d>…

じぶん Release Notes (ver 0.33.5)

swfz (ver 0.33.5) がリリースされました、更新内容は次のとおりです 技術 やったこと GCP BigQuery CloudSQL CloudFunctions CloudTasks WSL2 WSL2に移行した Docker含め動かせる状態になった MySQL イベント 2月は次のイベントに参加した(視聴) Developers…

sqlparseを使い特定のSQLを抽出する

クエリログの中から特定のクエリを取り出したいという状況になったことがあったのでその際のメモ 今回はsqlparseというライブラリを使った sqlparse Python製のSQLパース用のライブラリ、パースだけでなくフォーマットなども行える andialbrecht/sqlparse: A…

CloudTasksの再試行設定覚書

公式ドキュメントを読んでもあんまりピンとこなかったので実際に動かしてみて感覚をつかむ 適当な関数を用意してcreate-http-taskでタスクを生成しCloudTasksのログから再実行の間隔を見る 再試行設定 CloudTasksでは指数関数的に再試行間隔が増加していくが…

BigQueryのMERGE文で削除、更新、追加を同時に行う

MERGE文はUPSERT的な操作をしたいときに取り上げられることが多いイメージだったがもう少し込み入った要件でも活用できそうということで試してみた MERGE文についてのドキュメントは下記 データ操作言語の構文 | BigQuery | Google Cloud cloud.google.com …

じぶん Release Notes (ver 0.33.4)

swfz (ver 0.33.4) がリリースされました、更新内容は次のとおりです 技術 やったこと TypeScript CloudFunction BigQuery 開発環境にdeltaをいれた イベント 1月は次のイベントに参加した(視聴) Engineer Career Study #1 - スペシャリストとしてのキャリ…

スプレッド演算子でimmutableにreduceの処理を書く

nodeでreduceを使って集計などを行う場合、スプレッド演算子を使ってimmutableに書けるのでメモとして残しておく 具体例でいうと次のような変数に対してname,dateごとにグループ化してvalueの値を足した計算結果を出したい場合 const rows = [ { name: "foo"…

2020年ブログの振り返り

2020年ブログの振り返り 総PV数 2020年は81444PVだった 2019年はいくつかバズった記事があったが、2020年はなかったのでそういうのを加味すると良い感じかなと思う 月ごとの推移 安定して前年よりか増えている ホットエントリ入りの記事は残念ながらなかった…

2020年の振り返り

全体的な総括のための振り返り 遅れてしまったが書いておかないと次の年末困りそうなので 2019年と同じような形で思い付くままに書いていく 2019年振り返り - notebook 生活 2020年は変化を余儀なくされたことが多かった 今まで週1のリモート勤務だったのが…

じぶん Release Notes (ver 0.33.3)

swfz (ver 0.33.3) がリリースされました、更新内容は次のとおりです 技術 やったこと TypeScript CloudFunction GraphQL CircleCI GCPのCD BigQuery MERGE構文など BigQueryのデータセットなどをTerraformで管理する サンプルリポジトリ terraform-sample/g…

ブログ周りの環境2020

この記事は write-blog-every-week Advent Calendar 202024日目の記事です(4日も遅れてしまった) ブログ環境 2020 - よしたく blog yoshitaku-jp.hatenablog.com を読んで自分もそれっぽいの書いてみようかなと思ったので書いてみる 運用 プライベートのリ…

VS Codeのスニペットで記事執筆を楽にする

この記事はVisual Studio Code Advent Calendar 2020の23日目の記事です Gatsbyなどの静的サイトジェネレータでブログ記事などを書く場合、Markdownのメタデータ(frontmatter)を最初に書くと思う ほぼ定形なので記事を書くたびに他の記事からコピーして…とい…

BigQuery+Togglで週ごとの作業時間予想をSQLだけで出してみる

この記事はBigQuery Advent Calendar 2020の14日目の記事です もともとTogglのデータをAPIから引っ張ってきてBigQueryに入れているのでそのデータを使って今スプリントの消化時間の着地想定を計算するクエリを書いてみた Toggl Track: Effortless Time-Track…

CircleCIでgcloudを使えるようにする(+Terraform)

この記事はCircleCI Advent Calendar 2020の13日目の記事です 2.1以上であればOrbを使うとechoで特定のファイルに書き出して…とかそういうのをよしなにやってくれるので楽できる CircleCI Developer Hub - circleci/gcp-cli circleci.com 準備 サービスアカ…

TerraformでCloudRun+CloudSchedulerを構築する

素振り目的でやってみた この記事はterraform Advent Calendar 2020の12日目の記事です 前提 用途はバッチ CloudRunは認証済みアクセスのみ許可する TerraformでCloudRunの設定周りを行う イメージのビルドは別途行いCloudRunのtfファイルで参照させる Cloud…