近況

鯖缶が流行って久しいが、我が家でも便利に利用させてもらっている。最近、鯖とトマトのパスタが定番化した。玉ねぎとニンニクをオリーブオイルで炒め、鯖とホールトマトを加えて煮る。鯖缶は水煮でも良いが、味噌煮などでも良い。しばらく煮たらパスタに和えて完成。うちでは6年前に賞味期限が切れた醤油煮を使ったが、コクがあって非常に良好だった。

それから最近食べた桜姫という鶏肉が異常にうまかった。
www.nipponham.co.jp
普段買っているブラジル産とも、ノンブランドの国産とも全く違った圧倒的なぷりぷり感。鶏肉の概念をひっくり返す力があると思う。


プログラミング勉強の延長として組み込みシステムに興味が出てきた。マイコンを使いこなせれば、インターフェイスのしょぼいあるいはI/Oが備わっていない機器制御などを自動化することができる。メカ制御系と連動してシステム作りに繋がったら有意義だ。仕事で使う計測システムなんかの場合、大抵PC使って事足りてしまうという話もあるが、下地を作っておくのも悪くない。薄く広い知識は腰の軽さに直結する。近所の図書館で適当に本を借りてきた。

電子工作は失敗から学べ!

電子工作は失敗から学べ!

マイコンの内部構成について詳しく書かれていたりして、その点は非常に面白い。
Raspberry Piについてももう少し詳しくなりたいと考えまた別の本を買った。Raspberry piについてよくわかろうと思ったら、Linuxについてしっかりわからないといけない。Raspberry piになると、ネットワークサーバーとして動かせたりするので勉強のしがいがある。どこまでやるかは興味の続く限り。
動くメカニズムを図解&実験! Linux超入門 (My Linuxシリーズ)

動くメカニズムを図解&実験! Linux超入門 (My Linuxシリーズ)


その他最近よく開く本たち。

Effective Python ―Pythonプログラムを改良する59項目

Effective Python ―Pythonプログラムを改良する59項目

このひと月ほど実空間の伝導シミュレーションを作っていたのだが、結果として満足のいくものができた。
得られた結果をpillowを使ってアニメーション化までして楽しんでしまった。

趣味プロ

銀行等の口座をいくつか持っている。給与の振込に使うものもあれば、日頃の支出で頻繁にお金が出入りするものもある。場合によっては口座でない資産もあったり、これらの口座間でお金が移動することもあるので余計にややこしい。自分の持ってる預金残高をわかりやすい形で管理したい。持っている複数の通帳の残高の履歴を積み上げグラフ化すれば、今自分が持っているお金の総額もわかるし、もちろん個別の残高も一目瞭然に傾向が把握できる。
これを使うのにエクセルを使えるとか思うわけだが、データの表示形式と順序などのデータ構造が結びついているというのはやりづらい。VBAを使えば実現可能、というかVBAでできない操作はほぼないとは思うけれど、エクセルはあまり気が進まない…という主観的な理由で、今回はpython + matplotlibでこれをやってみた。pythonの訓練にもなるし。

とりあえず口座ごとに(日付, 残高)という対データがあるとし、これを処理して(日付, 残高1, 残高2, 残高3)みたいな感じの時系列データとしたい。入力データはそれぞれの口座について独立に準備されるので、必ずしも同じ日付のデータが全てのファイルに見つけられるわけではない。まばらなデータ入力でも適当にデータを保管してそれらしい値を出してくれないと困る、というわけで該当する日付に該当する残高データが存在しない場合は、その口座の最も直近のデータでパディングすることとした。たとえば銀行口座が3つあるとして、以下のようなテストデータを入力したとする。

Date Account1 Date Account2 Date Account3
2019/1/1 10000 2019/1/15 20000 2019/1/1 10000
2019/2/1 20000 2019/2/1 5000 2019/2/15 35000
2019/2/18 45000

matplotlibでplt, ax = plt.subplots()としてax.stackplotで、例えばこんな風なグラフをgetできる。

f:id:ttrr:20190218012449p:plain
stackplot

これを使って実際に自分の残高データを処理してみたのだけど…まあ去年今年は色々お金がかかったからな…という結果になった。しょうがないな。

Codeforcesに初参加してみた。解法はわかってみれば簡単なのだけど、思いつくのは難しい。筋道を読むと読みやすいコードを書けるのだけど、試行錯誤では自分にもわかりにくいコードになってしまう。書き始める前によく分析するのが大事なんだろうな。

業務で偏微分方程式を解く必要があり、土日と勉強していた。「科学技術計算のためのPython入門」は前から持っていたが、読み返してみるとやはり良い本らしい。前提知識が薄くよく読めていなかったが、今読むと2章は参考になる。先の利便を考えると今のうちにより良いコードの書き方を身に付けたいな。

あまり食材を使ったスープを作った。好評だったのでメモ。

  1. 生もずくを水洗いし食べやすく切る。ネギと白菜を刻む。ブナシメジを割く。
  2. 卵を溶き、片栗粉小さじ1.5を水に溶いておく。
  3. ごま油を鍋に熱し、もずく以外の野菜・キノコを炒める。油が馴染んで具がくったりしたら水を加える。今回は700 mL。
  4. 水溶き片栗粉、醤油小さじ1、丸鷄がらスープの素大さじ1.5投入。
  5. 適当なところで火を止め、溶き卵を投入

コショウやラー油をかけて食べると美味。丸鷄がらスープの素を使って失敗したことがない。便利すぎ。

Jupyter Notebookからドキュメント作成を試みた話

業務で得られたデータや測定について、定期的に第三者が見てある程度わかる形で提出する必要があり、これまでは主にMS Officeを使ってpdf化することが多かった。しかしこれでは、一旦解析により得られたデータを画像化し、それを貼り付けるような作業が発生するため多少手間が増える。また解析に用いたコードや操作の履歴などは別ファイルに残すか、それなりに面倒な手間をかけてWordなどに貼り付ける必要があり不便だった。解析からドキュメントの作成までを全てJupyter Notebookで完結しようとしてみたところ、素晴らしく作業が簡略化された。

解析コードに加えMarkdown形式のノートを追加し、そのままドキュメントとした。Notebookをpdf化するために、LaTeX形式で一旦出力した。PandocはMarkdownTeXやHTMLをはじめとする様々な形式のファイルを相互に変換してくれる。
github.com
僕の環境ではAnacondaが勝手に最初からPandocを入れてくれていたようだが、実際の作業においては、こちらのページが大変参考になった。
jupyter notebookをTex,PDFへと変換 - 粗大メモ置き場

環境によってはpdfの出力がうまくいかず、1/3日ほどはまった。dviドライバの都合のようであり、一旦.texを書き出してコードをいじる必要がある。dviドライバとしてdvipdfmxを使用する必要があり、¥usepackageコマンドのオプションにこれを含める必要がある。しかしpandocが吐き出す.texは人間が読むようにはできておらず、どのパッケージにオプションをつけたら良いかわからないのだ。これには解決法と言えるほどのものではないが、¥documentclassのところに角カッコで[dvipdfmx]などとつけておけば勝手に判断してくれるようだ。
一旦.texを経由するのには利点があり、例えばMarkdownで指定した画像ファイルなどはなぜか出力された.texファイルには含まれていない。これを手動で加えるついでにやればそれほどの手間ではない。

結果的にこの試みは非常にうまくいき、提出ドキュメント作成の省力化、作業コードの記録化、包括化などいいことづくめだった。

再勉強の必要性を感じて、LaTeXの本を買った。

[改訂第7版]LaTeX2ε美文書作成入門

[改訂第7版]LaTeX2ε美文書作成入門

ひじょーーうに奥が深く、読むたびに感動がある。良い買い物だ。

atcoder.jp
土日のコンテスト×2のおかげで、ようやく緑になれました。ここのところ開始時間にご飯を食べていたり外出したりしていたおかげで、時間通り開始すること自体、珍しかったのですが今週はどちらも定刻にスタートできました。
難しい問題を解けているわけではない弱さがあるので、もう少し鍛錬してみたいですね。

atcoder.jp

Cまでできた。dfsするとき訪問済みをブール配列で管理すりゃいいものを、ペアつくってvectorに放り込みfindで判定とかいうわけのわからんことをしたために3回TLEを出し、正答を見つけるまでに時間を無駄にした。でも結果には満足。