修行

最近あまりプログラミングに取り組めていない。
少しずつでも身に付けたいので、少しずつ練習問題をやっていこうと思う。

今日は「プロコンのためのアルゴリズムとデータ構造」の8-2、木構造についての練習問題をやった。
pythonと比べるとやはりc++は間違えてしまいがち。コーナーケースとか。修行が必要。

ラズパイの起動ディスクを修復できない

Raspberry Piが起動しなくなった。症状は複合的で、切り分けもできていない。リモートで運用していたのだけど、

  • reboot後にsshできなくなる
  • 何度か電源ブチ切り&再起動すると復活したりする
  • sudo コマンド打つとPAMが初期化できないなどと出て実行できない(なのでrebootできなくなる)

などの症状が出てきて、もしやカーネルが壊れているのではないかと思った。調べてみるとfsckファイルシステムの整合性を確認でき、それをやってみるという手順があるということなので、いっちょこれを試してみようと思い立った。
macOSbashにもfsckが入っているので、これが使えるのかとも思ったのだがext4を読めるのかというのがわからないため結局linuxを準備することにした。Windows Subsystems for Linuxが使えるのではと思いwindowsUbuntuを導入したが、ラズパイの起動ディスクを接続した際、windowsがディスクをマウントしてしまい、うまくいかなかった。きっと何かやり方があるのだと思うが。結局VMwareをインストールし、Ubuntu仮想マシンを準備。
一応ディスクは認識されているのだが、パーテションに対してfsckを実行すると、ディスクが読み取り専用となっているため実行できないというようなメッセージが出てしまい失敗。chmodも試したがそういう問題ではなさそう。けっきょく今も原因はつかめず、ラズパイは修復できていない。SDが壊れたかな。かれこれもう5年くらい連続使用していたし。

Raspberry Piをいじっている

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

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

Raspberry Piを本格的に活用したくなって、まずはLinuxの勉強だと思って本を買ったりしている。本に書いていないところでも、つまづくことが多くてなかなか難しいと感じる。昨日はPAMが初期化できないと言われて、sudoコマンドを使えなくなった。当然sudo rebootもできなくなってしまったので、結局電源ケーブルを引っこ抜いた。再度電源を入れたらうまいことsudoできるようになったのだけど、その理由がわからない。しかもsudo rebootするとネットワークに繋がらないという不具合も発生し非常に困った。iptablesの設定を見直したり、接続状態を定期的に確認して再接続するような設定を作ってみたりしたけど効果は出ていない。トラブル続きで多少勉強になってるのかもしれないけど、なかなかわかった気にはならないという。もしかして電源ブチ切りでOSデータが破損したり、そんなこともあるんだろうか?
OSのことがわかってくると、なかなか面白い。ネットワークについても勉強してみたいと思い始めた。

motivate yourselves

東大に散歩に行ってきた。いわゆる五月祭というやつだ。人混みは億劫なので、気をぬくと休みの日は近場でぶらぶらしてしまうのだけど、たまにくらいは良いでしょうということで足を運んだ。キャンパス近くの店で坦々麺を食べ、コンビニでアイスコーヒーを買ってそれを片手にブラブラ。人が多く活気があり、エネルギーのある空間だった。
屋台を眺めるとわりと俗なものも多かったが、研究の展示にはさすがに面白いものがあった。妻が興味のあって一緒にきいた、穴だらけ物質の研究についての10分トークは印象に残った。こんな感じで自分たちの興味のある展示について少し眺めて、オケを聴いたらすぐに夕方になってしまった。もう少し良く知らない研究、個人的には文系の学問なんかに触れられるように動けば良かったかな。刺激はモチベーションになる。自分自身をモチベートし続けるには、多少の努力がいる。

もごばす

いかにも怪しげだが割とよろしいという評判のある英語教材であるところの、モゴモゴバスターなる教材を購入した。
授業で耳にする「よそ行きの発音」と、ドラマなどで耳にする「省力化された発音」の差は大きい。英語で子音が省略されたり、後の連なりの中で別の発音となったりすることがよくあり、これが大きな困難になる。この教材は、そういうものを系統的にまとめ、系統的なトレーニングをするのだが、分量も多く、割と出来が良いと思う。
多聴が良いといわれることは多いが、こういう教材があれば精聴するのもけっこう効率が良さそうだ。

近況

鯖缶が流行って久しいが、我が家でも便利に利用させてもらっている。最近、鯖とトマトのパスタが定番化した。玉ねぎとニンニクをオリーブオイルで炒め、鯖とホールトマトを加えて煮る。鯖缶は水煮でも良いが、味噌煮などでも良い。しばらく煮たらパスタに和えて完成。うちでは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

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