😺

SadServers 解説

2022/11/01に公開

SadServers とは

SadServers とは "Like LeetCode for Linux" と あるように、 Linuxサーバ管理者向けの LeetCode のようなサイトで、Linuxサーバで発生する様々な問題に対して、その解決を行います。

(ちなみに、LeetCode とは、オンラインで、コーディングテストができるサイトです。GAFAなどのコーディング面接の対策に利用されます。)

問題ごとに、ある課題を持った仮想Linuxサーバが構築され、ブラウザからそのサーバのターミナルをしてして、課題解決を目ざします。

この文章では、SadServerの使い方について説明し、具体的な問題な解き方は、問題リストからのリンク先に記載します。

では、早速 SadServer に アクセスしてみましょう。
SadServer にアクセスすると、次の画面が表示されます。

SadServer

青字の Give Me a SadServer をクリックすると、1問目の問題ページに遷移します。
緑字の Show Me SadServers をクリックすると、問題リストを表示します。
各問題の解き方については、Show Me SadServersのテーブルからたどってください。

Give Me a SadServer

Give Me a SadServerをクリックして、1問目の"Saint John": what is writing to this log file?" を例に、SadServersの使い方、問題の見方について説明します。

問題ページが表示されると、ページ上部に "Your sesrver is being created. This takes about 30 seconds" と表示されます。これは、仮想Linuxサーバを構築しているので、30秒ほど待ちます。


30秒ほど経つと、"Ready! Open the server terminal in a new window" と表示されるので、リンクをクリックすると別Windowでターミナルが表示されます。このターミナルを操作して、問題を解きます。

General Instruction には、各問題共通の説明が記載されています。DeepLでの翻訳を記載します。

あなたは、実際の Linux サーバー(一時的な仮想マシン)に SSH セッションでフルアクセス(root)することができます。割り当てられた時間内にテストに合格するように、説明された問題を修正するために必要なことを何でもしてください。時間経過後、VMは終了します。

制約として、このサーバからインターネットに出ることはできません。DNSはローカルで利用可能です。また、SadServersが正常に動作するために必要な、説明した問題とは無関係のサービス、特にポート:2020と:6767で動作するサービスを妨害しないようにしてください。

行き詰まったときや、どうすればいいかわからないときは、「次のヒント/解決策」ボタンをクリックすると、解決策がわかるまで新しいヒント(と前のヒント)が表示されます。ヒントウィンドウを閉じて、もう一度 "Next Clue / Solution "をクリックすると、新しいヒントが表示されます。

問題が解決したと思ったら、「Check My Solution」ボタンをクリックし、与えられたテスト通りに解決したかどうかを確認します。

大切なのは、ヒントは欲しいときには、Next Clue/Solutionをクリックしてください。クリックするたびに、ヒントが増えます。
ターミナルを操作して、問題が解決したら、Check My Solutionをクリックしてください。

2023/01/04 追記

To save the planet some CO2 emissions and also to reduce my AWS bill, once you are done you can shut off your server with: sudo shutdown -h now

地球のCO2排出量を節約し、AWSの請求書を減らすために、作業が終わったら、次のようにしてサーバーをシャットダウンしてください: sudo shutdown -h now

という記述が追記されています。 終わったら、 sudo shutdown -h now を実行しましょう!

General Instructionの次に、問題が記されています。

  • Senario: 問題のタイトル
  • Level: 難易度 (Easy | Medium | Hard)
  • Description: 問題の本文。
  • Test: テストのパス条件 (クリア条件)
  • Time to Solve: この問題の時間。経過すると、ターミナルがクローズします。リロードすると、最初から試せます。
  • OS: 仮想サーバのOS

Show Me SadServers

緑字の Show Me SadServers をクリックすると、問題リストが表示されます。
Info ボタンを押すと、問題がダイアログで表示されます。ここで問題を解くことはできません。
Runボタンを押すと、問題を解くページに遷移します。

現在、次の問題が用意されています。 リンクがあるものは、リンク先に解き方の解説をしています。

(新規問題は、末尾に追加されるのではないようなので、途中に挿入された場合問題番号が変わります。)

問題とその解説

# Name Levle Time Released
1 "Saint John": what is writing to this log file? Easy 10 m 2022-08-03
2 "Saskatoon": counting IPs. Easy 15 m 2022-08-31
3 "Santiago": Find the secret combination Easy 15 m 2022-09-16
4 "Manhattan": can't write data into database. Medium 20 m 2022-06-13
5 "Tokyo": can't serve web file Medium 15 m 2022-08-01
6 "Cape Town": Borked Nginx Medium 15 m 2022-09-11
7 "Salta": Docker container won't start. Medium 15 m 2022-09-16
8 "Venice": Am I in a container? Medium 15 m 2022-09-25
9 "Oaxaca": Close an Open File Medium 15 m 2022-11-30
10 "Melbourne": WSGI with Gunicorn Medium 20 m 2022-12-23
11 "Lisbon": etcd SSL cert troubles Medium 20 m 2023-01-02
12 "Jakarta": it's always DNS. Hard 20 m 2022-08-03
13 "Bern": Docker web container can't connect to db container. Hard 20 m 2022-08-04
14 "Karakorum": WTFIT – What The Fun Is This? Hard 20 m 2022-09-13
15 "Singara": Docker and Kubernetes web app not working. Hard 20 m 2022-09-18
16 "Hong-Kong": can't write data into database. Hard 20 m 2022-09-24
17 "Pokhara": SSH and other sshenanigans Hard 30 m 2023-02-06

Discussion