唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

BigQueryでPHPのシリアライズされた形式の変数の中身を取得する

残念なことにDBにJSONなどではなくPHPでシリアライズされた形式でデータが保存されていることがあります この中身をBigQuery側から参照したかったので調べてみました軽く検索したところJavaScriptでPHPのシリアライズされたデータをもとに戻せるライブラリは…

BigQueryで素数や高度合成数の列挙をSQLで計算(実用性はない)

素数列挙 以前書いた記事では\(10^4\)ぐらいのオーダーまでしか素数を列挙できませんでしたが、クエリを工夫して\(10^7\)ぐらいまでは行けるようになりました sucrose.hatenablog.com 以前のクエリ 上の記事に書いた試し割りによる\(10^4\)個ぐらいまでが限…

BigQueryのGENERATE_ARRAY関数で個数が多い等差数列を作る

GENERATE_ARRAY(start_expression, end_expression[, step_expression])関数を使うと連番の数値(等差数列)を作ることができます リファレンス しかし一度に作る個数が多いとError: GENERATE_ARRAY(1, 10000000, 1) produced too many elementsのようにエラー…

BigQueryのWeb UIで選択範囲をコメントアウトする

範囲を選択してCtrl + /を押せばよいみたいです(Macの場合は⌘ Cmd + /) BigQueryのキーボードショートカット 以下の範囲選択した状態でCtrl + /を押すと 文字が書かれている部分だけコメントアウトされます 逆にこの形式(先頭に-- )でコメントアウトされてい…

BigQueryの配列にUNNEST()でWITH OFFSETして添字を取得する

以前BigQueryで配列をzipする記事を書きました 「これを使って配列に添字をくっつけることができる」的なことを書いていたのですが、添字を得るだけならWITH OFFSETと書くだけでよいことに気づいたのでメモしておきます sucrose.hatenablog.com上の記事ではU…

JavaのJShellワンライナーでスクリーンショットを撮る(実用性はない)

以前JShellでワンライナーのスクリプトっぽく書くのに挑戦しました sucrose.hatenablog.com この記事を書いてからJavaでワンライナーを書いて他の言語よりも嬉しい場合ってあんまりないかもと思い始めてきましたとりあえず思いついた例として、JavaのRobotク…

JavaのJShellでワンライナーのスクリプトを書く方法(ついでにFizzBuzzのコードゴルフ)

Java9からJShellというREPL(対話型の実行環境)が使えるようになりました main関数などを書かずともコード片を入力すればその実行結果を試すことができます対話形式以外にもファイルもしくは標準入力でコードを渡すと実行してくれるので、簡単なワンライナー…

PCREの範囲の正規表現を可視化してくれるサイト

最近書いた再帰を使った正規表現を可視化しようと思ってGoogle検索してみたのですが、上位に出てくるサイトでも日本語が使えなかったりサポートしている正規表現にPCREの範囲(というか再帰)が含まれていなかったりいろいろでした いくつか正規表現の可視化サ…

MySQLのJSON型のnullの判定やMySQLのいわゆるNULLとの違い

MySQL 5.7からはJSON型のカラムが使えるようになりましたこのJSON型にはMySQLのいわゆるNULL値とは別に値がないことを示すnullという値があって混乱したのでメモしておきます (この記事の内容はたまたま手元にあったMySQL 5.7.20で確かめました)便宜上この記…

再帰を使った正規表現で3の倍数を表す (正規表現で FizzBuzz の続き)

PerlやPHPなどの標準の正規表現ライブラリはパターンの再帰をサポートしています(どこまでを正規表現というかはともかくとして)以下の記事のFizzBuzzを解く話で使った3の倍数を表す正規表現が再帰を使えばスッキリ書けそうだったので試してみました正規表現…

正規表現でFizzBuzz

FizzBuzzを正規表現で解きたくなったので解いた 知ってる人が多いと思いますが念のため問題の内容を説明しておくと、入力された整数が3の倍数のときはFizz、5の倍数のときはBuzz、15の倍数のときはFizzBuzz、その他のときは数値をそのまま出力します Fizz Bu…

AtCoderの参加回数が多い人ほどレーティングが高い?

前にAtCoderのレーティングの分布について調べて記事を書きました sucrose.hatenablog.com Twitterで「AtCoderにたくさん参加すればレーティングが上がる」という話を見かけて気になったので、ユーザーの参加回数とレーティングの関係を雑にグラフにしたりレ…

はてなブックマーク数が多い2017年のアドベントカレンダーのランキングを調べた

QiitaとAdventarにあるアドベントカレンダーについて、個別の記事とカレンダー全体のはてなブックマーク数のランキングを29日の21時ごろに集計した 個別記事上位100件のURLについては軽く目で見て文字化けを直したり最近の記事ではないURLをフィルタリングし…

BigQueryのSQLでなんとなく素数列挙を試した(実用性皆無)

GENERATE_ARRAY()関数を使うと等差数列が作れるので後はJOINしてがんばるだけ前に以下の記事でエラトステネスのふるいなどを調べたが、SQLでは試し割りによる方法ぐらいしか書けそうになかった sucrose.hatenablog.com 試し割り ある数をその数よりも小さな1…

BigQueryで効率的なクエリを書いて高速化する

BigQueryでクエリを書く時に、クエリの書き方によって実行時間を高速化できたり処理するバイト数を節約したりできます Googleが公式でBigQueryのベストプラクティス集(今はまだ未翻訳)を公開してくれているので、そのうちのクエリを書く時周りのノウハウを簡…

ABテストの12の落とし穴

Twitterで見かけた以下の記事で紹介されていた論文がおもしろそうだったので読んだ感想と内容のてきとーな紹介(詳しく知りたい人は元論文を呼んでください)マイクロソフトの研究者による、いわゆる A/B テストにおいてメトリックを解釈するときに陥りがちな…

久しぶりに自作のChrome拡張を更新した (Seiga Download 3.8)

バグの報告が届いたので2年半ぶりの更新(先週)。全然使ってなかったのでむしろ最近まで動いていたことに驚き たぶん今後も更新頻度は低いと思いますニコニコ静画に投稿されたイラストを、タイトルや作者名入りで保存するための拡張 Seiga Download - Chrome …

コミックマーケット92で入手した技術系の同人誌のメモ(SIGNICO, SIGCOWW, Girls Manifold)

今回は機械学習系などでTwitterで見かけたのを入手した 気になった記事だけ触れます SIGNICO 『SIGNICO vol.4』 SIGNICO 冊子版とPDF版があったのでPDF版を手に入れた ミスマッチ判別機を用いたイラストの着色転写手法の提案 線画と色情報を表す参照用の画像…

BigQueryでアドホックなクエリを書くときに気をつけようかなと思うこと

最近Webのコンソールでクエリを書くときに気をつけようかなと思ったことをメモしておく クエリにStandard SQLを使っているかLegacy SQLを使っているかを明記する パラメータの定数はできるだけわかりやすくまとめておく 何をするクエリか最初にコメントを書…

BigQueryのクエリで定数を定義して複数箇所で使いたい

BigQueryでクエリを書くときに、同じ日付や倍率、円周率などの定数をクエリの複数箇所で使いたい時があります 単純に複数箇所に書くと修正するときに大変なので、共通のものを複数箇所で使いまわす方法を調べてみました UDF(ユーザー定義関数)による方法 定…

BigQueryのStandard SQLの便利な機能とLegacy SQLからの変更点をいくつか紹介

勉強会で発表したので内容を適当にまとめてブログ記事にしておくいつの間にかリファレンスが日本語化されているので、全部一読したい人はそちらを読んだほうがよいかも SQL Reference | BigQuery Documentation | Google Cloud Platform ちなみに日本語版の…

新規ユーザーのLTVを既存ユーザーの全体の解約率の逆数で計算するのは不適切?

LTV(lifetime value)という顧客(ユーザー)が将来的に使う金額を予測しようという話があります 前に以下の記事でも書きましたが、月額課金制のサービスだと粗い推定として解約率を一定とみなして解約率の逆数を平均継続期間としてLTVを計算したりしています s…

はてなブログの記事下に表示される関連記事の位置を移動する

はてなブログの記事の下に関連記事を表示する機能が追加されました 表示位置が固定でいまいちだったので、表示位置を移動できないかなって試してみました staff.hatenablog.comはてなブログの設定(デザイン)に以下のようなタグを書けばよいです表示位置の指…

BigQueryのWebコンソールでJSONを整形して出力(pretty print)

BigQueryにはJSON形式の文字列から値を取り出す関数があるのでスキーマレスな感じで使うこともできます ただしJSONを入れるとWebのコンソール上で見たときに改行などが無視されて、JSONの内容を確認しづらいので適当に整形して表示確認する方法を書いておき…

BigQuery の SQL で類似文字列検索をする

BigQuery自体には類似文字列検索の機能はないので、文字n-gramのコサイン類似度を求めるSQLを書いて似ている文字列の検索をします ちなみに単純にある文字列が別の文字列に含まれているかどうかをみたいならWHEREにカラム名`LIKE '%探したい文字列%'のような…

BigQueryで単語分割がしたい

形態素解析器で分割してからBigQueryに載せればいいでしょって話ではあるのですが、既に載っているデータだったり、ログを載せるプロセスに形態素解析を新たに噛ませるのは大変だったりします とりあえず試してみたいだけの時に気軽にやりたいので、BigQuery…

BigQueryで配列に添字をつける(複数の配列をzipする)

BigQueryのStandard SQLを使っていて配列から位置を指定して要素を取り出すことはできるのですが、UNNEST()を使ってそれぞれの要素を取り出した時にある要素が何番目かという情報を一緒に得る方法がわからなかったのでやり方を考えました(もしかしたら簡単に…

liftとPMI(Pointwise Mutual Information)

相関ルール分析(頻出パターンマイニング?)で使われるリフト値(lift)と、共起の強さを測るのに使われるPMIがほぼ同じものだなぁと思ったのでメモ(それ以上の内容はない) 相関ルール分析 Association rule learning - Wikipedia 相関ルール - 機械学習の「朱…

Ubuntuでディープラーニングを始めたけど数日経つとGPUが動かなくなった話

AWS EC2でUbuntuにGPUのドライバやらCUDAやらを入れてディープラーニングに触ってみていたのですが、久しぶりに起動したら動かなくなっていました。最初に断っておきますがかなりLinux初心者っぽい理由です 症状 環境を構築した直後は普通に動きましたが数日…

Slack のステータス(status)を API で自動で更新+天気予報を表示してみる

Slack にステータス機能が表示され絵文字と短いメッセージで自分の状態を表示できるようになりました slackhq.com Beyond busy – Slack Platform Blog – Medium API APIでも変更できるみたいだったので触ってみました User presence and status | Slack user…