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

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

mezzanineのチュートリアル"A Mezzanine Tutorial, Take 2"の覚書

最近python製のCMS(wordpressみたいなもの)である"mezzanine"を勉強してた。日本語での情報が少ないので

Docs / Mezzanine / A Mezzanine Tutorial, Take 2 | Rod's Tech

このサイトを参考にしてたんだけど、解説不足や(おそらく)アップデートで現状に即して無いところがみつかったので気づいたところをかいてく。一通り読んだけど自分自身まだ全然mezzanineについてわかってないので参考程度に読んでください。

元サイトがやってることの流れ(多分)

俺はあまり英語読みたくないので必要なところだけ読もうとしたけど、前のpartで言ったこと使ったりするので同じことすると躓くとおもいます。 

part1

mezzanineのインストール。ブログの投稿ページをMarkdown記法で書けるようにする。

part2

ブログ記事内でコードハイライトを適用する。要らないと思ってここを飛ばすと後でわかんなくなる。(実体験)

part3

デフォルトのページをカスタムする。

part4

新しいページを作る。adminにmodelを追加する。ココらへんから俺の手に負えなくなってきたので覚書がなくなる。

part1

Pagedown, a Mezzanine Markdown Package

#####################
# PAGEDOWN SETTINGS #
#####################
RICHTEXT_WIDGET_CLASS = 'mezzanine_pagedown.widgets.PageDownWidget'
RICHTEXT_FILTER = 'mezzanine_pagedown.filters.custom'
RICHTEXT_FILTERS = (RICHTEXT_FILTER,)
PAGEDOWN_MARKDOWN_EXTENSIONS = ('extra','codehilite','toc')
RICHTEXT_FILTER_LEVEL = 3
PAGEDOWN_SERVER_SIDE_PREVIEW = True

をsettings.pyに追加する際、「RICHTEXT_FILTERSを変な書き方してるのはバグで、たぶん今は治ってると思うよ」と筆者は書いてるけど自分が試したところでは多分治ってないのでそのままコピペしてください。

urlpatterns = patterns("",
("^pagedown/", include(mezzanine_pagedown.urls)),

を置き換えろとあるが、このコードはアプデのせいかもう存在してないので20行目あたりにある

urlpatterns = i18n_patterns(
    # Change the admin prefix here to use an alternate URL for the
    # admin interface, which would be marginally more secure.
    url("^admin/", include(admin.site.urls)),
)

urlpatterns = i18n_patterns(
    # Change the admin prefix here to use an alternate URL for th
    # admin interface, which would be marginally more secure.
    url("^admin/", include(admin.site.urls)),
    url("^pagedown/", include(mezzanine_pagedown.urls)),
)

に置き換える。

part2

Generate Pygments css

python manage.py pygments_styles はエラー出るので python manage.py pygments_styles -h を使う。

python manage.py pygments_styles colorfulもエラーなので python manage.py pygments_styles --scheme colorfulを使う。このコマンドはCSSコードを生成するけど、それをどこに置くかが下の段落に書いてある。

part3

SEARCH_MODEL_CHOICES = []

はsettings.pyのどこかに書く。

Remove Left and Bottom Menus

{% page_menu "pages/menus/tree.html" %} はbase.html の106行目

{% page_menu "pages/menus/footer.html" %}はbase.htmlの135行目

<div class="span2 left">
to

<div class="span1 left">
and

<div class="span7 middle">
to

<div class="span8 middle">

とあるが検索かけてもこの部分がみつからなかったのでアプデで消えたと思われる。あとそもそもbody.htmlが消えてbase.htmlに統合されているので注意。おそらく上のdivタグは <div class="col-md-3 right"> にまとめられてて、実際ここのdivタグを全部取り除くと下の枠が消えるんだけど、これが良い方法なのかはわからん。

Make Home Page CMS Editable

"mezzanine.pages.views.page"

を""で囲むのを忘れないように。警告がでるので気になる人は一番上でimport mazzanineとでもすればいい。

While we're mucking with pages in the admin, clean out pages you don't want.

これはadmin>Pagesからできる。

以降は気が向いたら書く。何年後になるかは知らない。

part4

通勤・通学で疲れているあなたに贈るサイクルライフ

  自転車通学に変えて2年ぐらいたって、電車通学のつらさと自転車のすばらしさに気づいたので布教する。車でいいじゃんとか言うのは受け付けない。車使える人はそっちの方がいいんじゃないかな。

気づいてないかもしれないけど電車通勤は疲れる

  通勤といえば電車という固定観念を持ちがちなので他の手段を検討することなんてないと思うけど電車通勤は本当に疲れる。頻出する階段に、たちっぱなしの満員電車。雨が降れば濡れた傘を常に気にしなくてはいけない。弄りたくもないスマホをいじって時間を潰そうものなら目の疲れと首への負担によってお前は死ぬ。

 思い出してほしい。会社や学校に着く前にすでにあなたは疲れていないだろうか。

おはしますは自転車

 その点自転車は非常に楽だ。何と言ったって基本座っていられる。これは大きい。いや漕いでるじゃねえかと言う人がいるかもしれない。自転車にあまり乗ってない人はわからないかもしれないけど電車で立ちっぱよりはだいぶ楽だ。

 自転車っていうのは自分のペースで漕ぐことができるから電車よりは疲れにくいと思う。思うに電車の疲れって 周りに合わせないといけないことによる所が大きいんじゃないか。電車内では迷惑にならない場所を確保して、乗り換えでは急がないといけないとか。

 しかもいくら自分が電車通勤に労力を払っても電車が早くなるわけじゃないからこれらの努力が徒労に思えてしまう。

 その点自転車なら自分が疲れた分だけ早く目的地に着くし、漕ぐことだけに集中すればいいから精神的につかれることはあんまりない。

ルートによっては自転車の方が早い

 いくら疲れにくいといっても遅かったらあまり自転車を選ぶメリットはないかもしれない。朝の5分は夜の1時間に匹敵するのは周知の事実である。ただルートによっては自転車の方が早いこともある。参考までに自分の例を挙げる。

 俺が電車で大学まで通学すると井の頭→東横→大井町線というように乗り換え2回、50~60分の時間がかかる。

 一方自転車通学ではここ10回の平均をとると約27分(距離は8.5km)である。俺は部活で自転車をやっているから多少早いとしてもまぁあと10分あれば絶対につく。市街地では信号が多いから体力差があってもそんなに時間差はつかない。

 部活の同期はたまに20kmの距離を練習を兼ねて自転車で通学してくるけど、かかる時間は電車とあまり変わらないらしい。

 自転車=遅い、と思ってる人も多いだろうけどそんなことはない。全く参考にならないけど一応言っておくと、プロは50km/hで一時間走る。自転車はどうせ遅いから検討もしないというのはもったいない。

ダメなところもある

 もちろん自転車が電車の完全上位互換ってわけじゃない。雨が降ったら自転車は使えないし、夏は汗だらだらで、冬は耳が痛い。会社や学校に自転車置き場がなかったら探さないといけない。とはいえ、自分で対策ができるものもある。夏は着替えをバッグに入れて運動着で行って、制汗シートで汗をふけばいいし、冬は耳当てやスポーツレギンスなどで対応できる。雨の時はレインコートを着ていけば良い。

 嫌なら別に無理して自転車で行く必要はない。電車を使ったっていいのだ。使い分けできるのが自転車のいいところだ。

自転車通勤の注意点

 自転車通勤をするうえで注意点がある。

 まず第一にちゃんと自転車の整備をすること。さびまくりのチェーンに、ろくに空気を入れていないタイヤではいくらペダルを踏んでも進まない。タイヤに空気を入れて、チェーンに油をさすのは必須。サドルを上げると力が入りやすいのでサドルを上げるのもおすすめ。

 また、距離が短ければシティサイクル(ママチャリ)でもいいけど更に速く移動したいんだったらスポーツ自転車を買ったほうがいい。ちなみに「かっこいい自転車=マウンテンバイク」みたいな認識が広まってるけどほんとはロードバイクとかクロスバイクとか呼ぶのが正しい。

 スポーツ自転車ではかごがない代わりに、シティサイクルより格段に速い。有名どころではGIOS社のMISTRALとか、GIANT社のESCAPEとかがある。どっちも4~5万ぐらいでちょっと高いが速度を求めるなら払う価値はある。

 なんで早いかっていうと、いろいろ理由はあるけど重量が軽い。ギアが多いので上り坂ではより軽く、下り坂ではよりスピードを出せる。サドルが高いから力が入りやすい。かごがないので空気抵抗が小さい。などがある。

 話がそれたけど第二の注意点としては交通法を遵守すること。

  • 自転車は基本車道。(左側通行
  • 交差点では二段階右折。(右車線にはいかない)
  • 車両扱いだから信号では必ず止まる
  • スピード出すならヘルメット推奨

を守ってほしい。

(守ってない人が多すぎる!)

かっこいい

https://www.cannondale.com/~/media/Images/Dorel/Products/Bikes/C11119M/Variants/C11119M3047/images/C19_C11119M_SystemSixHM_DA_Di2_BBQ_HERO.ashx?mw=1000

http://www.riogrande.co.jp/pinarello_opera/pinarello2018/images/racing/P17_DOGMAF10_167_002.jpg

http://www.japan.bianchi.com/images/bike_list/19-Oltre-XR4-Disc-Dura-Ace-Di2-1D.jpg


かっこいい

ロードバイクのシフトワイヤーを変えたけども

 先日自転車に乗っていたら、唐突にワイヤーが切れた。その時は一緒に走っていた先輩の応急処置のおかげで一応家に帰ることはできた。先輩がいなかったらトップ固定で帰ることになっていたかと思うと怖い。

 で、せっかくパーツを変えるので、いいものにしようと思って少し良いケーブルセットを買った(自転車乗りあるある)。ケーブルのグレードは、ポリマーコーティング>オプティスリック>ノーマル となっているらしい。  ポリマーコーティングはすぐ剥がれるらしいので却下して、オプティスリックのを買った。ちょうどさっきの先輩もシフトワイヤーをノーマルグレードのケーブルに変えるのでシフトの軽さを比べてみた。

 結果は・・・「大差なし」。俺からすると自分のほうがちょっと軽いかなと思ったけど先輩は自分のが軽いと言い張っている。まぁどうせシフトの軽さが結果につながるようなレースに出るわけでもないので何でもいいんじゃねという結論になった。

zwiftはいいぞ

 最近zwiftを始めた。どっかにパワーメーターねえかなーと思って先輩に聞いたところ部室にパワータップ付きのホイールが2つ転がってるらしいのでそれを使う。フリーボディがめっちゃ削れてたりリムがブレーキするの怖いほど削れてたり、スプロケなかったり、付いててもスプロケの位置ずれててディレイラーの調子が悪くなったりしたが、フリーボディはこれまた部室に転がってた新しい奴に交換して、リムはローラーしかしないので放置して、スプロケは同期からいらなくなったのを譲ってもらった。 

 で、ここ3日ぐらいやってみたんだけどほんと効率よくトレーニングできる。いつも公道で練習してたけど、日本特有の自動車が通ることしか考えられていないやたら細い道路とか、サイクリングロードを蛇行しながら走るおじいちゃんとか、急に車線変更するタクシーとか、狙ったかのように赤になる信号など、ストレスしかなかった。  その点zwiftは部室で練習できて、実走練みたいに練習場所に行く必要がない。しかもパワーという絶対的な指標があるからどれくらい追い込めているのかすぐわかる。感覚でやってると甘えが出てくるし、速度は環境で大きくかわるのであんまり参考にならない。ローラーで練習するので例えば「20分全力で漕ぐ」などの公道ではできない練習もできる。

 zwiftのいいところはトレーニングメニューがいっぱいあって、選べば自動でトレーニングを始めてくれるところ。自分でメニューを決めるのはめんどくさいし、「ちょっときつくしすぎたかも。1セット省略しよう」とか甘えることがない。指示通りに漕げばいいので、今まで測る機会のなかったFTPを計測できた。FTPの測り方を調べるのもめんどくさいし、計測前の5分全速力ってどんくらいだよ力尽きるわとかいう心配がない。zwift内のコースを好きに走れるモードもあるみたいだけどそれはやってないからわからん。

 ただパワーメーターがないと始められないのはやっぱりハードルが高いと思う。俺は部室にあったからよかったけど。これからはほとんどzwiftで練習することになりそう。マジで日本は自転車走りづらすぎるんだよ。  

pythonのエディタをatomに決めたので経緯と設定方法を書く

 最近(やっと)プログラムを書こうと思い立って、環境設定が楽なubuntuで色々試してたけど、エディタでかなり詰まったので自分なりの結論を残しておく。

 まず試したのがpycharm 。最強のpythonエディタとの誉れ高いが率直に言って機能と設定が多すぎた。新しいファイル一つ作るのに10分調べないといけない(しかもわかんない)とかもう無理。こちとらvirtualenvもgitもマニュアル見ながら使っとんのやぞ。知らない単語ばっか出されてもわかるわけないだろ!仕事でpython使っててgitとかvenvとか・・・他の例が出てこないけど、そういうツールを大体使える人には便利なんだろうけど初学者にとっては高機能過ぎて扱いにくい。あと仕事で使うような機能が多くて、余計分かりづらい。こりゃまいったということでシンプルなエディタを探した。

があればいい。ほんとgit連携とか自動venv生成とか要らんから。自分でやらせてくれ。

 で、次に見つけたのがatomgithubが開発してて、どうもプラグインを入れることで機能を拡張できるらしい。これならどんな機能があるのか把握できるし、無駄な機能(使えないだけとも言う)がはいってない。で、atompythonを書くときにあったほうがいいプラグインがあるらしいけどいっぱいあってめんどくさいのでシェルスクリプトにした。インストールするプラグインは以下の記事を参考にした。最後の2つ('atom-runner' と'platformio-ide-terminal')は自分で必要だと思ったので追加した。 qiita.com

#!/bin/bash
packages=('atom-beauty' 'autocomplete-paths' 'autocomplete-python' 'busy-signal' 'file-icons' 
'highlight-selected' 'Hydrogen' 'intentions' 'japanese-menu' 'linter' 'linter-flake8' 
'linter-ui-default' 'minimap' 'minimap-cursorline' 'minimap-find-and-replace' 'minimap-highlight-selected'
'project-manager' 'script' 'atom-runner' 'platformio-ide-terminal')

for i in "${packages[@]}"
do
    apm install $i
done

これを適当なファイルに書き込んで、

sudo bash <ファイル名>

で実行できる。

 なんかatom-beauty とhydrogenはデフォルトでインストール済みなせいかエラーが出た。だめだったら手動でインスコしてください。ちょっとコードを書こうとすると"error runnig flake8"って出てきて鬱陶しいけどこれはPC自体にflake8が入ってないかららしい。

pip install flake8

で入れてください。

 あとタイトルで「atomに決めた」とか書いたけど実はまだatomそんな触ってないのであとで変えるかもしれない。

GTX1050tiを買った

 PCを自作するとき保留しておいたグラボを買いました。予算的には1080まで買えたけど、どうせ使いこなせないのと、ロードバイクのホイールも欲しいので1050tiにした。玄人志向の。

 ちなみにやってるゲームはworld of tanks(wot)のみ。1050tiじゃちょっとスペックたりないかなって思ったけど全然そんなことない。HDのウルトラ設定で60fpsでる。まったく不満はない。グラフィックの設定で忘れないでほしいのが垂直同期を有効にすること。これをしないとテアリング(画面の上下で画面が断層みたいにずれること)が発生してめっちゃ目に付く。トリプルバッファは知らん。とりあえず有効にしとけ。

 今まで低設定でやってたしPS2レベルの画質(さすがに言いすぎかも)から卒業できたのはいいことなんだけど、なんか画質に満足しちゃったんだよなー。前ほどゲーム楽しめないっていうか。まぁここら辺は気分だしそのうち治るでしょ。

  あ、そうそう。グラボ買って取り付けるときやべえ!メモリと干渉するかもしれねえ!micro ATXにするんじゃなかったわクソが。とか思って結構慌てたけどなんかメモリとグラボは干渉しないようにできてるらしい。なので全然micro ATXでいいです。問題になるのはケースの大きさのみ。

 グラボ選びではクッソ時間かけて選んだわけだけど結局最初によさげだと思っていた1050tiに戻ってきてしまった。くそ時間かけて選んだ俺からのアドバイスとしては値段が下がってたらRX570も候補に入れとくといいとおもいます。俺は買おうとしたときに急に値段跳ね上がったので買わなかった。

 つーかお前TDP75Wってなんだよ...。せっかく550WGoldの電源買ってきたのに全然いみねぇじゃねえか。もう少し電気食えや。この点RX570は150Wなのでうれしい。

 まぁ唯一の不満点としては光らないこと。光らないとPCの中身が見えないだろぉ??

 せっかくグラボ買ったので3Dプログラミングでもやっていこうと思います。(やらない)

djangoチュートリアル その3、その4

その3は正直言うことない。

ただurls.pyにnamespacceを追加して逆引きでURLを指定するときに'namespace: name'ってコロンで区切るのを忘れることが多いのでモジュールのインポートと同じように . で区切ればよかったんじゃないだろうか。



その4

汎用ビューが難しい。


def detail(request, question_id):
    question = get_object_or_404(Question, pk=question_id)
    return render(request, 'polls/detail.html', {'question': question})

class DetailView(generic.DetailView):
    model = Question
    template_name = 'polls/detail.html'

detail関数とDetailView.as_view()は同じ働きをする。クラスビューはデフォルトの動作が細かく設定されていて、それを上書きすることで使う感じ。DetailViewが指定してないのに{'question':question}って変数を使ってテンプレートをレンダリングできるのはそれがデフォルトの動作だから。これを変えるにはcontext_object_name='hoge'と上書きすればいい。
GETとPOSTで動作を変えることもできる。

class MyView(View):

    def get(self, request, *args, **kwargs):

    def post(self, request, *args, **kwargs):

って書けば

if request.method == 'GET' .....

とやっていたのを省略できる。

1ページで複数のオブジェクトの内容を表示したい(例えば作家一覧と、その作家が書いた小説一覧など)のに汎用ビューじゃ1つしかmodelを設定できないじゃないかと思った人もいるかもしれない。そんなときはget_context_dataメソッドを上書きすればいい。

def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super().get_context_data(**kwargs)
        # Add in a QuerySet of all the books
        context['book_list'] = Book.objects.all()
        return context

この例ではmodel = Fuga と指定したのに加えて他の変数(book_list)を指定してる。

django2.xになってチュートリアルが変わって、フォームの章がないのと、今後はあんまり関係なさそうなのでいったんここで終了します。

linuxでpycharmをターミナルから簡単に起動できるようにする

pycharmインストールしたはいいけど毎回pycharm.shを叩きに行くのが面倒なのでシンボリックリンクをつくる。環境変数に追加してもいいけどスマートじゃないので却下。

 

pycharmをダウンロードしたディレクトリを{install directory}とすると、

{install directory}/pycharm-community-(バージョン)/bin/pycharm.sh #これをpycdirとする

に起動するためのシェルスクリプトがあるので

ln -s $pycdir /usr/bin/pycharm

でリンクが貼れる。こうすれば

pycharm

で起動できる。

「新しいLinuxの教科書」を読んだ

 

新しいLinuxの教科書

新しいLinuxの教科書

 

  PCを自作して、OS代をケチってubuntuにしたはいいがわからないこと多すぎるのと、プログラミングするんだったらやっておいて損はないだろうってことでlinuxを勉強した。

 内容はちゃんと初心者向けで、分量、内容ともにちょうど良かったと思う。ほんとに教科書。まぁこの本に書いてあること以外知らんけど。技術書は「入門」と書いてあっても入門できなかったりするがこれはちゃんとできた。

 個人的にはvimの使い方とか、基本的なコマンドとか、bashの操作とか、gitの復習とかできてためになった。Qiitaよんでて#!/bin/bashってなんだよとか憤ってたのがなくなるのは嬉しい。

 文字列処理の方法が色々紹介されていたけどsedとかawkとかつかうならpython使うかなーと思ってあんま真面目に読んでない。まぁpythonも使えないんですが。

 色々やっては挫折した身としては最初からこれ読んどきゃよかったという思いが強い。「入門サイトで十分でしょ」とか思ってたけどやっぱ本とサイトじゃ違うわ。色々やって途中で挫折してたからこそこの本快適に読めたってのはあるかもしれない。

 タイトルにもあるとおり一通り読んだだけなので「これやって〜」とか言われてもできない。プログラミングあるあるの、読めるけど書けない状態と一緒。でもまぁ俺の目的は書けることじゃなくて文献を読めることだからOK。linux読めないと本題にすらたどり着けないことが多々あったので。

 これからはずっと停滞していたdjangoの勉強を再開したい。はやく自分で一つプロダクト作りてぇよ。あ、blenderもやりたい。

パソコンを自作した。

 いい加減今まで使っていたノートPC(x202e)のスペックが低すぎてストレスしか感じなくなってきた*1のでパソコンを自作することにした。

 希望としては以下

  • ubuntuの使い勝手がかなりいいのでwindowsはいらない。
  • 将来グラボつける余地を残したいので電源はいいやつ。
  • グラボつけてゲームするときのことを考えてcpuはケチらないでi5-8400
  • ATXはでかすぎるのでmicro-ATX
  • もちろんSSD。あわよくばNVMe

という感じで決めて秋葉原に行った。

cpuはryzen5 2400Gと迷ったけど、2400Gの性能じゃ大型タイトルするには力不足だし、GPUつけるとしてもCPUが貧弱。ってことでi5にした。ほんとはソケットバンバン変えるintelなんて使いたくなかったけどまぁしょうがない。

 事前に価格.comで軽く見積もって行ったところ、5.7万円くらいだった。が、初心者が知識ないのに通販で買うのは不安なので、多少高くなってもいいから経験者に教えてもらおうと思ってアキバまで行ってきた。

 アキバでPCパーツ売ってるところはだいたい自作PCの見積もりもやってくれるので何店かで見積もってもらうのが吉。

俺は ドスパラ×1店・ツクモ×2店で見積もってもらったんだけど、構成と値段に納得できたツクモで買うことにした。諸々の保証込みでお値段6.3万円

 構成は

  • cpu: i5-8400 2万
  • メモリ: curucial 8GB 1万
  • 電源: Antec 550W Gold 6500円
  • SSD: 960 EVO 9300円
  • マザー: gigabyteのH370M D3H 9000円
  • ケース: 安いやつthermaltake H18 3500円
  • +消費税と電源・マザーの保証

なんか電源が特価やってて550WでGoldなのに6500円だった。あと960EVOが型落ちってことでやすかった(らしい)。価格.comと比べたらちょっと割高だけど保証の内容も充実してるし、経験者に選んでもらってるから間違いがないので全然払う価値はあると思う。

 パソコンの組み立ては初めてだし、ここで壊したらまた金と時間がかかる・・・と思ってビクビクやってた。

自作パソコンの組立て方 | パソコン工房【公式通販】

このサイトを見ながらやった。

 組み立ててるときにめっちや困ったのが、ケースのフロントパネルから出てるコネクタが色々複雑だったこと。

 まず極性のあるピンなのにケーブルに色がついてないからどっちが+極なのかわからない。よく見たら▲印がついてたのでggると▲がある方が+だと判明。ほんとに合ってるか不安だったけどあってたらしい。

 あとLEDってシールが貼ってあるでかいコネクタがあったんだけどどう見てもマザボにさすところはないので放置した。なんとかなった。

 で、組み上げたのはいいがキーボードがbluetoothしかないってことで翌日USBキーボードを買ってきた。

 緊張しながら電源つけるとbiosが起動。めっちゃ嬉しかった。

 ubuntuのインストールも簡単で、ドライバがない!とかで詰まることもなかった。やっぱubuntu使いやすいわ。

 システムモニタを見てみるとちゃんと6コアあるし、メモリも8GBある。いやーいいね。

 youtubeをみてみたりしてみたけどまったくのストレスフリー。買ってよかった。

 ちなみにminecraft 32チャンクで最低30fpsでてた。場面によっては60fps。

 あとSSDの速度だけど、ubuntuだとcrystaldiskがないので

fio -filename=/tmp/test2g -direct=1 -rw=read -bs=4k -size=2G -numjobs=64 -runtime=10 -group_reporting -name=file1

 で簡単に計測したところ1850MB/sだった。なんか公称値の3000MB/sより遅いけど十分早いし治すのもめんどくさいしこのままでいいや。

*1:youtubeの60fpsの動画が見れない。音楽流しながらネットサーフィンができない。pycharmの起動が遅い等々