唯物是真 @Scaled_Wurm

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

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

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にたくさん参加すればレーティングが上がる」という話を見かけて気になったので、ユーザーの参加回数とレーティングの関係を雑にグラフにしたりレ…