Les expressions régulières (regex) sur Notepad++ sont très pratiques pour standardiser un fichier de données avant import par exemple, récupérer des données, corriger des chaînes particulières, avec des conditions, etc...

Ici quelques astuces propres à mon usage personnel.

Pandas logoPandas is an excellent Python librarie to manage data. Barely started using it, it already solves some of my recurring needs. Matplotlib allows to create advanced charts and Openpyxl is very usefull to manage Excel files, read or generate them for example.

So here some tips for my memory and maybe for you.

Let's go learn data analysis with this 3 beautiful tools. First install or check Python and Pip, then the libraries.

pip install pandas
pip install matplotlib
pip install openpyxl

MS Access is enought supported, so I would list only specific cases which took me more than 1 minute to solve.

Get the first letter from each word in upper case in a query (Title Case)

Get the first letter from each word in upper case and the remaining in lower case is easy with Excel (=PROPER), but with Access I searched for a long time ...

StrConv([field],3)

Get HTML from plain text in a query

Recover plain text from rich text in an Access query is easy (PlainText([field]), but the opposite is not!

Here an example to get the main HTML chars (not all!) from a field named First name:

firstname: Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace([First name],"è","è"),"ú","ú"),"í","í"),"ć","ć"),"á","á"),"é","é"),"ö","ö"),"ç","ç"),"ş","ş"),"ü","ü"),"ó","ó"),"ñ","ñ"),"ë","ë"),"æ","æ"),"à","à"),"ã","ã"),"'","'"),"ô","ô")

I know, I should use VBA ... Later!

Get the date today

Full time (13/09/2021 12:05:15)

today: Now()

Day only (13/09/2021)

today: Date()

Some formatting (2021 09 13 or 2021-09-13 12:13:16)

today:Format(Now();"yyyy-mm-dd\ hh:nn:ss")
today:Format(Date(),"aaaa mm jj")
today:Format(Now(),"aaaa-mm-jj hh:nn:ss")

If

Use IIF:

IIf(date_submit="0000-00-00 00:00:00", Format(Now(),"yyyy-mm-dd"), date_submit)

Find field in full upper case/lower case

Do a test as it:

Test: StrComp([First name];UCase([First name]);0)=0

And filter on -1.

Search a field in another field

InStr([Tmp_customer].[email];[attendees].[LAST NAME])

And a filter >0.

 

 

SeleniumHere a simple Selenium example where we go to fill then submit a form from data previously converted in XML.

I choose XML because this flat format is easy to grab with Python, and it can be created from an Excel file with Access for example. Morever, if the auto-submit crashs during the execution (it is possible even with a good code, depending on the website providing the form), Chromium will stop on the last record and you could remove the begining of the XML before to re-execute the same code (to avoid duplicates).

For those in a hurry (🧐) my code is here on GitHub. But for a full understanding just see below.

Acymailing est une extension Joomla permettant de mettre en place des outils newsletter du plus simple au plus puissant (filtres, vitesses d'envoi, tracking, stats, relai SMTP...). Ce système open-source existe en version gratuite (déjà très performante) ou payante (très abordable). L'extension peut bien sûr être overridée.

Cependant son développement régulier rend l'utilisation des overrides plus lourd que la modification directe du code source. En effet dans certains contextes (multi-utilisateurs, multi-bases, flotte d'outils...), les overrides risquent d'être complexes à maintenir dans le temps.

C'est en tout cas mon impression en utilisation intensive d'Acy. Certaines MAJ peuvent toucher les fichiers originaux et ne pas être prises en compte dans vos overrides... Mieux vaut donc connaître un minimum le code de l'extension et avoir quelques repères.

Ici quelques notes personnelles me permettant de maintenir facilement mes outils. Rappellons l'ancien forum encore en ligne d'où proviennent certaines de ces astuces (le support a évolué vers un système plus personnalisé).

emc1

Cet article est principalement destiné aux joomlistes avancés souhaitant personnaliser ou optimiser leurs applications newsletter.

Le paragraphe Quelques liens s'adresse généralement à tous webworkers digitaux (marketeurs, intégrateurs, graphistes...).

Le paragraphe Relai SMTP évoque  le relai Elastic Email en contexte de mass sending.

Et non, je ne travaille pas pour eux.

Le cryptage MD5 est une forme de hachage relativement ancienne mais toujours bien pratique. On peut l'utiliser pour comparer des bases d'emails avec celles d'un prestataire sans fournir les données brutes par exemple. En vue d'un partenariat, d'un échange...

Attention nous ne parlons pas ici de réelle sécurisation. Le MD5 SQL - même salé ou doublé - est sujet à caution. Il ne s'agit que de permettre la transmission de données avec une relative tranquilité quant à un usage non-souhaité de ses fichiers. Parfois le partenaire qui vous transmettra ses données cryptées vous fera également signer un engagement de non-divulgation ou de non-utilisation frauduleuse (non-disclosure). Et si c'est vous qui transmettez les données (j'avoue ne jamais le faire...), pensez-y !

Quoiqu'il en soit il est courant de demander cela à un prestataire fournisseur (l'inverse est moins acceptable). Certes PhpMyAdmin permet nativement de saisir du texte puis de l'encrypter en MD5 (Insérer/Fonction/MD5). Mais pour mettre en place un worflow ou comparer des bases en lot, il est nécessaire de maîtriser la chose en SQL.

Quelques requêtes SQL d'exemple :

Voir le cryptage MD5 d'une chaîne

SELECT MD5(Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.') ;