SadServers 解説
SadServers とは
SadServers とは "Like LeetCode for Linux" と あるように、 Linuxサーバ管理者向けの LeetCode
のようなサイトで、Linuxサーバで発生する様々な問題に対して、その解決を行います。
(ちなみに、LeetCode
とは、オンラインで、コーディングテストができるサイトです。GAFAなどのコーディング面接の対策に利用されます。)
問題ごとに、ある課題を持った仮想Linuxサーバが構築され、ブラウザからそのサーバのターミナルをしてして、課題解決を目ざします。
この文章では、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