nakayumcの技術ブログ

エンジニア2年目のブログです。

ICTSC2021夏の陣に参加してみたので感想など

8/28~8/29で開催された、ICTSC2021 夏の陣に専門学生5人組でチーム名 オ〇フェーブルを実装してください! で参加しました。 チーム名、私はよくわかりませんが、ウ〇娘関連のなんからしいです(?)

最終的に順位が確認できた時点での結果としては 11位で1425点でした。 メンバー全員が初めてトラコンに出ましたが、初めてにしてはかなり解けていたんじゃないかなぁって気がします。みんな頑張った。みんなえらい🌝

参加前

先生に誘われて、「トラコンってどんな感じなんだろう…?やってみたい」と思い参加を決めました。 過去問を見てもどうすればいいのかわからなかったのでぶっつけ本番でいきました。

本番での流れ

1日目

9:30 学校に集合。同じ学校内でも他チームもいました。 9:30~10:00 VNCクライアントのセットアップと踏み台サーバへのアクセスをしました。 10:00~12:00 問題が公開されたのでみんなで問題を見ながらDiscordで「これやります」って宣言しながらやりました。 12:00~12:30 お昼休憩 12:30~16:30 午後も同じようにみんな集中してやっていました。できたときはみんなで「やった!!」って喜んでました。

1日目は6位で、975点でした。結構できたと思う。

2日目

9:30 1日目と同じように学校に集合。開始前にこんなスプレッドシート作ってみんなで共有するようにしました。 10:00 踏み台サーバへのアクセスをして各自問題を解いてました。 10:00~12:00 各自問題解いてました。 12:00~12:30 お昼休憩 12:30~16:30 午後もみんな頑張って問題解き。

本番で私が触れた問題の感想

私はサーバ系の問題を主に解きました。解いた問題を紹介していきます。

解いた問題

ンジンエックス 150pt

curl --http2 localhost してもリソースが取得できない! ・sudo /usr/local/nginx/sbin/nginxで実行時にエラー吐いてて起動しない! これらの問題を解決する問題でした。

あとはホームディレクトリにnginx-1.21.1が既に置いてあって、再展開するために用意されていました。 最初、とりあえずエラーを見るためにsudo /usr/local/nginx/sbin/nginxを実行してみると 「http_v2_moduleのモジュールが足りないから実行できないよ」ってエラーが出ました。

コンパイルするときに必要なOpenSSLのモジュールがどこにあるのか分からなかったので、ここからwgetでもってきて踏み台サーバからscp使って問題サーバに転送させました。

http_v2_moduleのモジュールを追加する方法を検索したら、nginx-1.21.1内で./configure --with-http_v2_module を追記して再展開すればできるということがわかったので、このコマンドを実行して makemake installをしました。

これでもう一度sudo /usr/local/nginx/sbin/nginxをすると起動できたので curl --http2 localhost と打ったらcurl: (1) Received HTTP/0.9 when not allowedと怒られたので/usr/local/nginx/conf/nginx.confに以下を追記しました。

listen 443 http2;
↓
listen 80;

これを提出したら満点を取ることができました。

頑固なindex.html 150pt

OSを再起動すると編集したのにindex.htmlが元の状態("Welcome to ICTSC"とだけ書かれた状態)に戻ってしまうのでそれを治して欲しいという問題でした。

まずは、cronとかsystemdが悪さしているのかな、とかlinux起動時に自動的に実行するコマンドが原因なのかなと思って検索したんですが良い文献が見つかりませんでした。 なのでとりあえず / 以下で grep -rl 'index.html' と検索すると,/etc/tmpfiles.d/以下に ictsc.conf というファイルがあって、'Welcome to ICTSC'と書かれたファイルがあることが分かったので、rm -rf ictsc.conf(良くない)コマンドで永遠に消えてもらいました。 tmpfiles.d について調べると、OS起動時にファイルを作るスクリプトを置く場所らしいです。 これを記述して満点もらうことができました。

その他にも、サーバ気象予報 150ptの問題や、何もしてないのに壊れた! 150ptの問題をやって2日間が終わりました。 初めてにしては結構頑張れていたのかなと考えてます。

感想・所感

難しいトラブルの問題が多かったですが、解決できた時の達成感が得られてとても楽しかったです!

私はサーバ系は結構できていた感じはしていますが、ネットワークの問題やk8s、dockerなどは全く知見がなく、手を出すことができませんでした。

運営さん、コンテストを開いていただきありがとうございました!! 去年は色々あったみたいですが今年も開催されて良かったです。 冬にももしかしたらあるらしいのでまた機会がありましたら是非参加していきたいです。皆さんお疲れ様でした。