はてなブログから記事をエクスポートする方法
はてなブログの記事をバックアップするために、
もしくは他のサイトへ移行するときに、
はてなブログから、データをエクスポートする方法を書きます。
記事をMT(MovableType)形式でエクスポート
設定 > 詳細設定 > エクスポート > ダウンロードする」と選択していけば、記事をMT形式でエクスポートすることができます。
「記事のバックアップサービスと製本サービス」をクリック
これで、MT(MovableType)形式のテキストファイルがダウンロードできました。
ローカルパソコンへのバックアップや、WordPressへの移行にテキストデータを使うことが可能です。
Rails Tutorialをやってみよう07
第6章 ユーザーのモデルを作成する
6.1 Userモデル
第6章 ユーザーのモデルを作成する | Rails チュートリアル
Gitでバージョン管理を行なっているのであれば、このタイミングでユーザーをモデリングするためのトピックブランチを作成しておいてください。
$ git checkout master $ git checkout -b modeling-users
gitがどのように記録されているかわからなくなったら
$ git log
でgitの記録を見てみましょう。
ちなみにgit logは、"q"で終了して、元のコマンドラインに戻ることができます。
では、引き続き、ユーザーモデルを作成していきます。
userモデルを作成していきます。
userのデーターベースをイメージします。
まず、userのコントローラーを作成します。
$ rails generate controller Users new
コントローラーの作成には、
rails generate controller <大文字かつ複数形> new
というメソッドを使います。
次に、userのモデルを作成します。
このときに、データモデルのスケッチの属性を付属させて作成します。
id属性は自動で作成されます。
$ rails generate model User name:string email:string
モデルの作成には、
rails generate model <大文字かつ単数形> <属性名>:<データ形式> <属性名>:<データ形式>
というメソッドを使います。
generateコマンドの結果のひとつとして、マイグレーションと呼ばれる新しいファイルが生成されます。マイグレーションは、データベースの構造をインクリメンタルに変更する手段を提供します。
db/migrate/[timestamp]_create_users.rbが作成されています。
t.timestamps null: falseも同時に作成されています。
このt.timestamps null: falseがあることで、
created_atとupdated_atが自動作成されます。
この2つはユーザーが作成または更新された時の時刻を記録するタイムスタンプを記録します。
マイグレーションは、以下のようにrakeコマンドを使って実行することができます。
$ bundle exec rake db:migrate
SQliteのデータベース構造を可視化する方法
SQLiteBrowserをインストールします。
DB Browser for SQLite
macでhomebrewを使ってインストールする場合は、以下のbrew caskコマンドでインストールできます。
$ brew cask install sqlitebrowser
RubyMineを使っている場合は、このブログを参考にしてください。mi813.hatenablog.com
6.1.2 modelファイル
6.1.3 ユーザーオブジェクトを作成する
$ rails console --sandbox
sandboxモードでrailsを起動します。
sandboxモードでrails consoleを起動すると、
データ・モデルを変更せずに調べることができます。
rails consoleは、"control + d"にて終了できます。
>> user = User.new(name: "Michael Hartl", email: "mhartl@example.com")
nameとemail属性が期待通り設定されていることがわかります。
>> user.valid? true
>> user.save (0.1ms) SAVEPOINT active_record_1 SQL (3.2ms) INSERT INTO "users" ("name", "email", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["name", "Michael Hartl"], ["email", "mhartl@example.com"], ["created_at", "2015-11-23 03:36:30.051170"], ["updated_at", "2015-11-23 03:36:30.051170"]] (0.1ms) RELEASE SAVEPOINT active_record_1 => true>
saveメソッドは、成功すればtrueを、失敗すればfalseを返します (現状では、保存はすべて成功するはずです。
>> user => #<User id: 1, name: "Michael Hartl", email: "mhartl@example.com", created_at: "2014-07-24 00:57:46", updated_at: "2014-07-24 00:57:46">
以下の3つのタイトルでは、データ・モデルの変更をrails consoleにて編集するやり方が記載されています。
6.1.3 ユーザーオブジェクトを作成する
6.1.4 ユーザーオブジェクトを検索する
6.1.5 ユーザーオブジェクトを更新する
取りあえず、テストは飛ばして次に進みます。
Rubyの正規表現を試すことが出来るWebサービス。www.rubular.com
メールフォーマットを正規表現で検証する (GREEN app/models/user.rb)
class User < ActiveRecord::Base validates :name, presence: true, length: { maximum: 50 } VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email, presence: true, length: { maximum: 255 }, format: { with: VALID_EMAIL_REGEX } end
既に存在するモデルに構造を追加する
$rails neerate migration add_index_to_user_email
メールアドレスの一意性を強制するためのマイグレーション db/migrate/[timestamp]_add_index_to_users_email.rb
class AddIndexToUsersEmail < ActiveRecord::Migration def change add_index :users, :email, unique: true end end
$ bundle exec rake db:migrate
Userのデフォルトfixture RED
test/fixtures/users.yml
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/ # FixtureSet.html one: name: MyString email: MyString two: name: MyString email: MyString
上記のファイルを空にしておきます。
空のfixtureファイル GREEN test/fixtures/users.yml
# empty
email属性を小文字に変換してメールアドレスの一意性を保証する GREEN app/models/user.rb
class User < ActiveRecord::Base before_save { self.email = email.downcase } validates :name, presence: true, length: { maximum: 50 } VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email, presence: true, length: { maximum: 255 }, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false } end
6.3.1 ハッシュ化されたパスワード
セキュアなパスワードの実装は、has_secure_passwordというRailsのメソッドを呼び出すだけでほとんど終わってしまいます。このメソッドは、Userモデルで次のように呼び出せます。
app/models/user.rb
class User < ActiveRecord::Base . . . has_secure_password end
のようにモデルにこのメソッドを追加すると、次のような機能が使えるようになります。
・セキュアにハッシュ化したパスワードを、データベース内のpassword_digestという属性に保存できるようになる。
・2つのペアの仮想的な属性18 (passwordとpassword_confirmation)が使えるようになる。また、存在性と値が一致するかどうかのバリデーションも追加される。
・authenticateメソッドが使えるようになる (引数の文字列がパスワードと一致するとUserオブジェクトを、間違っているとfalse返すメソッド)。
この魔術的なhas_secure_password機能を使えるようにするには、1つだけ条件があります。それは、モデル内にpassword_digestという属性が含まれていることです。
データモデルにするために、まずはpassword_digestカラム用の適切なマイグレーションを生成します。マイグレーション名は自由に指定できますが、上のように末尾をto_usersにしておくことをお勧めします。こうしておくと、usersテーブルにカラムを追加するマイグレーションがRailsによって自動的に作成されるからです。add_password_digest_to_usersというマイグレーションファイルを生成するためには、以下のコマンドを実行します。
$ rails generate migration \ add_password_digest_to_users password_digest:string
usersテーブルにpassword_digestカラムを追加するマイグレーション db/migrate/[timestamp]_add_password_digest_to_users.rb
class AddPasswordDigestToUsers < ActiveRecord::Migration def change add_column :users, :password_digest, :string end end
$ bundle exec rake db:migrate
has_secure_passwordを使ってパスワードをハッシュ化するためには、最先端のハッシュ関数であるbcryptが必要になります。パスワードを適切にハッシュ化することで、たとえ攻撃者によってデータベースからパスワードが漏れてしまった場合でも、Webサイトにログインされないようにできます。サンプルアプリケーションでbcryptを使用するために、bcrypt-ruby gemをGemfileに追加します
bcryptをtGemfileに追加する
source 'https://rubygems.org' gem 'rails', '4.2.2' gem 'bcrypt', '3.1.7' . . .
6.3.2 ユーザーがセキュアなパスワードを持っている
Userモデルにpassword_digest属性を追加し、Gemfileにbcryptを追加したことで、ようやくUserモデル内でhas_secure_passwordが使えるようになりました。
Userモデルにhas_secure_passwordを追加する RED app/models/user.rb
class User < ActiveRecord::Base before_save { self.email = email.downcase } validates :name, presence: true, length: { maximum: 50 } VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email, presence: true, length: { maximum: 255 }, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false } has_secure_password end
bundle exec rake test
空のパスワードを入力させないために、存在性のバリデーション (6.2.2) も一緒に追加します。結果として、Userモデルのコードはリスト6.39のようになります。(has_secure_passwordメソッドは存在性のバリデーションもしてくれるのですが、これは新しくレコードが追加されたときだけに適用されます。したがって、たとえばユーザーが " " (6文字分の空白スペース) といった文字列をパスワード欄に入力して更新しようとすると、バリデーションが適用されずに更新されてしまう問題が発生してしまいます。)
セキュアパスワードの完全な実装 GREEN app/models/user.rb
class User < ActiveRecord::Base before_save { self.email = email.downcase } validates :name, presence: true, length: { maximum: 50 } VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email, presence: true, length: { maximum: 255 }, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false } has_secure_password validates :password, presence: true, length: { minimum: 6 } end
6.3.4 ユーザーの作成と認証
ユーザーモデルの基本部分が完成しました。
データベースに新規ユーザーを1人作成しましょう。
$ rails console >> User.create(name: "Michael Hartl", email: "mhartl@example.com", ?> password: "foobar", password_confirmation: "foobar") => #<User id: 1, name: "Michael Hartl", email: "mhartl@example.com", created_at: "2014-09-11 14:26:42", updated_at: "2014-09-11 14:26:42", password_digest: "$2a$10$sLcMI2f8VglgirzjSJOln.Fv9NdLMbqmR4rdTWIXY1G...">
RubyMineのデータベースで確認してみると、rails consoleで作成したデータが記録されているのが確認できます。
コンソールに戻ってpassword_digest属性を参照してみると、has_secure_passwordの効果を確認できます。
>> user = User.find_by(email: "mhartl@example.com") >> user.password_digest => "$2a$10$YmQTuuDNOszvu5yi7auOC.F4G//FGhyQSWCpghqRWQWITUYlG3XVy"
RubyMineのショートカット
RubyMineのショートカットを覚えたものから、紹介していきます。 macのショートカットです。
参考: Most indispensable RubyMine keyboard shortcuts.
キーバインド | 内容 | おすすめ度 |
---|---|---|
command+control+up(↑矢印) | view, controller, helper, test間を相互移動する | ☆☆ |
Tab | コード補完 | ☆☆☆ |
⌘ + Shift + o | ファイル検索 | ☆☆☆ |
command + shift + N | ファイル名による検索 | ☆☆☆ |
⌘ + Shift + . | ERB式を出力 | ☆☆☆ |
⌘ + Shift + v | Paste履歴から貼り付け | ☆☆ |
⌘ + Shift + [ | 右タブへ移動 | ☆☆ |
⌘ + Shift + @ | 左のタブへ移動 | ☆☆ |
command + shift + a | 対応するコントローラ、ビュー、テストを表示 | ☆☆☆ |
⌘ + Ctl + l | コードフォーマット | ☆☆☆ |
Shift + alt(optionキー) | 行を移動 | ☆☆ |
alt + F7 | ソース内で他に使ってるところを検索してくれる | ☆☆ |
⌘ + 6 | TODOの一覧表示 | ☆☆ |
command+shift+e | 最近編集したファイルの一覧 | ☆☆☆ |
command + / | コメントイン、コメントアウト | ☆☆☆ |
他に使うものが増えたら、随時更新していきます。
macでRealforceのKeyboardを使う時の設定
東プレのKeyboard、「RealForce」をmac OSX Yosemiteで使う時の設定です。
こちらのブログを参考にさせていただきました。
参考ブログ:
RealForceキーボードをMacで使うための覚書 · Yoshi's Notes
mac純正の環境設定だけでは、「英数」と「ひらがな」との変換もうまくできません。
1.KarabinerとSielのインストール
Karabinerと、Sielをインストールするとキーのポジションや機能を変更できるようになります。
まず、この2つをインストールしましょう。
1.karabiner (旧KeyKeyRemap4MacBook)をインストールします。
2.Siel(旧PCKeyboardHack)をインストールします。
2.Sielの設定
NFER=not transfer=無変換:スペースキーの左側にあるキーです。PC/AT互換機用の109キーボードでは「無変換キー」が対応します。
XFER=transfer=変換(transをxと略記することがある):スペースキーの右側にあるキーです。PC/AT互換機用の109キーボードでは「変換キー」が対応します。
KATAKANA key = "KANA"とRealForceキーボードに表示されているキーです。
3.Karabinerの設定
Karabinerの設定ファイルの書き方(英語)を参考に
独自の設定を作成することが可能です。
キー設定を書いた.xmlファイルは、以下の図から読み込ませることができます。
ファイルを読み込ませたら、Karabinerをリロードします。
xmlファイルをいろいろ設定して、自分なりに使いやすくしてみてください。
mac book pro 15inch用に外付けKeyboardを購入(RealForce)
mac book proの外付けKeyboardを購入しました。
PCは、ずっとノート派だったので、ノートパソコンのKeyboardを使っていました。使っていたmac book proを13inchから15inchへ変更したら、純正のKeyboardに打ちづらさを感じ、外付けKeyboardの購入を検討しました。
1.
Apple Wireless Keyboard (JIS) MC184J/B
- 出版社/メーカー: アップル
- 発売日: 2011/07/22
- メディア: Personal Computers
- 購入: 9人 クリック: 59回
- この商品を含むブログ (30件) を見る
このKeyboardのメリットは、2つあると思います。
(1)ノートPCのKeyboardと同じくらいキーストロークが短く、ノートPCのKeyboardを使い慣れていたら移行がスムーズです。
(2)最大の魅力は、macのOSXと、IphoneやIpadなどのIOSデバイスへの接続がスムーズにできることです。
1,000円前後の格安Keyboardと比べると、値段が高めです。
2.
Anker ウルトラスリム Bluetooth ワイヤレスキーボード iOS/Android/Mac/Windows に対応 ホワイト
- 出版社/メーカー: Anker
- メディア: エレクトロニクス
- この商品を含むブログを見る
IOSやAndroidにも対応しています。
Ipad用にKeyboardが欲しい場合や
キーの打鍵感覚や、入力速度に特にこだわりが無ければ、こちらでも良いと思います。
3.
- 出版社/メーカー: PFU
- 発売日: 2006/03/23
- メディア: Personal Computers
- 購入: 9人 クリック: 308回
- この商品を含むブログ (50件) を見る
キー入力の操作に独特の癖がありますが、macでも十分に使える製品です。
値段は高いですが、生産性は向上するので、購入しても損は無い製品だと思います。
購入後、細かなキー設定は必要ですがmacでも使えるようです。
4.
PFU Happy Hacking Keyboard Lite2 for Mac 日本語配列かな印字なし USBキーボード Mac専用モデル ホワイト PD-KB220MA
- 出版社/メーカー: PFU
- 発売日: 2007/01/24
- メディア: Personal Computers
- 購入: 5人 クリック: 105回
- この商品を含むブログ (12件) を見る
静電容量無接点方式ではなく、普通のメンブレン方式です。
キー配列がmac用というのが良いです。
個人的には、安い方のHappy Hacking Keyboardでも十分使えると思いますが、
友人に言わせると、「どうせHappy Hacking Keyboardを買うなら、思い切って高い方のProfessionalを買うべき!打鍵の感触が段違いに良い」とのことです。
5.
- 出版社/メーカー: 東プレ
- 発売日: 2006/02/25
- メディア: Personal Computers
- 購入: 14人 クリック: 732回
- この商品を含むブログ (61件) を見る
決め手は、Happy Hacking Keyboardより価格が1万円ほど安いことと、
ファンクションキーが揃っているので、WindowsやLinuxでも十分使えることです。
最終的に、店頭にてHappy Hacking Keyboardと打ち比べをしてみて、
キーポジションが微妙にこちらの方が気に入りました。
6.
Kinesis Freestyle2 Keyboard [KB800PB-us-20] 【キネシス フリースタイル2 (20インチ) Win版】
- 出版社/メーカー: Kinesis
- メディア: エレクトロニクス
- この商品を含むブログを見る
写真リンク先はWindows用のKeyboardです。ご注意ください!
mac用のKinnesis Freestyle2は、Kinesisの英語サイトから購入可能です。
ただしアメリカからの輸入になるので、送料が高く付きます。
あと試し打ちが出来るお店が見当たらなかったので、残念ながら購入を見送ることにしました。
入力しやすいKeyboardを手に入れると
キー操作が楽になり、打鍵ミスが減り、集中力も上がるので、結果として生産性が20%くらい向上するのと感じています。