Imomemo

色々とやっていきたい

常時SSL化に伴う.htaccessの設定で「Forbidden You don’t have permission」エラー

SSL化対応のため、httpでのアクセスをhttpsへリダイレクトしようとしていたらハマったとこ

SSL化していないサイトに対して、Chromeが警告を出すようになるそうなので最近はよくSSL化対応の作業をしている。

ちなみにこのときは事情により、サブドメイン内のpublic_html直下に置いてある .htaccess での制御だった。

その中で、.htaccessの設定をしているとあるエラーに遭遇!

Forbidden You don’t have permission to access / on this server.

というエラー。 .htaccessの中身は

RewriteEngine on  
RewriteCond %{HTTPS} off  
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]  

色々ググって調べたところこの書き方自体に問題はないし、 このファイル自身のパーミッションは604で特に問題ないはず。

+FollowSymLinksというオプションが必要だった

結論から言うと下記の

Options +FollowSymLinks  

を先頭に追加することで正常に動作するようになった。

Options +FollowSymLinksとは何なのか

解決はしたが意味が分からなかったので軽く調べてみた。
この設定は「シンボリックリンクを有効にする」という設定のようだ。

確かに今回の問題が起きたサイトではシンボリックリンクを使用していた。

・参考サイト
シンボリックリンクの使い方と落とし穴
https://qiita.com/go_astrayer/items/ab993cdc420d4f7f50d4

Laravelのthe requested PHP extension ** is missing from your systemというエラー+α

php.iniのextenstionの有効化が正しく出来ているか

extenstionを有効化するためには、php.iniファイルの「;」のコメントアウトを取り除くが、それだけでなくextensionフォルダの指定部分も ; を取り除かないといけない。

php.iniのextenstion Composer laravel install時のエラー

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - laravel/framework v5.5.9 requires ext-mbstring * -> the requested PHP exte
nsion mbstring is missing from your system.

php.iniの途中の部分に出てくる以下のくだり

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
;extension_dir = "./"
; On windows:
;extension_dir = "ext"

windowsなら On windows: 下の ; のみ取り除く。

おまけ:php artisan migrate でのエラー

could not find driver

というエラー が出た。

php.iniで pdoのextensionが無効になってないか確認する。

自分の場合はsqlite3を使おうとしていた時だったので

;extension=pdo_firebird
;extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
extension=pdo_sqlite

900行目付近のこのあたり、使いたいDBに合わせてPDOを有効にすると解決した。

スマホでのWebAudioAPIで音が鳴らない場合、frequency,gainの記述方法に原因があるかも

スマホでWebAudioAPIを使う

今はWebAudioAPIという便利なものがあって、簡単にブラウザで音楽を再生させたり、音程を指定して簡単なシンセみたいなものを作ることが出来る。

今回はスマホブラウザでもWebAudioAPIを使う基本点とメトロノームのwebアプリを作っている上で大いにハマった点をメモ。

ユーザーからの操作を起点にしないと音を鳴らせない

これは大体すぐ出てくる情報だけど、スマホブラウザはいきなり音が出るwebサイトを嫌っているので自動再生は出来ない。

クリックや何らかのユーザー操作を起点として音を再生する必要がある。

AudioContextの用意など自体は前もってしておいて構わない。
start,resumeなど音のスタート処理はユーザーイベント時に発生させる必要がある。

それでも音が鳴らない

しかし、上の条件をきちんとクリアしても音が鳴らなかった。 ググりまくったけどどうにもこうにも良い情報がでてこない。

色々試しまくった結果...

frequency(音程)、gain(音量)の書き方に問題がある

PCブラウザでは

// 音程を指定    
osc.frequency.value = 1200; 
// 音量を指定
gain.gain.value = 0;    
// 設定を適用 
osc.connect(gain).connect(context.destination);

こういった記法で問題なく動いた。

しかし、スマホでは

// 音程を指定
osc.frequency.value = 1200;
// 音量を指定
gain.gain.value = 0;
// 設定を適用
osc.connect(gain);
gain.connect(context.destination);

この記法でないと動かなかった。
あまり出てこない情報だったのでハマったが今後は気を付けようと思う。

AWS認定ソリューションアーキテクトアソシエイトを受けるにあたって抑えておきたいところメモ

AWS認定SAA試験(2018)を受験することにした

フロントエンドからインフラまで全体を把握しておきたいのと単に強くなりたくて受けることにした。 クラウドはもうすでに流行りを超えて主流になってきているし、とっておいて損はないだろうということで。

受験を終えたら体験記を書くとして、今回はAWS SAAを受ける上で、重要そうな部分をメモしておこうと思います。 網羅的なものではなくあくまで個人的に引っかかりそうな部分のみのメモです。

VPC

設定の適用範囲が違う

どちらもファイアウォールの機能を果たすが、設定する範囲が

・セキュリティグループはインスタンス単位
・NACLはサブネット単位

ステートの保持

・セキュリティグループはステートフル ・NACLはステートレス

なので、セキュリティグループはインバウンドの通信を許可すると自動的にアウトバウンドも許可される。
NACLはステートレスなので、この場合はアウトバウントも個別に許可の設定が必要になる。

デフォルトの設定

・セキュリティグループはインバウンド不許可、アウトバウンドの許可(同セキュリティグループのインスタンスからのインバウンドは許可) ・NACLはすべて拒否?

NACLのルールナンバー

それぞれのルールには固有のルールナンバーがある。 ナンバーの低い方のルールが優先的に評価される。

VPN接続

VPN 接続を使用して Amazon VPC をリモートネットワークに接続できる

AWS マネージド VPNIPsec および VPN 接続) ・AWS VPN CloudHub(リモートネットワークが複数あるとき) ・サードパーティー製ソフトウェア VPN アプライアンス

https://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/vpn-connections.html

EC2

・従量課金でスケーラブルなサーバーを立てれる ・同リージョン内のS3、EC2などへのデータ転送は無料

EC2とPrivate IPの固定

・EC2-Classicでは、起動時にPrivate IPが毎回変わる ・EC2-VPC(現在の通常のEC2)では、固定

リージョン毎のリミット

デフォルトではリージョンでインスタンス20個のソフトリミットがある。 AWS側に申請するとリミットを解除してくれる。

On-Demand,Reserved,Spotの違い

On-Demand

需要に応じて使われる普通のEC2。 便利だけどコストがかかる。

Reserved

前もって一定期間分の予約をして買うタイプのインスタンス。 途中で変更したりは一応出来るが色々条件があるのでオンデマンドほど柔軟ではない。 https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ri-modifying.html

ちなみに途中でキャンセルすることは出来ない、ただしマーケットプレイスで売り飛ばすことができる。

Spot

余っているインスタンスを大幅値引きで使わせてもらえる。 ただし、いきなり終了させられたりする場合があるのでそういったケースにも対応できる用途で使う。

AWSに終了させられた場合は最後の1時間分は切り捨てでその1時間分の費用は無料となる。

EBS-Backedとインスタンスストア

インスタンス自身にデータを保存しておくインスタンスストア型のインスタンスと、EBSというストレージに保存するEBS-Backed型のインスタンスがある。

基本的にインスタンスを停止させるとそのインスタンス内のすべてのデータは失われてしまう。 なので普通はEBS-Backedを使う。

EBS

インスタンスのデータを保存しておく ・データはインスタンスが終了・停止しても保持される ・一つのインスタンスにしかアタッチ出来ない、ただしEC2が複数のEBSを持つのはあり ・AZ内に自動的にレプリカが作られる

EBSのタイプ

汎用 SSD (gp2)

普通のEBS。

プロビジョンド IOPS SSD (io1)

高性能なタイプ。 持続的な IOPS パフォーマンス、またはボリュームあたり 10,000 IOPS または 160 MiB/秒以上のスループットを必要とする重要なアプリケーションなどに。

スループット最適化 HDD (st1)

アクセス頻度とスループットが高いワークロード用に設計された低コストの HDD ボリューム。

Cold HDD (sc1)

アクセス頻度の低いワークロード用に設計された低コストの HDD ボリューム。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/EBSVolumeTypes.html

EBSのスケール、タイプ変更

現行世代のものは、停止したりすることなくボリュームサイズの増加、ボリュームタイプの変更、または (io1 ボリュームの場合) IOPS パフォーマンスの調整ができる。 ちなみに最大 16 TiB のボリュームが用意されている。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-modify-volume.html

EBSのスナップショット

スナップショット、要するにバックアップ的なもの。 EBSのボリュームのスナップショットを作成し、S3に保存しておくことができる。

毎回フルサイズのバックアップを取るのではなく、前回のスナップショットから変更された部分のみを保存する。 スナップショットを削除すると、そのスナップショットに固有の情報だけが削除される。

EBSボリュームの暗号化

EBSボリュームは作成時に暗号化オプションを有効にすることで暗号化できる。

EBS RAID アレイのスナップショット

RAIDアレイの場合少し手順が異なる。

1.すべてのアプリケーションで RAID アレイへの書き込みを停止します。 2.すべてのキャッシュをディスクにフラッシュします。 3.ファイルシステムの凍結、RAID アレイのマウント解除、さらには EC2 インスタンスのシャットダウンなどのアクションを実行し、関連付けられている EC2 インスタンスRAID アレイへの書き込みを停止していることを確認します。 4.RAID アレイに対するすべてのディスク関連アクティビティを停止する手順を行った後、アレイ内の各 EBS ボリュームのスナップショットを取得します。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/snapshot-ebs-raid-array/

S3

ストレージサービス。 ファイルをアップロードしたらURLを発行してくれる。容量上限無し。

別リージョンにコピーを自動でとってくれたり、99.999999999%の耐久性がある。

・1度にアップロード出来るのは5GBまで
・分割してアップロードする場合は5TBまで
・バージョニングと複数人による削除認証などで間違って削除してしまうのを防げる
・一定期間が過ぎたらGlacierに移すとかいうライフサイクルの設定も出来る
・Web上に公開する設定をすることで静的サイトホスティングも出来る
・データの追加で少なくとも 3,500 リクエスト/秒、データの取得で 5,500 リクエスト/秒をサポートできる
・リージョン内の少なくとも3つのAZにレプリカが作られる
・デフォルトでは暗号化はされない

サーバーサイド暗号化

・S3-Managed Keys (SSE-S3) ・AWS KMS-Managed Keys (SSE-KMS) ・Customer-Provided Keys (SSE-C)

どれかを用いて暗号化できる

クライアントサイド暗号化

AWS KMS–Managed Customer Master Key (CMK) ・Client-Side Master Key

どちらかを用いて暗号化できる

RRS

・低冗長化バージョン ・費用が下がるが耐久性も99.99%に少し下がってしまう

Infrequent

・あまり使わないデータを保存しておく。費用が少し安くなる ・Glacierと違ってすぐ読み出せる ・レイテンシースループットは通常のS3と変わらない ・99.9%の可用性、99.999999999%の耐久性

アクセスコントロールの優先順位

ACL < BucketPolicy < IAM の順に優先される。

Amazon S3 Transfer Acceleration

クライアントと S3 バケットとの間で、長距離にわたるファイル転送を高速、簡単、安全に行えるようになる。

https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/transfer-acceleration.html

ログの記録

バケットへのアクセスのリクエストを記録することができる。 リクエスタ、バケット名、リクエスト時刻、リクエストアクション、レスポンスのステータス、エラーコードなどをの情報を保存出来る。

これらはCloudtrailでは取得出来ないより詳細な情報。

Amazon Glacier

・データストレージでS3に似ているが、こちらの方が費用が大分安い。 ・そのかわりにデータを読み出すのに3~4時間掛かる。 ・普段は使わないが消すわけにもいかないようなデータを保存しておく。 ・迅速取り出しオプションというのが最近出来て、お金払えば早く取り出せる

CloudWatch

カスタムメトリックについて

通常の状態でモニタリングできる項目は

・CPU使用率 ・EBSのディスクIO ・S3のオブジェクト総数 ・Network IO ・RDSのメモリ空き容量 ・RDSのストレージ空き容量 ・DynamoDBに書き込まれたユニット数

など

カスタムメトリックという拡張機能を使うことでモニタリングできる項目は以下など

・EC2のメモリ使用率 ・ディスクスワップの使用率、ディスクスペースの使用状況 ・ページファイルの使用状況 ・ログ収集

監視間隔について

無料では5分毎に監視が出来る。 追加料金を支払うことによって1分間隔での詳細モニタリングが可能になる。

データの保存期間

・期間が 60 秒未満のデータポイントは 3 時間使用できる。 ・期間が 60 秒 (1 分) のデータポイントは、15 日間使用できる。 ・期間が 300 秒 (5 分) のデータポイントは、63 日間使用できる。 ・期間が 3600 秒 (1 時間) のデータポイントは、455 日 (15 か月) 間使用できる。

CloudWatch Logs エージェント

ログデータをEC2インスタンスからCloudWatch Logsに送信する自動化された方法が用意されている。 以下のコンポーネントで構成されている

・ログデータを CloudWatch Logs にプッシュする AWS CLI プラグイン。 ・データを CloudWatch Logs にプッシュするプロセスを開始するスクリプト (デーモン)。 ・デーモンが常に実行中であることを確認する cron ジョブ。

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/AgentReference.html

AMI

インスタンスのイメージを保存しておいて新しく立ち上げるとき再利用したり出来る。 リージョンサービスなので他リージョンでそのまま使うことは出来ない、コピーして少し設定をいじる必要がある。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/CopyingAMIs.html

Auto Scaling

起動設定(Launch Configuration)

・1つの Auto Scaling グループに指定できる起動設定は1つ ・グループを作成した後で起動設定を変更することはできない

https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/LaunchConfiguration.html

クールダウン

・以前の規模の拡大や縮小が適用される前に、追加のインスタンスを起動または終了しないようにする ・デフォルトの値は300秒(5分) ・AutoScalingGroup単位で設定できる

DynamoDB

NoSQL型のデータベースサービス。 一貫した 10 ミリ秒単位の応答性をもつ → マイクロ秒まで伸ばしたい場合はDynamoDB Accelerator (DAX)

RDS

リレーショナルデータベースサービス。MySQLとかPostgreSQLとか。 EC2内でデータベースを作成することも出来るけど、こっちだと細かなバックアップとかフェイルオーバーとか色々AWSがお世話をしてくれる。

・リードレプリカはOralceでは使えない

SQS

・キューサービス ・メッセージの配信順は保証されない ・メッセージ保持の最大期間は14日間 ・メッセージの削除は自動では行われない ・メッセージのサイズは最大256KB

ショートポーリング

ロングポーリング

Lambda

サーバーレスでプログラムを実行出来る。

・Node.js、PythonJavaが使える ・一時ディスク容量は512MB

Route53

ドメイン関連のサービス。

ドメイン名を登録する ・インターネットトラフィックドメインのリソースにルーティングする ・リソースの正常性をチェックする

の機能がある。 リソースの正常性のチェックはELBなどにもあるけどRoute53にもある。

https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/Welcome.html

そんなでてこないけどとりあえず名前と最低限の概要を覚えときたい奴ら

CloudTrail

AWSアカウント上で行われた操作・操作主などを特定出来る。 なのでインスタンスを消した犯人を探したりするときに使うらしい。

ログはS3に保存される。

https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/how-cloudtrail-works.html

CloudFormation

AWSリソースの設定をテキスト形式でテンプレート化しておくことが出来る。 インフラの複製などに便利。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html

EMR

莫大な量のデータを処理することができるようにするウェブサービス。 キーワードはHadoopフレームワーク

ウェブインデックス化、データマイニング、ログファイル分析、マシンラーニング、財務分析、科学シミュレーション、生物情報科学研究などに使うらしい。

https://aws.amazon.com/jp/emr/faqs/

Kinesis

リアルタイムの巨大なデータ分析に用いる。 スシローで使われているらしい。

「リアルタイム」がキーワード。 一時的なデータ置き場なので24時間後にはKinesis上からデータが消える。

https://aws.amazon.com/jp/kinesis/faqs/

Kinesis Data Firehose

ストリーミングデータをキャプチャして変換、

・S3 ・Redshift ・Elasticsearch ・Splunk

にロードして、ほぼリアルタイムに分析することができる。

RedShift

ややこしいけどこれも巨大なデータを扱う。 「データウェアハウス」って出てきたらこれ。

https://aws.amazon.com/jp/redshift/faqs/

Snowball

ペタバイトレベルのデータを移送出来るイカれたサービス。 インターネットを使うと時間が掛かるのでデバイスが送られてきて物理的にやり取りする。

https://aws.amazon.com/jp/snowball/

KMS

Key Management Service データの暗号化に使用される暗号化キーの作成と管理するサービス。

API Gateway

APIの作成が簡単にできる ・サーバーレス ・API呼び出し数と転送データ量のみに応じて課金

https://aws.amazon.com/jp/api-gateway/

EFS

S3やEBSと同じくストレージサービスだが、いくつか特徴がある。

・複数AZの複数EC2インスタンスから同時にアクセスできる ・スループットスケールが数GB/秒を公称しており、EBSより高速、ちなみにS3が一番遅い ・VPCからの使用に限られるので、web上に公開されることなくセキュアである

S3とEBSの良いところを取ったような感じ。 少し前に東京リージョンでのサービス提供が開始された。

https://aws.amazon.com/jp/efs/faq/

Storage Gateway

オンプレミスのデータストレージとAWSクラウドベースのストレージを良い感じに統合してくれる。

https://docs.aws.amazon.com/ja_jp/storagegateway/latest/userguide/WhatIsStorageGateway.html

Trusted Advisor

・Cost Optimization ・Performance ・Fault Tolerance ・Security and Service Limits

の観点(CPFSS)から利用者のAWS環境をAWSが自動で分析して、「こういう設定の方がええんちゃう?」とかアドバイスしてくれる。

https://aws.amazon.com/jp/premiumsupport/trustedadvisor/

SWF

複数リソースにまたがるタスクを連携して実行してくれる。

・ワークフロー実行を継続できるのは最大1年間

https://aws.amazon.com/jp/swf/faqs/

スマホでもvideoタグの自動再生を行いたい

スマホではvideoの自動再生がデフォルトで禁止されている

どうも。

最近はスマホの性能も上がってきて、PCだけではなくスマホでもWebページなどでvideoタグを使って自動再生を行いたい場合があると思うのでそれについて。

<video autoplay loop>
    <source src="movie.mp4" type="video/mp4">
</video>

こんな感じにすると、PCでは普通に再生されます。
ただ、スマホではデフォルトではvideoの自動再生は禁止されていてこれでは動かないのです。

スマホではautoplayに加えてmuted,playsinline属性を付けよう

<video autoplay muted playsinline loop>
    <source src="movie.mp4" type="video/mp4">
</video>

これでスマホでも自動再生される。
注意点として、キャッシュが残っていてこの設定にしているのに自動再生されない場合があります。

自分もこれで少しハマったけど、しばらく経ったら普通に動いてました。

ちなみにスマホで音ありの自動再生は難しい模様

スマホでいきなり音が再生されるというユーザー体験はかなり敬遠されている様子ですね。
音あり動画のスマホ自動再生する直接的な方法は見つかりませんでした。

やるとしたら、やはり最初にタップなどをさせておくなどワンクッション必要になりそうですね。

Windowsでgit bash、Docker terminalなどでパスを書くときの注意点

Winでのパスの書き方は少しクセがあるので注意

LinuxMacなどで説明している記事、チュートリアル動画などを参考にしてしまい

export PATH=C:\Username\xxx\hoge.json  

とか書くとWindowsのgit bash、Docker terminalなどでは\が勝手に抜け落ちてしまい

C:Usernamexxxhoge.json  

になってしまうことがある。

/  

この場合は通常のスラッシュで代用すると良い。

UdemyでAWSソリューションアーキテクトアソシエイトの模擬問題を買って勉強してみた

AWSソリューションアーキテクトアソシエイトとは

https://aws.amazon.com/jp/certification/certified-solutions-architect-associate/

詳しくは上の公式の説明を見てください。 Amazon Web Serviceに関する基本的な知識を持っていることを証明する資格みたいなものです。

AWSの資格試験は教材が少ない

他のブログの受験記などを見てみると、ほぼ2016年に発売されたこの青本で勉強したと記述があります。

僕も実際これを買ってまず勉強しました。
良い本なのですが少し古く、しかも日本語の書籍というとほぼこれしかないような状態です。

2018年8月より新形式に完全移行したので、さらに時代に追い付かなくなってきた感があります。

Udemyで良さそうな教材を見つける

というわけで、何か良い教材はないかとネットを彷徨ったところ、普段プログラミングの勉強で活用しているUdemyで良さそうな教材を見つけました。

Udemyはセールを頻繁にやっているので、1000円台で6回分の模擬試験を購入出来ました。 公式の模擬試験は20問で2000円ほどかかるのでべらぼうにコスパは良いです。

www.udemy.com

ただし全て英語なので注意です。 英語アレルギーな方はこれで勉強するのはしんどいと思います。

しかし、ある程度分かるのであれば英語の勉強出来て一石二鳥なので買いだと思います。

解説がしっかりしているのがありがたい、リファレンスもある

解き終えると、各設問にちゃんと解説があります。公式模擬試験は全く解説がないのでこれはありがたい。 あとは公式ドキュメントへのリンクが貼ってあってそれもすごくGood。

リファレンスは最初開いた時点では英語ですが、右上の言語タブから日本語に切り替えればいいです。
新形式対応なのでこれから需要が増えそうですね。

AWS試験で使われる特徴的な英単語

せっかくなのでもしこれからこの講座買う人が居た時のために、いくつか特徴的な英単語をメモしておきます。

Fleet of EC2

直訳すると「EC2の艦隊」、だけど「EC2インスタンンス群」くらいの解釈で良いと思います。

Bastion Host

踏み台サーバー

incremental(backup)

増分(バックアップ) EBSのとことかで出てくる。差分のみをバックアップする仕組みのこと。

decoupled

分離された

tier

例:two-tier application 2層アプリケーション

underlying

低レイヤーの

というわけでなかなかおすすめ

UdemyでのAWS資格の勉強はなかなかおすすめです。
2018年2月から新形式に移行し、既存の教材などが古くなってきている現在心強い味方だと思います。