唯物是真 @Scaled_Wurm

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

BigQueryでクエリを書いたときにハマった罠集

自分がなんとなくBigQueryのクエリを書いていてハマった罠について列挙しておきます。 ドキュメントをちゃんと読めば書いてあったりするのですが、普段はそこまで細かく見てなかったりするんですよね……。 BigQueryのカレンダー | Advent Calendar 2023 - Qii…

最もシンプルで(驚くべき)ソートアルゴリズム?

こういうツイートを見かけたので元の論文を読んだり実装してみたりしました世界一単純な? ソートアルゴリズム。for i=1..n: for j=1..n: if a[i]

AtCoder Beginners Selection を SQL (SQLite + Python) で解く

以下のようなツイートを見かけて、AtCoderでSQLが使えることがわかったので試しに AtCoder Beginners Selection の問題を可能な限りSQLを使って解いてみました。できるだけ標準入出力をPython側で行って、その他の計算をSQLite側で行います昨日のD問題でPyth…

東京の新型コロナウイルス感染者数はキリがよい数字が多かったりするのか下一桁を見てみた

2021-07-30 の感染者数が3300人でキリがよかったので、キリがよい数字がどれぐらい出てるか気になった。 とりあえず下一桁の数字がそれぞれどんな回数でてるか見てみた。 あまり内容がある話ではないので先に結果を書いておくと、特に下一桁が0のものが多か…

pip のインストールが Python 2系で sys.stderr.write(f"ERROR: {exc}") の部分で SyntaxError: invalid syntax と出て失敗する

1月23日頃に出た pip 21.0 でついにPython 2系のサポートが切られてインストールできなくなりました https://pip.pypa.io/en/stable/news/ pip 21.0 Deprecations and Removalsstackoverflow.comhttps://bootstrap.pypa.io/2.7/get-pip.py などに古いバージ…

nodenvに小さなバグを見つけてプルリクエストを送ってマージされた

仕事で使っていたコードのCIのスクリプトがある日突然動かなくなって、調べたらデバッグ出力用にnodenv versionsのコマンドを実行していたのが原因だったのがわかりました 少しの修正で直りそうな問題だったので休日に直してプルリクエストを送りました 英文…

MySQLでヌル文字(NUL)などの制御文字が含まれている文字列を探す方法のメモ

ヌル文字(NUL) の判定 MySQLではnull文字は '\0' や CHAR(0) で表せますなので ヌル文字を含む文字列は 文字列 LIKE '%\0%' のような感じで判定できます(他の文字列系の関数でもよいはず) mysql> SELECT CHAR(0) LIKE '%\0%'; +---------------------+ | CHA…

BigQueryのSTRUCT型やARRAY型で無理やりGROUP BYで集計する

BigQueryではSTRUCT(構造体)型やARRAY(配列)型が使えます データ型 | BigQuery | Google CloudSTRUCT型のカラムでGROUP BYしようとするとGrouping by expressions of type STRUCT is not allowed atのようなエラーが出てきて実行することができません 同様に…

BigQuery MLの変数に適用してくれる前処理の調査 / 学習された重みは標準化後の値に対する重みなのか? / nullの扱いは?

BigQueryにBigQuery MLという機械学習の機能が追加されました。今はロジスティック回帰による分類と線形回帰による回帰問題について学習ができるようです学習時に変数に対してどのような前処理が行われるのか気になったので調べてみました 誤りなどがあった…

PHPで、ある配列の中身をn回繰り返した配列を作る

php

PythonやRubyだと[1, 2] * 3と書くと[1, 2]を3回繰り返した配列[1, 2, 1, 2, 1, 2]が得られます これをPHPで簡単に書く方法がないか考えてみました 二重のforループで配列に足していく方法 最初に自明な方法の二重のforループで足していく方法を書いておきま…

BigQueryで整数(INT64型)や浮動小数点数(FLOAT64型)をバイト列(BYTES型)にキャストする

整数(INT64型)や浮動小数点数(FLOAT64型)をBYTES型にしたかったので自前で処理をUDFとして書きました BigQueryのCAST関数でBYTES型にキャストでできるのはBYTES型自身とSTRING型に限られているので、他の型を変換したいときには自分で処理を書く必要がありま…

BigQuery で _TABLE_SUFFIX をビューやWITH句の外側から指定する

BigQueryのクエリでテーブル名の末尾に日付などを入れておいて _TABLE_SUFFIX のカラムの条件で利用するテーブルを絞り込みたい時に、_TABLE_SUFFIXの条件をビューやWITH句の外側から書いてみる話です

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版を手に入れた ミスマッチ判別機を用いたイラストの着色転写手法の提案 線画と色情報を表す参照用の画像…