CentOSを使ってみる

開発環境は、Windows 7 Professional(64bit)。

1.公式サイトへアクセスする
CentOS Project

2.上部のGET CENTOSタブをクリックする
f:id:k01ken:20180623130547p:plain

3.DVD ISOボタンをクリックする
f:id:k01ken:20180623130615p:plain

4.どれか適当なリンクを選んでisoイメージをダウンロードする(サイズは4.16GBあった)
f:id:k01ken:20180623130642p:plain

5.空のDVD-RをDVDドライブに入れる

6.DVD-RにISOイメージを焼く。今回はDeepBurnerというソフトを使う。

7.DeepBurnerを起動し、プロジェクトタイプの選択で、ISOイメージの書き込みをクリックし、次へボタンをクリックする。
f:id:k01ken:20180623195143p:plain

8.エクスプローラウィンドウから、焼くISOイメージを選択し、クリック。

9.Windows ディスク イメージ書き込みツールウィンドウの書き込みボタンをクリック。
f:id:k01ken:20180623195632p:plain

10.焼き終わったら、DVDを入れたまま、Windowsを再起動。起動時にF12キーを数回押すとBIOSが起動するので、OSの優先順位をWindowsじゃなくて、CentOSの入ったDVDになるようにする。
すでに、優先順位がDVDのほうが上であれば、自動的にCentOSが実行する。

11.チェックしているので待つ

12.言語の選択で日本語を選択し、続行をクリック

13.自分の場合、OSをインストールするための空き容量がないことが分かった。そのためには、ディスクを追加するか、Windows 7に使っているディスクを縮小して、空き容量を増やさないといけない。

Microsoft Windows 7 - パーティション (ドライブ) を縮小する方法 | HP®カスタマーサポート

上記の方法に従って、約15GB分、未割り当ての領域を作った。

Wiresharkをインストールする

開発環境は、Windows 7 Professional(32bit)。

1.公式サイトへアクセスする
https://www.wireshark.org/

2.ダウンロードアイコンをクリック
f:id:k01ken:20180620074917p:plain

3.Windows Installer (32-bit)をクリックしてインストーラをダウンロード
f:id:k01ken:20180620075024p:plain

4.ダウンロードしたインストーラを実行

5.Nextボタンをクリック
f:id:k01ken:20180620075036p:plain

6.I Agreeボタンをクリック
f:id:k01ken:20180620075046p:plain

7.Nextボタンをクリック
f:id:k01ken:20180620075057p:plain

8.Nextボタンをクリック
f:id:k01ken:20180620075104p:plain

9.Nextボタンをクリック
f:id:k01ken:20180620075117p:plain

10.Nextボタンをクリック
f:id:k01ken:20180620075127p:plain

11.Installボタンをクリック
f:id:k01ken:20180620075137p:plain

12.インストール中に、WinPcapのインストールが始まるので、Nextボタンをクリック
f:id:k01ken:20180620075146p:plain

13.I Agreeボタンをクリック
f:id:k01ken:20180620075202p:plain

14.Installボタンをクリック
f:id:k01ken:20180620075214p:plain

15.Finishボタンをクリック
f:id:k01ken:20180620075225p:plain

16.Wiresharkのインストールが終わったら、Nextボタンをクリック
f:id:k01ken:20180620075235p:plain

17.Finishボタンをクリック
f:id:k01ken:20180620075516p:plain

Visual Studio Code + Gitをインストールする

開発環境は、Windows 7 Professional(64bit)。

1.公式サイトへアクセス
https://code.visualstudio.com/
2.Download for Windowsと書かれたボタンをクリックし、ダウンロードする
f:id:k01ken:20180617175945p:plain

3.ダウンロードしたVSCodeSetup-x64-1.24.1.exeを実行する

4.次へボタンをクリックする
f:id:k01ken:20180617180011p:plain

5.同意するにチェックを入れて、次へボタンをクリックする
f:id:k01ken:20180617180029p:plain

6.次へボタンをクリックする
f:id:k01ken:20180617180057p:plain

7.次へボタンをクリックする
f:id:k01ken:20180617180114p:plain

8.デスクトップ上にアイコンを作成するにチェックを入れて、次へボタンをクリックする
f:id:k01ken:20180617180134p:plain

9.インストールボタンをクリックする
f:id:k01ken:20180617180151p:plain

10.インストールが終了したら、完了ボタンをクリックする
f:id:k01ken:20180617180209p:plain

11.Visual Studio Codeが起動します
f:id:k01ken:20180617180415p:plain

※すでにGitをインストールしている場合は、パスを指定してください。

12.Gitのダウンロードと書かれたボタンをクリックします

13.Gitのサイトへ飛ばされ、右側にある
青っぽい色のボタンをクリック(自分の場合は、Download 2.17.1 for Windowsと書かれていた)して、ダウンロードする。
f:id:k01ken:20180617180948p:plain

14.ダウンロードしたGit-2.17.1.2-64-bit.exeをクリックして実行する。

15.Nextボタンをクリックする
f:id:k01ken:20180617181916p:plain

16.Nextボタンをクリックする
f:id:k01ken:20180617181933p:plain

17.Nextボタンをクリックする
f:id:k01ken:20180617181951p:plain

18.Nextボタンをクリックする
f:id:k01ken:20180617182016p:plain

19.Use Visual Studio Code as Git's default Editorを選択して、Nextボタンをクリックする
f:id:k01ken:20180617182034p:plain

20.。Use Git from the Windows Command Promptを選択して、Nextボタンをクリックする。Use Git from the Windows Command Promptを選択するとWindowsコマンドプロンプトで、Gitが使えるようになる。
f:id:k01ken:20180617182051p:plain

21.Nextボタンをクリックする
f:id:k01ken:20180617182107p:plain

22.Nextボタンをクリックする
f:id:k01ken:20180617182123p:plain

23.Nextボタンをクリックする
f:id:k01ken:20180617182141p:plain

24.Installボタンをクリックする
f:id:k01ken:20180617182204p:plain

25.Finishボタンをクリックする
f:id:k01ken:20180617182403p:plain

26.とりあえず、何か適当なプログラムを書いてみて実行してみます。
rubyで書きますが、すでにrubyインタプリタはパソコン内に入っているという前提で進めます。
上部にあるファイル - 新規ファイルをクリックします。すると、Untitled-1というファイルが作成されます。
f:id:k01ken:20180617183611p:plain

27.以下のコードを入力します。

puts "Hello VS Code!"

f:id:k01ken:20180617183714p:plain
そして、test.rbという名前で、C:ドライブ直下に、vscというディレクトリを作成して、そこに入れます。

28.エディタ下部のコンソール部分で、

cd c:\vsc
ruby test.rb

と入力すると実行されます。
f:id:k01ken:20180617185913p:plain

RailsでBootstrap4のパッケージを使ってみる

開発環境は、Windows 7 Professional(32bit) + ruby 2.3.3p222 + Rails 4.2.1。

1.Gemfileに

gem 'boostrap', '~> 4.1.1'

を追加。
2.以下のコマンドでパッケージをインストール。

bundle install

3./app/assets/stylesheets/ディレクトリ内のapplication.cssapplication.scssにリネームする。
4.application.css内に、

@import "bootstrap";

を追加する。
同時に、

 *= require_tree .
 *= require_self

は削除しておく。
5./app/assets/javascripts/application.js内に

//= require jquery3
//= require popper
//= require bootstrap-sprockets

を追加。
6.テストしてみるために、適当なビューにて、

<%= form_tag("/create", :method => "post") do %>
<%= text_field_tag(:name) %>
<%= text_field_tag(:description) %>
<%= submit_tag("投稿",:class => "btn btn-primary") %>
<% end %>

と入力する。
実行結果
f:id:k01ken:20180616234727p:plain

参考サイト
GitHub - twbs/bootstrap-rubygem: Bootstrap 4 Ruby Gem for Rails / Sprockets and Compass.
Railsアプリで Bootstrap 4 を利用する
submit_tag - リファレンス - - Railsドキュメント
Buttons · Bootstrap

Railsでデータベースとのやりとりをするメソッドのまとめ

開発環境は、Windows 7 Professional(32bit) + ruby 2.3.3p222 + Rails 4.2.1。

■データを追加する
・postsテーブル(モデル名はpost)のname,ageカラムにデータ(nameカラムにはTaro、ageカラムには20)を入れるとする。今回は以下に4つの方法を書いておく。

post = Post.new
post.name = "Taro"
post.age = 20
post.save

post = Post.new
post.assign_attributes(name: "Taro", age: 20)
post.save

post = Post.new(name: "Taro", age: 20)
post.save

Post.create(name: "Taro", age: 20)


■データを更新する
・idが3のデータのname,ageカラムにデータが入っているとして、新たなデータ(nameカラムには、Hanako、ageカラムには30)を入れて、データを上書きします。以下に3つの方法を書いておきます。

post = Post.find(3)
post.name = "Hanako"
post.age = 30
post.save

post = Post.find(3)
post.assign_attributes(name: "Hanako", age: 30)
post.save

# update_attributesは、assign_attributesとsaveを合わせたようなもの
post = Post.find(3)
post.update_attributes(name: "Hanako", age: 30)


■データを削除する

post = Post.find(1)
post.destroy


■データを取得する

post = Post.first

# allは、Rails 3.2まではすべてのレコードをモデルオブジェクトの配列にして返していた
# Rails 4からは検索条件のないリレーショナルオブジェクトを返すようになった
posts = Post.all

# idが3のデータを取得する。存在しない数字を入力すると例外が発生
post = Post.find(3)

# 任意のカラムを使ってレコードを検索する
# 以下の場合は、nameカラムがTaroのデータを取得する
# なければnilを返す
posts = Post.find_by(name: "Taro")
# カラムは複数指定することができる
posts = Post.find_by(name: "Taro", age: 20)

# where句を使ってデータを取得する
posts = Post.where(name: "Taro")
# whereメソッドを複数つなげることで複数の条件を指定できる。
posts = Post.where(name: "Taro").where(age: 30)
# 文字列で検索条件を指定することもできる。ageが30より小さいものを取得。
posts = Post.where("age < 30")
# WHEREの否定も使える。以下はnameカラムがTaro『でない』データを取得。
posts = Post.where.not(name: "Taro")
# ハッシュの値を配列にすると、複数の候補のどれかと同じなら取得。
posts = Post.where(id: [2,7,13])
# ハッシュの値を範囲オブジェクトにすると、その範囲の値があれば取得。
posts = Post.where(id: 5..10)

whereメソッドでは、条件に文字列などを入力しますが、外部から受け取る場合、文字列中にシングルクォテーションなどを挿入して、SQLインジェクションを起こそうとする人がいるため、その対策として、プレースホルダーというものを使います。SQL文に書かれた?を文字列に置き換えます。

name = "Taro"
posts = Post.where("name = ?", name)

# プレースホルダーは複数指定できます。
posts = Post.where("name = ? AND member = ?", "Taro", true)


whereメソッドなどのリレーショナルオブジェクトは、書いた時点では実行されず、Rubyと同名の配列に関するメソッドである、eachやmapやlengthを用いることで始めて実行され、モデルオブジェクトの配列が得られる。もし、すぐにモデルオブジェクトを得たければ、

posts = Post.where(name: "Taro").load

上記のように、loadメソッドを用います。


Railsのメソッドを用いたSQLのSELECT文の書き方

メソッドはメソッドチェーンでつなげることができます。SQLと違って、つなげる順番は自由です。
select(文字列) - SELECT
from(文字列) - FROM
joins(シンボル/文字列) - JOIN - テーブルの結合
includes(シンボル) - データベースによる - 関連付けの名前を指定することで関連するモデルオブジェクトをロード。
where(ハッシュ/文字列/配列) - WHERE - 検索条件の指定
group(文字列) - GROUP
having(文字列) - HAVING
limit(整数) - LIMIT - 取得するレコード数の上限
offset(整数) - OFFSET - 何行目のレコードから取得するか指定
order(文字列/シンボル/ハッシュ) - ORDER BY - ソート対象のカラム名

# カラム名をシンボルで指定
posts = Post.where(age: 30).order(:id)
# カラム名をハッシュのキーとして、降順/昇順を :desc or :ascでハッシュの値に指定
posts = Post.where(age: 30).order(id: :desc)

reorder(文字列) - ORDER BY - ORDER BY句の上書き
reverse_order - ORDER BY - ORDER BY句の降順/昇順を逆にする
lock(文字列) - データーベースによる - MySQLのロック機能をつかう
readonly - レコードを読み込み専用にする
distinct - 検索結果の重複をなくす
none - 何も検索しないリレーショナルオブジェクトを返す


■発行されたSQL文を知る

posts = Post.all
puts posts.to_sql


SQL文を直接書く

posts = post.find_by_sql("select * from posts where name = 'Taro'")

# SQL文でプレースホルダーを用いる場合、全体を配列で指定しないといけない。
posts = post.find_by_sql(["select * from posts where name = ?", "Taro"])

Railsでデータベースからデータを受け取って表示する

開発環境は、Windows 7 Professional(32bit) + ruby 2.3.3p222 + Rails 4.2.1。

※下記のすべてのコマンド入力時は作ったアプリのディレクトリをカレントディレクトリに設定しておいてください。

■データベースを作る
railsでは最初に何も指定しなければSQliteを使うことになっている。
アプリを作成した段階でdbディレクトリ内にdevlopment.sqlite3test.sqlite3が自動的に作成されている。
・データベースの設定はconfig/database.ymlに書いてある。
 ・development(開発),test(テスト),production(本番)の3つのモードに分かれている。
・アプリのルート部分をカレントディレクトリにすると、

rake db:create

既に作られているのでここは、飛ばして良い。
データベースを削除する場合は、

rake db:drop

を入力する。


■モデルを作る
モデルは下記のようなコマンドで作成することができます。

rails generate model モデル名
rails generate model モデル名 フィールド名1:データ型1...

今回は

rails generate post

と入力します。すると、app/models/ディレクトリ内にpost.rbが作成されています。


■テーブルを作る
・モデルを作成した段階で、db/migrateディレクトリ内にマイグレーションスクリプトというファイルが作成されています。このファイルを利用することで、コマンド上からテーブルを作成することができます。
カラムのデータ型として指定可能なものは以下のサイトが参考になります。
モデルの作成とRailsで指定可能なデータ型 - Ruby on Rails入門
今回は、create_tableブロック内に以下のコードを追加。改行ごとにカンマはいりません。

	t.string :name
	t.text :description

次に

rake db:migrate

と入力することでpostsテーブルが作成されています。
次に、作ったテーブルにデータを入れてみます。
dbディレクトリにseeds.rbが作成されているので、

6.times{
	Post.create(:name => '太郎', :description => 'こんにちは。投稿になります。')
}

同じデータを6個入れてみます。実行は、

rake db:seed

これでデータが入ります。


■データベースからデータを受け取る
呼び出したいコントローラ(今回はtop_controller.rb)に以下のメソッドを追加する。

	def hello
		@posts = Post.all
	end

config/routes.rbに、

	get 'hello' => 'top#hello'

app/views/topディレクトリにhello.html.erbという名前で以下のコードを追加する。

<% @posts.each do |item| %>
	名前 <%= item.name %>, 投稿 <%= item.description %><br />
<% end %>

サーバーを

rails server

で立ち上げて、localhost:3000/helloへアクセスすると成功。CakePHPと違ってモデルと同じ名前のコントローラじゃなくても問題なく読み出せる。
CakePHPの場合は、TableRegistry::getでテーブル名を取得しないといけないが、Railsはシンプルに取得できる。

実行結果
f:id:k01ken:20180607201133p:plain


■フォームからデータベースに入れる

ビュー側の作成 - app/views/top/index.html.erb

<%= form_tag("/add", :method => "post") do %>
<%= text_field_tag(:name) %>
<%= text_field_tag(:description) %>
<%= submit_tag("投稿") %>
<% end %>

コントローラ側に追加 - app/controllers/top_controllers.rb

	def index
	end

	def add
		@post = Post.new(name: params[:name], description: params[:description])
		if @post.save
			redirect_to "/hello"
		else
			redirect_to "/index"
		end
	end

config/route.rbにて、

  	root 'top#index'
	post 'add' => 'top#add'

を追加。
これで、フォームからデータを入力して、データベースに入れることができます。

Unity2Dでサンプルサイトを参考にしてゲームを1本作ってみる

効率的に上達するためには、何か1本ゲームを作ることだろうと思い、下記の記事を参考にして、ゲームを1本作ってみたいと思いました。
【Unity入門】60分で作るシューティングゲーム 第1回 - おもちゃラボ

1.Unityを起動し、右上のNEWボタンをクリックします。
f:id:k01ken:20180607073123p:plain
2. 3Dにチェックが入っているところを2Dにチェックを入れて、Create Projectボタンをクリックします。
f:id:k01ken:20180607073155p:plain
3.ページ上部のGameタグをクリックし、Free Aspectの部分をクリックし、+ボタンをクリックし、Typeの部分をAspect Ratioにして、Width & Heightの部分に、それぞれ、9と16を入れる。Aspect Ratioにしないと画像がうまく表示されないので注意。
f:id:k01ken:20180607073810p:plain
4.下記のリンクにアクセスして、ゲームに必要な素材をダウンロードする。右上の3つの丸をクリックし、直接ダウンロードをクリックすると、ダウンロードが始まる。
Dropbox - SampleShooting_Material.zip
f:id:k01ken:20180607074151p:plain
5.ダウンロードが終わったら、解凍し、SampleShootingディレクトリ内にある.DS_Store以外のファイルをすべてを、ドラッグ&ドロップで、UnityのProjectタブのAssetsに移す。
f:id:k01ken:20180607074639p:plain
6.Assetsにあるrocketをドラッグ&ドロップでSceneタブ内のウィンドウへ移す。
f:id:k01ken:20180607074912p:plain
7. ProjectタブのCreateをクリックし、C# Scriptをクリックし、名前をRocketControllerとする。RocketControllerをクリックして、次にInspectorタブをクリックし、Openボタンをクリックします。
f:id:k01ken:20180607075248p:plain
8.スクリプトを記入して、RocketControllerをHierarchyタブにあるrocketにドラッグ&ドロップして、ゲーム実行。
f:id:k01ken:20180607080220p:plain