.この薄っぺらいブログが見えるというのか/

自転車・PC・読書感想。サイクリング部の大学生やってます。

頻繁に昔の失敗を思い出して悶える人

僕は昔の失敗をほんとに忘れないタイプで、ことあるごとに思い出しては身悶えしてる。思い出す失敗はいっぱいあるが、挙げてみろと言われるとすぐにはでてこない。全く前兆なく、ふっと脳裏に現れる。ただ、1人で単調な作業してる時によく起こるという法則性はある。食器洗いの最中、風呂入ってる時、つまらない本を眺めてる時。脳のリソースを中途半端に使っているときだ。

頑張ってどういうものを思い出すのか思い出してみると、小さい頃友達に怪我をさせてしまったこと、人に注意したら無視されたこと、ネタが滑ったこととかだと思う。ほんとに思い出せない。なにに悶ていたのか。

こういう過去のフラッシュバックというのは多分中学生くらいから始まったんだと思う。最初は思い出すだけだったんだけど、段々と具体的な行動として現れる様になってしまった。

これは意識的にやってるわけじゃなくて、癖みたいなものだから、はっきりと覚えている訳じゃない。最初のうちは、思い出したときにすこしハッととするだけだったかもしれない。次に腕に力が入る様になった。急に筋肉が収縮して、びくっとなる。両腕にランダムじゃなくて例外なく左手だけ。テスト中にこれが起こってしまって、隣の人に少し不思議な顔をされた覚えがある。なんで左手だけだったのか、今となってはわからない。理由があった気もするし無い気もする。たまたま最初が左手だったからと言うのがありそうな話ではある。

覚えている限りの次の段階は言葉を発するようになった。多分これは、前述した左手の硬直をやめようとして出てきたんだと思う。反射的に左腕が硬直しなくなった代わりに、今度は反射的に言葉をつぶやくようになってしまった。最初は「あー」とかだっただろうか。それから段々言葉がはっきりしたものになっていって、ひどく失礼なもので申し訳ないが、今では「死ね」とつぶやく様になってしまった。

死ねっていうのは多分僕に向けたものなんだと思う。こんな失敗をした僕。あんなこともできないあいつ。いつからか思い出すのはムカつく他人の言動も含まれるようになった。急にとなりのやつが「死ね」なんてつぶやきだしたら怖いことこの上ないとはわかっているので、つぶやくのは1人の時だけにしている。人が近くにいる時にこの発作がやってきてしまうことも勿論あって、その時はすんでのところで言葉を飲み込むようにしている。この反応は脊髄反射か、脳の条件反射のどちらなのだろうか。考えて止めることができるから脳の反射のような気もする。

ただ最近は止めることができずについ口から漏れてしまうこともある。「し」まで言ったところで、これは言ってはいけないことだと気づく。だから突然口からするどく息を漏らすという間の抜けたことになってしまう。

たまに止められないくらいフラッシュバックすることもあって、そういう時はだいたい「死ね」と言ってしまう。もちろん1人の時ですよ。人が周りにいるときは「し」だけになる。短時間で何回も続くことが多くて、傍から見たら頭のおかしいやつなのはわかってる。

これが原因なのかは知らないが、ちょっと前バズってた「共感性羞恥」もよくある。テレビで滑ってる芸人がいると見てられないとか、自分に関係なくても、恥をかいてる人のことは見てられない。以前友達に漫画の「惡の華」を読ませてもらったけど、辛くて3巻までしか読めなかった。友達は早く読めと急かしてくるが、どうしても読めないのだ。みていて辛かった。どうしても無理なので早々にお返しした。

映画やアニメでも、自分の失敗を思い出すような場面とか、恥をかく場面とかだと思わず視聴をやめてしまう。シュタゲのオカリンが良い例になる。クリスの講演で「意義あーり!!」なんて叫ぶとこなんて見てられない。こういう時は一旦見るのをやめて、「これは自分に関係ないことで、登場人物が恥ずかしい思いをしたとしても自分のせいじゃない」と言い聞かせてから見るようにしている。

けものフレンズも、最初のサーバルがかばんちゃんを追いかけるシーンの作画の酷さに、すぐに見るのをやめてしまった。書いてて気づいたが、登場人物が辱められることに限らないらしい。

これは精神病の一種なのだろうか。精神科に行っても変わらない気がする。この記事をブログに載せてインターネットに公開すること自体を思い出してまた悶える気がする。多分僕はこの現象とずっと付き合うことになるのだろう。

tensorflowでGPUが使われているか確認する

tensorflow-gpuのインストールは

GPU support  |  TensorFlow

を参照してください。アメリカ語が読めない人は機械学習は無理です諦めてください。

で、正しく使われているか確認したい時は

>>> import tensorflow as tf
>>> tf.test.is_gpu_available()
True

で確認できる。

参考: https://www.tensorflow.org/api_docs/python/tf/test/is_gpu_available

検索すると

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

って方法が出てくるけど紹介したヤツのほうが簡単だと思う。

キャッシュレス決済を使うと幸せになれる

今までキャッシュレス決済というものにあまり関わって来なかったのだけど、自分の周りのガジェット整理をしたときに財布も持ちたくなくなったのでキャッシュレス入門することにした。使ってみた知見を共有したい。今の所使ってるのはメインのLINE PayとサブのPay Payだけど、この2つ使ってれば大体対応できる気がする。

普通に使っても便利

  1. 小銭出す手間がない
  2. ポイント結構つく
  3. UIが良い
  4. (サービスによっては)カードを発行できる
  5. 家計簿アプリと連携すると手間が消える

スマホだけで決済できるから小銭の管理が要らないのが最高にストレスフリー。財布すら出さなくて良い。レジ前で「小銭あると思うんですけど.....あ、なかったですすいません。はい。1000円でお願いします」とかやんなくていい。あれ店員もどういう顔で待ったらいいのか困ってるから。後ろに行列ができてる時は地獄。

いまは各社ユーザーの奪いあいをしてるので色々バラマキしてるから積極的に活用していくと結構な額になる。LNE PayならQR決済で常時3%(+α)つくし、Pay Payは2.5%くらいじゃなかったかと思う。ウマウマ。

クレカでいいじゃん派は結構要ると思うんだけど、クレカ会社の管理サイトorアプリのUIって大体クソじゃん?本業が金融で、ソフトウェアは力いれてないんだろうし。その点キャッシュレス決済会社ならIT企業が運営してるのでアプリがまとも。LINE Payなら使うとすぐにLINEでメッセージが送られてきて、履歴も簡単に確認できるので安心。

ちなみにLINE PayではLINE PayカードというJCBブランドのカードを発行できるので、もう完全にクレカの上位互換。使うとLINE Payのチャージ額から引き落とされる様になってる。俺はもういろんなサービスに登録してあるクレカをLINE Payカードに移行してる。

最後に、家計簿アプリと連携するとまじで家計簿つける手間が消滅する。俺が使ってるのはmoney forward。使うと勝手に計上されてるから付け忘れることがない。

友達と使うと更に便利

ようやくタイトルの話になるんだけど、友達間の送金が楽&記録に残るのがとても便利。友達間で割り勘まで行かなくても、細かいお金の移動をすることが多いと思うんだけど、あとで「あのお金って返してもらったっけ?」とか聞かなくてよくなる。飲み会の割り勘とか、セブンの700円くじ引くために会計友達と一緒にする時とか、とにかくストレスがない。

ただ一つ問題があって、それは大体の人がめんどくさがって使ってくれないこと。俺はサークル内で金の移動が多いからみんなキャッシュレス始めようってしつこく誘ってる。いいね!ってノッてくれる人もいるけど、全くやる気がない人もいる。「キャッシュレスは信用できない」ですって(笑)。財布でも落としてろ。

そういう人にも使ってもらえればとても幸せになれる。とにかく普及させるためにはまず自分から使っていくしか無いので積極的に活用していこうと思う。早くどっかのサービスに統一されてくれれば一番幸せ。セブンペイとかゆうちょペイとかいう雑魚は引っ込んでろ。かき乱すんじゃねえ。

Matebook13でUbuntuとデュアルブートする。

最近Matebook 13を買ったのですが、速攻ubuntu入れたので備忘録として残しておきます。

そもそもデュアルブートじゃなきゃだめなのか?

windows機でubuntu使うとなると、WSLやVirtualBoxなどが候補に上がりますが、正直言ってストレスフルなのでおすすめしません。

LinuxとWindowsをデュアルブートするのは止めたほうが良い | SlackNote

という記事に書かれているように、デュアルブートにはそれなりのリスクがあります。しかし上で挙げた2つともつっかえる点が多く「スムーズに開発するためにubuntuを使いたいのに、そのubuntuが使いにくい」という本末転倒な事態になってしまいます。

WSLを使う場合はGUIアプリケーションの起動が手間ですし、ターミナルもデフォルトのままだとただのコマンドプロンプトなので、自分でカスタムするわけですが、これがまためんどくさい。僕はむずくて諦めました。 じゃあVirtualBoxは?となりますが、これはこれでキーボードのキャプチャ、解像度の調整、(これは想像ですが)Web開発しようとしたらポートの開放とかめんどいと思います。あとメモリをホストOSから分けてもらってるので動作がもっさり。

というわけで結局デュアルブートに落ち着きました。Ubuntu最高!winは雑魚!

デュアルブートのやり方

UbuntuとWindowsのDualboot環境を構築する | UnFlexFlex

基本的には上のサイトに全部書いてあるので、注意点だけ紹介。

0.Windowsのプロダクトキーを控えておく

万が一データが全部ふっとんだときに備えてプロダクトキーを控えます。

【Windows 10対応】インストール済みのWindows OSのプロダクトキーを調べる:Tech TIPS - @ITによると、

wmic path SoftwareLicensingService get OA3xOriginalProductKey で確認できます。

1.高速スタートアップを無効にする

ここは特になし。もしかしたらやらなくてもOKかもしれないが僕はやりました。

2.Windowsのドライブを縮小

ここも手順通り。僕はデスクトップ機が70GBくらい使ってるので80GBをubuntuに割り当てましたが、ほんとにwindows使わないので160GBくらい割り当てても良かったかもしれない・・・。ちなみにデスクトップでは個人でpythonの開発とかやってます。他の言語はやってないです。

参考までに、ドライブをいじる前のパーティションを載せときます。

f:id:arark:20190502224023j:plain
直撮りですまない...
下段のディスク1は下で作るUSBです。

3.Ubuntuをダウンロード

どうせ日本語入力するのでJapanese Remix落としましょう。

4.USBをFAT32形式でフォーマット

ここもそのまま

5.UNetbootinでUSBにLiveCDを書き込む

書き込み先を間違えないように。

6.Windowsを再起動してBIOSメニューに入る

MateBook13はF2でBIOSに入れます。ここでUSB以外をDisableにしてUSBから起動するようにしましょう。これは後で戻さなくても普通に動いてます。

7.OSのインストール

ここで注意なのですが、インストールしようとすると、ウィンドウの下が見切れてボタンが押せないのでインストール出来ません。これは解像度が高いからubuntuが自動で2倍に拡大してるためで、「設定>デバイス>ディスプレイ>サイズ調整>100%」を選択すれば普通に戻ります。その代わりめっちゃ文字が小さくなります。まぁ耐えられなければ好きな3:2の解像度を選んでください。

インストールは「それ以外」を選ぶのですが スワップ領域は作らなくていいらしいです。実際僕も作ってないですが2GB確保されてました。 参考:https://kledgeb.blogspot.com/2018/04/ubuntu-1804-bios-2-biospcubuntu-1804.html

後は手順通りのはず。インストールしたらフォルダ名を英語にするのを忘れずに。

Matebook 13を買った。

Matebook 13 を買いました。そもそもの発端は6年間使い続けたASUS x202eが電源入らず、充電もできなくなったことでした。まぁ買った後に電池パックを外してつけなおしてみたら普通に動いたんですが、どちらにしてもメモリ4GB&Ivyのcorei3じゃ動作遅すぎるので、x202eは弟のPC勉強機になりました。軽く使ってみた感想としては感動ですね。画面がきれい、電池が持つ(x202eは1.5hしか持たなかった)、キーが光る、音が良い、手触りが良い。などなど。まだ連休中で家でゴロゴロしてて、持ち出して触れてないから細かいレビューは後で上げます。多分。 ちなみに買って速攻ubuntu入れました。もうWindows触れない・・・。WindowsなしでハイスペノートPCあれば迷わず買ったんだけどなぁ。

新歓をスムーズにしようとしたらめんどくさかった話

最近大学で新歓をしていて、僕は割と熱心に部活をやってるし、特別嫌でもないので新歓代表をしている。

新歓をする際に気をつけていることは2つあって、1つ目がとにかく新入生がわかりやすい情報を提供すること。2つ目が、使えるツールは使って自分たちの負担を減らすこと。

1つ目に関してだがまず情報の提供元を一元化することに努めた。僕の所属しているサイクリング部は競技志向のグループとツーリング志向のグループと、というように内部でいくつかに分かれていて、それぞれが勝手に行動するので行動が統一されていなかった。あるところではtwitterとブログ(excite)、もう一つのところではtwitterとHP(20年前に先輩が自作したもの)、他のところはまた違う。というようにとにかくバラバラだった。1つの部活の中に複数の部活があるようなものだ。

僕はこれをはてなブログtwitterに一元化することを提案した。

はてブロを選んだのにはいくつか理由がある。

はてブロなら1つのアカウントで複数のブログを持てる。それぞれのブログを活動内容に応じて割り当てれば良い。理想を言えばサイクリング部全体でメインドメインをとってサブドメインを使って階層化できれば最善だがそれは出来ないし、まぁ今までに比べればだいぶマシだろうということで妥協した。

それととても大事なのがブログメンバーを設定できることだ。ブログメンバーを使えばアカウントを使いまわす必要はなくなり、将来パスワードを忘れたからログイン出来ないということが起こらない。僕が今までの運用に最も不満を感じていたのはこの点だったからこれが解消できるのは大きい。proで最も注目されないであろうブログメンバー機能だが、僕はこれを実装してくれたはてなに心から感謝したい。

はてなブログは開発が活発で、使用者も多いからわからないことがあれば検索すればすぐに見つかる。デザインを変更したければ管理者の権限を与えてもらって、ドラッグ&ドロップでおしまいだ。テーマを変えれば全体の雰囲気を変えられるし、不満であれば自分で作ることもできる(知識は要るが)。

メリットしかなく、即承認されると思われたこの案だが、意外なことに結構な時間がかかった*1

曰く「OB, OGが前のデザインの方が好きかも」「proが有料なのが気になる」「めんどくさくない?」などなど。積極的な反対意見ではないが、かといって賛成意見では絶対にありえない。思いついただけのような意見だろうけれど、このような意見が第一声としてでてくるのには驚いた。先に述べたような数々のメリットを差し置いて出てくるのがそれか。幸い、ある先輩がバックアップしてくれたし、他の部員も説明すればわかってくれたので、多少強引にすすめることで移行を完了させた。

次に取り組んだのが新歓用の公式LINEアカウントを用意することだ。大学の新歓といえば新入生用のグループを作って、新入生を片っ端からぶち込んでいくのが普通だ。

僕はこれが嫌だった。まず友達欄が汚れる。ミニマリストのように最小に保ちたいわけではないが、新歓で100人も連絡をとらない友達が増えるのは勘弁してほしい。さらに言えばQRを読み込んで、「〇〇くん?新歓グループに入れておくね」の定型句とともにグループへ招待などという非効率極まりないことをしたくなかった。こうやって無理やり招待した新入生の大体が招待を放置するのだから徒労感も増える。

そもそも新入生を招待するために「新歓グルはこれです!」といって新歓に携わる人を1人ずつちまちま招待するのも嫌だ。連絡が不徹底だとグループが複数生まれることもある。

だから僕は公式LINEを作った。これならQRを読み込んでもらえばおしまい。うざいならブロックでおわり。誰の友達欄が汚れるわけでもないし、単純に考えて手間数が圧倒的に少ない。

ただこれも新歓当日になって反対意見が噴出した。ビラに公式LINEのQRコードを載せ、それをLINEグループに流し、反対意見がないから承認されたものと認識していたのが駄目だった。みんなはただ見ていないだけだったのだ。

これには面食らった。主にあった不満は、個別にチャットできないじゃんというもので、これは(意見がでた時点では)そのとおりだ。その後、(仕様のため)"向こうからLINEが来たときのみ"個別チャットが開始できるように設定した。ただこれにも不満も持つ人も少数いた。

その他の意見も確かあったはずだがよく思い出せない。確かにと思う意見もあれば、いちゃもんかよと思うものまであった。ただそれは事前に言っておいてほしかった。まぁこれは僕が「反対意見がないなら賛成かな」と高をくくって説明を怠ったのも原因としては大きい。

他にも、サイクリング部全体LINEが無いため、僕が毎回4つぐらいのグループに新歓予定を送っていたので、全体LINEを作ろうとしたらこれまた文句を言われたり。LINEに子グループを作る機能があれば理想的だった。slackにならこういう機能があるのかも知れないが、あいにく大学生が一般的に使うようなSNSではない。

僕はサイクリングが好きだから他にもやりたいことはいっぱいある。会計の透明化、口座の一元化(今は分かれている)、放置されているゴミの整理、乱立する役職の削減と仕事内容の明確化、できればブログのコンテンツ化&収益化などなど絶対にメリットになることだと僕は確信しているが、新歓だけでこれだけ面倒くさいとなると正直ためらってしまう。

*1:exciteブログにエクスポート機能がない、自作HPからスクレイピングしないといけないなどの問題もあったが、それは置いておく

django で自分で作ったファイルをダウンロードさせる

どういうときの話?

例えばユーザーの入力によって動的にファイルを作り、そのファイルをModelのデータベースに保存1させつつ、ユーザーにダウンロードさせたいとき

下準備

# @settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'

参考

設定 | Django documentation | Django

Djangoで、ファイルダウンロード | NARITO BLOG

スラッシュの過不足があったりするとエラーが出るので注意。

# @urls.py
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

これはユーザーだけじゃなくて、自分でアップロードする場合にも必要。これは開発時の設定なので注意

参考

静的ファイル (画像、JavaScript、CSS など) を管理する | Django documentation | Django

# @models.py
from django.db import models

class FileModel(models.Model):
    file = models.FileField(upload_to='files/')

足りない所は想像力で補ってください。

ファイルをModelに保存する

from django.core.files.base import ContentFile
from .models import FileModel

string = 'this is sample file content'
myfile = FileModel()
content = ContentFile(string)
myfile.file.save('file_name', content)

参考

モデルフィールドリファレンス | Django documentation | Django

こうするとDBに登録されるのでフィルターとかソートとかして取り出せる(はず)。

同名のファイル名で上書きすると、suffixが付いたファイルが新たに作成されて、そちらがDBの指すファイルの実体となる。もとのファイルが削除されるわけではない。

html側は、

<a href="{{ uploadfile.file.url }}" download="{{ uploadfile.file.name }}">{{ uploadfile }}</a>

のようにdwonload属性を使うのが手軽でいいと思う。

参考 

Djangoで、ファイルダウンロード | NARITO BLOG


  1. この言い方は正しくないが

俺的python初学者学習フロー

これはなに?

python流行ってる。俺もdeep learningにつられてpython触った。ついでにいうとそれがきっかけで大学も決めた。で、初心者がpython触っても文法覚えるトコまでは行けるけどその後がどうにも繋がんないと思う。このあと何やったらいいんだろう・・・ってなる。そんな人に向けて書く俺的指針。 ただここに書く流れは今振り返って理想的だと思う流れを書いたのであって、別に他の分野やってフラフラしてもいいと思う。結局下に書く知識は必要になるので、そういう経験してモチベあげるとかも全然あり。というか俺がそうだった。

あなたは誰?

情報系の学部一年生。まぁ俺も初心者で全然業務で使ってるとかじゃないんで、「新入社員100人を教えてわかったpythonの学習法!」とかそんな大したもんじゃなくて、つまりはこの記事に特に信憑性はない。ちなみに1つだけpythonのパッケージ作りました。使ってやってください・・・ github.com

はじめの一歩

とりあえず入門書を買ってやりきれ。間違っても 分厚い蛇の本買ってはいけない。俺はこれで勉強したけどまぁ人気あるのならなんでも良いんじゃないかな。とりあえず文法を知らないことには話にならない。

文法を覚えたらLinuxをやれ

ここで残念なお知らせなんだけど、pythonを覚えただけじゃpythonで開発できるようにはならない。 「Web系に興味があるからDjangoでもやってみようかな〜〜」とかほざいてる君。1000000%ドキュメント読めないので諦めよう。俺がそうだった。

次に進むためにはlinuxを使えるようになろう。「おれはpythonがやりたいんであってlinuxじゃない!」「pythonの上にlinuxは無理」などなど言いたいことは沢山あるのはわかる。でもしょうがないじゃないか。こればっかりはどうしようもない。だって大体のpythonのドキュメントがlinux前提で書かれているんだもの。

たとえばこれ読めるか?

Python インタプリタは、それが使えるマシン上では通常 /usr/local/bin/python3.7 としてインストールされています; Unix シェルの検索パスに /usr/local/bin を入れることによって、次のコマンドをタイプしてインタプリタを開始することができます

$ python3.7

出典: https://docs.python.org/ja/3/tutorial/interpreter.html#using-the-python-interpreter

linuxの勉強してなかったらわかんないと思う。公式ドキュメントとかこんなんばっかだから。諦めてlinux勉強しよう。

参考図書は例によってなんでも良いんだけど一応言っておくと俺が読んだのはこれ

まじで教科書みたいに全部書いてあって、あとで説明するけどGitの使い方とかもあってとても良かった。

Windowsを使ってる人、windowspythonは無理なのですぐに窓から投げ捨てよう。Linuxのコマンドが一つも使えないから。

Macは知らんがまぁある程度応用が効きそうだと言う話は聞く。でも初心者がいきなり応用しようとするな。Linuxを入れろ。

仮想環境

Linuxやったら今度は仮想環境を使える様になる必要がある。 Ubuntu環境のPython - python.jp

ここがとてもわかり易く解説してくれている。ちなみにvirtulaenvやらpyvenvやら仮想環境を作るツールは色々出てるけど、venvが標準なのでおとなしくvenvを使うと良い。

Anacondaは初学者がとりあえず文法を触ってみたいというときには大いにあり。ただその後に仮想環境とか使って開発しようとするとAnacondaじゃ必ず躓くのでそうなったらアンインストールするといい。俺もそうだった。

pipとcondaは全くの別なので、あれ?このパッケージ入れたけどimport出来ないぞ?あ、condaでインストールしてたわみたいなことが起こる。

仮想環境使うと試しに触ってみたけどなんか全然使えねぇわみたいなパッケージを気兼ねなく削除することができる。

Gitを使う

使えないと話にならない。大体のパッケージはGithubで公開されてるのでGitとgithubの使い方がわかんないとどうしようもない。やれ。

公式ドキュメントを読めるようになる

次に公式ドキュメントを読める様にならなきゃいけない。Qiitaだったりブログだったりはざっと目を通すには良いが、その正確性だとか網羅性とかは信用してはいけない。結局公式ドキュメントを読むことになる。俺はいつの間にか読めるようになってた。多分上述の分野の勉強した後から読めるようになったんじゃないかと思う。

あと日本語なんてマイナー言語はどのドキュメントにも使われてない(相当でかいプロジェクトにしか邦訳はない)ので英語は必須。

もう君はpythonで開発ができる

ここまでやってようやく個人で開発ができる。作ったプログラムを配布したい? Python Packaging User Guide — Python Packaging User Guideを読もう。君ならもう読める。BeautifulSoupでスクレイピングがしたい? kondou.com - Beautiful Soup 4.2.0 Doc. 日本語訳 (2013-11-19最終更新)を読もう。コマンドを自分で作りたい? Argparse チュートリアル — Python 3.7.3 ドキュメントを読もう。

加えて読んでおいたほうが良い本

pythonプロフェッショナルプログラミングはできれば読んでおいたほうがいい。

これはグループで開発する際のノウハウを主に書いた本だけど、個人でも使えるところは多いし、そもそも自分で使うパッケージが会社で開発されたものだったりすることが多いので読んでおいて損にはならない。

最後のほうとかめんどいので適当になったけど許して

migrate-exblog 2.0.0をリリースしました

github.com

知らない人向けに説明すると、これはエキサイトブログにははてなブログのようなエクスポート機能が無いので、スクレイプして他のブログに移行できる形式に変換するプログラムです。

今までの、単体テストも無くて、パラメータの設定の仕方も気持ち悪い仕様から大幅に変更しました。

今まで全部の投稿をとってくるのに、/m2005-01-01みたいな月ごとの投稿一覧ページを全部試してとってきてたんですけど、なんと/m1900-01-01/に全ての月ごとのアーカイブページのリストがあったんで、そこからとってくるようにしました。このおかけでだいぶ高速化できました。あ、ちなみに一回サーバーにリスエスト送ったら0.5秒休むようにしてます。

これで大体開発終了ですかね。まぁカード型のデザインとか、独特なスキン使ってるとエラー出るんですけど、正直使う人もいないしそこまでやってもなって感じです。

今後は勉強のためにdjangoでWebアプリ化でもしてみようかなと思います。

ほんとにこの開発を通じて良い経験になりました。使ってもらえるのが一番うれしいけどどうしたら有名になるんだろうか。宣伝?

pythonプロフェッショナルプログラミングを(大体)読んだ

読んだ。kindleで買ったら800円くらいポイントが付いてきたのでラッキー。

個人開発で限界を感じてる人におすすめ。

Pythonプロフェッショナルプログラミング 第3版

Pythonプロフェッショナルプログラミング 第3版

最近個人で開発しているが、pythonのパッケージ化とか、開発のお作法とか、テストの書き方とか、gitの使い方とか、なんにもわからなかったので買ったけどほんとに欲しいものが書いてあった。

前も調べたことが合ったんだけど、その時は旧版で、gitじゃなくてmercurialとかちょこちょこ微妙なトコが合ったが、改訂してからはgitになったのでとても使いやすくなった。

入門書みたいに、listのメソッドにはsortやappendなどがあって〜〜と全部書いている訳じゃないのが特に良かった。こういう機能があって、こういうように運用するといいですよ。詳しくはドキュメント見てくださいね。さっきの例えで言うとlist型があって、一気に値を保持できますよ。こういうときに使うと良くて、詳しいメソッドはドキュメントをみてね。みたいな。

こういう体裁を採ってるおかげで、実際に開発で使うときのノウハウが沢山載ってるのがとても良い。詳しいとこまで全部説明してたらいくら紙面があってもたりないしね。

一番重点的に読んだのはパッケージ化の所。ちょうどやりたかったしね。次点でテストかな。逆にチケット管理とか、チームで開発するときに重要になるようなところは流し読みしただけ。内容が濃いのでこの本を全部マスターすれば結構すごいプログラマになるんじゃないか?え?ならない?そう・・・

次はテストの実装とか、djangoを使ったwebアプリ化とかをやってみる。