Giter Site home page Giter Site logo

jsakamoto / chomado-problem-server Goto Github PK

View Code? Open in Web Editor NEW
2.0 3.0 0.0 70 KB

4択問題x全10問の回答を JSON 形式で POST すると、その POST 要求のクエリ文字列に指定されている乱数シード値に基づき正当を内部で生成し、POST された回答と付き合わせて正答した数を返す、HTTP API サーバーの実装です

Home Page: https://chomado-problem-server.azurewebsites.net/

License: GNU General Public License v2.0

C# 18.55% HTML 69.88% Dockerfile 11.57%
asp-net-core asp-net-core-web-api aspnet-core aspnet-web-api aspnetcore aspnetcorewebapi wasi wasm

chomado-problem-server's Introduction

Chomado Problem Server

これは何?

"ちょまど問題" を解くアプリを作る際に、回答を問い合わせるのに使える Web API サーバーです。

この API サイトに、4択問題x全10問の回答を JSON 形式で POST すると、その POST 要求のクエリ文字列に指定されている乱数シード値に基づき正当を内部で生成し、POST された回答と付き合わせて、正答した数を返します。

"ちょまど問題" とは?

@ito_yusaku 伊藤 祐策(パソコンの大先生) (@ito_yusaku)
【ちょまど問題まとめ】
・4択問題が全部で10問ある。
・全部の回答を終えると何問正解したかだけが分かる。
・全問正解するとクリア。
・問題文は人外の言葉で書かれているので読んでも解けない。
・回答試行は何回でもできるが、できるだけ少ない回数でクリアしたい。
June 18, 2014

リクエスト送信方法

ホスト:

以下の PaaS 上に常設しています。

API エンドポイントのパス

/answer

メソッド: POST

必要な要求ヘッダ: content-type: application/json

送信ボディ:
4択の回答を 1, 2, 3, 4 の整数のいずれかで表し、10問分の回答となる要素10個の配列を JSON 形式で送信。

例) [1,2,3,4,1,2,3,4,1,2]

クエリ文字列:
seed ... 正答を内部生成するのに使われる乱数シード値 (整数値)。省略可能で既定値は 1 です。

呼び出し例

例えば、cURL を使って下記のように回答 "[1,2,3,4,1,2,3,4,1,2]" を POST すると、正答数が返ります。

$ curl https://chomado-problem-server.apphb.com/answer?seed=123 -X POST -d "[1,2,3,4,1,2,3,4,1,2]" -H "content-type:application/json"
2

自分で実行する

Docker コンテナを起動する

Chomado Problem Server は、Docker Hub にて Docker イメージとしても配布しています (下記)。

https://hub.docker.com/r/jsakamoto/chomad-problem-server/

下記 docker コマンドで、TCP ポート 5000 でリッスンする状態で起動 (デタッチ、終了時のコンテナ削除の指定込み) できます。

docker run -p 5000:80 -d --rm --name chomado-problem-server jsakamoto/chomado-problem-server

上記コマンド例で実行した場合は、コンテナ名に chomado-problem-server を指定してあるので、起動したコンテナを停止するには下記コマンドを実行すればよいです。

docker stop chomado-problem-server

WebAssembly 版を起動する

この GitHub リポジトリの Release ページから .wasm ファイル 📦"ChomadProblemServer.wasm" をダウンロード後、これを WASI (WebAssembly Standard Interface) に準拠したランタイム、具体的には "wasmtime" などで実行できます。

例えば、wasmtime をインストール済みの環境にて下記コマンドを実行することで、wasmtime 上でちょまど問題サーバーを起動することができます。

wasmtime ./ChomadProblemServer.wasm --tcplisten localhost:5000

上記実行後に、Web ブラウザで http://localhost:5000/ にアクセスすると、ちょまど問題サーバーが起動していることが確認できます。

開発

Chomado Problem Server は C# + .NET 8.0 + ASP.NET Core Minimal API で作成されています。

開発環境は

  • Windows OS + Visual Studio 2022 以降 (Community Edition 可)、
  • または .NET SDK 8.0 以降 + Visual Studio Code

を想定しています。

WebAssembly 版

WebAssembly 版は edition/wasm ブランチからビルドできます。

ただし .NET SDK は、7 以降 (この README 最終更新時点でプレビューリリースの段階) が必要です。

WebAssembly 版は、Steve Sanderson 氏 個人の実験プロジェクト "WASI SDK for .NET Core" によって実現されています。

Windows OS + Visual Studio の場合

事前に Visual Studio 2022 かそれ以降をインストールしておいてください。
(要件に問題なければ、無償利用可能な Community 版で構いません。)
インストールの際は「ASP.NET と Web 開発」のワークロードを選択してインストールしてください。

このリポジトリを git clone したのち、ソリューションファイル (.sln) を Visual Studio で開いてキーボードの Ctrl + F5 を押せばビルドが実行され、続けてブラウザが起動してページが表示されます。

.NET SDK + Visual Studio Code の場合

事前に .NET SDK 8.0 以降、および Visual Studio Code をインストールしておいてください。

このリポジトリを git clone したのち、clone した先のフォルダ直下にある 📂 ChomadProblemServer フォルダを Visual Studio Code で開いてキーボードの Ctrl + F5 を押せばビルドが実行され、続けてブラウザが起動してページが表示されます。

ライセンス

GNU General Public License v2.0

chomado-problem-server's People

Contributors

jsakamoto avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.