Archives de catégorie : Astuces

Comment ouvrir un fichier JSON avec Excel ou Power BI ?

Le format JavaS­cript Object Nota­tion est très fréquem­ment utilisé sur inter­net. Par exemple, pour les échanges d’in­for­ma­tion entres serveurs ou avec votre navi­ga­teur.

Cepen­dant si vous souhai­tez ouvrir des fichiers JSON avec Excel pour les exploi­ter comme des tableurs clas­siques, suivez ces quelques étapes.

Si vous utili­sez PowerBI, vous pouvez direc­te­ment passer à l’étape 3.

Si vous n’avez pas de fichier JSON, vous pouvez utili­sez ce json que j’ai utilisé dans mon exemple ci-après

[{« colA »:1, »colB »: »abc », »colC »: »def »},{« colA »:2, »colB »: »abc », »colC »: »def »},{« colA »:3, »colB »: »abc », »colC »: »def »},{« colA »:4, »colB »: »abc », »colC »: »def »},{« colA »:5, »colB »: »abc », »colC »: »def »},{« colA »:6, »colB »: »abc », »colC »: »def »},{« colA »:7, »colB »: »abc », »colC »: »def »},{« colA »:8, »colB »: »abc », »colC »: »def »},{« colA »:9, »colB »: »abc », »colC »: »def »}]

Excel

  1. Pour commen­cer, ouvrez un nouveau clas­seur Excel

2. Cliquez ensuite sur l’on­glet Données puis Obte­nir des données -> A partir d’un fichier fichier et enfin selec­tio­nés JSON.

3. Une fenêtre Power Query s’ouvre alors avec une descrip­tion très succincte du fichier. Comme vous pouvez le voir seule une colonne est présente au lieu de 3.

4. Pour voir les autres cliquez sur l’un des numé­ros de ligne pour avoir le détail de la ligne. Si vous cliquez sur Record, vous pouvez reve­nir en arrière avec les étapes appliquées dans la colonne de Droite. Suppri­mez simple­ment l’élé­ment Navi­ga­tion pour reve­nir à l’écran précé­dent.

Pour trans­for­mer ces données en fichier Excel, cliquez sur « Vers la table » juste en dessous de Fichier

5. Dans la fenêtre qui s’af­fiche, lais­sez les valeurs telles quelles en cliquant sur OK.

6. Cliquez ensuite sur le bouton entouré en noir dans la capture ci-dessus qui va permettre de conver­tir chaque objet en colonne.

7. Sélec­tion­nez alors les colonnes que vous souhai­tez conver­tir puis cliquez sur OK

8. Nous arri­vons à la dernière étape, cliquez sur « Fermer et char­ger » pour que les données reviennent dans votre clas­seur d’ori­gine.

Il ne vous reste plus qu’à renom­mer les colonnes pour que votre fichier soit prêt à être utilisé.

Connais­sez-vous l’As­sis­tance rapide de Windows 10 ? Une alter­na­tive gratuite à TeamVie­wer

En ces temps de confi­ne­ment, lié au Coro­na­vi­rus, le recours au télé­tra­vail impose égale­ment des contraintes de dépan­nages à distances.

Sur le marché des solu­tions de prises de main à distance ou téléas­sis­tance tout le monde connait le leader TeamVie­wer qui est utili­sable sans frais pour un usage person­nel mais payant pour un usage profes­sion­nel.

Mais saviez-vous que Windows 10 intègre un logi­ciel d’as­sis­tance utili­sable gratui­te­ment par inter­net ?

Ce dernier s’ap­pel Assis­tance rapide et ne néces­site qu’un compte Micro­soft.

Comment ça marche ?

Pour l’ou­vrir tapez simple­ment dans la barre de recherche Assis­tance rapide

Recherche de l’as­sis­tance rapide Windows 10

Une fois lancée l’appli­ca­tion propose deux modes de fonc­tion­ne­ment

Le premier (Obte­nir de l’aide) est à utili­ser par la personne à dépan­ner, il faut qu’elle entre un code à six chiffres qui est fourni en utili­sant la seconde option, Aider un autre utili­sa­teur.

Pour offrir de l’aide à un autre utili­sa­teur vous devrez tout d’abord vous connec­ter à votre compte Micro­soft.

Ensuite il ne vous reste plus qu’à commu­niquer le code à usage unique qui n’est valable que 10 minutes.

La personne distante n’a plus qu’à entrer ce code et accep­ter la connexion pour pouvoir prendre la main sur l’or­di­na­teur ou simple­ment visua­li­ser l’écran

Une fois le contrôle pris vous pour­rez :

  • Sélec­tion­ner l’écran que vous voulez dans le cas des ordi­na­teurs avec plusieurs écrans
  • Chat­tez avec la personne sur l’or­di­na­teur distant
  • Redé­mar­rer l’or­di­na­teur
  • Ouvrir le gestion­naire des taches
  • Anno­ter l’écran

Cette assis­tance rapide ne fonc­tionne qu’à partir de Windows 10 et sur les systèmes Micro­soft. Si vous devez prendre le contrôle de système Linux, Mac etc il vous faudra vous tour­ner sur les solu­tions tradi­tion­nelles telles que TeamVie­wer, Logmein etc.

Astuce – Comment augmen­ter la limi­ta­tion du nombre de carac­tères dans le chemin d’ac­cès des fichiers/dossiers sur Windows 10 ?

Sur tous les systèmes d’ex­ploi­ta­tion Micro­soft, une limite est appliquée au nombre de carac­tères auto­ri­sés pour l’em­pla­ce­ment d’un fichier ou d’un dossier. Cette limite par de la racine du lecteur, et prend en compte les noms de dossiers espaces compris jusqu’au fichier avec l’ex­ten­sion.

Peut être avez vous déjà eu le message « Chemin d’ac­cès de desti­na­tion trop long » comme quoi « Le ou les noms de fichiers sont trop longs pour le dossier de desti­na­tion » ou comme dans la capture ci-dessous « Nom de réper­toire non valide« .

Capture à la créa­tion

Elle était de 260 carac­tères jusqu’à main­te­nant. Depuis la version 1607 de Windows 10 cette limite peut être levée mais ne l’est pas par défaut.

Atten­tion, les mani­pu­la­tions ci-dessous sont à faire dans le registre de Windows et peuvent être risquée si vous ne le maîtri­sez pas. Pensez à réali­ser des sauve­gardes avant d’ef­fec­tuer toute modi­fi­ca­tion.

La clé à modi­fier dans le registre se situe dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentCon­trolSet\Control\FileSys­tem

Cher­chez la valeur LongPathsE­na­bled et passez la à 1.

Une fois la modi­fi­ca­tion effec­tuée, fermez et ré-ouvrez l’ap­pli­ca­tion ou l’ex­plo­ra­teur Windows pour que la modi­fi­ca­tion soit effec­tive.

Comment synchro­ni­ser des réper­toires FTP avec lftp ?

Lftp est un un programme dispo­nible sous UNIX qui permet de faire des trans­ferts FTP mais égale­ment de synchro­ni­ser deux réper­toires distants.

Prenons l’exemple d’une synchro­ni­sa­tion du dossier par défaut d’Apache /var/www/html que l’on voudrait sauve­gar­der sur un serveur distant dans /var/backups/html

La première étape est de vous connec­ter à votre serveur distant

lftp
open nom_d_utilisation:mot_de_passe@ip_ou_nom_du_serveur

Si elle n’est pas instal­lée sur votre système vous pouvez l’ins­tal­ler avec yum ou apt par exemple sous Debian:

apt-get update
apt-get install lftp

Une fois connecté vous pouvez lister les fichiers et dossiers présents avec ls pour véri­fier que la connexion est correcte.

Pour quit­ter lftp entrez la commande quit

Main­te­nant que nous avons vu que la connexion s’ef­fec­tue comme il faut nous allons nous inté­res­ser à la commande mirror qui va nous permettre de synchro­ni­ser deux réper­toires.

Elle s’uti­lise de la façon suivante:

lftp nomdutilisateur:motdepasse@ip -e "mirror  /var/www/html /var/backups/html;quit"

Cette commande s’avère très pratique pour effec­tuer des sauve­gardes mais égale­ment pour des migra­tions de serveurs plutôt que de récu­pé­rer en local pour renvoyer ensuite sur une autre serveur vous pouvez faire l’opé­ra­tion bien plus rapi­de­ment.

La commande mirror propose une multi­tude de para­mètres comme -e pour suppri­mer les fichiers qui auraient été suppri­més de l’hôte distant, -R pour non pas télé­char­ger des fichiers d’un serveur distant mais la de les envoyer vers un autre FTP on inverse alors la commande.

Voici ci-dessous la liste des para­mètres issue du site offi­ciel (http://lftp.yar.ru/lftp-man.html )

              -c,      --continue                 continue a mirror job if possible
              -e,      --delete                   delete files not present at the source
                       --delete-excluded          delete files excluded at the target
                       --delete-first             delete old files before transferring new ones
                       --depth-first              descend into  subdirectories  before  transferring
                                                  files
                       --scan-all-first           scan  all directories recursively before transfer‐
                                                  ring files
              -s,      --allow-suid               set suid/sgid bits according to the source
                       --allow-chown              try to set owner and group on files
                       --ascii                    use ascii mode transfers (implies --ignore-size)
                       --ignore-time              ignore time when deciding whether to download
                       --ignore-size              ignore size when deciding whether to download
                       --only-missing             download only missing files
                       --only-existing            download only files already existing at target
              -n,      --only-newer               download only newer files (-c won't work)
                       --upload-older             upload even files older than the target ones
                       --transfer-all             transfer all files, even seemingly the same at the
                                                  target site
                       --no-empty-dirs            don't    create    empty    directories   (implies
                                                  --depth-first)
              -r,      --no-recursion             don't go to subdirectories
                       --recursion=MODE           go to subdirectories on a condition
                       --no-symlinks              don't create symbolic links
              -p,      --no-perms                 don't set file permissions
                       --no-umask                 don't apply umask to file modes
              -R,      --reverse                  reverse mirror (put files)
              -L,      --dereference              download symbolic links as files
                       --overwrite                overwrite plain files without removing them first
                       --no-overwrite             remove and re-create plain files instead of  over‐
                                                  writing
              -N,      --newer-than=SPEC          download only files newer than specified time
                       --older-than=SPEC          download only files older than specified time
                       --size-range=RANGE         download only files with size in specified range
              -P,      --parallel[=N]             download N files in parallel
                       --use-pget[-n=N]           use pget to transfer every single file
                       --on-change=CMD            execute the command if anything has been changed
                       --loop                     repeat mirror until no changes found
              -i RX,   --include=RX               include matching files
              -x RX,   --exclude=RX               exclude matching files
              -I GP,   --include-glob=GP          include matching files
              -X GP,   --exclude-glob=GP          exclude matching files
                       --include-rx-from=FILE
                       --exclude-rx-from=FILE
                       --include-glob-from=FILE
                       --exclude-glob-from=FILE   load  include/exclude  patterns from the file, one
                                                  per line
              -f FILE, --file=FILE                mirror  a  single  file  or  globbed  group  (e.g.
                                                  /path/to/*.txt)
              -F DIR,  --directory=DIR            mirror  a  single directory or globbed group (e.g.
                                                  /path/to/dir*)
              -O DIR,  --target-directory=DIR     target base path or URL
              -v,      --verbose[=level]          verbose operation
                       --log=FILE                 write lftp commands being executed to FILE
                       --script=FILE              write lftp commands to  FILE,  but  don't  execute
                                                  them
                       --just-print, --dry-run    same as --script=-
                       --max-errors=N             stop after this number of errors
                       --skip-noaccess            don't try to transfer files with no read access.
                       --use-cache                use cached directory listings
                       --Remove-source-files      remove  source files after transfer (use with cau‐
                                                  tion)
                       --Remove-source-dirs       remove source files and directories after transfer
                                                  (use  with  caution).   Top level directory is not
                                                  removed if it's name ends with a slash.
                       --Move                     same as --Remove-source-dirs
              -a                                  same as --allow-chown --allow-suid --no-umask

Comment faire un package hors ligne pour une appli­ca­tion React avec NPM Serve?

Bien que la plupart des usages de React soient desti­nés à Inter­net il arrive que l’on ne puisse pas avoir d’ac­cès exté­rieur dans le cadre du déploie­ment d’une appli­ca­tion sur des machines auto­nomes décon­nec­tées d’In­ter­net.

Tout fonc­tion­nait parfai­te­ment pour moi jusqu’au moment du déploie­ment sur l’or­di­na­teur cible, je voulais garder les url telles qu’elles étaient afin de ne pas avoir à réadap­ter l’ap­pli­ca­tion si elle venait à être publiée sur le web et la docu­men­ta­tion React conseille plusieurs serveurs web, Serve, Apache, Express, etc.

Dans cet article je vais vous montrer comment procé­der avec npm et serve.

Tout d’abord il vous faut une appli­ca­tion React, si vous n’en avez pas vous pouvez récu­pé­rer un star­ter kit ici https://create-react-app.dev/docs/getting-star­ted .

Vous pouvez tester l’exé­cu­tion de l’ap­pli­ca­tion en faisant un npm start en ouvrant ensuite votre navi­ga­teur à l’adresse http://local­host:3000

Je suppose ici que vous avez déjà un envi­ron­ne­ment de déve­lop­pe­ment React d’ins­tallé.

Une fois prêt nous allons récu­pé­rer une version portable de Nodejs (https://nodejs.org/en/down­load/) en zip. à l’heure de l’écri­ture de cet article la plus récente étant 10.16.3 en LTS. Pour l’ar­chi­tec­ture je vous laisse le choix selon vos besoins.

Dé zippez l’ar­chive et ouvrez une invite de commande dans ce dossier. (vous pouvez direc­te­ment taper cmd dans la barre d’adresse de l’ex­plo­ra­teur de fichier)

Si vous exécu­tez sur votre ordi­na­teur npx serve, npm ira direc­te­ment cher­cher dans votre envi­ron­ne­ment de déve­lop­pe­ment les modules liés à serve et par l’oc­ca­sion ne télé­char­gera pas en local dans le dossier ou alors il ira télé­char­ger les modules mais les placera dans %appdata%/Roaming/npm-cache ce qui fait qu’en déployant le dossier zip seul vous obtien­drez le message suivant:

npx serve
npm ERR! code ENOTFOUND
npm ERR! errno ENOTFOUND
npm ERR! network request to https://regis­try.npmjs.org/serve failed, reason: getad­drinfo ENOTFOUND regis­try.npmjs.org regis­try.npmjs.org:443
npm ERR! network This is a problem rela­ted to network connec­ti­vity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network ‘proxy’ config is set properly. See: ‘npm help config’

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\micka\AppData\Roaming\npm-cache\_logs\2019–09–26T22_03_50_668Z-debug.log
Install for serve@­la­test failed with code 1

Pour éviter ce problème il faut au préa­lable instal­ler de manière locale avec l’op­tion –save de npm le serveur serve.

npm install serve –save

Atten­tion il est impor­tant que vous soyez dans le dossier ou se trouvent npm et npx avant de lancer cette commande.

Une fois cette étape effec­tuée, vous aurez les fichiers serve et serve.cmd au même niveau que npm et npx et dans le dossier node_modules, l’en­semble des dépen­dances seront présentes. L’ins­tal­la­tion est main­te­nant réel­le­ment portable.

Vous pouvez aller plus loin en ajou­tant un navi­ga­teur embarqué comme Elec­tron par exemple et propo­ser un package encore plus complet.