Add notes about python, databases, japan, debugging and inotify.

This commit is contained in:
2022-01-09 15:28:22 +01:00
parent c14526f2ed
commit 0d043ef2ef
14 changed files with 436 additions and 2 deletions

View File

@@ -1,11 +1,12 @@
:PROPERTIES: :PROPERTIES:
:ID: ca50d517-3e8a-4d03-ba38-7ff411e87408 :ID: ca50d517-3e8a-4d03-ba38-7ff411e87408
:mtime: 20211230160701 :mtime: 20220109135615
:ctime: 20211230101331 :ctime: 20211230101331
:END: :END:
#+title: Software #+title: Software
* Langages * Langages
** [[id:4fabfe6a-b104-464f-8a87-dfd7d761dbcc][Python]] ** [[id:4fabfe6a-b104-464f-8a87-dfd7d761dbcc][Python]]
** [[id:ed8be72a-8a4d-4ef7-92e4-78d07095deaf][C++]]
* Design pattern * Design pattern

View File

@@ -1,6 +1,6 @@
:PROPERTIES: :PROPERTIES:
:ID: 4fabfe6a-b104-464f-8a87-dfd7d761dbcc :ID: 4fabfe6a-b104-464f-8a87-dfd7d761dbcc
:mtime: 20220101184446 :mtime: 20220104164359
:ctime: 20211230101535 :ctime: 20211230101535
:END: :END:
#+title: Python #+title: Python
@@ -18,3 +18,4 @@
* Tips * Tips
** [[id:4ef76164-0e67-410a-8d26-b03071a0cc41][Compter la fréquence des éléments d'une liste]] ** [[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:cb3c63b9-6452-4016-9b2f-a25784941d5d][List vs deque]]
** [[id:9bdede16-5137-4393-a027-a5afbffd1618][Génération chaine de caractères aléatoires]]

View File

@@ -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 <database>;
#+END_SRC
*** Changement du password d'un utilisateur
#+BEGIN_SRC sql
ALTER USER <user> WITH PASSWORD '<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]]

View File

@@ -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
~your_password_here'~ est le nouveau mot de passe.
* Références
* https://devanswers.co/how-to-reset-mysql-root-password-ubuntu/

View File

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

22
20220104155517-psql.org Normal file
View File

@@ -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 "<database>"~ | 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) |

View File

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

11
20220104163421-japon.org Normal file
View File

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

160
20220106214423-inotify.org Normal file
View File

@@ -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 <cstring>
#include <iostream>
#include <fstream>
#include <sys/stat.h>
#include <sys/inotify.h>
#include <unistd.h>
#include <poll.h>
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]]

View File

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

View File

@@ -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 dun bâtiment construit il y a plus de 140 ans,
* Autrefois dun magasin dalcools,
* Devanture du rez-de-chaussée est remplie de confiseries à lancienne, de miso fait maison et de thé,
* Galerie sur trois étages pleine dœuvres dartistes résidant dans la région,
* Des événements mensuels.
* [[https://honda-densyokan.com/][Centre dartisanat 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, cest lendroit 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/

8
20220109134723-linux.org Normal file
View File

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

9
20220109135456-cpp.org Normal file
View File

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

25
20220109135824-gdb.org Normal file
View File

@@ -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 dune liaison série ou dune connexion IP),
* Permet de déboguer un programme en cours dexé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