1
0

2 Ревизии de923d1053 ... 1edf6ab82d

Автор SHA1 Съобщение Дата
  Benoît Hubert 1edf6ab82d Begin #5 but... refactor ahead преди 7 години
  Benoît Hubert 7fd54ef57f Add 4.4 inheritance преди 7 години

+ 44 - 0
_stuff/Python Django TDD.md

@@ -0,0 +1,44 @@
+# Python / Django / TDD
+
+## Intro
+
+- Serveur web
+- Requêtes HTTP, POST / GET
+- Frameworks MVC
+- Tests fonctionnels
+- Tests unitaires
+
+## Setup / Install
+
+* Python 3
+* Git
+* pip3 install selenium
+* pip3 install Django
+* Firefox
+* geckodriver
+* EDITEUR DIGNE DE CE NOM (auto correct indentation Python)
+* BIEN INDIQUER COMMANDE python / python3
+
+## Création d'un compte GitHub ou Gogs ? ==> + TARD !!!
+
+## Python
+
+- Premier programme: `message = 'Hello' print(message)`
+- Pas de point virgule
+- Variables n'ont pas besoin d'être déclarées
+- Définition d'une fonction
+  - Pas de curly braces
+  - Indentation
+- Définition d'une classe
+  - héritage
+  - self comme 1er argument aux méthodes
+- Types de données : string, list, dict
+- Conversions str(int) etc.
+
+## Test unitaire
+
+## Django
+
+- C'est quoi ?
+  - Framework MVC
+  - Fait office de serveur web (utilise des librairies pour comprendre des requêtes HTTP et émettre des réponses HTTP)

+ 23 - 0
_stuff/Random Stuff.md

@@ -0,0 +1,23 @@
+
+```python
+def count_words(str):
+    return len(str.split(' '))
+
+message = "The show must go on!"
+print("Nombre de mots dans '%s' : %d" % (message, count_words(message)))
+```
+
+La fonction `count_words()` prend en paramètre une chaîne de caractères. Elle utilise la méthode `split()` accessibles aux chaînes (qui sont des objets !). Celle-ci fonctionne comme `split()` en JavaScript : elle sépare la chaîne selon le séparateur passé en paramètre, et renvoie une "liste" (l'équivalent des tableaux).
+
+Ensuite la fonction `len()` compte le nombre d'éléments dans la liste.
+
+Remarque ensuite ce qu'on met en arguments de `print()`. La partie entre guillemets ressemble à ce qu'on pourrait trouver en C ou en Java : `%s` et `%d` sont des "emplacements" pour des variables (chaîne et entier respectivement). Par contre, la syntaxe de la suite diffère : les valeurs à insérer dans les emplacements sont situées entre parenthèses, suite au caractère `%`.
+
+Pour terminer, le plus important à retenir de cet exemple... Voici comment on aurait écrit `count_words()` en JS :
+
+```javascript
+function count_words(str) {
+  return str.split(' ').length;
+}
+```
+

+ 1 - 1
react-tuto/src/markdown/4. Bases de Python/03. Classes et objets.md

@@ -8,7 +8,7 @@ class Vehicle:
     self.model = model
 
   def __str__(self):
-    return self.model + ' (speed: %d mph)' % (self.speed)
+    return self.model + ' (speed: %d km/h)' % (self.speed)
 
   def increase_spead(self, speed_increment):
     self.speed += speed_increment

+ 38 - 0
react-tuto/src/markdown/4. Bases de Python/04. Héritage.md

@@ -0,0 +1,38 @@
+Reste sur le même fichier `03-classes.py`. Supprime les 3 dernières lignes et ajoute :
+
+```python
+class Car(Vehicle):
+    wheels=4
+
+    def __init__(self, model, wheels=4):
+      super().__init__(model)
+      self.wheels = wheels
+
+    def __str__(self):
+      return self.model + ' (%d wheels, speed: %d km/h)' % (self.wheels, self.speed)
+
+class Airplane(Vehicle):
+    wings=2
+
+    def __init__(self, model, wings=2):
+      super().__init__(model)
+      self.wings = wings
+
+    def __str__(self):
+      return self.model + ' (%d wings, speed: %d km/h)' % (self.wings, self.speed)
+
+land_rover = Car('Land Rover')
+land_rover.increase_spead(70)
+hummer = Car('Hummer', 6)
+hummer.increase_spead(110)
+falcon = Airplane('Falcon 7X')
+falcon.increase_spead(953)
+
+print(land_rover)
+print(hummer)
+print(falcon)
+```
+
+Remarques :
+- Pas de mot-clé spécial comme `extends` pour déclarer qu'on hérite d'une classe : on met simplement le nom de la classe dont on hérite entre parenthèses, juste après le nom de la classe enfant.
+- On appelle le constructeur parent ainsi : `super().__init__(arg1, arg2, ...)` ou `arg1`, etc. sont les arguments attendus par le constructeur parent (hors `self`).

+ 11 - 0
react-tuto/src/markdown/4. Bases de Python/05. Conclusion provisoire.md

@@ -0,0 +1,11 @@
+On passe à la suite !
+
+Je t'entends demander : « Quoi, déjà fini ? Ça y est, je suis un Maître Jedi du Python ? »
+
+Heu, ne t'emballe pas, jeune padawan ! Disons que tu en sais assez pour passer à la suite !
+
+Un petit rappel tout de même, s'il ne fallait retenir qu'une chose :
+
+> **Attention** à l'indentation : une erreur d'indentation peut empêcher le programme de se lancer !
+
+Prochaine étape : un mini-serveur web en Python !

+ 33 - 0
react-tuto/src/markdown/5. Mini-serveur web/01. Mise en route.md

@@ -0,0 +1,33 @@
+```python
+from http.server import BaseHTTPRequestHandler, HTTPServer
+
+# HTTPRequestHandler class
+class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
+
+  # GET
+  def do_GET(self):
+        # Send response status code
+        self.send_response(200)
+
+        # Send headers
+        self.send_header('Content-type','text/html')
+        self.end_headers()
+
+        # Send message back to client
+        message = "Hello world!"
+        # Write content as utf-8 data
+        self.wfile.write(bytes(message, "utf8"))
+        return
+
+def run():
+  print('starting server...')
+
+  # Server settings
+  # Choose port 8080, for port 80, which is normally used for a http server, you need root access
+  server_address = ('127.0.0.1', 8081)
+  httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
+  print('running server...')
+  httpd.serve_forever()
+
+run()
+```

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
react-tuto/src/resources/markdown.json