add org files

This commit is contained in:
rick 2022-04-02 17:47:23 +02:00
parent b033d056a2
commit a8cba90b08
Signed by: Rick
GPG key ID: 4A6223D66294EB20
7 changed files with 658 additions and 2 deletions

View file

@ -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.

View file

@ -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

View file

@ -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 isnt 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

View file

@ -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]]

1
nec/confs/index.org Normal file
View file

@ -0,0 +1 @@
Vous pouvez retrouver ici mes notes issues de conférences.

307
nec/moocs/powershell.org Normal file
View file

@ -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 | |

View file

@ -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
)
))