diff --git a/nec/confs/devfest/2019/daltonisme.org b/nec/confs/devfest/2019/daltonisme.org new file mode 100644 index 0000000..6212332 --- /dev/null +++ b/nec/confs/devfest/2019/daltonisme.org @@ -0,0 +1,99 @@ +#+title: Au delà des couleurs, des interfaces adaptées au daltonisme +#+date: <2021-10-22 ven.> +#+html_link_up:../roadmap.html + +* Introduction + + [[https://devfest2019.gdgnantes.com/sessions/au_dela_des_couleurs__des_interfaces_adaptees_au_daltonisme/][Conférence DevFest 2019]] - [[https://twitter.com/Laoraw][Twitter]] + + Conférence faite par Laura Wacrenier, UX Designer chez SonarSource (éditeur de SonarQube). + +* Le daltonisme + + Le daltonisme touche 8% de la population masculine caucasienne, 7% et 4% dans les populations asiatique et africaine. Seul 0.5% des femmes sont touchées par le daltonisme. + Cela s'explique par le fait que le gêne responsable du daltonisme est le gêne X. + + Dans un oeil normal, des connes bleu, vert et rouge tapissent le fond de la rétine. Le daltonisme va faire muter ou disparaitre un ou des connes. + La forme de daltonisme la plus courante est celle qui affecte le conne vert: enrivon 6% des hommes dans le monde sont touchés. + + Les couleurs vertes se fondent avec les couleurs jaunes et rouges, le violet disparait aussi. + +* Bonnes pratiques + +** Contrastes + +*** Des textes + +**** C'est quoi ? + + Le contraste est la différence de couleur entre la couleur du texte et celle de son arrière plan. + + Il existe des recommendations pour l'accessibilité: les WCAG (Web Content Accessiblity Guidelines). Ils ont fait plusieurs notes pour savoir si un site est accessible: + - A :: note minimum pour avoir un texte lisible + - AAA :: tout le monde peut lire le texte + +**** Les outils + + Il existe de nombreux sites web qui permettent de voir le contraste sur son site: + - webaim color contrast checker + - tanaguru contrast finder : conseille des palettes + - les outils intégrés aux navigateurs + - plugins pour les outils de design + +*** Des éléments non textuels + + Il est aussi possible de s'appuyer sur les WCAG en utilisant 2 couleurs proches. Un bon exemple est les routes sur l'interface de GMaps (bande de couleurs collées les unes aux autres). + + Pour se rendre compte rapidement si des éléments non textuels sont accessibles, il suffit de mettre l'interface avec un filtre noir et blanc. Si on ne s'y retrouve plus, il n'y a pas + assez de contraste. Il existe aussi des outils pour ce faire: + - plugins pour les outils de design + - Let's get colorblind :: plugin FireFox + - Color Oracle :: logiciel pour passer l'interface du PC en noir et blanc (a aussi des filtres pour les différents types de daltonisme) + + *La couleur n'est qu'une information supplémentaire et ne doit pas la contenir.* + +*** Des Formes + + Rajouter des formes pour préciser des informations, mettre le bouton en valeur avec une icone et un fond. Exemples: + - Spotify et le cercle en dessous du mode aléatoire s'il est sélectionné. + - SonarQube et les espaces blancs entre 2 couleurs sur des diagrammes camemberts + +** Iconographie + + Mettre une icone symbolisant l'action / le message. Rajouter du texte pour expliquer en cas de soucis et non pas juste encadrer le soucis en rouge. + +** Labels / Description de couleur + + Mettre la légende du graphique directement dans les parties concernées. Rajouter /le nom basique/ de la couleur sous celle-ci lorsqu'on peut en choisir plusieurs. + +** Web 2.0 + + Le standart du web 2.0 souhaite qu'on souligne les liens. Cela permet de les rendre plus visibles. + +** Le mode spécial daltonien + + Il ne devrait pas exister ou du moins être activé par défaut. Les daltoniens n'ont pas forcément le temps / envie de chercher dans les paramètres. + +** En conclusion + + - contraste texte minimum AA + - ne pas utiliser les couleurs comme signifiant + - utiliser la texture, icones, labels, contraste de formes à la place + - liens soulignés + +* Comment convaincre l'équipe + + Les personnes en situation de handicap sont une minorité, cela peut freiner les supérieurs à faire des aménagements pour moins de 5% des utilisateurs. Cependant, + *ces améliorations sont bénéfiques à tout le monde*. Personne ne se plaint d'un site web trop facile à lire. + + #+BEGIN_QUOTE + Solve for one, extend to many. ---Microsoft Inclusive Design + #+END_QUOTE + + Exemples de cas où une interface accessible bénificie à tout le monde: + - handicape temporaire (cataracte...) + - indiquation de la couleur pour la chemise noir et bleue foncée pour éviter de se tromper avec une mauvaise luminosité + - contraste fort sur gmaps pour pouvoir voir rapidement l'application lorsqu'il y a beaucoup de soleil + + *Tout le monde peut-être distrait ou impatient. Tout le monde vieillit.* La mise en place d'un standart maintenant permet de nous faciliter la vie dans plusieurs années. + Les designs trop simples sont l'équivalent d'un auto-sabotage. diff --git a/nec/confs/devfest/2019/opensource_promotion.org b/nec/confs/devfest/2019/opensource_promotion.org new file mode 100644 index 0000000..472a97a --- /dev/null +++ b/nec/confs/devfest/2019/opensource_promotion.org @@ -0,0 +1,46 @@ +#+title: Promouvoir son projet open-source comme une rock star ! +#+date: <2021-10-25 lun.> +#+html_link_up:../roadmap.html + +* Introduction + + [[https://devfest2019.gdgnantes.com/sessions/promouvoir_son_projet_open_source_comme_une_rock_star__/][Conférence DevFest 2019]] - [[https://github.com/zenika-open-source/promote-open-source-project][Slides et cheatsheet]] - [[https://twitter.com/tbetous][Twitter]] - [[https://twitter.com/FranckAbgrali][Twitter]] + + Conférence résumant ce que les auteurs ont vécu pour promouvoir leur projet. (@tbetous @FranckAbgrali). + +* Le README + + Le nom du projet ne doit pas être trop long ou avoir trop de "buzzname" dedans. + + On peut ajouter la licence à la fin du README et *le structurer avec des éléments de formatage* du Markdown (ou autre format utilisé pour le fichier). Cela permet d'avoir + un README plus attractif et jolie. *Il est aussi recommandé de faire des sections* afin de pouvoir guider facilement l'utilisateur. L'ajout d'un GIF de démo est aussi utile + pour montrer comment utiliser le logiciel. + + Les badges permettent aussi d'indiquer rapidement des informations. + +** La documentation + + Ajouter la documentation dans le README peut s'avérer lourd sur le long terme. Il vaut mieux utiliser un service externe (wiki de GitHub, Vuepress avec Netifly, Docz, Docusaurus...). + +* Les stars + + Le nombre de stars influence indirectement l'avis des utilisateurs (plus de stars = bonne santé du projet). + + 1. Communiquer le projet aux proches / collègues afin d'avoir une première base de stars + 2. Communiquer ensuite le projet aux autres via des canaux de communications comme Reddit, HackerNews, Human Coders, Decto, ProductHunt... + 3. Communiquer sur toutes les plateformes d'un coup pour profiter d'un coup de buzz + 4. Ne pas négliger les petits canaux de communications + + La meilleure période de la semaine pour communiquer se situe entre mardi et jeudi. + + Comme pour les recommandations Youtube, GitHub Trending met en avant des projets via un algorithme (qu'on ne connait pas). + +* Et après ? + + Pour continuer à communiquer sur le projet, il faut faire: + - faire des articles (sur les technos du projet, quel problème il résout...) + - faire des conférences dessus + - des mises à jours régulières (pour montrer que le projet est actif) + - *organiser les issues pour permettre aux personnes de voir facilement comment contribuer* + - *remercier les contributeurs (tweet, section dans le README...)* + - construire sa communauté sur Slack, Discord... pour pouvoir mieux communiquer avec les utilisateurs et contributeurs diff --git a/nec/confs/devfest/2019/sommeil.org b/nec/confs/devfest/2019/sommeil.org new file mode 100644 index 0000000..2db6149 --- /dev/null +++ b/nec/confs/devfest/2019/sommeil.org @@ -0,0 +1,118 @@ +#+title: Le sommeil, à la recherche du temps perdu +#+date: <2021-10-21 jeu.> +#+html_link_up:../roadmap.html + +* Introduction + + [[https://devfest2019.gdgnantes.com/sessions/le_sommeil__a_la_recherche_du_temps_perdu/][Conférence DevFest 2019]] -- [[https://github.com/joow/sommeil][Dépôt Git de la conférence]] + + Cette conférence n'a pas été faite par un professionnel mais se base sur les travaux scientifiques les plus récents sur le sommeil. + +* Qu'est ce que le sommeil ? + + Le sommeil est un état physiologique où on perd la notion du monde extérieur. C'est une état partagé par la quasi totalité des espèces. + Il permet de récupérer aussi bien au niveau physique que mental. + +* Pourquoi on s'endort ? + +** La Synchronisation + + *On s'endort afin de synchroniser notre horloge interne.* Notre corps base sa synchronisation sur la lumière, c'est l'équivalent du [[https://fr.wikipedia.org/wiki/Network_Time_Protocol][protocole NTP]] pour les humains. + + Au XXe siècle, 2 scientifiques se sont enfermés dans une installation sans lumière. Ils ont commencé à avoir un cycle de sommeil de 15h et 9h d'éveil. + Le rythme circadien humain est basé sur un cycle de 24h et la lumière permet de resynchroniser ce cycle. + + Environ 40% de la population se couche tôt et 30% se couche tard. Cette particularité est génétique et héréditaire. + + Si on se réveille avant l'heure de fixé par notre système, le cerveau n'est pas encore complètement allumé. Certaines parties peuvent ne pas "marcher", par exemple: le controle des émotions. + +** La Molécule + + Le corp génère une molécule tout au long de la période d'éveil: *l'adénosine*. À partir d'une certaine concentration, cela signale au corp qu'il faut aller se coucher. + *C'est un moyen de pression pour aller dormir.* + +* Les différentes phases du sommeil + + Il existe 2 grandes phases: + - sommeil lent (NREM[fn:1]) + - sommeil paradoxal (REM[fn:2]) + + Le sommeil est découpé en cycle durant lesquels on passe du sommeil léger à profond puis à nouveaux léger avant de passer en sommeil paradoxal. + On a entre 3 et 6 cycles par nuit de ce type. + +** Sommeil lent + + Il se déroule en 3 phases: + + 1. endormissement (5 à 20 minutes) + 2. sommeil léger (50% du temps de sommeil[fn:3]) + 3. sommeil profond (la phase qui nous permet de récupérer le plus) + +*** Sommeil profond + + Cette phase permet de consolider sa mémoire. + + L'humain a une RAM qui stocke toutes les informations de la journée: l'hippocampe. L'équivalent du disque dur, la mémoire à long termes, est le cortex. + Losque l'on dort, cela permet de vider sa RAM dans son disque dur et de se souvenir des différents éléments de la journée. + + *Ne pas dormir assez empeche de vider complètement la RAM.* Certaines informations seront perdues en plus parce qu'elles ne seront pas stockées dans le cortex. + De plus, on va pouvoir retenir moins de choses pendant la journée parce que la RAM est déjà en partie remplie. + +** Sommeil Paradoxal + + Lors de cette phase, le corp est paralysé et les yeux bougent sous les paupières. Il y a une forte acitvité cérébrale, parfois plus intense qu'en journée. Cela est dû aux nombreuses + communiquations qui se font entre les différentes parties du cerveau. + C'est aussi durant cette phase qu'on fait des rêves. Freud était le premier a avoir émis l'hypothèse que le cerveau produisait les rêves. + + Si l'on pensait avant que les rêves étaient constitués des différents moments de la journée, des études récences ont montré qu'ils sont en fait constitué des émotions ressenties + mis en scène dans des situations différentes. + + Cela permet d'évacuer les émotions de la journée et de créer de nouvelles connexions synaptiques. + +* Combien de temps doit on dormir ? + + Il faut dormir entre *7 et 9 heures*. Le meilleur temps de sommeil est 8 heures. Il faut bien sûr plus de temps pour les enfants et encore plus pour les nourrissons. + Si on ne dort pas assez, cela génère *une dette du sommeil* qui n'est pas récupérable (cf. [[*Sommeil profond]]). + +** Et la sieste ? + + La sieste est une bonne béquille si on dort bien. La NASA a autorisé la sieste pour tout son personnel. Elle ne sert cependant à rien si le sommeil est mauvais. + +* Comment bien dormir ? + + Si on dort mal, il faut aller voir le médecin mais éviter de prendre les somnifères s'il en prescrit. Il est préférable de suivre une thérapie comportementale. + + Il faut : + - avoir des heures régulières de couchés (même le week-end) + - avoir une activité physique régulière + - se détendre + - ne pas prendre de caféine ou d'alcool + - pas de lumières, d'appareil électronique (la lumière bleue..) + +* Et l'informatique ? + + Il faut faire des applications avec moins de notifications. Utiliser les capteurs et les maisons connectées pour détecter le meilleur moment pour aller dormir. + Cela permettrait de réguler la température et la luminosité pour optimiser le sommeil. + +* Ressources pour aller plus loin + +** Livre + + Un livre est recommandé à la fin de la conférence: *The Sleep Solution*. + +** Liens + + Ces liens sont disponibles en fin de slides. + + - [[https://peterattiamd.com/matthewwalker1/][Why we sleep (podcasts)]] + - [[https://arxiv.org/abs/1805.02544][Need for Sleep: the Impact of a Night of Sleep Deprivation on Novice Developers' Performance]] + - [[https://qz.com/1301123/why-eight-hours-a-night-isnt-enough-according-to-a-leading-sleep-scientist/][Why eight hours a night isn’t enough, according to a leading sleep scientist]] + - [[https://www.inserm.fr/dossier/sommeil/][Faire la lumière sur notre activité nocturne]] + +* Footnotes + +[fn:1] Not Rapid Eye movement + +[fn:2] Rapid Eye Movement + +[fn:3] Il ne précise pas s'il s'agit du temps total de sommeil ou juste de cette phase diff --git a/nec/confs/devfest/roadmap.org b/nec/confs/devfest/roadmap.org new file mode 100644 index 0000000..25f7fc8 --- /dev/null +++ b/nec/confs/devfest/roadmap.org @@ -0,0 +1,80 @@ +#+TYP_TODO: TODO VU EnCours | DONE PasDeNotes + +Fichier contenant les différentes conférences et vidéos que je prévois de regarder. Elles sont triées par ordre d'importance et par évènements. + +* DevFest + +** 2019 + +*** 21 octobre + +**** PasDeNotes [[https://devfest2019.gdgnantes.com/sessions/comment_j_ai_fini_par_deployer_a_2h_du_matin_une_application_sur_aws_pour_piloter_des_voitures_electriques_avec_un_velo_d_appartement_/][Comment j'ai fini par déployer à 2h du matin une application sur AWS pour piloter des voitures électriques avec un vélo d'appartement.]] +**** EnCours [[https://devfest2019.gdgnantes.com/sessions/privacy_granted_by_maths/][Privacy granted by maths]] +**** DONE [[file:2019/opensource_promotion.org][Promouvoir son projet open-source comme une rock star !]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/success_in_programming/][Success in Programming]] +**** VU [[https://devfest2019.gdgnantes.com/sessions/pair_design___un_moyen_de_concevoir_a_deux_ou_plus/][Pair Design : Un moyen de concevoir à deux ou plus]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/le_web__ses_frameworks_et_ses_standards___deconstruire_pour_mieux__re__construire/][Le Web, ses frameworks et ses standards : déconstruire pour mieux (re?)construire]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/duniter___la_blockchain_ecolo/][Duniter : la blockchain écolo]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/tu_packages__comment___bazel_bazel_bazel___/][Tu packages comment ? Bazel bazel bazel !]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/null__undefined_and_maybe__a_tale_of_uncertainty/][# Null, undefined and maybe, a tale of uncertainty]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/gpgpu__utiliser_la_carte_graphique_pour_accelerer_vos_applications_/][GPGPU: Utiliser la carte graphique pour accélérer vos applications!]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/l_epopee_des_polices_css_de_comic_sans_aux_fontes_variables/][L'épopée des polices CSS de Comic Sans aux fontes variables]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/dr_gopher__anatomie_du_scheduler_golang/][Dr Gopher, Anatomie du Scheduler Golang]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/performance_tuning_of_go_applications_in_cloud/][Performance tuning of Go applications in Cloud]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/interactive_web_animation_with_svg/][Interactive web animation with SVG]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/les_specificites_des_jeux_de_societe_numeriques/][Les spécificités des jeux de société numériques]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/react_en_2019/][React en 2019]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/creer_votre_device_iot_connecte_en_quelques_heures/][Créer votre device IoT connecté en quelques heures]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/go_serverless_with_cloud_functions_for_firebase/][Go “serverless” with Cloud Functions for Firebase]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/apprenez_a_securiser_votre_cluster_kubernetes_par_la_pratique/][Apprenez à sécuriser votre cluster kubernetes par la pratique]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/docker__kubernetes___istio___tips__tricks___tools/][Docker, Kubernetes & Istio : Tips, tricks & tools]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/make_your_data_fabulous/][Make Your Data FABulous]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/decouvrez_micronaut__le_framework_qui_va_faire_du_bien_a_la_jvm__/][Découvrez Micronaut, le framework qui va faire du bien à la JVM !]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/workshop___kotlin_multiplatform___mutualiser_du_code_sur_ios_et_android/][Workshop - Kotlin Multiplatform : mutualiser du code sur iOS et Android]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/project_fugu__reaching_parity_with_native/][Project FUGU, reaching parity with native]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/le_graal_d_aws___decouverte_et_prise_en_main_de_chalice/][Le graal d'AWS : Découverte et prise en main de Chalice]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/understand_your_code_with_machine_learning_on_source_code/][Understand your code with Machine Learning on Source Code]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/la_guitare_lag_hyvibe/][La guitare Lâg HyVibe]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/kubernetes_enfin_ultra_simple_et_leger_avec_k3s/][Kubernetes enfin ultra simple et léger avec K3S]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/le_futur_de_la_gestion_des_dependances_node/][Le futur de la gestion des dépendances Node]] +**** DONE [[file:2019/sommeil.org][Le sommeil, à la recherche du temps perdu]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/building_a_complex_application_with_web_components_and_litelement/][Building a Complex Application with Web Components and LitElement]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/developper_une_api_cloud_ready_avec_quarkus/][Développer une API Cloud Ready avec Quarkus]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/react_native___comment_reussir_son_application_mobile/][React Native : comment réussir son application mobile]] +**** DONE [[file:2019/daltonisme.org][Au delà des couleurs, des interfaces adaptées au daltonisme]] + +*** 22 octobre + +**** TODO [[https://devfest2019.gdgnantes.com/sessions/dis_moi_doc__quelle_it_en_2025__/][Dis moi DOC, quelle IT en 2025 ?]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/comment_le_projet_euler_m_as_donne_envie_de_refaire_des_maths/][Comment le projet Euler m'a donné envie de refaire des Maths]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/the_web_is_on__f_i_r_e________conference_/][The Web is on 🔥 F.I.R.E. 🔥 !!!]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/lucy_in_the_sky_with_ml__building_the_ultimate_beatles_tribute_app/][Lucy in the Sky with ML: Building the Ultimate Beatles Tribute App]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/building_better_products_faster__devux_is_the_new_devops/][Building better products faster: DevUx is the new DevOps]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/back_in_black_hat___comment_se_faire_pogoter__hacker__bien_comme_il_faut_/][Back in Black Hat : Comment se faire pogoter (hacker) bien comme il faut!]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/una_gitlab__le_tp_a_roulette__/][Una-Gitlab, le TP à roulette !]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/les_mains_dans_le_cambouis_avec_webassembly/][Les mains dans le cambouis avec WebAssembly]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/how_to_build_cloud_native_ci_cd_pipelines_with_tekton_on_kubernetes/][How to Build Cloud-Native CI/CD Pipelines with Tekton on Kubernetes]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/ai___robot_cat___a_smart_cat/][AI + Robot Cat = A Smart Cat]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/storybook_pour_votre_design_system__un_conte_de_fees__/][Storybook pour votre design system, un conte de fées ?]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/premiers_pas_avec_un_microcontroleur_et_google_cloud_iot_core/][Premiers pas avec un microcontrôleur et Google Cloud IoT Core]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/bootiful_testing/][Bootiful Testing]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/cloud_rocks_my_si/][Cloud ROCKS my SI]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/core__le_principe__dans_le_doute_reboot__applique_a__net/][Core, le principe "dans le doute reboot" appliqué à .NET]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/svelte__la_nouvelle_revolution_des_applications_web/][Svelte, la nouvelle révolution des applications web]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/knative__a_kubernetes_framework_to_manage_serverless_workloads/][Knative: A Kubernetes Framework to manage Serverless Workloads]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/apache_pulsar_101__architecture__concepts_et_comparaison/][Apache Pulsar 101: architecture, concepts et comparaison]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/fpga__creer_du_materiel_en_programmant/][FPGA, créer du matériel en programmant]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/creons_notre_premiere_api_avec_nestjs/][Créons notre première API avec NestJS]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/il_faut_sauver_lora/][Il faut sauver LoRa]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/data___art/][Data + Art]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/_brancher_sa_guitare_a_son_navigateur___et_le_web_deviens_rock_n_roll____/][🤘🎸 Brancher sa guitare à son navigateur : Et le web deviens rock'n'roll ! 🤘🎸]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/game_development_with_unity_from_an_android_point_of_view/][Game Development with Unity from an Android Point of View]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/build_your_own_knowledge_graph_with_weaviate_on_gcp/][Build your own Knowledge Graph with Weaviate on GCP]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/developper_de_nouvelles_applications_avec_docker_app/][Développer de nouvelles applications avec Docker App]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/parcel_js___le_bundler_dont_vous_reviez___/][Parcel.js : le bundler dont vous rêviez ;)]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/infrastructure_as_code__il_n_y_a_pas_que_terraform_dans_la_vie/][Infrastructure As Code, il n'y a pas que Terraform dans la vie]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/webauthn__le_renouveau_de_l_authentification/][WebAuthn: Le renouveau de l'authentification]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/swift_superpowers/][Swift Superpowers]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/vega_au_secours_de_vos_visualisations_de_donnees/][Vega au secours de vos visualisations de données]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/informatique_quantique__je_suis_non_binaire/][Informatique quantique, je suis non binaire]] +**** TODO [[https://devfest2019.gdgnantes.com/sessions/jamstack__ou_comment_faire_des_sites_statiques_modernes_et_rapides/][JAMstack, ou comment faire des sites statiques modernes et rapides]] diff --git a/nec/confs/index.org b/nec/confs/index.org new file mode 100644 index 0000000..5b235af --- /dev/null +++ b/nec/confs/index.org @@ -0,0 +1 @@ +Vous pouvez retrouver ici mes notes issues de conférences. diff --git a/nec/moocs/powershell.org b/nec/moocs/powershell.org new file mode 100644 index 0000000..4a8bb62 --- /dev/null +++ b/nec/moocs/powershell.org @@ -0,0 +1,307 @@ +#+title: Powershell +#+date: <2022-03-26 sam.> + +* Avant-propos + + Sources : [[https://www.skilleos.com/cours/apprendre-powershell-pour-debutants][Mooc Powershell sur Skilleos]] + + **Les commandes n'ont pas pu être testées dans le cadre de ce + Mooc.** + + Je m'appuie quelques fois sur le Bash pour expliquer comment marche + une commande. + +* Introduction + + Les commandes DOS marchent sous Powershell. Les commandes + Powershell sont appelées des *cmdlets*. Ces commandes peuvent + être système, utilisateur ou créées par l'utilisateur. Elles sont + *insensibles à la casse*, contrairement à Bash, et séparées par un + =;=. Elles retournent et affichent leur résultats sous la forme + d'objets ou de tableaux. + + Une commande Powershell se découpe en 2 parties : + =verbe-nom=. Elles sont séparées par un =-=. Il existe différents + verbes (liste non exhaustive) : + + | Verbe | Action générique | + |-------+----------------------| + | Get | récupérer | + | Set | définir | + | Start | exécuter | + | Stop | arreter | + | Out | sortir quelque chose | + | New | créer quelque chose | + + Exemple de commandes : + + * Get-Help : affiche l'aide + * Get-ChildItem : affiche les objets enfants + * Clear-Host : nettoie la console (= clear en bash) + + Il existe des alias pour certaines commandes, =Clear-Host= = =cls= + par exemple. Pour pouvoir voir la liste des alias existants : + =Get-Alias=. + + Powershell dispose de *son propre IDE*. Il se lance avec la commande + =ise=. + +* Opérateurs de comparaison + +** Nombres et String + + On retrouve les mêmes opérateurs que Bash pour *les comparaisons + mathématiques* : =-eq=, =-ne=, =-gt=, =-lt=... + + | Opérateur | Type | Effet | + |-----------+--------+-------------------------------------------------------------------| + | -eq | int | == | + | -ne | int | != | + | -lt | int | < | + | -le | int | <= | + | -ge | int | >= | + | -gt | int | > | + | -eq | string | Vérifie si 2 strings sont égales, ne prend pas en compte la casse | + | -ceq | string | Idem mais prend en compte la casse | + | -like | string | Comparaison avec une regex | + +** Connecteurs logiques + + Les opérateurs logiques sont tous simplement =-and= et =-or=. + +* TODO Pipeline + + Elle s'utilise comme en Bash, avec =|= entre les commandes. + + +ps basé sur le modèle objet + +get-printer | get-member : montre les attributs et méthode de la classe printer + +get-printer | select-object attribut,... : affiche uniquement les attributs dans la liste + +$_ utilisable pour avoir l'objet courant dans une boucle +get-printerdriver | where-object {$_ .Manufacturer -eq "HP"} pour avoir les drivers de chez HP + +-filterscript + +* Sécurité + + Il est possible d'avoir un filtre de sécurité pour interdire + l'exécution de scripts téléchargés sur des sites non officiels. + + On peut vérifier le niveau de la politique d'exécution avec + =Get-ExecutionPolicy=. ELle peut être de plusieurs niveaux : + + | Politique | Effet | + |--------------+--------------------------------------------------------------------| + | Unrestricted | On exécute tout | + | Restricted | Bloque tout | + | RemoteSigned | Demande la signature numérique de l'éditeur de script (par défaut) | + | Bypass | aucune restriction | + +* Script + + Les commentaires sur une ligne se font comme en Bash, avec un #. + Pour les blocs de commentaires, ils sont entourés par + =<# commentaires #>=. + +** Variables + + Les variables se déclarent et s'utilisent comme en Bash. Les espaces + peuvent cependant être mis lors de l'affectation de la variable : + =$variable = 5=. + + *Il est possible de multiplier les strings*, comme en Python, pour + pouvoir avoir X fois une string : ="coucou " * 5= donne + "coucou coucou coucou coucou coucou". + + Pour *faire des retours à la ligne* : =`n= dans la string. + + Pour déclarer des blocs de textes, il faut utiliser des + *here-strings*. + + #+begin_src powershell + $variable = @" + Bloc de texte + sur plusieurs lignes + "@ + #+end_src + +*** Typage + + Il est possible de typer des variables lorsqu'on les déclare : + =[type] $variable= + + On peut remplacer =type= par =string= ou =int=. + +*** Constante + + La déclaration des constantes se fait avec une commande : + =New-Variable=. Il faut lui préciser le nom ainsi que la valeur : + =New-Variable -name variable -value 1 -option Constant=. + + Il faut utiliser =Remove-Variable= pour supprimer les constantes + créées. + +*** Caste + + Si la variable est typée, il est possible de la caster. + + Pour caster en int : =[convert]::ToInt32($variable, string, int)= + +*** Formatage de string + + Pour pouvoir facilement formatter des strings, il existe + *l'opérateur -F* lors de la déclaration de la string : + ="String 1 : {0} et une variable X : {1}" -F $val,$value= + + Comme en C, il est possible de préciser des formats de valeurs à + afficher comme de l'héxadécimal à partir du décimal ou un certain + nombres de chiffres après la virgule. Exemple + *pour avoir 2 chiffres après la virgule* : + ="2 chiffres après la virgule: {0:n2}" -F 3.1419= + + [[https://social.technet.microsoft.com/wiki/contents/articles/7855.powershell-using-the-f-format-operator.aspx][Plus d'informations sur le formatage de string]]. + +** Instructions + + La structure du if est classique, on y utilise les opérateurs de + comparaisons. + + #+begin_src powershell + # le if et les else + if (variable -le val) { + # instructions + } elseif (variable -gt val ) { + # instructions + } else { + # instructions + } + + # le switch + switch (value) { + {$_ -le val} { + # instructions; + break + } default { + # instructions + } + } + #+end_src + +** Tableaux + + Un tableau se déclare avec comme une variable. Ses différents + éléments sont séparés par une virgule : =$tableau = + "elem1","elem2"=. Pour initialiser *un tableau vide*, il faut lui + assigner =@()=. + + Un tableau est un objet et on peut récupérer par exemple sa taille + via l'attribut =Count= : =$tableau.Count=. + + On accède à un élément comme un tableau en Python ou en Java : + =$tableau[index]= et on modifie une valeur de la même manière : + =$tableau[index] = val=. Une autre méthode pour sélectionner le + premier object consiste à passer par un pipe : + =$tableau | Select-Object -First 1=. + + Pour ajouter une valeur : ~$tableau += val~. + + Il existe quelques fonctions dans l'objet des tableaux : + + | Fonction | Effet | Paramètre | Valeur de retour | + |----------+----------------------------------------------------+-----------+---------------------------------------------| + | clear | vide le tableau | | | + | contains | vérifie si une valeur est présente dans le tableau | value | true si la valeur est présente, false sinon | + + Pour pouvoir trouver un élément ressemblant à une regex ou à une + valeur : =$tableau -like regex=. Il retourne l'élément + correspondant. + + Exemple de boucle pour itérer sur tous les éléments d'un tableau : + + #+begin_src powershell + for ($i = 0; $i -le ($tableau.Count - 1); $i = $i + 1) { + # instructions + } + + foreach ($i in $tableau) { + # instructions + } + #+end_src + +** Fonctions + + Si vous utilisez l'éditeur de Powershell, il faut *enregistrer puis + recharger* le script pour pouvoir exécuter les fonctions. + + Contrairement au Bash, il faut déclarer les attributs en début de + fonction. Il est aussi possible de rajouter des contraintes sur ces + paramètres (juste sur un champ de valeur, obligatoire...). Les + paramètres peuvent avoir des alias qui seront utilisés comme des + arguments. Par exemple, un paramètre avec l'alias nombre : + =fonction -nombre 1=. + + Il est possible de rajouter certaines fonctionnalités aux + fonctions. =[cmdletbinding()]= va permettre l'ajout d'options + automatiques liés aux cmdlet, comme l'option =-Verbose= qui permet + d'afficher les commentaires lors de l'exécution de la fonction. Ça + appelle automatiquement la méthode =Write-Verbose=. + + Comme dans AWK, on peut préciser des blocs d'instructions qui + seront exécutés tout le temps en début et fin de fonction. Ils sont + cependant *optionnels* et il est possible d'écrire une fonction sans + aucun bloc spécial. + + | Nom du bloc | Exécution | + |--------------+-------------------------| + | BEGIN | Au début de la fonction | + | END | À la fin de la fonction | + | PROCESS | Corp de la fonction | + + Une fonction *avec des arguments non obligatoires*, qui est appelée + sans, va utiliser *des valeurs vides* à la place. + + #+begin_src powershell + function foo { + [cmdletbinding()] + param ( + [parameter (mandatory=$true)] # le paramètre est obligatoir + [string]$var, + [validaterange (0, 10)] # le paramètre doit être compris entre 0 et 10 + [alias ("nombre")] # et a pour alias nombre + [int]$val, + [int]$bar # paramètre classique + ) + + BEGIN { + # instructions + } + PROCESS { + # instructions + } + END { + # instructions + } + } + #+end_src + +* Liste de commandes + + Il s'agit juste de montrer leur utilité, pas les arguments. Je vous + conseille de vérifier en premier comme la commande s'utilise avant + de l'exécuter. + + | Commande | Fonctionnalité | Paramètres possibles | + |---------------+-------------------------------+-----------------------------------------------------------------| + | Get-Help | Affiche l'aide | | + | Get-Service | Liste des services | | + | Get-Command | Liste de toutes les commandes | Regex pour filtrer les commandes | + | Get-Alias | Liste de tous les alias | alias pour n'avoir les informations que sur celui-ci (et Regex) | + | New-Alias | Créer un nouveau alias | | + | Get-ChildItem | Affiche les objets enfants | | + | Clear-Host | Clear en Bash | | + | Write-Output | Echo en Bash | | + | Write-Host | Idem | -foregroung pour changer la couleur du texte | + | Out-File | Ecrit dans un fichier | | diff --git a/publish.el b/publish.el index 0101227..89ebac3 100644 --- a/publish.el +++ b/publish.el @@ -6,12 +6,17 @@ ("nec" :base-directory "nec" :base-extension "org" - :exclude "www" + :exclude "cheatsheets" :publishing-directory "www/nec" :recursive t + :email "rick@gnous.eu" + :with-email t + :language fr :auto-sitemap t :sitemap-title "Notes et Cheatsheets" - :publishing-function org-html-publish-to-html + :htmlized-source t + :html-link-home "/" + :publishing-function (org-html-publish-to-html org-org-publish-to-org) ; :auto-preamble t ) ))