学生がWindows 10 Educationにdockerを入れた話

お久しぶりです。mickeyです。

ブログ書かな過ぎてブログの書き方を忘れました。
では本編へ

はじめに

(注)この記事はwindows 10 でdockerを使う予定の学生の方を対象として自分が用いた手順を記していきます。

事の発端はある日研究室で先輩に「とりあえずdocker-composeでインフラ1つ動かして来て」と言われたことです。
このころの僕はwindowsでdockerを扱うためにはHyper-V*1を有効にしなければならないことは知りませんでした。
そしてその数日後に自分のPCが"windows 10 Home"でHyper-Vオプションに対応していないことを知ります。

windows 10 Educationへのアップグレード

windows 10 Pro,Educations等のバージョンでHyper-Vが利用可能となるのでアップグレードを行います。
また学生であればwindows10 Educationsは無料で使えます。

手順

  1. Microsoftのアカウントを作成する

ここでは割愛させていただきます…

  1. Azure for Studentに登録する

上のリンクを入った後の「無料で始める」のボタンをクリックして登録をします。
学校から配布されているメールアドレスを利用するとスムーズに登録が済むのでおススメ。
ここからは個人情報入力したりするだけなので割愛させていただきます。

  1. プロダクトコードを生成

登録後、以下のような画面にたどり着きます。

f:id:eclair1024_sub:20190611074545j:plain
Microsoft Azureのホーム画面

あとは上の青いバーで「Education」等で検索してソフトウェアを選択して検索結果を探すと以下のような画面のものが見つかると思います。
対応するverを選択してダウンロードからプロダクトコードを生成してください。
f:id:eclair1024_sub:20190611075220j:plain

  1. プロダクトコード有効化

後はwindows側で設定→更新とセキュリティ→ライセンス認証→プロダクトキーを変更します、といった所に行きプロダクトキーを入力するとアップデートが始まります。
これでwindows Educationにバージョンが変更されます。
windowsキー+"R"を押して現れたウィンドウに「winver」と入力するとバージョンを確認できます。

dockerインストール

これでHyper-Vをやっと使える人類に到達したのでdockerの導入に入れます。

手順

  1. Hyper-V有効化

windowsの機能の有効化または無効化よりHyper-Vを有効に。
f:id:eclair1024_sub:20190611080701j:plain

  1. dockerインストール

Get started with Docker for Windows | Docker Documentationの"Install Docker Desktop for Windows"よりインストールしましょう。
特に問題がなければインストール後にコマンドプロンプト上でdockerコマンドが使えるはずです
特にパスを通す必要などはありませんでした。

f:id:eclair1024_sub:20190611081234j:plain
dockerコマンドを試しに入力

実際にdocker/whalesay動かしてHelloWorldと言わせたりしたりしました。

この環境をつかって色々やってみます。

*1:マイクロソフト提供の仮想マシンを動かすためのシステム

2018年の進捗や変化とは一体何だったのか…

あけましておめでとうございます。

はじめに

昨日のAGC030が終わってから2019年になったと勘違いしているmickeyです。
今までダラダラなんとなく生活していた私なのですが、今年はいくつかの変化があった年だと感じています。
それらの変化について大きなものを3つほど、緩く真面目に書き連ねていきます。

C言語講座

私は大学でプログラミングサークルに所属しているのですが、1つ上の先輩からの提案で5月上旬から新入生向けのC言語の講座の講師をやることになりました。
(なぜプログラミング初学者にC言語をやらせたのか等については色々な理由があるため触れないことにします。)

主には過去の先輩の資料を参考にしながら自分なりに資料を作成し、毎週講座を行うといったものでした。
大きな失敗を経験したり多少ながら犠牲にするものもありましたが、曖昧だったポインタ等の知識を再確認しつつアウトプットを行うといった点ではとても良い機会でした。

また元来、人に物事を教えるということは少し好きだったので表面では「面倒だ」と言いつつも、楽しかったです。

また、受講者の方の中には以下のブログの著者のようなとてもやる気のある人が居たり、他にも色々な方の助けがあってこの講座が無事に行えました。
この場にはなってしまい申し訳ありませんが、本当にありがとうございました。

papyrustaro.hatenablog.jp
(僕の後輩が書いたとても良い記事です。)

競技プログラミング

今年の5月上旬から始めました。
サークルで後輩に布教したり色々しました。
そして、この趣味に出会わなかったら今の私は何もやっていないといっても過言ではないと思っています。

また、この趣味は来年の目標の軸になる部分でもあるため、今後はより頑張っていきたい部分でもあります。
ちなみに、現在はAtCoderの茶色後半あたりです。

f:id:eclair1024_sub:20181230215528j:plain
AtCoderのレート変遷(2018-12-30地点)

これについての他に言いたいことは、私の以下の記事に詳しく書いてあるので省略いたします。

eclair1024-sub.hatenablog.com


eclair1024-sub.hatenablog.com

勉強会やコミュニティへの参加

数か月に一度、大学にて情報系の精進をしている方々が主催しているイベントに参加するようになりました。
このイベントでは毎回各々の進捗報告や発表、勉強会など色々なことを行っています。

(ここだけの話ですが、私の所属しているサークルは同年代で切磋琢磨するといった雰囲気はなく、精進をするコミュニティとしては満足のいくものではありませんでした。そのため、これはとても大きな進歩だと感じています。)

これについては6月に1つ上の先輩が主催したjavaの勉強会に勢いで参加したことがきっかけとなりました。
ありがとうございます。

また、この機会を通して色々な先輩方を前にしてLTをさせていただいたりと、人前で話すことが増えた1年だということも強く感じます。
来年はあわよくば私も何かしらやりたいといった所存であります。

来年の目標

主に競プロの目標になりますが、ここに記します。

  • AtCoder青になる。
  • 累計1000ACをする、目指す。
  • 学んだアルゴリズム等をブログ等でアウトプットすることを意識する。
  • 大学の成績を落とさないようにする (ここ大事

おわりに

来年は今年以上に波乱の年になると思われますが、波に流されてしまわないように頑張ります。

AtCoder茶色になりました

9月に開催されたAGC027でAtCoder茶色になったのでそれについてだらだら書きます。

現在の状況

茶色になってから結構時間が経っているため、現在のレートはこんな感じ。
f:id:eclair1024_sub:20181107035454j:plain
今は完全に茶色ど真ん中の人間ってところです。
是非ABCで3完してレートを単調増加させたい。

主にやったこと

ここからは自分のTwitterと記憶を頼りにだらだら自分語りをします。

ですが結論としてやったことは

  • AtCoder ProblemsのABC-A,B問題をひたすら解く
  • (余裕があれば)yukicoder★1も解く
  • しっかりとコンテストに参加する(ここが一番重要

の3つです。
ここからはだらだらと緩く書いていきます。

茶色への歩み

最初の頃

競技プログラミングを始める前の私は大学の講義でしかプログラミングを触らないという生活を送っていました。
そんな時、何か始めようと思いそこでyukicoderを触れていました。
高速バスでの移動中も携帯から強引にソースコードを提出するなどを行い★1の問題を埋めていました。

ちなみにこの頃の使用言語はCでしたが、後にサークルのC++講座*1を受講することにより使用言語がC++となります。

初のコンテスト参加(ABC098)

音楽ゲームを普段からやっていたため、レートという単語に惹かれてコンテストに参加し始めます。
こうして、5月下旬に出たABC098が初のコンテストでした。


ちなみにこの時の結果は1完でした。
初めて出たコンテストでB問題の中でも最難関のB - Cut and Countが来るのは聞いてませんよ…

こうして、緩くですが私のコンテスト生活が始まります。

A,B問題埋め

そして1か月の間にABCに3回ほど参加した結果、A,B問題の安定度を上げれば茶色レートになれるのではないかということに気づき始めます。
この日からAtCoder Problemsの過去のA,B問題をひたすら解き始めます。
ちなみにこの頃は1日最低3問、A問題のみだと最大20問ぐらい解いていた記憶があります。


他所でも言及されている点ですが、このAtcoder ProblemsでA,B問題を解く際に個人的には

  • 他の人のコードを見て良い点を盗み、自分の知識を蓄える
  • 解法が思い浮かばなかったらずっと悩みこまずに解説を見る

ということを意識していました。
私は15~30分ぐらい頭を抱えて解説を見る、といった感覚で行っていました。

また、最初の頃は以下の画像のように200点問題に絞り込んでsolver順*2に並び替えて順番に解くということもしていました。
この方法を用いると比較的簡単な問題から解き始めることが出来るので、突然難しい問題に当たり気が落ち込むということが減ります。
f:id:eclair1024_sub:20181107061055j:plain


こうした所謂、小さな"精進"はすぐに結果に現れてABC102ではA,B問題を5分で解き初めての緑レート相当のPaformance*3を出します。
(もちろん、この"精進"による結果が表れる時期も個人差もあります…)


ちなみに、ちょうどこの時期はサークルの先輩からの嬉しいお誘いもありACM/ICPCへの参加の方もしました。
結果や内容についての小話は別の記事にまとめてあるので是非。
ACM-ICPC2018国内予選大会に出た話 - eclair1024_sub’s diary


茶色が見え始める

こうしてA,B問題を解いていると茶色レートまで手が届く位置まで来ました。

ですが、ここで迎えたABC108にて数学要素が強めな回、所謂"数学回"というのが来ます。
AtCoder Beginner Contest 108 - AtCoder
私は数学はどちらかというと好きではあるものの、全く得意ではないのでここで1完をしてしまい1度レートが落ちます。


また、この頃の私はRatedのコンテストしか自分の視野に入っていない、"Rated中毒者"となっていたためRatedではないことが多い企業主催のコンテストは参加していませんでした。
そのため、場数も少なくコンテスト中の焦りから普段しないような、よくわからないミスが出てきます。
場数を踏む、経験を積む等他にもメリットが沢山有ったので参加しておくべきだと痛感しています。

茶色になる

こうして色々ありつつもAGC027(AtCoder Grand Contest 027 - AtCoder)で1完して、ついに茶色になります。
やはり、AGCでのレートの爆発力は侮ってはいけません。

ちなみにAGCは自分が精進を始めた段階でも1度あったので参加しておけばよかったと後悔しました。

今後の目標

今後は緑レートを目標にABCでA,B,C問題の3完を目指します。
目標はC問題を1日1問以上コツコツとやることです。


おわりに

ここまで読んでくださっている方へ、ありがとうございます。
自分にしか書けない記事、を目標に記事を書いた結果ほとんどが自分語りとなってしまいました。
もしご期待を裏切っていましたら、申し訳ございません。この記事がこれから頑張ろうと思っている方に少しでも参考になったらと思います。

*1:内容はほぼオブジェクト指向の内容でC++STLなどはほぼ自習でした…

*2:解いた人が多い順

*3:これがレートの決定に直結します

ACM-ICPC2018国内予選大会に出た話

数日前にARM-ICPC国内予選大会に参加しました。

折角なので感想や反省を記事にしたいと思います。

 

参加した経緯

5月のGW終わり頃に実家に帰っていた際に暇だった、もっとプログラミングを触る機会というのを増やしたかったということから、競技プログラミングを始めました。最初1カ月は主にyukicoderを触って★1の問題を解いていました。

そうしているうちに徐々にサークルの先輩や同級生に自分が競技プログラミングを始めたということを知られて、そのうち「mickeyはICPC出るの確定だよ」と言われたことで参加が確定しました。

 

ICPC国内模擬予選

チームが決定してある程度経ったとき、国内模擬予選があるということで参加しようということになりました。一緒にチームを組んでくださった先輩方は過去にICPCに参加した経験がありましたが、私は今回は初めての参加であったため、普段やっているyukicoderやAtCoderのオンラインジャッジのシステムとは違ってとても大変でした。

 

また、1チーム1台のパソコンしか使えないということもあり、紙にソースコードを書くということも実装力をつけるための1つの経験なのかなと実感できる良い機会でした。

ちなみに結果はAB2完でした。

 

ICPC国内予選本番

余談となりますが、本番当日の朝は学校の講義に寝坊して「いっけな~い、遅刻遅刻」ってしてました。本番(16:30~)には遅刻しなかったのでセーフといったところでしょうか…

 

私はチーム「StarDream」として参加しました。リハーサルや模擬予選を通して提出についてはある程度慣れていたので、問題の内容以外に関してはあまり不安はありませんでした。私はAの実装とCの考察を行いました。Aは難なく通したのですが(提出するファイルを間違えるという痛恨のミスをしてしまいました)、Cに関しては総当たり的な方法で出来そうだけど計算量はどうだろ…と考えているうちに時間が来ていました。

 

後でランキングを見ているとBよりも先にCを解いているチームが多く、自分の考察力がもっとあれば…と思う次第でした。

ちなみに結果は模擬予選と同様ABの2完でした。

 

感想

今年は初めてのICPCでとても不安な点が多々ありましたが、とても楽しかったというのが第1の感想です。普段出ているABC等よりも、とにかく実装をさせる問題だらけだったという印象が強かったため、自分の実装力や考察力をより理解できたと思います。

自分の競技プログラミングのモチベーションを上げるためのとても良い機会でした。

来年もチャンスがあれば是非参加したいと思います。

 

 

 

 

 

 

サブブログができてしまった

趣味用のブログをやっていたはずが、そこにプログラミングのことを書こうと思った瞬間にブログを新しく開設したほうが良いということに気づいてしまったので開設してしまいした。

 

とりあえず自己紹介をしておきます。

 

名前 :mickey @Eclair_micccc

プログラミング歴:1年

よく使う言語:c,c++,(本当にちょっとPython)

yukicoder/atcoderで緩く競プロしています。

 

普段やっていること

  • 色んなゲーム(DTCG,音楽ゲーム等)
  • プログラミング(最近は競プロ)

など他にもいろいろなことをやって楽しんでます。

 

このブログはサブのような感じでプログラミング(アルゴリズムとか…)の勉強のアウトプットに使いたいというのが夢です。