diff --git a/pages/BPCE-SI-Notes.md b/pages/BPCE-SI-Notes.md new file mode 100644 index 0000000..acd98b1 --- /dev/null +++ b/pages/BPCE-SI-Notes.md @@ -0,0 +1,16 @@ +[accueil]() +# Notes (BPCE-SI) +## A faire +- Voir les versions de .Net qu'on peut installer sur les serveurs batch PMM. +- Millesime 2022 liasse 2033 valeur 111 sur page A à renommer 111A +- Sujet Anaïs : Immatriculation avec données manquantes en base de données : 11315 509234258 +- Modifier tâche de migration GIT avec les applis à migrer durant le sprint +- Voir Jean-Charles Bezard pour les grands clients nationnaux en fonction du grappage +- INC00100347 +- Voir avec Julien la NDS semaine du 20/01/2023 +- Regarder si on peut appareiller fichier index et xml dans SurveillanceSiren. +- Batch pour récupérer les siren confidentiels : tout le stock ou les mises à jour selon paramètre d'exécution. +## Terminé +- Correction connaissancefinclnt-v1 -> I35175 +## Suivi Anaïs +- [Feedback 27/01/2023](anais-feedback-27-01-2023) \ No newline at end of file diff --git a/pages/accueil.md b/pages/accueil.md new file mode 100644 index 0000000..63e161c --- /dev/null +++ b/pages/accueil.md @@ -0,0 +1,12 @@ +# Notes +## Rust +*  [Idées](perso-idees) +*  [Crates](perso-crates) +*  [Cross-compilation](perso-cross) +## Mono +* [Installation](perso-mono-install) +## Divers +*   [Github](perso-github) +*   [Télécommande](perso-telecommande) +## BPCE-SI +- [Notes](BPCE-SI-Notes) \ No newline at end of file diff --git a/pages/anais-feedback-27-01-2023.md b/pages/anais-feedback-27-01-2023.md new file mode 100644 index 0000000..ef09574 --- /dev/null +++ b/pages/anais-feedback-27-01-2023.md @@ -0,0 +1,12 @@ +# Suivi Anaïs +## Feedback Anaïs 27/01/2023 +### Contexte +Après le départ de Fabien Vincent, tuteur d'Anaïs, je reprends sa suite en tant que tuteur. Ça fait trois mois que je suis Anaïs dans son travail. Anaïs entame sa deuxième année à BPCE-SI au sein de l'équipe Outils commerciaux. +### Feedback +Anaïs a travaillé sur plusieurs technologies : +- MyWay v2 (MIF2 questionnaire risque) +- MyWay v1 (maintenance sur connaissance client) +- Ressources REST (corrections code sous-secteur d'activité) +Elle a les capacités pour mener à bien les tâches qui lui sont confiées. +Cependant, avec son rythme école/entreprise, la variété des suites d'outils spécifiques à chaque technologie et les différentes applications, elle a du mal à être autonome. Je pense qu'il faudrait recentrer son travail sur une technologie et une application pour lui permettre d'acquérir plus de connaissances et gagner en autonomie. +De mon côté, il faut que je l'accompagne plus sur les tests en VFO afin de s'assurer de la qualité des développements. Je dois également essayer de plus la guider en évitant de lui donner la solution. L'objectif est d'analyser le code existant et de le comprendre pour pouvoir effectuer la tâche demandée et ainsi progresser. \ No newline at end of file diff --git a/pages/index.md b/pages/index.md index 4fd0e08..f534687 100644 --- a/pages/index.md +++ b/pages/index.md @@ -13,6 +13,16 @@ Il y a 4 niveaux de titres : - `## titre 2` - `### titre 3` - `#### titre 4` +### **Gras**, *italic* etc. +|:Syntaxe:|:Résultat:|:Ok ?:| +|:`**gras**`|:**gras**|:| +|`*italic*`|*italic*|| +|`__gras__`|__gras__|| +|`_italic_`|_italic_|| +|`***gras_italic***`|***gras_italic***|| +|`___gras_italic___`|___gras_italic___|Non| +|`__*gras_italic*__`|__*gras_italic*__|| +|````texte formaté````|`texte formaté`|| ### Liens Pour une url longue à laquelle on veut associer un libellé plus parlant, on choisira la syntaxe complète : - [Wikipedia Markdown](https://fr.wikipedia.org/wiki/Markdown) @@ -22,7 +32,7 @@ Si on veut que le libellé corresponde à l'url, on pourra utiliser l'une des sy > **A noter :** Les url du type `protocole://` s'ouvriront dans un nouvel onglet, tandis que les url pointant sur des pages internes s'ouvriront par défaut dans l'onglet actuel. ### Listes #### Liste à puces -Les listes à puces peuvent avoir trois niveaux. On peut utiliser indifféremment `-`, `*` ou `+`. +Les listes à puces peuvent avoir trois niveaux. On peut utiliser indifféremment `-`, `*` ou `+`. (l'apparence de la puce ne dépend pas du symbole utilisé) - élément de liste de niveau 1 - + élément de liste de niveau 2 - - - élément de liste de niveau 3 @@ -42,13 +52,4 @@ La numérotation n'est pas automatique. |Sanchez|Paul|6 ans| |Sanchez|Elena|10 ans| |Sanchez|Sunga|44 ans| -|Sanchez|Nicolas|44 ans| -### **Gras**, *italic* etc. -|Syntaxe|Résultat| -|`**gras**`|**gras**| -|`*italic*`|*italic*| -|`__gras__`|__gras__| -|`_italic_`|_italic_| -|`***gras_italic***`|***gras_italic***| -|`___gras_italic___`|___gras_italic___| -|````texte formaté````|`texte formaté`| \ No newline at end of file +|Sanchez|Nicolas|44 ans| \ No newline at end of file diff --git a/pages/perso-crates.md b/pages/perso-crates.md new file mode 100644 index 0000000..b12c4a1 --- /dev/null +++ b/pages/perso-crates.md @@ -0,0 +1,21 @@ +[retour](accueil) +# Crates +## [notify](https://crates.io/crates/notify) +Permet d'être informé de toute modification du système de fichier.   +[exemple](https://docs.rs/notify/latest/notify/) +## [preferences](https://crates.io/crates/preferences) +Une bibliothèque pour sauvegarder des préférences pour une application, s'adapte à l'OS. +## [pest](https://crates.io/crates/pest) +Exemple ([à tester ici](https://pest-parser.github.io/#editor)) : +> `alpha = { 'a'..'z' | 'A'..'Z' }` +> `digit = { '0'..'9' }` +> `cars = {" " | "\\""}` +> `ident = { (alpha | digit)+ }` +> `txt = { (alpha | digit | cars)+ }` +> `text = { """ ~ txt ~ """ }` +> `ident\_list = { !digit ~ ident ~ (" " ~ ident)+ }` +> `text\_list = { text ~ (" " ~ text)+ }` +## [calamine](https://crates.io/crates/calamine) +Bibliothèque de traitement de fichier Excel. +## [markdown](https://crates.io/crates/markdown) +> `markdown = "0.3"` \ No newline at end of file diff --git a/pages/perso-cross.md b/pages/perso-cross.md new file mode 100644 index 0000000..fa56ba2 --- /dev/null +++ b/pages/perso-cross.md @@ -0,0 +1,15 @@ +[retour](accueil) +# Installation cross compilation (sous Debian pour windows avec sqlite) +> `cargo install -f cross`   +> `rustup target add x86_64-pc-windows-gnu`   +> `rustup target add x86_64-pc-windows-msvc`   +> `sudo apt install gcc-mingw-w64-x86-64-win32`   +> `sudo apt install g++-mingw-w64-x86-64-win32`   +## Exécution +> `cargo build --release --target x86_64-pc-windows-gnu` +ou   +> `cargo build --release --target x86_64-pc-windows-msvc` +# Avec sqlite (rusqlite) +> `sudo apt install libsqlite3-dev` +Dans `Cargo.toml`, définir rusqlite de cette manière : +> `rusqlite = {version = "0.28.0", features=["bundled"]}` \ No newline at end of file diff --git a/pages/perso-github.md b/pages/perso-github.md new file mode 100644 index 0000000..109307b --- /dev/null +++ b/pages/perso-github.md @@ -0,0 +1,4 @@ +# Github +## Token terminal +Mettre le token dans `user` et laisser `password` à blanc. +**token** : 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 \ No newline at end of file diff --git a/pages/perso-idees.md b/pages/perso-idees.md new file mode 100644 index 0000000..ca9952c --- /dev/null +++ b/pages/perso-idees.md @@ -0,0 +1,2 @@ +[accueil]() +# Idées \ No newline at end of file diff --git a/pages/perso-mono-install.md b/pages/perso-mono-install.md new file mode 100644 index 0000000..51b881a --- /dev/null +++ b/pages/perso-mono-install.md @@ -0,0 +1,13 @@ +[accueil]() +# Installation de mono +> `sudo apt install mono-complete` +## Installation de vscode-mono-debug +> `sudo apt install npm`   +> `git clone --recursive https://github.com/microsoft/vscode-mono-debug` +> `cd vscode-mono-debug` +> `npm install` +> `make` +sudo apt install gnupg ca-certificates +sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF +echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list +sudo apt update \ No newline at end of file diff --git a/pages/perso-telecommande.md b/pages/perso-telecommande.md new file mode 100644 index 0000000..457c1d2 --- /dev/null +++ b/pages/perso-telecommande.md @@ -0,0 +1,12 @@ +[retour](accueil) +# Télécommande +## Trame de données +Une trame de 8 octets pour tous les cas. +|:Taille:|:Nom:| +|10b:|:trame| +|4b|type| +|10b|voie 1| +|10b|voie 2| +|10b|voie 3| +|10b|voie 4| +|10b|voie r| \ No newline at end of file diff --git a/pages/poissons.md b/pages/poissons.md index bb3e7c9..4373451 100644 --- a/pages/poissons.md +++ b/pages/poissons.md @@ -1,6 +1,12 @@ # Les poissons osseux ## Qui sont-ils ? +|Nom|Taille|Couleur| +|poisson rouge|petit|rouge| +|requin|grand|gris| ## Les différentes parties du poisson +Il y a : +- les nageoires +- les branchies ## De toutes les tailles et de toutes les couleurs ## Où vivent-ils ? ## Comment respirent-ils ? diff --git a/src/main.rs b/src/main.rs index e628a2f..505893e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,6 +21,7 @@ async fn main() -> std::io::Result<()> { .app_data(web::Data::new(appdata.to_owned())) .service(index::index) .service(page::page) + .service(page::save_page) //.service(page::page_link) .service(actix_files::Files::new("/static", "./static")) .service(actix_files::Files::new("/static/modules", "./static/modules")) diff --git a/src/page.rs b/src/page.rs index 2b1dda9..ce82074 100644 --- a/src/page.rs +++ b/src/page.rs @@ -1,7 +1,8 @@ -use actix_web::web; -use actix_web::{Responder, get}; +use actix_web::{web, HttpResponse}; +use actix_web::{Responder, get, put}; use std::fs; +use std::io::Write; //use regex::Regex; use askama_actix::Template; @@ -30,6 +31,23 @@ async fn page(path: web::Path<(String,)>, data: web::Data) -> impl Resp PageTemplate { name, md, init }.to_response() } +#[put("/page/{page}")] +async fn save_page(body: String, path: web::Path<(String,)>) -> impl Responder { + let pagename = &path.0; + if pagename == "index" { + return HttpResponse::Ok(); + } + let filename = String::from("pages/") + pagename.as_str() + ".md"; + let mut file = match fs::File::create(&filename) { + Ok(f) => f, + Err(_) => return HttpResponse::Unauthorized(), + }; + match file.write_all(body.as_bytes()) { + Ok(_) => HttpResponse::Ok(), + Err(_) => HttpResponse::Unauthorized(), + } +} + /*#[get("/page/{oldpage}/{page}")] async fn page_link(path: web::Path<(String, String,)>, data: web::Data) -> impl Responder { let pagename = &path.1; diff --git a/static/mdnotes.css b/static/mdnotes.css index 7279396..1cb762f 100644 --- a/static/mdnotes.css +++ b/static/mdnotes.css @@ -5,6 +5,7 @@ html { body { margin: 0; + background-color: #f6f6f6; } button { @@ -12,7 +13,40 @@ button { height: 2.2rem; } +div#buttons { + position: fixed; + background-color: #dddddddd; + border-bottom: 3px solid #ccccccdd; + top: 0; + left: 0; + right: 0; + height: 3rem; + margin-left: auto; + margin-right: auto; + max-width: 1200; +} + +div#buttons #taButtonLabel { + position: relative; + font-size: 1.8rem; + top: +0.2rem; +} + +div#buttons #lockButtonLabel { + position: relative; + font-size: 1.8rem; + top: +0.2rem; +} + +div.ta { + margin-left: auto; + margin-right: auto; + max-width: 1200; +} + textarea#ta { + position: relative; + top: 3rem; display: none; width: 100%; height: 15rem; @@ -22,6 +56,10 @@ textarea#ta { } div#mdnotes { + margin-top: 3rem; + margin-left: auto; + margin-right: auto; + max-width: 1200; padding-top: 1rem; padding-left: 3rem; padding-right: 3rem; @@ -103,12 +141,12 @@ div#mdnotes div.ul1.bq1 { padding-left: 1.9rem; } div#mdnotes div.ul1.bq2 { padding-left: 1.6rem; } div#mdnotes div.ul1.bq3 { padding-left: 1.3rem; } -div#mdnotes div.ul2 { display:list-item; list-style-position: inside; padding-left: 2.7rem; padding-bottom: .2rem; padding-top: .2rem; } +div#mdnotes div.ul2 { display:list-item; list-style-position: inside; list-style-type: circle; padding-left: 2.7rem; padding-bottom: .2rem; padding-top: .2rem; } div#mdnotes div.ul2.bq1 { padding-left: 2.4rem; } div#mdnotes div.ul2.bq2 { padding-left: 2.1rem; } div#mdnotes div.ul2.bq3 { padding-left: 1.8rem; } -div#mdnotes div.ul3 { display:list-item; list-style-position: inside; padding-left: 3.2rem; padding-bottom: .2rem; padding-top: .2rem; } +div#mdnotes div.ul3 { display:list-item; list-style-position: inside; list-style-type: square; padding-left: 3.2rem; padding-bottom: .2rem; padding-top: .2rem; } div#mdnotes div.ul3.bq1 { padding-left: 2.9rem; } div#mdnotes div.ul3.bq2 { padding-left: 2.6rem; } div#mdnotes div.ul3.bq3 { padding-left: 2.3rem; } diff --git a/static/modules/md.js b/static/modules/md.js index b08b843..be74504 100644 --- a/static/modules/md.js +++ b/static/modules/md.js @@ -21,6 +21,7 @@ function save(textarea, div) { } } textarea.value = text; + return text; } function emsp() { diff --git a/static/modules/mdnotes.js b/static/modules/mdnotes.js index df30733..531eb3d 100644 --- a/static/modules/mdnotes.js +++ b/static/modules/mdnotes.js @@ -10,7 +10,7 @@ function timeoutSave() { function ontextarea(e) { let ta = document.getElementById('ta'); - if (ta.style.display == 'none') { + if (ta.style.display != 'inline') { ta.style.display = 'inline'; } else { ta.style.display = 'none'; @@ -18,7 +18,18 @@ function ontextarea(e) { } function onsave(e) { - save(document.getElementById('ta'), document.getElementById('mdnotes')); + let saveButton = document.getElementById('saveButton'); + saveButton.disabled = true; + let text = save(document.getElementById('ta'), document.getElementById('mdnotes')); + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status != 200) { + saveButton.disabled = false; + alert(xhttp.responseText); + } + } + xhttp.open("PUT", document.location.href, true); + xhttp.send(text); } function onload(e) { @@ -27,6 +38,7 @@ function onload(e) { function onedit(e) { timeoutSave(); + saveButton.disabled = false; let ret = getStartPositionInLine(); let line = ret[0]; let position = ret[1]; @@ -74,7 +86,9 @@ function onkeypress(e) { if (e.key == 'Escape') { e.preventDefault(); document.getElementById('mdnotes').blur(); - onsave(); + if (saveButton.disabled == false) { + onsave(); + } return false; } if (e.key == 'Enter') { @@ -86,7 +100,9 @@ function onkeyup(e) { if (e.key == 'Escape') { e.preventDefault(); document.getElementById('mdnotes').blur(); - onsave(); + if (saveButton.disabled == false) { + onsave(); + } return false; } } @@ -98,10 +114,21 @@ function onpaste(e) { data = '[](' + data + ')'; e.clipBoard.setData('text/plain', data); } + saveButton.disabled = false; } function oncopy(e) { - alert(e.clipboardData.getData('text/plain')); + //alert(e.clipboardData.getData('text/plain')); +} + +function onlockbutton(e) { + let lockButton = document.getElementById('lockButton'); + let mdnotes = document.getElementById('mdnotes'); + if (lockButton.checked) { + mdnotes.contentEditable = false; + } else { + mdnotes.contentEditable = true; + } } var _dpwidth = null; @@ -135,9 +162,12 @@ function init(pagename = null) { mdnotesdiv.addEventListener('blur', () => {redrawTables(mdnotesdiv);}); mdnotesdiv.addEventListener('focus', () => {redrawTables(mdnotesdiv, dpwidth());}); let saveButton = document.getElementById('saveButton'); + saveButton.disabled = true; saveButton.addEventListener('click', onsave); + let taButton = document.getElementById('taButton'); taButton.addEventListener('click', ontextarea); - + let lockButton = document.getElementById('lockButton'); + lockButton.addEventListener('click', onlockbutton); onload(); } diff --git a/templates/page.html b/templates/page.html index 4c6bb32..bb5bfe6 100644 --- a/templates/page.html +++ b/templates/page.html @@ -12,8 +12,8 @@ -
- +
+