Ruby on Rails5 のレッスンに突入 その3(完)
Ruby on Rails5
さて、昨日はRuby on Rails5 レッスンでのログイン回りや認可を実装しました。
使う学習サイトは同じく Progate です。今日で Ruby on Rails5 のレッスンを終わらせる予定です。
- Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]
- 途中から有料です。月額980円(税込)
履修してるレッスン
- Ruby on Rails5
- 目標:TweetApp(TwiiterみたいなSNS)を作ること
昨日は「Ruby on Rails5」のレッスン8と道場3まで進みました。
今日はレッスン9から最後まで進めていきます。DBのリレーションなどをやるようですね。
リレーション…?(1対多)
- リレーションをするのかと思いきや、やっぱりこっちも自作。あるぇ…?ORMがもしかして、ない…?流石にそれはないか?まだやらないだけ、かな……?
- Post モデルの中で投稿ユーザの情報を返すインスタンスメソッドを定義する
class Post < ApplicationRecord
...
def user
return User.find_by(id: self.user_id)
end
end - 呼び出し側は、post から user を呼び出せる
def show
@post = Post.find_by(id: params[:id])
@user = @post.user
end - 逆に、user に紐づく posts を引く時には Userモデルに posts メソッドを定義する
class User < ApplicationRecord
...
def posts
return Post.where(user_id: self.id)
end
end - 使う時は@user に対して posts メソッドを呼び出す
<% @user.posts.each do |post| %>
- flash[:notice] に〜を代入してください、の時に"" ダブルクオートが付いてたり付いてなかったりするのは、これは注意力を付けるためにわざとやってるんだろうか…。
リレーション…?(多対多)
- 中間テーブルに該当の値があるかどうか見る
<% if Like.find_by(user_id: @current_user.id, post_id: @post.id) %>
…そんまんまですね。(そしてまたここで {method: "post"} になってる)
いいね!済み
<% else %>
<%= link_to("いいね!", "/likes/#{@post.id}/create", {method: "post"}) %>
<% end %>
find_by は何もない場合の戻り値が nil なので判定に使える、ということらしい。 - ajaxを使うのかと思ったらそんな事はなかった。流石にないか。
モデル
- destroy メソッド。以前も出てきたけど復習も兼ねて。
@like.destroy
ソフトデリートってあるのかなぁ。 - where メソッドとcount メソッド
@likes_count = Like.where(post_id: params[:id]).count
Font Awesome と link_to
- link_toメソッドをHTMLに対して使う場合には少し異なった書き方をする
- 文字列に対して
<%= link_to("リンクテキスト", "/posts/index") %>
- HTMLに対して
<%= link_to("/likes/#{@post.id}/create", {method: "post"}) do %>
<span class="fa fa-heart like-btn"></span>
<% end %>
gem(ジェム)
- gemとは
RubyやRailsでプログラミングをする際に「よく使う機能」をパッケージ化したものです。Railsにインストールすることで使用することができます。
- ほおほお。Composerのようなものか。CentOS上でコマンドを見たことだけはある。
- Gemfile :インストールしたいgemを記述するファイル
へえー。composer.json みたいなものか。gem 'rails', '5.0.3'
バージョン名を省略すると、最新版をインストールする
gem 'bcrypt' - Gemfile.lock :自動生成されるファイル。composer.lock みたいなもんですね、きっと。
- gem インストール実行
$ bundle install
bcrypt パッケージ
- has_sercure_password メソッドというメソッドが使えるので、モデルに設定する。use も何もいらないらしい。また、has_secure_password は presence (存在するかどうか)のバリデーションも一緒に行う。
class User < ApplicationRecord
has_sercure_password
... - 項目名が password の中身を、save 時にbcrypt を通して「password_digest」カラムに入れてくれるので、項目名は password のままでよい
- ログインさせるには、そのメールアドレスを持つユーザが存在し、かつ、bcrypt の authenticate メソッドを使ってパスワードが一致するかを確認して、通す
@user = User.find_by(email: params[:email])
if @user && @user.authenticate(params[:password])
session[:user_id] = @user.id
....
else
....
end
余談:気がついた事
CakePHPとRuby on Railsでは、バリデーションはモデルに記述し、モデルのsaveメソッドが走る時に行われる。
Laravel では、バリデーションは基本自分で設定するのでモデルに書いてもコントローラに書いても良くて、いつのタイミングでも掛けられる。私は大体、フォームからデータが渡ってきたタイミングでバリデーション掛けていたので、今回ちょっと違和感があって気が付きました。
どっちがいいんでしょうね。
私はLaravelでも良くモデルにバリデーションを配列で返すメソッド作ってたので、結局やってることは変わらない気がしますけども。save メソッドで呼び出された際にバリデーション通すか、その前に通すかの違いですかね。
でもCakePHPでは特定の項目だけ特定の場合にバリデーション掛けたくないシチュエーションがあった時に、ちょっと別オプション指定してあげたりが面倒だったので、Laravel の方が自分でタイミングと項目を設定出来る分、融通が効くと言えなくもないけど、結局全部手動だからなぁ。
一長一短ですかね。
Ruby on Rails5 のレッスンを修了!
レッスン6〜8と、道場3の合わせて4つを修了し、Ruby on Rails5 のレッスン全てが終わりました。ここまで3時間強でした。
さすがにパスワードの暗号化は出てきましたね。
DBのリレーションを張るのかと思いきや、ORMでなく手動だったのは少し驚きました。レッスンに入り切らなかったんですかね。どっちにしてもORMはいずれ格闘しなきゃいけないと思いますので、概念だけおさらいするという意味でいい復習になりました。
デバッグの仕方くらい教えてくれたら嬉しかったなーと思いましたが、別にそんくらい調べればすぐ分かることなので、あとは自分でなんとかしましょうってことですね。
次はローカル環境作って、公式ドキュメント見ながらORMとかソフトデリートとか探しつつ色々試してみようかと思います。とりあえず Multiauth やらねば。
正月休み中しっかり勉強したし、明日は1日遊んで、明後日からまた仕事ですね。正月明け早々に出張です……。
兎にも角にも、Ruby on Rails5 のレッスンは無事修了〜。
Progate さんありがとうございました。
折角だからjQueryとPythonもやるだけやってみようかな。
Ruby on Rails5 のレッスンに突入 その2
Ruby on Rails5
さて、昨日はRuby on Rails5のレッスンに入っていきました。
引き続き今日はレッスンを進めて行きます。使う学習サイトは同じく Progate です。
- Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]
- 途中から有料です。月額980円(税込)
あ、そういえば、明けましておめでとうございます。
履修してるレッスン
- Ruby on Rails5
- 目標:TweetApp(TwiiterみたいなSNS)を作ること
「Ruby on Rails5」のレッスン5と道場2まで進みました。今日はレッスン6からです。「Ruby on Rails5」のレッスン通してTwitterっぽいSNS作るということで、昨日まではルーティング、モデル、コントローラ、ビューの関係とか書き方を学びました。
レッスン6からはログイン機能を付けて行くようですね。
別にこの辺からはProgateでなくても良いような……とか思わなくもないですが笑 折角課金しましたので、このレッスン修了までは使ってみます。
ユーザ管理機能
- 昨日も出てきましたが、復習も兼ねて。モデルとマイグレーション作成コマンドとマイグレートコマンド。やっぱりUserモデルのファイルが小文字なのがなんか気持ち悪い…
$ rails g User name:string email:string
$ rails db:migrate - Laravelみたいにコマンドで勝手にログイン機構を全部作ってくれたりは……しないのか。残念。
- バリデーションのユニーク制約:
validates :email, { uniqueness: true }
- コントローラ名が複数形……でした、そう言えば。
- ビューのnewとeditを一つにしたいな……
- render()の引数はURIだと思ってたけど、ビューのパスだったっぽい。ユーザの新規作成画面のURIは /users/signup だけどrenderで指定する場合は
render("users/new")
- ページをめくるごとに設定していたname属性を消されて、知らずにブラウザで試して怒られるの巻\(^o^)/
- お、もしかして編集の際のユニーク制約は、何もしなくても自分のID以外に検索をかけてくれてる?これは便利だ!何で判定してるんだろう。アクション名?
- しかし、編集の際にDBのトランザクション張らなくていいんだろうか。また別のレッスンでやるのかな。
画像アップロード機能
- 画像データはpublicディレクトリに保存
- マイグレーションファイルの作成コマンド
$ rails g migration add_image_to_users
- マイグレーションファイルの書き方
class AddImageNameToUsers < ActiveRecord::Migration[5.0]
def change
add_colums :users, :image_name, :string
end
end - HTMLヘルパーのようなものはないのかな…?
- ファイル送信の際には、form_tagメソッドの第二引数に {multipart: true} 渡す。よく忘れるやつですね注意。
- Ruby標準のFileクラスでファイルを書き込み出来る
File.write("public/sample.txt""public/sample.txt""public/sample.txt""public/sample.txt", "Hello World")
だと、sample.text に文字を書き込める。
public ディレクトリに書き込む際もpublic から指定する必要がある事に注意。 - 画像ファイル保存の場合には File.binwrite メソッドと、画像の read メソッドを使う
@user.image_name = "#{@user.id}.jpg"
image = params[:image]
File.binwrite("public/images/#{@user.image_name}", image.read) - 画像表示の際には、
<img src="<%= "/user_images/#{@user.image_name}" %>">
ダブルクオートの中にダブルクオートを入れるのがなんか……不思議ですが。
ログイン機能
- ログインのアクション命名規則。URIは両方 /login
ログイン画面(GET) :login_form
ログイン実行(POST):login - んんんwwパスワード平文入ってるんですけど、最初だからですよね??ww
- form_tagメソッドはデフォルトでポストのルーティングを探す
<%= form_tag("/login") do %>
それにしても do をよく忘れてしまう… - Railsのログインはだいぶめんどくさいなぁ……ログイントレイトみたいなの欲しい……!
- ログイン処理=「セッションの user_id キーにユーザIDを持たせること」
session[:user_id] = @user.id
変数名に入れるだけでセッションに入れてくれる機構があるんだな… - ログイン判定をして、ログイン中の場合に某かの値を出力
<% if session[:user_id] %>
うん、シンプルですね。これガードとかの判定出来るんかな。
ログイン中ユーザーのid: <%= session[:user_id] %>
<% end %> - ログアウトは逆にセッションのuser_idキーを空にするだけ。
session[:user_id] = nil
……うん、シンプルですね。 - 以前のレッスンでは link_to メソッドでポストのルーティングを指定する際には第3引数に
{method: "post"}
を指定してください、とあったのに、何の前置きもなく今度は{method: :post}
を指定してください、になってたでござる……びっくりしたでござる。どっちでもいいみたいでござる。どっちでもいいよって書いてあったの私が見逃したかな…? - なるほど、連想配列…じゃなくてハッシュのキーを "key" ってのを :key に出来る、っていうだけの意味かと思ってたけど、これはもしかして "" ダブルクオートを : コロンで書くことが出来るってことだったのかな。なるほど、それで「省略して掛ける」って言ってたのか。ちょっと納得。
だからPost.all.order(created_at: :desc) とかちょっと変な書き方だなあと思ったんですけど、そういうことだったのか……な……?え、今更?どんくさくてすみません…… - 親クラスでメソッドとコントローラ呼び出し前に一括してメソッドを呼び出すことが出来る
親クラス:application_controllerclass ApplicationController < ActionController::Base
と書けば、全てのControllerでアクション前にログイン中のユーザが取得出来る(=いちいち全てのControllerに書かなくて良い)。
before_action :set_current_user
#...
def set_current_user
@current_user = User.find_by(id: session[:user_id])
end
end
ビュー側では普通にcontrollerで指定したように<% if @current_user %>
で利用出来る。
<%= link_to(@current_user.name, "/user/#{@current_user.id}/edit") %>
<% end %> - @変数は、
@変数で定義した変数は同じクラスの異なるメソッド間で共通して使用することが可能です
- なので、親クラスのapplication_controllerで先に
before_action :set_current_user
としておけば、application_controller 内の他のアクションでも @current_user が使えるよ、と。 - 「ログイン済みしか見られない」ページを指定したい場合
def authenticate_user
if @current_user == nil
flash[:notice] = "ログインが必要です"
redirect_to("/login")
end
end - ログイン済みの場合に「見せないようにしたい」場合
def forbid_login_user
if @current_user
flash[:notice] = "すでにログインしています"
redirect_to("/posts/index")
end
end - で、各コントローラで、アクションの前に親クラスのメソッドを通す。このアクションでだけ通したい、という場合は only で指定出来る。
before_action :authenticate_user, {only: [:index, :show]}
- ログイン済みか否かでログイン画面表示さすかどうか、っての、全部自作かぁ……トレイトほしい。せめてミドルウェアほしい。
レッスンを4つ修了
レッスン6〜8と、道場3の合わせて4つを修了しました。ここまでで4時間半くらい。
昨日まではMVCの基本と表示部分の使い方などでそんなに難しい感じはありませんでしたが、ログイン回りは基本は変わりませんけどRailsっぽい書き方というか、今までとちょっと違ったので時間がかかりましたね。
Railsもコマンド叩けばログイン回り全部作ってくれればいいのに…!あとトレイトとミドルウェア欲しいです。ミドルウェアという概念は無いのかな…?あとで調べてみよう。
さすがに今日あと4つするの大変なので、今日はここまでにします。明日、Ruby on Rails5 のレッスンを最後まで行ければと。
ログイン回りを折角してるので、Multiauthもやってくれたら手間が省けて嬉しい。
Progateは本当に細かく丁寧に教えてくれるので、他のフレームワークしてる人には少し退屈かもしれませんが、初めてフレームワーク触る人にはとても優しい仕様になってますね。
ただ欲を言えば、レベルアップをお知らせしてくれるのは嬉しいけど、結構さくさくレベル上がってその度にいちいち閉じるボタン押すのが面倒なので、出来れば「もう表示しない」機能を付けてもらって、その場合は簡単なポップアップか何かだけでレベルアップを通知してくれると嬉しいなぁ…。
あと、エディタ画面でタブの入れ替え出来るとすごく嬉しい。
とりあえず、Ruby on Rails5 もあと少しでお終いですよー。
Ruby on Rails5 のレッスンに突入
Ruby on Rails5
さて、昨日はRubyの基礎を勉強しました。
引き続き今日はいよいよRuby on Rails5の学習に入っていきます。使う学習サイトは同じく Progate です。
- Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]
- 途中から有料です。月額980円(税込)
自分のメモ代わりに、重要なポイントとかをまとめて見ます。
履修するレッスン
- Ruby on Rails5
- 目標:TweetApp(TwiiterみたいなSNS)を作ること
今回はブラウザ上で全て完結出来るみたいなので、ローカルの環境作ったりはしないんですね…ちょっと残念。まあいいか。Progate上のRuby on Rails5のレッスン終わったらローカルで環境作ってアプリ作ってみようかな。
ワガママ言うと、背景が黒なのが目がチカチカしてキツい‥‥背景色変えられる機能欲しいです Progate さん……。背景が黒いとカーソルをよく見失うし……。プリーズ!
基礎
- railsのアプリ生成コマンド
$ rails new App名
- サーバ起動(ビルトインサーバかな?)
$ rails server
- Railsの初期画面可愛いなぁ
- トップページ生成コマンド。と思ったら、これはコントローラ作成コマンドで、デフォルトのアクションを一つ指定出来るというもののようです。ルーティングやメソッドやビューやassetsのJSまで作ってくれてる。
$ rails generate controller home top
↓ 省略Ver
$ rails g controller home top - Controllerのファイル名がスネークケースなのがだいぶ気持ち悪い…
- Viewのディレクトリの命名規則はCakePHPみたい。
コントローラと同じ名前のビューフォルダから、アクションと同じ名前のHTMLファイルを探してブラウザに返します。
なのにルーティングがいるのか…? - いるらしい。ルーティングに書かれていないとビューを表示出来ない。
- rails のCSSファイルは、
「stylesheets」フォルダの中に保存されているCSSファイルにコードを書けば、すべてのビューにCSSが適用されます。
と書かれているけど、これ、コントローラ名.cssは、そのコントローラに紐付いた全てのビューに適用されます、ってわけじゃないのかな…?
作成されたデフォルトのCSSにはコメントアウトで
// Place all the styles related to the posts controller here.
// They will automatically be included in application.css.と書かれているけど…。単純にファイル名を分かりやすく区別してるだけなのかな?あとで確認してみよ。
- ビューファイルの拡張子「erb」は「Embedded Ruby(埋め込みRuby)」の略
- この拡張子のビューファイルでは、<% %> で囲むとrubyコードが記述出来る。
- 変数を出力する場合は<%= %>を使う。これでechoしてくれるんですな
- コントローラからビューに値を渡すのは、
変数名を「@」から始めることでこの変数は特殊な変数となり、ビューファイルでも使用することができます
らしい。これは便利だ!わざわざ渡さなくていいんですね。ビュー側で使う場合も<% @posts.each do |posts| %>
になるらしい。 - フラッシュメッセージは flash[:notice] = "メッセージ"
- ビューで使う時も <%= flash[:notice] %>
ルーティング
- ルーティングの基本
Rails.application.routes.draw do
get "/" => "home#index"
get "/about" => "home#about"
get "/post/:id" => "post#show"
end - idなどのパラメータを指定する場合
「posts/:id」というルーティングは「posts/index」より下に書かなければいけません。ルーティングは合致するURLを上から順に探します。そのため「posts/index」よりも上に書くと、「localhost:3000/posts/index」というURLは「posts/:id」というルーティングに合致してしまいます。
あ、これあれですね、地味にハマるやつですね分かります… - link_to メソッドは get のルーティングを探す
- post のルーティングを探す場合はlink_toメソッドの第三引数に {method: "post"} を渡す必要がある→追記:のちに {method: :post} という書き方も出てきた
- Railsでのアクション命名規則
一覧:index
新規作成がLaravelと違うからちょっとごっちゃになりそう…
新規作成画面:new
新規作成実行:create
編集画面:edit
編集実行:update
詳細画面:show
削除:destroy
rails console
- rails console を使ってrubyのコマンドを使うことが出来る。へー。rails consoleの起動は
$ rails console
- 変数も使えて、quit するまで記憶される
- rails consoleからDBへレコード追加も出来る
post1 = Post.new(content: "コンテンツテキスト")
post1.save
フォーム
- form_tagメソッドはFormヘルパーみたいなものっぽい。定義の仕方は
<%= form_tag("/posts/create") do %>
<div class="form">
<div class="form-body">
<textarea name="content"></textarea>
<input type="submit" value="投稿">
</div>
</div>
<% end %>
DB
- モデルの生成。一緒にマイグレーションも生成してくれるらしい。
$ rails g model Post content:text
- Railsでのマイグレーションの性質
データベースに反映されていないマイグレーションファイルが存在する状態で、どこかのページにアクセスすると以下のようなマイグレーションエラーが発生してしまいます。そのため、マイグレーションファイルを作成した場合は必ず「rails db:migrate」を実行する必要があります。
- マイグレーションの実行。Laravel と一緒だー
$ rails db:migrate
- バリデーションはモデルに記述する
class Post < ApplicationRecord
おお、見慣れない感じ…
validates :content, {presence: true, length: {maximum: 140}}
end
Ruby on Rails5のレッスンを7つ修了
15レッスンということだったので5つずつ消化しようかと思ってたら、内4つは復習用のレッスンみたいだったので、キリがいい所まで進めました。なので今日は7つです。概ね4時間半程度かかりました。
DBを使った追加・表示・編集・削除までですかね。あとはレイアウトを使った表示の仕方。
思ったよりもLaravelに似てる感じがして、まだそれほど書き辛いとか難しいとかいうイメージは無いですね。いえ、あくまで「まだ」でしょうけども。
フレームワークってみんなこんな感じなんでしょうかね?フレームワーク3つ目なのでまだよく分かりません…。
でもバリデーションの書き方は、なんか、めんどくさそう間違えやすそう。
あと、ルーティングとアクションの命名規則が分かったのが良かったです。やっぱり郷に入れば郷に従えで、そのフレームワークらしい書き方ってあると思うので、倣うのが大事だと思うのですよね。
以前Laravel始めた当初に「CakePHPっぽい書き方しないでよ」と言われたことがありましたけど、今度はそうならないように・ω・
さて、あと1日で終わらせるか、2日に分けるか。早くローカル環境作りたいなー。
Rubyの勉強を始めました
Ruby
年末年始で時間があるので、気になっていたRubyの勉強を始めました。
今回使う入門サイトは Progate というサイト。
- Progate | プログラミングの入門なら基礎から学べるProgate[プロゲート]
- 途中から有料です。月額980円(税込)
ブラウザ上でRubyを実行した結果が確認出来るのがいいですね。あとサイトの雰囲気やキャラクターが可愛いし、学習者のレベルで表示されたり、レベルアップした時にポップアップが出てSNSで簡単に共有出来るようになってたりと、学習者が飽きないような工夫が色々あって好感が持てます。
しかし「Ruby」のレッスンに関して言えば、プログラミングの初学者向けの内容ですので、当然基本的な部分(文字列と数値は別物ですので区別しましょうとか、if文の中では字下げしましょうとか)もきっちりやります。最初は少し退屈な部分もありそうだな、と思いつつ…。
でも「Ruby on Rails5」というレッスンもあるので、1月3日までにこれ修了出来るといいな。アプリ作りたいよアプリ。
この記事では、学習する中でPHPとの違いとか、へぇ〜と思った箇所を、自分のメモ代わりに書き出してみます。
Rubyの基礎
- 文末は何もない。; (セミコロン)で終わらないので少し違和感
- 文字連結は +(加算記号)。JSみたい
- 数値と文字列は +(加算記号)で連結出来ない
- 命名規則:変数はスネークケースで書く
- 頭に何も付けなくても変数として使える。JSみたい
- 変数展開出来るのは "(ダブルクオート)の中のみ
- Rubyにはインクリメント演算子が無いらしい
- 型変換は明示的にしてあげる必要がある
- PHPで言う null は、Rubyでは nil
条件分岐
- if にカッコが無い……違和感
- else if のスペルが…!? elsif だって……
配列とハッシュ
- 配列は fruits = ["apple", "orange"]
- 配列の使い方は概ね同じ感覚でいけそう
- と思ったら違った。PHPで言う連想配列は、Rubyでは配列ではなくハッシュというらしい。そもそも配列とは別物として扱うようだ…。定義する際の記号も { } を使う。
user = {"name" => "suzuki", "age" => 20 }
- でも使う際には配列のように user["name"] と、[ ] こっちのカッコを使うらしい。紛らわしい。
- シンボル(:name)という新しい概念:文字列≒シンボル
- ハッシュのキーをシンボルで置き換えられる。その場合、呼び出す時もシンボルで記述する必要がある
- そうすると、ハッシュを
user = { name: "suzuki", age: 20 }
という省略した書き方が出来る。なるほど、確かに見やすい。呼び出す時は user[:name] でコロンを前につけて呼び出す。 - 配列の中にハッシュを入れられる……?JSONじゃん……?てかもうハッシュも含めて全部「配列」で良くないですか。要は多次元配列じゃないですか……とか思ってはいけないのですよねすみません。
- foreachの書き方が全然違う…
languages.each do |language|
puts "#{language}を話せます"
end
メソッド
- メソッド定義は function ではなくて、def
- 引数がない場合にはメソッドを呼び出す際でも (カッコ) を省略出来る
- メソッド名もスネークケースが一般的なのかな??
- メソッドから返る値は「戻り値」と言う
- bool値を返すメソッド名末尾、カッコの前に?(クエスチョンマーク)を付ける慣習があるそうな。へえ〜。
def negative?(number)
return number < 0
end - キーワード引数という新しい概念:引数を指定する際に
def introduce(name:, age:)
...
endというふうにコロンを後ろに付けて指定する。そうすると、メソッドを呼び出す時に
introduce(name: "suzuki", age: 20)
値の前にキーワードを付けて呼び出せる。引数が多くなった時にわかりやすくていいよねってことらしい。確かに分かりやすい。PHPStormの自動表示機能みたいだな。
クラス
- インスタンスの生成には クラス名.new を使う
menu1 = Menu.new
- インスタンスメソッドなどの考え方はPHPと同じ。呼び出し方は
menu1.name
みたいに .(ドット)でつなぐ - PHPで言うところのコンストラクタは、Rubyでは initializeメソッド と言う
- クラスの継承は
class Food < Memu
と書く。なんか新鮮。 - オーバーライドの概念はPHPと同じようだ
- super()が一瞬「ん?」ってなったけど……。要は単純にオーバーライドする元メソッドを呼び出してるだけですね。
- クラスメソッド(=静的メソッド)を生成する場合
class Menu
...
def Menu.is_discount_day?
today = Date.today
return today.sunday?
end
end
Ruby標準ライブラリの Dateメソッド
- 私の誕生日は日曜日ではなかったらしい
- 段々スキット内のネコの返しが雑になって来てる笑
「Ruby」レッスンは修了
基礎修了までざっと3時間ちょいでした。こんなもんですかね…?
まあオブジェクト指向なのは変わんないから、手段が変わっただけってことですね。基本を理解してれば難しくありません。Rubyの書き方を覚えなければという所ですが、アプリ作ってればその内慣れるでしょう、って範囲を出ない気がします。良かった。
キーワード引数とシンボルは絶対何度も間違えるでしょうけど。
あとはRubyのメソッドとか覚えなければですが、今日はここまで。
今度は、ついに!
Ruby on Rails に入って行くぞー(゚∀゚)
「やる気だけは負けません」という言葉
「やる気」とは…?
既にPHPerされてる方や、一人でガツガツ勉強してアプリも作って、をされてる方には、「何を今更」ということしか書いてません。
この記事は、「これからWebエンジニアになりたいなぁ」「選考に進みたいけど何をすればいいんだろう、やる気はあるんだけど…」と考えてる人向けです。
さて、私は PHPer なので、他の分野については分からないのですが、あくまでWebエンジニアとして見た場合の話です。(断っておくと、私は採用担当でもなんでもありません。悪しからず。)
「技術はありませんが、やる気だけは誰にも負けません」という言葉を聞くことがたまにあります。その言葉について。
最初に言っておきますと、「やる気だけは負けません」と言ってる方を批判したり馬鹿にしたりする意図はありません。
むしろ、「その心意気や、良し」と思ってます。
いいことじゃないですか。やりたいことがあって、その想いが口に上ったというのはそれだけで価値のあることだと私は思います。
けど、エンジニアというのは文字通り技術者ですので、やはりどうしても「やる気があって、それで、何が出来るの?」となってしまうのです。
「まだビギナーですらないのに、何も持ってないんだからやる気をアピールする以外にどうしようもないじゃない」というのは分からなくもないです。
分からなくはないのですが、「やる気だけはあります」と言うだけでは、その「やる気」が形になって見えない。非常に分かりにくい。
もしこの業界に入ろうと本気で思うのなら、是非その「やる気」プラスアルファの部分に少しでも思いを馳せてみたら、きっと大きく飛躍する可能性があるんじゃないかなぁ、と思ったので、その方法を少し書いてみます。
技術は降ってこない
日本の小学校、中学校、高校の「座って教わる」受動的な学習が”普通”になっている人達は、きっと技術も”人から教わる”ものだと思っているんじゃないでしょうか。
だから、会社に入れば技術は教えてもらえると思っているし、教えてもらった事をきちんと習得し、成長していく気持ち・やる気は誰にも負けません、そんな思考になるのかなぁと思います。
もちろん、技術を人から教わることもあります。一人でモクモクやってて、でも出来なくて「詰んだ\(^o^)/」状態で魂抜けかけた時には私も先輩にヘルプを出して助けてもらいます。
ただ、それは口を開けて待っていれば降って来るものではありません。
人にも依るとは思いますが、Webエンジニアの多くは「技術は基本的に独学」と思っている方が多いように感じます。つまり、多くのエンジニアは大なり小なり「一人で本やネットなどの教材を使って学び、技術を身に付けて来た人たち」なのです。
独学でも現場で十分に戦える技術を習得出来ることを、よくよくご存知な方たちなのです。
なので、「やる気だけは負けません」というのを聞くと、「やる気あるなら何で自分でアプリ作ってみたりしてないの?」「やる気あるのに何で技術がゼロなの?」なんて思われてしまうわけです。
絶対に嫌です。あとあえて突き放した言い方をしますが、やる気だけは負けない、という人はだいたいすぐやる気を失うのです。やる気あるなら人に教わったりしなくてもやる気以外のなにかを得てるはず。https://t.co/nwcN4TZFJ5 #MySarahah @sarahah_com pic.twitter.com/H3xZgNRlgq
— けんすう (@kensuu) 2017年12月18日
とはいえ、何をすればいいのか
個人でアプリもがんがん作って、誰に聞かなくたってどんどん一人で勉強出来る人ももちろん居ますが、世の中そんな人ばかりではないでしょう。私のように、「どうしたらいいんだ…?」と最初は途方に暮れる人だっていると思うのです。
私はサーバサイドエンジニアをやり始めてやっとこさ3年目になりました。
私もこの職種で仕事を探し始めた当初、どうすればいいか分からずに、とりあえずPHPの入門書を買って、CRUDを作れるようにくらいは勉強しました。
でも、技術を飯の種にして行こうと思うなら、最初とは言えこれじゃ弱い。
今だったら、「あの時はこれしとけば良かったんだなぁ」と思えることがいくつかあるので、「どうしたら…?」と思っている人に少しでもヒントになればと思います。
とりあえず、これやってみたらどう?と思うもの
- Twitterアカウント作って情報収集
- ドットインストールなどで気になる科目を履修する
- 何か一つ、フレームワークを使ってアプリを作る
- Qiitaなど、アウトプットする場を作る
- GitHubでアカウントを持ち、リポジトリを作って公開する
Twitterアカウントを作って情報収集
ツイッターアカウント作って、「今から自分がなりたいと思っているもの」に、「既になっている人」「なろうとしてる人」「関連する情報をつぶやいてる人」を、フォローしまくります。
私の感覚では大体200〜300人くらい。いえ、数は好みだと思うので、100人でも500人でもいいと思うのですが。
そうしてベテランの方や勉強中の方や勉強会の情報など入り乱れるTLを見ていると、その界隈の人たちがどんな考えを持ってどんな事をしているのか、何が流行ってて何が廃れているのか、とかが良く分かります。もっと言うと、どういう事をするとウケが良くて、何が不評なのかも分かります。
その人達の考え方に合わせる必要はありませんが、「どうすればいいんだ…?」と思っている人には何かしらのヒントが落ちているはずです。TLで言われている事を丸っと信じ込むのはそれはそれでどうなの、と思いますが、色々取捨選択して自身で多様な考え方を構築するにはいい場だと思います。
私はツイッターのアカウントは持っていましたし、PHPの大きなコミュニティや、フレームワークの公式アカウント、有名なPHPerさんくらいはフォローしてましたが、そんなにたくさんはフォローしてませんでした。もっといろんな人フォローしとけば、色んな考え方を知ることが出来たのになーと今は思います。
最近は転職を考えていることもあり熱心にTLを眺めているのですが、転職に関しての考え方がちょっと変わりました。ツイッターって素敵なツールですね。
え、むしろ私、そんな事もしてなかったのかって?ね、ホントそれ……(´・ω・`)
ドットインストールなどで気になるものを履修する
プログラミングのネットでの教材は溢れてるので、どんどん活用すべきです。
私はドットインストールで学んでいましたが、いろいろ新しいサイトも出てきているようですし、検索して出てきたものを色々試してみるといいと思います。
有名所を履修していると、面接とかで「何かしていますか?」と聞かれた時に「ドットインストールでPHPを勉強しました」とか言うと話を分かってもらえるので、お勧めです。
何か一つ、フレームワークを使ってアプリを作る
PHPの基礎を勉強したら、次は簡単なフレームワークを使って、アプリを一つ作ってみるといいと思います。
業務で全てスクラッチで書いてる、という所は多分そんなに無いですから、フレームワークを一つ使えるようになっておくと強みになります。
PHPだとやはりとっつきやすいCakePHPとかでしょうか。先々の事考えるとZendとかLaravelとか。
どんなアプリを作るかは特に重要ではないので、自分が「こんなアプリ欲しいな」と思ったものでいいと思います。思いつかなければ、簡単なブログやBBSを作ってみるとかですかね。
ただし、あまり難しすぎると、難しすぎて完成しない、問題が解決しないからそもそもプログラミング自体が嫌になる、なんて本末転倒にもなりかねませんので、最初は簡単なものでいいと思います。
アプリを作るのがどういうことかが体感出来ますし、何より「成果物」として面接などの際にアピールに使うことが出来ます。これがあるのと無いのとでは、雲泥の差があります。
Qiitaなど、アウトプットする場を作る
アプリなどを作ってみて、分からなかった所、調べて分かるようになった所を、アウトプットする場を作ると良いと思います。
はてなブログなどの普通のブログでもいいですし、Qiitaのようなプログラミングに特化したブログツールでも良いと思います。
自分のナレッジベースとしても使えるし、やはりこれも後々、就職・転職する際のアピールに使えます。
GitHubでアカウントを持ち、リポジトリを作って公開する
この職種に就くまで、Gitを知りませんでした。恥ずかしい…。
でも、GitHubアカウント持って、リポジトリ登録しといて、面接申し込みの時にGitHubのURLとか貼れたらかっこいいですよね〜。
既にWebエンジニアの方が転職する際にはGitHubアカウントは持ってて当たり前かもしれませんが、この業界初めての人が、GitHubでリポジトリ公開してたら「おっ、これは!」と思ってくれるんじゃないでしょうか。
まとめ
何をするにしても、一番大事なのは、
- やる気がある「だけ」ではなく、「これだけ手を動かしてます」というのを示すこと
- 自分が「一人で学習する能力がある」のを示すこと
だと思ってます。
あれ、なんかリクルーターみたいになってきた。
ともかく、もしこの業界に飛び込んでみよう、やる気はあるんだけどな…!と思ってる方は、是非「やる気だけ」の所から思い切って一歩前に踏み出してみてはいかがでしょうか。
アムウェイに勧誘された話
アムウェイ…?
アムウェイに勧誘されました。
今まで無縁で生きてこられたのは運が良かったのか悪かったのか。
他の人はどんな勧誘をされてるのか知りませんが、私のケースはこんなだった、という記録とあとで思い出して笑い話(?)にするために書いてみます。
見た目はどう見たって好青年
勧誘してきた人、仮にA君とします。A君はとあるマッチングサイトで知り合った3つ程年下の好青年、という言葉が似合う男性でした。
いや、よく言えば好青年、会社の上司風に言えば学生気分の抜けてない兄ちゃん、目下から見たら面倒見の良い先輩、てな感じの人でしょうか(どんなやの…
初めはランチでも、とイタリアンでご飯を食べました(ちなみに割勘)が、この時は普通の人。
いや、話の端々で「どこそこの会社の社長と会食した」「1週間に1日働くだけで遊んで暮らしている人が知り合いに居て、世界各地に別荘を持ってるらしくて云々」てな話をしていて、「自分でない人の自慢してどうすんのやろ…」と思ったりはしてましたが、とりあえずまあ自分を大きく見せたい典型的なあれかと思っていただけでした。
次に会ったのは、仲間内でスポーツをするので一緒にどうか、というもの。
若者グループで集まってたまにスポーツをしているらしく、こんなコミュニティが地元にもあったんだなぁと関心していました。A君はそこのまとめ役をしているらしく、場所を借りたり器具を持ってきたりしていました。
そこで出会った、我々の年齢層よりは少し年上の女性。B子さんとします。この方は毎年海外旅行に行っているということで、私がドイツが好きだというのを聞いて、A君がきっと話を聞いてみたら面白いよ、ということで呼んでくれたのだとか。
今思えば、これが始まりだったのでしょう。
自由を手に入れた
スポーツ後に、ファミレスで皆で夕飯を食べたのですが、その際に私の目の前に座ったB子さんが次第にこんな話をし始めました。
「今は権利所得で生活できてる。がんばったらがんばった分だけ、見返りがある。自由を手に入れられる。誰にでも出来る」
要約するとこんな感じでしょうか。
要約してしまうと怪しさ万倍ですが、至って真面目な話し出しで、私人生楽しんでないな、って気がついたの。から始まった話は、今は権利所得で生活している、というもの。
相槌がてら「そんな生活が出来たらいいですね」と言うと、興味があるなら教えてあげるよ、とのこと。はぁ…と適当に相槌を打っていたら、今度一緒にA君とうちにおいで、と言われ、特に断る理由もなく、スケジュールを決めてしまいました。
この時は、うーんまあ、聞くだけ聞いてみるか。人様に迷惑かけない真っ当な権利所得なら、そりゃもらえるなら欲しいし。と思ってはいましたし、ネズミとかだったら話だけ聞いてごめんなさいって言えばいっか、と軽い気持ちでした。
本拠地に乗り込んでみた
翌週、A君と待ち合わせをして、B子さんのお宅へ向かいます。なんかA君いやに荷物多いな…?とは思ってましたが、特に気にしてませんでした。
B子さんのお宅にお邪魔して、軽くお茶しながらB子さんの旦那さんを交えて談笑していました。後々の話しぶりからするに、おそらくこの旦那さんが、この界隈でのトップ?なのでしょう。
B子さんも旦那さんも、話す感じはとても人当たりの良い方で、全く嫌な感じはしませんでした。
最初は海外のこんな所に行った、あそこでこんなもの見た、と海外の楽しい話から始まりました。私は海外の話を聞くのが好きなので、これ自体はとても楽しめる時間でした。
が、次第に権利所得の話に移行していきます。
真っ当な権利所得の話だったらいいなぁ、なんて能天気に考えていた私は、とある会社のカタログがテーブルの上に出てきた時には流石に肩を落としました。
それがアムウェイのカタログでした。
「なんだ、やっぱネズミか何かか……」
と思いました、正直。
いや、そりゃ思うでしょー。
「物を売るわけではない、自分のいいと思ったものを勧めるだけ」というのはマルチやネズミ講の常套句だそうですね。何度も聞きました、それ。
アムウェイの商品はこんな人が使ってる、あんな所で使われてる、と写真やネットを駆使していかに“アムウェイが凄いか”をこれでもかという程アピールしてきます。
見てる側としては「ホントかなー…」と心の内では思いつつ、凄いですねーととりあえず愛想よく相槌を打ちます。
天皇陛下がタイに行っていた時に王宮で空気清浄機が使われていた、とか。
24時間テレビでマラソン走ったなんとか言う芸人がつけてた化粧品(汗でも落ちなかった)が話題になったが、あれもアムウェイだ、とか。
一時期大ブームを巻き起こした映画のこのシーンに出てくる歯ブラシもアムウェイだ、とか。とか……
どこからどこまでが本当で嘘なのやら…。
アムウェイの仕組みとか、レベルがあがるとなんとか言う会員レベルになって、そうなると海外へ行ける特典があるとかどうとか……話は尽きることがありません。
あんたもかい!
そのうち、実際に商品見せてあげるよ、の段になりました。
そろそろ相槌を打つのも面倒になって来た頃ですが、それでも「はぁ…」と言いつつ見せてもらうことに。
すると、旦那さんはA君に「ちょっと見せてあげて」と指示。今まで隣で一緒に話を聞いていたA君が「じゃあちょっと見ててくださいね」と実演を始めます。
「え、いや、お前がするんかい」
と思わず心の中でツッコミました。
一緒に聞いてみる、と言っていた段階では、A君もアムウェイの事は一言も言いません。が、むしろ気がつくべきでしたね、B子さんのお家にはクリスマスや正月に皆が集まるので、A君もよくお邪魔すると言ってましたからね。A君ももともとグルだったのです。
一緒に話を聞きに来てくれた、と本気で思ってた私は、だいぶ裏切られた気分でした。ちょっと甘すぎだな、自分…と反省しました、流石に。
実演は洗剤の実演のようで、油を2滴垂らして、それをアムウェイの洗剤と市販の洗剤で洗い落としてみるというものでした。
なんかもう、その段では、その実演が本当なのか仕掛けがあるのかとか、そういう真偽なんてどうでも良くなっていて、むしろ「よくそんなテレビショッピングだかのような事を素でやって恥ずかしくないなぁ」という気分で見てました。
もちろん私は良い観衆でもさくらでもありませんので、「すごーい!」と言って拍手したりはしません。
かろうじて笑みは浮かべてますが、実演を見て「ふーん…」と言ったきりです。
しかしA君、鋼の心を持ってます。
「凄くないですか!?この2つだったらどっちがいいですか!?自分も最初すんごい疑ったんですけど、でもホント種も仕掛けもないんですよ!!」
と元気も元気。
この2つだったらどっちがいいですか、の問に「分かりません」と答えたにも関わらず全くめげません。
すごい。その精神力、見習いたい。
荷物の中身は
何人に紹介して、月に何ポイント貯めたら、これだけバックがある、みたいな話を延々と聞いている内に、そろそろ帰りたいなーと思い始めました。
既にこのお家に来てから4時間が経とうとしていました。外も暗くなってたし、お腹も空いてたし、部屋は寒かったし、もう流石にお暇したかったのです。
そろそろ帰りたいよー電波を2度程出したけど不発に終わり、3回目でようやく帰れそうになった時、カタログは無料だというので記念に(?)もらっとくことにしました。
すると、A君がカバンの中から「僕のあげます」とカタログを出してきます。
あ、そのカバンの中はアムウェイグッズだったのか…とこの時気が付きました。
更には、アムウェイで成功してる人の講演とかのDVDあるから見るといいですよ、と何分何秒頃からと丁寧に付箋まで貼られたDVDをカバンから何枚か出してくる有様で、「それはまた興味があったら貸してくださいね」と言って断りました。
それ、借りたら返すためにまた会わないといけないじゃないですか…。
しかも、「次はもっと色々商品見せてあげます。何が見たいですか」と聞いてくる始末。いや、見たいとか言ってないですからー……!という気持ちで、「それも、興味があればこちらから見せてくださいって言いますね」とやんわり断りました。
が、旦那さん強し。
私が先程「出汁が美味しそう」だと適当に相槌打ったのを覚えていて、「今度一緒に何か作ろうか」という話になってしまったのでした。
いや、ま、料理教えてもらいたいのはホントだし、料理は得意だそうなので、まいっか…と思うことにして、その日はお暇しました。気が進まなければまた断ればいいし…。
法的にはセーフ、モラル的には…?
さて、この歳までマルチやネズミの勧誘を受けたことが、幸か不幸か無かったものですから、判断に困ってネットで調べました。
いや、まあ、調べるまでも無かったような気はしますけども。
法的にはセーフなのですね。
ネットワークビジネス、と言ったりもするらしい。まあ、マルチですって言ったら誰もやりませんよね…響きが既にダメダメです…。
しかし法的にはセーフだからと言って、しかしこれ、あまりにも簡単に、大量の敵を作りそうなビジネススタイルじゃありません…?そりゃ、成功してる方も本当にいるにはいるんでしょうけども。
これ、絶対、友達居なくなりますって。
世の中の多くの人を敵に回し、アムウェイ仲間以外の友人をすべて無くす覚悟で、それでもアムウェイというマルチ商法の仲間になるか?
答えは、残念ながら否です。
周りが全てアムウェイ仲間なら、その道も有りなのかもしれませんね。ネットで言われるように、確かにアムウェイを語る人々は「信者」と呼ばれてしかるべき、というか、なんか「熱い想い」をお持ちのようですし、だからか、皆さんとても仲良さそうですし。その中で生活していくなら、問題はないのでしょう。
が、残念ながら(あるいは幸運にも)、私はその世界に居ませんので…。
こんな世界もある
まあ、アムウェイに入る気はありませんが、そういう世界もあるということを知ることが出来た、と思うことにしました。
そういう意味では、A君に感謝です。もう会うことはないと思いますけれども。
ドスパラのPC無料回収を使ってPCリサイクルする方法
ドスパラの回し者ではありません
長年愛用したPCの他界により、ドスパラのハードディスク破壊の申し込みしたり新しいMacBook Air買ったりとバタバタやってましたが、だいぶ落ち着いてきました。
最後に残ってるのはPC本体のリサイクルです。またドスパラのサービスを利用しますが、別にドスパラの回し者ではありません(笑)
リサイクルシールがあれば無料回収してくれる
パソコンの処分は、
パソコンは資源有効利用促進法により、メーカーによる回収・リサイクルが義務づけられています。
とのこと。
ドスパラのPCは、リサイクルマークが付いていれば無料で回収してくれます。
(してくれないものもあるようなので、詳しくはドスパラにて確認してください)
私のPCの裏面にもリサイクルシールがありました。良かった。
別にドスパラでなくても、HDDの完全初期化も送料も全て無料!を謳っている企業さんは探したら結構あったのですが、
「初期化したHDD……再利用するんでしょ……(・_・)」
とか思ったり思ったり…。
サーバエンジニア時代の先輩が「HDDのデータを完全に消すには物理破壊しかない」と言っていたのがなんとなく響いてるんですかね。
漠然とした不安などから、HDDは物理破壊、PC本体はもともと無料だからどこに回収してもらっても一緒。ということで、PCを買ったドスパラさんに回収をお願いすることにしました。
よく分からない企業に回収してもらうよりは、まあ確実なのだろうし。という勝手な思い込みもあり…。
PCリサイクル申し込み
- 電話
- WEBフォーム
から出来るようです。私はドスパラサイト上のフォームから申し込みました。
申し込むと、次の日にドスパラの問い合わせフォーム上で返信が来ていて、
■エコゆうパック伝票および排出手順書のお受け取り■
------------------------------------------------------------
3日~10日程でエコゆうパック伝票と排出手順書が届きます。
届き次第、手順書に従ってお手続きくださいますようお願いします。
とのこと。
手順
- エコゆうパック伝票および排出手順書の受け取り
- 製品を梱包
- リサイクル製品の集荷依頼
ふむふむ、なるほど。
この返信があってから、5日後に伝票と排出手順書なるものが郵送されてきました。
あとはPCを梱包して、この伝票を貼って、集荷依頼するだけです。
一緒に出して大丈夫なもの
- パソコン本体
- キーボード、マウス、電源ケーブルなどの標準付属品
一緒に出せないもの
- プリンタなどの周辺機器
- 取扱説明書、マニュアル
- フロッピーディスク
- CD-ROM 等
私の場合、PCは元々修理出す際に使ってたダンボールに入ってましたので、付属のCD-ROMだけダンボールから出して、伝票貼り付けて終わり。
集荷は郵便局がしてくれます。
伝票に書いてある電話番号に電話してね、と手順書に書いてあったので、近くの郵便局に電話して、その日の内に集荷してもらいました。
こっちは証明写真も何もありませんので、これでおしまい。
こうして、PCの世代交代騒ぎは幕を閉じたのでした。
iTerm2で本番とステージング環境の取り違えを防ぐための対策一例
SSHクライアント上での本番との取り違え
先日、別のプロジェクトをやってる後輩が、SSHクライアント上で同時に開いていたステージング(テスト)環境とローカル環境の窓を取り違えて、ローカルで叩くはずだったコマンドをステージングで叩いてしまい、ステージングのDBをふっ飛ばしたことがありました。
土日をかけてお客さんがデータを入れていたそうで、月曜日にふっ飛ばしたらしいです。チャット上での会話を見ていましたが、見てるこっちまで「ひえー…Σ(´∀`;)」ってなりました。
Truncate を叩いたらしいです。怖……
元請けはもちろん即謝罪に客先に行きました。「本番じゃなくてよかったですよ」と元請けは言ってくださってましたが……。
元請けさんがいい人でホントよかったですね、後輩くん。
視覚的に分かりやすく
私は幸いにも、本番とローカルやステージングを取り違えたことはありません。
もともとサーバエンジニアだった時代に先輩からも「本番とテスト、絶対に間違えるなよ」ときつく言われていたし、そのための工夫の仕方も教わりました。
当時 Windows でSSHクライアントは PuTTY を使っていたんですが、PuTTY は環境ごとに背景色や文字色を変えることが出来ましたので、ローカル・テスト・本番で文字色を変えていたのです。ですので、ひと目で本番かローカルかが分かるようになっていて、取り違えを防止出来ました。
仕事PCが Mac になって、Mac 上でコンソールを叩くようになってから、iTerm2 でも同じように出来ないかなーと思っていたら、同じように出来る設定を見つけたので、環境によって文字色を変えることで取り違えの防止対策にしています。
これで本番とステージングの取り違えを「完全に」防げるとはもちろん言い切れませんし、これが最適解でもないと思いますが、防止策の1つにはなるのではないかと思います。
もし取り違え対策で悩んでいる方がいれば、参考になればと思います。
iTerm2での表示に工夫
Mac 使ってらっしゃる方は、コンソールに iTerm2 使ってるよ、という方も多いのではないでしょうか。
iTerm2 - macOS Terminal Replacement
今回は iTerm2 での設定方法をご紹介します。
私の iTerm2 での表示はこんな感じです。
上からローカル環境、ステージング(テスト)環境、本番環境の表示です。
多分この記事読んでる方の9割以上が「背景白かよ」って思いましたね。思ったでしょう?!
……よく言われます。
私はどうにも黒背景に色文字だと、5分と持たずに目がチカチカしてしょうがないので、例えコンソールだろうと背景は白です!
まあそこはいいとして。
設定はこんな感じになっています。
設定方法
Preferences → Profiles から、名前を付けた設定を追加することが出来ます。
ここで好きなだけ設定を増やす事が出来ます。
左側の窓に、設定名が並んでいます。
「★」がついているのが、Command+T で開くデフォルトの設定名です。
……本番環境が Honban なの、別にいいじゃないですか。直感的に分かりやすくって思ったんです。Production ですよね、はいスミマセン…。
コツは、各設定にショートカットキーを割り振る所です。
Preferences → Profiles → General タブから設定出来ます。
赤丸がついている所です。
各設定にショートカットキーを振っていますので、例えば本番環境につなぐ時には、
Command + Control + H
で本番用のコンソールが開くようになっています。
もちろんメニューから開いても同じように名前付き設定を開くことは可能ですが、一々マウスに手を戻すの面倒くさい効率が悪いですからね…。
いかがでしたでしょうか。
エンジニアさんにはあんまりウケが良くなさそうな手段だな……とは思いますが(笑)
そもそもディレクトリ構造とかコンソール上のサーバ名とか見たら本番かステージングかなんて一目瞭然じゃないか!というお方もいるとは思いますが、視覚的に瞬時に理解出来る方法として、ご紹介しました。
もしどこかの誰かのお役に立てれば、これ幸い!
今年中にやっておきたいこと
年末までにやりたいことと言えば……
今週のお題?というのがあるみたいなので、ちょっと考えてみる。
今年中にやっておきたいことと言えば……
- PCをリサイクルに出す
- 新入りMacBook Airのバックアップ設定をする
- 髪を切る
ですかね。
PCリサイクルはねー、出そうと思ったらガムテープが家になくて\(^o^)/
こんなんばっかですね。PCリサイクル出したらまたブログにアップします。
新入りMacBook Airのバックアップ設定をする
みなさん、データのバックアップされてますか?
私はこの前、自分のPCが朝起きたら息をして無くて(´;ω;`)でしたけど、データはバックアップしてたので日頃から備えてて良かったな……と思いました。あとBitbucket神だなと思いました。
といっても、エンジニアの皆さんならクラウドやらなんやらで賢くバックアップされてるんでしょうね…。
私のPCは仕事・自宅用共にMacになりましたけれども、以前Windowsで使っていたハードディスクがまだありますので、折角だからこれをMacでも書き込み出来るようにフォーマットしてバックアップ用に使う予定。
今の所クラウドはまだ考えてませんが…なんか良いサービスあるかな。
写真はGoogleフォトに移行してもいいかな、とは思ってますけども。意外に容量食うし、Googleフォトの方が後から検索とかも出来そうだし、色んなことに使いまわし効きそうだし。
HDD2台
- BUFFALO:500GB
- I-O DATA :3TB
BUFFALOくんは私が大学生の頃に頑張って買ったHDDです。ミニタワーより長生きです。まだ現役で生きてますが流石にそろそろいつ死んでも…と思って買ったのが I-O DATA の3TB。こっちは比較的最近買いました。
以前はBUFFALO信者だったんですが、テレビ用のBUFFALO1TBのHDDが1年で壊れて好きなアニメの録画が吹っ飛んでからは I-O DATA に乗り換えました。
といっても、結局は中身の問題らしいですね。WDかどうか分かる方法もあるとか無いとか聞きますが、確かめてません。とにかく新規購入でBUFFALOはもうやめます…。
フォーマットの計画としては、
- 500GB →今まで通り
- 3TB→パーティション切って半分はTimeMachine用、もう半分は普通のバックアップ用
にする予定。
exFATでフォーマット予定。
今年中……やるかなー……。
髪を切る
今年中って、今年あと15日しか無いですもんね……。
年末年始は人にも会うし、年明け早々に出張も入ったし、髪を切っておかねば。年末って美容院さん混むらしいですね。やっぱり皆さん身なりを整えて新年を迎えようって思うんでしょうね。ふーん。
HDD破壊証明の写真が来ました
どんなにぐちゃぐちゃになるのかと思いきや
先日、ドスパラのハードディスク破壊サービスに申し込んでいたハードディスクの、
破壊写真がメールで送られてきました。
HDD物理破壊ってもちろんやってる所も見たことないですし、サーバエンジニア時代も「破壊証明」の書類しか見たことなかったのですが、今回「破壊証明の写真」が送られてくるということで、どんなにぐっちゃぐちゃなHDD写真が送られてくるのかとちょっとドキドキしていたのですが。
………破壊には違いない。
へぇぇこういう風にするんですね。
これが標準なのかどうかすら判断がつきませんが、兎にも角にも、丸7年お世話になったHDDも無事に処理出来ました。