ごまだれ日記

プログラミングの技術メモとか

掲示板に画像投稿機能を追加した

dhirabayashi.hatenablog.com

画像投稿機能がなかったので追加しました。
データベースにバイナリとして保存、表示時は一時ファイルを作成してそれが読み込まれるようにしています。
multipart/form-dataの扱いなど、やったことなかったのでいろいろと勉強になりました。

まだまだ足りない機能はあるので、その改善でしばらく遊べそうです。

再掲になりますがソースはこちら。
github.com

Spark Frameworkで簡単な掲示板アプリを作った

掲題の通り、Sparkのサンプルとして作ってみました。
SparkはSinatraライクなフレームワークで、動くものが非常に簡単にできたのが印象的でした。

Spark自体はMVCでいうとCの部分しか提供しないので、その他の部分は自分で書いたり他のフレームワークと組み合わせる必要がありますが、
その分既存の知識が活かせるので気持ちよく書けました。

なお、データベースとしてはHSQLDB、テンプレートしてThymeleafを使っています。
ORマッパーは使用していません。

ソースはこちら。
github.com

Python3で文字列からintへ変換

組み込みのint()関数で可能。Javaと比べると、多少おおらかなのが印象的。

int('123')    # 123

int('0123')    # 123  ※Javaならエラー

int('   123   ')    # 123  ※Javaならエラー

ただし、無視してくれるのは0や半角スペースや改行など一部の文字だけで、下記などはさすがにエラーになる。

int('123X')    # ValueError: invalid literal for int() with base 10: '123X'

もちろん、16進数の場合は有効な文字ならOK。

int('123A', 16)    # 4666

Python3で文字列やリストを反転させる

s = 'ABCDE'
print(s[::-1])     #  'EDCBA'

スライスでコロンを2つ書くと、ステップを指定できるんですね。
ステップに-1を指定すると、末尾から一つずつ辿って結果的に反転されると。
上記は文字列の例を書いてますが、リストでも同様です。(Pythonとしては同じ扱い?その辺りの理解はまだ曖昧…)

ステップに-1以外を指定すると、下記のような感じです。

s = 'ABCDE'
print(s[::1])     #  'ABCDE'

print(s[::2])     #  'ACE'

print(s[::-2])     #  'ECA'

「ゼロから始める競技プログラミング」聴いてきた

supporterzcolab.com

聴いてきました。詳細はスライドを見ていただければいいと思いますが、競技プログラミングとは用意されたプログラミングの問題を解いて、その解くまでの早さを競うものです。
競技プログラミングをやることでどのようないいことがあるかという話はあまりありませんでしたが、単純に楽しそうだと思ったのと、何かプログラミングしたいけど特に作りたい物がないという私には合っているような気がしました。

とりあえず、AtCoderには登録しました。あとpaizaのアカウントを復活させたので、しばらくはそれで遊ぼうと思います。