見出し画像

エンジニア採用担当がプログラミング頑張る話【36日目/2ヶ月間】

こんにちは、@hiroki_maekawaです。

今日はAtCoderでGoの文法を復習しつつ、Dockerをさわってみたいと思います。


1. AtCoderの問題

今日の問題はこちら。

スクリーンショット 0032-07-08 12.58.00

スクリーンショット 0032-07-08 12.58.19

スクリーンショット 0032-07-08 12.58.29

N個のカードをスライスを作って→そのカードを大きい順に並べて→大きいカードの数をAliceに、2番目に大きいカードをBobに順に与えていくコードを書きます。

公式ドキュメントのExampleに、sort.IntSliceでスライスの数を小さい順から大きい順に並べ替えて→sort.Reverseでそれを逆に大きい順に並べる例があったので、これをまるパクリ(そのまま使わせていただくことに)しました。

package main
import (
	"fmt"
	"sort"
)
func main() {
	s := []int{5, 2, 6, 3, 1, 4} // unsorted
	sort.Sort(sort.Reverse(sort.IntSlice(s)))
	fmt.Println(s)
}

また、スライスの作り方を忘れていたため下記備忘録として残しておきます。

//[]型の5個の長さの、5個のキャパを持つスライスaを作る
func main() {
    a := make([]int,5, 5)
    fmt.Println(a) //=> [0 0 0 0 0]
}

下記コードで実行できました。

package main

import (
	"fmt"
	"sort"
)

func main() {

	//NのScan
	var N int
	fmt.Scan(&N)

	//長さがNのスライスaを作る->Scan
	a := make([]int, N)
	for i := range a {
		fmt.Scan(&a[i])
	}

	//大きい順に並べる
	sort.Sort(sort.Reverse(sort.IntSlice(a)))
	var Alice, Bob int
	for i := range a {
		if i%2 == 0 {
			Alice += a[i]
		} else {
			Bob += a[i]
		}
	}
	fmt.Println(Alice - Bob)
}


2. Docker

先日エンジニアの友人にプログラミンを教えてもらった際、友人とOSが違ったので初めにDockerファイルをばーっと作っていたのを見て&友人が「Dockerを使えるようになっておくと何かと便利やで」と言っていたので、今回少しさわってみることにしました。

Dockerには色々なメリットがあると思いますが、その内の1つに「複数人で開発する際、皆が同じ環境で開発することができる」というメリットがあるそうです。

流れは①Dockerファイルを作成→②コマンドでdocker buildと打ってimageを構築→③コンテナの構築起動

現在PythonでWebブラウザ自動化のコードを書いているので、このコードをこれから複数人で書いていくことを想定してDockerファイルを作成することにしました。

コマンドで$ vim dockerfile と打ち、下記を記入します。

FROM python:3
RUN pip install selenium
RUN python automation.py
CMD [“python automation.py”]
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8

Pythonのバージョンの他、Webブラウザの操作にはSeleniumをインストールする必要があるためRUN pip install seleniumを記述しました。

(その他あまり書くことがなかったのですが、)もしautomation.pyを複数人で開発する場合は、automation.pyと共に作成したDockerファイルを共有→他にautomation.pyを編集する人が$ docker build .でDockerイメージを構築→$ docker-compose up -dでコンテナを構築・起動すれば、全員同じ環境下で開発することができるという仕組みです。

この他に何か現時点でDockerを使ってできることがないか?質問してみようと思います。


今日できるようになったこと

・スライスの要素を大きい順に並べる
・Dockerファイルの作成


さいごに

明日は自動化のコードを書き進めたいと思います・・!

それではまた!


この記事が気に入ったらサポートをしてみませんか?