diff --git a/20211230101331-software.org b/20211230101331-software.org index 18f3486..2744c6d 100644 --- a/20211230101331-software.org +++ b/20211230101331-software.org @@ -1,11 +1,12 @@ :PROPERTIES: :ID: ca50d517-3e8a-4d03-ba38-7ff411e87408 -:mtime: 20211230160701 +:mtime: 20220109135615 :ctime: 20211230101331 :END: #+title: Software * Langages ** [[id:4fabfe6a-b104-464f-8a87-dfd7d761dbcc][Python]] +** [[id:ed8be72a-8a4d-4ef7-92e4-78d07095deaf][C++]] * Design pattern diff --git a/20211230101535-python.org b/20211230101535-python.org index b2e6e26..69e78d0 100644 --- a/20211230101535-python.org +++ b/20211230101535-python.org @@ -1,6 +1,6 @@ :PROPERTIES: :ID: 4fabfe6a-b104-464f-8a87-dfd7d761dbcc -:mtime: 20220101184446 +:mtime: 20220104164359 :ctime: 20211230101535 :END: #+title: Python @@ -18,3 +18,4 @@ * Tips ** [[id:4ef76164-0e67-410a-8d26-b03071a0cc41][Compter la fréquence des éléments d'une liste]] ** [[id:cb3c63b9-6452-4016-9b2f-a25784941d5d][List vs deque]] +** [[id:9bdede16-5137-4393-a027-a5afbffd1618][Génération chaine de caractères aléatoires]] diff --git a/20220104151926-base_de_donnees.org b/20220104151926-base_de_donnees.org new file mode 100644 index 0000000..f28792e --- /dev/null +++ b/20220104151926-base_de_donnees.org @@ -0,0 +1,30 @@ +:PROPERTIES: +:ID: bb52f1a5-9f0c-48cc-8aeb-9124f2b42ccd +:mtime: 20220104162639 +:ctime: 20220104151926 +:END: +#+title: Base de données +#+filetags: :database: + +* Base de données relationnelle +Une base de données relationnelle organise l'information dans des tableaux à 2 dimensions (appelés /relations/ ou +/tables/). Les lignes de ces /relations/ sont appelées /enregistrements/ ou /nuplets/. Les colonnes sont appelées des /attributs/. +Pratiquement tous les systèmes relationnels utilisent le langage SQL pour interroger les bases de données. +** [[id:171ce2f7-4028-47b0-b4e0-5a4a6ccb74ac][Postgres]] + +* Sql +** Commandes de base +*** Suppression d'une base de données +#+BEGIN_SRC sql +drop database ; +#+END_SRC +*** Changement du password d'un utilisateur +#+BEGIN_SRC sql +ALTER USER WITH PASSWORD ''; +#+END_SRC +** Tips + * [[id:03d81c25-555c-4d55-a2cd-2d5fc961acc7][sql_reset_root_password]] + +* Références + * https://fr.wikipedia.org/wiki/PostgreSQL + * [[https://www.postgresql.org/docs/14/index.html][PostgresSQL documentation]] diff --git a/20220104153133-sql_reset_root_password.org b/20220104153133-sql_reset_root_password.org new file mode 100644 index 0000000..56e84b9 --- /dev/null +++ b/20220104153133-sql_reset_root_password.org @@ -0,0 +1,38 @@ +:PROPERTIES: +:ID: 03d81c25-555c-4d55-a2cd-2d5fc961acc7 +:mtime: 20220104154557 +:ctime: 20220104153133 +:END: +#+title: Reset du password admin d'une base SQL +#+filetags: :SQL: + +* Arrêt de l'instance en cours d'exécution +#+BEGIN_SRC shell +systemctl stop mysql +#+END_SRC +* Vérification de la présence et des droits du répertoire temporaire +#+BEGIN_SRC shell +mkdir /var/run/mysqld +chown mysql /var/run/mysqld +#+END_SRC +* Exécution de /mysql/ sans prise en compte des droits +#+BEGIN_SRC shell +mysqld_safe --skip-grant-tables& +#+END_SRC +* Connexion à mysql en tant que root +#+BEGIN_SRC shell +mysql --user=root mysql +#+END_SRC +Le prompt mysql (~mysql>~) doit apparaitre. +* Reset du mot de passe admin +#+BEGIN_SRC sql +UPDATE mysql.user SET authentication_string=null WHERE User='root'; +flush privileges; +ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password_here'; +flush privileges; +exit; +#+END_SRC +Où ~your_password_here'~ est le nouveau mot de passe. + +* Références + * https://devanswers.co/how-to-reset-mysql-root-password-ubuntu/ diff --git a/20220104155310-postgres.org b/20220104155310-postgres.org new file mode 100644 index 0000000..9b9ba1a --- /dev/null +++ b/20220104155310-postgres.org @@ -0,0 +1,15 @@ +:PROPERTIES: +:ID: 171ce2f7-4028-47b0-b4e0-5a4a6ccb74ac +:mtime: 20220104161040 +:ctime: 20220104155310 +:END: +#+title: Postgres +#+filetags: :database: + +* Principales caractéristiques + * Licence de type BSD, + * Utilise des types de données modernes, dits composés ou enrichis, + * Fonctionne sur Solaris, SunOS, Mac OS X, HP-UX, AIX, Linux, IRIX, Digital Unix, BSD, NetBSD, FreeBSD, OpenBSD, SCO unix, NeXTSTEP, UnixWare et toutes sortes d'Unix. Depuis la version 8.0, PostgreSQL fonctionne également nativement sur Windows. + +* Interfaces utilisateur +** [[id:0455921f-3ac0-437e-ba76-1afb3f6f85ea][Psql]] diff --git a/20220104155517-psql.org b/20220104155517-psql.org new file mode 100644 index 0000000..51864d9 --- /dev/null +++ b/20220104155517-psql.org @@ -0,0 +1,22 @@ +:PROPERTIES: +:ID: 0455921f-3ac0-437e-ba76-1afb3f6f85ea +:mtime: 20220104160506 +:ctime: 20220104155517 +:END: +#+title: Psql +#+filetags: :postgre:database: + +Interface en ligne de commande permettant la saisie de requêtes SQL, directement ou par l'utilisation de procédures +stockées. + +* Commandes +** Connection +#+BEGIN_SRC shell +sudo -u postgres psql +** Commandes de base +| Commande | Description | +| ~\l~ | Liste des bases de données hébergées | +| ~\l+~ | Liste des bases de données hébergées (avec tailles et descriptions) | +| ~\c ""~ | Connection à la base de données | +| ~\d~ | Description des tables de la base de données | +| ~\d+~ | Description des tables de la base de données (avec tailles et descriptions) | diff --git a/20220104162747-generation_chaine_de_caracteres_aleatoires.org b/20220104162747-generation_chaine_de_caracteres_aleatoires.org new file mode 100644 index 0000000..d071f14 --- /dev/null +++ b/20220104162747-generation_chaine_de_caracteres_aleatoires.org @@ -0,0 +1,19 @@ +:PROPERTIES: +:ID: 9bdede16-5137-4393-a027-a5afbffd1618 +:mtime: 20220104163314 +:ctime: 20220104162747 +:END: +#+title: Génération chaine de caractères aléatoires +#+filetags: :Python: + +#+BEGIN_SRC python :results output +import random +import string + +# get random password pf length 8 with letters, digits, and symbols +len_ = 20 +characters = string.ascii_letters + string.digits + string.punctuation +print(f"Random password is: \"{''.join(random.choice(characters) for i in range(len_))}\"") +#+END_SRC +#+RESULTS: +: Random password is: "'f#babNz3u&P|ctLy7WZ" diff --git a/20220104163421-japon.org b/20220104163421-japon.org new file mode 100644 index 0000000..366fb45 --- /dev/null +++ b/20220104163421-japon.org @@ -0,0 +1,11 @@ +:PROPERTIES: +:ID: 511a96a2-2077-4392-8cc8-2cb4bfdc508d +:mtime: 20220109121318 +:ctime: 20220104163421 +:END: +#+title: Japon +#+filetags: :Voyage: + +* Lieux intéressants (et pas encore visités) +** [[id:e4e194fe-9ec8-4113-b7e0-03eef0c8e5a9][Lac Tazawa]] +** [[id:c3a27514-ca24-4e28-b6e3-09b8fc2d73a8][Ligne Tenryū Hamanako]] diff --git a/20220106214423-inotify.org b/20220106214423-inotify.org new file mode 100644 index 0000000..cb798e0 --- /dev/null +++ b/20220106214423-inotify.org @@ -0,0 +1,160 @@ +:PROPERTIES: +:ID: fad57303-ce0c-4ae4-9529-294f70ecfaa5 +:mtime: 20220107081819 +:ctime: 20220106214423 +:END: +#+title: Inotify + +* Présentation +Mécanisme du noyan Linux fournissant des notifications concernant le système de fichiers. + +* Exemples +** C++ +#+BEGIN_SRC C++ :tangle "/tmp/dummy.cpp" :results output +#include +#include +#include + +#include +#include +#include +#include + +static void onInotify(int fd) +{ + std::cout << "onInotify(" << fd << ")" << std::endl; + bool finished = false; + while (!finished) + { + struct inotify_event event; + const ssize_t len = read(fd, &event, sizeof(event)); + if (len == -1 && errno != EAGAIN) + { + std::cout << "!read " << strerror(errno); + finished = true; + } + // If the nonblocking read() found no events to read, then + // it returns -1 with errno set to EAGAIN. + // Nothing to read here, exit the loop. + if (len <= 0) + { + finished = true; + } + else + { + // Print event type. + if (event.mask & IN_OPEN) + { + std::cout << "IN_OPEN: "; + } + if (event.mask & IN_CLOSE_NOWRITE) + { + std::cout << "IN_CLOSE_NOWRITE: "; + } + if (event.mask & IN_CLOSE_WRITE) + { + std::cout << "IN_CLOSE_WRITE: "; + } + // Print the name of the file. + if (event.len) + { + std::cout << event.name << std::endl; + } + // Print type of filesystem object. + if (event.mask & IN_ISDIR) + { + std::cout << " [directory]" << std::endl; + } + else + { + std::cout << " [file]" << std::endl; + } + } + } +} + +int main(int argc, char** argv) +{ + const std::string filename = "/tmp/dummy"; + + // Make sure the filename exists. + struct stat buffer; + if (stat(filename.c_str(), &buffer) != 0) + { + std::cout << filename << " doesn't exists... create it." << std::endl; + std::ofstream dummy(filename); + } + + const int fd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC); + if (fd < 0) + { + std::cout << "Unable to init inotify: " << strerror(errno) << std::endl; + exit(EXIT_FAILURE); + } + + // Trigger on open and close events. + const int wd = inotify_add_watch(fd, filename.c_str(), IN_OPEN | IN_CLOSE); + if (wd == -1) + { + std::cout << "Cannot watch '" << filename << "': " << strerror(errno) << std::endl; + close(fd); + exit(EXIT_FAILURE); + } + + // Prepare for pooling. + const nfds_t nfds = 2; + struct pollfd fds[2]; + // Console input + fds[0].fd = STDIN_FILENO; + fds[0].events = POLLIN; + // Inotify input + fds[1].fd = fd; + fds[1].events = POLLIN; + + // Wait for events and/or terminal input. + std::cout << "Listening for events." << std::endl; + bool stop = false; + bool error = false; + while (!stop) + { + const int poll_num = poll(fds, nfds, -1); + if (poll_num == -1) + { + if (errno == EINTR) + { + continue; + } + std::cout << "poll" << std::endl; + error = stop = true; + } + else if (poll_num > 0) + { + if (fds[0].revents & POLLIN) + { + // Console input is available. Empty stdin and quit. + char buf; + while (read(STDIN_FILENO, &buf, 1) > 0 && buf != '\n') + { + continue; + } + std::cout << "Stopping resquested..." << std::endl; + break; + } + if (fds[1].revents & POLLIN) + { + // Inotify events are available. + onInotify(fd); + } + } + } + std::cout << "Listening for events stopped." << std::endl; + + /* Close inotify file descriptor. */ + close(fd); + + exit(EXIT_SUCCESS); +} +#+END_SRC + +* Références + * inotify(7) — Linux manual page]] diff --git a/20220109113244-lac_tazawa.org b/20220109113244-lac_tazawa.org new file mode 100644 index 0000000..907b2de --- /dev/null +++ b/20220109113244-lac_tazawa.org @@ -0,0 +1,23 @@ +:PROPERTIES: +:ID: e4e194fe-9ec8-4113-b7e0-03eef0c8e5a9 +:mtime: 20220109114801 +:ctime: 20220109113244 +:END: +#+title: Lac Tazawa +#+filetags: :Japon: + +* Infos + * Situé à Semboku, dans la préfecture d'Akita dans le nord du Japon, + * Lac le plus profond du Japon (423m de profondeur), + * Statue Tatsuko (辰子像?) de Yasutake Funakoshi (舟越保武) au sud-ouest du lac, + * Plusieurs sources chaudes se trouvent dans les collines autour du lac, + * Un bus circule dans la région et offre une vue imprenable sur plusieurs points de vue, + * Abrite le sanctuaire de Goza-no-ishi. + +* Comment s'y rendre + * Ligne Tazawako (gare de Tazawako) de la JR East passe au sud du lac. Auparavant un train express Tazawa circulait entre Morioka et + Akita, il fut remplacé par le Shinkansen Akita Komachi en 1997. + +* Références + * [[https://fr.wikipedia.org/wiki/Lac_Tazawa][Wikipedia]] + * https://furansujapon.com/lac-tazawa diff --git a/20220109114848-ligne_tenryu_hamanako.org b/20220109114848-ligne_tenryu_hamanako.org new file mode 100644 index 0000000..d13af80 --- /dev/null +++ b/20220109114848-ligne_tenryu_hamanako.org @@ -0,0 +1,72 @@ +:PROPERTIES: +:ID: c3a27514-ca24-4e28-b6e3-09b8fc2d73a8 +:mtime: 20220109135635 +:ctime: 20220109114848 +:END: +#+title: Ligne Tenryū Hamanako +#+filetags: :Japon: + +* Quelques infos + * Unique ligne ferroviaire de la compagnie Tenryū Hamanako Railroad (Tenhama), + * Située dans la préfecture de Shizuoka au Japon, + * Relie la gare de Kakegawa à celle de Shinjohara, + * Est également appelée ligne Tenhama (天浜線?), + * Lancement de son exploitation en 1940, + * La plupart des quais et des bâtiments de gare de cette période sont encore utilisés, + * 36 biens culturels tangibles le long de la ligne. + +* Sites à proximité + * Lac Hamana, + * [[https://www.hamamatsu-japan.com/fr/sightseeing/6410/][Gare de Tenryu Futama ]]: + * abrite également le siège de la compagnie tenryu hamanako railroad, + * un de ses bâtiments historiques, + * destination populaire pour les touristes (nombreux sites touristiques et restaurants accessibles à pied), + * visite (quotidienne, réservation non obligatoire, 10h50 et 13h50 les week-ends et jours fériés, 13h50 sinon) pour observer la plaque tournante (toujours utilisées) des locomotives à vapeur + dépôt ferroviaire, + * visite "aratte, mawatte, densha de go" (à 11h les week-ends et jours fériés) nécessite une réservation. + * [[https://marukawas.web.fc2.com/][Marukawa no Kura]] : Une galerie dans une maison traditionnelle + * À quelques pas de la gare, + * Galerie créée lors de la rénovation d’un bâtiment construit il y a plus de 140 ans, + * Autrefois d’un magasin d’alcools, + * Devanture du rez-de-chaussée est remplie de confiseries à l’ancienne, de miso fait maison et de thé, + * Galerie sur trois étages pleine d’œuvres d’artistes résidant dans la région, + * Des événements mensuels. + * [[https://honda-densyokan.com/][Centre d’artisanat de Soichiro Honda]] : + * Présentation de la personnalité et du mode de vie de Soichiro Honda, fondatateur de Honda Motor Company, + * Nombreuses innovations de Honda, notamment dans les domaines des moteurs et des motos. + * [[https://www.hamamatsu-japan.com/fr/sightseeing/6411/][Ruines du château de Futamata]] : + * Cnstruit par Futamata Masanaga, seigneur au service du clan Imagawa, + * Site de nombreuses batailles entre les clans Tokugawa et Takeda, + * Leu où le seigneur Tokugawa Ieyasu a forcé son fils aîné, Nobuyasu, à commettre le seppuku. + * [[https://dlofre.jp/spots/miyakoda-eki-cafe/][Miyakoda Station Cafe]] : + * Panneaux en bois sont décorés avec un tissu Marimekko, + * Café et des biscuits faits maison et servis sur de la vaisselle Marimekko, + * Terrasse dispose de places à côté du quai, dépourvues de cloison gênant la vision. + * Gare de Hamanako-Sakume : + * Célèbre pour les mouettes rieuses y prennent les airs entre décembre et février. + * [[https://www.inhamamatsu.com/activity/fruit-park-tokinosumika.php][Hamamatsu Fruit Park Tokinosumika]] : + * Parc au thème portant sur les fruits, + * Visiteurs sont invités à cueillir une variété de fruits propres à chaque saison, + * Spectacle de fontaines d'eau. + * [[https://www.hamamatsu-japan.com/fr/sightseeing/6404/][Temple Ryotanji]] : + * Etabli en 733 par le prêtre bouddhiste japonais Gyoki Bosatsu, + * Nombreux biens culturels importants, dont : + * Le jardin (désigné comme « lieu spécial de beauté pittoresque ») conçu par Kobori Enshu, + * La sculpture de dragon réalisée par Hidari Jingoro, + * Lieu de tournage à la série télévisée de la NHK "Naotora : La châtelaine.", + * Un des cinq appartenant au Kohoku Gozan (Cinq temples au nord du lac). + * Cap du Prince: + * 15 minutes pour faire le tour à pied de la péninsule de Gomi, + * en face de la gare de Nishi-Kiga, + * s'appelle "Cap du Prince" depuis que le précédent empereur japonais a passé ses vacances au sanatorium voisin, + * Avec ses paysages idylliques, c’est l’endroit idéal pour se promener les jours de beau temps. + * [[https://tabelog.com/en/shizuoka/A2202/A220201/22034516/dtlrvwlst/#anchor-rd-detail][Pizzeria]] à la station [[https://en.wikipedia.org/wiki/Kanasashi_Station][Kanasashi]], + * Café/boulangerie à la station [[https://en.wikipedia.org/wiki/Tsuzuki_Station][Tsuzuki]], + * Location de vélos à la station [[https://en.wikipedia.org/wiki/Ensh%C5%AB-Mori_Station][Enshu-mori]], + * [[https://www.innmylife.com/][Hôtel (unique chambre)]] dans la gare de [[https://en.wikipedia.org/wiki/Futamata-Hommachi_Station][Futamata-Honmachi]], + +* Références + * [[https://fr.wikipedia.org/wiki/Ligne_Tenry%C5%AB_Hamanako][Wikipedia]] + * https://www3.nhk.or.jp/nhkworld/en/ondemand/video/2049094/ + * https://voyapon.com/shizuoka-tenryu-hamanako/ + * https://www.hamamatsu-japan.com/fr/column/6773/ + diff --git a/20220109134723-linux.org b/20220109134723-linux.org new file mode 100644 index 0000000..2e1e702 --- /dev/null +++ b/20220109134723-linux.org @@ -0,0 +1,8 @@ +:PROPERTIES: +:ID: e7581fe3-f83f-4243-91ed-6ef7ade6a844 +:mtime: 20220109134802 +:END: +#+title: Linux + +* Fonctionnalités + * [[id:fad57303-ce0c-4ae4-9529-294f70ecfaa5][Inotify]] diff --git a/20220109135456-cpp.org b/20220109135456-cpp.org new file mode 100644 index 0000000..b42974d --- /dev/null +++ b/20220109135456-cpp.org @@ -0,0 +1,9 @@ +:PROPERTIES: +:ID: ed8be72a-8a4d-4ef7-92e4-78d07095deaf +:mtime: 20220109135845 +:ctime: 20220109135456 +:END: +#+title: C++ + +* Debuggers +** [[id:200416f1-4277-4a2c-ad8c-8a78b3080564][GDB]] diff --git a/20220109135824-gdb.org b/20220109135824-gdb.org new file mode 100644 index 0000000..80fd26a --- /dev/null +++ b/20220109135824-gdb.org @@ -0,0 +1,25 @@ +:PROPERTIES: +:ID: 200416f1-4277-4a2c-ad8c-8a78b3080564 +:mtime: 20220109141630 +:ctime: 20220109135824 +:END: +#+title: GDB + +* Présentation + * From Richard Stallman en 1986, + * Licence publique générale GNU (GPL). + * S'inspire du débogueur DBX (distribution Unix de Berkeley). + * Fonctionne sur de nombreuses architectures de processeur différentes, + * Permet le débogage distant (par l'intermédiaire d’une liaison série ou d’une connexion IP), + * Permet de déboguer un programme en cours d’exécution ou post-mortem (analyse de coredump). + +* Tips +** Ajouter un chemin pour le chargement des fichiers de symboles des librairies dynamiques n'ayant pas de chemin absolu +#+BEGIN_SRC shell +set solib-search-path /usr/lib/x86_64-linux-gnu/:/tmp/ +#+END_SRC + +* Références + * [[https://fr.wikipedia.org/wiki/GNU_Debugger][Wikipedia]] + * https://visualgdb.com/gdbreference/commands/set_solib-search-path +