Engineer Llfe Dogear

エンジニアリング活動におけるメモやTipsを書くブログ

AWSの勉強をはじめたときの参考にしたサイト

AWSの勉強を始めた時に参考にしたサイトを以下の通りメモしておく。

AWSドキュメント

AWS クラウドサービス活用資料集

  • URL
  • 内容
    • 初心者向けトレーニング資料
    • ソリューション・活用事例紹介資料
    • 製品・サービス別資料
      • ストレージとコンテンツ配信
      • データベースと分析
      • アドミニストレーション & セキュリティ
      • アプリケーションサービスとモバイル・デバイス
      • デプロイ & マネジメント
      • IoT
      • 開発者用ツール
      • エンタプライズアプリケーション
      • SDK & IDE
    • セキュリティ・コンプライアンス資料
    • その他の活用資料

ホワイトペーパー

AWSドキュメント

よくある質問

AWSパートナープログラム

  • 登録すると、E-learningの受講、イベントの参加、パートナートレーニングの参加が可能

無料オンライン動画とラボ

書籍

Amazon Web Services パターン別構築・運用ガイド

WebPage(AWSのサイト以外)

AWS知識 + Cloud知識

資格系

試験(資格)

本のサマライズTips

技術書や、様々なビジネス本などをサマライズするときに、効率化を行うためのTipsを紹介

利用するものは以下の2つ

本の中から図を抽出する方法

  1. Scannableを起動し、本の中から必要な図を撮影する
  2. 切り取りを選択し、切り取る4点を手動で調整する
  3. 完了を選択すると、指定した4点が矩形になるように補正してくれる
  4. 送信 > 共有 > Google Drive を選択することで Google Driaveに保存する(保存場所は任意)

本の中から必要な文章を抽出する方法

  1. Scannableを起動し、本の中から必要な文章を撮影する
  2. 切り取りを選択し、切り取る4点を手動で調整する
  3. 完了を選択すると、指定した4点が矩形になるように補正してくれる
  4. 送信 > 共有 > Google Drive を選択することで Google Driaveに保存する(保存場所は任意)
  5. PCのWebページで、Googleドライブを開く
  6. 4で保存した画像を選択 > 右クリック > アプリで開く > Googleドキュメントを選択
  7. Googldドキュメント形式で画像 + OCRがかかった文字列のファイルが生成される
  8. 生成されたファイルから必要な文章を抽出する

以前は、本のサマライズをするときは、図や文書を自分で書き写すなどして大変非効率でしたが、この方法で大分効率化を測ることができるようになりました。
もっと良い方法はあるのかもしれませんが思いますが。。。
また、本を自炊してしまえばもっと効率的ではありませすね。
現状の課題としては、Goodleドライブにuploadした時点でGoogleドキュメント形式に自動で変換されると良いのですが、そのような設定方法が見つかっていません。

Postgresqlの設定からRailsアプリケーションをherokuで動かすまで⑥

Railsの新規アプリケーションをherokuにデプロイする手順

今回は自前で作成したRailsアプリケーションをHerokuへデプロイする手順について説明していきます。

1. Railsアプリケーションの生成

まず、myAppという名前でRailsアプリケーションを作成します。 databaseのオプションとして -d postgresqlを指定します。 postgresql

$ rails new myApp -d postgresql // myAppというRails アプリケーションが生成
$ cd myApp

2. ベースとなるモデル、ビュー、コントローラの作成

Railsのscaffoldで、サンプルのモデル、ビュー、コントローラのひな形を作成します。 今回はtitle、authorをもつbookモデルを生成します。

$ rails generate scaffold book title:string author:string

3. Gemfileの修正とgemのインストール

以下のことを実現するためにGemfileの修正を行います。 * WebサーバをPumaで動かすためpumaの追加 * Rails4をHerokuで動かすためにrails_12factorを追加 * RailsJavaScriptのエンジンであるV8を動かすためtherubyracerを追加

source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.1'
# Use postgresql as the database for Active Record
gem 'pg'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'therubyracer', platforms: :ruby  // コメントアウトを削除
gem 'rails_12factor'    // 追加
gem 'puma'  // 追加
# Use jquery as the JavaScript library

更新したgemファイルをinstallします。

$ bundle install

4. WebサーバのPumaへの変更

Procfileを作成し、以下の記述を追加します。

web: bundle exec puma -C config/puma.rb

config/puma.rbを作成し、以下の通り設定(設定は、herokuサンプルのものを参考)

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # See: https://devcenter.heroku.com/articles/deploying-rails-applications-    with-the-puma-web-server#on-worker-boot
  ActiveRecord::Base.establish_connection
end

5. DBの設定変更

PostgresqlでDBが生成できるよう、ユーザ名などの設定を変更します。 config/database.ymlの設定test、develop項目に関して以下の通り設定します。

// PostgresqlのDB作成権限をもつユーザ名とパスワードを指定します。
// ここでは、それぞれuser、fooを指定しています。
development:
  <<: *default
  database: myapps_development
  username: user
  password: foo

test:
  <<: *default
  database: myapps_test
  username: user
  password: foo

6. ローカルでの動作確認

ローカル環境で、Rails Applicationが動作することを確認します。(※ こちらは前回の記事と同じです) まず、DBの作成

// 事前にpostgresqを起動していることを確認
$ bundel exec rake db:create db:migrate

次に、アプリの起動

foreman start web

ブラウザでhttp://localhost:5000/booksにアクセスし、作成したRailsアプリが起動していることを確認します。

7. railsアプリケーションのgitでの管理設定

まず、作成しているrailsアプリケーションのrootディレクトリでgitの管理を設定します。

git init

次に、.gitignoreを追加し、以下の通り設定します。(herokuのサンプル or herou createで作成される.gitignoreを参考) 必要に応じて、ignoreするファイルを追加します。

# See https://help.github.com/articles/ignoring-files for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
#   git config --global core.excludesfile '~/.gitignore_global'

# Ignore bundler config.
/.bundle

# Ignore all logfiles and tempfiles.
/log/*
!/log/.keep
/tmp

gitで管理するファイルの追加とコミットし

$ git add . //今回は、rootディレクトリ以下のものを管理するようにする
$ git commit -m "initial commit"

8. herokuでの動作確認

herokuへのログイン

$ heroku login

作成したrailsのrootディレクトリで以下のコマンドを実行します。(gitのremoteにheroku用の設定が追加される)

$ heroku create

index.htmlをpublic以下に追加 ※ 追加しないと、herokuにrails アプリケーションをpushしたときにerrorとなる

herokuのremoteへアプリをpushします。

$ git push heroku master

デプロイしたアプリを開きます。

$ heroku open

web ブラウザーで、デプロしたアプリが開かれます。

このとき、以下のようなエラーが出た場合、heroku側のDBを再設定します。

2015-06-21T06:40:16.916385+00:00 app[web.1]: Started GET "/app_infos" for 36.12.227.221 at 2015-06-21 06:40:16 +0000
2015-06-21T06:40:16.929108+00:00 app[web.1]:   AppInfo Load (8.2ms)  SELECT "app_infos".* FROM "app_infos"
2015-06-21T06:40:16.929120+00:00 app[web.1]: PG::UndefinedTable: ERROR:  relation "app_infos" does not exist
2015-06-21T06:40:16.929122+00:00 app[web.1]: LINE 1: SELECT "app_infos".* FROM "app_infos"
2015-06-21T06:40:16.929123+00:00 app[web.1]:                                   ^
2015-06-21T06:40:16.929124+00:00 app[web.1]: : SELECT "app_infos".* FROM "app_infos"
2015-06-21T06:40:16.929932+00:00 app[web.1]:   Rendered app_infos/index.html.erb within layouts/application (9.8ms)
2015-06-21T06:40:16.931850+00:00 app[web.1]:
2015-06-21T06:40:16.919048+00:00 app[web.1]: Processing by AppInfosController#index as HTML
2015-06-21T06:40:16.930101+00:00 app[web.1]: Completed 500 Internal Server Error in 11ms (ActiveRecord: 8.2ms)
2015-06-21T06:40:16.931853+00:00 app[web.1]: ActionView::Template::Error (PG::UndefinedTable: ERROR:  relation "app_infos" does not exist
2015-06-21T06:40:16.931855+00:00 app[web.1]: LINE 1: SELECT "app_infos".* FROM "app_infos"
2015-06-21T06:40:16.931856+00:00 app[web.1]:                                   ^

再設定は以下の通り

$ heroku rake db:reset
$ heroku rake db:migrate

以上が、自前で作成したRailsアプリケーションをherokuにデプロイする手順に関してです。

参考文献

Postgresqlの設定からRailsアプリケーションをherokuで動かすまで⑤

HerokuでRailsアプリの動作チュートリアル

HerokuのGetting Started onHerokuのページのTutorialの手順に沿って、RailsアプリケーションをHerokuにデプロイする流れを説明します。

前提条件

  • herokuのアカウントを作成済み
  • ruby 2.2.0 インストール済み (2015/06/31現在)
  • Bundlerがインストール済み (gem instal bundler)

1. Herokuへのログイン

termainalで以下を入力します。

$ heroku login
Enter your Heroku credentials.
Email: 登録したe-mailの入力
Password (typing will be hidden): パスワード入力
Authentication successful.

2. Herokuが用意しているサンプルプログラムの準備

gitでサンプルプログラムを取得します。

$ git clone https://github.com/heroku/ruby-getting-started.git
$ cd ruby-getting-started

3. サンプルアプリのデプロイ

以下を入力することで、Heroku上にデプロイするためのアプリを作成します。

$ heroku create
Creating polar-inlet- .....

上記手順により、gitのremoteにherokuの項目が追加されています。 次に、herokuのremoteにアプリをpushします。

$ git push heroku master
Fetching repository, done.
....
// master branchをherokuというリモートにpush

上記手順でデプロイは完了です。実際に動作していることを確認するため以下を入力すると、heroku上にデプロイしたアプリがブラウザで開かれます。

$ heroku open    // heroku アプリを開く(webブラウザーで、デプロイしたアプリ画面が開かれる)

4. ログを見る

以下のコマンドを入力することで、herokuのログを確認できます。

heroku logs --tail  // 稼働しているアプリのログが表示される

// Ctrl + C でストップ

5. Procfileの確認

Procfileは、アプリが起動時に実行したいコマンドを記述するファイルです。Procfileは、Railsプロジェクトのトップディレクトリに作成します。サンプルでは以下の通り定義されており、webサーバとしてpumaを利用するように設定されています。

web: bundle exec puma -C config/puma.rb

必要に応じて、コマンドを追加しますが、今回は特に変更はありません。

6. dynoの確認

dynoは、Procfileで指定したコマンドを動作させるlight weightなコンテナです。 psコマンドを利用することで、いくつのdynoを利用しちえるか確認することができます。

$ heroku ps

=== web (1X): `bundle exec puma -C config/puma.rb`
web.1: idle 2015/06/21 16:00:01

必要に応じて、このdynoの数を調整する必要があります。

7. ローカルのGeimfileで指定した関連ファイルをインストール

次に、Heroku上で動かしたRailsアプリをLocal環境でも動作させます。 まず、以下のコマンドにより、Gemfileに記述された必要なモジュールをインストールします。

$ bundle install // 関連するgemのモジュールがインストールされる

Using rake 10.4.2
Using i18n 0.7.0
Using json 1.8.2
Using minitest 5.6.1
Using thread_safe 0.3.5
Using tzinfo 1.2.2
Using activesupport 4.2.0
Using builder 3.2.2
Using erubis 2.7.0
Using mini_portile 0.6.
・・・

8. ローカルでサンプルアプリを動かす

次に、Databaseの設定を行います。Herokuでは基本的にPostgresqlを利用しますので、Local環境でもPostgresqlを利用するように設定を行います。この時、バックグラウンドでPostgresqlが動いていないと、DB作成などに失敗するので注意が必要です。postgresqlの起動に関してはこちらの記事を参照してください。

config/database.ymlの設定test、develop項目に関して以下の通り設定します。

// PostgresqlのDB作成権限をもつユーザ名とパスワードを指定します。
// ここでは、それぞれuser、fooを指定しています。
development:
  <<: *default
  database: ruby-getting-started_development
  username: user
  password: foo
  test:

  <<: *default
  database: ruby-getting-started_test
  username: user
  password: foo

以下のコマンドでデータベースの作成を行います。

// 事前にpostgresqlを起動していることを確認
$ bundle exec rake db:create db:migrate

次に、アプリの起動させます。

$ foreman start web

最後に、ブラウザで localhost:5000 にアクセスし、heroku openで開いたものと同様のRails アプリが起動していることを確認します。以下のような画面が開かれるとOKです。 f:id:dogear11:20150627150207p:plain

次回の記事に関して

次回は、Postgresqlの設定からRailsアプリケーションをherokuで動かすまでの、最後の記事として、自前で作成したRailsアプリケーションをherokuにデプロイする手順に関して説明します。

Postgresqlの設定からRailsアプリケーションをherokuで動かすまで④

今回は、herokuのアカウント作成から、ツールのインストール手順を説明します。

1. アカウントの作成

Heroku | Cloud Application Platformにアクセスし、Sign up for freeを選択します。

f:id:dogear11:20150623230111p:plain

次に、下図のフォームの内容を入力し、Create Free Acountを選択します。 f:id:dogear11:20150623230406p:plain

メールアドレスの確認後、アカウントが作成されます。

2. Toolbeltのインストール

次にそれぞれの環境にあった heroku toolbeltをインストールします。今回の実行環境はMacであるため、Mac OSX 選択し、ダウンロード後、実行します。 f:id:dogear11:20150623230647p:plain

インストール後、正しくheroku toolbeltがインストールされているかを確認します。 具体的には、terminalを開き、以下のコマンドを入力することで、正しくheroku toolbeltのバージョン情報が表示されることを確認します。

$ heroku version

heroku-toolbelt/3.38.3 (x86_64-darwin10.8.0) ruby/1.9.3   // インストールしたtoolbeltの情報
...

3. Herokuへのssh公開鍵の登録

まず、heroku用のssh 鍵をterminalを開いて以下の通り、id_rsa_herokuという鍵を作成します。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
// 以下の通り、鍵の保存先と名前が聞かれるので、id_rsa_herokuと入力
Enter file in which to save the key (/Users/hoge/.ssh/id_rsa):id_rsa_heroku
// 次にパスフレーズを2度入力
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

次に、herokuアクセス時に、作成したid_ras_herokuが使われるようにsshのconfigの設定を行います。手順は以下の通りです。
1. ~/.ssh へ移動
2. configファイルがなければconfigファイルを作成
3. configファイルに、以下の通りheroku用のconfig情報を記述

Host    heroku.com
User    git
port    22
Hostname  heroku.com
IdentityFile ~/.ssh/id_rsa_heroku
TCPKeepAlive    yes
IdentitiesOnly  yes

次に、herokuにログインし、sshの公開鍵を登録します。手順は以下の通りです。

1. terminalからherokuへのログイン

$ heroku login
// 登録時に入力したEmailアドレスとパスワードを入力
Enter your Heroku credentials.
Email:
Password (typing will be hidden):
Authentication successful.      //Authentication successfulと出れば、ログイン成功

2. herokuへのssh公開鍵の登録 terminalから以下の通り、先ほど作成したid_rsa_herokuを指定して鍵を追加

$heroku keys:add ~/.ssh/id_rsa_heroku

参考URL

次回の記事に関して

次回は、Herokuのチュートリアルの手順に沿って、RailsアプリケーションをHerokuへデプロイするところまで説明をします。

Postgresqlの設定からRailsアプリケーションをherokuで動かすまで③

前回の記事で、PostgresqlのTableの生成まで終わりました。実際にDBへTableを追加して、データをinsertする手順などについて説明します。

PostgresqlのTableの設定

前提条件

fooというユーザがオーナーのbarというデータベースを選択している

1. テーブルの追加

bar=> create table test (
  key            char(008)     primary key,
  column1          int8,
  column2          int8,
  column3          int8
);

2. テーブル一覧の表示

bar=>\d

       List of relations
 Schema | Name | Type  | Owner
--------+------+-------+-------
 public | test | table | foo

3. データの追加

bar=> insert into test values('id1', 100, 200, 300);
bar=> insert into test values('id2', 100, 200, 300);

4. テーブル内のデータの確認

bar=> select * form test;

   key    | colmun1 | colmun2 | column3
----------+---------+---------+-------
 id1      |   100   |   200   |   300
 id2      |   100   |   200   |   300
(2 rows)

5. テーブルの削除

bar=> drop table test;

次回の記事に関して

これまでの3回で、ローカル環境でのPostgresqlのインストールと初期設定などが終わりましたので、次回の記事では、herokuのインストール手順について説明します。

Postgresqlの設定からRailsアプリケーションをherokuで動かすまで②

前回の記事で、Postgresqlのインストールと初期設定まで終わったので、今回の記事では、ユーザの作成とDBの作成について手順を説明していきます。

Postgresqlでユーザ作成+DB作成

1. ログイン

ターミナルで以下を入力

psql -d postgres

以降の手順は、postgresql内での操作。

2. DB一覧表示

user=> \l

   Name    |       Owner        | Encoding |   Collate   |    Ctype    |             Access privileges             
-----------+--------------------+----------+-------------+-------------+-------------------------------------------
 postgres  | user               | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 template0 | user               | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/user                                  +
           |                    |          |             |             | user=CTc/user
 template1 | user               | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/user                                  +
           |                    |          |             |             | user=CTc/user

3. ユーザ作成

user=> create user foo;   //fooというユーザを作成

// CREATE ROLEと表示される

4. ユーザのパスワード変更

user=> \password foo      //ユーザfooのパスワード変更

//Enter neww passowrd:
//Enter it again:

5. ユーザ一覧の表示

user=> \du

                                 List of roles
     Role name      |                   Attributes                   | Member of 
--------------------+------------------------------------------------+-----------
 foo                |                                                | {}
 user               | Superuser, Create role, Create DB, Replication | {}

6. データベース作成

user=> create database bar;   //barというデータベースを作成
// CREATE DATABASEと表示される

7. データベースのオーナーの変更

user=> alter database bar owner to foo; //barというデータベースのオーナーをfooに変更

8. データベースとユーザの切り替え

user=> \c bar foo     //fooがオーナーのデータベースbarに切り替え
// You are now connected to database "bar" as user "foo". と表示される
// bar=> という表示に切り替わる

次回の記事に関して

次回の記事では、Tableの作成などについて説明します。