SadServers 解説

# [SadServers](https://sadservers.com/) とは

**SadServers** とは "Like LeetCode for Linux" と あるように、 Linuxサーバ管理者向けの [`LeetCode`](https://leetcode.com/) のようなサイトで、Linuxサーバで発生する様々な問題に対して、その解決を行います。

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

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

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

では、早速 SadServer に アクセスしてみましょう。
[SadServer](https://sadservers.com/) にアクセスすると、次の画面が表示されます。

![SadServer](https://storage.googleapis.com/zenn-user-upload/89d9dbb218c7-20221101.png)

青字の **Give Me a SadServer** をクリックすると、[１問目の問題ページ](#give-me-a-sadserver)に遷移します。
緑字の **Show Me SadServers** をクリックすると、[問題リスト](#show-me-sadservers)を表示します。 
各問題の解き方については、[Show Me SadServers](#show-me-sadservers)のテーブルからたどってください。


## [Give Me a SadServer](https://sadservers.com/newserver/saint-john)

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

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

![](https://storage.googleapis.com/zenn-user-upload/18464afe0c1f-20221101.png)

-----

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

![](https://storage.googleapis.com/zenn-user-upload/d1389d423bfb-20221101.png)

**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](https://sadservers.com/scenarios)

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

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

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

**問題とその解説**
| # | Name | Levle | Time | Released | 
| ---- | ---- | ---- | ---- | ---- |
|1|["Saint John": what is writing to this log file?](https://zenn.dev/kenma/articles/17635df7816d98)|Easy|10 m|2022-08-03|
|2|["Saskatoon": counting IPs.](https://zenn.dev/kenma/articles/c8d26f5c44c107)|Easy|15 m|2022-08-31|
|3|["Santiago": Find the secret combination](https://zenn.dev/kenma/articles/043889c82f28b7)|Easy|15 m|2022-09-16|
|4|["Manhattan": can't write data into database.](https://zenn.dev/kenma/articles/8c327af0182e41)|Medium|20 m|2022-06-13|
|5|["Tokyo": can't serve web file](https://zenn.dev/kenma/articles/9468b23f553be1)|Medium|15 m|2022-08-01|
|6|["Cape Town": Borked Nginx](https://zenn.dev/kenma/articles/ae3f4a1b878e4d)|Medium|15 m|2022-09-11|
|7|["Salta": Docker container won't start.](https://zenn.dev/kenma/articles/933485fb38541f)|Medium|15 m|2022-09-16|
|8|["Venice": Am I in a container?](https://zenn.dev/kenma/articles/076725c4c5df12)|Medium|15 m|2022-09-25|
|9|["Oaxaca": Close an Open File](https://zenn.dev/kenma/articles/b80267c28ffd1f)|Medium|15 m|2022-11-30|
|10|["Melbourne": WSGI with Gunicorn](https://zenn.dev/kenma/articles/e905dc4c7ad8e3)|Medium|20 m|2022-12-23|
|11|["Lisbon": etcd SSL cert troubles](https://zenn.dev/kenma/articles/f242e7838f5103)|Medium|20 m|2023-01-02|
|12|["Jakarta": it's always DNS.](https://zenn.dev/kenma/articles/9739ffe914abeb)|Hard|20 m|2022-08-03|
|13|["Bern": Docker web container can't connect to db container.](https://zenn.dev/kenma/articles/aa5f2c465aef6f)|Hard|20 m|2022-08-04|
|14|["Karakorum": WTFIT – What The Fun Is This?](https://zenn.dev/kenma/articles/bd63fef6819338)|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|