イベント参加ログ》 (第97回)Python mini Hack-a-thon 3/23 11:00-19:00

pyhack.connpass.com

  • ビープラウドさん会議室が会場の、 #pyhack 定期もくもく会。参加2回目。
  • 先月の #pyhack 以来ちびちび開発している自分用ツールの続き。Responderの勉強がてら、ログをブラウザで表示する部分を作った。

参加目的・獲得目標

  • ひとりで勉強し続けるのは苦手なので、"もくもく会ドリブンで継続&成長するよ” 計画の一環。
  • 引き続きResponderの勉強と自分ツールの開発を進める

成果

キーワード

成果発表や人と話して初めて聞いたキーワードや印象に残ったことのメモ。

気づき(3つ書く)

  • コンソールにログ表示していた時は、表示対象範囲を変数で持ち回っていたが、ブラウザ表示の時はそれができない。困って成果発表の時に相談し、クエリ文字列で渡してやる方法を教えてもらった。
  • ハマった。
    たったこれだけのコードを動くようにするのにえらく時間がかかってしまった(^^;;
# http://127.0.0.1:5042/page/{str_page}
@api.route("/page/{str_page}")
def html_page(req, resp, *, str_page):
    idx = search_by_page(notes, int(str_page))
    resp.html = api.template('index.html', 
                        tmpl_notes = notes, 
                        tmpl_idx   = idx, 
                        tmpl_page  = str_page
                        )
  • 原因は変数の型違い。URLから取得した page をそのまま関数 search_by_page(notes, page) の引数に渡していたが、URLから渡ってくる値が str型 なのに対し、 関数側は int型を期待していたため、処理途中でしくじっていた。
  • いつもならコンソールに "型が違う" とかなんとかエラー表示されるのに、Webサーバとして動いているとうんともすんとも言わない。処理が戻ってこないから print や logging を書いても効かず、ブラウザに None と表示されるだけだったり Internal Server Error が出るだけだったりで、悪い箇所を特定するのが大変だった。
  • 結局、確実に動くコードから少しずつ置き換えて原因箇所が特定できたのだが、 コードを書き換えるたびにいちいちサーバ再起動が必要で 嫌になった。

TODO(気づきを行動に変える。3つ書く)

  • Webフレームワーク使うときにも使える、効率のいいデバッグ方法を調べる。
  • イベント参加ログを書くのが翌日以降になりがち。その日のうちに書いて吐けるようにしたい。
    • 済》定形化する
    • もくもくの最後の30分は アウトプットに使うことにする
    • 勉強や開発内容そのものも最初から アウトプットするつもりで臨む
  • 以上のことを、「いまだに脳内 小学生レベルで 私って まぢバカだな」などと思わずに、フツーに楽しくこつこつやる。
  • 次回もまた参加したい!

ランチ

Python+もくもく会+美味いランチ の法則。
熟成肉ハンバーガー(ちょい辛ソース) - バンが味わい深くて肉の旨さを倍増する。美味しくて幸せ。

retty.me