La chronique du dimanche #1

Posted on

En quoi consiste cette chronique

Retrace ma semaine de cours :

  • Afin de me remettre en tête des connaissances acquises et les partager
  • Prodiguer des conseils, ou support de cours numériques
  • Éventuellement quelques extrait de codes
  • Tout cela généralement dans le domaine informatique puisque c'est un blog perso certes, mais de développeur

Le rythme :

Le nom étant assez évocateur... la chroniques sera hebdomadaire, et seras publié le dimanche. Cela me permettra ainsi de me prendre un peu de temps le week-end pour des révisions, et être au point pour la semaine suivante

Commençons donc

L'analyse descendante, les 7 Commandements :

  1. La définition du problème tu fera, de l'attention aux connaissances induite tu aura
  2. Une division en sous problèmes tu résoudra
    • Pour réduire la complexité
    • Itératif le processus sera
    • Jusqu'à un niveau tribale tu divisera
    • Petit le gradient entre les étapes tu gardera (entre 2 et 6)
    • à ceux que la somme des sous problèmes soient égale au problème attention tu fera (à tout niveau de la division)
  3. Trop tôt tu ne détaillera pas
  4. De la structure de donné trop tôt, tu ne te préoccupera pas.
    • Le plus tard possible tu la choisira
    • être capable de justifier pourquoi, capable tu sera
  5. Les Algorithmes tu fera, les Algos complexes tu détaillera
  6. Tourner à la main tes Algorithmes tu fera
    • Si l'intuition que tu as merdé tu as, de la merde tu as fait
    • Les entrées et sorties tu vérifiera
  7. Sur la lisibilité de ton code tu veillera
    • Ton programme conforme au cahier des charges tu veillera
    • À commenter ton code et le documenter tu veillera
    • De l'efficacité tu ne te préoccupera pas
  8. Tout tu refera !
    • Mauvaise intuition = trop tard
    • Dans le déni tu ne continuera pas
    • En cas d'impasse, remonter d'un niveau dans l'analyse et tu recommencera

La programmation objet + Java

Tout est objets !

Un objet est un petit être intelligent, il est composé de deux choses : Des caractéristiques d'états et Des fonctions / méthodes lui permettant de communiquer avec d'autres objets ou lui même Généralement les caractéristiques d'états sont protégés (seul l'objet y a accès) afin d'éviter des bugs structurel. Les méthodes généralement sont public (afin que le monde extérieur puisse communiquer avec l'objet), parmi les méthodes s'en trouvera toujours une : Le constructeur,qui permettra à l'objet d'initialisé ses caractéristiques d'états.

Concernant Java

Les méthodes (y compris le constructeur) peuvent être surchargés, c'est à dire que un même nom de méthodes permet de faire la même chose grâce à des type et un nombre de paramètre différent. En Java toute les variables de types "objets" ne sont pas des objets en réalité mais des références (pointeurs) d'une instance objet :
Point A = new Point(0.0, 1.5, "Pa"), B;
B = A;
Avec ces lignes de codes, on a pas copié le contenu du Point A dans Le Point B, on a entré dans B l'adresse mémoire (référence) contenu dans A : A et B pointent sur la même instance de Point : L1 : A --> Instance de Point | B L2 : A --> Instance de Point <-- B

Prog Web - PHP

Commencer à réfléchir son code PHP en objets selon le Modèle MVC (Modèle Vue Contrôleur)

Les bases de données

Les fonctions type mysql_connect()... on oublie ! Place à la PDO C'est un outil permettant de gérer les différents gestionnaire de bases de données tous de la même manière. ça permet de rendre le code plus facilement maintenable, modifiable, et portable d'un SGBD à un autre. Utilisation Basique :
$host="localhost";
$base="m3104_2";
$login="root";
$passe="";
$driver="mysql";
$port="3306";
$db = new PDO("$driver:host=$host;dbname=$base;port=$port", $login, $passe); // créé un obj PDO connecté à la BDD
l'idéale ensuite est de préparer les requêtes, cela permet de s'assurer à 99% de ne pas avoir de problèmes d'injection SQL, et de rendre plus efficaces les instructions SQL répétitives.
$req = $db->prepare("INSERT INTO genres VALUES (:id , :nom)");
$req->execute( array(":id" => $id, ":nom" => $nom) );
:machin étant les truc à préparer et à sécuriser vous remarquerez que l'on exécute via $req et non pas via $db et le array dans exécute est un tableau associatif précisant que doit remplacer quoi.

Travail en collaboration

Méthodes agiles

Résumé de la semaine : UML/Cahier des charges (méthodes peu agiles) -> Poubelle. On fait place aux méthodes agiles, par exemple la méthodes SCRUM. Les principes de cette méthodes sont : La transparence : en mettant l'équipe sur un modèle de hiérarchie horizontale, tout en mettant un langage commun entre management et développement. L'inspection : Afin de mettre au point régulièrement des problèmes pouvant émerger, variation non conforme à l'objectif visé. * L'adaptation : ce type d'organisation existe avant tout pour s'adapter, produire du code modulaire pour s'adapter au besoins potentiellement évolutif du client.

Schéma du fonctionnement de SCRUM : Schéma Scrumm

Les méthodes agiles permettent d’entretenir le dialogue avec le client et éviter l’effet tunnel (Foncer tête baisser dans le développement, et ce rendre compte à là fin que le produit ne répond pas/pus aux besoins du client)

Git

Git est un logiciel de gestion de version, idéale pour l'utilisation de méthodes agiles. Il permettra de développer un projet, de créer plusieurs versions, et de les maintenir séparément si besoin (via les brancher). De travailler à plusieurs sur un même dépôts. Taguer des révisions, récupérer le code tel qu'il était avant... pas trop envie de réécrire tout mon TD sur Git, je demanderai à mon prof si je peux le transmettre ici (probablement de manière raccourcie), néanmoins voici quelques commandes utiles : init : initialise un depot git clone : afin de cloner un dépôt (distant ou non) add : Ajoutes des fichiers au depot local git (afin de les commit) commit : versionne les fichiers modifié via add (commit -a équivaut à add * puis commit, commit -m "Message du commit") pull : met à jours le dépôt local (via un dépôt de référence) push : met à jours le dépôt distant (à partir des modif du dépôt local) branch : créé une nouvelle branch merge : fusione deux branches checkout : permet de naviguer entre les branches

Pour corriger les betises de loic : git reset –hard hashDuCommitVouluDernier // reinitialise le depot au commit souhaité git push –force origin master // met a jours le depots distant en corrigeant les erreurs