Tout comme on fait attention au style d'écriture utilisé lorsque l'on rédige un livre, en plus d'appliquer les règles d'orthographe et de grammaire, il faut également appliquer des règles stylistiques lorsqu'on rédige du code.
Cette conférence présente plusieurs aspects à prendre en compte pour rédiger du code de qualité, allant de la structure globale d'un programme à la mise en page de son code, en passant par les noms des variables.
objectif général :
Acquérir les bases méthodologiques de la résolution d'un problème devant conduire à la réalisation d'un programme informatique.
objectifs opérationnels :
Connaître les étapes de résolution d’un problème.
Stocker et traiter des données simples
Communiquer avec l’algorithme.
Contrôler le flux d’exécution des instructions.
Traiter des données composites.
Définir et utiliser des procédures et des fonctions.
A la fin de ce chapitre, vous serez en mesure de :
• Créer un projet java sous Intellij IDEA
• Créer des applications Java en mode console en respectant les bonnes pratiques en programmation
• Déclarer une variable en Java
• Comprendre le mécanisme d’initialisation des variables en Java
• Analyser et exécuter une instruction en Java
• Comprendre le mécanisme d’affectation en Java
• Apprendre l'affichage, la saisie des données et la lecture des différents types
• Utiliser les fonctions prédéfinis de la classe Math
• Distinguer entre l’usage des deux structures : if et switch
• Ecrire des programmes en java avec les structures de contrôle : condition et boucles
• Déclarer des variables de type tableau
Tout comme on fait attention au style d'écriture utilisé lorsque l'on rédige un livre, en plus d'appliquer les règles d'orthographe et de grammaire, il faut également appliquer des règles stylistiques lorsqu'on rédige du code.
Cette conférence présente plusieurs aspects à prendre en compte pour rédiger du code de qualité, allant de la structure globale d'un programme à la mise en page de son code, en passant par les noms des variables.
objectif général :
Acquérir les bases méthodologiques de la résolution d'un problème devant conduire à la réalisation d'un programme informatique.
objectifs opérationnels :
Connaître les étapes de résolution d’un problème.
Stocker et traiter des données simples
Communiquer avec l’algorithme.
Contrôler le flux d’exécution des instructions.
Traiter des données composites.
Définir et utiliser des procédures et des fonctions.
A la fin de ce chapitre, vous serez en mesure de :
• Créer un projet java sous Intellij IDEA
• Créer des applications Java en mode console en respectant les bonnes pratiques en programmation
• Déclarer une variable en Java
• Comprendre le mécanisme d’initialisation des variables en Java
• Analyser et exécuter une instruction en Java
• Comprendre le mécanisme d’affectation en Java
• Apprendre l'affichage, la saisie des données et la lecture des différents types
• Utiliser les fonctions prédéfinis de la classe Math
• Distinguer entre l’usage des deux structures : if et switch
• Ecrire des programmes en java avec les structures de contrôle : condition et boucles
• Déclarer des variables de type tableau
Cette diapositive présente l'essentiel de langage C# pour des personnes qui'ont deja des notions en POO, dans cette présentation on traite les bases de C# comme les variables, les boucles, les classes, les exception, et aussi on traite des concepts avancés comme les delegates et les événements.
The document provides an overview of web development. It discusses the objectives of the workshop which are to understand the differences between web designers and developers, and gain knowledge of front-end technologies like HTML, CSS, and JavaScript. It also explains why the web is popular due to being cross-platform, writable once and usable everywhere. Key topics covered include the history of the web, definitions of web designers versus developers, front-end versus back-end development, and an overview of HTML, CSS, and JavaScript.
Cette diapositive présente l'essentiel de langage C# pour des personnes qui'ont deja des notions en POO, dans cette présentation on traite les bases de C# comme les variables, les boucles, les classes, les exception, et aussi on traite des concepts avancés comme les delegates et les événements.
The document provides an overview of web development. It discusses the objectives of the workshop which are to understand the differences between web designers and developers, and gain knowledge of front-end technologies like HTML, CSS, and JavaScript. It also explains why the web is popular due to being cross-platform, writable once and usable everywhere. Key topics covered include the history of the web, definitions of web designers versus developers, front-end versus back-end development, and an overview of HTML, CSS, and JavaScript.
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...Horgix
This is the slide deck of a talk by Alexis "Horgix" Chotard and Laurentiu Capatina presented at the MongoDB Paris User Group in June 2024 about the feedback on how PayFit move away from a monolithic hell of a self-hosted MongoDB cluster to managed alternatives. Pitch below.
March 15, 2023, 6:59 AM: a MongoDB cluster collapses. Tough luck, this cluster contains 95% of user data and is absolutely vital for even minimal operation of our application. To worsen matters, this cluster is 7 years behind on versions, is not scalable, and barely observable. Furthermore, even the data model would quickly raise eyebrows: applications communicating with each other by reading/writing in the same MongoDB documents, documents reaching the maximum limit of 16MiB with hundreds of levels of nesting, and so forth. The incident will last several days and result in the loss of many users. We've seen better scenarios.
Let's explore how PayFit found itself in this hellish situation and, more importantly, how we managed to overcome it!
On the agenda: technical stabilization, untangling data models, breaking apart a Single Point of Failure (SPOF) into several elements with a more restricted blast radius, transitioning to managed services, improving internal accesses, regaining control over risky operations, and ultimately, approaching a technical migration when it impacts all development teams.
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Erlang
1. Erlang
République Algérienne démocratique et populaire.
Université Dr. Tahar Moulay – Saïda
Département d’informatique
Matière : DAMSC
Master 2 RISR
2019/2020
Présenté par : Enseigné par :
• Kamar MEDDAH • Mr. khobzaoui
4. I. Historique
▪ Langage de programmation créé par Ericsson (acteur de
l’industrie des télécommunication).
▪ Créé en 1986.
▪ Open Source depuis 1998
▪ Conçu pour les autocommutateurs (centres téléphoniques).
▪ Fonctionne sur Unix, Windows et systèmes embarqués.
▪ Utilise un bytecode compact et efficace et/ou du code natif.
6. II. Caractéristiques
▪ Langage simple et épuré.
▪ Gestion de la concurrence très léger.
▪ Pas d’états partagé entre les processus.
▪ Passage des messages asynchrones.
▪ Les processus doivent êtres en mesure de s’exécuter tout le
temps.
▪ Adapté pour les applications réparties temps-réel.
7. II. Caractéristiques
▪ Permet une mise à jour de l'application sans interruption.
▪ Permet une répartition de la charge et une migration de service.
▪ Pas d’états partage pas de variable mutable.
▪ Langage fonctionnel.
▪ Parallélisassions grâce à des processus concurrents.
▪ Faiblement typé (typage dynamique).
▪ Basé sur « pattern matching ».
8. II. Caractéristiques
▪ Interpréteur interactif.
▪ Outils de gestion graphiques.
▪ Base de données intégrée avec langage de requête.
▪ Permet de booter un nœud sur le réseau.
9. II. Caractéristiques
▪ Interpréteur interactif.
▪ Outils de gestion graphiques.
▪ Base de données intégrée avec langage de requête.
▪ Permet de booter un nœud sur le réseau.
10. ii. Variables
▪ Le nom des variables commencent toujours par une majuscule.
▪ Une variable est affectée une seul fois (immutable).
▪ 1> X = 10.
▪ 12
▪ 2> X = 20.
▪ ** exeption error : no match of right hand side value 20
11. iii. Ponctuation
▪ Le point suivi d’un espace ou d’un saut de ligne : marque la fin
d’une expression ou d’une fonction.
▪ Le point virgule : sépare les clauses (définition d’une fonction).
▪ La virgule : sépare les éléments d’une structure (liste ou tuples) Ou
les arguments d’une fonction.
13. i. Qu’est ce qu’un langage fonctionnel
▪ Pas de procédure uniquement des fonctions renvoyant quelque
chose.
▪ Les fonctions sont des objets du langage à part entière et
peuvent être manipulées.
▪ Aucune structure de boucle impérative n'existe.
▪ Récursivité.
14. i. Qu’est ce qu’un langage fonctionnel
▪ Une variable est affectée une seul fois (immutable).
▪ Pas de limite sur la taille des entiers manipulés.
▪ L'unification permet une expression claire :
▪ fact (0) -> 1;
▪ fact (N) -> N * fact (N-1).
16. IV. Pourquoi Erlang
▪ Lors d'une mise à jour, on souhaite mettre à jour l'application
sans couper la connexion de tous nos utilisateurs (encore plus
critique dans le cas des websockets).
▪ Dans le cadre d'une application de petite taille, on souhaite
partager le même code pour le serveur HTTP et le serveur de
WebSocket (et ne pas avoir 2 codes / 2 langages à maintenir).
17. IV. Pourquoi Erlang
▪ Lors d'une montée en charge il faut être capable de distribuer
une partie de notre application pour répondre aux besoins sans
affecter le reste de l'application.
▪ Une requête qui crash ou un processus qui échoue (échec d'un
traitement d'image, d'un envoie d'email...) ne doit pas affecter
toute l'application.
▪ Erlang apporte une solution à toutes ces problématiques grâce
à la structure OTP (Open Telecom Platform).
20. IV. Pourquoi Erlang
▪ Cette solution consiste à découper notre application sous forme
de processus ultra légers.
▪ Ces processus vont être capable de communiquer ensemble à
travers un système de message interne à la machine virtuelle.
▪ Les processus seront accompagnés d'un superviseur capable
d'agir en cas d'erreur.
▪ Cette structure donne d'ailleurs lieu à une philosophie propre à
Erlang « Let it crash »
22. IV. Pourquoi Erlang
▪ Si notre processus rencontre une erreur qui n'est pas gérée, le
processus crash et un nouveau processus est démarré pour le
remplacer.
▪ Ce processus redémarre dans un état "stable" et l'application
ne se trouve pas affecté.
25. IV. Pourquoi Erlang
▪ Cependant, si un processus crash en boucle le problème sera
alors remonté et pourra affecter l'ensemble de votre application.
▪ Si la base de données est inaccessible par exemple, le
processus n'arrivera pas à se reconnecter lors de son
démarrage et au bout d'un certain nombre de redémarrage, fera
planter le superviseur parent.
27. VI. Types
▪ Les entiers.
▪ Les réels.
▪ Les atomes.
▪ Les tuples.
28. VI. Types
▪ Les listes.
▪ Les booléens.
▪ Les chaines de caractères.
▪ Les dictionnaires.
29. i. Entier
▪ Aucune taille le limite sauf celle de la mémoire.
▪ Par défaut, les entier sont exprimes en base 10.
▪ Possibilité de définir un entier dans une base comprise entre 2 et
16 (Base#value).
31. ii. Réel
▪ Présentation 64 bits.
▪ Un numérique est un réel s’il contient un point.
▪ Exemple:
▪ X = 1.2345.
▪ Bin = -2.67e+5.
32. iii. Atome
▪ Ce n’est pas une constante numérique.
▪ Un atome est un littéral, une constante dont la valeur est le nom.
▪ Un atome commence par une lettre minuscules suivie par des lettre
minuscules ou majuscules ou des chiffre ou ‘_’ ou ‘@’.
▪ Il peut aussi être une suite de caractères délimitée par des simple
quotes.
34. iv. Tuples
▪ Un ensemble de taille fixe d’éléments.
▪ Exemple:
▪ Tup = {1,2, ’’salut’’,nom}.
35. v. Listes
▪ Un ensemble de taille variable d’éléments.
▪ Une liste chainer.
▪ Exemple:
▪ Arr = [1,2, ’’salut’’,nom].
36. vi. Booléen
▪ Les booléens sont un cas particulier d’atomes
▪ Exemple:
▪ T = true.
▪ F = false.
37. vii. Chaines de caractères
▪ Une chaine de caractères est une liste d’entiers compris entre 0 et 255
(code ASCII).
▪ Délimitée par double quotes.
▪ Possibilité de définition directement sous forme d’une liste.
▪ Support de l'Unicode.
▪ Exemple:
▪ Str = ‘’Salut’‘.
▪ Str2 = [83, 97, 108, 117, 116].
38. viii. Dictionnaire
▪ Un dictionnaire est représenté par une liste de tuples a deux
éléments.
▪ Exemple:
▪ Dict = [{a, 1}, {b, 2}].
40. VII. Fonction
▪ Une fonction possède :
▪ une partie gauche (clause) qui sera unifiée alors de l'appel.
▪ une partie droite (corps).
▪ Une déclaration se termine par un . (point).
▪ une clause se termine par un ;(point-virgule) si d'autres clauses
suivent.
43. i. Guard
▪ Les gardes permettent de tester les paramètres.
▪ Une garde ne peut contenir que des opérations simples.
44. I. Guard
▪ Exemple:
▪ -module(test).
▪ -export([display/1,start/0]).
▪ display(N) when N > 10 -> io:fwrite("greater then 10");
▪ display(N) when N < 10 -> io:fwrite("Less than 10").
▪ start() -> display(11).
45. ii. If statement
▪ Les ‘if’ est une séquence des conditions.
▪ Des que une condition est vérifiée on applique le membre droit.
▪ La séquence termine souvent par true.
46. ii. If statement
▪ Exemple:
▪ If
▪ X>Y -> ’’X est plus grand que Y’’;
▪ true -> ‘’Y est plus grand que X’’
▪ end.
48. IX. Modules
▪ Un module est déclaré par la construction -module (name).
▪ Déclare les fonctions exportées avec leur arité : -export([f/1,g/2]).
▪ Seules les fonctions exportées peuvent être appelées de l'extérieur
du module.
51. X. Conclusion
• Erlang est utilisée pour construire des application temps réel
massivement évolutifs avec des exigences de haute disponibilité.
• Erlang est utiliser pour créer de nombreux technologie populaire
notamment RabbitMQ et couchDB.
• Erlang est un langage un peu trop "simple" qui entraine beaucoup
de boiler plate et de répétition, ce qui peut le rendre frustrant par
moment.
• Elixir un langages basé sur erlang permet une meilleur
organisation du code et offre une série de module afin de travailler
plus simplement avec les outils fournis par erlang.