東京以外のおすすめAWSリージョン
背景
東京リージョンは応答時間は早いけど、応答時間がどうでもいいなら、もっと安いリージョンがいい。 もう少し欲を言うと、AWSの最新のサービスが利用できるところがいい。 さらに欲を言うと、それでも応答時間が早いほうがいい。
リージョン比較
- 料金
- 最新技術
- 応答時間
安いリージョン
によると、安いのは、us-east-1(ヴァージニア)か、us-west-2(オレゴン)だそうで。 ただちょっと古いのが気になる。us-east-2(オハイオ)も安い気がする。
最新技術
現時点で SageMaker が使える
現時点で Fargate が使える
- us-east-1(バージニア北部)
https://aws.amazon.com/jp/about-aws/whats-new/2018/03/aws-fargate-platform-version-1-1/
その他
https://aws.amazon.com/jp/about-aws/global-infrastructure/regional-product-services/
たまにオレゴンしかないものものあるが、ヴァージニア優勢な感じ。
応答時間
- us-east-1(バージニア北部)
地図上では西海岸の方が近いイメージだけど、そうらしい。
まとめ
us-east-1(バージニア北部)を使おう。
Windows PowerShell の OpenSSH でパスワードを正しく入れてもログインできない。
背景
Windows PowerShell の OpenSSH でパスワードを正しく入れてもログインできない。
原因
-v
オプションをつけることで原因を見つけることができた。
read_passphrase: can't open /dev/tty: No such file or directory
入力を ' /dev/tty' から取ろうとしているけど、Windowsにそんなものはない。
~/.ssh/id_rsa.pub などを転送してやれば、パスワード入力が省略でき回避できるかもしれない。 でもそれって、結局 scp でパスワード聞かれることだよね?
issue には上がっている。
最新版で解決したの? いえ、解決していないでしょ。
WSLを入れることにしたのでした。
参考
BigQuery で base64 から uuid の形式へ変換する
背景
BigQuery で base64 から uuid への変換をUDFを使って行おうと思ったのでメモ。
経緯
atob さえあればそれほど大変ではないはず。ところが、 Google Developers Blog: Breaking the SQL Barrier: Google BigQuery User-Defined Functions によると、
Note that not all JavaScript functionality supported in the browser is available in BigQuery. For example, anything related to the browser DOM is unsupported, including Window and Document objects, and any functions that require them, such as atob() / btoa().
だそうで、面倒なことに。
解決
次の stack overflow の関数を拝借して解決…
create temp function base64_uuid(str string) returns string language js as """ // [https://stackoverflow.com/questions/44836246] var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; function InvalidCharacterError(message) { this.message = message; } InvalidCharacterError.prototype = new Error; InvalidCharacterError.prototype.name = 'InvalidCharacterError'; // decoder // [https://gist.github.com/1020396] by [https://github.com/atk] atob = function (input) { var str = String(input).replace(/[=]+$/, ''); // #31: ExtendScript bad parse of /= if (str.length % 4 == 1) { throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded."); } for ( // initialize result and counters var bc = 0, bs, buffer, idx = 0, output = ''; // get next character buffer = str.charAt(idx++); // character found in table? initialize bit storage and add its ascii value; ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, // and if not first of each 4 characters, // convert the first 8 bits to one ascii character bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 ) { // try to find character in table (0-63, not found => -1) buffer = chars.indexOf(buffer); } return output; }; try { bin = atob(str); // [https://stackoverflow.com/questions/39460182/] h = bin.split('').map(function(b) { return ('0' + b.charCodeAt(0).toString(16)).slice(-2); }); return [h[0],h[1],h[2],h[3],'-',h[4],h[5],'-',h[6],h[7],'-',h[8],h[9],'-',h[10],h[11],h[12],h[13],h[14],h[15]].join('') } catch(e) { return '' } """; select base64_uuid("1/DhINolQvadQcBOL4itew==")
BigQuery の standard sql にも ROLLUP はあるよ
背景
上手いこと使うと、全体の合計と、group で指定したそれぞれの合計が同時に取得できる rollup だが、日本語のBQの標準SQLのページには記載がない(2018/03/20現在)
具体的には次のような感じ
解決法
次のように言語の設定を英語にしよう。
すると group by の説明に…
データ解析のためのロジスティック回帰モデルを少し読んだ
背景
前から欲しかった本がある。Applied Logistic Regression 3rd Edition であるが、ご覧の通り、ハードカバーで1万6千円、Kindle 版でも1万円してしまう。
まず、Logistic Regression(ロジスティック回帰)であるが、深層学習ほど最新の研究成果があるわけでもないが、よく使う。 機械学習やビッグデータを扱うデータサイエンティストの年収や使用言語などを赤裸々にするデータ - GIGAZINEによると、Logistic Regressionは最も使われる機械学習手法で、63.5%のデータサイエンティスト(回答者)に使われるとされている。 また自分も仕事で使っているし、今後も使うと思われる。
この本のすごいところは1989年に初版が出てから、進化し第三版まで来ているところである。よく、統計や機械学習の質問サイトである、 Cross Validated でも取り上げられている。 かなり有名な書籍らしい。でも高い。
ある時ふと twitter のタイムラインを見ると、
おらにはわがんね pic.twitter.com/m1aLHF5iWq
— ミス理科大No.5 鈴木りか (@misstus2017_05) 2018年2月1日
というものが見えた。ぼやけてよく読めないがよくみると、Applied Logistic Regression と書いてあるではないか。それも日本語訳の書籍らしい。 データ解析のためのロジスティック回帰モデル という書籍らしい。 それも 3rd Edition! 調べてみると、なーんと、Amazon で 8856円。それも中古も出ている。 早速(中古を)注文した。
内容を少し
確かに難しい。第一章の一節目の一行目から、「応答変数」と「説明変数」がいきなり出て来るが、それについて何も説明がない。 そして、すかさず「独立変数(共変数)」が出て来るが、それ自身の説明ではなく、統計の回帰の目的について、である。
おそらく、この節で言いたいのは、ここを読んでわからない人には、この本はおすすめできません、といいたいのだろう。 だから、この本は初心者用や勉強用ではなく、実用(プロもしくは学生であればそれを使って研究している人)レベル(英語タイトルは確かにそうなのかも)と思った方がいいだろう。
まとめ
盛り上げといてなんだけど、少なくとも初心者にはおすすめできない。統計などの知識(例えば Wald検定、尤度比検定、Score検定)も必要(一章を読む限り)。 自分はとりあえず必要なところだけ読むみたいな仕方をしているが、Webにある他の情報をなどと照らし合わせながら、読んでる…。
Jupyter notebook (Python3) で mypy のチェックを行う
背景
python3 で導入された型ヒントだが、そのままだと静的にも動的にもアノテーション(単なるコメント)として扱われるらしく、ちょっと残念。 mypy というコマンドで型チェックを行ってくれるらしい。Jupyter notebook 上でも実行したい。
対応
mypy をインストールする。
pip install mypy
typecheck.py をダウンロード
ipython の profile ディレクトリの start up で typecheck.py をダウンロード
cd ~/.ipython/profile_default/startup curl https://gist.githubusercontent.com/knowsuchagency/f7b2203dd613756a45f816d6809f01a6/raw/c9c1b7ad9fa25a57ee1903d755d5525894ffa411/typecheck.py -o typecheck.py
最新版?は、 A cell magic to enable the use of mypy within jupyter notebooks · GitHub で確認すること
カーネルの再起動
jupyter notebook の再起動でもいいけど、あのリロードボタン。
magics を評価したいセルに埋め込む
次の magics を使いたいセルの先頭に埋め込む
以下は例:
%%typecheck --ignore-missing-imports foo: int foo = 'var'
すると、<string>:5: error: Incompatible types in assignment (expression has type "str", variable has type "int")
とエラー(警告)が表示される。
これが見たかった。
まとめ
あまり jupyter で使っている例を見ないけど、mypy は jupyter notebook で使える。
追記
残念なことに magics はセルごとに起動するので、別のセルの型ヒントや別のセルの typing から import した型は見えてないかもしれない(というか magics の仕組み上恐らく見えていないだろう)。 セルごとに毎度 import したり、まとめられるセルはまとめてしまうなどの工夫が必要。