Rustでkcovを使って行カバレッジを計測する

まとまった時間が取れたので Rust 言語の勉強を始めることにした。何はともあれ、もはや自動単体テストを書きながら開発しないと落ち着かないので、Rust でのテストカバーレジの計測方法を調べてみた。今のところ、 kcov を使った行カバレッジ、つまり行単位…

Pythonで組み込み関数と同名の変数を使うべきでない理由

Python では input() や len() など、様々な組み込み関数を用意している。そして、これらと同じ名前で変数や関数を後から定義すると、それらを「上書き」できる。つまり、例えば input という名前の変数にファイルから読み出したデータを格納するようなコー…

Flask (Werkzeug)のResponseのmimetypeとcontent_typeの違い

Flask で HTML ではないデータを返送する場合、通常は HTML 応答に Content-Type ヘッダーを設定することになる。そのためには Response オブジェクトの mimetype プロパティや content_type プロパティに値を設定すれば良いのだけれど、これまでどちらに値…

Flaskアプリからデータをストリーミング方式で返送する

(2019-08-14: 全面的に書き換えました) Flask アプリで動的に生成したデータ(例:RDB のクエリー結果を CSV にして返す)をダウンロードさせるような機能を実現する場合、これまでデータを一度 view 関数で完成させた後に返送するしかないと思っていた。…

WindowsにてJuliaのREPLで改行する

Julia 言語の REPL にて関数定義のような複数行のコードを書いているとき、コードの途中に改行を挿入しようとして Enter キーを押すとコードが実行されてしまい、改行できない。このような場面では本来、標準のキーバインドとして用意されている meta-Enter …

Windows で Python の csv モジュールで改行コードを正しく出力する

Python 標準の csv パッケージ は CSV ファイルを手軽に入出力できるので重宝しているのだけれど、Windows で使うと改行コードがおかしくなることがあった。見た目的には「各行が 2 回改行されてしまう」ような状態。これを回避する簡単な方法がやっと分かっ…

matplotlibで描いたグラフをファイル保存しつつJupyterでは表示させない方法

Jupyter Notebookで時間のかかる機械学習やデータ解析の処理を走らせているとき、その経過状況をグラフにプロットして観察したい、ということがある。そういうとき、エポックごとに 1 からグラフ描画処理を普通に走らせると Notebook 上にグラフが「追記」さ…