8ème séquence - Générateur de Blog

Construction d’un générateur de blog (type Wordpress)

Langage libre
Equipe libre
Une semaine sans échange de projet

Qu’est ce qu’un blog ?
Un blog peut être envisagé comme une série d’articles.
Un article est généralement constitué d’un titre, d’un contenu, d’une date de publication, d’une date de MàJ, du nom de l’auteur, de commentaires, d’une newsletter…

Egalement, se référer au post de Yannick : Moteur de blog : qu’est ce qu’un moteur de blog ?

Notions à aborder :

  • Base de données,
  • Serveur,
  • Conception d’un projet.

Les équipes :
- Laurine, Mohamed, Nicolas : BlogGenerator - Node.js, SQL, HTML, CSS
- Adriel, Gwen, Zakia
- Fayal, Florian
- Del, Lydia : Blog-LyDel - JS, SQL, HTML, CSS

Journal Gwen

20.01.2020

On a commencé un nouveau projet avec @Adriel et @Zakia . On a pour cible les 8-12 ans pour un générateur de blog dans un cadre scolaire. Marine étais avec nous toute la journée et nous a apporté son point de vu et ses questionnement.

Après mangé j’ai installé Rust avec @agathe_begault et j’ai hâte de jouer avec. J’ai fait une bonne sieste puis on est retourné sur le projet, toujours à choisir comment on s’est organisé sur ce qu’on voulait.

On a décider de nommer notre projet boup et le code serverur sera PHP on fera des appels SQL.

21.01.2020

Absente

22.01.2020

Plénière sur base de donnée SQL, à revoir pour bien comprendre

Installation de php et d’apache avec @Adriel et compréhension de la création d’un serveur avec apache.
Création du dépot « Boup » sur github.

On a revu la syntaxe HTML et j’ai appris qu’on pouvais mettre du PHP avec du HTML.

J’apprécie le fait d’être passée sous linux, ça facilite les installation et fait gagner du temps sur ma machine.

  • Dans terminal
    Echap+f = avancer d’un mot
    Echap+b = reculer d’un mot
    Ctrl+w = effacer un mot

  • Dans vim
    e = avancer d’un mot
    b = reculer d’un mot
    O = ajouter une ligne au dessus
    o = ajouter une ligne en dessous
    hjkl = se déplacer
    "+y = copier
    "+yG = coller la totalité du fichier (si on est tout en haut)
    gg = être tout en haut
    G = aller tout en bas

24.01.2020

Pendant ce forum ouvert, j’ai été en remote avec un ami. On a vu les bases de rust et on a tenté de comprendre la logique de ce langage. J’ai vu qu’il fallais précisé la taille des différents types (i8 = int de 8bits) on a pas mal galérer avec les incrémentations, il ne faut pas écrire i++ mais i += 1

On a pas mal débattu sur ce qu’on voulais faire avec ce langage et ce qui était réellement possible. J’ai beaucoup aimé discuter avec son mentor qui nous a pas mal aidé.

J’ai pas été beaucoup en contact avec le reste des apprenantes mais j’ai bien avancé et je pense continuer au prochain forum ouvert.

Journal (lundi 20)

  • J’ai appris le modèle « Qui ? (la cible) – Quoi ? (quels besoins?) – Comment ?
    (fonctionnalités) » pour s’aider à la création d’un projet.

  • J’ai appris le modèle relationnel d’une base de donnée. J’ai appris que
    mongoDB était sur un modèle « document ». J’ai appris les choix
    d’implémentations et de configurations qu’une BDD peut impliquer.

  • J’ai appris l’existence du « Behavior Driven Development » et du langage
    Ghirken.

Journal (mardi 21)

  • J’ai appris que NodeJS était un langage plutôt rapide dans la gestion du serveur car il était orienté évènement. Je me demande si la programmation orienté évènements, signaux, et messages sont en réalité la même chose avec un nommage différent en fonction du langage, ou s’il y a des différences.

  • J’ai appris qu’on chargeait un module dans une variable en NodeJS :

    const module = require('module');
    

    Ici, je l’ai stocké comme une constante (en lecture-seule), mais je pourrais très bien la mettre dans un let et auquel cas la modifier plus tard. Je suis assez surpris par ce comportement.

Journal (jeudi 23)

  • J’ai appris qu’il y avait une différence entre les chaînes de caractères entre " et entre ' pour le php. La première autorise les séquences comme \n pour insérer un retour à la ligne, la seconde écrit littéralement \n en résultat.

  • J’ai appris l’existence de asciidoc, un langage de formattage de texte léger qui date de 2003. Bien qu’il en soit pas aussi populaire que le markdown, et qu’il ne soit pas aussi répandu, il est reconnu par GitHub.

  • J’ai appris les bases de asciidoc et de asciidoctor grâce à l’excellente documentation.

Journal (jeudi 23)

  • J’ai appris qu’il y a trois différents types de CV :

    • Chronologique
    • Fonctionnel
    • Chrono-fonctionnel
  • Je ne sais pas ce que ça vaut, mais j’ai inconsciemment fait un CV « chrono-fonctionnel ».

  • J’ai appris que je ne pouvais pas déclarer les variables dans n’importe quel ordre en python.

Journal de Lydia

SEMAINE 1

Générateur de blog LyDel

  • 20/01/2020

La cible :
Humain lettré francophone

Les besoins :
Serveur
Base de données
Contenu divers

Les fonctionnalités :
Création compte
Création d’articles avec au choix : textes, images, videos, audio
Publication d’articles (publics/privés ou brouillons)
Titre, Corps de texte, (Auteur), Date de publication
(Barre de recherche : mots clés ou date)
(Suppression de compte, d’articles)
(Bot personnalisable : modérateur (spam, mot interdit …))
(Commentaires)
(Preview)

Langage : JS, HTML, CSS
JS orienté objet

  • 22/01/2020

Base de données - SQL - commandes basiques

Contenu de ce que l’on va écrire dans une classe

Table = colonne du tableau
Une table c’est une class
Dans la table on va créer des instances

PUBLICATION UTILISATEUR
Titre (string) Identifiant
Date (date)
Commentaire (string)
Contenu (sting)
Auteur (utilisateur)
Id (int) Id (int)

CREATE database IF NOT EXISTS  [ada];

CREATE TABLE IF NOT EXISTS publication(
	nom_id INT NOT NULL AUTO_INCREMENT
	nom VARCHAR(20) NOT NULL
	PRIMARY KEY (nom_id)
);

INSERT INTO publication(nom)
VALUES
(‘valeur1, ‘valeur2’)

(Id de type INT
Id permet d’identifier l’objet - généralement c’est ce qu’on appelle la clé primaire (Primary Key)
Pour chaque table il y a un id
Ajout de « not null » = doit être renseigné

Titre varchar(20) = définir taille max de la Sting 
 |-> nom de l’attribut

Comment mettre des choses dans la table ?

On a une table qui s’appelle Publication.
On veut insérer un enregistrement dans cette table.
INSERT into publication(« titre », « contenu », « date ») dans l’ordre où s’est défini(pas obligé, à vérifier) dans la table

Nicolas travaille sur MySQL

Select permet de récupérer les datas
SELECT * FROM public = toutes les datas
SELECT titre_publication FROM public = récupérer datas dans titre_publication
Possible d’afficher les info de plusieurs tables en même temps
SELECT titre_publication FROM public WHERE au

  • 23/01/2020

Masterclass
Welcome to the Jungle

(Récupérer la présentation)

Plateforme de recrutement
2500 entreprises qui recrutent (moitié Start up, moitié +250 employés)

Il faut être clair sur période début et poste voulu
Essayer candidature spontanée, c’est apprécié

Oh my job : metiers technologie -> aller sur le lien pour voir le témoignage video des gens du métier

Behind the code :
Career hacking : conseil tech

Business model de WTTJ = plan expansion, positif quand, prévision d’embauche, quelle catégorie de levée de fonds,
Entreprise sur le site paient abonnement mensuel pour leur présence sur le site

Metabase
WTTJ utilise ça

CTO

Dev et lead dev : responsible du projet et gère les next steps (= un dev expérimenté)

Être capable de communiquer le langage de ma compétence
Penser à enregistrer les numéros des recruteurs

Avoir en tête de délais de réponse

Linkedin
important de partager, liker
Intro est regardée/lue - comment la personne se décrit

Faire des points sur titre du poste qu’il soit aligné avec les taches que j’exécute
Cela impact les possibilité de carrière future
Est ce que les responsabilité sont en ligne avec ce que je fais vraiment.
FAIRE DES POINTS REGULIERS (genre tous les 6 mois)
Demander grille salariale de la boite
Idée de reconnaissance derrière tout ça

Demander le seuil de base et le plafond max - demander fixe et variable

Grille salariale peut changer par équipe (commerciaux ont une grosse partie variable, contrairement au dev par exemple)

Négociations sur le fixe dans l’idée
Si ça passe pas, peut envisager diminuer variable pour augmenter le fixe.
Idée de distribution différente en restant dans l’idée d’augmenter

A voir :
Faire un site responsive sur mobile : https://getbootstrap.com/
Grafikart formation SQL : https://www.grafikart.fr/tutoriels/mysql
Les jointures
Merice uml

Plénière mardi 21 en NodeJS

  • On a créé deux fichiers HTML très simple, « accueil.html » et « parametres.html » qui contiennent des boutons qui pointe d’une page à l’autre.

  • On a installé nodeJS sur nos machines pour utiliser le langage javascript du côté « serveur » (c’est-à-dire pas dans un navigateur) :

    apt install nodejs # sur Ubuntu
    brew install nodejs # sur MacOS
    pacman -S node # Sur Arch Linux
    # Équivalent windows ? Pleins de méthodes possibles.
    ...
    
  • on a fait un test pour vérifier si NodeJS fonctionnait, en écrivant une ligne de javascript :

    $ echo "console.log('Hello, world');" > hello.js
    $ ls
    accueil.html	hello.js  parametres.js
    $ node hello.js
    Hello, world
    $ 
    
  • On a créé un fichier « webapp.js » :

    // Dans le fichier webApp.js
    var http = require('http');
    
    http.createServer(function (requete, reponse) {
      reponse.write('Hello World!');
      reponse.end();
    }).listen(8080);
    

    Le résultat (dans le terminal) :

    $ ls
    accueil.html  hello.js  parametres.html webapp.js
    $ node webapp.js
    # Il ne se passe rien
    

    Dans le navigateur, à l’adresse localhost:8080 et se rendre compte que ça marche !

  • L’intérêt d’utiliser NodeJS par rapport à du html ou du javascript pure réside dans la possibilité de faire toutes les manipulations serveur en Node : Notamment celles de base de données.

  • On va essayer d’afficher le fichier « accueil.html » au lieu de la chaîne de caractère « Hello World! ». C’est quand même un peu plus intéressant. On découvre la méthode .sendFile().

  • Le bout de code :

    var http = require('http');
    
    http.createServer(function (requete, reponse) {
      reponse.write();
      reponse.end();
    }).listen(8080);
    

Boup

Plateforme de blog pour enfant

Créer un générateur de blog

Nom projet: Boup
Langages : PHP

Contraintes:

  • Articles
    titre
    date de publi
    auteur
    MAJ
    commentaires
    contenu
    News Letter

  • Base de données

  • Serveur

  • Conception

Générateur de blog dans un cadre scolaire pour des enfants de 8-12 ans lettrés.
Partage de contenu enfants/profs
initiation à l’écriture, format blog
les parents doivent avoir accès en lecture
archivage > export

  • Cible/Publique concerné:
    enfants 8-12ans
    Lecteurs
    Scolaire
    professeur
    administration contenue
    ouverture / fermeture serveur

  • Besoins:
    Modération par professeur (valider ou refuser)

  • Fonctionnalités:
    Gestion d’articles
    Gestion de permissions

    insituteur 1e lv valider/supprimer/archiver post && gestion de permissions élèves
    élèves 2e lv selon choix instituteur && publier/modifier/supprimer
    famille/autres 3e lv lecture seule
    1 article peut contenir image/vidéo/audio/etc
    Visibilité article
    publication : 5 enfants valident pour publier ou le prof
    Accès public pour les parents
    Export plus tard
    Gestion des comptes (Mot de passe)

  • Interface:
    Ludique, simple et intuitif

  • Article:
    titre [string]
    contenu [texte]
    date de publication [date]
    utilisateur(s)
    visibilité [bool]
    brouillon [bool],

  • Utilisateur:
    UID (identifiant unique)
    Nom
    Prénom
    Mot de passe

  • Validation:
    article ID
    utilisateur ID

mardi 21 jan

  • php (serveur) => Apache => multithreading (client en JS)
  • Node => JS => événementiel (serveur et client en JS)
  • on utilise Nodejs pour nous simplifier l’utilisation des bases de données via serveur sécurisé.
  • parse : extraire d’une chaîne de caractère un élément précis

Mercredi 22 jan

Jeudi 23 Jan