A placer dans un champ Upload
//A chaque modification de la liste des fichiers sélectionnés
sFormatAcceptés est une chaîne = gsFormatAutorisé
gnTaille est un entier = Taille(UPL_Upload2)
SI gnTaille > 1000000 ALORS
Info("La taille du fichier dépasse 1.000.000 octets")
SAI_Image = ""
RETOUR
FIN
SAI_Image = UPL_Upload2
SI SAI_Image > "" ALORS
SI AJAXExécute(RenvoieExtension,SAI_Image,sFormatAcceptés) = Faux ALORS
SAI_Image = ""
Info("Les formats autorisés sont : " + sFormatAcceptés)
RETOUR
SINON
IMG_Jauge..Visible = Vrai
UPL_Upload2..Etat = Grisé
UploadLance(UPL_Upload2,SAI_Image)
FIN
SINON
RETOUR
FIN
// Progression du Transfert
sFichier est une chaîne = UploadFichierEnCours(MoiMême)
//Réception des fichiers Uploadés
sNomFichier est une chaîne = UploadNomFichier(MoiMême,Faux,1)
sExtension est une chaîne = fExtraitChemin(sNomFichier,fExtension)
SI ChaîneOccurrence(gsFormatAutorisé,sExtension) = 0 ALORS
Info("Veuillez charger une photo."+RC+"("+gsFormatAutorisé+")")
RETOUR
FIN
// Début
sFichierSource est une chaîne = UPL_Upload2..Valeur // chemin du fichier temporaire sur le serveur
sFichierDest est une chaîne = fRepDonnées() + fExtraitChemin(sFichierSource, fFichier + fExtension)
imgPhoto est une Image
imgPhoto = sFichierSource // charge l'image en mémoire
nPoidsSourceKo est un entier = fTaille(sFichierSource) / 1024
nQualité est un entier
nLargeur est un entier
// 1) Qualité de départ choisie selon le poids d'origine
SELON nPoidsSourceKo
CAS 0 À 100
nQualité = 50
nLargeur = 1024
CAS 100 À 500
nQualité = 30
nLargeur = 768
CAS 501 À 1500
nQualité = 20
nLargeur = 512
CAS > 1500
nQualité = 15
nLargeur = 512
FIN
// 1) Réduire les dimensions (largeur max 1024 px, hauteur proportionnelle)
dRedimensionne(imgPhoto, 512, 0)
// 2) Sauver en JPEG avec une qualité réduite (75 = bon compromis poids/qualité)
SI PAS dSauveImageJPEG(imgPhoto, sFichierDest, nQualité) ALORS
Erreur("Échec de la sauvegarde : " + ErreurInfo())
FIN
// Uploader le fichier dans le répertoire _WEB
sNomFichierCopié est une chaîne = UploadCopieFichier(MoiMême, fRepDonnées(), imgPhoto,1)
IMG_Photo = sFichierDest
HSupprimeTout(TransfertPhoto)
HAjoute(TransfertPhoto)
TransfertPhoto.Nom = sNomFichierCopié
TransfertPhoto.Description = sNomFichierCopié
HAttacheMémo(TransfertPhoto,Image,sFichierDest,hMémoImg)
HModifie(TransfertPhoto)
//supprimer les fichiers temporaires
SI PAS fSupprime(sFichierSource) ALORS
Erreur("Échec de la suppression du fichier source : " + ErreurInfo())
FIN
SI PAS fSupprime(sFichierDest) ALORS
Erreur("Échec de la suppression du fichier destination : " + ErreurInfo())
FIN
IMG_Jauge..Visible = Faux
gbOK = Vrai
Webdev : sortie du programme pour inactivité prolongée
//Dans le code de démarrage du projet
// Stocker la dernière activité de l'utilisateur dans la session WebDev
gdhLastAction est une DateHeure <synchronisé navigateur> = DateHeureSys()
gdhLastActionAlive est une DateHeure <synchronisé navigateur> = DateHeureSys()
gnIterationDéconnexion est un entier <synchronisé navigateur> = 0
SessionPrologue(IAmAlive)
//Procédures Navigateur
PROCÉDURE IsAlive()
gdhLastAction = DateHeureSys()
gnDifférence est un numérique = gdhLastAction - gdhLastActionAlive
SI gnDifférence > 180000 ALORS
gnIterationDéconnexion ++
SI gnIterationDéconnexion <= 2
WaitToast("Session inactive" + RC + "La session va être déconnectée...")
FIN
FIN
SI gnDifférence > 200000
AJAXExécute(AfficheFinProgramme)
FIN
RENVOYER Vrai
PROCÉDURE StartTrackerIsAlive() // à placer à chaque chargement de page
gdhLastActionAlive = DateHeureSys()
Timer(IsAlive,10s)
Configurer un serveur RustDesk
Pour installer et configurer un serveur RustDesk sur Windows, voici la procédure à suivre:
Installation du serveur RustDesk
- Téléchargez les fichiers du serveur RustDesk depuis GitHub:
https://github.com/rustdesk/rustdesk-server/releases - Téléchargez trois fichiers:
hbbs-windows-x64.exe(serveur de signalisation)hbbr-windows-x64.exe(serveur de relais)- Les fichiers de configuration (si disponibles)
- Créez un dossier pour RustDesk Server, par exemple
C:\RustDesk\Server - Placez les fichiers téléchargés dans ce dossier
Configuration du serveur
- Ouvrez un terminal en tant qu’administrateur
- Naviguez vers le dossier où vous avez placé les fichiers
- Exécutez les deux serveurs:
.\hbbs-windows-x64.exe -r <adresse_ip_publique_ou_nom_de_domaine>
Dans une autre fenêtre de terminal:
.\hbbr-windows-x64.exe -r <adresse_ip_publique_ou_nom_de_domaine>
- Optionnellement, vous pouvez installer ces services pour qu’ils démarrent automatiquement:
.\hbbs-windows-x64.exe --install
.\hbbr-windows-x64.exe --install
- Assurez-vous d’ouvrir les ports nécessaires dans votre pare-feu:
- Port 21115 (TCP) – pour le serveur de signalisation
- Port 21116 (TCP) – pour l’API
- Port 21117 (TCP+UDP) – pour le serveur de relais
- Port 21118 (TCP) – pour l’entrée du serveur de relais
- Port 21119 (TCP) – pour la sortie du serveur de relais
Configuration du client RustDesk
Pour connecter vos clients RustDesk à votre serveur privé:
- Ouvrez l’application client RustDesk
- Allez dans « Paramètres » ou « Settings »
- Trouvez la section « Serveur ID/Relais »
- Remplacez les paramètres par défaut par votre propre serveur:
- Serveur ID:
<adresse_ip_ou_nom_de_domaine>:21116 - Serveur Relais:
<adresse_ip_ou_nom_de_domaine>:21117
- Serveur ID:
- Redémarrez l’application client pour appliquer les changements
Si vous avez configuré un domaine personnalisé et utiliser des certificats SSL, vous pourriez avoir besoin d’indiquer le chemin vers les certificats dans vos commandes de démarrage de serveur.
Pour vérifier que tout fonctionne correctement, contrôlez que les clients peuvent se connecter entre eux en utilisant les nouveaux IDs générés avec votre serveur.
Liste des champs Outlook (Outlook 2021 New)
Liste des titres des colonnes Outlook CSV (UTF-8)
- Prénom (First Name)
- Deuxième prénom (Middle Name)
- Nom (Last Name)
- Surnom (Nickname)
- Titre (Title)
- Suffixe (Suffix)
- Société (Company)
- Service (Department)
- Poste (Job Title)
- Adresse de messagerie (E-mail Address)
- Adresse de messagerie 2 (E-mail 2 Address)
- Adresse de messagerie 3 (E-mail 3 Address)
- Téléphone professionnel (Business Phone)
- Téléphone professionnel 2 (Business Phone 2)
- Téléphone personnel (Home Phone)
- Téléphone personnel 2 (Home Phone 2)
- Téléphone mobile (Mobile Phone)
- Téléphone du standard (Company Main Phone)
- Téléphone de l’assistant (Assistant’s Phone)
- Télécopie professionnelle (Business Fax)
- Télécopie personnelle (Home Fax)
- Pager (Pager)
- Adresse professionnelle (Business Address)
- Ville professionnelle (Business City)
- Région professionnelle (Business State)
- Code postal professionnel (Business Postal Code)
- Pays professionnel (Business Country)
- Adresse personnelle (Home Address)
- Ville personnelle (Home City)
- Région personnelle (Home State)
- Code postal personnel (Home Postal Code)
- Pays personnel (Home Country)
- Anniversaire (Birthday)
- Site Web personnel (Personal Web Page)
- Notes (Notes)
Si tu veux importer un fichier CSV dans Outlook, assure-toi d’utiliser ces en-têtes exacts et d’enregistrer le fichier en encodage UTF-8 pour éviter les problèmes d’affichage des accents. L’ordre des en-têtes n’a pas d’importance et il n’est pas nécessaire de mettre les en-têtes qui ne sont pas utilisés.
Prompt Engineering pour ChatGPT ou Claude
Crédit : Thomas Berton
Comment générer un prompt efficace :
Le format et les descriptions des sections sont les suivants :
● Contexte : Cette section décrit la situation actuelle pour laquelle le prompt est nécessaire. Elle aide le LLM à comprendre quelles connaissances et compétences il doit mobiliser pour rédiger le prompt.
● Rôle : Cette section définit le type d’expérience que le LLM possède, ses compétences et son niveau d’expertise par rapport au sujet demandé. Dans tous les cas, le rôle décrit devra correspondre à un expert de premier plan avec plus de deux décennies d’expérience pertinente et de leadership intellectuel.
● Action : C’est l’action que le prompt demandera au LLM de réaliser. Elle devra prendre la forme d’une liste numérotée d’étapes séquentielles, conçue pour maximiser la réussite du LLM.
● Format : Cette section précise l’organisation ou le style de présentation des contenus générés par le LLM. Elle détermine comment les informations sont organisées, affichées ou structurées selon les préférences ou besoins de l’utilisateur. Les formats incluent : essai, tableau, langage de programmation, texte brut, Markdown, résumé, liste, etc.
● Audience cible : Cette section concerne l’utilisateur final du contenu généré par le prompt. Elle peut inclure des informations démographiques, géographiques, la langue parlée, le niveau de lecture, les préférences, etc.
Voici un prompt reprenant les prescriptions évoquées ci-dessus : il doit être adapté au modèle utilisé et indiquer la question précise à développer.
CONTEXTE :
Nous allons créer l’un des meilleurs prompts pour ChatGPT jamais écrits. Les meilleurs prompts incluent des détails exhaustifs afin d’informer pleinement le Modèle de Langage Large (LLM) des éléments suivants : objectifs, domaines d’expertise requis, connaissances spécifiques au sujet, format préféré, audience cible, références, exemples, et la meilleure approche pour atteindre l’objectif. En tenant compte de ces informations et de celles qui suivent, vous serez en mesure d’écrire un prompt exceptionnel.RÔLE :
Vous êtes un expert en création de prompts pour modèles LLM. Vous êtes reconnu pour concevoir des prompts extrêmement détaillés, conduisant à des réponses bien supérieures à celles généralement obtenues. Les prompts que vous rédigez sont si réfléchis et complets qu’ils ne laissent aucune question en suspens.ACTION :
1. Avant de commencer à rédiger ce prompt, vous devez d’abord identifier le sujet ou le thème du prompt. Si aucun sujet ou thème ne vous est fourni, demandez-le explicitement.
2. Une fois que vous avez compris le sujet ou le thème, examinez également le format et l’exemple fournis ci-dessous.
3. Si nécessaire, le prompt devra inclure des éléments à « remplir par l’utilisateur » afin qu’il puisse les adapter à ses besoins spécifiques.
4. Prenez une grande inspiration et procédez étape par étape.
5. Une fois toutes les informations assimilées, rédigez le meilleur prompt jamais créé.FORMAT :
À des fins d’organisation, vous utiliserez un acronyme appelé « C.R.A.F.T. », où chaque lettre représente une section du prompt.AUDIENCE CIBLE :
L’audience cible pour cette création de prompt est [ChatGPT 4o ou ChatGPT o1 ou Claude …].
Installer une icone pour afficher le bureau
Voici pourquoi AnyViewer est l’un des meilleurs outils de prise de contrôle à distance ?
Facilité d’utilisation
- AnyViewer est très simple à configurer, il suffit de quelques minutes pour l’installer et le faire fonctionner, même pour les utilisateurs peu expérimentés.
- Son interface est intuitive avec des suggestions claires pour chaque étape, vous n’avez pas besoin de réfléchir à la marche à suivre.
Fiabilité et performances
- AnyViewer offre un accès à distance stable sans panne soudaine.
- Il garantit une connexion rapide sans décalage.
- Les utilisateurs peuvent choisir la résolution et la qualité d’image en fonction de la vitesse du réseau.
Fonctionnalités complètes
- AnyViewer permet le contrôle total du PC distant, vous pouvez redémarrer ou éteindre l’ordinateur à distance.
- Il offre des fonctions avancées comme le transfert de fichiers, le chat intégré, le mode privé, l’authentification 2 facteurs, etc.
- Les utilisateurs peuvent redimensionner la fenêtre du bureau distant en plein écran.
Gratuité
- AnyViewer propose un plan gratuit pour un utilisateur, ce qui en fait une excellente option pour un usage personnel.
- Si vous envisagez d’acquérir une licence, il ne vous en coûtera que 50 petits euros par an (contre 790€ pour Teamviewer)
En résumé, AnyViewer se distingue par sa facilité d’utilisation, ses performances, ses fonctionnalités complètes et son plan gratuit. C’est un excellent choix pour dépanner vos clients distance, accéder à votre ordinateur, que ce soit pour du télétravail ou simplement récupérer des fichiers.
Créer un raccourci bureau dans la barre des tâches
Voici une méthode pour ajouter un raccourci vers le bureau :
- Faites un clic droit sur le bureau.
- Sélectionnez « Nouveau » puis « Raccourci ».
- Dans la fenêtre qui s’ouvre, entrez la commande suivante :
explorer.exe shell:::{3080F90D-D7AD-11D9-BD98-0000947B0257} - Cliquez sur « Suivant », donnez un nom au raccourci (par exemple « Afficher le bureau »), puis cliquez sur « Terminer ».
- Faites glisser ce nouveau raccourci vers la barre des tâches.
Envoyer un SMS
// Module : EnvoiSMS
// Fonction pour envoyer un SMS
PROCEDURE EnvoyerSMS(sDestinataire est une chaîne, sMessage est une chaîne)
// Déclaration des variables cSMSProvider est un httpRequêtesURL est une chaîne
// Configuration du fournisseur SMS (exemple avec Twilio)
sURL = "https://api.twilio.com/2010-04-01/Accounts/VOTRE_COMPTE_SID/Messages.json"
cSMSProvider..URL = sURL
cSMSProvider..Utilisateur = "VOTRE_COMPTE_SID"
cSMSProvider..MotDePasse = "VOTRE_AUTH_TOKEN"
// Préparation des données à envoyer
cSMSProvider..Paramètre["To"] = sDestinataire
cSMSProvider..Paramètre["From"] = "VOTRE_NUMERO_TWILIO"
cSMSProvider..Paramètre["Body"] = sMessage
// Envoi de la requête
SI HTTPEnvoie(cSMSProvider) ALORS
SI cSMSProvider..CodeEtat = 200 OU cSMSProvider..CodeEtat = 201 ALORS
Info("SMS envoyé avec succès")
SINON
Erreur("Échec de l'envoi du SMS. Code d'erreur : " + cSMSProvider..CodeEtat)
FIN
SINON
Erreur("Erreur lors de l'envoi de la requête HTTP")
FIN
FIN
Connaître le mot de passe wifi
Commandes:
cmd
netsh
wlan show profile
wlan show profile "wifi name" key=clear



