Skip to content
Snippets Groups Projects
Commit b28d24f1 authored by Thomas Carrara's avatar Thomas Carrara
Browse files

update readme, reprendre à partir de l'étape 4 (là c'est l'heure de la pause goûter)

parent 912c1e13
No related branches found
No related tags found
No related merge requests found
...@@ -5,11 +5,11 @@ ...@@ -5,11 +5,11 @@
### Précédemment, dans _la vie_ ### Précédemment, dans _la vie_
Il était une fois une team de développeurs aguéris, fort d'une expérience quasi-infinie (i.e. 5 ans et demi) dans le domaine des applications web (chacuns ses délires on ne juge pas). Il était une fois une team de développeurs aguéris, fort d'une expérience quasi-infinie (i.e. 5 ans et demi) dans le domaine des applications web (chacuns ses délires on ne juge pas).
Un beau jour, alors que la migration de l'appli vers Java 12 battait son plein et que le pôle de recherche squattait le baby depuis 40 minutes, Jaquot Tlin, jeune dév en devenir, eut une idée. Une idée qu'aucun de ses compères développeurs ne pouvait appréhender : Un beau jour, alors que la migration de l'appli vers Java 12 battait son plein et que le pôle de recherche squattait le baby depuis 40 minutes, Jaquot Tlin, jeune dév en devenir dingue de Dave, eut une idée. Une idée qu'aucun de ses compères développeurs ne pouvait appréhender :
  \- _"Eh les gars, et si au lieu de faire encore et toujours du Java (qui a presque 25 ans), on gardait ce qu'on avait là et on regardait comment faire du Kotlin ? On a quasiment rien à changer, et ça pourrait nous simplifier notre vie de développeurs pas toujours facile !"_   \- _"Eh les gars, et si au lieu de faire encore et toujours du Java (qui a presque 25 ans), on gardait ce qu'on avait là et on regardait comment faire du Kotlin ? On a quasiment rien à changer, et ça pourrait nous simplifier notre vie de développeurs pas toujours facile !"_
  \- _\*silence dans l'open space\*_   \- _\*silence dans l'open space\*_
Prise de stupeur et de tremblements, la dév sénior du pôle, Eve D. Lopper, attrappa Jaquot d'un regard, l'invitant silencieusement à glisser à son bureau avec sa chaise. Prise de stupeur et de tremblements, la dév sénior du pôle, Eve D. Lopper, attrappa Jaquot d'un regard, l'invitant silencieusement à _slide_ à son bureau avec sa chaise.
  \- _"OK Jaquot écoute moi bien. J'aime les gens qui prennent des initatives. Mais j'ai pas le temps de suivre des tutos youtube sur les nouvelles techs. Tu peux me montrer en deux-deux ce qu'est Kotlin ?"_   \- _"OK Jaquot écoute moi bien. J'aime les gens qui prennent des initatives. Mais j'ai pas le temps de suivre des tutos youtube sur les nouvelles techs. Tu peux me montrer en deux-deux ce qu'est Kotlin ?"_
  \- _"Ça tombe bien j'ai justement un vieux TP d'IAGL sous la main, pousse toi, et admire..."_   \- _"Ça tombe bien j'ai justement un vieux TP d'IAGL sous la main, pousse toi, et admire..."_
...@@ -17,43 +17,59 @@ Prise de stupeur et de tremblements, la dév sénior du pôle, Eve D. Lopper, at ...@@ -17,43 +17,59 @@ Prise de stupeur et de tremblements, la dév sénior du pôle, Eve D. Lopper, at
## Étape 1 : Du Java et des Hommes ## Étape 1 : Du Java et des Hommes
Premièrement, ~~on va~~ vous allez faire du Java, parce que le Java, c'est connu. Premièrement, ~~on va~~ vous allez faire du Java, parce que le Java, c'est connu.
Rien de bien compliqué pour commencer, juste un singleton [comme il ne faut plus en faire](https://en.wikipedia.org/wiki/Singleton_pattern). Rien de bien compliqué pour commencer, juste un singleton [comme il ne faut plus en faire](https://en.wikipedia.org/wiki/Singleton_pattern) (<- c'est un lien, il [peut](https://www.conjugaisonfrancaise.com/pouvoir.html) y en avoir des utiles).
Vous vous en doutez, vu que c'est du Java et pas du Kotlin comme annoncé, vous pouvez le faire un peu où vous voulez. **MAIS** sachez que vous en aurez quand même besoin dans un futur très proche, donc on vous conseille de le faire dans le projet, dans les sources côté java. Vous vous en doutez, vu que c'est du Java et pas du Kotlin comme annoncé, vous pouvez le faire un peu où vous voulez. **MAIS** sachez que vous en aurez quand même besoin dans un futur très proche, donc on vous conseille de le faire sur un compilateur en ligne ou un projet bidon, histoire de voir si ça compile.
##### TODO (vous pouvez les cocher même si ça ne sert à rien) : ##### TODO (vous pouvez les cocher même si ça ne sert à rien) :
- [ ] Créer une classe _Image_ qui représente une image (fallait le préciser quand même) et qui comporte un titre _title_ et un url _url_ - [ ] Créer une classe `Meme` qui représente un [meme](https://en.wikipedia.org/wiki/Meme) et qui comporte un nom _nom_ et un url _url_ (ouais on fait dans la sobriété)
- [ ] Créer une classe **singleton** en _JAVA_ qui représente un dossier de favoris tout simple. Il contiendra une liste d'objets _Image_. - [ ] Créer une classe `FavDir` **singleton** en _JAVA_ qui représente un dossier de favoris tout simple. Il contiendra une liste d'objets _Meme_.
Si vous voulez des images mais que vous n'avez pas d'idée (franchement Google images c'est pas compliqué), [rendez-vous ici](https://knowyourmeme.com/memes/popular), ou prenez ceux sur la jsp. Si vous voulez des images mais que vous n'avez pas d'idée (franchement [Google images](https://duckduckgo.com/) c'est pas compliqué), [rendez-vous ici](https://knowyourmeme.com/memes/popular). Tant que c'est une image ça va (jpg, png, gif...)
## Étape 1,5 : Transformation Kotlin ## Étape 1,5 : Transformation Kotlin
Parfait, maitenant que le singleton est derrière vous, vous allez pouvoir l'oublier et le refaire. Cette fois-ci bien sûr, en Kotlin, tout beau tout propre. Parfait, maitenant que le singleton est derrière vous, vous allez pouvoir l'oublier et le refaire. Cette fois-ci bien sûr, en Kotlin, tout beau tout propre, donc ne l'oubliez pas trop vite non plus.
Pensez à jeter un œil aux slides, on vous en a parlé dedans. Pensez à jeter un œil aux slides, on vous en a parlé dedans.
Alternativement, les plus chanceux d'entre vous qui utilisent IntelliJ (pas Eclipse, dommage) peuvent directement [traduire du code Java en Kotlin](http://m.quickmeme.com/img/e4/e4e66bc437fb19844ca10d26f09dbe951a27b8e1da93b6054bb1f87a8ff06a62.jpg). **PRO TIPS** : _object_, _data class_
Alternativement, les plus chanceux d'entre vous qui utilisent IntelliJ (pas Eclipse, dommage) peuvent directement [traduire du code Java en Kotlin](http://m.quickmeme.com/img/e4/e4e66bc437fb19844ca10d26f09dbe951a27b8e1da93b6054bb1f87a8ff06a62.jpg), mais y'en a qui ont essayé, ils ont eu des problèmes...
##### TODO :
- [ ] Créer les mêmes classes que dans l'étape 1, mais en _Kotlin_ (donc `Meme` et `FavDir`).
- [ ] Lui ajouter un bloc _init_ qui print un truc dans la console (histoire de voir qu'il est bien initialisé une seule fois)
- [ ] Lui rajouter la méthode `addMeme(meme: Meme)`, pour ajouter un meme
- [ ] Et aussi `getAll()` qui (vous vous en doutez, bilingue que vous êtes) retourne à l'appelant la liste des memes du _FavDir_
## Étape 2 : Qui a parlé de DB ?
Joli, **normalement** ça devait pas être trop long (surtout en _Kotlin_ hein), et vous devriez avoir un beau singleton.
Sinon nan pas une DB, c'est un peu overkill.
Par contre, les ["DB"](https://i.imgflip.com/136hly.jpg), on peut faire. Par exemple... les écritures dans un fichier ? Il ne faudrait tout de même pas que vous perdiez votre liste de memes à chaque reboot de l'application.
Bon pour une fois, vous ne partez pas de rien. Vous avez dans le package _tools_ de _src/kotlin/...._ un fichier _FileManager_ qui vous servira de "DB". Par contre il n'y a pour l'instant qu'une méthode, pour savoir si une ligne non commentée est présente. Mais elle vous servira de base (ça ou [Google](www.bing.com) ofc).
##### TODO : ##### TODO :
- [ ] Créer la même classe que dans l'étape 1, mais en _Kotlin_. - [ ] Agrémenter le _FileManager_ de deux méthodes, l'une pour charger le contenu du fichier dans votre _FavDir_, l'autre pour ajouter un meme au fichier.
- [ ] Lui rajouter la méthode _getAll()_, qui renvoie la liste des images qu'elle contient. - [ ] Ajouter de la meilleure façon possible ([vous serez jugés](https://vignette.wikia.nocookie.net/aceattorney/images/8/87/Judge_Anime.png/revision/latest?cb=20160501045659)) un moyen pour que votre _FavDir_ se charge tout seul (sans bouton du front ni rien)
- [ ] Et aussi _addImg()_ qui prend en param une image et qui (vous vous en doutez, bilingue que vous êtes) ajoute une image à la liste des images de la classe - [ ] Faire (théoriquement, la pratique vient après) en sorte d'ajouter le meme au fichier quand vous l'ajoutez dans votre _FavDir_
## Étape 2 : Ajouter des images a ses favoris ## Étape 3 : Ajouter des memes a ses favoris
Joli, normalement ça devait pas être trop long (surtout en _Kotlin_ hein), et vous devriez avoir un beau singleton. Dans l'onglet de l'étape 2, vous trouverez un formulaire pour ajouter un meme dans votre _FavDir_. Pour la petite histoire, un dev avait déjà fait tout ça, mais il s'est fait virer... Fou de rage, il a prit cette implem, a supprimé deux trois trucs, et a _force push_, puis est parti... Bref, triste histoire...
Dans l'onglet de l'étape 2, vous trouverez un formulaire pour ajouter une image dans.... bah rien en fait, puisque c'est vous qui venez de faire votre dossier de favoris. Pour la petite histoire, un dev avait déjà fait tout ça, mais il s'est fait virer... Il a prit cette l'implem, a supprimé deux trois trucs, et a _force push_, puis est parti... Bref, triste histoire... Donc vous l'avez deviné : il va falloir remettre en place ce mécanisme, qui récupère la data du formulaire dans le back, et qui l'ajoute aux favoris. É qué sapelorio _Controller_. É _Service_, puisque faire des choses dans un controller (autres qu'appeler un service) c'est sale, et vous devriez avoir honte de le faire !
Donc vous l'avez deviné : il va falloir remettre en place ce mécanisme, qui récupère la data du formulaire dans le back, et qui l'ajoute aux favoris. É qué sapelorio _Controller_. Et un service, puisque faire des choses dans un controller (autres qu'appeler un service) c'est sale, et vous devriez avoir honte de le faire !
##### TODO : ##### TODO :
- [ ] Récupérer la data du formulaire dans un controller _Kotlin_ (vous gérez les noms vous êtes grands). - [ ] Récupérer la data du formulaire dans un controller _Kotlin_ (vous gérez les noms vous êtes grands).
- [ ] Créer un service _Kotlin_ qui se chargera de l'ajout de votre image dans la liste des favoris. Il devra appeler la méthode _addImage(String url)_ de la classe _imageDao.kt_. - [ ] Créer un service _Kotlin_ qui se chargera de l'ajout de votre meme dans la liste des favoris (et donc implicitement de votre fichier).
**PRO TIPS :** **PRO TIPS :**
- Il ne faut pas oublier que vous avez Spring derrière tout ça (pour votre plus grand BONHEUR). Et Spring a sa façon de faire. - Il ne faut pas oublier que vous avez Spring derrière tout ça (pour votre plus grand BONHEUR). Et Spring a sa façon de faire.
Donc n'oubliez pas : Donc n'oubliez pas :
- Les annotations @Service, @Entity, @Autowired, et j'en passe - Les annotations @Service, @Controller, @Autowired, et j'en passe
- Les modifieurs éventuels à ajouter aux annot (open, lateinit...) - Les modifieurs éventuels à ajouter aux cibles des annotations (open, lateinit...)
Si tout se passe bien, ça marche, et votre fichier est bien modifié en conséquence.
## Étape 3 : Lister tout votre bordel ## Étape 4 : Lister tout votre bordel
Bon c'est pas tout ça, mais il faut du visuel ! Bon c'est pas tout ça, mais il faut du visuel !
Donc pour cette troisième étape, vous devez afficher votre dossier de favoris dans l'onglet de l'étape 3 (vous suivez). Par contre, étant donné qu'on ne lit pas votre code du futur, la jsp est un peu broken pour le moment, mais j'ai confiance en vous ! Si Bob peut le réparer alors vous aussi ! Donc pour cette troisième étape, vous devez afficher votre dossier de favoris dans l'onglet de l'étape 3 (vous suivez). Par contre, étant donné qu'on ne lit pas votre code du futur, la jsp est un peu broken pour le moment, mais j'ai confiance en vous ! Si Bob peut le réparer alors vous aussi !
...@@ -61,7 +77,7 @@ Donc pour cette troisième étape, vous devez afficher votre dossier de favoris ...@@ -61,7 +77,7 @@ Donc pour cette troisième étape, vous devez afficher votre dossier de favoris
- [ ] Modifier la méthode du controller qui affiche les données dans l'onglet de l'étape 3 afin qu'elle affiche votre liste d'images favorites. - [ ] Modifier la méthode du controller qui affiche les données dans l'onglet de l'étape 3 afin qu'elle affiche votre liste d'images favorites.
- [ ] Faites vous "plaisir" et ajouter un tri sur la liste, ça va assez vite - [ ] Faites vous "plaisir" et ajouter un tri sur la liste, ça va assez vite
## Étape 4 : Gotta go fast ## Étape 4,5 : Gotta go fast
Mmmmmh... c'est bizarre... ça met environ 40 ans à se charger... Mmmmmh... c'est bizarre... ça met environ 40 ans à se charger...
Je pense qu'il est temps de faire un truc qu'on sait bien faire : se plaindre de l'infra. Je pense qu'il est temps de faire un truc qu'on sait bien faire : se plaindre de l'infra.
Ils ont mis en place la pire DB jamais vue dans l'histoire des pires DB. Elle. Est. Lente. Mais... très lente. Mais le client n'aime pas la lenteur, lui il veut des trucs jolis et qui vont vite. Ils ont mis en place la pire DB jamais vue dans l'histoire des pires DB. Elle. Est. Lente. Mais... très lente. Mais le client n'aime pas la lenteur, lui il veut des trucs jolis et qui vont vite.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment