Développement informatique

Prérequis

Un ordinateur sous GNU/Linux

Pour réduire la charge de travail, notre code est exclusivement maintenu sous des distributions GNU/Linux (Ubuntu, Manjaro, Arch).
De plus, le projet utilise une version "récente" des outils de développement en C++ pour se faciliter ici encore le travail. Si vous n'êtes pas capable de satisfaire les versions minimales des bibliothèques et outils requis, veuillez installer une distribution parmi les suivantes:

Il n'est pas encouragé de développer sous une autre distribution ou un autre système d'exploitation car le bon fonctionnement du système et des outils sera à votre charge.

Certaines fonctionnalités spécifiques à Linux sont utilisées pour la partie réseau notamment.

Conseils:

Si vous n'avez jamais essayé un système d'exploitation GNU/Linux, c'est le bon moment de s'y mettre ! On est beaucoup à avoir pas mal d'expérience dessus et on la partagera avec plaisir !

Pour les plus fermés d'entre-vous ou ceux qui n'ont tout simplement pas le choix, je vais être sympa et vous orienter un peu vers des solutions envisageables.

Toutes les propositions ci-dessous seront dans tous les cas plus longues, contraignantes et fatigantes à mettre en place et sans garantie de succès.

MacOS :

Si vous voulez absolument travailler sous MacOS, un patch est envisageable pour la couche réseau. En revanche, rien ne garanti que le reste fonctionnera sans modification supplémentaire.
Si vous ne pouvez pas installer Linux, il faudra se tourner vers une machine virtuelle ou une solution Docker.

Windobe:

Rufus est le meilleur outil pour créer une clé USB d'installation Linux à partir d'une ISO sous windows.

Si vous ne voulez pas dual-boot, la solution la plus simple est de faire une machine virtuelle. Une autre piste qui peut être privilégiée est d'essayer d'utiliser le sous-système Linux WSL2 ou MSYS2.

Un compte gitlab.namec.fr

Même si c'est moins fun, pourriez-vous garder un nom de compte permettant de vous identifiez un minimum,  idéalement prenom_nom. Merci d'avance !

Lien création de compte: https://gitlab.namec.fr/users/sign_up

Vous pourrez changer votre pseudo après la création de votre compte ! De cette manière, votre identifiant interne sera toujours prenom_nom mais le pseudo affiché sera personnalisé !

Une clé SSH

Voir ce tutoriel: https://docs.gitlab.com/ee/ssh/

Bibliothèques et outils

 

Installation

Installation

Ubuntu

Les ditributions Ubuntu sont basés sur Debian et utilise le gestionnaire de paquets Advanced Packaging Tool accessible avec la commande apt.

Si vous n'êtes pas sous Ubuntu 18.04 ou Ubuntu 20.04 cette page est inutile

Paquets à installer

# le minimum pour travailler sur un projet en C++
sudo apt install -y git g++ make cmake cmake-curses-gui ninja-build
# outils pour la documentation et le formattage du code
sudo apt install -y clang-format doxygen graphviz
sudo apt install -y libncurses5-dev libboost-program-options-dev protobuf-compiler libprotobuf-dev

Source: https://apt.kitware.com/

Dernières version de cmake ​

Cette opération est obligatoire pour Ubuntu 18.04 !

Il suffit de faire cette opération une seule fois. De cette manière vous aurez la dernière version de cmake automatiquement mise à jour par apt.

Je vous recommande d'installer la dernière version dans tous les cas ^^. L'interface de cmake-ncurses-gui est vraiment amélioré à partir de la 3.17 et est de plus en plus simple à utiliser et lisibles au fil des mises à jour.
Xavier

Avant toute chose il faut supprimer la version de cmake précédement installée:

sudo apt remove --purge cmake cmake-curses-gui 

Explication et ajout du PPA

Le gestionnaire de paquet apt est capable d'installer un ensemble de paquets à partir de dépôt officiels correspondant à ça distribution. Mais il est aussi possible d'ajouter des dépôts personnels (Personal Package Archives (PPA)). Pour vous renseigner un peu plus, la page http://doc.ubuntu-fr.org/ppa est un bon point départ !

Ici nous allons ajouter le dépôt officiel de l'entreprise Kitware, mainteneur de cmake:

# Prérequis pour ajouter des PPAs
sudo apt-get install -y apt-transport-https ca-certificates gnupg software-properties-common wget
# récupération et ajout de la clé PPA officiel
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null > /tmp/kitware-archive-latest.asc
sudo apt-key add /tmp/kitware-archive-latest.asc

Il faut maintenant choisir l'unique dépôt qui correspond à votre distribution !
Le nom de ce dépôt est équivalent au nom de votre distribution.

Il faut remplacer <nom_distribution> par le nom le votre distribution.

sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ <nom_distribution> main'

Pour Ubuntu 20.04 dont le nom de code est focal cela donne:

sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main'
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
# le minimum pour travailler sur un projet en C++
sudo apt install -y cmake cmake-curses-gui

​Source: https://apt.kitware.com/​​

Environnement de développement

A vous de choisir comment voulez travailler, une façon simple de s'organiser est de créer un dossier SSL et d'y ajouter un peu tout.

# on se déplace dans votre espace personnel
cd ~
# on créer le dossier SSL
mkdir SSL
# on se déplace dedans !
cd SSL
# C'est parti !

Super ! Vous pouvez maintenant passez à l'installation des logiciels de la ligue !

Installation

Arch Linux et dérivées

Installation

Logiciels de la ligue

grSim: Le simulateur de la SSL

NAMeC possède une version légèrement modifiée du simulateur officiel.

Tous les logiciels et bibliothèques dérivés par NAMeC sont déposés dans le groupe: ssl/software/external

git clone ssh://git@gitlab.namec.fr:2222/ssl/software/external/grSim.git
cd grSim

Une fois le dépôt cloné, il suffit de suivre la procédure d'installation officiel dans le fichier INSTALL.md.

Quand vous avez terminé, veuillez installer grSim sur votre système:

sudo make install

Vous devriez maintenant pouvoir lancer grSim depuis votre menu d'application ou depuis le terminal !

GameController: L'arbitre de la SSL

Installation

Logiciels de NAMeC

Dans le sous-groupe backend de software sont entreposés l'ensemble des logiciels qui seront lancés sur l'ordinateur de contrôle. Ces derniers sont progammées en C++17.

Installer l'environnement de travail

Le dépôt workspace existe pour travailler sur l'ensemble du projet. La branche master contituant la dernière version des logiciels qui pourra être utilisée en compétition. Les sous-modules git sont utilisés pour gérer la version des logiciels NAMeC.

Pour les nouveaux:  ce dépôt n'est pas forcement amené à être utilisé par tout le monde. Il est tout à fait possible de travailler sur des projets isolés. Les tutoriels et exercices qui sont proposés sont indépendants de ce dépôt.

1. clone du dépôt

git clone ssh://git@gitlab.namec.fr:2222/ssl/software/backend/workspace.git
cd workspace

2. étape de constuction

mkdir build && cd build
cmake .. -GNinja
ninja

3. Pour vérifier que votre système est valide, il convient d'exécuter un programme avec grSim.

Si tout va bien le robot 0 devrait effectuer un carré sur le terrain !

Ressources

Cette page a pour but de regrouper des ressources pour comprendre les outils utilisés dans le projet.

Git

Vous le savez surement déjà mais c'est devenu un outil incontournable dans l'industrie du développement informatique. C'est une compétence qui vous sera toujours utile et qui est reconnue par les entreprises.

Ressources:

Franchement en 30 minutes - 1h,  vous avez vraiment toutes les clés en main pour travailler sous git avec ce dernier site. Tout faire prendra plus de temps par contre vous serez vraiment à l'aise ensuite.
C'est visible et très bien expliqué. Revenir dessus de temps en temps ne fait jamais de mal !

Xavier Muller - 2021

C++ et associés

Ce langage est très riche, cette section ne ressemblera que des ressources sur les fondamentaux du langage et outils associés.

Le langage

Ressources:

Quand vous vous poser une question sur une fonctionnalité, regarder une de ces vidéos peut être intéressant pour vous. Attention ça peut être assez technique par moment et pas forcement utile dans la vie courante. Aussi le C++ ne se limite pas à ces vidéos, il y a pas mal de concepts non abordés qui sont le plus souvent bien plus simple à appréhender

Xavier Muller - 2021

CMake

On peut appeler CMake un méta-système de construction, c'est lui qui va générer des fichiers de configuration pour un outil de construction comme make ou ninja et ce dernier enverra des instructions au compilateur (gcc ou clang). Les fichiers CMakeLists.txtcontiennent les informations nécessaires pour produire des bibliothèques et exécutables avec une configuration spécifique.

Programmation logiciel

Programmation logiciel

Déboguage d'un programme

:^)

Programmation embarquée