PyCharm で Django はじめに

https://docs.djangoproject.com/ja/2.1/intro/
こちらに沿って進めてみようと思います。

PyCharm を起動します。

プロジェクト名を mysite として、Python 3.7 を指定して作りました。

プロジェクトが作られた後に右上にある再生ボタンを押すと、早速起動します。

ブラウザからも開けました。

これでまずは開発できるようになったということですね。

PyCharm の設定で、Toolbar も表示しておくようにするのが好みです。

こんな感じになりました。アップロード用にちょっと幅や高さを小さくしています。

caps キーを ctrl に変更

Fedora28 で caps キーを ctrl にする設定。忘れるのでメモ。

Lenovo 720S に Fedora 28 をインストール

インストール USB の作成 を参考にして、MacでUSBメモリに書き込み。

作成したUSBメモリをノートパソコンに挿して、「Windowsの設定」→「更新とセキュリティ」→「回復」→「今すぐ再起動」で再起動。

「オプションの選択」の画面になるので、「デバイスの使用」→「EFI USB Device」を選択して起動。
「system doesn’t have any USB boot option」 のエラーになってしまいましたが、
Boot Option Menu が開いたときに「Windows Boot Manager」ではないほうを選択して起動することで、
無事 Fedora28 のインストーラが起動しました。

あとは普通にインストールしていきます。SSDのパーティションは全部消しました。

無事インストール終了。Mac と使い勝手は違いますが、慣れていこうと思います。

その後はハードウェアの設定を変えるには右側の NOVO ボタンを押す必要があります。
小さい穴になっているので、クリップなどで押すと昔の BIOS 画面のような感じで起動します。

  • Secure Boot を disabled に変更
  • Intel Virtual Technology を enabled に変更

これらの2ヶ所を変更することで、VirtualBox が使えるようになりました。
他にもあれこれ使ってみてはいますが、いまのところ他に変える必要がある項目はなさそうです。

Lenovo Ideapad 720S を買いました

ずっとノートパソコンが欲しいと思っていてしばらく検討していましたが、Lenovo Ideapad 720S を買いました。99,922円。

こんな仕様です。

プロセッサー
インテル Core i5-8250U プロセッサー ( 1.60GHz 2400MHz 6MB )
初期導入OS
Windows 10 Home 64 bit
ディスプレイ
13.3″FHD IPS 光沢なしLEDバックライト 1920×1080
メモリー
8.0GB PC4-19200 DDR4 (オンボード) 2400MHz
ストレージ1
256GB SSD
標準保証
1年間 引き取り修理
ACアダプター
45W
Office ソフトウエア
なし
グラフィックス
CPU内蔵(インテル UHD グラフィックス 620)
バッテリー
4セル リチウムイオンポリマーバッテリー
Bluetooth
Bluetooth Version 4.1
指紋センサー
あり
ワイヤレス
IEEE 802.11 ac/a/b/g/n ワイヤレスLAN (WiFi準拠)

1.2kg以下で軽いことと、メモリが8GBあることを条件に検討していました。
予算はオーバーしましたが、思い切って買ったので長く使えるといいなと思っています。

Windows は早速消して、Fedora を入れる予定です。

初期セットアップが終わり、回復ドライブを作っています。
「回復ドライブの作成」をコントロールパネルから呼び出して、16GBのUSBメモリを挿して作成します。

古いUSBメモリなので遅く、作り終わるのに30分くらいかかりました。

Mac でディスクイメージとして保存しておきます。これでいつ初期化したくなっても大丈夫。

戻したくなったときは、ディスクユーティリティでディスクイメージを読み込み、USBメモリを挿して「復元」します。

実際に回復することになったらこちらを参照します。昔のノートパソコンのBIOSとは違いますね。

https://support.lenovo.com/jp/ja/solutions/ht500216

RubyMine で Rails Tutorial 14章

ようやく最後の14章

ブランチも多くなりましたね。

モデルの関係を作りますが、なかなかややこしいと思います。RubyMine で図を作ってみて、関係の線を見ると把握しやすいこともあります。

14.2.2 では演習がありました。users_profile_test.rb で、統計情報の表示について確認します。

Ajax での実装をすると、ログではこのように “as JS” と出てきます。

リスト 14.49 は最後の演習です。何をテストするのがいいのか難しかったのですが、|micropost| でぐるぐる回すということから、投稿の内容が含まれているということを見ればいいのかなと思いましてこのようにしてみました。

ヒントにある CGI.escapeHTML を外してみると、I’m sorry のような文字列が I'm sorry. となるのでマッチしないということになりそうです。

長い長いチュートリアルが終わりました。わたしもいい復習になったと思います。
RubyMine の使い方にも慣れることができて、記録を残してよかったです。
どなたかのお役に立っているとうれしいです。

RubyMine で Rails Tutorial 13章

13章やります。あと少しです。

ActiveRecord の関連付けをすると、図も生成できるようになります。
右クリックして Diagrams → Show Diagram → Rails Model Dependency Diagram で作ることができます。

また、この章でもテストと実装とを行き来することが多いですが、ショートカットキーを使うと便利です。

実装からテストへの移動も、テストから実装(テスト対象)への移動もともに shift + command + T でした。
こういう統合開発環境はメニューからさわって一つずつ覚えていくのが使いこなすためのコツですね。

リスト 13.28 では、div.pagination の要素を確認するテストをしていますが、いまは Bootstrap 4 に対応した will_paginate-bootstrap4 を使っているため、ul.pagination が出力されます。テストもそのように直して実行しました。

13.3.2 の演習では if 〜 else 〜 end のそれぞれにパーシャルを作るというものでした。
RubyMine から簡単に切り出せるはずなのですが、後半はうまくできませんでした。

手で切り出します。

直したら test を流してエラーがないことを確認します。

リスト 13.57 の課題は、投稿数のテストです。fixtures で michael は34個(4個+30個)の投稿をするように設定しているので、その数を確認しています。

最後は画像のアップロード周りです。Rails 5.2.0 では carrierwave ではなく ActionStorage を使うのがいいようなのですが、ここではチュートリアルに従います。

リスト 13.63 のテストはそのままではうまく通りませんでした。post microposts_path には param の引数が必要なので、そのように括っておきます。

development ではローカルにアップロードしますが、production では fog を使って AWS S3 にアップロードするコードになっています。せっかくなので使ってみます。

13.4.4 にしたがって AWS で設定することで、無事 production でも画像のアップロードが動作しました。

AWSのコンソールからも確認できます。

RubyMine で Rails Tutorial DB接続について

Heroku (production) 環境でのDB接続について、PostgreSQL を使えていなかったようです。

addon として提供されていまして、無料の hobby-dev プランで作成しました。

heroku config すると、DATABASE_URL の変数が生成されていることがわかります。
これを config/database.yml に渡します。

あとは heroku に push すれば、使えるようになります。

チュートリアルのサイトには記載がないようです。Heroku のマニュアルで調べましょう。

RubyMine で Rails Tutorial 12章

12章をやります。

リスト 12.4 では、これまでやってきたように Bootstrap 4 に対応する形で class を書き直します。

リスト 12.18 はちょっと難しいですね。
get 〜 や post 〜 などでアクセスして assert_xxx で確認、というのを繰り返しているので、区切りながら読むといいと思います。

リスト 12.20 の演習はこんな感じにしました。

RubyMine だと : を => にするかとアドバイスが出てきますが、好みでいいと思います。

変えた場合はこのような書き方になりますね。わたしは : の書き方のほうに戻しておきました。

リスト 12.21 のマッチさせる文言はヒントにあるそのままですね。
password_resets_controller.rb の check_expiration メソッドで flash[:danger] として出しています。

演習の4つ目は、パスワードがリセットされたら reset_digest が nil になっていることを確認するというテストを追加します。

なかなか難しかったですね。
一からここまで考えてあれこれ作るのは大変だと思います。とても参考になります。

RubyMine で Rails Tutorial 11章

11章 やります。

メールでアクティベーションするというものですね。

Action Mailer は仕事でも使ったことがあります。監視ツールを作ったことがありまして、メール通知するのに使いました。
ERBで書けるので、これまで進めてきた Web の view と同じような感覚で作れます。

メールのプレビューは知らなかったです。これは便利ですね。

users_login_test.rb のテストが一つ通らなくなりました。

リスト 11.32 は 9.3 の課題 でやった assigns() への対応が反映されていないので、そのままだとこのようにエラーになります。

同様にメンバ変数として参照するように修正しておきます。

リスト 11.39 はこう書きます。

11.40 はこんな感じにしました。
activated が true のものだけを扱うということですね。

最後の SendGrid addon は、Heroku にクレジットカードを登録する必要がありました。

Heroku の Manage Account の画面から登録すれば使えるようになります。

config/environments/production.rb を設定します。
Heroku でのアプリケーションのURLを host に設定する必要がありますが、heroku open するとブラウザが開くのでわかりやすいでしょう。

このURLを production.rb に書いておきます。

実際に Heroku に deploy して、ユーザ登録を試してみます。

メールもちゃんと来ました。

リンクを踏んでユーザ登録完了です。ちゃんと動いてますね。

RubyMine で Rails Tutorial 10章

10章

まず、partial に切り出すところはこんな感じになるでしょうか。

new.html.erb にて、form_for 周りを選択します。

右クリックから Refactor → Extract → Partial で切り出します。

名前をつけます。チュートリアルに従って _form.html.erb とします。

これで切り出せました。

あとは少々調整します。new.html.erb と edit.html.erb の差分を見て、共通化できる部品を活かして、違うところは provide で渡します。
このスクリーンキャプチャでは form_for の一つ上も切り出してしまったのですが、gravatar_for があることに気が付いて調整しています。

new.html.erb

edit.html.erb

_form.html.erb

10.1.3 の演習では、テストを追加します。
わたしはブラウザに Chrome を使っているのですが、実際にエラー画面を表示させて右クリックから「検証」をするとこのようになります。

div.alert を指定すればいいということがわかるので、assert_test に追加します。

10.2.3 の演習でもテストを追加するのがありました。

/users/1/edit にアクセスする → ログインが求められる → ログインしたら /users/1/edit に戻って編集できるようになる、という確認で、ログイン前後での session[:forwarding_url] の値をチェックしておきましょうというテストです。
こんな感じにしてみました。

リスト 10.39 の CSS では $gray-lighter を使っていますが、Bootstrap 4 にはありません。上の方で定義しておきます。

10.3.1 のテストは、右上のメニューのところがログインしていないときとログインしたときで変わるというのを追加してみました。

ログインしていないとき

ログインしたとき

site_layout_test.rb

10.3.3 では will_paginate を使います。bootstrap-will_paginate では Bootstrap 4 に対応していないようなので、will_paginate-bootstrap4 を使ってみました。

10章で Gemfile に追加した部分

リスト 10.48 では div.pagination の要素があることを確認していますが、will_paginate-bootstrap4 では div ではなく ul になっていました。

リスト 10.56 のテストはこう書きました。admin 属性を変更しようとしてもできません、というものです。

10章は長い道のりでした。テストを書きながら実際に動かして進めていくと楽しいですね。