diff --git a/subjects/ascii-art-web/ascii-art-web-dockerize.audit.en.md b/subjects/ascii-art-web/ascii-art-web-dockerize.audit.en.md new file mode 100644 index 000000000..e5c829123 --- /dev/null +++ b/subjects/ascii-art-web/ascii-art-web-dockerize.audit.en.md @@ -0,0 +1,57 @@ +#### Functional + +###### Does the project have a DockerFile? + +##### Try running the [command](https://docs.docker.com/engine/reference/commandline/image_build/) `"docker image build [OPTIONS] PATH | URL | -"` to build the image. (example : `"docker image build -f Dockerfile -t ."`). +``` +student$ docker images +REPOSITORY TAG IMAGE ID CREATED SIZE + latest 85a65d66ca39 7 seconds ago 795MB +``` +###### Run the command `"docker images"` to see all images. Does the docker image build as above? + +##### Try running the [command](https://docs.docker.com/engine/reference/commandline/container_run/) `"docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]"` to start the container. (example : `"docker container run -p --detach --name "`) +``` +student$ docker ps -a +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +cc8f5dcf760f ascii-art-web-docker "./server" 6 seconds ago Up 6 seconds 0.0.0.0:8080->8080/tcp ascii-art-web +``` +###### Run the command `"docker ps -a"` to see all containers. Is the docker container running as above? + +##### Try running the [command](https://docs.docker.com/engine/reference/commandline/exec/) `"docker exec [OPTIONS] CONTAINER COMMAND [ARG...]"`. (example : `"docker exec -it /bin/bash"`) and do a `"ls -l"` to see the file system. +``` +student$ docker exec -it postgres /bin/bash +I have no name!@51c2efe2d366:/$ ls -l +drwxr-xr-x 1 root root 4096 Dec 28 15:31 bin +-rwxr-xr-x 2 root root 4096 Sep 8 10:51 server.go +drwxr-xr-x 2 root root 4096 Sep 8 10:51 templates +I have no name!@51c2efe2d366:/$ exit +exit +student$ +``` +###### Is the file system for the containers well organized? + +###### Does the DockerFile contain some [metadata](https://docs.docker.com/config/labels-custom-metadata/) applied to the docker object? + +###### Does the project present no [unused object](https://docs.docker.com/config/pruning/)? + +#### General + +###### +Does the project present a script to build the images and containers? (using a script to simplify the build) + +#### Basic + +###### +Does the server run quickly and effectively? (Favoring recursive, no unnecessary data requests, etc) +###### +Does the code obey the [good practices](https://github.com/01-edu/public/blob/master/subjects/good-practices.en.md)? + +###### +Is there a test file for this code? +###### +Are the tests checking each possible case? + +###### +Are the instructions in the website clear? +###### +Does the project run using an API? + +#### Social + +###### +Did you learn anything from this project? +###### +Can it be open-sourced / be used for other sources? +###### +Would you recommend/nominate this program as an example for the rest of the school? diff --git a/subjects/ascii-art-web/ascii-art-web-dockerize.en.md b/subjects/ascii-art-web/ascii-art-web-dockerize.en.md new file mode 100644 index 000000000..0fb4d2be2 --- /dev/null +++ b/subjects/ascii-art-web/ascii-art-web-dockerize.en.md @@ -0,0 +1,42 @@ +## ascii-art-web-dockerize + +### Objectives + +You must follow the same [principles](https://github.com/01-edu/public/blob/master/subjects/ascii-art-web/ascii-art-web.en.md) as the first subject. + +- For this project you must create at least : + - one Dockerfile + - one image + - one container + +- You must apply [metadata](https://docs.docker.com/config/labels-custom-metadata/) to Docker objects. + +- You have to take caution of unused object (often referred to as "garbage collection"). + +This project will help you learn about : + +- Client utilities. +- The basics of web : + - Server + - HTML + - HTTP +- Ways to receive data. +- Ways to output data. +- Learning what is [docker](https://docs.docker.com). +- Using and [setting up Docker](https://docs.docker.com/get-started/) : + - Services and dependencies. + - Containerizing an application. + - Compatibility/Dependency. + - Creating images. + +### Instructions + +- The web server must be created in **Go**. +- The code must respect the [good practices](https://github.com/01-edu/public/blob/master/subjects/good-practices.en.md). +- You must use Docker. +- The project must have a **Dockerfile**. +- Your Dockerfile must respect the [Dockerfile good practices](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/). + +### Usage + +- You can see all about Docker on [docker docs](https://docs.docker.com/). diff --git a/subjects/ascii-art-web/ascii-art-web.audit.en.md b/subjects/ascii-art-web/ascii-art-web.audit.en.md new file mode 100644 index 000000000..77b59ea80 --- /dev/null +++ b/subjects/ascii-art-web/ascii-art-web.audit.en.md @@ -0,0 +1,99 @@ +#### Functional + +###### Does the project contain HTML files? + +##### Try inputting `"{123}\n (World)!"` with the standard template/banner. +``` + __ __ + / / _ ____ _____ \ \ + | | / | |___ \ |___ / | | +/ / | | __) | |_ \ \ \ +\ \ | | / __/ ___) | / / + | | |_| |_____| |____/ | | + \_\ /_/ + + __ _ _ _ _ __ __ __ __ _ _ __ _ + / / | | | | | | | | \ \ / / \ \ / / | | | | \ \ | | + / / | |__| | ___ | | | | ___ \ \ | | \ \ /\ / / ___ _ __ | | __| | | | | | +< < | __ | / _ \ | | | | / _ \ > > | | \ \/ \/ / / _ \ | '__| | | / _` | | | | | + \ \ | | | | | __/ | | | | | (_) | / / | | \ /\ / | (_) | | | | | | (_| | | | |_| + \_\ |_| |_| \___| |_| |_| \___/ /_/ | | \/ \/ \___/ |_| |_| \__,_| | | (_) + \_\ /_/ + +``` +###### Does it display the right result as above? + +##### Try to input `"123??"` using the template/banner standard. +``` + ___ ___ + _ ____ _____ |__ \ |__ \ +/ | |___ \ |___ / ) | ) | +| | __) | |_ \ / / / / +| | / __/ ___) | |_| |_| +|_| |_____| |____/ (_) (_) + + +``` +###### Does it display the right result as above? + +##### Try to input `"$% \"="` using the template/banner shadow. +``` + _| _| + _| _|_| _| _| _| +_|_|_| _|_| _| _|_|_|_|_| +_|_| _| + _|_| _| _|_| _|_|_|_|_| +_|_|_| _| _|_| + _| + +``` +###### Does it display the right result as above? + +##### Try to input `"123 T/fs#R"` using the template/banner thinkertoy. +``` + + 0 -- o-o o-O-o o o-o | | o--o + /| o o | | / | -O-O- | | +o | / oo | o -O- o-o | | O-Oo + | / | | / | \ -O-O- | \ +o-o-o o--o o-o o o o o-o | | o o + + +``` +###### Does it display the right result as above? + +###### Does it display an understandable graphical representation of the result? + +##### Try to navigate between all the available pages in the website. +###### Are all the pages working? Does the project avoid [404 status](https://www.restapitutorial.com/httpstatuscodes.html)? + +###### Does the project avoid HTTP status [400 bad request](https://kinsta.com/knowledgebase/400-bad-request/#causes)? +###### Does the project avoid HTTP status [500 internal server error](https://www.restapitutorial.com/httpstatuscodes.html)? + +##### Try making a request to the server (clicking a button to generate the ascii-art representation on the website) +###### Is the communication between [server and client](https://www.geeksforgeeks.org/client-server-model/) well established? + +###### Does the server use the right [HTTP method](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods)? +###### Has the website runned without crashing at anytime? +###### Is the server written in Go? + +#### General + +###### +Does the server present all the needed [handlers and patterns](https://golang.org/pkg/net/http/#HandleFunc) for the http requests? + +#### Basic + +###### +Does the server run quickly and effectively? (Favoring recursive, no unnecessary data requests, etc) +###### +Does the code obey the [good practices](https://github.com/01-edu/public/blob/master/subjects/good-practices.en.md)? + +###### +Is there a test file for this code? +###### +Are the tests checking each possible case? + +###### +Are the instructions in the website clear? +###### +Does the project run using an API? + +#### Social + +###### +Did you learn anything from this project? +###### +Can it be open-sourced / be used for other sources? +###### +Would you recommend/nominate this program as an example for the rest of the school? diff --git a/subjects/ascii-art-web/ascii-art-web.en.md b/subjects/ascii-art-web/ascii-art-web.en.md index 95aefc079..791e76bd3 100644 --- a/subjects/ascii-art-web/ascii-art-web.en.md +++ b/subjects/ascii-art-web/ascii-art-web.en.md @@ -8,6 +8,7 @@ Ascii-art-web consists in creating and running a server, in which it will be pos - You can run your server **locally** (localhost) or using an **API**. - You must use the different [banners](https://github.com/01-edu/public/tree/master/subjects/ascii-art) for the website. - It should be available to choose between the banners. +- You have to use the right [HTTP methods](https://www.tutorialspoint.com/http/http_methods.htm). - You need to have a well established connection between server and client. This project will help you learn about : diff --git a/subjects/good-practices.en.md b/subjects/good-practices.en.md index 13529e0ca..708e962e3 100644 --- a/subjects/good-practices.en.md +++ b/subjects/good-practices.en.md @@ -30,4 +30,8 @@ ### CSS -- [**CSS**](https://www.tothenew.com/blog/10-best-practices-in-css/) \ No newline at end of file +- [**CSS**](https://www.tothenew.com/blog/10-best-practices-in-css/) + +### Dockerfile + +- [**Dockerfile**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)