TOMITA powered by TOMATO

興味は色々。数学とか神学とか。日記からはじめました。

pythonバイナリ化

営業の人に自分の書いたスクリプトを渡すにあたり、py2exeを導入しようとして、condaもpipもうんともすんとも言わない(python2.7)。どうしたもんかと色々やるけど、時間が経っても仕方がないので、pyinstallerでやってみた(pipで入れた)。出来上がったapp.exeは自分のpcにあるうちはきちんと動いていたが、他のpcに移動した途端、動かなくなった。cmdが開いてそこから何も表示されない。さらには一旦作ったdistを消そうとしたらapp.exeが消せなくなった。cmdからもエクスプローラからも駄目。権限をいじるにもこれ以上対処しようがない。そもそもどうしてこうなったかわからない。果たしてこのモヤモヤを胸に残したまま退勤した。土日にこの問題についてどのくらいのリソースを割くべきか考えたが、よく考えたら家にあるのはmacだった。リビングにあるdesktop pcは会社と同じwindows10だが、自宅に帰ってやることがanaconda環境構築では何の為の週休2日か分からない。ここはひとつ休む能力を身につけるとでも思って、起こった問題を暫く棚上げにすることとしよう。

地図を描画する方法には色々あって、メルカトルやらwebメルカトルやら、さんざ振り回されたが、要は地表面がグローバルにユークリッド平面として扱えないのが悪い。ライブラリのドキュメントを読んでいたらやけにcoordinates と出てきて、何かと思ったら座標系であった。つまり座標変換をしていたのだ、僕は。そう思うと話は少し単純に思えてきた。lat2yとy2latがφとφ^-1に見えてきた。そう言えば確かに教授が、「地球の上に緯度と経度が書いてあって、それを平面図に写す関数があって...」と話していた。chartとかatlasとか、本当に数学用語かと思うような単語を定義したものだ。

ヒートマップを作ろうとしたら、どうにも殺風景になってしまって、よくよくみたらデータの分布が指数的だった。対数目盛りにしたらうまく行くと思って嬉々として変えてみたらエラーで固まってしまった。ショックでエラーメッセージを読むに気もそぞろだったが、non-positive numberがどうとか言って、僕がゼロを対数に投げたのがいけなかった。全体に0.1だけ下駄を履かせて再度色塗りをしてみたが、まだ何か違和感がある。どうやら0と1の中間値が存在しないせいで、グラデーションになっていない。このヒートマップに於いて、0と1の違いの重みを考えた。考えたが大した違いがあるとは思えなかった。結局下駄の厚みを1にして、目盛りの最小値を10^0にした。こうするとなかなか見栄えの良い図ができた。今日はこの図を眺めている時が一番気分が晴れやかだった。

定期が切れた朝になるまで定期券を更新していなかった。ひとつにはiphone7でsuica定期券を購入しようと思っていて、いざとなればものの十分で導入できると思っていたからだ。そもそもどうにも忘れっぽいという自覚はある。朝洗面をしつつアプリをダウンロードしてクレジットカードを設定して駅を入力して、本当に駅に行かずに定期券を買えたのが少し感動した。改札で機械に翳す時に操作がいるのかと調べたが、なんならスリープ状態でもいいらしい。恐る恐る改札を抜けると、3秒もすればこのiphoneで電車に乗れる世界に慣れてしまった。また新しい感動に出会うまで、hello, ordinary world!