
エンジニア採用担当がプログラミング頑張る話【28日目/2ヶ月間】
こんにちは、@hiroki_maekawaです。
画像は安定のGopherです。このデザインを作られた方、エンジニアTシャツやロゴを作られていて面白いなぁと。自分はアメリカのエンジニアYoutuberがデザインしたパーカー買ったことあります(笑)
さて、今日も引き続きAWSをさわっていきたいと思います!EC2立てるのが余りに早くできてしまったので、今週はもっと色んなことができそうです。
今日の目標
・EC2に自分の書いたコードを送る
・AtCoderの問題1時間解く
1. EC2に自分の書いたコードを送る
今回GoでhttpリクエストをEC2に送って、出力をWebブラウザ上で確認したいと思います。
・Nginxのインストール
まずはWebサーバをインストールする必要があると思ったので、EC2インスタンスにSSH接続を行なった後、インスタンス内でNginxとGoをインストールしました。
$ sudo amazon-linux-extras install nginx1.12
$ sudo amazon-linux-extras install golang1.11
goやNginx以外にもphpやrubyなど色々インストールできるようです。
・HTTP接続の許可
その後、HTTP接続もできるようにインバウンドルールの編集を行いました。
・EC2インスタンスの「セキュリティグループ」をクリック
・「インバウンドルール」をクリック(昨日設定したSSH接続のみが表示されてます)
・「インバウンドルールを編集」をクリック
・「ルールを追加」をクリック
・タイプをHTTPに設定
・「ルールを保存」をクリック
その後EC2インスタンスの説明に記載されているパブリック DNS (IPv4)をコピーし、その前にhttp://を入れてアクセスしてみます。ちゃんと反映されました。
・Nginxの設定
NginxのWebサーバー上でGoが動くように設定する。
この方法が分からず@Sueken51さんに質問したところ、先週まで自分でhttpサーバープログラムを書いているので、今回はNginxインストールしなくて良いことが分かってしまいました。
またこの質問をしたことで、サーバーの概念の理解まで行うことができたため、下記、備忘録として残しておきます。
サーバーとは、何かしらのプログラムが起動しているマシンのことで、先週まではgoでechoを使ってサーバープログラムを書き、それを自分のパソコンで起動していました。
そして今週からは、自分のパソコンではなく外部にEC2を立てて、そこにサーバープログラムを送信し、起動させることで外部にサーバーを作ることが可能になるという感じです。
NginxはOSSの「httpサーバープログラムなので、先週自分が書いていたようなプログラムがすでに色々書かれていて、後はリクエスト送るだけでOKってやつなんだな、と理解しました。
だから課題の内容も「EC2に自分の書いたコードを送る」だったのか。。とここで初めて理解。やっと今日やりたかったことのスタートラインに立てた気分(白目)
2. AtCoderの問題を解く
package main
import "fmt"
func main() {
var X, A, B, C int
count := 0
fmt.Scan(&X, &A, &B, &C)
for a := 0; a <= A; a++ {
for b := 0; b <= B; b++ {
for c := 0; c <= C; c++ {
if 500*a+100*b+50*c == X {
count++
}
}
}
}
fmt.Println(count)
}
昨日の模範解答を思い出しながら自分で書いてみて、提出したところこんな結果に、、合わないものまで全パターンを検索してしまうと途中で間違えてしまうのでしょうか、、(解決策が分かりそうな方、こっそり教えて頂けると嬉しいです🙇♂️)
今日できるようになったこと
・(強いて言うなら)EC2のインバウンドルールの編集
さいごに
今日はサーバーについての理解が深まったことが1番の収穫でした。
これまで何となくのイメージでサーバーサーバー言ってましたが、自分で手を動かすことで今までより深くサーバーについて理解することができました。また@Sueken51さんには自分の質問に根気強く回答頂き、本当に感謝です🙇♂️
プログラミング学習期間も残り3週間を切っているので、1日1日より大事にしていきたいと思います。
それではまた!