🎉」 init: hello world !

This commit is contained in:
2025-05-28 12:10:02 +02:00
commit 9bff691192
161 changed files with 230316 additions and 0 deletions

25
docker-compose.yml Normal file
View 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
View File

@ -0,0 +1,4 @@
FROM caddy:latest
COPY src /usr/share/caddy
#COPY Caddyfile /etc/caddy/Caddyfile

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

View 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View 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 &lt;ns_name&gt;" 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

View 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 &lt;ns_name&gt;" 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: "&lt;name&gt;: 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 &lt; INFO &lt; WARNING &lt; 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View 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 &lt;ns_name&gt;" 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 &lt;&lt;</h4>
<p class="scale-section-guidelines">
</p>
<p>Y a-t-il un opérateur &lt;&lt; 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 (&gt;, &lt;, &gt;=, &lt;=, == 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View 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 &lt;ns_name&gt;" 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
[Open the correction file](https://rphlr.github.io/42-Evals/Rank04/CPP_Modules/CPP04/html/index.html)

View 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 &lt;ns_name&gt;" 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">Dont 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

View 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 &lt;ns_name&gt;" 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">Dont 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

View 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 &lt;ns_name&gt;" 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&lt;&gt; 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&amp; p) should use a try and catch block to check if the cast failed. </p>
<p>(In case you're wondering, the header &lt;typeinfo&gt; 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

View 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 &lt;ns_name&gt;" 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

View 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 &lt;ns_name&gt;" 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">Dont 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View 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 +
&gt; Result: 42
9 8 * 4 * 4 / 2 + 9 - 8 - 8 - 1 - 6 -
&gt; Result: 42
1 2 * 2 / 2 + 5 * 6 - 1 3 * - 4 5 * * 8 /
&gt; 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 KiB

View 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 KiB

View 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

View 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

View 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 &amp; 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">Dont 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

View 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 (&gt;1024)</li>
<li>Small BUFFER_SIZE (&lt; 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 (&lt; 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
[Open the correction file](https://rphlr.github.io/42-Evals/Rank05/Inception/html/index.html)

View 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&gt;/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 &amp; 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 &amp; 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
&lt;volume name&gt;'. 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
&lt;volume name&gt;'. 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1,7 @@
![Image](img/1.jpg)
![Image](img/2.jpg)
![Image](img/3.jpg)
![Image](img/4.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 834 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

View 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

View 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

View 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 -&gt; 1 point</li>
<li>The server name is 'server' and it prints his PID at launch -&gt; 2 points</li>
<li>The client name is 'client' and is run as follows:
'./client PID_SERVER STRING_TO_PASS' -&gt; 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.
-&gt; 1 point</li>
<li>Only one global variable per program is allowed, or no global. Ask
for explanations.
-&gt; 1 point</li>
<li>The communication is done only using the signals SIGUSR1 and SIGUSR2.
-&gt; 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">Dont 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_cant_support_/_explain_code negative on-active"
for="scale_team_flag_id_14" name="scale_team[flag_id]">
<span class="iconf-bubble-attention-4"></span>
Cant 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>

View File

@ -0,0 +1 @@
![Image](img/all.jpg)

View 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, ...).

View 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;
}

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

View 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>

View 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);
}

View 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'}
];

View 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'}
];

View 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'}
];

View 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'}
];

View 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'}
];

View 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'}
];

View 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'}
];

View 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'}
];

View 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'}
];

View 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'}
];

View 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+'> =&gt; <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';
}

View 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));
}

View 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>

View 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>

View 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>

View 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>

View 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>

View 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>

View 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>

View 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>

View 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>

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Some files were not shown because too many files have changed in this diff Show More