「🎉」 init: hello world !
25
docker-compose.yml
Normal file
@ -0,0 +1,25 @@
|
||||
services:
|
||||
webserver:
|
||||
container_name: random-shit
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/dockerfile
|
||||
networks:
|
||||
- traefik-back
|
||||
# ports:
|
||||
# - 80:80
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.docker.network=traefik-back
|
||||
|
||||
- traefik.http.routers.random-shit.rule=host(`random-shit.kanel.ovh`)
|
||||
- traefik.http.routers.random-shit.entrypoints=websecure
|
||||
- traefik.http.routers.random-shit.tls.certresolver=letsencrypt
|
||||
- traefik.http.routers.random-shit.tls=true
|
||||
|
||||
- traefik.http.services.random-shit.loadbalancer.server.port=80
|
||||
- traefik.http.routers.random-shit.service=random-shit
|
||||
networks:
|
||||
traefik-back:
|
||||
external: true
|
4
docker/Dockerfile
Normal file
@ -0,0 +1,4 @@
|
||||
FROM caddy:latest
|
||||
|
||||
COPY src /usr/share/caddy
|
||||
#COPY Caddyfile /etc/caddy/Caddyfile
|
1
src/42_evals/Cursus/Born2beroot/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/Born2beroot/img/all.jpg
Executable file
After Width: | Height: | Size: 1.8 MiB |
652
src/42_evals/Cursus/Born2beroot/index.html
Normal file
@ -0,0 +1,652 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>Born2beroot correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br />Scale for project
|
||||
<a href="https://projects.intra.42.fr/projects/born2beroot">Born2beroot</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
<hr />
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24830">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please follow the rules below:<br /><br />
|
||||
- Remain polite, courteous, respectful, and constructive during the evaluation process. The well-being of
|
||||
the
|
||||
community depends on it.<br /><br />
|
||||
- Identify with the evaluated person or group any potential malfunctions in their work.
|
||||
Take the time to discuss and debate the identified issues.<br /><br />
|
||||
- You must take into account that there may be slight differences in interpretation between the
|
||||
project instructions, its scope, and its features. Keep an open mind and grade in the most
|
||||
honest way possible. The pedagogy is only valid if the peer evaluation is done seriously.<br />
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24830">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade what is contained in the student's or group's cloned Git repository.<br /><br />
|
||||
- Ensure that the Git repository actually belongs to the student or group, that the project is the one
|
||||
expected, and that "git clone" is used in an empty folder.<br /><br />
|
||||
- Thoroughly check that no alias has been used to deceive you and make sure you are evaluating
|
||||
the official submission.<br /><br />
|
||||
- To avoid any surprises, check with the student or group for any potential scripts used
|
||||
to facilitate the evaluation (for example, test or automation scripts).<br /><br />
|
||||
- If you have not done the project you are evaluating, you must read the subject in its entirety before
|
||||
starting the evaluation.<br /><br />
|
||||
- Use the available flags to report an empty submission, a non-working program, a Norme error, cheating,
|
||||
etc. In these cases, the evaluation is finished and the grade is 0, or -42 in case of cheating. However,
|
||||
except in cases of cheating, you are encouraged to continue the discussion on the
|
||||
work submitted, even if it is incomplete. This is to identify mistakes not to repeat in the future.<br />
|
||||
</p>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="dancer from-down" id="attachments-24830">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a href="https://github.com/rphlr/42-Subjects/" target="_blank">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form accept-charset="UTF-8" class="simple_form form-horizontal" id="edit_scale_team_5411828" method="post"
|
||||
novalidate="novalidate"><input name="utf8" type="hidden" value="✓" /><input name="_method" type="hidden"
|
||||
value="patch" /><input name="authenticity_token" type="hidden"
|
||||
value="6Ham6Zq7dWNKn0GqURyJ/9favA08IRL2ZZlqRe45A5XzMg8ElLpzR1Nr9YnMvzkgYRhOZfma8IhsTLDFrmK/QQ==" />
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-70025">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminaries</h3>
|
||||
<p class="font-italic">If a case of cheating is suspected, grading and evaluation end immediately. To
|
||||
report it, select the "Cheat" flag. Be careful to use it calmly, cautiously, and judiciously.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Preliminary Tests</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Verify the following points:</p>
|
||||
<ul>
|
||||
<li>The conditions for access to the defense are met: the evaluated person(s) is present, the submission
|
||||
is non-empty and truly belongs to them, etc...</li>
|
||||
<li>For this project, you must clone the Git repository on the computer of the person being evaluated.
|
||||
</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][0][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][0][question_id]" value="236761" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][0]_true"
|
||||
name="[scale_team][answers_attributes][0][value]" type="radio" value="1" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" name="[scale_team][answers_attributes][0][value]"
|
||||
type="radio" value="0" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-70026">
|
||||
<div class="section-header">
|
||||
<hr />
|
||||
<h3 class="font-weight-bold mb-1">General Instructions</h3>
|
||||
<p class="font-italic"></p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">General Guidelines</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>During the defense, as soon as you need help to verify a point, the evaluated person must assist you.
|
||||
</li>
|
||||
<li>Check that the "signature.txt" file is present at the root of the cloned repository.</li>
|
||||
<li>Ensure that the signature contained in "signature.txt" matches that of the ".vdi" file of the virtual
|
||||
machine being evaluated. A simple diff should allow you to compare the two signatures. If needed, ask
|
||||
the evaluated person where their ".vdi" file is located.</li>
|
||||
<li>As a precaution, you may duplicate the original virtual machine to keep a copy.</li>
|
||||
<li>Launch the virtual machine to be evaluated.</li>
|
||||
<li>If something does not work as expected or the two signatures differ, the evaluation stops here.</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][1][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][1][question_id]" value="236762" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][1]_true"
|
||||
name="[scale_team][answers_attributes][1][value]" type="radio" value="1" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" name="[scale_team][answers_attributes][1][value]"
|
||||
type="radio" value="0" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-70027">
|
||||
<div class="section-header">
|
||||
<hr />
|
||||
<h3 class="font-weight-bold mb-1">Mandatory Part</h3>
|
||||
<p class="font-italic">The project involves creating and configuring a virtual machine following strict
|
||||
rules. The evaluated person will need to assist you during the defense. Make sure all the following
|
||||
points are respected.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Project Overview</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>The evaluated person must simply explain:
|
||||
<ul>
|
||||
<li>The basic functioning of their virtual machine</li>
|
||||
<li>Their choice of operating system</li>
|
||||
<li>The basic differences between Rocky and Debian</li>
|
||||
<li>The benefits of virtual machines</li>
|
||||
<li>If the chosen operating system is Rocky, they must explain what SELinux and DNF are.</li>
|
||||
<li>If the chosen operating system is Debian, they must explain the difference between aptitude and
|
||||
apt, and what APPArmor is. During the defense, a script must display information every 10 minutes.
|
||||
Its operation will be checked in detail later. If the explanations are not clear, the evaluation
|
||||
stops here.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][2][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][2][question_id]" value="236763" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][2]_true"
|
||||
name="[scale_team][answers_attributes][2][value]" type="radio" value="1" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" name="[scale_team][answers_attributes][2][value]"
|
||||
type="radio" value="0" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Simple Configuration</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Reminder: as soon as you need help to verify a point, the evaluated person must be able to assist you.
|
||||
</p>
|
||||
<ul>
|
||||
<li>Verify that the machine does not have a graphical environment at startup. A password will be requested
|
||||
before any connection attempt on this machine. Log in with a non-root user. Verify that the chosen
|
||||
password respects the rules imposed in the subject. Then, with the help of the evaluator, make sure
|
||||
that:</li>
|
||||
<li>The chosen operating system is indeed Debian or Rocky</li>
|
||||
<li>The UFW service is properly launched</li>
|
||||
<li>The SSH service is properly launched. If something does not work as expected or is not clearly
|
||||
explained, the evaluation stops here.</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][3][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][3][question_id]" value="236764" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][3]_true"
|
||||
name="[scale_team][answers_attributes][3][value]" type="radio" value="1" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" name="[scale_team][answers_attributes][3][value]"
|
||||
type="radio" value="0" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">User</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Reminder: as soon as you need help to check a point, the evaluated person must be able to assist you.</p>
|
||||
<p>The subject requires that a user with the login name of the evaluated person be present on the virtual
|
||||
machine. Verify that this user has been added and that they belong to the "sudo" and "user42" groups.</p>
|
||||
<p>Ensure the rules imposed in the subject concerning the password policy have been implemented by following
|
||||
the steps below.<br />
|
||||
First, create a new user. Assign them a password of your choice, respecting the subject's rules.<br />
|
||||
The evaluated person must now explain how they were able to implement the requested rules on their virtual
|
||||
machine.<br />
|
||||
Normally, one or two files would have been modified.<br />
|
||||
If there is any problem, the evaluation stops here.</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>Now that you have a new user, ask the evaluated person to create a group named "evaluating" in front
|
||||
of you and assign it to this user.<br />
|
||||
Finally, check that this user indeed belongs to the "evaluating" group.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>To finish, ask the evaluated person to explain the purpose of this password policy, as well as the
|
||||
advantages and disadvantages of its implementation. Of course, answering that it is because the
|
||||
subject requires it does not count.<br />
|
||||
If something does not work as expected or is not clearly explained, the evaluation stops here.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][4][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][4][question_id]" value="236765" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][4]_true"
|
||||
name="[scale_team][answers_attributes][4][value]" type="radio" value="1" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" name="[scale_team][answers_attributes][4][value]"
|
||||
type="radio" value="0" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Hostname and Partitions</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Reminder: as soon as you need help to check a point, the evaluated person must be able to assist you.</p>
|
||||
<ul>
|
||||
<li>Verify that the hostname of the machine is formatted as follows: login42 (login of the evaluated
|
||||
person).</li>
|
||||
<li>Change this hostname by replacing the login with yours, then restart the machine. If upon restarting,
|
||||
the hostname has not been updated, the evaluation stops here.</li>
|
||||
<li>You can now restore the original hostname of the machine.</li>
|
||||
<li>Ask the evaluated person how to display the partitions of their virtual machine.</li>
|
||||
<li>Compare the output with the example given in the subject. Note: if the evaluated person has done the
|
||||
bonuses, you should refer to the example from the bonus part.</li>
|
||||
</ul>
|
||||
<p>This part is an opportunity to discuss partitions! The evaluated person must give you a brief explanation
|
||||
of how LVM works and why it's beneficial.<br />
|
||||
If something does not work as expected or is not clearly explained, the evaluation stops here.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][5][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][5][question_id]" value="236766" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][5]_true"
|
||||
name="[scale_team][answers_attributes][5][value]" type="radio" value="1" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" name="[scale_team][answers_attributes][5][value]"
|
||||
type="radio" value="0" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">SUDO</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Reminder: as soon as you need help to check a point, the evaluated person must be able to assist you.</p>
|
||||
<ul>
|
||||
<li>Verify that the "sudo" program is indeed installed on the virtual machine.</li>
|
||||
<li>The evaluated person must now show how to assign your new user to the "sudo" group.</li>
|
||||
<li>The subject imposes strict rules for sudo. The evaluated person must first explain the purpose and
|
||||
operation of sudo with examples of their choice. Then, they must demonstrate the implementation of the
|
||||
rules imposed by the subject.</li>
|
||||
<li>Verify that the "/var/log/sudo/" directory exists and contains at least one file. Check the contents
|
||||
of the files in this directory; you should see a history of commands used with sudo. Finally, attempt to
|
||||
run a command via sudo. Check if the file(s) in the "/var/log/sudo/" directory have been updated. If
|
||||
something does not work as expected or is not clearly explained, the evaluation stops here.</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][6][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][6][question_id]" value="236767" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][6]_true"
|
||||
name="[scale_team][answers_attributes][6][value]" type="radio" value="1" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" name="[scale_team][answers_attributes][6][value]"
|
||||
type="radio" value="0" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">UFW / Firewalld</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Reminder: as soon as you need help to check a point, the evaluated person must be able to assist you.</p>
|
||||
<ul>
|
||||
<li>Verify that the "UFW" (or "Firewalld" for rocky) program is indeed installed on the virtual machine.
|
||||
</li>
|
||||
<li>Verify that it is functioning correctly.</li>
|
||||
<li>The evaluated person must give you a basic explanation of what UFW (or "Firewalld") is and why it's
|
||||
important to use it.</li>
|
||||
<li>List the active rules in UFW (or "Firewalld"). There should be a rule for port 4242.</li>
|
||||
<li>Add a new rule to open port 8080. Verify that it has been added by listing the active rules.</li>
|
||||
<li>Finally, with the help of the evaluated person, delete this new rule. If something does not work as
|
||||
expected or is not clearly explained, the evaluation stops here.</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][7][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][7][question_id]" value="236768" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][7]_true"
|
||||
name="[scale_team][answers_attributes][7][value]" type="radio" value="1" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][7]_false" name="[scale_team][answers_attributes][7][value]"
|
||||
type="radio" value="0" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">SSH</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Reminder: as soon as you need help to check a point, the evaluated person must be able to assist you.</p>
|
||||
<ul>
|
||||
<li>Verify that the SSH service is indeed installed on the virtual machine.</li>
|
||||
<li>Verify that it is functioning correctly.</li>
|
||||
<li>The evaluated person must give you a basic explanation of what SSH is and why it's important to use
|
||||
it.</li>
|
||||
<li>Verify that the SSH service uses only port 4242.</li>
|
||||
<li>The evaluated person must help you use SSH to connect with the new user created. For this, you can use
|
||||
a key or a simple password, depending on the evaluated person. Of course, you must ensure that SSH
|
||||
cannot be used with the "root" user as indicated in the subject. If something does not work as expected
|
||||
or is not clearly explained, the evaluation stops here.</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][8][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][8][question_id]" value="236769" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][8]_true"
|
||||
name="[scale_team][answers_attributes][8][value]" type="radio" value="1" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][8]_false" name="[scale_team][answers_attributes][8][value]"
|
||||
type="radio" value="0" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Script Monitoring</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Reminder: as soon as you need help to check a point, the evaluated person must be able to assist you.</p>
|
||||
<p>The evaluated person must simply explain:</p>
|
||||
<ul>
|
||||
<li>The operation of their script by displaying its code</li>
|
||||
<li>What "cron" is</li>
|
||||
<li>How they have set up their script to execute every 10 minutes from server launch. Once the proper
|
||||
functioning of the script is verified, the evaluated person must make sure that this script executes
|
||||
every minute. You can launch whatever you wish to ensure that the script runs correctly with dynamic
|
||||
values. Finally, the evaluated person must ensure that the script no longer runs at server launch,
|
||||
without modifying the script itself. To verify this point, the server will need to be restarted one last
|
||||
time. At startup, it must be verified that the script still exists in the same place, that its
|
||||
permissions have remained unchanged, and that it has not been modified. If any of the above points are
|
||||
not correct, the evaluation stops here.</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][9][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][9][question_id]" value="236770" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][9]_true"
|
||||
name="[scale_team][answers_attributes][9][value]" type="radio" value="1" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][9]_false" name="[scale_team][answers_attributes][9][value]"
|
||||
type="radio" value="0" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-70028">
|
||||
<div class="section-header">
|
||||
<hr />
|
||||
<h3 class="font-weight-bold mb-1">Bonus</h3>
|
||||
<p class="font-italic">Bonuses will only be examined if the mandatory part is excellent. This means that
|
||||
the mandatory part must have been completed from start to finish, with perfect error management even in
|
||||
cases of unexpected use. If all mandatory points have not been awarded during this defense, no bonus
|
||||
points will be counted.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Bonus</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Verify with the help of the subject and the evaluated person the available bonuses for this project:</p>
|
||||
<ul>
|
||||
<li>The implementation of partitions will be worth 2 points</li>
|
||||
<li>The setup of WordPress, with only the services listed in the subject, will be worth 2 points</li>
|
||||
<li>The free-choice service will be worth 1 point. Verify and test the proper functioning and
|
||||
implementation of each additional service. For the free-choice bonus service, the evaluated person must
|
||||
provide a simple explanation of the service and explain the reasons for their choice. Be aware: NGINX
|
||||
and Apache2 are forbidden.</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][3][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234698"
|
||||
name="[scale_team][answers_attributes][3][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="marked-title text-center">Rate it from 0 (failed) through 5 (excellent)</div>
|
||||
<input autocomplete="off" class="star-range" data-star-range="" max="5"
|
||||
name="[scale_team][answers_attributes][3][value]" step="1" type="range" value="0"
|
||||
style="position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0;">
|
||||
<hr>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24830">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active" for="scale_team_flag_id_2"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/CPP00/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/CPP00/img/all.jpg
Executable file
After Width: | Height: | Size: 1.1 MiB |
483
src/42_evals/Cursus/CPP00/index.html
Normal file
@ -0,0 +1,483 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>CPP Module 00 correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function (registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/cpp-module-03">CPP Module 03</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24654">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please respect the following rules:<br><br>- Stay polite, courteous, respectful, and constructive
|
||||
during the evaluation process. The well-being of the community depends on it.<br><br>-
|
||||
Identify with the evaluated person or group any malfunctions in their work. Take the time to discuss and
|
||||
debate the
|
||||
identified problems.<br><br>-
|
||||
Keep in mind that there may be slight differences in interpretation between the project instructions, its
|
||||
scope, and functionalities.
|
||||
Keep an open mind and rate as honestly as possible. Pedagogy is only valid if peer evaluation is taken
|
||||
seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24654">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only rate what is contained in the cloned Git repository of the student or group.<br><br>
|
||||
- Verify that the Git repository belongs to the student or group, that the project is the expected one, and
|
||||
that "git clone" is used in an empty folder.<br><br>
|
||||
- Thoroughly check that no alias has been used to deceive you and ensure that you are evaluating the
|
||||
official submission.<br><br>
|
||||
- To avoid any surprises, check with the student or group any potential scripts used to facilitate
|
||||
evaluation (e.g., test or automation scripts).<br><br>
|
||||
- If you have not done the project you are evaluating, you must read the subject entirely before starting
|
||||
the evaluation.<br><br>
|
||||
- Use the available flags to report an empty submission, a non-functioning program, a Norm error, cheating,
|
||||
etc.<br>
|
||||
</p>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24654">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">Account.hpp</a>
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">19920104_091532.log</a>
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">tests.cpp</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5545693"
|
||||
action="https://projects.intra.42.fr/projects/cpp-module-01/project_sessions/3325/evaluations/1602/scales/24654/scale_teams/5545693"
|
||||
accept-charset="UTF-8" method="post">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69375">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminary tests</h3>
|
||||
<p class="font-italic">If cheating is suspected, the evaluation stops here. Use the "Cheat" flag to
|
||||
report it. Take this decision calmly, wisely, and please, use this button with caution.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Prerequisites</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The code must compile with c++ and the flags -Wall -Wextra -Werror<br>
|
||||
Don't forget this project has to follow the C++98 standard. Thus, <br>
|
||||
C++11 (and later) functions or containers are NOT expected.</p>
|
||||
|
||||
<p>Any of these means you must not grade the exercise in question:</p>
|
||||
|
||||
<ul>
|
||||
<li>A function is implemented in a header file (except for template
|
||||
functions).</li>
|
||||
<li>A Makefile compiles without the required flags and/or another
|
||||
compiler than c++.</li>
|
||||
</ul>
|
||||
|
||||
<p>Any of these means that you must flag the project with "Forbidden <br>
|
||||
Function":</p>
|
||||
|
||||
<ul>
|
||||
<li>Use of a "C" function (*alloc, *printf, free).</li>
|
||||
<li>Use of a function not allowed in the exercise guidelines.</li>
|
||||
<li>Use of "using namespace <ns_name>" or the "friend" keyword.</li>
|
||||
<li>Use of an external library, or features from versions other than
|
||||
C++98.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="scale-section-item dancer from-down" id="section-69376">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 00 : Megaphone</h3>
|
||||
<p class="font-italic">This exercise is a warm-up to discover I/O in C++.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Operation</h4>
|
||||
<p>The goal is to develop a to_upper with specific behavior if launched without parameters. It must be
|
||||
solved
|
||||
with a C++ approach (string/upper).</p>
|
||||
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<section class="scale-section-item dancer from-down" id="section-69376">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 01 : My Awesome Phonebook</h3>
|
||||
<p class="font-italic">This exercise is a first approach to writing a simple class and using it in an
|
||||
interactive program. If the exercise does not work perfectly, rate what can be graded.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Error management</h4>
|
||||
<p>There is some error management to do in this program but the behaviors are not
|
||||
specified in the subject. Exiting the program properly or managing errors is ok. A segfault is not! :D
|
||||
</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][0][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234698"
|
||||
name="[scale_team][answers_attributes][0][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="marked-title text-center">Rate it from 0 (failed) through 5 (excellent)</div>
|
||||
<input autocomplete="off" class="star-range" data-star-range="" max="5"
|
||||
name="[scale_team][answers_attributes][0][value]" step="1" type="range" value="0"
|
||||
style="position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0;">
|
||||
<hr>
|
||||
</div>
|
||||
<h4 class="scale-question-name">The EXIT command</h4>
|
||||
<p>Write down the EXIT command based on what is in the subject line.
|
||||
</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Visibility</h4>
|
||||
<p>Contact class attributes must be private. The class must expose the corresponding accessors. Also check
|
||||
that anything used only in one class (and not just the Contact class) is private and the rest public.
|
||||
Beginners tend to to make everything public. That's what you need to check here.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][1][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234698"
|
||||
name="[scale_team][answers_attributes][1][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="marked-title text-center">Rate it from 0 (failed) through 5 (excellent)</div>
|
||||
<input autocomplete="off" class="star-range" data-star-range="" max="5"
|
||||
name="[scale_team][answers_attributes][1][value]" step="1" type="range" value="0"
|
||||
style="position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0;">
|
||||
<hr>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Contact and Phonebook Classes</h4>
|
||||
<p>The code must include a Contact class (or other name). The class must contain the requested attributes.
|
||||
The code must contain a Phonebook class with an array of Contacts inside.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Read/Eval Loop</h4>
|
||||
<p>The program should offer a sort of read/eval loop: Read then process input, then wait for new input
|
||||
until receiving an EXIT command. The loop should be done in a C++ way (std::cin).</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">The ADD command</h4>
|
||||
<p>Make a note of the ADD command based on what is in the subject line.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][2][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234698"
|
||||
name="[scale_team][answers_attributes][2][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="marked-title text-center">Rate it from 0 (failed) through 5 (excellent)</div>
|
||||
<input autocomplete="off" class="star-range" data-star-range="" max="5"
|
||||
name="[scale_team][answers_attributes][2][value]" step="1" type="range" value="0"
|
||||
style="position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0;">
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<h4 class="scale-question-name">The SEARCH command</h4>
|
||||
<p>Write down the SEARCH command based on what is
|
||||
requested in the subject line. A slight deviation from the expected format is not important. This part
|
||||
is about using "iomanips" in C++ and that's what you need to focus on.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][3][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234698"
|
||||
name="[scale_team][answers_attributes][3][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="marked-title text-center">Rate it from 0 (failed) through 5 (excellent)</div>
|
||||
<input autocomplete="off" class="star-range" data-star-range="" max="5"
|
||||
name="[scale_team][answers_attributes][3][value]" step="1" type="range" value="0"
|
||||
style="position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0;">
|
||||
<hr>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69376">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 02 : The Job of Your Dreams</h3>
|
||||
<p class="font-italic">The aim of this exercise is to recover information hidden amidst the noise and
|
||||
insert code into an existing context.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Did you save the world?</h4>
|
||||
<p>This exercise is pretty straightforward. Either Account.cpp works, or it doesn't or it doesn't. Compare
|
||||
the program's output with the log file provided. Any difference (except for timestamps or destructor
|
||||
order) means that the exercise is incorrect.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24654">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active" for="scale_team_flag_id_12"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script async="" await="" src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/CPP01/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/CPP01/img/all.jpg
Executable file
After Width: | Height: | Size: 1.7 MiB |
882
src/42_evals/Cursus/CPP01/index.html
Executable file
@ -0,0 +1,882 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>CPP Module 01 correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/cpp-module-01">CPP Module 01</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24654">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and constructive
|
||||
throughout the <br> evaluation process. The well-being of the community depends on it.<br><br>-
|
||||
Identify with the student or group whose work is evaluated the possible <br> dysfunctions in their
|
||||
project. Take the time to discuss and debate the <br> problems that may have been identified.<br><br>-
|
||||
You must consider that there might be some differences in how your peers <br> might have understood
|
||||
the project's instructions and the scope of its <br> functionalities. Always keep an open mind and
|
||||
grade them as honestly as <br> possible. The pedagogy is useful only and only if the peer-evaluation
|
||||
is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24654">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or
|
||||
group.<br><br>- Double-check that the Git repository belongs to the student(s). Ensure that <br> the
|
||||
project is the one expected. Also, check that 'git clone' is used in an <br> empty folder.<br><br>-
|
||||
Check carefully that no malicious aliases was used to fool you and make you <br> evaluate something
|
||||
that is not the content of the official repository.<br><br>- To avoid any surprises and if applicable,
|
||||
review together any scripts used <br> to facilitate the grading (scripts for testing or
|
||||
automation).<br><br>- If you have not completed the assignment you are going to evaluate, you have
|
||||
<br> to read the entire subject prior to starting the evaluation process.<br><br>- Use the available
|
||||
flags to report an empty repository, a non-functioning <br> program, a Norm error, cheating, and so
|
||||
forth. <br> In these cases, the evaluation process ends and the final grade is 0, <br> or -42 in case
|
||||
of cheating. However, except for cheating, student are <br> strongly encouraged to review together the
|
||||
work that was turned in, in order <br> to identify any mistakes that shouldn't be repeated in the
|
||||
future.<br><br>- You should never have to edit any file except the configuration file if it <br>
|
||||
exists. If you want to edit a file, take the time to explicit the reasons <br> with the evaluated
|
||||
student and make sure both of you are okay with this.<br><br>- You must also verify the absence of
|
||||
memory leaks. Any memory allocated on <br> the heap must be properly freed before the end of
|
||||
execution. <br> You are allowed to use any of the different tools available on the computer, <br> such
|
||||
as leaks, valgrind, or e_fence. In case of memory leaks, tick the <br> appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24654">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5545693"
|
||||
action="https://projects.intra.42.fr/projects/cpp-module-01/project_sessions/3325/evaluations/1602/scales/24654/scale_teams/5545693"
|
||||
accept-charset="UTF-8" method="post">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69375">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminary tests</h3>
|
||||
<p class="font-italic">If cheating is suspected, the evaluation stops here. Use the "Cheat" flag to
|
||||
report it. Take this decision calmly, wisely, and please, use this button with caution.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Prerequisites</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The code must compile with c++ and the flags -Wall -Wextra -Werror<br>
|
||||
Don't forget this project has to follow the C++98 standard. Thus, <br>
|
||||
C++11 (and later) functions or containers are NOT expected.</p>
|
||||
|
||||
<p>Any of these means you must not grade the exercise in question:</p>
|
||||
|
||||
<ul>
|
||||
<li>A function is implemented in a header file (except for template
|
||||
functions).</li>
|
||||
<li>A Makefile compiles without the required flags and/or another
|
||||
compiler than c++.</li>
|
||||
</ul>
|
||||
|
||||
<p>Any of these means that you must flag the project with "Forbidden <br>
|
||||
Function":</p>
|
||||
|
||||
<ul>
|
||||
<li>Use of a "C" function (*alloc, *printf, free).</li>
|
||||
<li>Use of a function not allowed in the exercise guidelines.</li>
|
||||
<li>Use of "using namespace <ns_name>" or the "friend" keyword.</li>
|
||||
<li>Use of an external library, or features from versions other than
|
||||
C++98.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69376">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 00: BraiiiiiiinnnzzzZ</h3>
|
||||
<p class="font-italic">The goal of this exercise is to understand how to allocate memory in C++.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Makefile and tests</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Makefile that compiles using the appropriate flags.<br>
|
||||
There is at least a main to test the exercise.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Zombie Class</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Zombie Class.<br>
|
||||
It has a private name attribute.<br>
|
||||
It has at least a constructor.<br>
|
||||
It has a member function announce( void ) that prints: "<name>: BraiiiiiiinnnzzzZ..."<br>
|
||||
The destructor prints a debug message that includes the name of the zombie.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">newZombie</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a newZombie() function prototyped as: [ Zombie* newZombie( std::string name ); ]<br>
|
||||
It should allocate a Zombie on the heap and return it.<br>
|
||||
Ideally, it should call the constructor that takes a string and initializes <br>
|
||||
the name.<br>
|
||||
The exercise should be marked as correct if the Zombie can announce itself <br>
|
||||
with the name passed to the function.<br>
|
||||
There are tests to prove everything works.<br>
|
||||
The zombie is deleted correctly before the end of the program.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">randomChump</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a randomChump() function prototyped as: [ void randomChump( std::string name ); ]<br>
|
||||
It should create a Zombie on the stack, and make it announce itself.<br>
|
||||
Ideally the zombie should be allocated on the stack (so implicitly deleted <br>
|
||||
at the end of the function). It can also be allocated on the heap and then <br>
|
||||
explicitly deleted.<br>
|
||||
The student must justify their choices.<br>
|
||||
There are tests to prove everything works.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69377">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 01: Moar brainz!</h3>
|
||||
<p class="font-italic">The goal of this exercise is to allocate a number of objects at the same time
|
||||
using new[], initialize them, and to properly delete them.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Makefile and tests</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Makefile that compiles using the appropriate flags.<br>
|
||||
There is at least a main to test the exercise.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">zombieHorde</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The Zombie Class has a default constructor.<br>
|
||||
There is a zombieHorde() function prototyped as: [ Zombie* zombieHorde( int N, std::string name );
|
||||
]<br>
|
||||
It allocates N zombies on the heap explicitly using new[].<br>
|
||||
After the allocation, there is an initialization of the objects to set their name.<br>
|
||||
It returns a pointer to the first zombie.<br>
|
||||
There are enough tests in the main to prove the previous points.<br>
|
||||
Like: calling announce() on all the zombies.<br>
|
||||
Last, all the zombies should be deleted at the same time in the main.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69378">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 02: HI THIS IS BRAIN</h3>
|
||||
<p class="font-italic">Demystify references! Demystify references! Demystify references!
|
||||
Demystify references! Demystify references! Demystify references!
|
||||
Demystify references! Demystify references! Demystify references!
|
||||
Demystify references! Demystify references! Demystify references!
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Makefile and tests</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Makefile that compiles using the appropriate flags.<br>
|
||||
There is at least a main to test the exercise.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">HI THIS IS BRAIN</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a string containing "HI THIS IS BRAIN".<br>
|
||||
stringPTR is a pointer to the string.<br>
|
||||
stringREF is a reference to the string.<br>
|
||||
The address of the string is displayed using the string variable, the <br>
|
||||
stringPTR and the stringREF.<br>
|
||||
The variable content is displayed using the stringPTR and the stringREF.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69379">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 03: Unnecessary violence</h3>
|
||||
<p class="font-italic">The objective of this exercise is to understand that pointers and references
|
||||
present some small differences that make them less or more appropriate
|
||||
depending on the use and the lifecycle of the object used.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Makefile and tests</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Makefile that compiles using the appropriate flags.<br>
|
||||
There is at least a main to test the exercise.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Weapon</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Weapon class that has a type string, a getType() and a setType().<br>
|
||||
The getType() function returns a const reference to the type string.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][10][value]"
|
||||
id="radio_[scale_team][answers_attributes][10]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][10][value]"
|
||||
id="radio_[scale_team][answers_attributes][10]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">HumanA and HumanB</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>HumanA can have a reference or a pointer to the Weapon.<br>
|
||||
Ideally, it should be implemented as a reference, since the Weapon exists <br>
|
||||
from creation until destruction, and never changes.<br>
|
||||
HumanB must have a pointer to a Weapon since the field is not set at <br>
|
||||
creation time, and the weapon can be NULL.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69380">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 04: Sed is for losers</h3>
|
||||
<p class="font-italic">Thanks to this exercise, the student should have gotten familiar with
|
||||
ifstream and ofstream.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Makefile and tests</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Makefile that compiles using the appropriate flags.<br>
|
||||
There is at least a main to test the exercise.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Exercise 04</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a function replace (or other name) that works as specified in the <br>
|
||||
subject.<br>
|
||||
The error management is efficient: try to pass a file that does not exist, <br>
|
||||
change the permissions, pass it empty, etc.<br>
|
||||
If you can find an error that isn't handled, and isn't completely esoteric,<br>
|
||||
no points for this exercise.<br>
|
||||
The program must read from the file using an ifstream or equivalent, <br>
|
||||
and write using an ofstream or equivalent.<br>
|
||||
The implementation of the function should be done using functions from <br>
|
||||
std::string, no by reading the string character by character.<br>
|
||||
This is not C anymore!</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][13][value]"
|
||||
id="radio_[scale_team][answers_attributes][13]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][13]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][13][value]"
|
||||
id="radio_[scale_team][answers_attributes][13]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][13]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69381">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 05: Harl 2.0</h3>
|
||||
<p class="font-italic">The goal of this exercise is to use pointers to class member functions.
|
||||
Also, this is the opportunity to discover the different log levels.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Makefile and tests</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Makefile that compiles using the appropriate flags.<br>
|
||||
There is at least a main to test the exercise.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][14][value]"
|
||||
id="radio_[scale_team][answers_attributes][14]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][14]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][14][value]"
|
||||
id="radio_[scale_team][answers_attributes][14]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][14]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Our beloved Harl</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a class Harl with at least the 5 functions required in the subject.<br>
|
||||
The function complain() executes the other functions using a pointer to them.<br>
|
||||
Ideally, the student should have implemented a way of matching the different<br>
|
||||
strings corresponding to the log level to the pointers of the corresponding<br>
|
||||
member function.<br>
|
||||
If the implementation is different but the exercise works, you should mark <br>
|
||||
it as valid. The only thing that is not allowed is using a ugly if/elseif/else. <br>
|
||||
The student could have chosen to change the message Harl displays or to <br>
|
||||
display the examples given in the subject, both are valid.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][15][value]"
|
||||
id="radio_[scale_team][answers_attributes][15]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][15]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][15][value]"
|
||||
id="radio_[scale_team][answers_attributes][15]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][15]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69382">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 06: Harl filter</h3>
|
||||
<p class="font-italic">Now that you are experienced coders, you should use new instruction types,
|
||||
statements, loops, etc. The goal of this last exercise is to make you
|
||||
discover the switch statement.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Makefile and tests</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Makefile that compiles using the appropriate flags.<br>
|
||||
There is at least a main to test the exercise.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][16][value]"
|
||||
id="radio_[scale_team][answers_attributes][16]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][16]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][16][value]"
|
||||
id="radio_[scale_team][answers_attributes][16]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][16]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Switching Harl Off</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The program harlFilter takes as argument any of the log levels ("DEBUG", <br>
|
||||
"INFO", "WARNING" or "ERROR"). It should then display just the messages <br>
|
||||
that are at the same level or above (DEBUG < INFO < WARNING < ERROR). This <br>
|
||||
must be implemented using a switch statement with a default case.<br>
|
||||
Once again, no if/elseif/else anymore please.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][17][value]"
|
||||
id="radio_[scale_team][answers_attributes][17]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][17]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][17][value]"
|
||||
id="radio_[scale_team][answers_attributes][17]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][17]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24654">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active" for="scale_team_flag_id_12"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script async="" await="" src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/CPP02/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/CPP02/img/all.jpg
Executable file
After Width: | Height: | Size: 1.2 MiB |
908
src/42_evals/Cursus/CPP02/index.html
Executable file
@ -0,0 +1,908 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>CPP Module 02 correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/cpp-module-02">CPP Module 02</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24665">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Merci de respecter les règles suivantes:<br><br>- Restez polis, courtois, respectueux et constructifs
|
||||
pendant le processus<br> d'évaluation. Le bien-être de la communauté repose là-dessus.<br><br>-
|
||||
Identifiez avec la personne évaluée ou le groupe évalué les éventuels <br> dysfonctionnements de son
|
||||
travail. Prenez le temps d'en discuter et <br> débattez des problèmes identifiés.<br><br>- Vous devez
|
||||
prendre en compte qu'il peut y avoir de légères différences<br> d'interprétation entre les
|
||||
instructions du projet, son scope et ses <br> fonctionnalités. Gardez un esprit ouvert et notez de la
|
||||
manière la plus<br> honnête possible. La pédagogie n'est valide que si la peer-évaluation<br> est
|
||||
faite sérieusement.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24665">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Ne notez que ce qui est contenu dans le dépôt Git cloné de l'étudiant(e)<br> ou du groupe.<br><br>-
|
||||
Vérifiez que le dépôt Git appartient bien à l'étudiant(e) ou au groupe,<br> que le projet est bien
|
||||
celui attendu, et que "git clone" est utilisé <br> dans un dossier vide.<br><br>- Vérifiez
|
||||
scrupuleusement qu'aucun alias n'a été utilisé pour vous tromper <br> et assurez-vous que vous évaluez
|
||||
bien le rendu officiel.<br><br>- Afin d'éviter toute surprise, vérifiez avec l'étudiant(e) ou le
|
||||
groupe les <br> potentiels scripts utilisés pour faciliter l'évaluation (par exemple, des <br> scripts
|
||||
de tests ou d'automatisation).<br><br>- Si vous n'avez pas fait le projet que vous allez évaluer, vous
|
||||
devez lire <br> le sujet en entier avant de commencer l'évaluation.<br><br>- Utilisez les flags
|
||||
disponibles pour signaler un rendu vide, un programme <br> ne fonctionnant pas, une erreur de Norme,
|
||||
de la triche... Dans ces <br> situations, l'évaluation est terminée et la note est 0, ou -42 en cas de
|
||||
<br> triche. Cependant, à l'exception des cas de triche, vous êtes encouragé(e)s <br> à continuer la
|
||||
discussion sur le travail rendu, même si ce dernier est <br> incomplet. Ceci afin d'identifier les
|
||||
erreurs à ne pas reproduire dans le <br> futur.<br><br>- Si le sujet requiert un fichier de
|
||||
configuration, vous ne devriez jamais <br> avoir à le modifier. Si vous souhaitez éditer un fichier,
|
||||
prenez le temps <br> d'expliquer pourquoi à la personne évaluée et de vous assurer que vous avez <br>
|
||||
son accord.<br><br>- Vous devez aussi vérifier l'absence de fuites mémoire. Toute mémoire <br> allouée
|
||||
sur le tas doit être libérée proprement avant la fin de l'exécution <br> du programme. <br> Vous avez
|
||||
le droit d'utiliser tout outil disponible sur la machine tel que <br> leaks, valgrind ou e_fence. En
|
||||
cas de fuites mémoire, cochez le flag <br> approprié.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24665">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-note-paper-2"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5452858"
|
||||
action="https://projects.intra.42.fr/projects/cpp-module-02/project_sessions/3326/evaluations/1603/scales/24665/scale_teams/5452858"
|
||||
accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden"
|
||||
name="_method" value="patch"><input type="hidden" name="authenticity_token"
|
||||
value="bQXP8dmLl7HRYiH7NzF90psjah0UmmGHQpfmo6jVkY4/KAydacfd4fvxjjAfiqNoG5lVJYtbm9Obd09TJYxeSQ==">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69423">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Tests préliminaires</h3>
|
||||
<p class="font-italic">Si un cas de triche est suspecté, la notation et l'évaluation prennent fin
|
||||
immédiatement. Pour le signaler, sélectionnez le flag "Cheat". Faites attention à l'utiliser avec
|
||||
calme, précaution et discernement.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Prérequis</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Le code doit compiler avec c++ et les flags -Wall -Wextra -Werror<br>
|
||||
Pour rappel, ce projet doit suivre le standard C++98. Par conséquent, <br>
|
||||
des fonctions C++11 (ou autre standard) et les containers ne sont PAS <br>
|
||||
attendus.</p>
|
||||
|
||||
<p>Ne notez pas l'exercice si vous trouvez :</p>
|
||||
|
||||
<ul>
|
||||
<li>Une fonction implémentée dans un fichier d'en-tête (sauf pour
|
||||
les fonctions templates).</li>
|
||||
<li>Un Makefile compilant sans les flags demandés et/ou avec autre
|
||||
chose que c++.</li>
|
||||
</ul>
|
||||
|
||||
<p>Sélectionnez le flag "Fonction interdite" (Forbidden function) si <br>
|
||||
vous rencontrez :</p>
|
||||
|
||||
<ul>
|
||||
<li>L'utilisation d'une fonction "C" (*alloc, *printf, free).</li>
|
||||
<li>L'utilisation d'une fonction interdite dans le projet.</li>
|
||||
<li>L'utilisation de "using namespace <ns_name>" ou du mot-clé "friend".</li>
|
||||
<li>L'utilisation d'une bibliothèque externe, ou de fonctionnalités
|
||||
propres aux versions postérieures à C++98.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][0][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234945"
|
||||
name="[scale_team][answers_attributes][0][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69424">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercice 00 : Mon premier canon</h3>
|
||||
<p class="font-italic">Cet exercice introduit la notion de classe canonique avec un exercice
|
||||
arithmétique simple : les nombres à point fixe.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Makefile</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Il y a un Makefile qui compile en utilisant les flags appropriés.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][1][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234946"
|
||||
name="[scale_team][answers_attributes][1][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Accesseurs</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>La classe Fixed (ou autre) doit avoir des accesseurs pour la valeur brute :</p>
|
||||
|
||||
<ul>
|
||||
<li>int getRawBits( void ) const;</li>
|
||||
<li>void setRawBits( int const raw );
|
||||
Ces membres sont-ils présents et fonctionnels ?</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][2][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234947"
|
||||
name="[scale_team][answers_attributes][2][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Classe canonique</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Une classe canonique doit avoir au moins :</p>
|
||||
|
||||
<ul>
|
||||
<li>Un constructeur par défaut</li>
|
||||
<li>Un destructeur</li>
|
||||
<li>Un constructeur par recopie</li>
|
||||
<li>Un opérateur d'affectation
|
||||
Ces élements sont-ils présents et fonctionnels ?</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][3][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234948"
|
||||
name="[scale_team][answers_attributes][3][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69425">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercice 01 : Premiers pas vers une classe utile</h3>
|
||||
<p class="font-italic">L'exercice précédent était un bon premier pas. Cependant, la classe était
|
||||
peu utile puisqu'elle ne permettait de représenter que la valeur 0.0
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Makefile</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Il y a un Makefile qui compile en utilisant les flags appropriés.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][4][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234949"
|
||||
name="[scale_team][answers_attributes][4][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Constructeur via flottant</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Peut-on construire une instance à partir d'un nombre flottant ?</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][5][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234950"
|
||||
name="[scale_team][answers_attributes][5][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">operateur <<</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Y a-t-il un opérateur << et est-il fonctionnel ?</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][6][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234951"
|
||||
name="[scale_team][answers_attributes][6][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Point fixe vers entier</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>La classe doit inclure une fonction membre "int toInt(void) const;" <br>
|
||||
qui convertit un nombre à point fixe en int. <br>
|
||||
Est-elle présente et fonctionnelle ?</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][7][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234952"
|
||||
name="[scale_team][answers_attributes][7][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Point fixe vers float</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>La classe doit inclure une fonction membre "float toFloat(void) const;" <br>
|
||||
qui convertit un nombre à point fixe vers un float. <br>
|
||||
Est-elle présente et fonctionnelle ?</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][8][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234953"
|
||||
name="[scale_team][answers_attributes][8][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Construction avec un int</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Peut-on instancier la classe avec le constructeur prenant un int ?</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][9][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234954"
|
||||
name="[scale_team][answers_attributes][9][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69426">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercice 02 : Maintenant, on peut parler</h3>
|
||||
<p class="font-italic">Cet exercice ajoute les opérateurs de comparaison et arithmétiques à la
|
||||
classe.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Makefile</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Il y a un Makefile qui compile en utilisant les flags appropriés.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][10][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234955"
|
||||
name="[scale_team][answers_attributes][10][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][10][value]"
|
||||
id="radio_[scale_team][answers_attributes][10]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][10][value]"
|
||||
id="radio_[scale_team][answers_attributes][10]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Opérateurs de comparaison</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Les 6 opérateurs de comparaison (>, <, >=, <=, == et !=) sont-ils présents et
|
||||
fonctionnels ?</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][11][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234956"
|
||||
name="[scale_team][answers_attributes][11][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Opérateurs arithmétiques</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Les 4 opérateurs arithmétiques (+, -, * et /) sont-ils présents et fonctionnels ?<br>
|
||||
(Si vous effectuez une division par 0, il est acceptable que le programme crash.)</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][12][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234957"
|
||||
name="[scale_team][answers_attributes][12][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Autres opérateurs</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Les quatre opérateurs d'incrémentation et de décrémentation <br>
|
||||
(pré-incrémentation et post-incrémentation, pré-décrémentation et <br>
|
||||
post-décrémentation) sont-ils présents et fonctionnels ?</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][13][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234958"
|
||||
name="[scale_team][answers_attributes][13][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][13][value]"
|
||||
id="radio_[scale_team][answers_attributes][13]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][13]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][13][value]"
|
||||
id="radio_[scale_team][answers_attributes][13]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][13]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Surcharge de fonctions membres statiques publiques</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Pour finir, vérifiez que les fonctions membres statiques min() et max() <br>
|
||||
sont implémentées et fonctionnelles.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][14][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234959"
|
||||
name="[scale_team][answers_attributes][14][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][14][value]"
|
||||
id="radio_[scale_team][answers_attributes][14]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][14]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][14][value]"
|
||||
id="radio_[scale_team][answers_attributes][14]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][14]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69427">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercice 03 : BSP</h3>
|
||||
<p class="font-italic">Cet exercice devrait vous faire réaliser à quel point il est facile de
|
||||
mettre en œuvre des des algorithmes complexes une fois que les bases
|
||||
fonctionnent comme prévu.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Makefile</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Il y a un Makefile qui compile en utilisant les flags appropriés.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][15][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234960"
|
||||
name="[scale_team][answers_attributes][15][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][15][value]"
|
||||
id="radio_[scale_team][answers_attributes][15]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][15]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][15][value]"
|
||||
id="radio_[scale_team][answers_attributes][15]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][15]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Classe Point</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Il existe une classe Point qui possède deux attributs (x et y) de type <br>
|
||||
Fixed const. <br>
|
||||
Elle possède également un constructeur qui prend deux flottants et <br>
|
||||
initialise x et y avec ces valeurs.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][16][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234961"
|
||||
name="[scale_team][answers_attributes][16][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][16][value]"
|
||||
id="radio_[scale_team][answers_attributes][16]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][16]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][16][value]"
|
||||
id="radio_[scale_team][answers_attributes][16]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][16]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Fonction bsp</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Il existe une fonction bsp() dont le prototype est<br>
|
||||
"bool bsp( Point const a, Point const b, Point const c, Point const point)".<br>
|
||||
La fonction renvoie True si le point est à l'intérieur du triangle décrit par <br>
|
||||
les sommets a, b, et c. Sinon, elle renvoie False.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][17][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234962"
|
||||
name="[scale_team][answers_attributes][17][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][17][value]"
|
||||
id="radio_[scale_team][answers_attributes][17]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][17]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][17][value]"
|
||||
id="radio_[scale_team][answers_attributes][17]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][17]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Main et tests</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Il y a un main pour tester que la fonction bsp() fonctionne comme décrit <br>
|
||||
ci-dessus. Exécutez plusieurs tests pour vous assurer que la valeur de <br>
|
||||
retour est correcte.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][18][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234963"
|
||||
name="[scale_team][answers_attributes][18][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][18][value]"
|
||||
id="radio_[scale_team][answers_attributes][18]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][18]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][18][value]"
|
||||
id="radio_[scale_team][answers_attributes][18]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][18]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24665">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active" for="scale_team_flag_id_12"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script async="" await="" src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/CPP03/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/CPP03/img/all.jpg
Executable file
After Width: | Height: | Size: 1.3 MiB |
581
src/42_evals/Cursus/CPP03/index.html
Normal file
@ -0,0 +1,581 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>CPP Module 00 correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/cpp-module-00">CPP Module 00</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24654">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please respect the following rules:<br><br>- Stay polite, courteous, respectful, and constructive
|
||||
during the evaluation process. The well-being of the community depends on it.<br><br>-
|
||||
Identify with the evaluated person or group any malfunctions in their work. Take the time to discuss and
|
||||
debate the
|
||||
identified problems.<br><br>-
|
||||
Keep in mind that there may be slight differences in interpretation between the project instructions, its
|
||||
scope, and functionalities.
|
||||
Keep an open mind and rate as honestly as possible. Pedagogy is only valid if peer evaluation is taken
|
||||
seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24654">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only rate what is contained in the cloned Git repository of the student or group.<br><br>
|
||||
- Verify that the Git repository belongs to the student or group, that the project is the expected one, and
|
||||
that "git clone" is used in an empty folder.<br><br>
|
||||
- Thoroughly check that no alias has been used to deceive you and ensure that you are evaluating the
|
||||
official submission.<br><br>
|
||||
- To avoid any surprises, check with the student or group any potential scripts used to facilitate
|
||||
evaluation (e.g., test or automation scripts).<br><br>
|
||||
- If you have not done the project you are evaluating, you must read the subject entirely before starting
|
||||
the evaluation.<br><br>
|
||||
- Use the available flags to report an empty submission, a non-functioning program, a Norm error, cheating,
|
||||
etc.<br>
|
||||
</p>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24654">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5545693"
|
||||
action="https://projects.intra.42.fr/projects/cpp-module-01/project_sessions/3325/evaluations/1602/scales/24654/scale_teams/5545693"
|
||||
accept-charset="UTF-8" method="post">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69375">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminary tests</h3>
|
||||
<p class="font-italic">If cheating is suspected, the evaluation stops here. Use the "Cheat" flag to
|
||||
report it. Take this decision calmly, wisely, and please, use this button with caution.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Prerequisites</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The code must compile with c++ and the flags -Wall -Wextra -Werror<br>
|
||||
Don't forget this project has to follow the C++98 standard. Thus, <br>
|
||||
C++11 (and later) functions or containers are NOT expected.</p>
|
||||
|
||||
<p>Any of these means you must not grade the exercise in question:</p>
|
||||
|
||||
<ul>
|
||||
<li>A function is implemented in a header file (except for template
|
||||
functions).</li>
|
||||
<li>A Makefile compiles without the required flags and/or another
|
||||
compiler than c++.</li>
|
||||
</ul>
|
||||
|
||||
<p>Any of these means that you must flag the project with "Forbidden <br>
|
||||
Function":</p>
|
||||
|
||||
<ul>
|
||||
<li>Use of a "C" function (*alloc, *printf, free).</li>
|
||||
<li>Use of a function not allowed in the exercise guidelines.</li>
|
||||
<li>Use of "using namespace <ns_name>" or the "friend" keyword.</li>
|
||||
<li>Use of an external library, or features from versions other than
|
||||
C++98.</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69376">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 00: Annnnnnd... ACTION!</h3>
|
||||
<p class="font-italic">As usual, there should be enough tests to prove that the program works as
|
||||
requested. If there are none, do not grade this exercise.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Class and Attributes</h4>
|
||||
<p>There is a ClapTrap class. It has all the following private attributes:</p>
|
||||
<ul>
|
||||
<li>name</li>
|
||||
<li>hit points</li>
|
||||
<li>energy points</li>
|
||||
<li>attack damage</li>
|
||||
</ul>
|
||||
<p>These attributes are initialized to the requested values.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Member Functions</h4>
|
||||
<p>The following member functions are present and function as specified:</p>
|
||||
<ul>
|
||||
<li>attack()</li>
|
||||
<li>takeDamage()</li>
|
||||
<li>beRepaired()</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<section class="scale-section-item dancer from-down" id="section-69376">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 01: Serena, My Love!</h3>
|
||||
<p class="font-italic">As usual, there should be enough tests to prove that the program works as
|
||||
requested. If there are none, do not grade this exercise.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Class and Attributes</h4>
|
||||
<p>There is a ScavTrap class. ScavTrap publicly inherits from the Claptrap class. It does not redeclare
|
||||
the attributes. The attributes of the ClapTrap class are now protected instead of private. The
|
||||
attributes are initialized to the requested values.
|
||||
</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Member Functions</h4>
|
||||
<p>The following member functions are present and functional:</p>
|
||||
<ul>
|
||||
<li>attack()</li>
|
||||
<li>takeDamage() (inherited)</li>
|
||||
<li>beRepaired() (inherited)</li>
|
||||
</ul>
|
||||
<p>The messages from the constructor, destructor, and attack() function must be different from those of
|
||||
the ClapTrap.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Construction and Destruction</h4>
|
||||
<p>ScavTrap must have a constructor and destructor with specific messages. Their proper implementation
|
||||
must be demonstrated by a sequence of calls in the expected order: if you create a ScavTrap, the message
|
||||
from the ClapTrap constructor should be displayed first, followed by that of the ScavTrap. Conversely,
|
||||
if you delete a ScavTrap, the message from the ScavTrap destructor should be displayed first, followed
|
||||
by that of the ClapTrap.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Special Feature</h4>
|
||||
<p>ScavTrap has a guardGate() function that displays a message on the standard output. ScavTrap also has
|
||||
an attack() function that displays a message different from that of the ClapTrap on the standard output.
|
||||
</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69376">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 02: Assembly Line Work</h3>
|
||||
<p class="font-italic">As usual, there should be enough tests to prove that the program works as
|
||||
requested. If there are none, do not grade this exercise.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Class and Attributes</h4>
|
||||
<p>There is a FragTrap class that publicly inherits from ClapTrap. Attributes should not be redeclared
|
||||
without reason.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Construction and Destruction</h4>
|
||||
<p>FragTrap must have a constructor and destructor with specific messages. Their proper implementation
|
||||
must be demonstrated by a sequence of calls in the expected order: if you create a FragTrap, the message
|
||||
from the ClapTrap constructor should be displayed first, followed by that of the FragTrap. Conversely,
|
||||
if you delete a FragTrap, the message from the FragTrap destructor should be displayed first, followed
|
||||
by that of the ClapTrap.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Special Feature</h4>
|
||||
<p>FragTrap has a highFivesGuys() function that displays a message on the standard output.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69376">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 03: Ok, This Is Getting Weird</h3>
|
||||
<p class="font-italic">As usual, there should be enough tests to prove that the program works as
|
||||
requested. If there are none, do not grade this exercise.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">The Ultimate Weirdness of C++</h4>
|
||||
<p>There is a DiamondTrap class. It inherits from both FragTrap and ScavTrap. It defines attributes with
|
||||
the requested values. It uses virtual inheritance to avoid the pitfalls of diamond inheritance.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][10][value]"
|
||||
id="radio_[scale_team][answers_attributes][10]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][10][value]"
|
||||
id="radio_[scale_team][answers_attributes][10]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Choose Wisely...</h4>
|
||||
<p>The DiamondTrap class uses the attack() function of Scavtrap. It has the special functions of both its
|
||||
parents. DiamondTrap has a private member std::string name. The whoAmI() function has access to both
|
||||
name and ClapTrap::name.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24654">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active" for="scale_team_flag_id_12"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script async="" await="" src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/CPP04/README.md
Executable file
@ -0,0 +1 @@
|
||||
[Open the correction file](https://rphlr.github.io/42-Evals/Rank04/CPP_Modules/CPP04/html/index.html)
|
901
src/42_evals/Cursus/CPP04/index.html
Executable file
@ -0,0 +1,901 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<title>CPP Module 04 correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function (registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a href="https://github.com/rphlr/42-Evals" target="_blank" class="floating-btn">Give this repository a star.
|
||||
⭐</a>
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/cpp-module-04">CPP Module 04</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-21685">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and
|
||||
constructive throughout the <br> evaluation process. The well-being of the community depends on
|
||||
it.<br><br>- Identify with the student or group whose work is evaluated the possible <br>
|
||||
dysfunctions in their project. Take the time to discuss and debate the <br> problems that may
|
||||
have been identified.<br><br>- You must consider that there might be some differences in how
|
||||
your peers <br> might have understood the project's instructions and the scope of its <br>
|
||||
functionalities. Always keep an open mind and grade them as honestly as <br> possible. The
|
||||
pedagogy is useful only and only if the peer-evaluation is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-21685">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or
|
||||
group.<br><br>- Double-check that the Git repository belongs to the student(s). Ensure that <br>
|
||||
the project is the one expected. Also, check that 'git clone' is used in an <br> empty
|
||||
folder.<br><br>- Check carefully that no malicious aliases was used to fool you and make you
|
||||
<br> evaluate something that is not the content of the official repository.<br><br>- To avoid
|
||||
any surprises and if applicable, review together any scripts used <br> to facilitate the grading
|
||||
(scripts for testing or automation).<br><br>- If you have not completed the assignment you are
|
||||
going to evaluate, you have <br> to read the entire subject prior to starting the evaluation
|
||||
process.<br><br>- Use the available flags to report an empty repository, a non-functioning <br>
|
||||
program, a Norm error, cheating, and so forth. <br> In these cases, the evaluation process ends
|
||||
and the final grade is 0, <br> or -42 in case of cheating. However, except for cheating, student
|
||||
are <br> strongly encouraged to review together the work that was turned in, in order <br> to
|
||||
identify any mistakes that shouldn't be repeated in the future.<br><br>- You should never have
|
||||
to edit any file except the configuration file if it <br> exists. If you want to edit a file,
|
||||
take the time to explicit the reasons <br> with the evaluated student and make sure both of you
|
||||
are okay with this.<br><br>- You must also verify the absence of memory leaks. Any memory
|
||||
allocated on <br> the heap must be properly freed before the end of execution. <br> You are
|
||||
allowed to use any of the different tools available on the computer, <br> such as leaks,
|
||||
valgrind, or e_fence. In case of memory leaks, tick the <br> appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-21685">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5392638"
|
||||
action="/projects/cpp-module-04/project_sessions/3328/evaluations/1607/scales/21685/scale_teams/5392638"
|
||||
accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden"
|
||||
name="_method" value="patch"><input type="hidden" name="authenticity_token"
|
||||
value="klQZt1C6LxsivitAy+RL40k0fIWMPnQoNljV8uvdAaPe+D1vvXxlVlftk54fEbw/P2CmFGJCVK6OJODG8uUbAA==">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-61073">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminary tests</h3>
|
||||
<p class="font-italic">If cheating is suspected, the evaluation stops
|
||||
here. Use the "Cheat" flag to report it. Take this decision calmly,
|
||||
wisely, and please, use this button with caution.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Prerequisites</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The code must compile with c++ and the flags -Wall -Wextra -Werror<br>
|
||||
Don't forget this project has to follow the C++98 standard. Thus, <br>
|
||||
C++11 (and later) functions or containers are NOT expected.</p>
|
||||
|
||||
<p>Any of these means you must not grade the exercise in question:</p>
|
||||
|
||||
<ul>
|
||||
<li>A function is implemented in a header file (except for template
|
||||
functions).</li>
|
||||
<li>A Makefile compiles without the required flags and/or another
|
||||
compiler than c++.</li>
|
||||
</ul>
|
||||
|
||||
<p>Any of these means that you must flag the project with "Forbidden <br>
|
||||
Function":</p>
|
||||
|
||||
<ul>
|
||||
<li>Use of a "C" function (*alloc, *printf, free).</li>
|
||||
<li>Use of a function not allowed in the exercise guidelines.</li>
|
||||
<li>Use of "using namespace <ns_name>" or the "friend" keyword.</li>
|
||||
<li>Use of an external library, or features from versions other than
|
||||
C++98.</li>
|
||||
</ul>
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][0][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207716"
|
||||
name="[scale_team][answers_attributes][0][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-61074">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 00: Polymorphism</h3>
|
||||
<p class="font-italic">As usual, there has to be enough tests to prove the program works as
|
||||
expected. If there isn't, do not grade this exercise. If any non-interface
|
||||
class is not in orthodox canonical class form, do not grade this exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">First check</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is an Animal class that has one attribute:<br>
|
||||
One string called type.<br>
|
||||
You must be able to instantiate and use this class.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][1][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207717"
|
||||
name="[scale_team][answers_attributes][1][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Inheritance</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>They are at least two classes that inherit from Animal: Cat and Dog.<br>
|
||||
The constructor and destructor outputs must be clear.<br>
|
||||
Ask the student about constructor and destructor orders.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][2][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207718"
|
||||
name="[scale_team][answers_attributes][2][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Easy derived class</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The attribute type is set to the appropriate value at creation for <br>
|
||||
every animal. Cat must have "Cat" and Dog must have "Dog".</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][3][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207719"
|
||||
name="[scale_team][answers_attributes][3][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Animal</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Using makeSound() function always called the appropriate makeSound() <br>
|
||||
function. makeSound() should be virtual! Verify it in the code.<br>
|
||||
virtual void makeSound() const;<br>
|
||||
The return value is not important but virtual keyword is mandatory.</p>
|
||||
|
||||
<p>There should be an example with a WrongAnimal and WrongCat that don't <br>
|
||||
use the virtual keyword (see subject).<br>
|
||||
The WrongCat must output the WrongCat makeSound() only when used as a <br>
|
||||
wrongCat.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][4][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207720"
|
||||
name="[scale_team][answers_attributes][4][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-61075">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 01: I do not want to set the world on fire</h3>
|
||||
<p class="font-italic">As usual, there has to be enough tests to prove the program works as
|
||||
expected. If there isn't, do not grade this exercise. If any non-interface
|
||||
class is not in orthodox canonical class form, do not grade this exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Concrete Animal</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a new class called Brain.<br>
|
||||
Cat and Dog have the required private Brain attribute.<br>
|
||||
The Brain attribute should not be inside the Animal class.<br>
|
||||
The Brain class has specific outputs upon creation and deletion.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][5][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207721"
|
||||
name="[scale_team][answers_attributes][5][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Concrete Brain</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The copy a Cat or a Dog should be a deep copy.<br>
|
||||
Test something like: <br>
|
||||
Dog basic;<br>
|
||||
{<br>
|
||||
Dog tmp = basic;<br>
|
||||
}<br>
|
||||
If the copy is shallow, tmp and basic will use the same Brain and <br>
|
||||
the Brain will get deleted with tmp at the end of the scope.<br>
|
||||
The copy constructor should do a deep copy too. <br>
|
||||
That's why a clean implementation in orthodox canonical form will <br>
|
||||
save you from hours of pain.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][6][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207722"
|
||||
name="[scale_team][answers_attributes][6][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Destruction chaining</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The destructors in Animal must be virtual. <br>
|
||||
Ask an explanation of what will happen without the virtual keyword over Animal destructor.
|
||||
<br>
|
||||
Test it.
|
||||
</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][7][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207723"
|
||||
name="[scale_team][answers_attributes][7][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Assignment and copy</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The copy and assignment behaviors of the Cat and Dog are like the <br>
|
||||
subject requires. <br>
|
||||
Deep copy means you need to create a new Brain for the Cat or Dog. <br>
|
||||
Check that the canonical form is really implemented (i.e. no empty <br>
|
||||
copy assignment operators and so forth). Nothing should be public for no <br>
|
||||
reason. Moreover, this code is very simple so it needs to be clean!</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][8][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207724"
|
||||
name="[scale_team][answers_attributes][8][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-61076">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 02: Abstract class</h3>
|
||||
<p class="font-italic">As usual, there has to be enough tests to prove the program works as
|
||||
expected. If there isn't, do not grade this exercise. If any non-interface
|
||||
class is not in orthodox canonical class form, do not grade this exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Abstract class</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is an Animal class exactly like the one in the subject. <br>
|
||||
The Animal::makeSound is a pure virtual function.<br>
|
||||
It should look like : virtual void makeSound() const = 0;<br>
|
||||
The "= 0" part is mandatory.<br>
|
||||
You should not be able to instantiate an Animal.<br>
|
||||
Animal test; //should give you a compile error about the class being abstract</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][9][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207725"
|
||||
name="[scale_team][answers_attributes][9][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Concrete Animal</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Class Cat and Dog are still present and work exactly like in ex01.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][10][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207726"
|
||||
name="[scale_team][answers_attributes][10][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][10][value]"
|
||||
id="radio_[scale_team][answers_attributes][10]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][10][value]"
|
||||
id="radio_[scale_team][answers_attributes][10]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-61077">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 03: Interface and recap</h3>
|
||||
<p class="font-italic">As usual, there has to be enough tests to prove the program works as
|
||||
expected. If there isn't, do not grade this exercise. If any non-interface
|
||||
class is not in orthodox canonical class form, do not grade this exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Interfaces</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There are ICharacter and IMateriaSource interfaces that are exactly like <br>
|
||||
required in the subject.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][11][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207727"
|
||||
name="[scale_team][answers_attributes][11][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">MateriaSource</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The MateriaSource class is present and implements IMateriaSource. The<br>
|
||||
member functions work as intended.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][12][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207728"
|
||||
name="[scale_team][answers_attributes][12][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Concrete Materia</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There are concrete Ice and Cure classes that inherit from AMateria. Their<br>
|
||||
clone() method is correctly implemented. Their outputs are correct.<br>
|
||||
The AMateria class is still abstract (clone() is a pure function).<br>
|
||||
virtual ~AMateria() is present.<br>
|
||||
AMateria contains a protected string attribute to store the type.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][13][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207729"
|
||||
name="[scale_team][answers_attributes][13][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][13][value]"
|
||||
id="radio_[scale_team][answers_attributes][13]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][13]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][13][value]"
|
||||
id="radio_[scale_team][answers_attributes][13]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][13]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Character</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The Character class is present and implements ICharacter. It has<br>
|
||||
an inventory of 4 Materias maximum. <br>
|
||||
The member functions are implemented as the subject requires.<br>
|
||||
The copy and assignment of a Character are implemented as required <br>
|
||||
(deep copy).</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][14][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207730"
|
||||
name="[scale_team][answers_attributes][14][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][14][value]"
|
||||
id="radio_[scale_team][answers_attributes][14]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][14]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][14][value]"
|
||||
id="radio_[scale_team][answers_attributes][14]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][14]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-21685">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive"
|
||||
for="scale_team_flag_id_1" name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active"
|
||||
for="scale_team_flag_id_7" name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active"
|
||||
for="scale_team_flag_id_8" name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active"
|
||||
for="scale_team_flag_id_12" name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<div class="scale-final-evaluation hidden">
|
||||
<div class="form-group radio_buttons optional scale_team_flag"><label
|
||||
class="col-sm-2 control-label radio_buttons optional">Flag</label>
|
||||
<div class="col-sm-10"><input type="hidden" name="scale_team[flag_id]" value=""><span
|
||||
class="radio"><label for="scale_team_flag_id_1"><input
|
||||
class="radio_buttons optional" type="radio" value="1" checked="checked"
|
||||
name="scale_team[flag_id]" id="scale_team_flag_id_1">Ok</label></span><span
|
||||
class="radio"><label for="scale_team_flag_id_3"><input
|
||||
class="radio_buttons optional" type="radio" value="3"
|
||||
name="scale_team[flag_id]" id="scale_team_flag_id_3">Incomplete
|
||||
work</label></span><span class="radio"><label for="scale_team_flag_id_5"><input
|
||||
class="radio_buttons optional" type="radio" value="5"
|
||||
name="scale_team[flag_id]" id="scale_team_flag_id_5">Invalid
|
||||
compilation</label></span><span class="radio"><label
|
||||
for="scale_team_flag_id_7"><input class="radio_buttons optional" type="radio"
|
||||
value="7" name="scale_team[flag_id]"
|
||||
id="scale_team_flag_id_7">Cheat</label></span><span class="radio"><label
|
||||
for="scale_team_flag_id_8"><input class="radio_buttons optional" type="radio"
|
||||
value="8" name="scale_team[flag_id]"
|
||||
id="scale_team_flag_id_8">Crash</label></span><span class="radio"><label
|
||||
for="scale_team_flag_id_9"><input class="radio_buttons optional" type="radio"
|
||||
value="9" name="scale_team[flag_id]" id="scale_team_flag_id_9">Outstanding
|
||||
project</label></span><span class="radio"><label
|
||||
for="scale_team_flag_id_11"><input class="radio_buttons optional" type="radio"
|
||||
value="11" name="scale_team[flag_id]" id="scale_team_flag_id_11">Concerning
|
||||
situation</label></span><span class="radio"><label
|
||||
for="scale_team_flag_id_12"><input class="radio_buttons optional" type="radio"
|
||||
value="12" name="scale_team[flag_id]"
|
||||
id="scale_team_flag_id_12">Leaks</label></span><span class="radio"><label
|
||||
for="scale_team_flag_id_13"><input class="radio_buttons optional" type="radio"
|
||||
value="13" name="scale_team[flag_id]" id="scale_team_flag_id_13">Forbidden
|
||||
Function</label></span><span class="radio"><label
|
||||
for="scale_team_flag_id_2"><input class="radio_buttons optional" type="radio"
|
||||
value="2" name="scale_team[flag_id]" id="scale_team_flag_id_2">Empty
|
||||
work</label></span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="scale-final-comments" id="comments-21685">
|
||||
<p class="marked-title">Leave a comment on this evaluation</p>
|
||||
<textarea required="required" label="false" class="text required col-sm-12 mb-4"
|
||||
aria-required="true" name="scale_team[comment]" id="scale_team_comment"></textarea>
|
||||
</div>
|
||||
<input id="token" name="token" class="hidden" type="hidden">
|
||||
</div>
|
||||
<div class="scale-final-submit">
|
||||
<input class="btn btn-primary btn-block font-weight-bold"
|
||||
data-disable-with="Finishing evaluation..." name="commit" type="button"
|
||||
value="Finish evaluation">
|
||||
</div>
|
||||
</form>
|
||||
<br><br><br>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div data-cache="true" class="hide"></div>
|
||||
|
||||
<script async="" await="" src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/CPP05/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
520
src/42_evals/Cursus/CPP05/index.html
Executable file
@ -0,0 +1,520 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<title>CPP Module 05 correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/cpp-module-05">CPP Module 05</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-21685">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and
|
||||
constructive throughout the <br> evaluation process. The well-being of the community depends on
|
||||
it.<br><br>- Identify with the student or group whose work is evaluated the possible <br>
|
||||
dysfunctions in their project. Take the time to discuss and debate the <br> problems that may
|
||||
have been identified.<br><br>- You must consider that there might be some differences in how
|
||||
your peers <br> might have understood the project's instructions and the scope of its <br>
|
||||
functionalities. Always keep an open mind and grade them as honestly as <br> possible. The
|
||||
pedagogy is useful only and only if the peer-evaluation is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-21685">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or
|
||||
group.<br><br>- Double-check that the Git repository belongs to the student(s). Ensure that <br>
|
||||
the project is the one expected. Also, check that 'git clone' is used in an <br> empty
|
||||
folder.<br><br>- Check carefully that no malicious aliases was used to fool you and make you
|
||||
<br> evaluate something that is not the content of the official repository.<br><br>- To avoid
|
||||
any surprises and if applicable, review together any scripts used <br> to facilitate the grading
|
||||
(scripts for testing or automation).<br><br>- If you have not completed the assignment you are
|
||||
going to evaluate, you have <br> to read the entire subject prior to starting the evaluation
|
||||
process.<br><br>- Use the available flags to report an empty repository, a non-functioning <br>
|
||||
program, a Norm error, cheating, and so forth. <br> In these cases, the evaluation process ends
|
||||
and the final grade is 0, <br> or -42 in case of cheating. However, except for cheating, student
|
||||
are <br> strongly encouraged to review together the work that was turned in, in order <br> to
|
||||
identify any mistakes that shouldn't be repeated in the future.<br><br>- You should never have
|
||||
to edit any file except the configuration file if it <br> exists. If you want to edit a file,
|
||||
take the time to explicit the reasons <br> with the evaluated student and make sure both of you
|
||||
are okay with this.<br><br>- You must also verify the absence of memory leaks. Any memory
|
||||
allocated on <br> the heap must be properly freed before the end of execution. <br> You are
|
||||
allowed to use any of the different tools available on the computer, <br> such as leaks,
|
||||
valgrind, or e_fence. In case of memory leaks, tick the <br> appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-21685">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5392638"
|
||||
action="/projects/cpp-module-04/project_sessions/3328/evaluations/1607/scales/21685/scale_teams/5392638"
|
||||
accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden"
|
||||
name="_method" value="patch"><input type="hidden" name="authenticity_token"
|
||||
value="klQZt1C6LxsivitAy+RL40k0fIWMPnQoNljV8uvdAaPe+D1vvXxlVlftk54fEbw/P2CmFGJCVK6OJODG8uUbAA==">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-61073">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminary tests</h3>
|
||||
<p class="font-italic">If cheating is suspected, the evaluation stops
|
||||
here. Use the "Cheat" flag to report it. Take this decision calmly,
|
||||
wisely, and please, use this button with caution.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Prerequisites</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The code must compile with c++ and the flags -Wall -Wextra -Werror<br>
|
||||
Don't forget this project has to follow the C++98 standard. Thus, <br>
|
||||
C++11 (and later) functions or containers are NOT expected.</p>
|
||||
|
||||
<p>Any of these means you must not grade the exercise in question:</p>
|
||||
|
||||
<ul>
|
||||
<li>A function is implemented in a header file (except for template
|
||||
functions).</li>
|
||||
<li>A Makefile compiles without the required flags and/or another
|
||||
compiler than c++.</li>
|
||||
</ul>
|
||||
|
||||
<p>Any of these means that you must flag the project with "Forbidden <br>
|
||||
Function":</p>
|
||||
|
||||
<ul>
|
||||
<li>Use of a "C" function (*alloc, *printf, free).</li>
|
||||
<li>Use of a function not allowed in the exercise guidelines.</li>
|
||||
<li>Use of "using namespace <ns_name>" or the "friend" keyword.</li>
|
||||
<li>Use of an external library, or features from versions other than
|
||||
C++98.</li>
|
||||
</ul>
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][0][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207716"
|
||||
name="[scale_team][answers_attributes][0][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-61074">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Ex00: Mommy, when I grow up, I want to be a
|
||||
bureaucrat!</h3>
|
||||
<p class="font-italic">As usual, there has to be the main function that contains enough
|
||||
tests to prove the program works as expected. If
|
||||
there isn't, do not grade this exercise. If any non-interface class is not in orthodox
|
||||
canonical class form, do not grade
|
||||
this exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Bureaucrat</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Makefile that compiles using the appropriate flags.<br>
|
||||
There is a Bureaucrat class. It has a constant name<br>
|
||||
It has a grade that ranges from 1 (highest) to 150 (lowest).<br>
|
||||
Exceptions are thrown when trying to create a Bureaucrat with a grade<br>
|
||||
that is too high or too low.<br>
|
||||
There are accessors for the attributes<br>
|
||||
There are functions to increment / decrement the grade,<br>
|
||||
They throw exceptions when it's appropriate. Remember that incrementing a<br>
|
||||
grade 3 will give you a grade 2 (1 is the highest).<br>
|
||||
The exceptions that are used inherit from std::exception, or from<br>
|
||||
something derived from std::exception (i.e. they are catchable as<br>
|
||||
std::exception & e).<br>
|
||||
There is a << operator to ostream overload that outputs the info of the<br>
|
||||
Bureaucrat.<br>
|
||||
</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][1][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207717"
|
||||
name="[scale_team][answers_attributes][1][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-61076">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Ex01: Form up, maggots!</h3>
|
||||
<p class="font-italic">As usual, there has to be the main function that contains enough
|
||||
tests to prove the program works as expected. If
|
||||
there isn't, do not grade this exercise. If any non-interface class is not in orthodox
|
||||
canonical class form, do not grade
|
||||
this exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Form</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Makefile that compiles using the appropriate flags.
|
||||
There is a Form class.
|
||||
It has a name, a bool that indicates whether is it signed (at the
|
||||
beginning it's not), a grade required to sign it, and a grade required
|
||||
to execute it.
|
||||
The names and grades are constant.
|
||||
All these attributes are private and not protected.
|
||||
The grades of the forms follow the same constraints as the Bureaucrat's
|
||||
(exceptions, 1 = highest 150 = lowest, and so forth).
|
||||
There are accessors for the attributes and a << operator to ostream overload that displays
|
||||
the complete state of the Form. There is a Form::beSigned() member function that works
|
||||
as described by the subject. There is a Bureaucrat::signForm() function that works as
|
||||
described by the subject. </p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][2][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207735"
|
||||
name="[scale_team][answers_attributes][2][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-61076">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Ex02: No, you need form 28B, not 28C...</h3>
|
||||
<p class="font-italic">As usual, there has to be the main function that contains enough
|
||||
tests to prove the program works as expected. If
|
||||
there isn't, do not grade this exercise. If any non-interface class is not in orthodox
|
||||
canonical class form, do not grade
|
||||
this exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Forms that actually do something</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Makefile that compiles using the appropriate flags<br>
|
||||
There are concrete forms that are conform to the specifications of the<br>
|
||||
subject (required grades, names and actions).<br>
|
||||
They take only one parameter in their constructor, which is their target.<br>
|
||||
There is a Form::execute(Bureaucrat const & executor) method that works<br>
|
||||
as specified by the subject.<br>
|
||||
Either this method is pure and the grade checks are implemented in each<br>
|
||||
subclass, or this method performs the checks, then calls another method<br>
|
||||
in derived class that only executes the action.<br>
|
||||
Both of these techniques are valid.<br>
|
||||
There is a Bureaucrat::executeForm(Form const & form) that works as<br>
|
||||
specified by the subject.<br>
|
||||
</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][9][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207725"
|
||||
name="[scale_team][answers_attributes][9][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-61077">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Ex03: At least this beats coffee-making</h3>
|
||||
<p class="font-italic">As usual, there has to be the main function that contains enough
|
||||
tests to prove the program works as expected. If
|
||||
there isn't, do not grade this exercise. If any non-interface class is not in orthodox
|
||||
canonical class form, do not grade
|
||||
this exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Intern</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a Makefile that compiles using the appropriate flags.<br>
|
||||
There is an Intern class<br>
|
||||
It has a makeForm() function that works as specified by the subject.<br>
|
||||
</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][11][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207727"
|
||||
name="[scale_team][answers_attributes][11][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Good dispatching</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The makeForm() function should use some kind of array of pointers to member<br>
|
||||
functions to handle the creation of Forms.<br>
|
||||
If it's using an unclean method, like if/elseif/elseif/else branchings, or<br>
|
||||
some other ugly stuff like this, please count this as wrong.<br>
|
||||
</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][12][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207728"
|
||||
name="[scale_team][answers_attributes][12][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-21685">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive"
|
||||
for="scale_team_flag_id_1" name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active"
|
||||
for="scale_team_flag_id_7" name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active"
|
||||
for="scale_team_flag_id_8" name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active"
|
||||
for="scale_team_flag_id_12" name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script async="" await="" src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/CPP06/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/CPP06/img/all.jpg
Executable file
After Width: | Height: | Size: 2.2 MiB |
390
src/42_evals/Cursus/CPP06/index.html
Executable file
@ -0,0 +1,390 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<script src="chrome-extension://hmflgigeigiejaogcgamkecmlibcpdgo/generic/inject.js"></script>
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>CPP Module 06 correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/cpp-module-06">CPP Module 06</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24659">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and constructive
|
||||
throughout the <br> evaluation process. The well-being of the community depends on it.<br><br>- Identify
|
||||
with the student or group whose work is evaluated the possible <br> dysfunctions in their project. Take the
|
||||
time to discuss and debate the <br> problems that may have been identified.<br><br>- You must consider that
|
||||
there might be some differences in how your peers <br> might have understood the project's instructions and
|
||||
the scope of its <br> functionalities. Always keep an open mind and grade them as honestly as <br> possible.
|
||||
The pedagogy is useful only and only if the peer-evaluation is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24659">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or group.<br><br>-
|
||||
Double-check that the Git repository belongs to the student(s). Ensure that <br> the project is the one
|
||||
expected. Also, check that 'git clone' is used in an <br> empty folder.<br><br>- Check carefully that no
|
||||
malicious aliases was used to fool you and make you <br> evaluate something that is not the content of the
|
||||
official repository.<br><br>- To avoid any surprises and if applicable, review together any scripts used
|
||||
<br> to facilitate the grading (scripts for testing or automation).<br><br>- If you have not completed the
|
||||
assignment you are going to evaluate, you have <br> to read the entire subject prior to starting the
|
||||
evaluation process.<br><br>- Use the available flags to report an empty repository, a non-functioning <br>
|
||||
program, a Norm error, cheating, and so forth. <br> In these cases, the evaluation process ends and the
|
||||
final grade is 0, <br> or -42 in case of cheating. However, except for cheating, student are <br> strongly
|
||||
encouraged to review together the work that was turned in, in order <br> to identify any mistakes that
|
||||
shouldn't be repeated in the future.<br><br>- You should never have to edit any file except the
|
||||
configuration file if it <br> exists. If you want to edit a file, take the time to explicit the reasons <br>
|
||||
with the evaluated student and make sure both of you are okay with this.<br><br>- You must also verify the
|
||||
absence of memory leaks. Any memory allocated on <br> the heap must be properly freed before the end of
|
||||
execution. <br> You are allowed to use any of the different tools available on the computer, <br> such as
|
||||
leaks, valgrind, or e_fence. In case of memory leaks, tick the <br> appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24659">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-note-paper-2"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5439335"
|
||||
action="https://projects.intra.42.fr/projects/cpp-module-06/project_sessions/3330/evaluations/1606/scales/24659/scale_teams/5439335"
|
||||
accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden"
|
||||
name="_method" value="patch"><input type="hidden" name="authenticity_token"
|
||||
value="nbTfNci2uzTaM523QAr/PKHUR+TTLJhwxTWc19ap4X7g2Hepfp25pWbrxwdILuT7ghdWW1/yZZBp/rTd8hDhAw==">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69403">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminary tests</h3>
|
||||
<p class="font-italic">If cheating is suspected, the evaluation stops here. Use the "Cheat" flag to report
|
||||
it. Take this decision calmly, wisely, and please, use this button with caution.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Prerequisites</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The code must compile with c++ and the flags -Wall -Wextra -Werror<br>
|
||||
Don't forget this project has to follow the C++98 standard. Thus, <br>
|
||||
C++11 (and later) functions or containers are NOT expected.</p>
|
||||
|
||||
<p>Any of these means you must not grade the exercise in question:</p>
|
||||
|
||||
<ul>
|
||||
<li>A function is implemented in a header file (except for template
|
||||
functions).</li>
|
||||
<li>A Makefile compiles without the required flags and/or another
|
||||
compiler than c++.</li>
|
||||
</ul>
|
||||
|
||||
<p>Any of these means that you must flag the project with "Forbidden <br>
|
||||
Function":</p>
|
||||
|
||||
<ul>
|
||||
<li>Use of a "C" function (*alloc, *printf, free).</li>
|
||||
<li>Use of a function not allowed in the exercise guidelines.</li>
|
||||
<li>Use of "using namespace <ns_name>" or the "friend" keyword.</li>
|
||||
<li>Use of an external library, or features from versions other than
|
||||
C++98.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][0][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234904"
|
||||
name="[scale_team][answers_attributes][0][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69404">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 00: Conversion of scalar types</h3>
|
||||
<p class="font-italic">This exercise is about using the static_cast.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Scalar conversion</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Did the student create a class with a private constructor, and static<br>
|
||||
methods ?<br>
|
||||
Did the student use the static_cast to convert values?<br>
|
||||
Accept the use of implicit casts for promotion casts only.<br>
|
||||
Does the program work as required? </p>
|
||||
|
||||
<p>Anyway, please don't be too uncompromising towards the exercise's outputs <br>
|
||||
if the spirit of the exercise is respected. <br>
|
||||
Even if this exercise is wrong, continue the evaluation process.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][1][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234905"
|
||||
name="[scale_team][answers_attributes][1][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69405">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 01: Serialization</h3>
|
||||
<p class="font-italic">This exercise is about using the reinterpret_cast.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Retyping of raw data</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Does the program work as required? <br>
|
||||
Did the student create a class with a private constructor, and static<br>
|
||||
methods ?<br>
|
||||
The reinterpret_cast<> should be used twice:</p>
|
||||
|
||||
<ul>
|
||||
<li>First from data* to uintptr_t.</li>
|
||||
<li>Then, from uintptr_t to data*.</li>
|
||||
</ul>
|
||||
|
||||
<p>And the resulting data struct should be usable.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][2][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234906"
|
||||
name="[scale_team][answers_attributes][2][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69406">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 02: Identify real type</h3>
|
||||
<p class="font-italic">This exercise is about using the dynamic_cast.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Real type identification</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Does the program work as required?<br>
|
||||
Check the code. Did the student use the dynamic_cast to identify the real <br>
|
||||
type? <br>
|
||||
void identify(Base* p) should check if the cast return is NULL.<br>
|
||||
void identify(Base& p) should use a try and catch block to check if the cast failed. </p>
|
||||
|
||||
<p>(In case you're wondering, the header <typeinfo> must not appear <br>
|
||||
anywhere.)</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][3][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234907"
|
||||
name="[scale_team][answers_attributes][3][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24659">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active" for="scale_team_flag_id_12"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script async="" await="" src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/CPP07/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/CPP07/img/all.jpg
Executable file
After Width: | Height: | Size: 2.2 MiB |
453
src/42_evals/Cursus/CPP07/index.html
Executable file
@ -0,0 +1,453 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>CPP Module 07 correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/cpp-module-07">CPP Module 07</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24660">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and constructive
|
||||
throughout the <br> evaluation process. The well-being of the community depends on it.<br><br>-
|
||||
Identify with the student or group whose work is evaluated the possible <br> dysfunctions in their
|
||||
project. Take the time to discuss and debate the <br> problems that may have been identified.<br><br>-
|
||||
You must consider that there might be some differences in how your peers <br> might have understood
|
||||
the project's instructions and the scope of its <br> functionalities. Always keep an open mind and
|
||||
grade them as honestly as <br> possible. The pedagogy is useful only and only if the peer-evaluation
|
||||
is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24660">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or
|
||||
group.<br><br>- Double-check that the Git repository belongs to the student(s). Ensure that <br> the
|
||||
project is the one expected. Also, check that 'git clone' is used in an <br> empty folder.<br><br>-
|
||||
Check carefully that no malicious aliases was used to fool you and make you <br> evaluate something
|
||||
that is not the content of the official repository.<br><br>- To avoid any surprises and if applicable,
|
||||
review together any scripts used <br> to facilitate the grading (scripts for testing or
|
||||
automation).<br><br>- If you have not completed the assignment you are going to evaluate, you have
|
||||
<br> to read the entire subject prior to starting the evaluation process.<br><br>- Use the available
|
||||
flags to report an empty repository, a non-functioning <br> program, a Norm error, cheating, and so
|
||||
forth. <br> In these cases, the evaluation process ends and the final grade is 0, <br> or -42 in case
|
||||
of cheating. However, except for cheating, student are <br> strongly encouraged to review together the
|
||||
work that was turned in, in order <br> to identify any mistakes that shouldn't be repeated in the
|
||||
future.<br><br>- You should never have to edit any file except the configuration file if it <br>
|
||||
exists. If you want to edit a file, take the time to explicit the reasons <br> with the evaluated
|
||||
student and make sure both of you are okay with this.<br><br>- You must also verify the absence of
|
||||
memory leaks. Any memory allocated on <br> the heap must be properly freed before the end of
|
||||
execution. <br> You are allowed to use any of the different tools available on the computer, <br> such
|
||||
as leaks, valgrind, or e_fence. In case of memory leaks, tick the <br> appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24660">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">ex00.cpp</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">ex01.cpp</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">main.cpp</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5552994"
|
||||
action="https://projects.intra.42.fr/projects/cpp-module-07/project_sessions/3331/evaluations/1608/scales/24660/scale_teams/5552994"
|
||||
accept-charset="UTF-8" method="post">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69407">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminary tests</h3>
|
||||
<p class="font-italic">If cheating is suspected, the evaluation stops here. Use the "Cheat" flag to
|
||||
report it. Take this decision calmly, wisely, and please, use this button with caution.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Prerequisites</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The code must compile with c++ and the flags -Wall -Wextra -Werror<br>
|
||||
Don't forget this project has to follow the C++98 standard. Thus, <br>
|
||||
C++11 (and later) functions or containers are NOT expected.</p>
|
||||
|
||||
<p>Any of these means you must not grade the exercise in question:</p>
|
||||
|
||||
<ul>
|
||||
<li>A function is implemented in a header file (except for template
|
||||
functions).</li>
|
||||
<li>A Makefile compiles without the required flags and/or another
|
||||
compiler than c++.</li>
|
||||
</ul>
|
||||
|
||||
<p>Any of these means that you must flag the project with "Forbidden <br>
|
||||
Function":</p>
|
||||
|
||||
<ul>
|
||||
<li>Use of a "C" function (*alloc, *printf, free).</li>
|
||||
<li>Use of a function not allowed in the exercise guidelines.</li>
|
||||
<li>Use of "using namespace <ns_name>" or the "friend" keyword.</li>
|
||||
<li>Use of an external library, or features from versions other than
|
||||
C++98.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69408">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 00: Start with a few functions</h3>
|
||||
<p class="font-italic">This exercise is about writing 3 simple function templates: swap(), min()
|
||||
and max().
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Simple types</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Refer to the subject for the expected output with simple types, such <br>
|
||||
as int.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Complex types</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Do the functions also work with complex types? (check with the ex00.cpp file in attachment)</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69409">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 01: Iter</h3>
|
||||
<p class="font-italic">This exercise is about writing a generic function to iterate through arrays.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Does it work?</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Test the code ex01.cpp (in attachments) with the iter of the evaluated student.<br>
|
||||
If everything went well, it should display:</p>
|
||||
|
||||
<pre><code>0
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
42
|
||||
42
|
||||
42
|
||||
42
|
||||
42
|
||||
</code></pre>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69410">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 02: Array</h3>
|
||||
<p class="font-italic">This exercise is about writing a class template that behaves like an array.
|
||||
If the inner allocation of the actual array does not come from a use of
|
||||
new[], don't grade this exercise.
|
||||
Ask the evaluated student to prove the class template works with arrays of
|
||||
both simple and complex types before grading the exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Constructors</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Is it possible to create an empty array and an array of a specific size?</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Access</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Elements must be accessible for reading and writing through the operator[] <br>
|
||||
(or reading only if the instance is const). Access to an element which is <br>
|
||||
out of range must throw an std::exception.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24660">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active" for="scale_team_flag_id_12"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/CPP08/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
480
src/42_evals/Cursus/CPP08/index.html
Executable file
@ -0,0 +1,480 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<title>CPP Module 08 correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/cpp-module-08">CPP Module 08</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-21685">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and
|
||||
constructive throughout the <br> evaluation process. The well-being of the community depends on
|
||||
it.<br><br>- Identify with the student or group whose work is evaluated the possible <br>
|
||||
dysfunctions in their project. Take the time to discuss and debate the <br> problems that may
|
||||
have been identified.<br><br>- You must consider that there might be some differences in how
|
||||
your peers <br> might have understood the project's instructions and the scope of its <br>
|
||||
functionalities. Always keep an open mind and grade them as honestly as <br> possible. The
|
||||
pedagogy is useful only and only if the peer-evaluation is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-21685">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or
|
||||
group.<br><br>- Double-check that the Git repository belongs to the student(s). Ensure that <br>
|
||||
the project is the one expected. Also, check that 'git clone' is used in an <br> empty
|
||||
folder.<br><br>- Check carefully that no malicious aliases was used to fool you and make you
|
||||
<br> evaluate something that is not the content of the official repository.<br><br>- To avoid
|
||||
any surprises and if applicable, review together any scripts used <br> to facilitate the grading
|
||||
(scripts for testing or automation).<br><br>- If you have not completed the assignment you are
|
||||
going to evaluate, you have <br> to read the entire subject prior to starting the evaluation
|
||||
process.<br><br>- Use the available flags to report an empty repository, a non-functioning <br>
|
||||
program, a Norm error, cheating, and so forth. <br> In these cases, the evaluation process ends
|
||||
and the final grade is 0, <br> or -42 in case of cheating. However, except for cheating, student
|
||||
are <br> strongly encouraged to review together the work that was turned in, in order <br> to
|
||||
identify any mistakes that shouldn't be repeated in the future.<br><br>- You should never have
|
||||
to edit any file except the configuration file if it <br> exists. If you want to edit a file,
|
||||
take the time to explicit the reasons <br> with the evaluated student and make sure both of you
|
||||
are okay with this.<br><br>- You must also verify the absence of memory leaks. Any memory
|
||||
allocated on <br> the heap must be properly freed before the end of execution. <br> You are
|
||||
allowed to use any of the different tools available on the computer, <br> such as leaks,
|
||||
valgrind, or e_fence. In case of memory leaks, tick the <br> appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-21685">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5392638"
|
||||
action="/projects/cpp-module-04/project_sessions/3328/evaluations/1607/scales/21685/scale_teams/5392638"
|
||||
accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden"
|
||||
name="_method" value="patch"><input type="hidden" name="authenticity_token"
|
||||
value="klQZt1C6LxsivitAy+RL40k0fIWMPnQoNljV8uvdAaPe+D1vvXxlVlftk54fEbw/P2CmFGJCVK6OJODG8uUbAA==">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-61073">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminary tests</h3>
|
||||
<p class="font-italic">If cheating is suspected, the evaluation stops
|
||||
here. Use the "Cheat" flag to report it. Take this decision calmly,
|
||||
wisely, and please, use this button with caution.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Prerequisites</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The code must compile with c++ and the flags -Wall -Wextra -Werror<br>
|
||||
Don't forget this project has to follow the C++98 standard. Thus, <br>
|
||||
C++11 (and later) functions or containers are NOT expected.</p>
|
||||
|
||||
<p>Any of these means you must not grade the exercise in question:</p>
|
||||
|
||||
<ul>
|
||||
<li>A function is implemented in a header file (except for template
|
||||
functions).</li>
|
||||
<li>A Makefile compiles without the required flags and/or another
|
||||
compiler than c++.</li>
|
||||
</ul>
|
||||
|
||||
<p>Any of these means that you must flag the project with "Forbidden <br>
|
||||
Function":</p>
|
||||
|
||||
<ul>
|
||||
<li>Use of a "C" function (*alloc, *printf, free).</li>
|
||||
<li>Use of a function not allowed in the exercise guidelines.</li>
|
||||
<li>Use of "using namespace <ns_name>" or the "friend" keyword.</li>
|
||||
<li>Use of an external library, or features from versions other than
|
||||
C++98.</li>
|
||||
</ul>
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][0][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207716"
|
||||
name="[scale_team][answers_attributes][0][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-61074">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Ex00: Easy find</h3>
|
||||
<p class="font-italic">As usual, there has to be the main function that contains enough
|
||||
tests to prove the program works as expected. If
|
||||
there isn't, do not grade this exercise. If any non-interface class is not in orthodox
|
||||
canonical class form, do not grade
|
||||
this exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Template function</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a templated function easyFind(T, int) that does what the<br>
|
||||
subject requires.<br>
|
||||
It HAS to use STL algorithms.<br>
|
||||
If it does not (like manual search using iterators for example), count<br>
|
||||
it as wrong.<br>
|
||||
</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][1][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207717"
|
||||
name="[scale_team][answers_attributes][1][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-61076">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Ex01: Span</h3>
|
||||
<p class="font-italic">As usual, there has to be the main function that contains enough
|
||||
tests to prove the program works as expected. If
|
||||
there isn't, do not grade this exercise. If any non-interface class is not in orthodox
|
||||
canonical class form, do not grade
|
||||
this exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Class and member functions</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a class that complies with the constraints of the subject.<br>
|
||||
Its member functions use STL algorithms to find their result as much as<br>
|
||||
possible. Finding the shortest span can't be done only by subtracting<br>
|
||||
the two lowest numbers (take a closer look at the subject example).<br>
|
||||
</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][9][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207725"
|
||||
name="[scale_team][answers_attributes][9][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="scale-question-name">Improved addNumber function</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There's a way to add numbers that's more practical than calling the<br>
|
||||
addNumber() function repeatedly.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][3][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207719"
|
||||
name="[scale_team][answers_attributes][3][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-61077">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Ex02: Mutated abomination</h3>
|
||||
<p class="font-italic">As usual, there has to be the main function that contains enough
|
||||
tests to prove the program works as expected. If
|
||||
there isn't, do not grade this exercise. If any non-interface class is not in orthodox
|
||||
canonical class form, do not grade
|
||||
this exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">MutantStack class</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a MutantStack class that inherits from std::stack and offers<br>
|
||||
all of its member functions.<br>
|
||||
It has an iterator. Also, it is possible to do at least the operations<br>
|
||||
shown in the subject's examples using iterators.<br>
|
||||
</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][11][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207727"
|
||||
name="[scale_team][answers_attributes][11][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Better tests</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a at least a main() function that has more tests than the ones<br>
|
||||
from the subject.<br>
|
||||
</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][12][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="207728"
|
||||
name="[scale_team][answers_attributes][12][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-21685">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive"
|
||||
for="scale_team_flag_id_1" name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active"
|
||||
for="scale_team_flag_id_7" name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active"
|
||||
for="scale_team_flag_id_8" name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active"
|
||||
for="scale_team_flag_id_12" name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/CPP09/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/CPP09/img/all.jpg
Executable file
After Width: | Height: | Size: 1.3 MiB |
616
src/42_evals/Cursus/CPP09/index.html
Executable file
@ -0,0 +1,616 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>CPP Module 09 correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/cpp-module-09">CPP Module 09</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24662">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
- Remain polite, courteous, respectful and constructive<br>throughout the evaluation process. The
|
||||
well-being of the community<br>depends on it.<br><br>- Identify with the person (or the group)
|
||||
evaluated the eventual<br>dysfunctions of the work. Take the time to discuss<br>and debate the
|
||||
problems you have identified.<br><br>- You must consider that there might be some difference in how
|
||||
your<br>peers might have understood the project's instructions and the<br>scope of its
|
||||
functionalities. Always keep an open mind and grade<br>him/her as honestly as possible. The pedagogy
|
||||
is valid only and<br>only if peer-evaluation is conducted seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24662">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that is in the student or group's<br>GiT repository.<br><br>- Double-check that
|
||||
the GiT repository belongs to the student<br>or the group. Ensure that the work is for the relevant
|
||||
project<br>and also check that "git clone" is used in an empty folder.<br><br>- Check carefully that
|
||||
no malicious aliases was used to fool you<br>and make you evaluate something other than the content of
|
||||
the<br>official repository.<br><br>- To avoid any surprises, carefully check that both the
|
||||
evaluating<br>and the evaluated students have reviewed the possible scripts used<br>to facilitate the
|
||||
grading.<br><br>- If the evaluating student has not completed that particular<br>project yet, it is
|
||||
mandatory for this student to read the<br>entire subject prior to starting the defence.<br><br>- Use
|
||||
the flags available on this scale to signal an empty repository,<br>non-functioning program, a norm
|
||||
error, cheating etc. In these cases,<br>the grading is over and the final grade is 0 (or -42 in case
|
||||
of<br>cheating). However, with the exception of cheating, you are<br>encouraged to continue to discuss
|
||||
your work (even if you have not<br>finished it) in order to identify any issues that may have
|
||||
caused<br>this failure and avoid repeating the same mistake in the future.<br><br>- Remember that for
|
||||
the duration of the defence, no segfault,<br>no other unexpected, premature, uncontrolled or
|
||||
unexpected<br>termination of the program, else the final grade is 0. Use the<br>appropriate flag.
|
||||
<br>You should never have to edit any file except the configuration file if it exists.<br>If you want
|
||||
to edit a file, take the time to explicit the reasons with the <br>evaluated student and make sure
|
||||
both of you are okay with this.<br><br>- You must also verify the absence of memory leaks. Any memory
|
||||
allocated on the heap must<br>be properly freed before the end of execution.<br>You are allowed to use
|
||||
any of the different tools available on the computer, such as<br>leaks, valgrind, or e_fence. In case
|
||||
of memory leaks, tick the appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24662">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">input.csv</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">cpp_09.tgz</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5486293"
|
||||
action="https://projects.intra.42.fr/projects/cpp-module-09/project_sessions/9246/evaluations/6995/scales/24662/scale_teams/5486293"
|
||||
accept-charset="UTF-8" method="post">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69415">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminary tests</h3>
|
||||
<p class="font-italic">If cheating is suspected, the evaluation stops here. Use the "Cheat" flag to
|
||||
report it. Take this decision calmly, wisely, and please, use this button with caution.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Prerequisites</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The code must compile with c++ and the flags -Wall -Wextra -Werror<br>
|
||||
Don't forget this project has to follow the C++98 standard. Thus, <br>
|
||||
C++11 (and later) are NOT expected. <br>
|
||||
The purpose of this module is to use the STL. Then, using the <br>
|
||||
containers is authorized.</p>
|
||||
|
||||
<p>Any of these means you must not grade the exercise in question:</p>
|
||||
|
||||
<ul>
|
||||
<li>A function is implemented in a header file (except for template
|
||||
functions).</li>
|
||||
<li>A Makefile compiles without the required flags and/or another
|
||||
compiler than c++.</li>
|
||||
</ul>
|
||||
|
||||
<p>Any of these means that you must flag the project with "Forbidden <br>
|
||||
Function":</p>
|
||||
|
||||
<ul>
|
||||
<li>Use of a "C" function (*alloc, *printf, free).</li>
|
||||
<li>Use of a function not allowed in the exercise guidelines.</li>
|
||||
<li>Use of an external library, or features from versions other than
|
||||
C++98.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69416">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 00: Bitcoin Exchange</h3>
|
||||
<p class="font-italic">For this first exercise, you have to find a makefile with the usual
|
||||
compilation rules and the files requested in the subject.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Code review</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Check that a makefile is present with the usual compilation rules.</p>
|
||||
|
||||
<p>Check in the code that the program uses at least one container.</p>
|
||||
|
||||
<p>The person being evaluated must explain why they chose to use this <br>
|
||||
container and not another?</p>
|
||||
|
||||
<p>If not, the evaluation stops here.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Error handle</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>You must be able to use an empty file or a file with errors <br>
|
||||
(a basic example exists in the subject). The program must not stop <br>
|
||||
its execution before having performed the operations on the whole <br>
|
||||
file passed as argument.</p>
|
||||
|
||||
<p>You can use a wrong date. </p>
|
||||
|
||||
<p>You can enter a value greater than 1000 or less than 0.</p>
|
||||
|
||||
<p>If there is any problem during the execution then the evaluation stops here.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Main usage</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>You must now use the "input.csv" file located at the top of this page.</p>
|
||||
|
||||
<p>You can modify this file with the values you want. </p>
|
||||
|
||||
<p>You have to run the program with the input.csv file as parameter.</p>
|
||||
|
||||
<p>Please compare some dates manually with the specified value.</p>
|
||||
|
||||
<p>If the date does not exist in the database, the program will have to use the <br>
|
||||
nearest lower date.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69417">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 01: Reverse Polish Notation</h3>
|
||||
<p class="font-italic">For this second exercise, you have to find a makefile with the usual
|
||||
compilation rules and the files requested in the subject.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Code review</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Check that a makefile is present with the usual compilation rules.</p>
|
||||
|
||||
<p>Check in the code that the program uses at least one container.</p>
|
||||
|
||||
<p>The person being evaluated must explain why they chose to <br>
|
||||
use this container and not another?</p>
|
||||
|
||||
<p>If not, the evaluation stops here.</p>
|
||||
|
||||
<p>If the container chosen here is present in the first exercise <br>
|
||||
then the evaluation stops here.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Main usage</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Check that the program runs correctly using different formulas of your choice.</p>
|
||||
|
||||
<p>The program is not required to handle expressions with parenthesis or decimals <br>
|
||||
number.</p>
|
||||
|
||||
<p>If there is any problem during the execution then the evaluation stops here.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Usage advanced</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Check that the program runs correctly using different formulas of your choice.</p>
|
||||
|
||||
<p>Here is some tests:</p>
|
||||
|
||||
<pre><code>8 9 * 9 - 9 - 9 - 4 - 1 +
|
||||
> Result: 42
|
||||
|
||||
9 8 * 4 * 4 / 2 + 9 - 8 - 8 - 1 - 6 -
|
||||
> Result: 42
|
||||
|
||||
1 2 * 2 / 2 + 5 * 6 - 1 3 * - 4 5 * * 8 /
|
||||
> Result: 15
|
||||
</code></pre>
|
||||
|
||||
<p>You can use the examples in the topic if you don't know which formula to use.</p>
|
||||
|
||||
<p>If there is any problem during the execution then the evaluation stops here.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69418">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Exercise 02: PmergeMe</h3>
|
||||
<p class="font-italic">As usual, there has to be enough tests to prove the program works as
|
||||
expected. If there isn't, do not grade this exercise. If any non-interface
|
||||
class is not in orthodox canonical class form, do not grade this exercise.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Code review</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Check that a makefile is included with the usual compilation rules rules.</p>
|
||||
|
||||
<p>Check in the code that the program uses at least two containers.</p>
|
||||
|
||||
<p>If not, the evaluation stops here.</p>
|
||||
|
||||
<p>The person being evaluated must explain why they chose to use these containers <br>
|
||||
and not another?</p>
|
||||
|
||||
<p>Check in the code that the merge-insert sort algorithm is present and <br>
|
||||
is used for each container. The Ford-Johnson algorithm must be used. <br>
|
||||
A brief explanation is expected. In case of doubt, the evaluation stops here.</p>
|
||||
|
||||
<p>If one of the containers chosen here is included in one of the previous <br>
|
||||
exercises then the evaluation stops here.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Main usage</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>You can now manually check that the program works correctly by using between <br>
|
||||
5 and 10 different positive integers of your choice as program arguments.</p>
|
||||
|
||||
<p>If this first test works and gives a sorted sequence of numbers you can continue. <br>
|
||||
If not, the evaluation stops now.</p>
|
||||
|
||||
<p>Now you have to check this operation by using the following command as an <br>
|
||||
argument to the program:</p>
|
||||
|
||||
<p>For linux:</p>
|
||||
|
||||
<pre><code>`shuf -i 1-1000 -n 3000 | tr "\n" " " `
|
||||
</code></pre>
|
||||
|
||||
<p>For OSX:</p>
|
||||
|
||||
<pre><code>`jot -r 3000 1 1000 | tr '\n' ' '`
|
||||
</code></pre>
|
||||
|
||||
<p>If the command works correctly, the person being evaluated should be able to <br>
|
||||
explain the difference in time used for each container selected.</p>
|
||||
|
||||
<p>If there are any problems during the execution and/or explanation then the <br>
|
||||
evaluation stops here.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24662">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active" for="scale_team_flag_id_12"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/Cub3d/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/Cub3d/img/all.jpg
Executable file
After Width: | Height: | Size: 1.3 MiB |
609
src/42_evals/Cursus/Cub3d/index.html
Executable file
@ -0,0 +1,609 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<title>cub3D correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/cub3d">cub3D</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 2 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24645">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please respect the following rules:<br><br>- Remain polite, courteous, respectful and
|
||||
constructive throughout the <br> evaluation process. The well-being of the community depends on
|
||||
it.<br><br>- Identify with the person (or the group) evaluated the eventual <br>
|
||||
dysfunctions of the work. Take the time to discuss and debate the <br> problems that may
|
||||
have been identified.<br><br>- You must consider that there might be some difference in how
|
||||
your peers <br> might have understood the project's instructions and the scope of its <br>
|
||||
functionalities. Always keep an open mind and grade them as honestly as <br> possible. The
|
||||
pedagogy is valid only and only if the peer evaluation is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24645">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that is in the student or group's Git repository.
|
||||
<br><br>- Double-check that the Git repository belongs to the student or the group. Ensure that
|
||||
<br>
|
||||
the work is for the relevant project and also check that "git clone" is used in an empty folder.
|
||||
<br><br>- Check carefully that no malicious aliases was used to fool you and make you
|
||||
<br> evaluate something that is not the content of the official repository.<br><br>- To avoid
|
||||
any surprises, carefully check that both the evaluating<br> and the evaluated students have
|
||||
reviewed the possible scripts used
|
||||
to facilitate the grading.<br><br>- If the evaluating student has not completed that particular
|
||||
project yet, it is mandatory for this student to read the entire subject before starting the
|
||||
defense.
|
||||
<br><br>- Use the flags available on this scale to signal an empty repository,
|
||||
non-functioning program, norm error, cheating etc. In these
|
||||
cases, the grading is over and the final grade is 0 (or -42 in case cheating). However, except
|
||||
for cheating, you are
|
||||
encouraged to continue to discuss your work (even if you
|
||||
have not
|
||||
finished it) to identify any issues that may have caused this failure and avoid repeating the
|
||||
same mistake in the future.
|
||||
<br><br>-- Remember that for the duration of the defense, no
|
||||
segfault,
|
||||
no other unexpected, premature, uncontrolled or
|
||||
unexpected
|
||||
termination of the program, else the final grade is O. Use
|
||||
the
|
||||
appropriate flag.<br><br>You should never have to edit any file except the
|
||||
configuration file if it exists.
|
||||
If you want to edit a file, take the time to explicit the reasons
|
||||
with the
|
||||
evaluated student and make sure both of you are okay with
|
||||
this.
|
||||
<br><br>- You must also verify the absence of memory leaks. Any
|
||||
memory allocated on the heap must
|
||||
be properly freed before the end of execution. You are allowed to use any of the different tools
|
||||
available
|
||||
on the computer, such as
|
||||
leaks, valgrind, or e_fence. In case of memory leaks, tick the appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24645">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/"
|
||||
class="attachment-download">minilibx_opengl.tgz</a>
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/"
|
||||
class="attachment-download">minilibx_mms_20200219_beta.tgz</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5422972"
|
||||
action="https://projects.intra.42.fr/projects/42cursus-philosophers/project_sessions/3320/evaluations/1599/scales/24645/scale_teams/5422972"
|
||||
accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden"
|
||||
name="_method" value="patch"><input type="hidden" name="authenticity_token"
|
||||
value="ZkyeHJiPBawYYypB3ZeNyewnhCm+8MjQ+Dd60WIU6Y6msl5IKl/IaXrRWUDaTXYEV43NGlXmrIarxQldqGOeoQ==">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69350">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Mandatory Part</h3>
|
||||
<p class="font-italic"></p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Executable name</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Check that the project compiles well (without re-link) when
|
||||
you execute the <code>make</code>
|
||||
command and that the executable name is <code>cub3D</code>. If not, use the invalid
|
||||
compilation flag at the end of the
|
||||
scale.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][0][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234741"
|
||||
name="[scale_team][answers_attributes][0][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Configuration file</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Check that you can configure ALL the following elements in
|
||||
the configuration file.
|
||||
The formating has to be as described in the subject.
|
||||
<ul>
|
||||
<li>north texture path - NO</li>
|
||||
<li>north texture path - NO</li>
|
||||
<li>east texture path - EA</li>
|
||||
<li>south texture path - SO</li>
|
||||
<li>west texture path - WE</li>
|
||||
<li>floor color - F</li>
|
||||
<li>ceiling color - C</li>
|
||||
<li>the map (see subject for the map configuration details)</li>
|
||||
</ul>
|
||||
Also, check that the program returns an error and exits properly when
|
||||
the configuration file is misconfigured (for example an unknown key, double keys,
|
||||
an invalid path..) or if the filename doesn't end with the
|
||||
<code>.cub</code> extension.
|
||||
If not, the defense is over and use the appropriate flag incomplete work, crash....</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][1][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234742"
|
||||
name="[scale_team][answers_attributes][1][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Technical elements of the display</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
We're going to evaluate the technical elements of the
|
||||
display. Run the program and execute the following tests. If at least one
|
||||
fails, no points will be awarded for this section. Move to the
|
||||
next one.
|
||||
<ul>
|
||||
<li>A window must open at the launch of the program. A window must open at the launch of the
|
||||
program.</li>
|
||||
<li>An image representing the inside of a maze must be
|
||||
displayed inside the window.</li>
|
||||
<li>Hide all or part of the window either by using another window
|
||||
or by using the screen's borders, then minimize the
|
||||
windows
|
||||
and maximize it back. In all cases, the content of the window
|
||||
must remain consistent.</li>
|
||||
</ul>
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][2][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234743"
|
||||
name="[scale_team][answers_attributes][2][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">User basic events</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
In this section, we're going to evaluate the program's user
|
||||
generated events. Execute the 3 following tests. If at least
|
||||
one
|
||||
fails, this means that no points will be awarded for this section.
|
||||
Move to the next one.
|
||||
<ul>
|
||||
<li>Click the red cross at the top left of the window. The
|
||||
window must close and the program must exit
|
||||
cleanly.</li>
|
||||
<li>Press the ESC key. The window must close and the
|
||||
program must exit cleanly. In the case of this test, we will
|
||||
accept that another key exits the program, for example, Q.</li>
|
||||
<li>Press the four movement keys (we'll accept WASD
|
||||
or ZQSD keys)
|
||||
in the order of your liking. Each key press must
|
||||
render a
|
||||
visible result on the window, such as a player's movement/rotation.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][3][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234744"
|
||||
name="[scale_team][answers_attributes][3][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Movements</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
In this section, we'll evaluate the implementation of the player's movement/orientation inside
|
||||
the maze. Execute the 5 following tests. If at least one fails, this means that no points will
|
||||
be awarded for this section.
|
||||
<ul>
|
||||
<li>The player's spawning orientation on the first image
|
||||
must be in accordance
|
||||
with the configuration file, test for each cardinal orientation (N, S, E, W).</li>
|
||||
<li>Press the left arrow then the right arrow.
|
||||
The player's view must rotate to the left
|
||||
then to the right as if the player's head was moving.</li>
|
||||
<li>Press W (or Z) then S.
|
||||
The player's view must go forward and then backward in a
|
||||
straight line.</li>
|
||||
<li>Press A (or Q) then D.</li>
|
||||
<li>The player's view must go to the left and then to the
|
||||
right in a
|
||||
straight line.</li>
|
||||
<li>During those four movements, was the display smooth? By smooth we mean is the game
|
||||
"playable" or is it
|
||||
slow.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][4][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234744"
|
||||
name="[scale_team][answers_attributes][4][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Walls</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
In this section, we'll evaluate the walls in the maze. Execute the 4 following tests. If at
|
||||
least one fails, this means that no points will be awarded for this
|
||||
section.
|
||||
<ul>
|
||||
<li>The wall's texture vary depending on which compass point the wall is facing
|
||||
(north, south, east, west). Check that the textures on the walls and perspective
|
||||
are
|
||||
visible and correct.</li>
|
||||
<li>Check that if you modify the path of a wall texture in
|
||||
the configuration file,
|
||||
it modifies the rendered texture when the program is
|
||||
re-executed.
|
||||
Also check that if you set a non-existent path it
|
||||
raises an error.</li>
|
||||
<li>Check that the floor and ceiling colors are well handled when you modify them in the
|
||||
configuration
|
||||
file.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][5][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234744"
|
||||
name="[scale_team][answers_attributes][5][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Error management</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
In this section, we'll evaluate the program's error management
|
||||
and reliability. Execute the 4 following tests. If at least one
|
||||
fails, this means that no points will be awarded for this
|
||||
section. Move to the next one.
|
||||
<ul>
|
||||
<li>Run the program using numerous arguments and
|
||||
random values.
|
||||
Even if the program doesn't require any arguments,
|
||||
it is
|
||||
critical that those arguments don't alternate or
|
||||
create
|
||||
unhandled errors.</li>
|
||||
<li>Check that there are no memory leaks. You can use
|
||||
the
|
||||
top or leaks command in another shell to monitor that the memory
|
||||
use is stable. The memory used must not increase
|
||||
each time an
|
||||
action is made.</li>
|
||||
<li>Roll either your arm or your face on the keyboard.
|
||||
The program must not show any strange behaviors and it must stay functional.</li>
|
||||
<li>Modify the map. The program must not show any
|
||||
strange behaviors
|
||||
and it must stay functional if the map is well configured, if not it must raise an
|
||||
error.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][6][id]" type="hidden"
|
||||
id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234744"
|
||||
name="[scale_team][answers_attributes][6][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" type="radio" value="0"
|
||||
checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69351">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Bonus</h3>
|
||||
<p class="font-italic">We will look at your bonuses if and only if your mandatory
|
||||
part is excellent. This means that you must complete the mandatory part, beginning to
|
||||
end, and your error management must be flawless, even in cases of twisted or
|
||||
bad usage. So if the mandatory part didn't score all the
|
||||
points during this defense bonuses will be totally ignored.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">When I'll be older I'll be John Carmack</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
Look at the subject bonus part and add one point for each bonus implemented and fully
|
||||
functional.
|
||||
</p>
|
||||
<div class="marked-title text-center">Rate it from 0 (failed) through 5 (excellent)</div>
|
||||
<input autocomplete="off" class="star-range" data-star-range="" max="5"
|
||||
name="[scale_team][answers_attributes][3][value]" step="1" type="range" value="0"
|
||||
style="position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0;">
|
||||
<hr>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24645">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive"
|
||||
for="scale_team_flag_id_1" name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_norme negative on-active"
|
||||
for="scale_team_flag_id_6" name="scale_team[flag_id]">
|
||||
<span class="iconf-receipt-1"></span>
|
||||
Norme
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active"
|
||||
for="scale_team_flag_id_7" name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active"
|
||||
for="scale_team_flag_id_8" name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active"
|
||||
for="scale_team_flag_id_12" name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/FdF/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/FdF/img/all.jpg
Executable file
After Width: | Height: | Size: 993 KiB |
724
src/42_evals/Cursus/FdF/index.html
Normal file
@ -0,0 +1,724 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>FdF correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br />Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/42cursus-fdf">FdF</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24643">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and constructive
|
||||
throughout the <br> evaluation process. The well-being of the community depends on it.<br><br>-
|
||||
Identify with the student or group whose work is evaluated the possible <br> dysfunctions in their
|
||||
project. Take the time to discuss and debate the <br> problems that may have been identified.<br><br>-
|
||||
You must consider that there might be some differences in how your peers <br> might have understood
|
||||
the project's instructions and the scope of its <br> functionalities. Always keep an open mind and
|
||||
grade them as honestly as <br> possible. The pedagogy is useful only and only if the peer-evaluation
|
||||
is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24643">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or
|
||||
group.<br><br>- Double-check that the Git repository belongs to the student(s). Ensure that <br> the
|
||||
project is the one expected. Also, check that 'git clone' is used in an <br> empty folder.<br><br>-
|
||||
Check carefully that no malicious aliases was used to fool you and make you <br> evaluate something
|
||||
that is not the content of the official repository.<br><br>- To avoid any surprises and if applicable,
|
||||
review together any scripts used <br> to facilitate the grading (scripts for testing or
|
||||
automation).<br><br>- If you have not completed the assignment you are going to evaluate, you have
|
||||
<br> to read the entire subject prior to starting the evaluation process.<br><br>- Use the available
|
||||
flags to report an empty repository, a non-functioning <br> program, a Norm error, cheating, and so
|
||||
forth. <br> In these cases, the evaluation process ends and the final grade is 0, <br> or -42 in case
|
||||
of cheating. However, except for cheating, student are <br> strongly encouraged to review together the
|
||||
work that was turned in, in order <br> to identify any mistakes that shouldn't be repeated in the
|
||||
future.<br><br>- You must also verify the absence of memory leaks. Any memory allocated on <br> the
|
||||
heap must be properly freed before the end of execution. <br> You are allowed to use any of the
|
||||
different tools available on the computer, <br> such as leaks, valgrind, or e_fence. In case of memory
|
||||
leaks, tick the <br> appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24643">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-note-paper-2"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://cdn.intra.42.fr/document/document/17596/maps.zip">maps.zip</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://cdn.intra.42.fr/document/document/17597/fdf_linux">fdf_linux</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank"
|
||||
href="https://cdn.intra.42.fr/document/document/17598/minilibx_mms_20191025_beta.tgz">minilibx_mms_20191025_beta.tgz</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank"
|
||||
href="https://cdn.intra.42.fr/document/document/17599/minilibx-linux.tgz">minilibx-linux.tgz</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank"
|
||||
href="https://cdn.intra.42.fr/document/document/17600/minilibx_macos_sierra_20161017.tgz">minilibx_macos_sierra_20161017.tgz</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank"
|
||||
href="https://cdn.intra.42.fr/document/document/17601/sources.tgz">sources.tgz</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://cdn.intra.42.fr/document/document/17602/fdf">fdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5587653"
|
||||
action="https://projects.intra.42.fr/projects/42cursus-fdf/project_sessions/6009/evaluations/3761/scales/24643/scale_teams/5587653"
|
||||
accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden"
|
||||
name="_method" value="patch"><input type="hidden" name="authenticity_token"
|
||||
value="7H/EuxLVFHEyOOr5VOx/hDhilY7NCuW4O0H26dctTou+UgfXopleIRirRTJ8V6E+uNiqtlLLH+zioV8ZWnSBTA==">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69344">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminary tests</h3>
|
||||
<p class="font-italic"></p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Minimal requirements</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Does the assignment meet the minimal requirements?</p>
|
||||
|
||||
<ul>
|
||||
<li>The repository isn't empty.</li>
|
||||
<li>Norminette shows no errors.</li>
|
||||
<li>No cheating.</li>
|
||||
<li>No forbidden function/library.</li>
|
||||
<li>The code compiles with the required options.</li>
|
||||
<li>The executable is named as expected.</li>
|
||||
<li>During execution, there is no brutal or unmanaged crash (segfault,
|
||||
bus error, and so forth).</li>
|
||||
<li>No memory leaks.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][0][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234718"
|
||||
name="[scale_team][answers_attributes][0][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69345">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Mandatory part</h3>
|
||||
<p class="font-italic"></p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Error management</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Test fdf without parameters, with too many parameters, a non-existing <br>
|
||||
file or on which you have no rights. If those tests are passed, then it's <br>
|
||||
all good. This is the only error management that is required. For now on, <br>
|
||||
the maps inside the input files have to be formatted properly.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][1][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234719"
|
||||
name="[scale_team][answers_attributes][1][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Graphic management</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Run the program with the 42 map provided from the project page and verify that:</p>
|
||||
|
||||
<ul>
|
||||
<li>A window opens</li>
|
||||
<li>Something is drawn in the window</li>
|
||||
<li>You can see a isometric projection of the 42 map</li>
|
||||
<li>Pressing 'ESC' closes the window and exits the program in a clean way (no leaks).</li>
|
||||
<li>Clicking on the cross on the window's frame closes the window and exits
|
||||
the program in a clean way (no leaks).</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][2][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234720"
|
||||
name="[scale_team][answers_attributes][2][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Line tracing</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>Use a flat map with nothing but 0, sized 4x4. We have a flat
|
||||
wireframe grid with a projection that is used to give a 3D concept.</li>
|
||||
<li>Same map, with 1 point at a different altitude. Check that the
|
||||
result corresponds and that the 3D effect is rendered.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][3][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234721"
|
||||
name="[scale_team][answers_attributes][3][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Heavy map</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Check whether the program handles a bigger map and an aleatory 16x16 map.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][4][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234722"
|
||||
name="[scale_team][answers_attributes][4][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Heavier map</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Test with bigger, heavier maps. Either those provided in the intranet, the <br>
|
||||
evaluated student, or your owns. Be logical and keep in mind the <br>
|
||||
requirements of the subject regarding what could contain your maps (colors <br>
|
||||
for example).</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][5][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234723"
|
||||
name="[scale_team][answers_attributes][5][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Graphic responsive</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>If the graphical representation stayed fluid and pleasant in the last test <br>
|
||||
with heavy maps, then it's cool.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][6][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234724"
|
||||
name="[scale_team][answers_attributes][6][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">MiniLibX images</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Take a look at the code and check whether the student uses the images from <br>
|
||||
the MLX to draw the image instead of putting pixels one by one. ;)</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][7][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234725"
|
||||
name="[scale_team][answers_attributes][7][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69346">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Bonus part</h3>
|
||||
<p class="font-italic">A lot of nice extras.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Extra projection</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Can the map be represented using another projection (such as parallel or conic)?</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][8][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234726"
|
||||
name="[scale_team][answers_attributes][8][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Zoooooooom</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Is there a way to zoom in and out using the keyboard or mouse?</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][9][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234727"
|
||||
name="[scale_team][answers_attributes][9][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Translate</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Is there a way to translate the projection using the keyboard or mouse?</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][10][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234728"
|
||||
name="[scale_team][answers_attributes][10][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][10][value]"
|
||||
id="radio_[scale_team][answers_attributes][10]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][10][value]"
|
||||
id="radio_[scale_team][answers_attributes][10]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Rotation</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Is there a way to rotate the projection using the keyboard or mouse?</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][11][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234729"
|
||||
name="[scale_team][answers_attributes][11][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Be crazy</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Give one more point if there is any additional bonus you consider is fine.<br>
|
||||
Creativity is an important point in your education and in the digital world.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][12][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234730"
|
||||
name="[scale_team][answers_attributes][12][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input"
|
||||
name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24643">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive active"
|
||||
for="scale_team_flag_id_1" name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_norme negative on-active"
|
||||
for="scale_team_flag_id_6" name="scale_team[flag_id]">
|
||||
<span class="iconf-receipt-1"></span>
|
||||
Norme
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active"
|
||||
for="scale_team_flag_id_7" name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active"
|
||||
for="scale_team_flag_id_8" name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active"
|
||||
for="scale_team_flag_id_12" name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/Fract-ol/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/Fract-ol/img/all.jpg
Executable file
After Width: | Height: | Size: 942 KiB |
573
src/42_evals/Cursus/Fract-ol/index.html
Executable file
@ -0,0 +1,573 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>fract-ol correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/42cursus-fract-ol">fract-ol</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24644">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and constructive
|
||||
throughout the <br> evaluation process. The well-being of the community depends on it.<br><br>- Identify
|
||||
with the student or group whose work is evaluated the possible <br> dysfunctions in their project. Take the
|
||||
time to discuss and debate the <br> problems that may have been identified.<br><br>- You must consider that
|
||||
there might be some differences in how your peers <br> might have understood the project's instructions and
|
||||
the scope of its <br> functionalities. Always keep an open mind and grade them as honestly as <br> possible.
|
||||
The pedagogy is useful only and only if the peer-evaluation is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24644">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or group.<br><br>-
|
||||
Double-check that the Git repository belongs to the student(s). Ensure that <br> the project is the one
|
||||
expected. Also, check that 'git clone' is used in an <br> empty folder.<br><br>- Check carefully that no
|
||||
malicious aliases was used to fool you and make you <br> evaluate something that is not the content of the
|
||||
official repository.<br><br>- To avoid any surprises and if applicable, review together any scripts used
|
||||
<br> to facilitate the grading (scripts for testing or automation).<br><br>- If you have not completed the
|
||||
assignment you are going to evaluate, you have <br> to read the entire subject prior to starting the
|
||||
evaluation process.<br><br>- Use the available flags to report an empty repository, a non-functioning <br>
|
||||
program, a Norm error, cheating, and so forth. <br> In these cases, the evaluation process ends and the
|
||||
final grade is 0, <br> or -42 in case of cheating. However, except for cheating, student are <br> strongly
|
||||
encouraged to review together the work that was turned in, in order <br> to identify any mistakes that
|
||||
shouldn't be repeated in the future.<br><br>- You must also verify the absence of memory leaks. Any memory
|
||||
allocated on <br> the heap must be properly freed before the end of execution. <br> You are allowed to use
|
||||
any of the different tools available on the computer, <br> such as leaks, valgrind, or e_fence. In case of
|
||||
memory leaks, tick the <br> appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24644">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">minilibx_mms_beta.tgz</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">minilibx-linux.tgz</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">minilibx_opengl.tgz</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5478706"
|
||||
action="https://projects.intra.42.fr/projects/42cursus-fract-ol/project_sessions/3518/evaluations/1716/scales/24644/scale_teams/5478706"
|
||||
accept-charset="UTF-8" method="post">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69347">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminary tests</h3>
|
||||
<p class="font-italic">Search for Julia and Mandelbrot sets on Wikipedia, or watch the e-learning
|
||||
videos, to have an idea of what the rendering must look like.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Minimal requirements</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Does the assignment meet the minimal requirements?</p>
|
||||
|
||||
<ul>
|
||||
<li>The repository isn't empty.</li>
|
||||
<li>Norminette shows no errors.</li>
|
||||
<li>No cheating.</li>
|
||||
<li>No forbidden function/library.</li>
|
||||
<li>There is no global variable.</li>
|
||||
<li>The code compiles with the required options.</li>
|
||||
<li>The executable is named as expected.</li>
|
||||
<li>During execution, there is no brutal or unmanaged crash (segfault,
|
||||
bus error, and so forth).</li>
|
||||
<li>No memory leaks.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69348">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Mandatory part</h3>
|
||||
<p class="font-italic">Evaluate the following points.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Graphic management</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Is the graphic management functional?</p>
|
||||
|
||||
<ul>
|
||||
<li>When the program runs, there is at least a graphic window open.</li>
|
||||
<li>Pressing the key ESC exits the program properly (no leaks).</li>
|
||||
<li>There is a visual change when using the mouse wheel (even if wrong,
|
||||
this part is about checking the event management only).</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Julia</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>How does the Julia set behave?</p>
|
||||
|
||||
<ul>
|
||||
<li>Does it looks like it should? Search for the Julia fractal set on the
|
||||
internet if you're not sure.</li>
|
||||
<li>Is it possible to zoom in and out and the basic pattern repeats?</li>
|
||||
<li>Search for some different Julia sets. You should be able to recreate
|
||||
them by passing different parameters to the program.</li>
|
||||
<li>Are there colors to represent the depth of the fractal?</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Mandelbrot</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>How does the Mandelbrot set behave?</p>
|
||||
|
||||
<ul>
|
||||
<li>Does it looks like it should?</li>
|
||||
<li>Is it possible to zoom in and out and the basic pattern repeats?</li>
|
||||
<li>Compare the result with some reference pictures: they all look alike,
|
||||
you can't miss them.</li>
|
||||
<li>Are there colors to represent the depth of the fractal?</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Parameters management</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Is the parameter's management implemented according to the subject? <br>
|
||||
Are wrong parameters correctly handled?<br>
|
||||
(Some optional parameters could be handled, for example for the bonus part.)</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">MiniLibX images</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Take a look at the code and check whether the student uses the images from <br>
|
||||
the MLX to draw the image instead of putting pixels one by one. ;)</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69349">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Bonus part</h3>
|
||||
<p class="font-italic">A lot of nice extras.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Zoom follows the mouse</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The zoom works where the mouse is and not only at the center of the image.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Arrows</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>It must be possible to move the view using the arrow keys. It should also <br>
|
||||
work with the zoom: if an arrow is pressed, the view should move if the <br>
|
||||
user didn't zoom in or out, but also if they did.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Colors</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The color palette is awesome.</p>
|
||||
|
||||
<ul>
|
||||
<li>Either you say Ouhaaa because it's very beautiful.</li>
|
||||
<li>Either you say Ouhaaa because it's insanely psychedelic.</li>
|
||||
<li>Either you say Ouhaaa because the colors change.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">A third fractal</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is at least one more fractal!! Working, nice, and that is actually a <br>
|
||||
fractal different than the two mandatory ones.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24644">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_norme negative on-active" for="scale_team_flag_id_6"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-receipt-1"></span>
|
||||
Norme
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active" for="scale_team_flag_id_12"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script async="" await="" src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/Ft_irc/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
465
src/42_evals/Cursus/Ft_irc/index.html
Executable file
@ -0,0 +1,465 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>ft_irc correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/ft_irc">ft_irc</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 2 students in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24664">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and constructive
|
||||
throughout the <br> evaluation process. The well-being of the community depends on it.<br><br>-
|
||||
Identify with the student or group whose work is evaluated the possible <br> dysfunctions in their
|
||||
project. Take the time to discuss and debate the <br> problems that may have been identified.<br><br>-
|
||||
You must consider that there might be some differences in how your peers <br> might have understood
|
||||
the project's instructions and the scope of its <br> functionalities. Always keep an open mind and
|
||||
grade them as honestly as <br> possible. The pedagogy is useful only and only if the peer-evaluation
|
||||
is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24664">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or
|
||||
group.<br><br>- Double-check that the Git repository belongs to the student(s). Ensure that <br> the
|
||||
project is the one expected. Also, check that 'git clone' is used in an <br> empty folder.<br><br>-
|
||||
Check carefully that no malicious aliases was used to fool you and make you <br> evaluate something
|
||||
that is not the content of the official repository.<br><br>- To avoid any surprises and if applicable,
|
||||
review together any scripts used <br> to facilitate the grading (scripts for testing or
|
||||
automation).<br><br>- If you have not completed the assignment you are going to evaluate, you have
|
||||
<br> to read the entire subject prior to starting the evaluation process.<br><br>- Use the available
|
||||
flags to report an empty repository, a non-functioning <br> program, a Norm error, cheating, and so
|
||||
forth. <br> In these cases, the evaluation process ends and the final grade is 0, <br> or -42 in case
|
||||
of cheating. However, except for cheating, student are <br> strongly encouraged to review together the
|
||||
work that was turned in, in order <br> to identify any mistakes that shouldn't be repeated in the
|
||||
future.<br><br>- Remember that for the duration of the defence, no segfault, no other <br> unexpected,
|
||||
premature, uncontrolled or unexpected termination of the <br> program, else the final grade is 0. Use
|
||||
the appropriate flag. <br> You should never have to edit any file except the configuration file if it
|
||||
<br> exists. If you want to edit a file, take the time to explicit the reasons <br> with the evaluated
|
||||
student and make sure both of you are okay with this.<br><br>- You must also verify the absence of
|
||||
memory leaks. Any memory allocated on <br> the heap must be properly freed before the end of
|
||||
execution. <br> You are allowed to use any of the different tools available on the computer, <br> such
|
||||
as leaks, valgrind, or e_fence. In case of memory leaks, tick the <br> appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24664">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">bircd.tar.gz</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5521778"
|
||||
action="https://projects.intra.42.fr/projects/ft_irc/project_sessions/3322/evaluations/1648/scales/24664/scale_teams/5521778"
|
||||
accept-charset="UTF-8" method="post">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69421">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Mandatory Part</h3>
|
||||
<p class="font-italic"></p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Basic checks</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>There is a Makefile, the project compiles correctly with the required
|
||||
options, is written in C++, and the executable is called as expected.</li>
|
||||
<li>Ask and check how many poll() (or equivalent) are present in the code.
|
||||
There must be only one.</li>
|
||||
<li>Verify that the poll() (or equivalent) is called every time before each
|
||||
accept, read/recv, write/send. After these calls, errno should not be
|
||||
used to trigger specific action (e.g. like reading again after errno
|
||||
== EAGAIN).</li>
|
||||
<li>Verify that each call to fcntl() is done as follows:
|
||||
fcntl(fd, F_SETFL, O_NONBLOCK);
|
||||
Any other use of fcntl() is forbidden.</li>
|
||||
<li>If any of these points is wrong, the evaluation ends now and the final
|
||||
mark is 0.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Networking</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Check the following requirements:</p>
|
||||
|
||||
<ul>
|
||||
<li>The server starts, and listens on all network interfaces on the port
|
||||
given from the command line.</li>
|
||||
<li>Using the 'nc' tool, you can connect to the server, send commands,
|
||||
and the server answers you back.</li>
|
||||
<li>Ask the team what is their reference IRC client.</li>
|
||||
<li>Using this IRC client, you can connect to the server.</li>
|
||||
<li>The server can handle multiple connections at the same time. The server
|
||||
should not block. It should be able to answer all demands. Do some test
|
||||
with the IRC client and nc at the same time.</li>
|
||||
<li>Join a channel thanks to the appropriate command. Ensure that all
|
||||
messages from one client on that channel are sent to all other clients
|
||||
that joined the channel.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Networking specials</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Network communications can be disturbed by many strange situations.</p>
|
||||
|
||||
<ul>
|
||||
<li>Just like in the subject, using nc, try to send partial commands. Check
|
||||
that the server answers correctly. With a partial command sent, ensure
|
||||
that other connections still run fine.</li>
|
||||
<li>Unexpectedly kill a client. Then check that the server is still
|
||||
operational for the other connections and for any new incoming client.</li>
|
||||
<li>Unexpectedly kill a nc with just half of a command sent. Check again that
|
||||
the server is not in an odd state or blocked.</li>
|
||||
<li>Stop a client (^-Z) connected on a channel. Then flood the channel using
|
||||
another client. The server should not hang. When the client is live again,
|
||||
all stored commands should be processed normally. Also, check for memory
|
||||
leaks during this operation.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Client Commands basic</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>With both nc and the reference IRC client, check that you can
|
||||
authenticate, set a nickname, a username, join a channel.
|
||||
This should be fine (you should have already done this previously).</li>
|
||||
<li>Verify that private messages (PRIVMSG) are fully functional with different parameters.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Client Commands channel operator</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>With both nc and the reference IRC client, check that a regular user
|
||||
does not have privileges to do channel operator actions. Then test with an
|
||||
operator. All the channel operation commands should be tested (remove one point for each feature
|
||||
that is
|
||||
not working).</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="marked-title text-center">Rate it from 0 (failed) through 5 (excellent)</div>
|
||||
<input autocomplete="off" class="star-range" data-star-range="" max="5"
|
||||
name="[scale_team][answers_attributes][4][value]" step="1" type="range" value="0"
|
||||
style="position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0;">
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69422">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Bonus part</h3>
|
||||
<p class="font-italic">Evaluate the bonus part if, and only if, the mandatory part has been
|
||||
entirely and perfectly done, and the error management handles unexpected
|
||||
or bad usage. In case all the mandatory points were not passed during the
|
||||
defense, bonus points must be totally ignored.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">File transfer</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>File transfer works with the reference IRC client.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">A small bot</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There's an IRC bot.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24664">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active" for="scale_team_flag_id_2"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_group negative on-active"
|
||||
for="scale_team_flag_id_10" name="scale_team[flag_id]">
|
||||
<span class="iconf-user-delete-2"></span>
|
||||
Incomplete group
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active" for="scale_team_flag_id_12"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/Ft_printf/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/Ft_printf/img/all.jpg
Executable file
After Width: | Height: | Size: 2.0 MiB |
1
src/42_evals/Cursus/Ft_transcendence/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
875
src/42_evals/Cursus/Ft_transcendence/index.html
Executable file
@ -0,0 +1,875 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>ft_transcendence correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/ft_transcendence">ft_transcendence</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 3 students in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-18563">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and constructive
|
||||
throughout the <br> evaluation process. The well-being of the community depends on it.<br><br>- Identify
|
||||
with the student or group whose work is evaluated the possible <br> dysfunctions in their project. Take the
|
||||
time to discuss and debate the <br> problems that may have been identified.<br><br>- You must consider that
|
||||
there might be some differences in how your peers <br> might have understood the project's instructions and
|
||||
the scope of its <br> functionalities. Always keep an open mind and grade them as honestly as <br> possible.
|
||||
The pedagogy is useful only and only if the peer-evaluation is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-18563">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or group.<br><br>-
|
||||
Double-check that the Git repository belongs to the student(s). Ensure that <br> the project is the one
|
||||
expected. Also, check that 'git clone' is used in an <br> empty folder.<br><br>- Check carefully that no
|
||||
malicious aliases was used to fool you and make you <br> evaluate something that is not the content of the
|
||||
official repository.<br><br>- To avoid any surprises and if applicable, review together any scripts used
|
||||
<br> to facilitate the grading (scripts for testing or automation).<br><br>- If you have not completed the
|
||||
assignment you are going to evaluate, you have <br> to read the entire subject prior to starting the
|
||||
evaluation process.<br><br>- Use the available flags to report an empty repository, a non-functioning <br>
|
||||
program, a Norm error, cheating, and so forth. <br> In these cases, the evaluation process ends and the
|
||||
final grade is 0, <br> or -42 in case of cheating. However, except for cheating, student are <br> strongly
|
||||
encouraged to review together the work that was turned in, in order <br> to identify any mistakes that
|
||||
shouldn't be repeated in the future.<br><br>- Remember that for the duration of the defence, no segfault, no
|
||||
other <br> unexpected, premature, uncontrolled or unexpected termination of the <br> program, else the final
|
||||
grade is 0. Use the appropriate flag. <br> You should never have to edit any file except the configuration
|
||||
file if it <br> exists. If you want to edit a file, take the time to explicit the reasons <br> with the
|
||||
evaluated student and make sure both of you are okay with this.<br><br>- You must also verify the absence of
|
||||
memory leaks. Any memory allocated on <br> the heap must be properly freed before the end of execution. <br>
|
||||
You are allowed to use any of the different tools available on the computer, <br> such as leaks, valgrind,
|
||||
or e_fence. In case of memory leaks, tick the <br> appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-18563">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_4904896"
|
||||
action="/projects/ft_transcendence/project_sessions/3323/evaluations/2011/scales/18563/scale_teams/4904896"
|
||||
accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden"
|
||||
name="_method" value="patch"><input type="hidden" name="authenticity_token"
|
||||
value="Hcc4omDbERi71hNQG/dzltU4u0TLC4VIE+x5T/74gmVj82b76DiSLdcQ23R0B5ksn+TW/nyexFruZ11fv95Ihw==">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-52978">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">General instructions</h3>
|
||||
<p class="font-italic"></p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Preliminary tests</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>Any credentials, API keys, environment variables must be set inside a .env
|
||||
file during the evaluation. In case any credentials, API keys are available
|
||||
in the git repository and outside of the .env file created during the evaluation, the evaluation stop
|
||||
and the mark is 0.</li>
|
||||
<li>Ensure the docker compose file is at the root of the repository.</li>
|
||||
<li>Run the "docker-compose up --build" command.</li>
|
||||
<li>Since the rating of this project is more flexible, do not stop the
|
||||
evaluation process unless you encounter a 500 error, a crash, or
|
||||
anything that actually doesn't work within the project scope.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][0][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178839"
|
||||
name="[scale_team][answers_attributes][0][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Backend</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>The backend must be developed using the NestJS framework.</li>
|
||||
<li>The database must be a PostgreSQL database.</li>
|
||||
<li>During the whole evaluation process, there must be no unhandled
|
||||
warning or error.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][1][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178840"
|
||||
name="[scale_team][answers_attributes][1][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Frontend</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>The frontend must be done using a TypeScript framework.</li>
|
||||
<li>Any TypeScript/JavaScript library is allowed.</li>
|
||||
<li>During the whole evaluation process, there must be no unhandled warning
|
||||
or error.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][2][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178841"
|
||||
name="[scale_team][answers_attributes][2][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Basic checks</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>The website is available at the address chosen by the students.</li>
|
||||
<li>The user can login using the 42 intranet OAuth feature.</li>
|
||||
<li>When logged for the first time, the user is prompted to add information
|
||||
to their account (display name/nickname, avatar, and so forth).</li>
|
||||
<li>If not logged, the user has access to only little or no information and
|
||||
is prompted to sign in.</li>
|
||||
<li>The website is a Single Page Application. The user can use the "Back"
|
||||
and "Forward" buttons of the web browser.</li>
|
||||
<li>You can browse the website using the latest version of Chrome and one
|
||||
additionnal browser without encountering any problems or errors.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][3][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178842"
|
||||
name="[scale_team][answers_attributes][3][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-52979">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">The website</h3>
|
||||
<p class="font-italic"></p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Security concerns</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Ensure that the website is secured. Check the database to verify that <br>
|
||||
passwords are hashed. Check the server for server-side <br>
|
||||
validation/sanitization on forms and any user input. If this isn't done, <br>
|
||||
the evaluation ends now.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][4][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178843"
|
||||
name="[scale_team][answers_attributes][4][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">User profile - private</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>When logged in, the user has access to their profile where they can <br>
|
||||
edit their information. For instance, they can change their nickname <br>
|
||||
(which must be unique) or their avatar (which is a default avatar if not <br>
|
||||
set).</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][5][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178844"
|
||||
name="[scale_team][answers_attributes][5][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">User profile - public</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Users can see the profile of other users. A profile contains basic <br>
|
||||
informations such as their nickname, their avatar, or a button to add <br>
|
||||
them as friends. <br>
|
||||
User can block other users. This means they won't receive private messages <br>
|
||||
from the accounts they blocked nor view their messages in public/private <br>
|
||||
channels.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][6][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178845"
|
||||
name="[scale_team][answers_attributes][6][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Friend interface</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The user has access to a friends interface, where they can see their <br>
|
||||
friends and their status (offline/online/in a game/and so forth). They <br>
|
||||
also have access to basics informations about them (name/nickname, avatar <br>
|
||||
and so forth).</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][7][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178846"
|
||||
name="[scale_team][answers_attributes][7][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">2FA</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The user can enable/disable 2FA (two-factor authentication). If enabled, <br>
|
||||
they must pass it in order to sign in. For example, 2FA can use Google <br>
|
||||
Authenticator, a text message, an email, and so forth.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][8][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178847"
|
||||
name="[scale_team][answers_attributes][8][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-52980">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Chat interface</h3>
|
||||
<p class="font-italic"></p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Join/leave channels</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>A logged in user can access the website chat service. Joining/leaving <br>
|
||||
channels is a manual action. For example, this means it must not be done <br>
|
||||
on logout (the user has to click a "Leave channel" button or something <br>
|
||||
else). The user can join channels (that can be already created) to have a <br>
|
||||
chat. Some of them can be password-protected. If so, the user has to enter <br>
|
||||
the correct password in order to join the channel.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][9][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178848"
|
||||
name="[scale_team][answers_attributes][9][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Chat usage</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The users can chat. Messages must be sent/received instantly. <br>
|
||||
If the user blocked another user, the messages from the blocked person <br>
|
||||
must be hidden. The user can access the user profile of other players <br>
|
||||
from the chat interface and also invite them for a Pong duel.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][10][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178849"
|
||||
name="[scale_team][answers_attributes][10][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][10][value]"
|
||||
id="radio_[scale_team][answers_attributes][10]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][10][value]"
|
||||
id="radio_[scale_team][answers_attributes][10]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Creating channels</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The user can create new channels. The channel creator is set as the <br>
|
||||
channel owner and has basic moderations rights (ban/mute users, add a <br>
|
||||
password to protect the channel, set new administrators, and so <br>
|
||||
forth).</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][11][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178850"
|
||||
name="[scale_team][answers_attributes][11][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][11][value]"
|
||||
id="radio_[scale_team][answers_attributes][11]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Channel roles</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>A user who is an owner of a channel can kick, ban, mute other users and <br>
|
||||
the channel administrators. <br>
|
||||
A user who is an administrator of a channel can kick, ban mute other <br>
|
||||
users, but not the channel owners.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][12][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178851"
|
||||
name="[scale_team][answers_attributes][12][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][12][value]"
|
||||
id="radio_[scale_team][answers_attributes][12]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-52981">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">The game</h3>
|
||||
<p class="font-italic"></p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Matchmaking system</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>When logged in, the user has access to a matchmaking system so they can <br>
|
||||
play Pong 1v1 games versus other players on the website. When they get <br>
|
||||
matched, a new game is loaded and the two users can start playing.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][13][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178852"
|
||||
name="[scale_team][answers_attributes][13][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][13][value]"
|
||||
id="radio_[scale_team][answers_attributes][13]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][13]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][13][value]"
|
||||
id="radio_[scale_team][answers_attributes][13]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][13]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Gameplay</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The game itself must be playable and respect the original Pong game. <br>
|
||||
The controls must be intuitive or correctly explained (with some rules or <br>
|
||||
manual). When a game is over, either a kind of end-game screen is <br>
|
||||
displayed or the game page just exits.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][14][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178853"
|
||||
name="[scale_team][answers_attributes][14][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][14][value]"
|
||||
id="radio_[scale_team][answers_attributes][14]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][14]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][14][value]"
|
||||
id="radio_[scale_team][answers_attributes][14]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][14]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Spectactor mode</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>There is a spectator mode. The user can watch any live games. They can be <br>
|
||||
accessed through the chat interface or the friend interface. <br>
|
||||
There can also be a page dedicated to live games from which the user can <br>
|
||||
access any of them.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][15][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178854"
|
||||
name="[scale_team][answers_attributes][15][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][15][value]"
|
||||
id="radio_[scale_team][answers_attributes][15]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][15]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][15][value]"
|
||||
id="radio_[scale_team][answers_attributes][15]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][15]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Lags & disconnects</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Unexpected disconnections and lags have to be handled. The game and the <br>
|
||||
website must not crash when a user is experiencing lags or is disconnected. <br>
|
||||
Handling such issues in an efficient way is appreciated but not mandatory:</p>
|
||||
|
||||
<ul>
|
||||
<li>Pause the game for a defined duration.</li>
|
||||
<li>Disconnected users can reconnect.</li>
|
||||
<li>Lagging users can catch up to the match.</li>
|
||||
<li>And so forth.
|
||||
Any solution is acceptable. The only requirement is: the game should not
|
||||
crash.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][16][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178855"
|
||||
name="[scale_team][answers_attributes][16][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][16][value]"
|
||||
id="radio_[scale_team][answers_attributes][16]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][16]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][16][value]"
|
||||
id="radio_[scale_team][answers_attributes][16]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][16]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Additionnal features</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The user can enjoy extra features such as power-ups, different maps, <br>
|
||||
achievements, and so forth.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][17][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="178856"
|
||||
name="[scale_team][answers_attributes][17][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][17][value]"
|
||||
id="radio_[scale_team][answers_attributes][17]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][17]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][17][value]"
|
||||
id="radio_[scale_team][answers_attributes][17]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][17]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-18563">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_group negative on-active"
|
||||
for="scale_team_flag_id_10" name="scale_team[flag_id]">
|
||||
<span class="iconf-user-delete-2"></span>
|
||||
Incomplete group
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/Get_next_line/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/Get_next_line/img/all.jpg
Executable file
After Width: | Height: | Size: 2.3 MiB |
438
src/42_evals/Cursus/Get_next_line/index.html
Normal file
@ -0,0 +1,438 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>get_next_line correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/42cursus-get_next_line">get_next_line</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24637">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and constructive
|
||||
throughout the <br> evaluation process. The well-being of the community depends on it.<br><br>-
|
||||
Identify with the student or group whose work is evaluated the possible <br> dysfunctions in their
|
||||
project. Take the time to discuss and debate the <br> problems that may have been identified.<br><br>-
|
||||
You must consider that there might be some differences in how your peers <br> might have understood
|
||||
the project's instructions and the scope of its <br> functionalities. Always keep an open mind and
|
||||
grade them as honestly as <br> possible. The pedagogy is useful only and only if the peer-evaluation
|
||||
is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24637">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or
|
||||
group.<br><br>- Double-check that the Git repository belongs to the student(s). Ensure that <br> the
|
||||
project is the one expected. Also, check that 'git clone' is used in an <br> empty folder.<br><br>-
|
||||
Check carefully that no malicious aliases was used to fool you and make you <br> evaluate something
|
||||
that is not the content of the official repository.<br><br>- To avoid any surprises and if applicable,
|
||||
review together any scripts used <br> to facilitate the grading (scripts for testing or
|
||||
automation).<br><br>- If you have not completed the assignment you are going to evaluate, you have
|
||||
<br> to read the entire subject prior to starting the evaluation process.<br><br>- Use the available
|
||||
flags to report an empty repository, a non-functioning <br> program, a Norm error, cheating, and so
|
||||
forth. <br> In these cases, the evaluation process ends and the final grade is 0, <br> or -42 in case
|
||||
of cheating. However, except for cheating, student are <br> strongly encouraged to review together the
|
||||
work that was turned in, in order <br> to identify any mistakes that shouldn't be repeated in the
|
||||
future.<br><br>- Remember that for the duration of the defence, no segfault, no other <br> unexpected,
|
||||
premature, uncontrolled or unexpected termination of the <br> program, else the final grade is 0. Use
|
||||
the appropriate flag. <br> You should never have to edit any file except the configuration file if it
|
||||
<br> exists. If you want to edit a file, take the time to explicit the reasons <br> with the evaluated
|
||||
student and make sure both of you are okay with this.<br><br>- You must also verify the absence of
|
||||
memory leaks. Any memory allocated on <br> the heap must be properly freed before the end of
|
||||
execution. <br> You are allowed to use any of the different tools available on the computer, <br> such
|
||||
as leaks, valgrind, or e_fence. In case of memory leaks, tick the <br> appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24637">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5575551"
|
||||
action="https://projects.intra.42.fr/projects/42cursus-get_next_line/project_sessions/3313/evaluations/1590/scales/24637/scale_teams/5575551"
|
||||
accept-charset="UTF-8" method="post">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69328">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Mandatory Part</h3>
|
||||
<p class="font-italic"></p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Norminette</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Run the Norminette. If there is an error, the evaluation stops here. <br>
|
||||
You can keep going and discuss the implementation of the code, but the <br>
|
||||
assignment will not be graded.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Compilation</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>It should be possible to compile the project with the usual flags and -D BUFFER_SIZE. <br>
|
||||
It must be possible to compile this project with and without this flag in addition to <br>
|
||||
the flags: -Wall -Wextra -Werror. If there is an error, the evaluation stops here. <br>
|
||||
You can keep going and discuss the implementation of the code, but the <br>
|
||||
assignment will not be graded.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Error management</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Carry out AT LEAST the following tests to try to stress the error <br>
|
||||
management.</p>
|
||||
|
||||
<ul>
|
||||
<li>Pass an arbitrary file descriptor to the get_next_line function on
|
||||
which it is not possible to read, for example 42. The function must
|
||||
return NULL.</li>
|
||||
<li>Check the error returns for read and malloc.
|
||||
If there is an error, the evaluation stops here.
|
||||
You can keep going and discuss the implementation of the code,
|
||||
but the assignment will not be graded.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Testing</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>As the evaluator, you are expected to provide a main which will always check:</p>
|
||||
|
||||
<ul>
|
||||
<li>The return value of the get_next_line is NULL in case of error.</li>
|
||||
<li>Otherwise, the function returns the line read, always with a <code>\n</code> at the end except
|
||||
if
|
||||
the end of file was reached and does not end with a <code>\n</code> character.</li>
|
||||
</ul>
|
||||
|
||||
<p>Test all the possible combinations of the following rules:</p>
|
||||
|
||||
<ul>
|
||||
<li>Large BUFFER_SIZE (>1024)</li>
|
||||
<li>Small BUFFER_SIZE (< 8, and 1)</li>
|
||||
<li>BUFFER_SIZE exactly the length of the line to read</li>
|
||||
<li>
|
||||
<p>1 byte variant (+/-) between the line and the BUFFER_SIZE</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Read on stdin</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Read from a file</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>(Multiple/Single) Long line (2k+ characters)</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>(Multiple/Single) Short line (< 4 characters, even 1)</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>(Multiple/Single) Empty line</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>These tests should enable you to verify the strength of the student's <br>
|
||||
get_next_line.<br>
|
||||
If there is an error, the evaluation stops here.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69329">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Bonus part</h3>
|
||||
<p class="font-italic">Evaluate the bonus part if, and only if, the mandatory part has been
|
||||
entirely and perfectly done, and the error management handles unexpected
|
||||
or bad usage. In case all the mandatory points were not passed during the
|
||||
defense, bonus points must be totally ignored.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Multiple fd reading</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Perform the same tests as you did before, this time launch multiple <br>
|
||||
instances of get_next_line with a different file descriptor on each. Make <br>
|
||||
sure that each get_next_line is returning the correct line. Combine with <br>
|
||||
a non-existing fd to check for errors.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Single static variable</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Check the code and verify if there is indeed only one static variable.<br>
|
||||
Give the points if that's the case.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24637">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_norme negative on-active" for="scale_team_flag_id_6"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-receipt-1"></span>
|
||||
Norme
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active" for="scale_team_flag_id_12"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/Inception/README.md
Executable file
@ -0,0 +1 @@
|
||||
[Open the correction file](https://rphlr.github.io/42-Evals/Rank05/Inception/html/index.html)
|
696
src/42_evals/Cursus/Inception/index.html
Executable file
@ -0,0 +1,696 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<script src="chrome-extension://hmflgigeigiejaogcgamkecmlibcpdgo/generic/inject.js"></script>
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>inception correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/inception">Inception</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24651">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and constructive
|
||||
throughout the <br> evaluation process. The well-being of the community depends on it.<br><br>- Identify
|
||||
with the student or group whose work is evaluated the possible <br> dysfunctions in their project. Take the
|
||||
time to discuss and debate the <br> problems that may have been identified.<br><br>- You must consider that
|
||||
there might be some differences in how your peers <br> might have understood the project's instructions and
|
||||
the scope of its <br> functionalities. Always keep an open mind and grade them as honestly as <br> possible.
|
||||
The pedagogy is useful only and only if the peer-evaluation is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24651">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or group.<br><br>-
|
||||
Double-check that the Git repository belongs to the student(s). Ensure that <br> the project is the one
|
||||
expected. Also, check that 'git clone' is used in an <br> empty folder.<br><br>- Check carefully that no
|
||||
malicious aliases was used to fool you and make you <br> evaluate something that is not the content of the
|
||||
official repository.<br><br>- To avoid any surprises and if applicable, review together any scripts used
|
||||
<br> to facilitate the grading (scripts for testing or automation).<br><br>- If you have not completed the
|
||||
assignment you are going to evaluate, you have <br> to read the entire subject prior to starting the
|
||||
evaluation process.<br><br>- Use the available flags to report an empty repository, a non-functioning <br>
|
||||
program, a Norm error, cheating, and so forth. <br> In these cases, the evaluation process ends and the
|
||||
final grade is 0, <br> or -42 in case of cheating. However, except for cheating, student are <br> strongly
|
||||
encouraged to review together the work that was turned in, in order <br> to identify any mistakes that
|
||||
shouldn't be repeated in the future.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24651">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-note-paper-2"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5430439"
|
||||
action="https://projects.intra.42.fr/projects/inception/project_sessions/5815/evaluations/3607/scales/24651/scale_teams/5430439"
|
||||
accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden"
|
||||
name="_method" value="patch"><input type="hidden" name="authenticity_token"
|
||||
value="Zhxzz1zTdGwmIzPz0GvGtEXLg/HBgsHnUBjxx/KnWmYjIoUeTpqCqYIW46fyNIWKfudOFs5/Qo61p0w3IO+JYw==">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69363">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminaries</h3>
|
||||
<p class="font-italic">If cheating is suspected, the evaluation stops here. Use the "Cheat" flag to report
|
||||
it. Take this decision calmly, wisely, and please, use this button with caution.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Preliminary tests</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>Any credentials, API keys, environment variables must be set inside a .env
|
||||
file during the evaluation. In case any credentials, API keys are available
|
||||
in the git repository and outside of the .env file created during the evaluation, the evaluation stop
|
||||
and the mark is 0.</li>
|
||||
<li>Defense can only happen if the evaluated student or group is present.
|
||||
This way everybody learns by sharing knowledge with each other.</li>
|
||||
<li>If no work has been submitted (or wrong files, wrong directory, or
|
||||
wrong filenames), the grade is 0, and the evaluation process ends.</li>
|
||||
<li>For this project, you have to clone their Git repository on their
|
||||
station.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][0][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234803"
|
||||
name="[scale_team][answers_attributes][0][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69364">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">General instructions</h3>
|
||||
<p class="font-italic"></p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">General instructions</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>For the entire evaluation process, if you don't know how to check a
|
||||
requirement, or verify anything, the evaluated student has to help you. </li>
|
||||
<li>Ensure that all the files required to configure the application are
|
||||
located inside a srcs folder. The srcs folder must be located at the
|
||||
root of the repository.</li>
|
||||
<li>Ensure that a Makefile is located at the root of the repository.</li>
|
||||
<li>Before starting the evaluation, run this command in the terminal:
|
||||
"docker stop $(docker ps -qa); docker rm $(docker ps -qa);
|
||||
docker rmi -f $(docker images -qa); docker volume rm $(docker volume ls -q);
|
||||
docker network rm $(docker network ls -q) 2>/dev/null"</li>
|
||||
<li>Read the docker-compose.yml file. There musn't be 'network: host' in
|
||||
it or 'links:'. Otherwise, the evaluation ends now.</li>
|
||||
<li>Read the docker-compose.yml file. There must be 'network(s)' in it.
|
||||
Otherwise, the evaluation ends now.</li>
|
||||
<li>Examine the Makefile and all the scripts in which Docker is used.
|
||||
There musn't be '--link' in any of them. Otherwise, the evaluation
|
||||
ends now.</li>
|
||||
<li>Examine the Dockerfiles. If you see 'tail -f' or any command run in
|
||||
background in any of them in the ENTRYPOINT section, the evaluation
|
||||
ends now. Same thing if 'bash' or 'sh' are used but not for running a
|
||||
script (e.g, 'nginx & bash' or 'bash').</li>
|
||||
<li>If the entrypoint is a script (e.g., ENTRYPOINT ["sh", "my_entrypoint.sh"],
|
||||
ENTRYPOINT ["bash", "my_entrypoint.sh"]), ensure it runs no program<br>
|
||||
in background (e.g, 'nginx & bash').</li>
|
||||
<li>Examine all the scripts in the repository. Ensure none of them runs
|
||||
an infinite loop.
|
||||
The following are a few examples of prohibited commands:
|
||||
'sleep infinity', 'tail -f /dev/null', 'tail -f /dev/random'</li>
|
||||
<li>Run the Makefile.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][1][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234804"
|
||||
name="[scale_team][answers_attributes][1][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69365">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Mandatory part</h3>
|
||||
<p class="font-italic">This project consists in setting up a small infrastructure composed of
|
||||
different services using docker compose.
|
||||
Ensure that all the following points are correct.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Project overview</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>The evaluated person has to explain to you in simple terms:
|
||||
|
||||
<ul>
|
||||
<li>How Docker and docker compose work</li>
|
||||
<li>The difference between a Docker image used with docker compose and
|
||||
without docker compose</li>
|
||||
<li>The benefit of Docker compared to VMs</li>
|
||||
<li>The pertinence of the directory structure required for this project
|
||||
(an example is provided in the subject's PDF file).</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][2][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234805"
|
||||
name="[scale_team][answers_attributes][2][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Simple setup</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>Ensure that NGINX can be accessed by port 443 only. Once done, open
|
||||
the page.</li>
|
||||
<li>Ensure that a SSL/TLS certificate is used.</li>
|
||||
<li>Ensure that the WordPress website is properly installed and configured
|
||||
(you shouldn't see the WordPress Installation page). To access it,
|
||||
open <a href="https://login.42.fr/">https://login.42.fr</a> in your browser, where login is the login of
|
||||
the evaluated student. You shouldn't be able to access the site via<br>
|
||||
<a href="http://login.42.fr/">http://login.42.fr</a>.
|
||||
If something doesn't work as expected, the evaluation process ends now.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][3][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234806"
|
||||
name="[scale_team][answers_attributes][3][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Docker Basics</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>Start by checking the Dockerfiles. There must be one Dockerfile per
|
||||
service. Ensure that the Dockerfiles are not empty files. If it's not
|
||||
the case or if a Dockerfile is missing, the evaluation process ends
|
||||
now.</li>
|
||||
<li>Make sure the evaluated student has written their own Dockerfiles and
|
||||
built their own Docker images. Indeed, it is forbidden to use
|
||||
ready-made ones or to use services such as DockerHub.</li>
|
||||
<li>Ensure that every container is built from the penultimate stable version
|
||||
of Alpine/Debian. If a Dockerfile does not start
|
||||
with 'FROM alpine:X.X.X' or 'FROM debian:XXXXX', or any other local image,
|
||||
the evaluation process ends now.</li>
|
||||
<li>The Docker images must have the same name as their corresponding
|
||||
service. Otherwise, the evaluation process ends now.</li>
|
||||
<li>Ensure that the Makefile has set up all the services via docker compose.
|
||||
This means that the containers must have been built using docker compose
|
||||
and that no crash happened. Otherwise, the evaluation process ends.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][4][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234807"
|
||||
name="[scale_team][answers_attributes][4][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Docker Network</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>Ensure that docker-network is used by checking the docker-compose.yml
|
||||
file. Then run the 'docker network ls' command to verify that a
|
||||
network is visible.</li>
|
||||
<li>The evaluated student has to give you a simple explanation of
|
||||
docker-network.
|
||||
If any of the above points is not correct, the evaluation process ends
|
||||
now.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][5][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234808"
|
||||
name="[scale_team][answers_attributes][5][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">NGINX with SSL/TLS</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>Ensure that there is a Dockerfile.</li>
|
||||
<li>Using the 'docker compose ps' command, ensure that the container was
|
||||
created (using the flag '-p' is authorized if necessary).</li>
|
||||
<li>Try to access the service via http (port 80) and verify that you
|
||||
cannot connect.</li>
|
||||
<li>Open <a href="https://login.42.fr/">https://login.42.fr/</a> in your browser, where login is the login
|
||||
of the evaluated student. The displayed page must be the configured
|
||||
WordPress website (you shouldn't see the WordPress Installation page).</li>
|
||||
<li>The use of a TLS v1.2/v1.3 certificate is mandatory and must be
|
||||
demonstrated. The SSL/TLS certificate doesn't have to be recognized.
|
||||
A self-signed certificate warning may appear.
|
||||
If any of the above points is not clearly explained and correct, the
|
||||
evaluation process ends now.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][6][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234809"
|
||||
name="[scale_team][answers_attributes][6][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">WordPress with php-fpm and its volume</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>Ensure that there is a Dockerfile.</li>
|
||||
<li>Ensure that there is no NGINX in the Dockerfile.</li>
|
||||
<li>Using the 'docker compose ps' command, ensure that the container was
|
||||
created (using the flag '-p' is authorized if necessary).</li>
|
||||
<li>Ensure that there is a Volume. To do so:
|
||||
Run the command 'docker volume ls' then 'docker volume inspect
|
||||
<volume name>'. Verify that the result in the standard output contains
|
||||
the path '/home/login/data/', where login is the login of the evaluated
|
||||
student.</li>
|
||||
<li>Ensure that you can add a comment using the available WordPress user.</li>
|
||||
<li>Sign in with the administrator account to access the Administration
|
||||
dashboard. The Admin username must not include 'admin' or 'Admin'
|
||||
(e.g., admin, administrator, Admin-login, admin-123, and so forth).</li>
|
||||
<li>From the Administration dashboard, edit a page. Verify on the website
|
||||
that the page has been updated.
|
||||
If any of the above points is not correct, the evaluation process ends
|
||||
now.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][7][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234810"
|
||||
name="[scale_team][answers_attributes][7][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">MariaDB and its volume</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>Ensure that there is a Dockerfile.</li>
|
||||
<li>Ensure that there is no NGINX in the Dockerfile.</li>
|
||||
<li>Using the 'docker compose ps' command, ensure that the container was
|
||||
created (using the flag '-p' is authorized if necessary).</li>
|
||||
<li>Ensure that there is a Volume. To do so:
|
||||
Run the command 'docker volume ls' then 'docker volume inspect
|
||||
<volume name>'. Verify that the result in the standard output contains
|
||||
the path '/home/login/data/', where login is the login of the evaluated
|
||||
student.</li>
|
||||
<li>The evaluated student must be able to explain you how to login into
|
||||
the database. Verify that the database is not empty.
|
||||
If any of the above points is not correct, the evaluation process ends
|
||||
now.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][8][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234811"
|
||||
name="[scale_team][answers_attributes][8][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Persistence!</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>This part is pretty straightforward. You have to reboot the virtual
|
||||
machine. Once it has restarted, launch docker compose again. Then,
|
||||
verify that everything is functional, and that both WordPress and
|
||||
MariaDB are configured. The changes you made previously to the
|
||||
WordPress website should still be here.
|
||||
If any of the above points is not correct, the evaluation process ends
|
||||
now.</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][9][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234812"
|
||||
name="[scale_team][answers_attributes][9][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][9][value]"
|
||||
id="radio_[scale_team][answers_attributes][9]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69366">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Bonus</h3>
|
||||
<p class="font-italic">Evaluate the bonus part if, and only if, the mandatory part has been
|
||||
entirely and perfectly done, and the error management handles unexpected
|
||||
or bad usage. In case all the mandatory points were not passed during the
|
||||
defense, bonus points must be totally ignored.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Bonus</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Add 1 point per bonus authorized in the subject.<br>
|
||||
Verify and test the proper functioning and implementation of each extra <br>
|
||||
service.<br>
|
||||
For the free choice service, the evaluated student has to give you a <br>
|
||||
simple explanation about how it works and why they think it is useful. </p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][10][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234813"
|
||||
name="[scale_team][answers_attributes][10][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="marked-title text-center">Rate it from 0 (failed) through 5 (excellent)</div>
|
||||
<input autocomplete="off" class="star-range" data-star-range="" max="5"
|
||||
name="[scale_team][answers_attributes][10][value]" step="1" type="range" value="0"
|
||||
style="position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0;">
|
||||
<hr>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24651">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
7
src/42_evals/Cursus/Libft/README.md
Executable file
@ -0,0 +1,7 @@
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
BIN
src/42_evals/Cursus/Libft/img/1.jpg
Executable file
After Width: | Height: | Size: 390 KiB |
BIN
src/42_evals/Cursus/Libft/img/2.jpg
Executable file
After Width: | Height: | Size: 834 KiB |
BIN
src/42_evals/Cursus/Libft/img/3.jpg
Executable file
After Width: | Height: | Size: 780 KiB |
BIN
src/42_evals/Cursus/Libft/img/4.jpg
Executable file
After Width: | Height: | Size: 538 KiB |
676
src/42_evals/Cursus/Libft/index.html
Executable file
@ -0,0 +1,676 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>Libft correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br />Scale for project
|
||||
<a href="https://projects.intra.42.fr/projects/42cursus-libft">Libft</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
<hr />
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24830">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please follow the rules below:<br /><br />
|
||||
- Stay polite, courteous, respectful, and constructive during the evaluation process. The well-being of the
|
||||
community depends on it.<br /><br />
|
||||
- Identify with the evaluated person or group any potential malfunctions in their work. Take the time to
|
||||
discuss and debate the identified issues.<br /><br />
|
||||
- You must take into account that there may be slight differences in interpretation between the project
|
||||
instructions, its scope, and its features. Keep an open mind and grade as honestly as possible. The
|
||||
educational value is only valid if the peer evaluation is conducted seriously.<br />
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24830">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade what is contained in the cloned Git repository of the student or group.<br /><br />
|
||||
- Ensure that the Git repository actually belongs to the student or group, that the project is indeed the
|
||||
one expected, and that "git clone" is used in an empty directory.<br /><br />
|
||||
- Carefully verify that no aliases have been used to deceive you and ensure that you are evaluating the
|
||||
official submission.<br /><br />
|
||||
- To avoid any surprises, check with the student or group for any potential scripts used to facilitate the
|
||||
evaluation, such as test or automation scripts.<br /><br />
|
||||
- Do not blindly trust test programs! They could be incorrect.<br /><br />
|
||||
- Check the Makefile: no wildcards, it should not re-link. If this is the case, the grade is 0. Use make,
|
||||
then make --debug to ensure this.<br /><br />
|
||||
- If you have not completed the project you are about to evaluate, you must read the entire topic before
|
||||
starting the evaluation.<br /><br />
|
||||
- Use the available flags to signal an empty submission, a non-functioning program, a Norme error,
|
||||
cheating... In these situations, the evaluation is terminated and the grade is 0, or -42 in the case of
|
||||
cheating. However, except in cases of cheating, you are encouraged to continue the discussion on the work
|
||||
submitted, even if it is incomplete, in order to identify mistakes not to be repeated in the
|
||||
future.<br /><br />
|
||||
- Throughout the duration of the evaluation, no segfault or other unexpected, premature, or uncontrolled
|
||||
shutdown will be tolerated. In such cases, the final grade will be 0. Use the appropriate flag.<br /><br />
|
||||
- You should never have to edit a file except for an existing configuration file. If you wish to modify a
|
||||
file, you must clearly state the reasons for the editing and be in agreement with the evaluated student
|
||||
before doing anything.<br /><br />
|
||||
- You must also verify the absence of memory leaks. Any memory allocated on the heap must be properly freed
|
||||
before the end of the program's execution. You are entitled to use any tool available on the machine such as
|
||||
leaks, valgrind, or e_fence. In the case of memory leaks, check the appropriate flag.<br />
|
||||
</p>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="dancer from-down" id="attachments-24830">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a href="https://github.com/rphlr/42-Subjects/" target="_blank">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<form accept-charset="UTF-8" class="simple_form form-horizontal" id="edit_scale_team_5411828" method="post"
|
||||
novalidate="novalidate"><input name="utf8" type="hidden" value="✓" /><input name="_method" type="hidden"
|
||||
value="patch" /><input name="authenticity_token" type="hidden"
|
||||
value="6Ham6Zq7dWNKn0GqURyJ/9favA08IRL2ZZlqRe45A5XzMg8ElLpzR1Nr9YnMvzkgYRhOZfma8IhsTLDFrmK/QQ==" />
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-70027">
|
||||
<div class="section-header">
|
||||
<hr />
|
||||
<h3 class="font-weight-bold mb-1">Mandatory Part</h3>
|
||||
<p class="font-italic">You must test the functions present in the libft, either with your own set of tests
|
||||
or with those of the person being evaluated.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Libc functions #1</h4>
|
||||
<p class="scale-section-guidelines">Test that ALL these functions fulfill their role exactly as they should:
|
||||
</p>
|
||||
<ul>
|
||||
<li>ft_strlen</li>
|
||||
<li>ft_memcpy</li>
|
||||
<li>ft_memset</li>
|
||||
<li>ft_bzero</li>
|
||||
<li>ft_memmove</li>
|
||||
<li>ft_memcmp</li>
|
||||
<li>ft_memchr Does it work?</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][1][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][1][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][1]_true"
|
||||
name="[scale_team][answers_attributes][1][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" name="[scale_team][answers_attributes][1][value]"
|
||||
type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Libc functions #2</h4>
|
||||
<p class="scale-section-guidelines">Test that ALL these functions fulfill their role exactly as they should:
|
||||
</p>
|
||||
<ul>
|
||||
<li>ft_isalpha</li>
|
||||
<li>ft_isdigit</li>
|
||||
<li>ft_isalnum</li>
|
||||
<li>ft_isascii</li>
|
||||
<li>ft_isprint Does it work?</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][2][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][2][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][2]_true"
|
||||
name="[scale_team][answers_attributes][2][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" name="[scale_team][answers_attributes][2][value]"
|
||||
type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Libc functions #3</h4>
|
||||
<p class="scale-section-guidelines">Test that ALL these functions fulfill their role exactly as they should:
|
||||
|
||||
</p>
|
||||
<ul>
|
||||
<li>ft_toupper</li>
|
||||
<li>ft_tolower</li>
|
||||
<li>ft_strchr</li>
|
||||
<li>ft_strrchr Does it work?</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][3][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][3][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][3]_true"
|
||||
name="[scale_team][answers_attributes][3][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" name="[scale_team][answers_attributes][3][value]"
|
||||
type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Libc functions #4</h4>
|
||||
<p class="scale-section-guidelines">Test that ALL these functions fulfill their role exactly as they should:
|
||||
</p>
|
||||
<ul>
|
||||
<li>ft_strlcat</li>
|
||||
<li>ft_strlcpy</li>
|
||||
<li>ft_atoi</li>
|
||||
<li>ft_strnstr</li>
|
||||
<li>ft_strncmp</li>
|
||||
<li>ft_calloc</li>
|
||||
<li>ft_strdup Does it work?</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][4][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][4][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][4]_true"
|
||||
name="[scale_team][answers_attributes][4][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" name="[scale_team][answers_attributes][4][value]"
|
||||
type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Additional functions #1</h4>
|
||||
<p class="scale-section-guidelines">Test that ALL these functions fulfill their role exactly as they should:
|
||||
</p>
|
||||
<ul>
|
||||
<li>ft_substr</li>
|
||||
<li>ft_strjoin</li>
|
||||
<li>ft_putchar_fd</li>
|
||||
<li>ft_putstr_fd</li>
|
||||
<li>ft_putendl_fd</li>
|
||||
<li>ft_putnbr_fd Does it work?</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][5][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][5][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][5]_true"
|
||||
name="[scale_team][answers_attributes][5][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" name="[scale_team][answers_attributes][5][value]"
|
||||
type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Additional functions #2</h4>
|
||||
<p class="scale-section-guidelines">Test that ALL these functions fulfill their role exactly as they should:
|
||||
</p>
|
||||
<ul>
|
||||
<li>ft_strmapi</li>
|
||||
<li>ft_striteri</li>
|
||||
<li>ft_strtrim</li>
|
||||
<li>ft_split</li>
|
||||
<li>ft_itoa Does it work?</li>
|
||||
</ul>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][6][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][6][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][6]_true"
|
||||
name="[scale_team][answers_attributes][6][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" name="[scale_team][answers_attributes][6][value]"
|
||||
type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<section class="scale-section-item dancer from-down" id="section-70028">
|
||||
<div class="section-header">
|
||||
<hr />
|
||||
<h3 class="font-weight-bold mb-1">Bonus Part</h3>
|
||||
<p class="font-italic">Bonuses will only be considered if the mandatory part is excellent. This means
|
||||
that the mandatory part must have been completed from start to finish, with perfect error handling
|
||||
even in the case of unexpected use. If all the mandatory points have not been awarded during this
|
||||
defense, no bonus points will be counted.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">ft_lstnew</h4>
|
||||
<p class="scale-section-guidelines">Does it work?</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][7][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][7][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][7]_true"
|
||||
name="[scale_team][answers_attributes][7][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][7]_false"
|
||||
name="[scale_team][answers_attributes][7][value]" type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">ft_lstdelone</h4>
|
||||
<p class="scale-section-guidelines">Does it work?</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][8][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][8][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][8]_true"
|
||||
name="[scale_team][answers_attributes][8][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][8]_false"
|
||||
name="[scale_team][answers_attributes][8][value]" type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">ft_lstclear</h4>
|
||||
<p class="scale-section-guidelines">Does it work?</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][9][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][9][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][9]_true"
|
||||
name="[scale_team][answers_attributes][9][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][9]_false"
|
||||
name="[scale_team][answers_attributes][9][value]" type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][9]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">ft_lstadd_front</h4>
|
||||
<p class="scale-section-guidelines">Does it work?</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][10][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][10][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][10]_true"
|
||||
name="[scale_team][answers_attributes][10][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][10]_false"
|
||||
name="[scale_team][answers_attributes][10][value]" type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][10]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">ft_lstadd_back</h4>
|
||||
<p class="scale-section-guidelines">Does it work?</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][11][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][11][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][11]_true"
|
||||
name="[scale_team][answers_attributes][11][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][11]_false"
|
||||
name="[scale_team][answers_attributes][11][value]" type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][11]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">ft_lstsize</h4>
|
||||
<p class="scale-section-guidelines">Does it work?</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][12][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][12][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][12]_true"
|
||||
name="[scale_team][answers_attributes][12][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][12]_false"
|
||||
name="[scale_team][answers_attributes][12][value]" type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][12]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">ft_lstlast</h4>
|
||||
<p class="scale-section-guidelines">Does it work?</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][13][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][13][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][13]_true"
|
||||
name="[scale_team][answers_attributes][13][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][13]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][13]_false"
|
||||
name="[scale_team][answers_attributes][13][value]" type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][13]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">ft_lstiter</h4>
|
||||
<p class="scale-section-guidelines">Does it work?</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][14][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][14][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][14]_true"
|
||||
name="[scale_team][answers_attributes][14][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][14]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][14]_false"
|
||||
name="[scale_team][answers_attributes][14][value]" type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][14]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">ft_lstmap</h4>
|
||||
<p class="scale-section-guidelines">Does it work?</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_id"
|
||||
name="[scale_team][answers_attributes][15][id]" /></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" id="scale_team_answer_question_id"
|
||||
name="[scale_team][answers_attributes][15][question_id]" /></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" id="radio_[scale_team][answers_attributes][15]_true"
|
||||
name="[scale_team][answers_attributes][15][value]" type="radio" />
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][15]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" checked="checked" class="checkbox-input"
|
||||
id="radio_[scale_team][answers_attributes][15]_false"
|
||||
name="[scale_team][answers_attributes][15][value]" type="radio" />
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][15]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24830">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/MiniRT/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
629
src/42_evals/Cursus/MiniRT/index.html
Executable file
@ -0,0 +1,629 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>miniRT correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/minirt">minirt</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 2 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-21685">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful and
|
||||
constructive throughout the <br> evaluation process. The well-being of the community depends on
|
||||
it.<br><br>- Identify with the student or group whose work is evaluated the possible <br>
|
||||
dysfunctions in their project. Take the time to discuss and debate the <br> problems that may
|
||||
have been identified.<br><br>- You must consider that there might be some differences in how
|
||||
your peers <br> might have understood the project's instructions and the scope of its <br>
|
||||
functionalities. Always keep an open mind and grade them as honestly as <br> possible. The
|
||||
pedagogy is useful only and only if the peer-evaluation is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-21685">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or
|
||||
group.<br><br>- Double-check that the Git repository belongs to the student(s). Ensure that <br>
|
||||
the project is the one expected. Also, check that 'git clone' is used in an <br> empty
|
||||
folder.<br><br>- Check carefully that no malicious aliases was used to fool you and make you
|
||||
<br> evaluate something that is not the content of the official repository.<br><br>- To avoid
|
||||
any surprises and if applicable, review together any scripts used <br> to facilitate the grading
|
||||
(scripts for testing or automation).<br><br>- If you have not completed the assignment you are
|
||||
going to evaluate, you have <br> to read the entire subject prior to starting the evaluation
|
||||
process.<br><br>- Use the available flags to report an empty repository, a non-functioning <br>
|
||||
program, a Norm error, cheating, and so forth. <br> In these cases, the evaluation process ends
|
||||
and the final grade is 0, <br> or -42 in case of cheating. However, except for cheating, student
|
||||
are <br> strongly encouraged to review together the work that was turned in, in order <br> to
|
||||
identify any mistakes that shouldn't be repeated in the future.<br><br>- You should never have
|
||||
to edit any file except the configuration file if it <br> exists. If you want to edit a file,
|
||||
take the time to explicit the reasons <br> with the evaluated student and make sure both of you
|
||||
are okay with this.<br><br>- You must also verify the absence of memory leaks. Any memory
|
||||
allocated on <br> the heap must be properly freed before the end of execution. <br> You are
|
||||
allowed to use any of the different tools available on the computer, <br> such as leaks,
|
||||
valgrind, or e_fence. In case of memory leaks, tick the <br> appropriate flag.<br>
|
||||
</p>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-21685">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/"
|
||||
class="attachment-download">minilibx_opengl.tgz</a>
|
||||
<span class="icon-file"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/"
|
||||
class="attachment-download">minilibx_mms_20200219_beta.tgz</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5411828"
|
||||
action="https://projects.intra.42.fr/projects/born2beroot/project_sessions/5895/evaluations/3673/scales/24830/scale_teams/5411828"
|
||||
accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden"
|
||||
name="_method" value="patch"><input type="hidden" name="authenticity_token"
|
||||
value="6Ham6Zq7dWNKn0GqURyJ/9favA08IRL2ZZlqRe45A5XzMg8ElLpzR1Nr9YnMvzkgYRhOZfma8IhsTLDFrmK/QQ==">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-70025">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Mandatory part</h3>
|
||||
<h4 class="scale-question-name">Executable name</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Check that the project compiles well (without re-link) when you excute the `make` command and that the
|
||||
executable
|
||||
name is `miniRT`.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][0][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="236761"
|
||||
name="[scale_team][answers_attributes][0][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Configuration file</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Check that you can configure camera, light,
|
||||
the ambient light ratio and simple objects in the
|
||||
configuration file in accordance with the format described
|
||||
in the subject.
|
||||
Also check that the program returns an error and exits properly when
|
||||
the configuration file is misconfigured or if the filename doesn't end
|
||||
with the `.rt` extension.</p>
|
||||
<p>If not, the defence is over and the final grade will be 0.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][1][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="236762"
|
||||
name="[scale_team][answers_attributes][1][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][1][value]"
|
||||
id="radio_[scale_team][answers_attributes][1]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][1]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Technical elements of the display</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>In this section we'll evaluate Technical elements of the display.
|
||||
Run the program and execute the following tests.
|
||||
If at least one fails, no points will be awarded for this
|
||||
section. Move to the next one.</p>
|
||||
|
||||
<p>- With only one parameter a window must open when
|
||||
launching the program and stay open
|
||||
during the program's whole execution.</p>
|
||||
|
||||
<p>- Hide either part of the window or the whole window with another window
|
||||
or the screen's borders, minimize the minirt window to the dock/taskbar and maximize it back.
|
||||
In every case, the window's content must remain consistant (minirt should not quit and
|
||||
should still display properly its content).</p>
|
||||
|
||||
<p>- When you change the window resolution,
|
||||
the window's content must remain consistant.</p>
|
||||
|
||||
<p>- Pressing `ESC` or clicking the red cross of the window
|
||||
exits the program properly.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][2][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="236763"
|
||||
name="[scale_team][answers_attributes][2][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">The Basic Shapes</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>In this section we'll evaluate the 3 basic shapes. Run the program
|
||||
and execute the following 3 tests. If at least one fails, no points
|
||||
will be awarded for this section. Move to the next one.</p>
|
||||
|
||||
<p>- Place a sphere at the coordinates {0, 0, 0}. With the
|
||||
camera facing the sphere, display the rendered image. The
|
||||
sphere should be visible and displayed without glitching.</p>
|
||||
|
||||
<p>- Place a plane with a 'z' value of null. With the camera facing the plane,
|
||||
display the rendered image. The plane should be visible and
|
||||
displayed without glitching.</p>
|
||||
|
||||
<p>- Place a cylinder extending along the y axis. With the camera facing
|
||||
the cylinder, display the rendered image. The cylinder
|
||||
should be visible and displayed without glitching.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][4][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="236765"
|
||||
name="[scale_team][answers_attributes][4][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Translations and rotations</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>In this section we'll evaluate that rotation and translation<br>
|
||||
transformations can be applied on the scene's objects. Run the<br>
|
||||
program and execute the following tests. If at least one<br>
|
||||
fails, no points will be awarded for this section. Move to<br>
|
||||
the next one.<br></p>
|
||||
|
||||
<p>- Place two spheres at the coordinates {0, 0, 0},<br>
|
||||
the camera facing those spheres. Then put a translation<br>
|
||||
on one of the two spheres oriented in a direction parallel<br>
|
||||
to the camera's, of a greater distance than the sphere's<br>
|
||||
diameter and display the rendered image. Both spheres should<br>
|
||||
be visible and displayed without glitching.<br></p>
|
||||
|
||||
<p>- Place a cylinder extending along the y axis, the camera facing<br>
|
||||
the cylinder. Then put a 90° rotation (PI/2 radian) along<br>
|
||||
the z axis and display the rendered image. The cylinder<br>
|
||||
should be visible and displayed without glitching.<br>
|
||||
</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][3][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="236764"
|
||||
name="[scale_team][answers_attributes][3][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][3][value]"
|
||||
id="radio_[scale_team][answers_attributes][3]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][3]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Multi-objects</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>In this section we'll evaluate that it's possible to put
|
||||
several object in one scene. Run the program and execute
|
||||
the following tests. If at least one fails, no points
|
||||
will be awarded for this section. Move to the next one.</p>
|
||||
|
||||
<p>- Place several intersecting objects on the scene, such as
|
||||
for example a sphere and a cylinder, and display the rendered
|
||||
image. Both objects should be visible and displayed
|
||||
without glitching. (especially where both object intersect)</p>
|
||||
|
||||
<p>- Execute the same test, but ensure it's possible to
|
||||
place the same object several times, for example two
|
||||
cylinders, two spheres and a plane.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][5][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="236766"
|
||||
name="[scale_team][answers_attributes][5][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Camera's position and direction</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>In this section we'll evaluate that the camera conditions of the
|
||||
subject are respected. Run the program and execute the following tests.
|
||||
If at least one fails, no points will be awarded for this section. Move to
|
||||
the next one.</p>
|
||||
|
||||
<p>- Generate a random scene and place the camera extending
|
||||
along the x axis pointed towards the coordinates
|
||||
{0, 0, 0} and display the rendered image. The scene
|
||||
must be visible and displayed without glitching.</p>
|
||||
|
||||
<p>- Generate a random scene and place the camera extending
|
||||
along the y axis pointed towards the coordinates {0, 0, 0}
|
||||
and display the rendered image. The scene
|
||||
must be visible and displayed without glitching.</p>
|
||||
|
||||
<p>- Generate a random scene and place the camera extending
|
||||
along the z axis pointed towards the coordinates {0, 0, 0}
|
||||
and display the rendered image. The scene
|
||||
must be visible and displayed without glitching.</p>
|
||||
|
||||
<p>- Generate a random scene and place the camera at a random
|
||||
location which isn't on any axis or a diagonal, pointed
|
||||
towards the coordinates {0, 0, 0} and display
|
||||
the rendered image. The scene must be visible and
|
||||
displayed without glitching.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][6][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="236767"
|
||||
name="[scale_team][answers_attributes][6][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][6][value]"
|
||||
id="radio_[scale_team][answers_attributes][6]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][6]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Brightness 1/2</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>n this section we'll evaluate brightness on the scene's objects.
|
||||
Run the program and execute the following tests. If at least
|
||||
one fails, no points will be awarded for this section. Move to
|
||||
the next one.</p>
|
||||
|
||||
<p>- Place a sphere at the coordinates {0, 0, 0}, the camera
|
||||
facing the sphere, and put a spot left or right of the camera
|
||||
but positioned in such a way that the sphere will be lit sideways.</p>
|
||||
|
||||
<p>Display the rendered image. The sphere should be visible,
|
||||
illuminated and displayed without glitching.</p>
|
||||
|
||||
<p>- Place a sphere at some coordinates resulting from a translation,
|
||||
the camera facing the sphere, and place a spot left or right of
|
||||
the camera but positioned in such a way that the sphere will be
|
||||
lit sideways. Display the rendered image. The sphere should be
|
||||
visible, properly illuminated and displayed without glitch.
|
||||
Properly means that the halo of light should be computed
|
||||
after translation not before.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][7][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="236768"
|
||||
name="[scale_team][answers_attributes][7][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][7][value]"
|
||||
id="radio_[scale_team][answers_attributes][7]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][7]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Brightness 2/2</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>In this section we'll evaluate shadow management generated by
|
||||
the scene's objects. Run the program and execute the following
|
||||
tests. If at least one fails, no points will be awarded for
|
||||
this section. Move to the next one.</p>
|
||||
|
||||
<p>- Place a vertical spot, a sphere and a plane. The spot lighting
|
||||
the sphere's position to create a sphere shadow on the plane.
|
||||
Put the camera aside so we can see the sphere, the plane and
|
||||
the sphere's shadow on the plane. The shadow must be properly
|
||||
displayed without glitching.
|
||||
|
||||
<p>- Put a complex scene together with several objects like on
|
||||
illustration V.6 page 10 of the subject. Shadows must be
|
||||
properly displayed without glitching.</p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][8][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="236769"
|
||||
name="[scale_team][answers_attributes][8][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][8][value]"
|
||||
id="radio_[scale_team][answers_attributes][8]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][8]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-70028">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Bonus</h3>
|
||||
<p class="font-italic">We will look at your bonuses if and only if your mandatory part is excellent. This
|
||||
means that your must complete the
|
||||
mandatory part, beginning to end, and your error management must be flawless, even in cases of twisted
|
||||
or bad
|
||||
usage. So if the mandatory part didn't score all the point during this defence bonuses will be totally
|
||||
ignored.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Many bonuses?</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>One point per bonus.
|
||||
|
||||
<ul>
|
||||
<li>Specular reflection.</li>
|
||||
<li>Color disruption: checkerboard.</li>
|
||||
<li>Colored and multi-spot lights.</li>
|
||||
<li>One other 2nd degree object: Cone, Hyperboloid, Paraboloid..</li>
|
||||
<li>Handle bump map textures./li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden"
|
||||
name="[scale_team][answers_attributes][10][id]" type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="236771"
|
||||
name="[scale_team][answers_attributes][10][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="marked-title text-center">Rate it from 0 (failed) through 5 (excellent)</div>
|
||||
<input autocomplete="off" class="star-range" data-star-range="" max="5"
|
||||
name="[scale_team][answers_attributes][10][value]" step="1" type="range" value="0"
|
||||
style="position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0;">
|
||||
<hr>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24830">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
<script src="../../../js/js"></script>
|
||||
<script src="../../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/Minishell/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/Minishell/img/all.jpg
Executable file
After Width: | Height: | Size: 1.7 MiB |
1033
src/42_evals/Cursus/Minishell/index.html
Normal file
1
src/42_evals/Cursus/Minitalk/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
BIN
src/42_evals/Cursus/Minitalk/img/all.jpg
Executable file
After Width: | Height: | Size: 2.2 MiB |
425
src/42_evals/Cursus/Minitalk/index.html
Executable file
@ -0,0 +1,425 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
||||
<meta
|
||||
content="width=device-width,height=device-height,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0"
|
||||
name="viewport">
|
||||
<title>minitalk correction</title>
|
||||
<link rel="shortcut icon" href="../../assets/favicons/favicon_no-bg.ico" type="image/x-icon">
|
||||
<link href="../../css/styles.css" media="all" rel="stylesheet" />
|
||||
<link rel="manifest" href="../../manifest.json">
|
||||
<script src="../../js/script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('../../js/service-worker.js')
|
||||
.then(function(registration) {
|
||||
console.log('Service Worker registered successfully:', registration);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service Worker registration failed:', error);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<span class="menu">
|
||||
<a id="backToProject" href="../../">Go to homepage 🏠</a>
|
||||
</span>
|
||||
<div class="container-item scale-team-container">
|
||||
<div class="row mt-4">
|
||||
<div class="scale-section-infos col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold text-uppercase text-center mt-4 pt-4">
|
||||
<br><br>Scale for project
|
||||
|
||||
<a href="https://projects.intra.42.fr/projects/minitalk">minitalk</a>
|
||||
</h3>
|
||||
<h5 class="text-muted text-center">You should evaluate 1 student in this team</h5>
|
||||
|
||||
<hr>
|
||||
<div class="p-0 scale-introduction dancer from-down" id="introduction-24640">
|
||||
<h3 class="font-weight-bold mb-1">Introduction</h3>
|
||||
<p>
|
||||
Please comply with the following rules:<br><br>- Remain polite, courteous, respectful, and constructive
|
||||
throughout the <br> evaluation process. The well-being of the community depends on it.<br><br>- Identify
|
||||
with the student or group whose work is evaluated the possible <br> dysfunctions in their project. Take the
|
||||
time to discuss and debate the <br> problems that may have been identified.<br><br>- You must consider that
|
||||
there might be some differences in how your peers <br> might have understood the project's instructions and
|
||||
the scope of its <br> functionalities. Always keep an open mind and grade them as honestly as <br> possible.
|
||||
The pedagogy is useful only and only if the peer-evaluation is <br> done seriously.<br>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-0 scale-guidelines dancer from-down" id="guidelines-24640">
|
||||
<h3 class="font-weight-bold mb-1">Guidelines</h3>
|
||||
<p>
|
||||
- Only grade the work that was turned in the Git repository of the evaluated <br> student or group.<br><br>-
|
||||
Double-check that the Git repository belongs to the student(s). Ensure that <br> the project is the one
|
||||
expected. Also, check that "git clone" is used in an <br> empty folder.<br><br>- Check carefully that no
|
||||
malicious aliases were used to fool you and make you <br> evaluate something that is not the content of the
|
||||
official repository.<br><br>- To avoid any surprises and if applicable, review together any scripts used
|
||||
<br> to facilitate the grading (scripts for testing or automation).<br><br>- If you have not completed the
|
||||
assignment you are going to evaluate, you have <br> to read the entire subject before starting the
|
||||
evaluation process.<br><br>- Use the available flags to report an empty repository, a non-functioning <br>
|
||||
program, a Norm error, cheating, and so forth. <br> In these cases, the evaluation process ends and the
|
||||
final grade is 0, <br> or -42 in case of cheating. However, except for cheating, student are <br> strongly
|
||||
encouraged to review together the work that was turned in, <br> to identify any mistakes that shouldn't be
|
||||
repeated in the future.<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="dancer from-down" id="attachments-24640">
|
||||
<h3 class="font-weight-bold mb-1">Attachments</h3>
|
||||
<div class="project-attachments-list">
|
||||
</div>
|
||||
|
||||
<div class="project-attachments-list">
|
||||
<div class="project-attachment-item">
|
||||
<h4 class="attachment-name">
|
||||
<span class="icon-note-paper-2"></span>
|
||||
<a target="_blank" href="https://github.com/rphlr/42-Subjects/">subject.pdf</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<form class="simple_form form-horizontal" novalidate="novalidate" id="edit_scale_team_5437633"
|
||||
action="https://projects.intra.42.fr/projects/minitalk/project_sessions/5991/evaluations/3746/scales/24640/scale_teams/5437633"
|
||||
accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden"
|
||||
name="_method" value="patch"><input type="hidden" name="authenticity_token"
|
||||
value="VCTVtTOv/qUXZmU0GFgFmzHEazQqBggAmGwoHs3SkrIpSH0phYT8NKu+P4QQfB5cEgd6i6bY9eA0pwAU6WuSzw==">
|
||||
<div class="scale-section-answers col-sm-12 scale-div">
|
||||
<section class="scale-section-item dancer from-down" id="section-69334">
|
||||
<div class="section-header">
|
||||
<h3 class="font-weight-bold mb-1">Preliminary tests</h3>
|
||||
<p class="font-italic">If cheating is suspected, the evaluation stops here. Use the "Cheat" flag to report
|
||||
it. Take this decision calmly, wisely, and please, use this button with caution.</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Prerequisites</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>Defense can only happen if the evaluated student or group is present.
|
||||
This way everybody learns by sharing knowledge.</li>
|
||||
<li>If no work has been submitted (or wrong files, wrong directory, or
|
||||
wrong filenames), the grade is 0, and the evaluation process ends.</li>
|
||||
<li>No empty repository (= nothing in Git repository).</li>
|
||||
<li>No Norm error.</li>
|
||||
<li>Cheating (= -42).</li>
|
||||
<li>No compilation error. Also, the Makefile must not re-link.</li>
|
||||
</ul>
|
||||
|
||||
<p>If all of these requirements are passed, check Yes and go on. <br>
|
||||
Otherwise, use the appropriate flag at the end of the scale!</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][0][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234695"
|
||||
name="[scale_team][answers_attributes][0][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][0][value]"
|
||||
id="radio_[scale_team][answers_attributes][0]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][0]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69335">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">General instructions</h3>
|
||||
<p class="font-italic"></p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">General instructions</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>The Makefile compiles both executables -> 1 point</li>
|
||||
<li>The server name is 'server' and it prints his PID at launch -> 2 points</li>
|
||||
<li>The client name is 'client' and is run as follows:
|
||||
'./client PID_SERVER STRING_TO_PASS' -> 2 points</li>
|
||||
</ul>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][1][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234696"
|
||||
name="[scale_team][answers_attributes][1][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="marked-title text-center">Rate it from 0 (failed) through 5 (excellent)</div>
|
||||
<input autocomplete="off" class="star-range" data-star-range="" max="5"
|
||||
name="[scale_team][answers_attributes][1][value]" step="1" type="range" value="0"
|
||||
style="position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0;">
|
||||
<hr>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69336">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Mandatory part</h3>
|
||||
<p class="font-italic">This project is an introduction to signals. Check the code and ensure the
|
||||
signals are used only for the communication between the server and the
|
||||
client.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Message transmission</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>It's possible to pass on a message of any size. <br>
|
||||
Received messages must be displayed by the server, and must be obviously<br>
|
||||
corrects! <br>
|
||||
The server should never get stuck or print wrong characters.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][2][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234697"
|
||||
name="[scale_team][answers_attributes][2][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][2][value]"
|
||||
id="radio_[scale_team][answers_attributes][2]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][2]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Simple setup</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<ul>
|
||||
<li>The server can receive multiple strings without needing to be restarted.
|
||||
-> 1 point</li>
|
||||
<li>Only one global variable per program is allowed, or no global. Ask
|
||||
for explanations.
|
||||
-> 1 point</li>
|
||||
<li>The communication is done only using the signals SIGUSR1 and SIGUSR2.
|
||||
-> 3 points</li>
|
||||
</ul>
|
||||
|
||||
<p>Received messages must be displayed by the server, and must be obviously<br>
|
||||
corrects!</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][3][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234698"
|
||||
name="[scale_team][answers_attributes][3][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="marked-title text-center">Rate it from 0 (failed) through 5 (excellent)</div>
|
||||
<input autocomplete="off" class="star-range" data-star-range="" max="5"
|
||||
name="[scale_team][answers_attributes][3][value]" step="1" type="range" value="0"
|
||||
style="position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0;">
|
||||
<hr>
|
||||
</div>
|
||||
</section>
|
||||
<section class="scale-section-item dancer from-down" id="section-69337">
|
||||
<div class="section-header">
|
||||
<hr>
|
||||
<h3 class="font-weight-bold mb-1">Bonus part</h3>
|
||||
<p class="font-italic">Evaluate the bonus part if, and only if, the mandatory part has been
|
||||
entirely and perfectly done, and the error management handles unexpected
|
||||
or bad usage. In case all the mandatory points were not passed during the
|
||||
defense, bonus points must be ignored.
|
||||
</p>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Unicode characters support</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>Unicode characters are supported both by the client and the server.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][4][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234699"
|
||||
name="[scale_team][answers_attributes][4][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][4][value]"
|
||||
id="radio_[scale_team][answers_attributes][4]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][4]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="scale-question-name">Acknowledgement</h4>
|
||||
<p class="scale-section-guidelines">
|
||||
</p>
|
||||
<p>The server acknowledges every message received by sending back a signal <br>
|
||||
to the client.</p>
|
||||
|
||||
<p></p>
|
||||
<div class="scale-question-answers">
|
||||
<div class="form-group hidden scale_team_answer_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" name="[scale_team][answers_attributes][5][id]"
|
||||
type="hidden" id="scale_team_answer_id"></div>
|
||||
</div>
|
||||
<div class="form-group hidden scale_team_answer_question_id">
|
||||
<div class="col-sm-10"><input class="form-control hidden" value="234700"
|
||||
name="[scale_team][answers_attributes][5][question_id]" type="hidden"
|
||||
id="scale_team_answer_question_id"></div>
|
||||
</div>
|
||||
<div class="btn-group block">
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_true" type="radio" value="1">
|
||||
<label class="btn btn-success checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_true">
|
||||
<span class="icon-check"></span>
|
||||
Yes
|
||||
</label>
|
||||
<input autocomplete="off" class="checkbox-input" name="[scale_team][answers_attributes][5][value]"
|
||||
id="radio_[scale_team][answers_attributes][5]_false" type="radio" value="0" checked="checked">
|
||||
<label class="btn btn-danger checkbox-label light-bg"
|
||||
for="radio_[scale_team][answers_attributes][5]_false">
|
||||
<span class="icon-times"></span>
|
||||
No
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div pb-4">
|
||||
<div class="dancer from-down" id="ratings-24640">
|
||||
<h3 class="font-weight-bold mb-1">Ratings</h3>
|
||||
<p class="marked-title">Don’t forget to check the flag corresponding to the defense</p>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-default btn-success label_flag_ok on-active positive" for="scale_team_flag_id_1"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-check-4"></span>
|
||||
Ok
|
||||
</label>
|
||||
<label class="btn btn-default btn-success label_flag_outstanding_project on-active positive"
|
||||
for="scale_team_flag_id_9" name="scale_team[flag_id]">
|
||||
<span class="iconf-star-1"></span>
|
||||
Outstanding project
|
||||
</label>
|
||||
</div>
|
||||
<div class="btn-group block flags-buttons" data-radio-item="flag-small">
|
||||
<label class="btn btn-danger btn-default label_flag_empty_work negative on-active"
|
||||
for="scale_team_flag_id_2" name="scale_team[flag_id]">
|
||||
<span class="iconf-iconf-folder-1"></span>
|
||||
Empty work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_incomplete_work negative on-active"
|
||||
for="scale_team_flag_id_3" name="scale_team[flag_id]">
|
||||
<span class="iconf-file-attention"></span>
|
||||
Incomplete work
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_invalid_compilation negative on-active"
|
||||
for="scale_team_flag_id_5" name="scale_team[flag_id]">
|
||||
<span class="iconf-skull-2"></span>
|
||||
Invalid compilation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_norme negative on-active" for="scale_team_flag_id_6"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-receipt-1"></span>
|
||||
Norme
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_cheat negative on-active" for="scale_team_flag_id_7"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-layers"></span>
|
||||
Cheat
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_crash negative on-active" for="scale_team_flag_id_8"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-bomb"></span>
|
||||
Crash
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_concerning_situation negative on-active"
|
||||
for="scale_team_flag_id_11" name="scale_team[flag_id]">
|
||||
<span class="iconf-alert-2"></span>
|
||||
Concerning situation
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_leaks negative on-active" for="scale_team_flag_id_12"
|
||||
name="scale_team[flag_id]">
|
||||
<span class="iconf-blood"></span>
|
||||
Leaks
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_forbidden_function negative on-active"
|
||||
for="scale_team_flag_id_13" name="scale_team[flag_id]">
|
||||
<span class="iconf-delete-2"></span>
|
||||
Forbidden function
|
||||
</label>
|
||||
<label class="btn btn-danger btn-default label_flag_can’t_support_/_explain_code negative on-active"
|
||||
for="scale_team_flag_id_14" name="scale_team[flag_id]">
|
||||
<span class="iconf-bubble-attention-4"></span>
|
||||
Can’t support / explain code
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="col-sm-12 scale-div">
|
||||
<h3 class="font-weight-bold mb-1">Conclusion</h3>
|
||||
<br />
|
||||
</div>
|
||||
<div class="scale-final-submit"><a href="https://github.com/rphlr/42-Evals">
|
||||
<input class="btn btn-primary btn-block font-weight-bold" type="button"
|
||||
value="Give this repository a star. ⭐" /></a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script async="" await="" src="../../js/js"></script>
|
||||
<script src="../../js/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
1
src/42_evals/Cursus/NetPractice/README.md
Executable file
@ -0,0 +1 @@
|
||||

|
5
src/42_evals/Cursus/NetPractice/drill/License
Normal file
@ -0,0 +1,5 @@
|
||||
|
||||
NetPractice projet - 42
|
||||
|
||||
This content is provided to you for educational purpose, as part of your curriculum in 42.
|
||||
It is not authorized to duplicate or modify or use it in any other context (personal, commercial, public, open source, ...).
|
111
src/42_evals/Cursus/NetPractice/drill/css/netpractice.css
Normal file
@ -0,0 +1,111 @@
|
||||
|
||||
/* net Practice CSS */
|
||||
/* Warning : some parameters are set / modified by script */
|
||||
|
||||
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
padding:0px;
|
||||
margin:0px;
|
||||
background-image:url("../img/site42-bg.gif");
|
||||
}
|
||||
|
||||
|
||||
div {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* message box in index.html */
|
||||
|
||||
.intro_div {
|
||||
background-color: #00AAAA;
|
||||
border: 5px solid #00AAAA;
|
||||
border-radius: 5px;
|
||||
padding:10px;
|
||||
width:50%;
|
||||
margin:auto;
|
||||
margin-top: 25%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
/* goals div */
|
||||
.goals_div {
|
||||
background-color: #00AAAA;
|
||||
width:100%;
|
||||
border:5px solid #00AAAA;
|
||||
border-radius:5px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.goals_div h2 {
|
||||
margin:5px;
|
||||
font-style:italic;
|
||||
}
|
||||
|
||||
|
||||
/* SVG layer */
|
||||
.svg_layer {
|
||||
z-index:-4;
|
||||
position:absolute;
|
||||
top:0px;
|
||||
left:0px;
|
||||
}
|
||||
|
||||
|
||||
/* logs window */
|
||||
.logs_div {
|
||||
background-color: #FFAAAA;
|
||||
border:3px solid #FFAAAA;
|
||||
border-radius:3px;
|
||||
position:fixed;
|
||||
bottom:0px;
|
||||
right:0px;
|
||||
width:250px;
|
||||
height:200px;
|
||||
font-size:70%;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
|
||||
/* host div (image) */
|
||||
.host_div {
|
||||
background-size:contain;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
/* will be updated by script : position, top, left, width, height, background-image */
|
||||
}
|
||||
|
||||
|
||||
/* host info (name, route) div */
|
||||
.host_info_div {
|
||||
min-width: 170px;
|
||||
min-height: 50px;
|
||||
background-color:rgba(150, 150, 255, 0.9);
|
||||
border: 3px solid rgba(150, 150, 255, 0.9);
|
||||
border-radius: 3px;
|
||||
/* will be updated by script : position, top, left */
|
||||
}
|
||||
|
||||
.host_info_div table {
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
|
||||
/* interface div */
|
||||
.itf_div {
|
||||
min-width: 176px;
|
||||
height: 70px;
|
||||
background-color: rgba(150, 150, 150, 0.9);
|
||||
border: 3px solid rgba(150, 150, 150, 0.9);
|
||||
border-radius: 3px;
|
||||
/* will be updated by script : position, top, left */
|
||||
}
|
||||
|
||||
/* intro footnote */
|
||||
.footnote {
|
||||
font-size:70%;
|
||||
font-style:italic;
|
||||
}
|
15
src/42_evals/Cursus/NetPractice/drill/end.html
Normal file
@ -0,0 +1,15 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="css/netpractice.css">
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class='intro_div'>
|
||||
Completed !<br />
|
||||
Thanks for learning basics of networking with us :) <br />
|
||||
There are many other network-related topics that you can explore on your own. Stay curious !
|
||||
<input type=button value="Back to start" onclick='window.location="index.html";'>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
BIN
src/42_evals/Cursus/NetPractice/drill/img/host.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
src/42_evals/Cursus/NetPractice/drill/img/internet.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
src/42_evals/Cursus/NetPractice/drill/img/router.png
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
src/42_evals/Cursus/NetPractice/drill/img/site42-bg.gif
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
src/42_evals/Cursus/NetPractice/drill/img/switch.png
Normal file
After Width: | Height: | Size: 110 KiB |
19
src/42_evals/Cursus/NetPractice/drill/index.html
Normal file
@ -0,0 +1,19 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="css/netpractice.css">
|
||||
<script src="js/intro.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class='intro_div'>
|
||||
Welcome to 42's NetPractice !<br />
|
||||
Please enter your intranet login (the moulinette will use it to know your own configuration) : <br />
|
||||
<input id='input_login' type=text size=8><br />
|
||||
Or leave empty for a defense : 3 random level from 6 to 10 will be offered to be solved in 15 minutes.<br />
|
||||
<span class='footnote'>Note: the architecture and addresses used in the following levels are fictionnous and are not connected to real configurations.</span><br />
|
||||
<input type=button value="Start !" onclick='save_login();'>
|
||||
</div>
|
||||
<script>document.getElementById('input_login').value = load_login();</script>
|
||||
</body>
|
||||
</html>
|
25
src/42_evals/Cursus/NetPractice/drill/js/intro.js
Normal file
@ -0,0 +1,25 @@
|
||||
|
||||
|
||||
|
||||
function save_login()
|
||||
{
|
||||
var login = document.getElementById('input_login').value;
|
||||
localStorage.setItem("g_my_login", login);
|
||||
if (login == '')
|
||||
{
|
||||
var lvl = Math.round(6 + 4*Math.random());
|
||||
localStorage.setItem("g_my_eval", JSON.stringify([lvl]));
|
||||
window.location = "level"+lvl+".html";
|
||||
}
|
||||
else
|
||||
window.location = 'level1.html';
|
||||
}
|
||||
|
||||
|
||||
function load_login()
|
||||
{
|
||||
var login;
|
||||
if (!(login = localStorage.getItem("g_my_login")))
|
||||
login = ''; // will means full random during sim.
|
||||
return (login);
|
||||
}
|
31
src/42_evals/Cursus/NetPractice/drill/js/level1.js
Normal file
@ -0,0 +1,31 @@
|
||||
|
||||
var level = 1;
|
||||
|
||||
var hosts = [
|
||||
{'id':'A', 'type':'client', 'name':'my PC', 'geometry':'200x220+250+500', 'img':'host.png', 'labelpos':'0,200'},
|
||||
{'id':'B', 'type':'client', 'name':'my little brother\'s computer', 'geometry':'200x220+250+100', 'img':'host.png', 'labelpos':'180,30'},
|
||||
{'id':'C', 'type':'client', 'name':'my Mac', 'geometry':'200x220+700+500', 'img':'host.png', 'labelpos':'0,200'},
|
||||
{'id':'D', 'type':'client', 'name':'my little sister\'s computer', 'geometry':'200x220+700+100', 'img':'host.png', 'labelpos':'180,30'}
|
||||
];
|
||||
|
||||
// routes are processed in order, first match only is used => default must be last - KEEP routes before interfaces for random reference
|
||||
var routes = [
|
||||
];
|
||||
|
||||
var ifs = [
|
||||
{'if':'A1', 'hid':'A', 'ip':'104.93.23.[260-399]a', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'false', 'type':'std', 'pos':'-90,-50'},
|
||||
{'if':'B1', 'hid':'B', 'ip':'104.[94-99]b.23.12', 'mask':'255.255.255.0', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'110,200'},
|
||||
{'if':'C1', 'hid':'C', 'ip':'211.191.[1-254]c.75', 'mask':'255.255.0.0', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'-90,-50'},
|
||||
{'if':'D1', 'hid':'D', 'ip':'211.190.[260-399]d.42', 'mask':'255.255.0.0', 'ip_edit':'true', 'mask_edit':'false', 'type':'std', 'pos':'110,200'}
|
||||
];
|
||||
|
||||
|
||||
var links = [
|
||||
{'if1':'A1', 'if2':'B1'},
|
||||
{'if1':'C1', 'if2':'D1'}
|
||||
];
|
||||
|
||||
var goals = [
|
||||
{'id':'1', 'type':'reach', 'id1':'A', 'id2':'B'},
|
||||
{'id':'2', 'type':'reach', 'id1':'C', 'id2':'D'}
|
||||
];
|
63
src/42_evals/Cursus/NetPractice/drill/js/level10.js
Normal file
@ -0,0 +1,63 @@
|
||||
|
||||
var level = 10;
|
||||
|
||||
var hosts = [
|
||||
{'id':'H1', 'type':'client', 'name':'Host one', 'geometry':'200x220+900+800', 'img':'host.png', 'labelpos':'0,200'},
|
||||
{'id':'H2', 'type':'client', 'name':'Host two', 'geometry':'200x220+800+200', 'img':'host.png', 'labelpos':'180,30'},
|
||||
{'id':'H3', 'type':'client', 'name':'Host three', 'geometry':'200x220+600+1200', 'img':'host.png', 'labelpos':'180,100'},
|
||||
{'id':'H4', 'type':'client', 'name':'Host four', 'geometry':'200x220+100+1200', 'img':'host.png', 'labelpos':'180,100'},
|
||||
{'id':'R1', 'type':'router', 'name':'Router one', 'geometry':'200x200+400+500', 'img':'router.png', 'labelpos':'-150,150'},
|
||||
{'id':'R2', 'type':'router', 'name':'Router two', 'geometry':'200x200+400+900', 'img':'router.png', 'labelpos':'-30,170'},
|
||||
{'id':'I', 'type':'internet', 'name':'Internet', 'geometry':'200x240+100+200', 'img':'internet.png', 'labelpos':'-50,200'},
|
||||
{'id':'S1', 'type':'switch', 'name':'Switch one', 'geometry':'150x150+800+500', 'img':'switch.png', 'labelpos':'80,110'}
|
||||
];
|
||||
|
||||
// routes are processed in order, first match only is used => default must be last - KEEP routes before interfaces for random reference
|
||||
var routes = [
|
||||
{'hid':'H1', 'rid':'H1r1', 'route':'0.0.0.0/0', 'gate':'[128-170]a.[1-254]b.[1-254]c.1', 'route_edit':'false', 'gate_edit':'false'},
|
||||
{'hid':'H2', 'rid':'H2r1', 'route':'default', 'gate':'[a].[b].[c].1', 'route_edit':'false', 'gate_edit':'false'},
|
||||
{'hid':'H3', 'rid':'H3r1', 'route':'0.0.0.0/0', 'gate':'10.0.0.254', 'route_edit':'false', 'gate_edit':'true'},
|
||||
{'hid':'H4', 'rid':'H4r1', 'route':'default', 'gate':'[a].[b].[c].129', 'route_edit':'false', 'gate_edit':'false'},
|
||||
{'hid':'R1', 'rid':'R1r1', 'route':'10.0.0.0/8', 'gate':'[a].[b].[c].253', 'route_edit':'true', 'gate_edit':'false'},
|
||||
{'hid':'R1', 'rid':'R1r2', 'route':'[a].[b].[c].128/26', 'gate':'[a].[b].[c].253', 'route_edit':'false', 'gate_edit':'false'},
|
||||
{'hid':'R1', 'rid':'R1r3', 'route':'0.0.0.0/0', 'gate':'163.172.250.1', 'route_edit':'false', 'gate_edit':'false'},
|
||||
{'hid':'R2', 'rid':'R2r1', 'route':'0.0.0.0/0', 'gate':'[a].[b].[c].254', 'route_edit':'false', 'gate_edit':'false'},
|
||||
{'hid':'I', 'rid':'Ir1', 'route':'[a].[b].[c].0/31', 'gate':'163.172.250.12', 'route_edit':'true', 'gate_edit':'false'}
|
||||
];
|
||||
|
||||
|
||||
var ifs = [
|
||||
{'if':'H11', 'hid':'H1', 'ip':'[a].[b].[c].2', 'mask':'255.255.255.0', 'ip_edit':'false', 'mask_edit':'true', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'H21', 'hid':'H2', 'ip':'192.168.42.42', 'mask':'255.255.0.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'100,200'},
|
||||
{'if':'H31', 'hid':'H3', 'ip':'192.168.0.1', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'20,-50'},
|
||||
{'if':'H41', 'hid':'H4', 'ip':'[a].[b].[c].131', 'mask':'255.255.255.192', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'R11', 'hid':'R1', 'ip':'[a].[b].[c].1', 'mask':'255.255.255.128', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'190,10'},
|
||||
{'if':'R12', 'hid':'R1', 'ip':'163.172.250.12', 'mask':'255.255.255.240', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'-150,0'},
|
||||
{'if':'R13', 'hid':'R1', 'ip':'[a].[b].[c].254', 'mask':'255.255.255.0', 'ip_edit':'false', 'mask_edit':'true', 'type':'std', 'pos':'130,140'},
|
||||
{'if':'R21', 'hid':'R2', 'ip':'[a].[b].[c].253', 'mask':'255.255.255.252', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'R22', 'hid':'R2', 'ip':'10.0.0.254', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'190,90'},
|
||||
{'if':'R23', 'hid':'R2', 'ip':'8.8.8.8', 'mask':'/18', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'-150,90'},
|
||||
{'if':'S11', 'hid':'S1', 'ip':'0.0.0.0', 'mask':'/32', 'ip_edit':'false', 'mask_edit':'false', 'pos':'0,0', 'type':'hidden'},
|
||||
{'if':'I1', 'hid':'I', 'ip':'163.172.250.1', 'mask':'/28', 'ip_edit':'false', 'mask_edit':'false', 'pos':'0,0', 'type':'hidden'}
|
||||
];
|
||||
|
||||
|
||||
var links = [
|
||||
{'if1':'I1', 'if2':'R12'},
|
||||
{'if1':'R11', 'if2':'S11'},
|
||||
{'if1':'S11', 'if2':'H11'},
|
||||
{'if1':'S11', 'if2':'H21'},
|
||||
{'if1':'R13', 'if2':'R21'},
|
||||
{'if1':'R22', 'if2':'H31'},
|
||||
{'if1':'R23', 'if2':'H41'}
|
||||
];
|
||||
|
||||
var goals = [
|
||||
{'id':'1', 'type':'reach', 'id1':'H1', 'id2':'H2'},
|
||||
{'id':'2', 'type':'reach', 'id1':'H3', 'id2':'H4'},
|
||||
{'id':'3', 'type':'reach', 'id1':'H1', 'id2':'I'},
|
||||
{'id':'4', 'type':'reach', 'id1':'H1', 'id2':'H4'},
|
||||
{'id':'5', 'type':'reach', 'id1':'H2', 'id2':'H3'},
|
||||
{'id':'6', 'type':'reach', 'id1':'H3', 'id2':'I'},
|
||||
{'id':'7', 'type':'reach', 'id1':'H4', 'id2':'I'}
|
||||
];
|
31
src/42_evals/Cursus/NetPractice/drill/js/level2.js
Normal file
@ -0,0 +1,31 @@
|
||||
|
||||
var level = 2;
|
||||
|
||||
var hosts = [
|
||||
{'id':'A', 'type':'client', 'name':'Computer A', 'geometry':'200x220+200+500', 'img':'host.png', 'labelpos':'0,200'},
|
||||
{'id':'B', 'type':'client', 'name':'Computer B', 'geometry':'200x220+200+100', 'img':'host.png', 'labelpos':'180,30'},
|
||||
{'id':'C', 'type':'client', 'name':'Computer C', 'geometry':'200x220+600+500', 'img':'host.png', 'labelpos':'0,200'},
|
||||
{'id':'D', 'type':'client', 'name':'Computer D', 'geometry':'200x220+600+100', 'img':'host.png', 'labelpos':'180,30'}
|
||||
];
|
||||
|
||||
// routes are processed in order, first match only is used => default must be last - KEEP routes before interfaces for random reference
|
||||
var routes = [
|
||||
];
|
||||
|
||||
var ifs = [
|
||||
{'if':'A1', 'hid':'A', 'ip':'192.168.[14-150]a.1', 'mask':'255.255.255.224', 'ip_edit':'true', 'mask_edit':'false', 'type':'std', 'pos':'-90,-50'},
|
||||
{'if':'B1', 'hid':'B', 'ip':'192.168.[a].222', 'mask':'255.255.255.32', 'ip_edit':'false', 'mask_edit':'true', 'type':'std', 'pos':'110,200'},
|
||||
{'if':'C1', 'hid':'C', 'ip':'127.0.0.1', 'mask':'255.255.255.252', 'ip_edit':'true', 'mask_edit':'false', 'type':'std', 'pos':'-90,-50'},
|
||||
{'if':'D1', 'hid':'D', 'ip':'127.0.0.4', 'mask':'/30', 'ip_edit':'true', 'mask_edit':'false', 'type':'std', 'pos':'110,200'}
|
||||
];
|
||||
|
||||
|
||||
var links = [
|
||||
{'if1':'A1', 'if2':'B1'},
|
||||
{'if1':'C1', 'if2':'D1'}
|
||||
];
|
||||
|
||||
var goals = [
|
||||
{'id':'1', 'type':'reach', 'id1':'B', 'id2':'A'},
|
||||
{'id':'1', 'type':'reach', 'id1':'D', 'id2':'C'}
|
||||
];
|
34
src/42_evals/Cursus/NetPractice/drill/js/level3.js
Normal file
@ -0,0 +1,34 @@
|
||||
|
||||
var level = 3;
|
||||
|
||||
var hosts = [
|
||||
{'id':'A', 'type':'client', 'name':'Host A', 'geometry':'200x220+700+800', 'img':'host.png', 'labelpos':'0,200'},
|
||||
{'id':'B', 'type':'client', 'name':'Host B', 'geometry':'200x220+600+200', 'img':'host.png', 'labelpos':'180,30'},
|
||||
{'id':'C', 'type':'client', 'name':'Host C', 'geometry':'200x200+200+500', 'img':'host.png', 'labelpos':'-150,150'},
|
||||
{'id':'S', 'type':'switch', 'name':'Switch-1', 'geometry':'150x150+600+500', 'img':'switch.png', 'labelpos':'80,110'}
|
||||
];
|
||||
|
||||
// routes are processed in order, first match only is used => default must be last - KEEP routes before interfaces for random reference
|
||||
var routes = [
|
||||
];
|
||||
|
||||
|
||||
var ifs = [
|
||||
{'if':'A1', 'hid':'A', 'ip':'104.198.[1-254]a.125', 'mask':'255.255.255.0', 'ip_edit':'false', 'mask_edit':'true', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'B1', 'hid':'B', 'ip':'127.168.42.42', 'mask':'255.255.0.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'100,200'},
|
||||
{'if':'C1', 'hid':'C', 'ip':'104.198.[a].[260-299]b', 'mask':'255.255.255.128', 'ip_edit':'true', 'mask_edit':'false', 'type':'std', 'pos':'190,10'},
|
||||
{'if':'S1', 'hid':'S', 'ip':'0.0.0.0', 'mask':'/32', 'ip_edit':'false', 'mask_edit':'false', 'pos':'0,0', 'type':'hidden'}
|
||||
];
|
||||
|
||||
|
||||
var links = [
|
||||
{'if1':'C1', 'if2':'S1'},
|
||||
{'if1':'S1', 'if2':'A1'},
|
||||
{'if1':'S1', 'if2':'B1'}
|
||||
];
|
||||
|
||||
var goals = [
|
||||
{'id':'1', 'type':'reach', 'id1':'A', 'id2':'B'},
|
||||
{'id':'2', 'type':'reach', 'id1':'A', 'id2':'C'},
|
||||
{'id':'3', 'type':'reach', 'id1':'B', 'id2':'C'}
|
||||
];
|
36
src/42_evals/Cursus/NetPractice/drill/js/level4.js
Normal file
@ -0,0 +1,36 @@
|
||||
|
||||
var level = 4;
|
||||
|
||||
var hosts = [
|
||||
{'id':'A', 'type':'client', 'name':'A nice host', 'geometry':'200x220+800+800', 'img':'host.png', 'labelpos':'0,200'},
|
||||
{'id':'B', 'type':'client', 'name':'Another host', 'geometry':'200x220+700+200', 'img':'host.png', 'labelpos':'180,30'},
|
||||
{'id':'R', 'type':'router', 'name':'My_Gate', 'geometry':'200x200+300+500', 'img':'router.png', 'labelpos':'-160,120'},
|
||||
{'id':'S', 'type':'switch', 'name':'Switch-1', 'geometry':'150x150+700+500', 'img':'switch.png', 'labelpos':'80,110'}
|
||||
];
|
||||
|
||||
// routes are processed in order, first match only is used => default must be last - KEEP routes before interfaces for random reference
|
||||
var routes = [
|
||||
];
|
||||
|
||||
|
||||
var ifs = [
|
||||
{'if':'A1', 'hid':'A', 'ip':'[60-125]a.[1-254]b.[110-119]c.132', 'mask':'255.255.255.240', 'ip_edit':'false', 'mask_edit':'true', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'B1', 'hid':'B', 'ip':'[a].[b].[120-129]d.193', 'mask':'255.255.0.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'100,200'},
|
||||
{'if':'R1', 'hid':'R', 'ip':'[a].[b].[c].91', 'mask':'/23', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'190,10'},
|
||||
{'if':'R2', 'hid':'R', 'ip':'[a].[b].[c].1', 'mask':'255.255.255.128', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'0,190'},
|
||||
{'if':'R3', 'hid':'R', 'ip':'[a].[b].[c].244', 'mask':'255.255.255.192', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'-170,0'},
|
||||
{'if':'S1', 'hid':'S', 'ip':'0.0.0.0', 'mask':'/32', 'ip_edit':'false', 'mask_edit':'false', 'pos':'0,0', 'type':'hidden'}
|
||||
];
|
||||
|
||||
|
||||
var links = [
|
||||
{'if1':'R1', 'if2':'S1'},
|
||||
{'if1':'S1', 'if2':'A1'},
|
||||
{'if1':'S1', 'if2':'B1'}
|
||||
];
|
||||
|
||||
var goals = [
|
||||
{'id':'1', 'type':'reach', 'id1':'A', 'id2':'B'},
|
||||
{'id':'2', 'type':'reach', 'id1':'A', 'id2':'R'},
|
||||
{'id':'3', 'type':'reach', 'id1':'B', 'id2':'R'}
|
||||
];
|
34
src/42_evals/Cursus/NetPractice/drill/js/level5.js
Normal file
@ -0,0 +1,34 @@
|
||||
|
||||
var level = 5;
|
||||
|
||||
var hosts = [
|
||||
{'id':'A', 'type':'client', 'name':'Machine A', 'geometry':'200x220+900+800', 'img':'host.png', 'labelpos':'0,200'},
|
||||
{'id':'B', 'type':'client', 'name':'Machine B', 'geometry':'200x220+800+200', 'img':'host.png', 'labelpos':'180,30'},
|
||||
{'id':'R', 'type':'router', 'name':'The Mighty Router', 'geometry':'200x200+400+500', 'img':'router.png', 'labelpos':'-200,50'}
|
||||
];
|
||||
|
||||
// routes are processed in order, first match only is used => default must be last - KEEP routes before interfaces for random reference
|
||||
var routes = [
|
||||
{'hid':'A', 'rid':'Ar1', 'route':'10..0.0.0/8', 'gate':'192.168.0.254', 'route_edit':'true', 'gate_edit':'true'},
|
||||
{'hid':'B', 'rid':'Br1', 'route':'default', 'gate':'192.168.0.254', 'route_edit':'false', 'gate_edit':'true'}
|
||||
];
|
||||
|
||||
|
||||
var ifs = [
|
||||
{'if':'A1', 'hid':'A', 'ip':'104.198.14.2', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'B1', 'hid':'B', 'ip':'192.168.42.42', 'mask':'/[27-30]g', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'100,200'},
|
||||
{'if':'R1', 'hid':'R', 'ip':'[15-99]a.[1-254]c.[1-254]e.126', 'mask':'255.255.255.128', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'0,170'},
|
||||
{'if':'R2', 'hid':'R', 'ip':'[130-170]b.[1-254]d.[1-254]f.254', 'mask':'255.255.192.0', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'190,0'}
|
||||
];
|
||||
|
||||
|
||||
var links = [
|
||||
{'if1':'R1', 'if2':'A1'},
|
||||
{'if1':'R2', 'if2':'B1'}
|
||||
];
|
||||
|
||||
var goals = [
|
||||
{'id':'1', 'type':'reach', 'id1':'A', 'id2':'R'},
|
||||
{'id':'2', 'type':'reach', 'id1':'B', 'id2':'R'},
|
||||
{'id':'3', 'type':'reach', 'id1':'A', 'id2':'B'}
|
||||
];
|
37
src/42_evals/Cursus/NetPractice/drill/js/level6.js
Normal file
@ -0,0 +1,37 @@
|
||||
|
||||
var level = 6;
|
||||
|
||||
var hosts = [
|
||||
{'id':'A', 'type':'client', 'name':'webserv.non-real.com', 'geometry':'200x220+900+800', 'img':'host.png', 'labelpos':'0,200'},
|
||||
{'id':'R', 'type':'router', 'name':'gate.non-real.com', 'geometry':'200x200+400+500', 'img':'router.png', 'labelpos':'-150,150'},
|
||||
{'id':'I', 'type':'internet', 'name':'Internet', 'geometry':'200x240+100+200', 'img':'internet.png', 'labelpos':'-50,200'},
|
||||
{'id':'S', 'type':'switch', 'name':'sw-1.non-real.com', 'geometry':'150x150+800+500', 'img':'switch.png', 'labelpos':'80,110'}
|
||||
];
|
||||
|
||||
// routes are processed in order, first match only is used => default must be last - KEEP routes before interfaces for random reference
|
||||
var routes = [
|
||||
{'hid':'A', 'rid':'Ar1', 'route':'0.0.0.0/0', 'gate':'[20-120]a.[1-255]b.[1-255]c.1', 'route_edit':'true', 'gate_edit':'true'},
|
||||
{'hid':'R', 'rid':'Rr1', 'route':'10.0.0.0/8', 'gate':'163.172.250.1', 'route_edit':'true', 'gate_edit':'false'},
|
||||
{'hid':'I', 'rid':'Ir1', 'route':'[a].[b].[c].0/31', 'gate':'163.172.250.12', 'route_edit':'true', 'gate_edit':'false'}
|
||||
];
|
||||
|
||||
|
||||
var ifs = [
|
||||
{'if':'A1', 'hid':'A', 'ip':'[a].[b].[c].227', 'mask':'255.255.255.0', 'ip_edit':'false', 'mask_edit':'true', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'R1', 'hid':'R', 'ip':'[a].[b].[c].254', 'mask':'255.255.255.128', 'ip_edit':'true', 'mask_edit':'false', 'type':'std', 'pos':'190,10'},
|
||||
{'if':'R2', 'hid':'R', 'ip':'163.172.250.12', 'mask':'255.255.255.240', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'-150,0'},
|
||||
{'if':'S1', 'hid':'S', 'ip':'0.0.0.0', 'mask':'/32', 'ip_edit':'false', 'mask_edit':'false', 'pos':'0,0', 'type':'hidden'},
|
||||
{'if':'Somewhere on the Net', 'hid':'I', 'ip':'8.8.8.8', 'mask':'/16', 'ip_edit':'false', 'mask_edit':'false', 'pos':'0,-50', 'type':'std'},
|
||||
{'if':'I1', 'hid':'I', 'ip':'163.172.250.1', 'mask':'/28', 'ip_edit':'false', 'mask_edit':'false', 'pos':'0,0', 'type':'hidden'}
|
||||
];
|
||||
|
||||
|
||||
var links = [
|
||||
{'if1':'I1', 'if2':'R2'},
|
||||
{'if1':'R1', 'if2':'S1'},
|
||||
{'if1':'S1', 'if2':'A1'}
|
||||
];
|
||||
|
||||
var goals = [
|
||||
{'id':'1', 'type':'reach_if', 'if_id1':'A1', 'if_id2':'Somewhere on the Net'}
|
||||
];
|
38
src/42_evals/Cursus/NetPractice/drill/js/level7.js
Normal file
@ -0,0 +1,38 @@
|
||||
|
||||
var level = 7;
|
||||
|
||||
var hosts = [
|
||||
{'id':'A', 'type':'client', 'name':'dev.non-real.net', 'geometry':'200x220+900+200', 'img':'host.png', 'labelpos':'0,200'},
|
||||
{'id':'C', 'type':'client', 'name':'accounting.non-real.net', 'geometry':'200x220+900+700', 'img':'host.png', 'labelpos':'180,100'},
|
||||
{'id':'R1', 'type':'router', 'name':'tech.non-real.net', 'geometry':'200x200+400+200', 'img':'router.png', 'labelpos':'-280,50'},
|
||||
{'id':'R2', 'type':'router', 'name':'adm.non-real.net', 'geometry':'200x200+400+700', 'img':'router.png', 'labelpos':'-30,170'}
|
||||
];
|
||||
|
||||
// routes are processed in order, first match only is used => default must be last - KEEP routes before interfaces for random reference
|
||||
var routes = [
|
||||
{'hid':'A', 'rid':'Ar1', 'route':'0.0.0.0/0', 'gate':'0.0.0.0', 'route_edit':'true', 'gate_edit':'true'},
|
||||
{'hid':'C', 'rid':'Cr1', 'route':'0.0.0.0/0', 'gate':'0.0.0.0', 'route_edit':'true', 'gate_edit':'true'},
|
||||
{'hid':'R1', 'rid':'R1r1', 'route':'0.0.0.0/0', 'gate':'0.0.0.0', 'route_edit':'true', 'gate_edit':'true'},
|
||||
{'hid':'R2', 'rid':'R2r1', 'route':'0.0.0.0/0', 'gate':'0.0.0.0', 'route_edit':'true', 'gate_edit':'true'}
|
||||
];
|
||||
|
||||
|
||||
var ifs = [
|
||||
{'if':'A1', 'hid':'A', 'ip':'[90-120]a.198.14.2', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'C1', 'hid':'C', 'ip':'[a].198.14.1', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'20,-50'},
|
||||
{'if':'R11', 'hid':'R1', 'ip':'[a].198.14.1', 'mask':'255.255.255.0', 'ip_edit':'false', 'mask_edit':'true', 'type':'std', 'pos':'190,10'},
|
||||
{'if':'R12', 'hid':'R1', 'ip':'[a].198.14.254', 'mask':'255.255.255.0', 'ip_edit':'false', 'mask_edit':'true', 'type':'std', 'pos':'80,160'},
|
||||
{'if':'R21', 'hid':'R2', 'ip':'[a].198.14.149', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'R22', 'hid':'R2', 'ip':'[a].198.14.252', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'190,90'}
|
||||
];
|
||||
|
||||
|
||||
var links = [
|
||||
{'if1':'R11', 'if2':'A1'},
|
||||
{'if1':'R12', 'if2':'R21'},
|
||||
{'if1':'R22', 'if2':'C1'}
|
||||
];
|
||||
|
||||
var goals = [
|
||||
{'id':'1', 'type':'reach', 'id1':'A', 'id2':'C'}
|
||||
];
|
46
src/42_evals/Cursus/NetPractice/drill/js/level8.js
Normal file
@ -0,0 +1,46 @@
|
||||
|
||||
var level = 8;
|
||||
|
||||
var hosts = [
|
||||
{'id':'C', 'type':'client', 'name':'office.non-real.com', 'geometry':'200x220+600+900', 'img':'host.png', 'labelpos':'180,100'},
|
||||
{'id':'D', 'type':'client', 'name':'home.non-real.com', 'geometry':'200x220+100+900', 'img':'host.png', 'labelpos':'180,100'},
|
||||
{'id':'R1', 'type':'router', 'name':'gate.non-real.com', 'geometry':'200x200+400+200', 'img':'router.png', 'labelpos':'-270,20'},
|
||||
{'id':'R2', 'type':'router', 'name':'transit.my-isp.org', 'geometry':'200x200+400+600', 'img':'router.png', 'labelpos':'-30,170'},
|
||||
{'id':'I', 'type':'internet', 'name':'Internet', 'geometry':'200x240+900+175', 'img':'internet.png', 'labelpos':'-50,200'},
|
||||
];
|
||||
|
||||
// routes are processed in order, first match only is used => default must be last - KEEP routes before interfaces for random reference and keep routes in host order
|
||||
var routes = [
|
||||
{'hid':'C', 'rid':'Cr1', 'route':'0.0.0.0/0', 'gate':'10.0.0.254', 'route_edit':'true', 'gate_edit':'true'},
|
||||
{'hid':'D', 'rid':'Dr1', 'route':'default', 'gate':'8.8.8.8', 'route_edit':'true', 'gate_edit':'true'},
|
||||
{'hid':'R1', 'rid':'R1r2', 'route':'192.168.0.0/26', 'gate':'10.0.0.2', 'route_edit':'true', 'gate_edit':'true'},
|
||||
{'hid':'R1', 'rid':'R1r3', 'route':'0.0.0.0/0', 'gate':'163.[1-254]a.250.1', 'route_edit':'false', 'gate_edit':'false'},
|
||||
{'hid':'R2', 'rid':'R2r1', 'route':'10.0.0.0/8', 'gate':'[128-170]b.[1-254]c.[1-254]d.62', 'route_edit':'true', 'gate_edit':'false'},
|
||||
{'hid':'I', 'rid':'Ir1', 'route':'[b].[c].[d].0/26', 'gate':'163.[a].250.254', 'route_edit':'false', 'gate_edit':'true'}
|
||||
];
|
||||
|
||||
|
||||
var ifs = [
|
||||
{'if':'C1', 'hid':'C', 'ip':'192.168.0.1', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'20,-50'},
|
||||
{'if':'D1', 'hid':'D', 'ip':'8.9.10.11', 'mask':'255.255.255.240', 'ip_edit':'true', 'mask_edit':'false', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'R12', 'hid':'R1', 'ip':'163.[a].250.12', 'mask':'255.255.255.240', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'190,20'},
|
||||
{'if':'R13', 'hid':'R1', 'ip':'10.0.0.1', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'20,160'},
|
||||
{'if':'R21', 'hid':'R2', 'ip':'10.0.0.2', 'mask':'255.255.0.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'R22', 'hid':'R2', 'ip':'192.168.0.254', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'190,90'},
|
||||
{'if':'R23', 'hid':'R2', 'ip':'8.8.8.8', 'mask':'/18', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'-150,90'},
|
||||
{'if':'I1', 'hid':'I', 'ip':'163.[a].250.1', 'mask':'/28', 'ip_edit':'false', 'mask_edit':'false', 'pos':'0,0', 'type':'hidden'}
|
||||
];
|
||||
|
||||
|
||||
var links = [
|
||||
{'if1':'I1', 'if2':'R12'},
|
||||
{'if1':'R13', 'if2':'R21'},
|
||||
{'if1':'R22', 'if2':'C1'},
|
||||
{'if1':'R23', 'if2':'D1'}
|
||||
];
|
||||
|
||||
var goals = [
|
||||
{'id':'1', 'type':'reach', 'id1':'C', 'id2':'D'},
|
||||
{'id':'2', 'type':'reach', 'id1':'C', 'id2':'I'},
|
||||
{'id':'3', 'type':'reach', 'id1':'D', 'id2':'I'}
|
||||
];
|
64
src/42_evals/Cursus/NetPractice/drill/js/level9.js
Normal file
@ -0,0 +1,64 @@
|
||||
|
||||
var level = 9;
|
||||
|
||||
var hosts = [
|
||||
{'id':'A', 'type':'client', 'name':'meson', 'geometry':'200x220+100+800', 'img':'host.png', 'labelpos':'-50,200'},
|
||||
{'id':'B', 'type':'client', 'name':'ion', 'geometry':'200x220+100+200', 'img':'host.png', 'labelpos':'180,30'},
|
||||
{'id':'C', 'type':'client', 'name':'cation', 'geometry':'200x220+1000+800', 'img':'host.png', 'labelpos':'100,190'},
|
||||
{'id':'D', 'type':'client', 'name':'gluon', 'geometry':'200x220+600+1300', 'img':'host.png', 'labelpos':'180,80'},
|
||||
{'id':'R1', 'type':'router', 'name':'proton', 'geometry':'200x200+500+500', 'img':'router.png', 'labelpos':'-150,150'},
|
||||
{'id':'R2', 'type':'router', 'name':'boson', 'geometry':'200x200+600+900', 'img':'router.png', 'labelpos':'-200,100'},
|
||||
{'id':'I', 'type':'internet', 'name':'Internet', 'geometry':'200x240+800+200', 'img':'internet.png', 'labelpos':'100,200'},
|
||||
{'id':'S', 'type':'switch', 'name':'neutron', 'geometry':'150x150+200+500', 'img':'switch.png', 'labelpos':'-80,110'}
|
||||
];
|
||||
|
||||
// routes are processed in order, first match only is used => default must be last - KEEP routes before interfaces for random reference
|
||||
var routes = [
|
||||
{'hid':'A', 'rid':'Ar1', 'route':'0.0.0.0/0', 'gate':'[11-126]e.198.[1-254]f.1', 'route_edit':'true', 'gate_edit':'true'},
|
||||
{'hid':'B', 'rid':'Br1', 'route':'8.8.8.8/16', 'gate':'[e].199.[f].1', 'route_edit':'true', 'gate_edit':'true'},
|
||||
{'hid':'C', 'rid':'Cr1', 'route':'0.0.0.0/0', 'gate':'10.0.0.254', 'route_edit':'false', 'gate_edit':'true'},
|
||||
{'hid':'D', 'rid':'Dr1', 'route':'10.0.0.0/8', 'gate':'[11-126]a.[1-254]b.[1-254]c.[1-254]d', 'route_edit':'true', 'gate_edit':'false'},
|
||||
{'hid':'R1', 'rid':'R1r1', 'route':'10.0.0.0/8', 'gate':'[11-126]j.[1-254]k.14.253', 'route_edit':'true', 'gate_edit':'true'},
|
||||
{'hid':'R1', 'rid':'R1r2', 'route':'192.168.24.12/26', 'gate':'[j].[k].15.253', 'route_edit':'true', 'gate_edit':'true'},
|
||||
{'hid':'R1', 'rid':'R1r3', 'route':'0.0.0.0/0', 'gate':'163.172.250.1', 'route_edit':'false', 'gate_edit':'false'},
|
||||
{'hid':'R2', 'rid':'R2r1', 'route':'0.0.0.0/0', 'gate':'[j].[k].16.254', 'route_edit':'false', 'gate_edit':'true'},
|
||||
{'hid':'I', 'rid':'Ir1', 'route':'[e].198.[f].0/22', 'gate':'163.172.250.12', 'route_edit':'true', 'gate_edit':'false'},
|
||||
{'hid':'I', 'rid':'Ir2', 'route':'10.0.0.0/27', 'gate':'163.172.250.12', 'route_edit':'true', 'gate_edit':'false'},
|
||||
{'hid':'I', 'rid':'Ir3', 'route':'default', 'gate':'163.172.250.12', 'route_edit':'true', 'gate_edit':'false'}
|
||||
];
|
||||
|
||||
|
||||
var ifs = [
|
||||
{'if':'A1', 'hid':'A', 'ip':'192.168.[1-254]g.2', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'B1', 'hid':'B', 'ip':'192.168.[1-254]h.42', 'mask':'255.255.0.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'100,200'},
|
||||
{'if':'C1', 'hid':'C', 'ip':'10.0.0.1', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'20,-50'},
|
||||
{'if':'D1', 'hid':'D', 'ip':'[j].[k].19.131', 'mask':'255.255.255.192', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'R11', 'hid':'R1', 'ip':'192.168.[1-254]i.1', 'mask':'255.255.255.128', 'ip_edit':'true', 'mask_edit':'false', 'type':'std', 'pos':'-150,0'},
|
||||
{'if':'R12', 'hid':'R1', 'ip':'163.172.250.12', 'mask':'255.255.255.240', 'ip_edit':'false', 'mask_edit':'false', 'type':'std', 'pos':'190,10'},
|
||||
{'if':'R13', 'hid':'R1', 'ip':'[j].[k].17.254', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'130,140'},
|
||||
{'if':'R21', 'hid':'R2', 'ip':'[j].[k].18.253', 'mask':'255.255.255.252', 'ip_edit':'true', 'mask_edit':'false', 'type':'std', 'pos':'0,-50'},
|
||||
{'if':'R22', 'hid':'R2', 'ip':'10.0.0.254', 'mask':'255.255.255.0', 'ip_edit':'true', 'mask_edit':'true', 'type':'std', 'pos':'190,80'},
|
||||
{'if':'R23', 'hid':'R2', 'ip':'8.8.8.8', 'mask':'/18', 'ip_edit':'true', 'mask_edit':'false', 'type':'std', 'pos':'30,180'},
|
||||
{'if':'S1', 'hid':'S', 'ip':'0.0.0.0', 'mask':'/32', 'ip_edit':'false', 'mask_edit':'false', 'pos':'0,0', 'type':'hidden'},
|
||||
{'if':'I1', 'hid':'I', 'ip':'163.172.250.1', 'mask':'/28', 'ip_edit':'false', 'mask_edit':'false', 'pos':'0,0', 'type':'hidden'}
|
||||
];
|
||||
|
||||
|
||||
var links = [
|
||||
{'if1':'I1', 'if2':'R12'},
|
||||
{'if1':'R11', 'if2':'S1'},
|
||||
{'if1':'S1', 'if2':'A1'},
|
||||
{'if1':'S1', 'if2':'B1'},
|
||||
{'if1':'R13', 'if2':'R21'},
|
||||
{'if1':'R22', 'if2':'C1'},
|
||||
{'if1':'R23', 'if2':'D1'}
|
||||
];
|
||||
|
||||
var goals = [
|
||||
{'id':'1', 'type':'reach', 'id1':'A', 'id2':'B'},
|
||||
{'id':'2', 'type':'reach', 'id1':'C', 'id2':'D'},
|
||||
{'id':'3', 'type':'reach', 'id1':'A', 'id2':'I'},
|
||||
{'id':'4', 'type':'reach', 'id1':'A', 'id2':'D'},
|
||||
{'id':'5', 'type':'reach', 'id1':'B', 'id2':'C'},
|
||||
{'id':'6', 'type':'reach', 'id1':'C', 'id2':'I'}
|
||||
];
|
347
src/42_evals/Cursus/NetPractice/drill/js/show.js
Normal file
@ -0,0 +1,347 @@
|
||||
|
||||
var g_sim_logs = '';
|
||||
var g_my_login = 0;
|
||||
var g_rand_prev;
|
||||
var g_rand_repl = [];
|
||||
var g_eval_lvls;
|
||||
|
||||
|
||||
function my_console_log(str)
|
||||
{
|
||||
// console.log(str);
|
||||
}
|
||||
|
||||
|
||||
function hash_login(login)
|
||||
{
|
||||
var seed = 0;
|
||||
for (var i = 0; i < login.length; i ++)
|
||||
{
|
||||
if (i%2 == 0)
|
||||
seed += 973 * (login.charCodeAt(i)+i);
|
||||
else
|
||||
seed += 5 * login.charCodeAt(i) * i;
|
||||
}
|
||||
// console.log("hash login : '"+login+"' -> "+seed);
|
||||
return (seed);
|
||||
}
|
||||
|
||||
|
||||
function err(thetype, field)
|
||||
{
|
||||
my_console_log("Fatal error in "+thetype+", on field "+field);
|
||||
throw '';
|
||||
}
|
||||
|
||||
|
||||
function my_random(a, b)
|
||||
{
|
||||
if (g_my_login == '')
|
||||
return (Math.round(parseInt(a) + (parseInt(b)-parseInt(a))*Math.random()));
|
||||
var prev = g_rand_prev;
|
||||
prev ^= prev << 13;
|
||||
prev ^= prev >> 17;
|
||||
prev ^= prev << 5;
|
||||
g_rand_prev = prev;
|
||||
prev = (prev & 0x7FFFFFFF) % (parseInt(b)-parseInt(a)+1);
|
||||
return (Math.round(parseInt(a) + prev));
|
||||
}
|
||||
|
||||
function random_repl(str)
|
||||
{
|
||||
var regex = /\[(\d+)-(\d+)\]([a-z])/g;
|
||||
var res;
|
||||
var str2 = str;
|
||||
while (res = regex.exec(str))
|
||||
{
|
||||
my_console_log(res);
|
||||
g_rand_repl[res[3]] = my_random(res[1], res[2]);
|
||||
str2 = str2.replace(res[0], ""+g_rand_repl[res[3]]);
|
||||
my_console_log(str2);
|
||||
}
|
||||
regex = /\[([a-z])\]/g;
|
||||
while (res = regex.exec(str))
|
||||
{
|
||||
my_console_log(res);
|
||||
if (g_rand_repl[res[1]] != null)
|
||||
{
|
||||
str2 = str2.replace(res[0], ""+g_rand_repl[res[1]]);
|
||||
my_console_log(str2);
|
||||
}
|
||||
else
|
||||
return (null);
|
||||
}
|
||||
|
||||
if (str2 == "default") return (str2);
|
||||
// check if any non digital, non dot, non slash char, except previous line
|
||||
regex = /[^\d\.\/]/g;
|
||||
if (regex.exec(str2))
|
||||
return (null);
|
||||
|
||||
return (str2);
|
||||
}
|
||||
|
||||
function show_host(root, h)
|
||||
{
|
||||
if (!h['id']) err("hosts", "id");
|
||||
if (!h['type']) err("hosts id "+h['id'], "type");
|
||||
if (!h['name']) err("hosts id "+h['id'], "name");
|
||||
if (!h['geometry']) err("hosts id "+h['id'], "geometry");
|
||||
if (!h['img']) err("hosts id "+h['id'], "img");
|
||||
|
||||
var tab = h['geometry'].split(/[^0-9]+/);
|
||||
if (tab.length != 4) err("hosts id "+h['id'], "geometry parsing");
|
||||
h['w'] = parseInt(tab[0]);
|
||||
h['h'] = parseInt(tab[1]);
|
||||
h['x'] = parseInt(tab[2]);
|
||||
h['y'] = parseInt(tab[3]);
|
||||
|
||||
var newelem = document.createElement('div');
|
||||
newelem.className = 'host_div';
|
||||
newelem.style.position = "absolute";
|
||||
newelem.style.width = h['w']+'px';
|
||||
newelem.style.height = h['h']+'px';
|
||||
newelem.style.top = h['y'] + 'px';
|
||||
newelem.style.left = h['x'] + 'px';
|
||||
newelem.style.backgroundImage = 'url(img/'+h['img']+')';
|
||||
root.appendChild(newelem);
|
||||
|
||||
// label + routes
|
||||
var tab = h['labelpos'].split(',');
|
||||
if (tab.length != 2) err("host id "+h['id'], "labelpos parsing");
|
||||
h['lx'] = parseInt(tab[0]);
|
||||
h['ly'] = parseInt(tab[1]);
|
||||
|
||||
var newelem = document.createElement('div');
|
||||
newelem.className = 'host_info_div';
|
||||
newelem.style.position = "absolute";
|
||||
newelem.style.top = (h['y']+h['ly'])+'px';
|
||||
newelem.style.left = (h['x']+h['lx'])+'px';
|
||||
var label = '<table><tr><td>'+h['type']+' '+h['id']+': <i>'+h['name']+'</id></td></tr>';
|
||||
var str = '';
|
||||
routes.forEach(r => {if (h['id'] == r['hid']) { str += '<tr><td>'+get_route_info(r)+'</td></tr>\n'; r['h'] = h;}});
|
||||
if (str != '') label += '<tr><td>Routes :</td></tr>\n'+str;
|
||||
label += '</table>';
|
||||
newelem.innerHTML = label;
|
||||
root.appendChild(newelem);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function get_route_info(r)
|
||||
{
|
||||
if (!r['rid']) err("route", "rid");
|
||||
if (!r['hid']) err("route id "+r['rid'], "hid");
|
||||
if (!r['route']) err("route id "+r['rid'], "route");
|
||||
if (!r['route_edit']) err("route id "+r['rid'], "route_edit");
|
||||
if (!r['gate']) err("route id "+r['rid'], "gate");
|
||||
if (!r['gate_edit']) err("route id "+r['rid'], "gate_edit");
|
||||
|
||||
if ((r['route'] = random_repl(r['route'])) == null) err("route id "+r['rid'], "route ip random syntax");
|
||||
if ((r['gate'] = random_repl(r['gate'])) == null) err("route id "+r['rid'], "gate random syntax");
|
||||
|
||||
if (r['route_edit'] == 'true') route_active = ''; else route_active = 'disabled';
|
||||
if (r['gate_edit'] == 'true') gate_active = ''; else gate_active = 'disabled';
|
||||
var routestr = '<input size=15 type=text id=route_'+r['rid']+' value="'+r['route']+'" '+route_active+'> => <input size=15 type=text id=gate_'+r['rid']+' value="'+r['gate']+'" '+gate_active+'>';
|
||||
// my_console_log("add label route : ##"+routestr);
|
||||
return (routestr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function show_ifs(root, itf)
|
||||
{
|
||||
if (!itf['if']) err("ifs", "if");
|
||||
if (!itf['hid']) err("ifs "+itf['if'], "hid");
|
||||
if (!itf['ip']) err("ifs "+itf['if'], "ip");
|
||||
if (!itf['mask']) err("ifs "+itf['if'], "mask");
|
||||
if (!itf['ip_edit']) err("ifs "+itf['if'], "ip_edit");
|
||||
if (!itf['mask_edit']) err("ifs "+itf['if'], "mask_edit");
|
||||
if (!itf['type']) err("ifs "+itf['if'], "type");
|
||||
if (!itf['pos']) err("ifs "+itf['if'], "pos");
|
||||
|
||||
if ((itf['ip'] = random_repl(itf['ip'])) == null) err("ifs "+itf['if'], "ip random syntax");
|
||||
if ((itf['mask'] = random_repl(itf['mask'])) == null) err("ifs "+itf['if'], "mask random syntax");
|
||||
|
||||
hosts.forEach(h => {if (itf['hid'] == h['id']) itf['h'] = h});
|
||||
|
||||
var tab = itf['pos'].split(',');
|
||||
if (tab.length != 2) err("ifs id "+itf['if'], "pos parsing");
|
||||
itf['dx'] = parseInt(tab[0]);
|
||||
itf['dy'] = parseInt(tab[1]);
|
||||
|
||||
if (itf['type'] == 'std')
|
||||
{
|
||||
var newelem = document.createElement('div');
|
||||
newelem.className = 'itf_div';
|
||||
newelem.style.position = "absolute";
|
||||
newelem.style.top = (itf['h']['y']+itf['dy'])+'px';
|
||||
newelem.style.left = (itf['h']['x']+itf['dx'])+'px';
|
||||
if (itf['ip_edit'] == 'true') ip_active = ''; else ip_active = 'disabled';
|
||||
if (itf['mask_edit'] == 'true') mask_active = ''; else mask_active = 'disabled';
|
||||
newelem.innerHTML = 'Interface '+itf['if']+'<br />IP : <input size=15 type=text id=ip_'+itf['if']+' value="'+itf['ip']+'" '+ip_active+'><br />Mask : <input size=15 type=text id=mask_'+itf['if']+' value="'+itf['mask']+'" '+mask_active+'>';
|
||||
root.appendChild(newelem);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function draw_links(root, l)
|
||||
{
|
||||
if (!l['if1'] || !l['if2']) err("links", "id");
|
||||
|
||||
ifs.forEach(i => {if (i['if'] == l['if1']) l['e1'] = i});
|
||||
ifs.forEach(i => {if (i['if'] == l['if2']) l['e2'] = i});
|
||||
|
||||
hosts.forEach(h => {if (h['id'] == l['e1']['hid']) l['h1'] = h});
|
||||
hosts.forEach(h => {if (h['id'] == l['e2']['hid']) l['h2'] = h});
|
||||
|
||||
var aLine = document.createElementNS('http://www.w3.org/2000/svg', 'line');
|
||||
aLine.setAttribute('id', 'link_'+l['if1']+'_'+l['if2']);
|
||||
aLine.id = 'link_'+l['if1']+'_'+l['if2'];
|
||||
aLine.setAttribute('x1', ""+(parseInt(l['h1']['x'])+parseInt(l['h1']['w'])/2));
|
||||
aLine.setAttribute('y1', ""+(parseInt(l['h1']['y'])+parseInt(l['h1']['h'])/2));
|
||||
aLine.setAttribute('x2', ""+(parseInt(l['h2']['x'])+parseInt(l['h2']['w'])/2));
|
||||
aLine.setAttribute('y2', ""+(parseInt(l['h2']['y'])+parseInt(l['h2']['h'])/2));
|
||||
aLine.setAttribute('stroke', "black");
|
||||
aLine.setAttribute('stroke-width', 3);
|
||||
(document.getElementById('sl')).appendChild(aLine);
|
||||
}
|
||||
|
||||
|
||||
function prep_goals(g)
|
||||
{
|
||||
if (!g['id']) err("goals", "id");
|
||||
if (!g['type']) err("goals "+g['id'], "type");
|
||||
if (g['type'] == 'reach')
|
||||
{
|
||||
if (!g['id1']) err("goals "+g['id'], "id1");
|
||||
if (!g['id2']) err("goals "+g['id'], "id2");
|
||||
hosts.forEach(h => {if (h['id'] == g['id1']) g['h1'] = h});
|
||||
hosts.forEach(h => {if (h['id'] == g['id2']) g['h2'] = h});
|
||||
}
|
||||
if (g['type'] == 'reach_if')
|
||||
{
|
||||
if (!g['if_id1']) err("goals "+g['id'], "if_id1");
|
||||
if (!g['if_id2']) err("goals "+g['id'], "if_id2");
|
||||
ifs.forEach(itf => {if (itf['if'] == g['if_id1']) { g['h1'] = itf['h']; g['if1'] = itf;}});
|
||||
ifs.forEach(itf => {if (itf['if'] == g['if_id2']) { g['h2'] = itf['h']; g['if2'] = itf;}});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function next_eval()
|
||||
{
|
||||
if (g_eval_lvls.length >= 3)
|
||||
return ('end.html');
|
||||
var lvl;
|
||||
do {
|
||||
lvl = Math.round(6 + 4*Math.random());
|
||||
} while (g_eval_lvls.includes(lvl))
|
||||
g_eval_lvls.push(lvl);
|
||||
localStorage.setItem("g_my_eval", JSON.stringify(g_eval_lvls));
|
||||
return ('level'+lvl+'.html');
|
||||
}
|
||||
|
||||
|
||||
function my_download(filename, text)
|
||||
{
|
||||
var element = document.createElement('a');
|
||||
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
|
||||
element.setAttribute('download', filename);
|
||||
|
||||
element.style.display = 'none';
|
||||
document.body.appendChild(element);
|
||||
|
||||
element.click();
|
||||
|
||||
document.body.removeChild(element);
|
||||
}
|
||||
|
||||
function dl_config()
|
||||
{
|
||||
var infos = { 'routes':{}, 'ifs':{} };
|
||||
routes.forEach(elem => { infos['routes'][elem['rid']] = {};
|
||||
if (elem['route_edit'] == 'true') infos['routes'][elem['rid']]['route'] = document.getElementById('route_'+elem['rid']).value;
|
||||
if (elem['gate_edit'] == 'true') infos['routes'][elem['rid']]['gate'] = document.getElementById('gate_'+elem['rid']).value;
|
||||
});
|
||||
ifs.forEach(elem => { infos['ifs'][elem['if']] = {};
|
||||
if (elem['ip_edit'] == 'true') infos['ifs'][elem['if']]['ip'] = document.getElementById('ip_'+elem['if']).value;
|
||||
if (elem['mask_edit'] == 'true') infos['ifs'][elem['if']]['mask'] = document.getElementById('mask_'+elem['if']).value;
|
||||
});
|
||||
my_download('level'+level+'.json', JSON.stringify(infos));
|
||||
}
|
||||
|
||||
|
||||
function show_goals(g)
|
||||
{
|
||||
g_sim_logs += '******* Goal ID '+g['id']+' ********\n';
|
||||
var div = document.getElementById("goals_id");
|
||||
div.innerHTML += 'Goal '+g['id']+' : ';
|
||||
if (g['type'] == 'reach')
|
||||
{
|
||||
var obj = sim_goal(g);
|
||||
div.innerHTML += '<i>'+g['h1']['name']+'</i> need to communicate with <i>'+g['h2']['name']+'</i> - Status : '+obj.text;
|
||||
}
|
||||
if (g['type'] == 'reach_if')
|
||||
{
|
||||
var obj = sim_goal(g);
|
||||
div.innerHTML += 'Interface <i>'+g['if1']['if']+'</i> need to communicate with interface <i>'+g['if2']['if']+'</i> - Status : '+obj.text;
|
||||
}
|
||||
div.innerHTML += '<br />\n';
|
||||
return (obj.status);
|
||||
}
|
||||
|
||||
|
||||
function all_goals()
|
||||
{
|
||||
if (g_my_login != '')
|
||||
g_sim_logs = '** generated for login "'+g_my_login+'" **\n';
|
||||
else
|
||||
g_sim_logs = '** evaluation mode round '+g_eval_lvls.length+'**\n';
|
||||
document.getElementById("goals_id").innerHTML = '<h2>Level '+level+' : </h2>\n';
|
||||
var nb = 0;
|
||||
goals.forEach(elem => nb += show_goals(elem));
|
||||
document.getElementById("goals_id").innerHTML += '<input type=button value="Check again" onclick="all_goals();"> <input type=button value="Get my config" onclick="dl_config();">';
|
||||
if (nb == goals.length)
|
||||
{
|
||||
if (g_my_login != '')
|
||||
{
|
||||
if (level < 10)
|
||||
document.getElementById("goals_id").innerHTML += " <input type=button value='Next level' onclick='window.location=\"level"+(level+1)+".html\";'>";
|
||||
else
|
||||
document.getElementById("goals_id").innerHTML += " <input type=button value='Complete !' onclick='window.location=\"end.html\";'>";
|
||||
}
|
||||
else
|
||||
{ // defense case
|
||||
document.getElementById("goals_id").innerHTML += " <input type=button value='Next' onclick='window.location=next_eval();'>";
|
||||
}
|
||||
}
|
||||
document.getElementById("logs_id").innerHTML = g_sim_logs.replace(/\n/g, '<br />');
|
||||
}
|
||||
|
||||
|
||||
function load_board()
|
||||
{
|
||||
if (!(g_my_login = localStorage.getItem("g_my_login")))
|
||||
g_my_login = ''; // will means evaluation & full random
|
||||
g_rand_prev = level + hash_login(g_my_login); // initialize replayable pseudo random generator
|
||||
if (g_my_login == '')
|
||||
g_eval_lvls = JSON.parse(localStorage.getItem("g_my_eval"));
|
||||
|
||||
var root = document.getElementById("root_id");
|
||||
|
||||
hosts.forEach(elem => show_host(root, elem));
|
||||
|
||||
ifs.forEach(elem => show_ifs(root, elem));
|
||||
|
||||
links.forEach(elem => draw_links(root, elem));
|
||||
|
||||
goals.forEach(elem => prep_goals(elem));
|
||||
all_goals();
|
||||
// only for very first time : don't show any log
|
||||
document.getElementById("logs_id").innerHTML = 'Logs will be displayed here';
|
||||
}
|
375
src/42_evals/Cursus/NetPractice/drill/js/sim.js
Normal file
@ -0,0 +1,375 @@
|
||||
|
||||
|
||||
var visited_host = [];
|
||||
|
||||
var private_subnets = [
|
||||
{'hid':'__none__', 'rid':'private_class_A', 'route':'10.0.0.0/8', 'gate':'0.0.0.0', 'route_edit':'false', 'gate_edit':'false', 'h':{'type':'internet'}},
|
||||
{'hid':'__none__', 'rid':'private_class_B', 'route':'172.16.0.0/12', 'gate':'0.0.0.0', 'route_edit':'false', 'gate_edit':'false', 'h':{'type':'internet'}},
|
||||
{'hid':'__none__', 'rid':'private_class_C', 'route':'192.168.0.0/16', 'gate':'0.0.0.0', 'route_edit':'false', 'gate_edit':'false', 'h':{'type':'internet'}}
|
||||
];
|
||||
|
||||
// simulate network
|
||||
|
||||
|
||||
function ip_to_int(s)
|
||||
{
|
||||
var tab = s.split('.');
|
||||
if (tab.length != 4) return (null);
|
||||
if (parseInt(tab[0]) < 0 || parseInt(tab[0]) > 223 || parseInt(tab[1]) < 0 || parseInt(tab[1]) > 255 ||
|
||||
parseInt(tab[2]) < 0 || parseInt(tab[2]) > 255 || parseInt(tab[3]) < 0 || parseInt(tab[3]) > 255) return (null);
|
||||
if (parseInt(tab[0]) == 127) { g_sim_logs += "loopback address detected on outside interface\n"; return (null); } // maybe not the best option to deal with 127/8 loopback addresses...
|
||||
return ( ( (parseInt(tab[0]) << 24) | ((parseInt(tab[1])) << 16) | ((parseInt(tab[2])) << 8) | (parseInt(tab[3])) ) >>> 0);
|
||||
}
|
||||
|
||||
function mask_to_int(s)
|
||||
{
|
||||
if (s.length == 0) return (null);
|
||||
if (s[0] == '/')
|
||||
{
|
||||
var cidr = parseInt(s.substring(1));
|
||||
if (cidr < 0 || cidr > 32) return (null);
|
||||
return ( ((1 << cidr)-1) << (32-cidr));
|
||||
}
|
||||
var tab = s.split('.');
|
||||
if (tab.length != 4) return (null);
|
||||
if (parseInt(tab[0]) < 0 || parseInt(tab[0]) > 255 || parseInt(tab[1]) < 0 || parseInt(tab[1]) > 255 ||
|
||||
parseInt(tab[2]) < 0 || parseInt(tab[2]) > 255 || parseInt(tab[3]) < 0 || parseInt(tab[3]) > 255) return (null);
|
||||
if (parseInt(tab[0]) != 255 && (parseInt(tab[1]) != 0 || parseInt(tab[2]) != 0 || parseInt(tab[3]) != 0)) return (null);
|
||||
if (parseInt(tab[0]) == 255 && parseInt(tab[1]) != 255 && (parseInt(tab[2]) != 0 || parseInt(tab[3]) != 0)) return (null);
|
||||
if (parseInt(tab[0]) == 255 && parseInt(tab[1]) == 255 && parseInt(tab[2]) != 255 && parseInt(tab[3]) != 0) return (null);
|
||||
// magic trick to check if we have continuity of 1 then 0
|
||||
var mask = ( ( (parseInt(tab[0]) << 24) | ((parseInt(tab[1])) << 16) | ((parseInt(tab[2])) << 8) | (parseInt(tab[3])) ) >>> 0);
|
||||
if (mask == 0) return (0);
|
||||
if ( ( ((~mask)+1) & (~mask) ) == 0)
|
||||
return (mask);
|
||||
return (null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// mask on interface
|
||||
function get_if_mask_str(itf)
|
||||
{
|
||||
if (itf['mask_edit'] == 'true')
|
||||
return (document.getElementById('mask_'+itf['if']).value);
|
||||
return (itf['mask']);
|
||||
}
|
||||
function get_if_mask(itf)
|
||||
{
|
||||
return (mask_to_int(get_if_mask_str(itf)));
|
||||
}
|
||||
|
||||
// ip on interface
|
||||
function get_if_ip_str(itf)
|
||||
{
|
||||
if (itf['ip_edit'] == 'true')
|
||||
return (document.getElementById('ip_'+itf['if']).value);
|
||||
return (itf['ip']);
|
||||
}
|
||||
function get_if_ip(itf)
|
||||
{
|
||||
var the_ip = ip_to_int(get_if_ip_str(itf));
|
||||
// check if ip is not the network or broadcast address
|
||||
var the_mask = get_if_mask(itf);
|
||||
if ( (the_ip & (~the_mask)) == 0 ||
|
||||
(the_ip & (~the_mask)) == (~the_mask) )
|
||||
return (null);
|
||||
return (the_ip);
|
||||
}
|
||||
|
||||
|
||||
// route in routes
|
||||
function get_route_route_str(r)
|
||||
{
|
||||
if (r['route_edit'] == 'true')
|
||||
return (document.getElementById('route_'+r['rid']).value);
|
||||
return (r['route']);
|
||||
}
|
||||
|
||||
// gate in routes
|
||||
function get_route_gate_str(r)
|
||||
{
|
||||
if (r['gate_edit'] == 'true')
|
||||
return (document.getElementById('gate_'+r['rid']).value);
|
||||
return (r['gate']);
|
||||
}
|
||||
function get_route_gate(r)
|
||||
{
|
||||
return (ip_to_int(get_route_gate_str(r)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
function ip_match_if(ip, itf)
|
||||
{
|
||||
var iip, imask;
|
||||
if ((iip = get_if_ip(itf)) === null) { g_sim_logs += 'on interface '+itf['if']+': invalid IP address\n'; return (0); }
|
||||
if ((imask = get_if_mask(itf)) === null) { g_sim_logs += 'on interface '+itf['if']+': invalid netmask\n'; return (0); }
|
||||
// my_console_log("## "+iip+" & "+imask+" == "+ip+" & "+imask);
|
||||
if (iip == ip) { g_sim_logs += "duplicate IP ("+get_if_ip_str(itf)+")\n"; return (0); } // ip_match_if is called only on output, not on arrival
|
||||
if ((iip & imask) == (ip & imask))
|
||||
{
|
||||
// if ip match the interface network, check that the ip is not the network addr or broadcast ?
|
||||
return (1);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
function ip_match_route(ip, r)
|
||||
{
|
||||
var str, rip, rmask;
|
||||
str = get_route_route_str(r);
|
||||
if (str == 'default') str = '0.0.0.0/0';
|
||||
// my_console_log("ip_match_route route :"+JSON.stringify(r));
|
||||
if (r['h']['type'] == "internet" && str == '0.0.0.0/0')
|
||||
{ g_sim_logs += 'invalid default route on internet '+r['hid']+'\n'; return (0); }
|
||||
var tab = str.split('/');
|
||||
// my_console_log("ip_match_route check : "+str+" againt ip "+ip);
|
||||
if (tab.length != 2)
|
||||
{ g_sim_logs += 'invalid route on host '+r['hid']+'\n'; return (0); }
|
||||
if ((rip = ip_to_int(tab[0])) === null)
|
||||
{ g_sim_logs += 'invalid route on host '+r['hid']+'\n'; return (0); }
|
||||
if ((rmask = mask_to_int('/'+tab[1])) === null)
|
||||
{ g_sim_logs += 'invalid route on host '+r['hid']+'\n'; return (0); }
|
||||
if ((rip & rmask) == (ip & rmask)) return (1);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function rec_route(ip_dest, local_target, input_itf, h) // return array of dest itf
|
||||
{
|
||||
var i, nbif, nb_routes, ret, j;
|
||||
var itf_ip;
|
||||
|
||||
if (input_itf != null)
|
||||
my_console_log(" ** to "+ip_dest+" / host "+h['id']+" input itf "+input_itf['if']+" / to match local target "+local_target);
|
||||
else
|
||||
my_console_log(" ** to "+ip_dest+" / host "+h['id']);
|
||||
|
||||
// loop detection here
|
||||
if (visited_host.includes(h)) { g_sim_logs += "on "+h['id']+' : loop detected\n'; return ([]); }
|
||||
visited_host.push(h);
|
||||
|
||||
// if switch : rec_route to all links
|
||||
if (h['type'] == 'switch')
|
||||
{
|
||||
g_sim_logs += 'on switch '+h['id']+': pass to all connections\n';
|
||||
ret = [];
|
||||
links.forEach(l => {if (l['e1']['hid'] == h['id']) ret = ret.concat(rec_route(ip_dest, local_target, l['e2'], l['h2']));
|
||||
else if (l['e2']['hid'] == h['id']) ret = ret.concat(rec_route(ip_dest, local_target, l['e1'], l['h1']))});
|
||||
return (ret);
|
||||
}
|
||||
|
||||
// on a host, is my current gate ip == the ip of the input itf ?
|
||||
if (input_itf != null)
|
||||
{
|
||||
if ((itf_ip = get_if_ip(input_itf)) === null) { g_sim_logs += 'on '+h['id']+': invalid IP on input interface '+input_itf['if']+'\n'; return ([]); }
|
||||
if (itf_ip != local_target) { g_sim_logs += 'on '+h['id']+' : packet not for me\n'; return ([]); }
|
||||
}
|
||||
|
||||
// accepted on host
|
||||
g_sim_logs += 'on '+h['id']+' : packet accepted\n';
|
||||
|
||||
// internet does no route private addresses, so "internet interface" reject private subnets
|
||||
if (h['type'] == 'internet')
|
||||
{
|
||||
if (ip_match_route(ip_dest, private_subnets[0]) || ip_match_route(ip_dest, private_subnets[1]) || ip_match_route(ip_dest, private_subnets[2]))
|
||||
{ g_sim_logs += 'private subnets not routed over internet\n'; return ([]); }
|
||||
}
|
||||
|
||||
// arrived ? check not only input itf, in case another itf is the target; do not check if input_itf is null (departure host)
|
||||
if (input_itf != null)
|
||||
{
|
||||
ret = [];
|
||||
ifs.forEach(itf => {if (itf['hid'] == h['id'] && (itf_ip = get_if_ip(itf)) !== null && ip_dest === itf_ip) ret.push(itf);});
|
||||
if (ret.length > 0) { g_sim_logs += 'on '+h['id']+': destination IP reached\n'; my_console_log(" destination reached !"); return (ret); } // keep multiple : means that 2 interfaces have the same ip
|
||||
}
|
||||
|
||||
// ip_dest match an interface ?
|
||||
my_console_log('on '+h['id']+': check '+ip_dest+" against all interfaces");
|
||||
nbif = 0; ret = [];
|
||||
for (i = 0; i < ifs.length; i++)
|
||||
{
|
||||
if (ifs[i]['hid'] == h['id'])
|
||||
{
|
||||
my_console_log(" chk with itf "+ifs[i]['if']);
|
||||
if (ip_match_if(ip_dest, ifs[i]))
|
||||
{
|
||||
my_console_log(" match itf "+ifs[i]['if']);
|
||||
nbif ++;
|
||||
g_sim_logs += 'on '+h['id']+': send to '+ifs[i]['if']+'\n';
|
||||
links.forEach(l => {if (l['if1'] == ifs[i]['if']) ret = ret.concat(rec_route(ip_dest, ip_dest, l['e2'], l['h2']));
|
||||
else if (l['if2'] == ifs[i]['if']) ret = ret.concat(rec_route(ip_dest, ip_dest, l['e1'], l['h1']))});
|
||||
}
|
||||
}
|
||||
}
|
||||
// force fail if multiple ifs on same subnet
|
||||
if (nbif > 1) { g_sim_logs += 'on '+h['id']+': error on destination ip - multiple interface match\n'; return ([]); }
|
||||
if (nbif == 1) return (ret);
|
||||
|
||||
// else nbif == 0, no interface match, explore routes
|
||||
my_console_log(" no itf for ip destination, go through gate");
|
||||
g_sim_logs += 'on '+h['id']+': destination does not match any interface. pass through routing table\n';
|
||||
|
||||
ret = [];
|
||||
nb_routes = 0;
|
||||
for (j = 0; j < routes.length; j++)
|
||||
{
|
||||
if (routes[j]['hid'] == h['id'])
|
||||
{
|
||||
if (ip_match_route(ip_dest, routes[j]))
|
||||
{
|
||||
g_sim_logs += 'on '+h['id']+' : route match '+get_route_route_str(routes[j])+'\n';
|
||||
nb_routes ++;
|
||||
var ip_gate = get_route_gate(routes[j]);
|
||||
if (ip_gate === null) { g_sim_logs += "on "+h['id']+": invalid gate IP, route "+get_route_route_str(routes[j])+"\n"; return ([]);}
|
||||
nbif = 0;
|
||||
for (i = 0; i < ifs.length; i++)
|
||||
{
|
||||
if (ifs[i]['hid'] == h['id'])
|
||||
{
|
||||
if (ip_match_if(ip_gate, ifs[i]))
|
||||
{
|
||||
my_console_log(" gate ip match itf "+ifs[i]['if']);
|
||||
g_sim_logs += 'on '+h['id']+': send to gateway '+get_route_gate_str(routes[j])+' through interface '+ifs[i]['if']+'\n';
|
||||
nbif ++;
|
||||
links.forEach(l => {if (l['if1'] == ifs[i]['if']) ret = ret.concat(rec_route(ip_dest, ip_gate, l['e2'], l['h2']));
|
||||
else if (l['if2'] == ifs[i]['if']) ret = ret.concat(rec_route(ip_dest, ip_gate, l['e1'], l['h1']))});
|
||||
}
|
||||
}
|
||||
}
|
||||
if (nbif > 1) { g_sim_logs += 'on '+h['id']+' : error on gate ip - multiple interface match\n'; return ([]); }
|
||||
}
|
||||
}
|
||||
if (nb_routes > 0) // only first route is explored.
|
||||
{
|
||||
if (nbif == 0) g_sim_logs += 'on '+h['id']+' : route match but no interface for gateway '+get_route_gate_str(routes[j])+'\n';
|
||||
return (ret);
|
||||
}
|
||||
}
|
||||
// no match, fail
|
||||
g_sim_logs += 'on '+h['id']+': destination does not match any route\n';
|
||||
return ([]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function sim_reach(g)
|
||||
{
|
||||
my_console_log("check reach : "+g['id1']+" -> "+g['id2']);
|
||||
var ret = [];
|
||||
var i;
|
||||
var itf_ip;
|
||||
for (i = 0; i < ifs.length; i++)
|
||||
{
|
||||
if (g['id2'] == ifs[i]['hid'])
|
||||
{
|
||||
visited_host = [];
|
||||
if ((itf_ip = get_if_ip(ifs[i])) === null)
|
||||
g_sim_logs += "on interface "+ifs[i]['if']+": invalid IP\n";
|
||||
else
|
||||
{
|
||||
g_sim_logs +="forward way : "+g['id1']+" -> "+g['id2']+" ("+get_if_ip_str(ifs[i])+")\n";
|
||||
ret = ret.concat(rec_route(itf_ip, 0, null, g['h1']));
|
||||
}
|
||||
if (ret.length > 0)
|
||||
break; // if one interface matches, that's enough - if ret > 1 it's because another host matches
|
||||
}
|
||||
}
|
||||
if (ret.length <= 0) return ({text:'KO - No forward way, try again ...', status:0});
|
||||
if (ret.length > 1) return ({text:'KO - Multiple destination hosts match ... ', status:0});
|
||||
if (ret[0]['hid'] != g['id2']) return ({text:'KO - Correct IP reached but on wrong host, try again ...', status:0});
|
||||
|
||||
// now reverse way
|
||||
|
||||
my_console_log("check reach : "+g['id2']+" -> "+g['id1']);
|
||||
ret = [];
|
||||
for (i = 0; i < ifs.length; i++)
|
||||
{
|
||||
if (g['id1'] == ifs[i]['hid'])
|
||||
{
|
||||
visited_host = [];
|
||||
if ((itf_ip = get_if_ip(ifs[i])) === null)
|
||||
g_sim_logs += "on interface "+ifs[i]['if']+": invalid IP\n";
|
||||
else
|
||||
{
|
||||
g_sim_logs +="reverse way : "+g['id2']+" -> "+g['id1']+" ("+get_if_ip_str(ifs[i])+")\n";
|
||||
ret = ret.concat(rec_route(itf_ip, 0, null, g['h2']));
|
||||
}
|
||||
if (ret.length > 0)
|
||||
break; // if one interface matches, that's enough - if ret > 1 it's because another host matches
|
||||
}
|
||||
}
|
||||
if (ret.length <= 0) return ({text:'KO - No reverse way, try again ...', status:0});
|
||||
if (ret.length > 1) return ({text:'KO - Multiple origin hosts match ... ', status:0});
|
||||
if (ret[0]['hid'] != g['id1']) return ({text:'KO - Correct IP reached but on wrong host, try again ...', status:0});
|
||||
|
||||
return ({text:'OK - Congratulations !!', status:1});
|
||||
}
|
||||
|
||||
|
||||
function sim_reach_if(g)
|
||||
{
|
||||
my_console_log("check reach interface : "+g['if_id1']+" -> "+g['if_id2']);
|
||||
var ret = [];
|
||||
var i;
|
||||
var itf_ip;
|
||||
for (i = 0; i < ifs.length; i++)
|
||||
{
|
||||
if (g['if_id2'] == ifs[i]['if'])
|
||||
{
|
||||
visited_host = [];
|
||||
if ((itf_ip = get_if_ip(ifs[i])) === null)
|
||||
g_sim_logs += "on inerface "+ifs[i]['if']+": invalid IP\n";
|
||||
else
|
||||
{
|
||||
g_sim_logs +="forward way : "+g['if_id1']+" -> "+g['if_id2']+" ("+get_if_ip_str(ifs[i])+")\n";
|
||||
ret = ret.concat(rec_route(itf_ip, 0, null, g['h1']));
|
||||
}
|
||||
if (ret.length > 0)
|
||||
break; // if one interface matches, that's enough - if ret > 1 it's because another host matches
|
||||
}
|
||||
}
|
||||
if (ret.length <= 0) return ({text:'KO - No forward way, try again ...', status:0});
|
||||
if (ret.length > 1) return ({text:'KO - Multiple destination hosts match ... ', status:0});
|
||||
if (ret[0]['if'] != g['if_id2']) return ({text:'KO - Correct IP reached but wrong interface, try again ...', status:0});
|
||||
|
||||
// now reverse way
|
||||
|
||||
my_console_log("check reach interface : "+g['if_id2']+" -> "+g['if_id1']);
|
||||
ret = [];
|
||||
for (i = 0; i < ifs.length; i++)
|
||||
{
|
||||
if (g['if_id1'] == ifs[i]['if'])
|
||||
{
|
||||
visited_host = [];
|
||||
if ((itf_ip = get_if_ip(ifs[i])) === null)
|
||||
g_sim_logs += "on interface "+ifs[i]['if']+": invalid IP\n";
|
||||
else
|
||||
{
|
||||
g_sim_logs +="reverse way : "+g['if_id2']+" -> "+g['if_id1']+" ("+get_if_ip_str(ifs[i])+")\n";
|
||||
ret = ret.concat(rec_route(itf_ip, 0, null, g['h2']));
|
||||
}
|
||||
if (ret.length > 0)
|
||||
break; // if one interface matches, that's enough - if ret > 1 it's because another host matches
|
||||
}
|
||||
}
|
||||
if (ret.length <= 0) return ({text:'KO - No reverse way, try again ...', status:0});
|
||||
if (ret.length > 1) return ({text:'KO - Multiple origin hosts match ... ', status:0});
|
||||
if (ret[0]['if'] != g['if_id1']) return ({text:'KO - Correct IP reached but wrong interface, try again ...', status:0});
|
||||
|
||||
return ({text:'OK - Congratulations !!', status:1});
|
||||
}
|
||||
|
||||
|
||||
|
||||
function sim_goal(g)
|
||||
{
|
||||
if (g['type'] == 'reach')
|
||||
return (sim_reach(g));
|
||||
if (g['type'] == 'reach_if')
|
||||
return (sim_reach_if(g));
|
||||
}
|
18
src/42_evals/Cursus/NetPractice/drill/level1.html
Normal file
@ -0,0 +1,18 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="css/netpractice.css">
|
||||
<script src="js/level1.js"></script>
|
||||
<script src="js/show.js"></script>
|
||||
<script src="js/sim.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id='goals_id' class='goals_div'></div>
|
||||
<div id='root_id'>
|
||||
<svg class="svg_layer" height="2000px" width="2000px" id="sl"></svg>
|
||||
</div>
|
||||
<div id='logs_id' class='logs_div'></div>
|
||||
<script> load_board(); </script>
|
||||
</body>
|
||||
</html>
|
18
src/42_evals/Cursus/NetPractice/drill/level10.html
Normal file
@ -0,0 +1,18 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="css/netpractice.css">
|
||||
<script src="js/level10.js"></script>
|
||||
<script src="js/show.js"></script>
|
||||
<script src="js/sim.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id='goals_id' class='goals_div'></div>
|
||||
<div id='root_id'>
|
||||
<svg class="svg_layer" height="2000px" width="2000px" id="sl"></svg>
|
||||
</div>
|
||||
<div id='logs_id' class='logs_div'></div>
|
||||
<script> load_board(); </script>
|
||||
</body>
|
||||
</html>
|
18
src/42_evals/Cursus/NetPractice/drill/level2.html
Normal file
@ -0,0 +1,18 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="css/netpractice.css">
|
||||
<script src="js/level2.js"></script>
|
||||
<script src="js/show.js"></script>
|
||||
<script src="js/sim.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id='goals_id' class='goals_div'></div>
|
||||
<div id='root_id'>
|
||||
<svg class="svg_layer" height="2000px" width="2000px" id="sl"></svg>
|
||||
</div>
|
||||
<div id='logs_id' class='logs_div'></div>
|
||||
<script> load_board(); </script>
|
||||
</body>
|
||||
</html>
|
18
src/42_evals/Cursus/NetPractice/drill/level3.html
Normal file
@ -0,0 +1,18 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="css/netpractice.css">
|
||||
<script src="js/level3.js"></script>
|
||||
<script src="js/show.js"></script>
|
||||
<script src="js/sim.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id='goals_id' class='goals_div'></div>
|
||||
<div id='root_id'>
|
||||
<svg class="svg_layer" height="2000px" width="2000px" id="sl"></svg>
|
||||
</div>
|
||||
<div id='logs_id' class='logs_div'></div>
|
||||
<script> load_board(); </script>
|
||||
</body>
|
||||
</html>
|
18
src/42_evals/Cursus/NetPractice/drill/level4.html
Normal file
@ -0,0 +1,18 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="css/netpractice.css">
|
||||
<script src="js/level4.js"></script>
|
||||
<script src="js/show.js"></script>
|
||||
<script src="js/sim.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id='goals_id' class='goals_div'></div>
|
||||
<div id='root_id'>
|
||||
<svg class="svg_layer" height="2000px" width="2000px" id="sl"></svg>
|
||||
</div>
|
||||
<div id='logs_id' class='logs_div'></div>
|
||||
<script> load_board(); </script>
|
||||
</body>
|
||||
</html>
|
18
src/42_evals/Cursus/NetPractice/drill/level5.html
Normal file
@ -0,0 +1,18 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="css/netpractice.css">
|
||||
<script src="js/level5.js"></script>
|
||||
<script src="js/show.js"></script>
|
||||
<script src="js/sim.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id='goals_id' class='goals_div'></div>
|
||||
<div id='root_id'>
|
||||
<svg class="svg_layer" height="2000px" width="2000px" id="sl"></svg>
|
||||
</div>
|
||||
<div id='logs_id' class='logs_div'></div>
|
||||
<script> load_board(); </script>
|
||||
</body>
|
||||
</html>
|
18
src/42_evals/Cursus/NetPractice/drill/level6.html
Normal file
@ -0,0 +1,18 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="css/netpractice.css">
|
||||
<script src="js/level6.js"></script>
|
||||
<script src="js/show.js"></script>
|
||||
<script src="js/sim.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id='goals_id' class='goals_div'></div>
|
||||
<div id='root_id'>
|
||||
<svg class="svg_layer" height="2000px" width="2000px" id="sl"></svg>
|
||||
</div>
|
||||
<div id='logs_id' class='logs_div'></div>
|
||||
<script> load_board(); </script>
|
||||
</body>
|
||||
</html>
|
18
src/42_evals/Cursus/NetPractice/drill/level7.html
Normal file
@ -0,0 +1,18 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="css/netpractice.css">
|
||||
<script src="js/level7.js"></script>
|
||||
<script src="js/show.js"></script>
|
||||
<script src="js/sim.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id='goals_id' class='goals_div'></div>
|
||||
<div id='root_id'>
|
||||
<svg class="svg_layer" height="2000px" width="2000px" id="sl"></svg>
|
||||
</div>
|
||||
<div id='logs_id' class='logs_div'></div>
|
||||
<script> load_board(); </script>
|
||||
</body>
|
||||
</html>
|
18
src/42_evals/Cursus/NetPractice/drill/level8.html
Normal file
@ -0,0 +1,18 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="css/netpractice.css">
|
||||
<script src="js/level8.js"></script>
|
||||
<script src="js/show.js"></script>
|
||||
<script src="js/sim.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id='goals_id' class='goals_div'></div>
|
||||
<div id='root_id'>
|
||||
<svg class="svg_layer" height="2000px" width="2000px" id="sl"></svg>
|
||||
</div>
|
||||
<div id='logs_id' class='logs_div'></div>
|
||||
<script> load_board(); </script>
|
||||
</body>
|
||||
</html>
|
18
src/42_evals/Cursus/NetPractice/drill/level9.html
Normal file
@ -0,0 +1,18 @@
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" type="text/css" href="css/netpractice.css">
|
||||
<script src="js/level9.js"></script>
|
||||
<script src="js/show.js"></script>
|
||||
<script src="js/sim.js"></script>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id='goals_id' class='goals_div'></div>
|
||||
<div id='root_id'>
|
||||
<svg class="svg_layer" height="2000px" width="2000px" id="sl"></svg>
|
||||
</div>
|
||||
<div id='logs_id' class='logs_div'></div>
|
||||
<script> load_board(); </script>
|
||||
</body>
|
||||
</html>
|
BIN
src/42_evals/Cursus/NetPractice/img/all.jpg
Executable file
After Width: | Height: | Size: 1.8 MiB |