Outils pour utilisateurs

Outils du site


issue121:c_c

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue121:c_c [2017/06/10 07:10] d52frissue121:c_c [2017/06/11 14:07] (Version actuelle) auntiee
Ligne 1: Ligne 1:
 **I recently started working on a project using Google’s Go programming language. As I had previously only completed the tour and a few minor tasks, this was my first experience using it for a larger project. Over the course of the project, I am essentially creating a web app (linked to a PostgreSQL database). I won’t go into the details of the actual project, but I will be sharing what I’ve learned so far.** **I recently started working on a project using Google’s Go programming language. As I had previously only completed the tour and a few minor tasks, this was my first experience using it for a larger project. Over the course of the project, I am essentially creating a web app (linked to a PostgreSQL database). I won’t go into the details of the actual project, but I will be sharing what I’ve learned so far.**
  
-J'ai commencé récemment à travailler sur un projet utilisant le langage de programmation Go de Google. Comme je n'en avais fait qu'une rapide présentation et quelques tâches mineures auparavant, c'était ma première expérience de son utilisation sur un grand projet. Durant le projet, j'ai principalement créé une appliWeb (liée à la base de données PostgreSQL). Je ne rentrerai pas dans les détails réels du projet, mais je vais partager ce que j'ai déjà appris.+J'ai commencé récemment à travailler sur un projet utilisant le langage de programmation Go de Google. Comme je ne l'avait regardé que brièvement et fait quelques tâches mineures auparavant, c'était ma première expérience de son utilisation sur un grand projet. Durant le projet, j'ai principalement créé une appli Web (liée à une base de données PostgreSQL). Je ne rentrerai pas dans les détails du véritable projet, mais je vais partager ce que j'ai déjà appris.
  
 **The Setup **The Setup
Ligne 39: Ligne 39:
 Les bases Les bases
  
-Il y a une présentation sur https://tour.golang.org/welcome/1 qui est un très bon point d'entrée. Naturellement, vous pouvez suivre aussi d'autres tutoriels ou livres.+Il y a une présentation sur https://tour.golang.org/welcome/1 qui est un très bon point de départ. Naturellement, vous pouvez suivre aussi d'autres tutoriels ou livres.
  
 Une fois que vous avez écrit votre code, vous pouvez, soit le compiler en utilisant « go build », soit le lancer localement en utilisant « go run ». Même si Go peut être utilisé pour des projets autres que les applis basées sur le Web, je ne vais pas rentrer dans le détail pour ces utilisations. Une fois que vous avez écrit votre code, vous pouvez, soit le compiler en utilisant « go build », soit le lancer localement en utilisant « go run ». Même si Go peut être utilisé pour des projets autres que les applis basées sur le Web, je ne vais pas rentrer dans le détail pour ces utilisations.
Ligne 53: Ligne 53:
 Les modèles Les modèles
  
-le code exemple de dessus est principalement une application « hello world », mais recouvrant quelques aspects que j'ai eu du mal à implémenter correctement d'entrée de jeu. Quelques notes importantes : +le code exemple ci-dessus est principalement une application « hello world », mais recouvrant quelques aspects que j'ai eu du mal à implémenter correctement d'entrée de jeu. Quelques notes importantes : 
-• À la ligne 23 (https://gist.github.com/lswest/feed0fb8685b0d9bed03e864a78f7f1a#file-app-go-L23), la section Funcs(funcMap) incorpore des filtres personnalisés à utiliser dans le modèle (dans ce cas, activez l'utilisation du filtre ToLower).+• À la ligne 23 (https://gist.github.com/lswest/feed0fb8685b0d9bed03e864a78f7f1a#file-app-go-L23), la section Funcs(funcMap) incorpore des filtres personnalisés à utiliser dans le modèle (dans ce cas, cela active le filtre ToLower).
 • Sur la même ligne, la ligne ParseGlob est nécessaire pour travailler avec des modèles partiels, car, sans cela, la ligne {{define “header”}} ne sera pas analysée, conduisant à des erreurs. Si vous n'utilisez pas un répertoire tmpl, ParseGlob(“*”) devrait fonctionner. • Sur la même ligne, la ligne ParseGlob est nécessaire pour travailler avec des modèles partiels, car, sans cela, la ligne {{define “header”}} ne sera pas analysée, conduisant à des erreurs. Si vous n'utilisez pas un répertoire tmpl, ParseGlob(“*”) devrait fonctionner.
  
-De manière générale, cette préparation de modèles marche de manière proche de Jinja2, pour tous ceux qui l'ont utilisé. Les éléments dynamiques (tels que ceux chargés à partir de « structs ») sont entre accolades, et tous les champs commencent par un « . », indiquant que vous vous attendez à trouver la variable dans l'objet courant. Les filtres sont attachés aux variables via un pipe. Mettre plusiers filtres à la queue leu-leu devrait fonctionner (bien que je ne l'aie pas testé).+De manière générale, cette préparation de modèles fonctionne de manière proche de Jinja2, pour tous ceux qui l'ont utilisé. Les éléments dynamiques (tels que ceux chargés à partir de « structs ») sont entre accolades, et tous les champs commencent par un « . », indiquant que vous vous attendez à trouver la variable dans l'objet courant. Les filtres sont attachés aux variables via un pipe. Mettre plusieurs filtres à la queue leu-leu devrait fonctionner (bien que je ne l'aie pas testé).
  
 **URLs **URLs
Ligne 73: Ligne 73:
 Si vous lancez « go run » dans le répertoire du projet, une navigation à http://localhost:8081/ restituera un fichier « hello world » d'aspect habituel. Si, cependant, vous regardez à http://localhost:8081/Lucas, au lieu de ça, la page vous accueillera avec le nom donné dans l'URL. Si vous lancez « go run » dans le répertoire du projet, une navigation à http://localhost:8081/ restituera un fichier « hello world » d'aspect habituel. Si, cependant, vous regardez à http://localhost:8081/Lucas, au lieu de ça, la page vous accueillera avec le nom donné dans l'URL.
  
-L'exemple est très basique - si vous voulez un peu de travail personnel, essayez (par exemple) de mettre correctement le nom en capitales, même s'il est en minuscules dans l'URL.+L'exemple est très basique - si vous voulez un peu de travail personnel, essayez (par exemple) de mettre correctement le nom en majuscules, même s'il est en minuscules dans l'URL.
  
-Le code lui-même est relativement lisible - à la ligne 15, je paramètre la page générique et et, ensuite, je vérifie que la longueur du chemin du L'URL (tout ce qui est après le domaine) estt plus grande que la longueur de « / » (soit 1). Si cette longueur est plus grande, cela signifie qu'un paramètre est transmis (dans ce cas, le nom) et la variable « hello » est écrasée par le nouveau titre/contenu. Si elle plus courte ou égale à 1, alors il s'agit juste de la page de secours, sans aucun changement (car il n'y a pas de déclaration « else »).+Le code lui-même est relativement simple - à la ligne 15, je paramètre la page générique et, ensuite, je vérifie que la longueur du chemin du L'URL (tout ce qui est après le domaine) est plus grande que la longueur de « / » (soit 1). Si cette longueur est plus grande, cela signifie qu'un paramètre est transmis (dans ce cas, le nom) et la variable « hello » est écrasée par le nouveau titre/contenu. Si elle plus courte ou égale à 1, alors il s'agit juste de la page de secours, sans aucun changement (car il n'y a pas de déclaration « else »).
  
-Après la déclaration » if », le reste de la fonction viewHandler est dictée par le paquet de modèles. funcMap contient un « map » ( pour tout personne qui utilise Python, ça ressemble aux dictionnaires) de noms de filtres et les fonctions vers lesquelles il dirige. Ils peuvent être aussi utilisés dans des fonctions personnalisées. Après cela, les fichiers de modèles sont chargés. La fonction « template.Must » assure simplement que le programme lance une erreur et une panique si aucun fichier de modèle n'est trouvé. Enfin, la fonction ExecuteTemplate réclame un ResponseWriter (« w »), le nom du modèle à charger (sur la base de son nom de fichier) et l'objet à charger (« hello »).+Après la déclaration » if », le reste de la fonction viewHandler est dicté par le paquet de modèles. funcMap contient un « map » ( pour toute personne qui utilise Python, ça ressemble aux dictionnaires) de noms de filtres et les fonctions vers lesquelles ils dirigent. Ils peuvent être aussi utilisés dans des fonctions personnalisées. Après cela, les fichiers de modèles sont chargés. La fonction « template.Must » assure simplement que le programme lance une erreur et une panique si aucun fichier de modèle n'est trouvé. Enfin, la fonction ExecuteTemplate réclame un ResponseWriter (« w »), le nom du modèle à charger (sur la base de son nom de fichier) et l'objet à charger (« hello »).
  
 **Structs **Structs
Ligne 85: Ligne 85:
 Structs Structs
  
-Les lignes 9-12 crée un struct nommé « Page » qui contient deux champs de chaînes de caractères Title (titre) et Content (contenu). Principalement, ça crée un type de donnée spécial. les « structs » peuvent être initialisées via Page{Title, Content}. Naturellement, plus il y a des variables incluses, plus l'initialisation est longue.+Les lignes 9-12 créent un struct nommé « Page » qui contient deux champs de chaînes de caractères Title (titre) et Content (contenu). Principalement, ça crée un type de donnée spécial. les « structs » peuvent être initialisées via Page{Title, Content}. Naturellement, plus il y a de variables incluses, plus l'initialisation est longue.
  
 **Debugging **Debugging
Ligne 101: Ligne 101:
 Conclusion Conclusion
  
-Ceci est un exemple très basique, mais il devrait servir de point d'entrée pour quiconque serait intéressé pour travailler avec Go. Si quelqu'un tombe sur des problèmes, ou a des suggestions pour finaliser l'une des étapes dans une version plus « à la mode de Go », n'hésitez pas à me le faire savoir à lswest34+fcm@gmail.com.  De même, si vous avez une quelconque demande pour un sujet d'article que je pourrais traiter, vous pouvez me le dire par mail.+Ceci est un exemple très basique, mais il devrait servir de point d'entrée à quiconque voudrait travailler avec Go. Si quelqu'un tombe sur des problèmes, ou a des suggestions pour finaliser l'une des étapes dans une version plus « à la mode de Go », n'hésitez pas à me le faire savoir à lswest34+fcm@gmail.com.  De même, si vous avez une quelconque demande pour un sujet d'article que je pourrais traiter, vous pouvez me le dire par mail.
  
issue121/c_c.1497071446.txt.gz · Dernière modification : 2017/06/10 07:10 de d52fr