Outils pour utilisateurs

Outils du site


projets:informatique:carnet_adresses

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
projets:informatique:carnet_adresses [2019/02/15 08:38] alexisprojets:informatique:carnet_adresses [2024/03/03 08:42] (Version actuelle) alexis
Ligne 1: Ligne 1:
-====== Mise en place d'un carnet d'adresse ======+{{tag>latex projet}}
  
-Il y a quelques années, j'avais mis mon carnet d'adresse en ligne avec [[https://sourceforge.net/projects/php-addressbook/|PHP Address Book]] +====== Mise en place d'un carnet d'adresse ====== 
-. Mais la solution choisie ne me convenait plus. Voici ce que j'ai fait pour mettre en place quelque chose de plus adapté à mes besoins.+Il y a quelques années, j'avais mis mon carnet d'adresse en ligne avec [[https://sourceforge.net/projects/php-addressbook/|PHP Address Book]]. Mais la solution choisie ne me convenait plus. Voici ce que j'ai fait pour mettre en place quelque chose de plus adapté à mes besoins.
  
 Avec PHP Address Book, j'ai plusieurs fois perdu les adresses de certains de mes contacts. Parfois à cause de l'ergonomie peu adaptée, parfois à cause de vulnérabilités ({{:projets:informatique:exploits_of_a_mom.png?linkonly|injection SQL}}). En bref, ce n'était pas une situation acceptable pour conserver ce genre d'information. Avec PHP Address Book, j'ai plusieurs fois perdu les adresses de certains de mes contacts. Parfois à cause de l'ergonomie peu adaptée, parfois à cause de vulnérabilités ({{:projets:informatique:exploits_of_a_mom.png?linkonly|injection SQL}}). En bref, ce n'était pas une situation acceptable pour conserver ce genre d'information.
  
-Ma première idée fut de refaire quelque chose de similaire en utilisant [[https://symfony.com/|Symfony]] et le bundle [[https://symfony.com/doc/master/bundles/EasyAdminBundle/index.html|EasyAdminBundle]] +Ma première idée fut de refaire quelque chose de similaire en utilisant [[https://symfony.com/|Symfony]] et le bundle [[https://symfony.com/doc/master/bundles/EasyAdminBundle/index.html|EasyAdminBundle]]. J'utilise ce genre de chose tous les jours, je me suis donc dit que je pourrai faire ça rapidement. J'ai commencé à mettre en place et j'ai obtenu quelque chose de fonctionnel assez facilement. Par contre, ce n'était pas du tout travaillé en terme d'ergonomie et d'interface. Je me suis promis de revenir dessus mais je ne l'ai jamais fait. C'était il y a quelques mois.
-. J'utilise ce genre de chose tous les jours, je me suis donc dit que je pourrai faire ça rapidement. J'ai commencé à mettre en place et j'ai obtenu quelque chose de fonctionnel assez facilement. Par contre, ce n'était pas du tout travaillé en terme d'ergonomie et d'interface. Je me suis promis de revenir dessus mais je ne l'ai jamais fait. C'était il y a quelques mois.+
  
 En laissant mûrir ça, j'ai commencé à me dire que je n'avais pas besoin d'une application complète pour gérer mes quelques contacts. J'ai listé les choses que devait faire cette liste de contact afin de recentrer mes efforts. Après réflexion, voici ce que j'attends de cette liste : En laissant mûrir ça, j'ai commencé à me dire que je n'avais pas besoin d'une application complète pour gérer mes quelques contacts. J'ai listé les choses que devait faire cette liste de contact afin de recentrer mes efforts. Après réflexion, voici ce que j'attends de cette liste :
Ligne 20: Ligne 19:
 \documentclass{article} \documentclass{article}
  
-\usepackage[a4paper, margin=5mm]{geometry}+\usepackage[a4paper, bottom=15mm, top=1mm, left=1mm, right=1mm]{geometry}
 \usepackage{multirow} \usepackage{multirow}
 \usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc}
-\usepackage{marvosym} % For phone and cell icons+\usepackage{marvosym} % For phonecell, and email icons
 \usepackage{longtable} % For a table that spans on multiple pages \usepackage{longtable} % For a table that spans on multiple pages
 +\usepackage{hyperref}
 +\usepackage{fancyhdr}
 +
 +\def\mydate{\leavevmode\hbox{\twodigits\day-\twodigits\month-\the\year}}
 +\def\twodigits#1{\ifnum#1<10 0\fi\the#1}
  
 \newcommand\row[4]{% \newcommand\row[4]{%
- #1 & \rowcell{#2} & \rowcell{#3} & \rowcell{#4} \\%+ \rowcell{#1& \rowcell{#2} & \rowcell{#3} & \rowcell{#4} \\%
  \hline%  \hline%
 } }
-\newcommand\cell[1]{+\newcommand\cell[1]{\Mobilefone \ \href{tel:#1}{#1}
- \Mobilefone \ #1+\newcommand\phone[1]{\Telefon \ \href{tel:#1}{#1}} 
-+\newcommand\email[1]{\Email \ \href{mailto:#1}{#1}}
-\newcommand\phone[1]{+
- \Telefon \ #1% +
-}+
 \newcommand\rowcell[1]{% \newcommand\rowcell[1]{%
  \begin{tabular}{l}%  \begin{tabular}{l}%
Ligne 41: Ligne 42:
  \end{tabular}%  \end{tabular}%
 } }
 +
 +\pagestyle{fancy}
 +\fancyhf{}
 +\cfoot{\tiny Généré le \mydate}
  
 \begin{document} \begin{document}
  \begin{longtable}{llll}  \begin{longtable}{llll}
  \hline  \hline
- \row{Prénom Nom}{\cell{06.07.08.09.00}\\\phone{01.02.03.04.05}}{prenom.nom@example.org \\ nom.prenom@example.org}{1 rue de l'example \\ 77777 Example}%+ \row{Prénom Nom}{\cell{06.07.08.09.00}\\\phone{01.02.03.04.05}}{\email{prenom.nom@example.org}\\\email{nom.prenom@example.org}}{1 rue de l'example \\ 77777 Example}% 
 +… 
 + \row{Prénom Nom}{\cell{06.07.08.09.00}\\\phone{01.02.03.04.05}}{\email{prenom.nom@example.org}\\\email{nom.prenom@example.org}}{1 rue de l'example \\ 77777 Example}%
  \end{longtable}  \end{longtable}
 \end{document} \end{document}
Ligne 53: Ligne 60:
 Il faut noter qu'on ne peut pas utiliser ''_'' directement. Il faut l'échapper de la manière suivante ''\_'' Il faut noter qu'on ne peut pas utiliser ''_'' directement. Il faut l'échapper de la manière suivante ''\_''
 </WRAP> </WRAP>
- 
  
 Ensuite pour rendre cette liste visible en ligne, je me suis mis en tête d'utiliser [[http://pandoc.org/|Pandoc]] comme pour mon projet de [[projets:informatique:sauvegarde_blog_pdf|sauvegarde d'un blog en PDF]]. Mais ça ne fonctionne pas vraiment comme espéré. Je n'ai plus de tableau, les caractères accentués sont mal interprétés. Mais en fait, je n'aurais pas du aller chercher aussi loin car l'installation de la bibliothèque TeXLive propose un outil de conversion de TeX vers HTML. Il suffit de le lancer de la manière suivante : Ensuite pour rendre cette liste visible en ligne, je me suis mis en tête d'utiliser [[http://pandoc.org/|Pandoc]] comme pour mon projet de [[projets:informatique:sauvegarde_blog_pdf|sauvegarde d'un blog en PDF]]. Mais ça ne fonctionne pas vraiment comme espéré. Je n'ai plus de tableau, les caractères accentués sont mal interprétés. Mais en fait, je n'aurais pas du aller chercher aussi loin car l'installation de la bibliothèque TeXLive propose un outil de conversion de TeX vers HTML. Il suffit de le lancer de la manière suivante :
Ligne 59: Ligne 65:
 htlatex <file.tex> htlatex <file.tex>
 </code> </code>
 +Ça génère une page HTML avec une mise en page très simple. Je trouve que ce n'est pas très utilisable tel quel, car les commandes ''\Telefon'', ''\Mobilefone'' et ''Email'' sont affichées respectivement en ''T'', ''H'' et ''k'' ((C'est le [[https://www.ctan.org/pkg/marvosym|package marvosym]] qui utilise une police différente pour afficher des symboles à la place des lettres.)), le tableau n'utilise pas toute la place disponible et il est difficile de savoir quelles coordonnées correspondent à quel contact.
  
-FIXME +Pour régler ces problèmes((Il y a beaucoup d'informations utiles sur les deux pages suivantes : [[https://github.com/michal-h21/helpers4ht/wiki/tex4ht-tutorial|tex4ht tutorial]] et  
-  * Modifier le template [[https://tex.stackexchange.com/questions/70059/generation-of-simple-css-less-html-with-htlatex|tex4ht - Generation of simple, CSS-less HTML with htlatex - TeX - LaTeX Stack Exchange]] +[[http://cvr.cc/?p=504|TeX4ht: Options]] 
-  * Vérifier qu'il ne manque pas de contacts +)), on commence par redéfinir les commandes ''\Telefon'', ''\Mobilefone'' et ''Email'' mais uniquement dans le cas de la conversion en HTML. Pour cela, on va créer le fichier ''marvosym.4ht'' ((Le nom est important car il doit correspondre au fichier ''sty'' correspondant, ici ''marvosym.sty''.)) qui va remplacer la commande initiale par le contenu du paramètre de la commande : 
-  * Supprimer mon ancien carnet d'adresse +<code latex> 
-  * Supprimer la liste de contacts du sitemap+\NewConfigure{Telefon}{1} 
 +\renewcommand\Telefon{\a:Telefon} 
 +\NewConfigure{Mobilefone}{1} 
 +\renewcommand\Mobilefone{\a:Mobilefone} 
 +\NewConfigure{Email}{1} 
 +\renewcommand\Email{\a:Email} 
 +</code> 
 +Ensuite, on cré un fichier CSS qui va contenir l'ensemble des règles à appliquer à notre page HTML ((Le nom est important, il ne doit pas correspondre au nom du fichier ''tex'' sinon il sera écrasé à chaque compilation.)) : 
 +<code css> 
 +table { 
 +  width: 100%; 
 +
 +.hline hr { 
 +  margin: 0; 
 +
 +tr:not(.hline) > td { 
 +  padding: 0.2rem 0; 
 +
 +tr:not(.hline):hover { 
 +  background-color: lightgrey; 
 +
 +.landline::after { 
 +  content: "\1F3D8"; 
 +
 +.cell::after { 
 +  content: "\1F4F1"; 
 +
 +.email::after { 
 +  content: "\1F4E7"; 
 +
 +</code> 
 +Puis on cré le fichier de configuration qui va faire le lien entre tout ça : 
 +<code latex> 
 +\Preamble{xhtml} 
 +\Configure{Telefon}{\HCode{<span class="landline"></span>}} 
 +\Configure{Mobilefone}{\HCode{<span class="cell"></span>}} 
 +\Configure{Email}{\HCode{<span class="email"></span>}} 
 +\begin{document} 
 +\CssFile[<file.css>
 +\EndCssFile 
 +\EndPreamble 
 +</code> 
 + 
 +Pour utiliser les fichiers que l'on vient de créer, il faut lancer la commande suivante : 
 +<code bash> 
 +htlatex <file.tex> "<file.cfg>,css-in" 
 +</code> 
 +<WRAP tip> 
 +Pour ne pas avoir à me souvenir de cette commande, je l'ai incluse dans un fichier //MAKE//. 
 +</WRAP>
  
-Maintenant, il ne reste plus qu'à mettre le fichier en ligne et à la sécuriser. Pour cela, on va utiliser le système de sécurité de Apache. Les besoins étant limités, ça suffira largement ((en tout cas, je l'espère)).+Maintenant, il ne reste plus qu'à mettre le fichier en ligne et à la sécuriser. Pour cela, on va utiliser le système de sécurité de Apache. Les besoins étant limités, ça suffira largement ((En tout cas, je l'espère)).
  
 On commence par créer un fichier ''.htaccess'' dans le répertoire contenant la liste des contacts. On lui ajoute le contenu suivant : On commence par créer un fichier ''.htaccess'' dans le répertoire contenant la liste des contacts. On lui ajoute le contenu suivant :
projets/informatique/carnet_adresses.1550248709.txt.gz · Dernière modification : 2019/02/15 08:38 de alexis