Greboca  

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

LinuxFr.org : les journaux  -  [Letlang] Faire la différence entre un nombre et une quantité

 -  Mars 2022 - 

Bonjour Nal,

Je vais encore te parler de Letlang aujourd'hui. Mais cette fois ci, pas de code, plutôt une discussion sur une fonctionnalité que j'aimerais bien rajouter à la syntaxe.

Voici d'abord une petite table des matières de ma série d'articles sur ce projet :

Je suis tombé ce weekend sur ce sujet (sur HackerNews): Please put units in names.

L'idée est la suivante :

Dans la plupart des langages de programmation, on a des int et des float, en math/physique, on appelle ça des scalaires.

Toujours en math physique, on a des mesures de quantités. Ces mesures sont composées de 3 choses :

  • un scalaire représentant la valeur de la mesure
  • une unité représentant le type de la mesure
  • une marge d'erreur de l'outil qui a fait la mesure

Ces mesures ont des règles bien précises. Par exemple :

  • on peut multiplier/diviser 2 mesures différentes, on obtient une nouvelle mesure : 2kg / 2s = 1 kg/s
  • on peut additionner/soustraire 2 mesures identiques : 2s + 3s = 5s

Ces opérations ont du sens : 1kg/s représente un changement de 1kg pour chaque unité de temps

Par contre, 1kg + 5s n'a pas de sens physique, on ne peut donc pas les "combiner" et le résultat de l'opération est 1kg + 5s et certainement pas 6 (kg+s).

Hors si j'écrit en Python :

kilograms = 1
seconds = 5
wtf = kilograms + seconds
assert wtf == 6

Cela fonctionne sans soucis.

Toujours en lisant la discussion sur HackerNews, je tombe sur ce concept en F# : https://fsharpforfunandprofit.com/posts/units-of-measure/

Il est possible d'ajouter au système de type de nouvelles unités :

[<Measure>] type kg
[<Measure>] type s

let a = 10<kg>
let b = 5<s>
let c = a / b  // 2
let d = a * b  // 50
let e = a + b  // COMPILATION ERROR

C'est assez excellent, je veux ça en Letlang.

J'ai encore un petit soucis par contre. Les unités temporelles :

  • une minute c'est 60 secondes : FAUX, parfois c'est 61
  • un mois c'est 30 jours : FAUX, parfois c'est 30, parfois c'est 31, parfois c'est 29, parfois c'est 28
  • un an c'est 365 jours : FAUX, parfois c'est 366, parfois c'est 355

Si je te demande d'ajouter 2 mois à un timestamp, en Python tu écrirais :

import datetime

ts = # ...
dt = datetime.datetime.fromtimestamp(ts)
new_dt = dt + datetime.timedelta(months=2)

Mais en vrai, tu devrais plutôt me poser la question :

Ça veut dire quoi ajouter 2 mois ?
J'ajoute 2*30 jours ?
J'ajoute 61 (30+31) jours ?
Je change juste la partie "mois" de la date sans changer le jour ?
Je le fais dans quelle timezone ?

Bref, si tu en veux plus des comme ça, je te conseille cette merveilleuse lecture : https://gist.github.com/timvisee/fcda9bbdff88d45cc9061606b4b923ca

Revenons au sujet. Quand je vais devoir écrire la bibliothèque standard du langage. Quel serait selon toi le moyen le plus correct d'écrire cet objet timedelta ? Quelle est son unité ?

Même question au final pour l'objet datetime et date. Concrètement je vois plusieurs types temporels :

  • "point in time" / "instant" : une valeur qui a pour unité un calendrier et une timezone
  • "duration" : une valeur qui a pour unité des secondes multipliées par des puissances de 10 (comme en physique)
  • "time span" : un tuple composé de 2 "point in time"

Donne moi ton avis dans les commentaires :)

Et puis, si t'as l'tin, el'recette d'el tarte tatin, elle est tout' simpe. Té fais ene tarte, et pi t'atin.

Tarte tatin

Commentaires : voir le flux Atom ouvrir dans le navigateur

par David Delassus

LinuxFr.org : les journaux

LinuxFr.org : Journaux

La version 2.0 de WhosWho est sortie

 -  15 mai - 

Bonjour Nal,Je viens de publier la version 2.0 de WhosWho, mon logiciel pour faire des trombinoscopes, dont j'avais parlé il y a longtemps dans (...)


décrire une une image avec une iA locale

 -  8 mai - 

Aujourd'hui c'est fourien™, petit tuto sans prétention!Pour décrire des images en utilisant une iA localement j'utilise LLaVA qui fait partie de (...)


antistress adventure in Flatpak land

 -  30 avril - 

Hello nal, ça faisait un bail !Certain (il se reconnaîtra) m'a demandé de le tenir au courant lorsque j'aurai basculé sur un usage de Firefox (...)


Téléphone sous Linux ?

 -  25 avril - 

Aujourd'hui, avoir un téléphone avec un Android libéré, c'est possible, on pense en particulier à Murena.Avoir un téléphone sous GNU/Linux, c'est (...)


Quand votre voiture vous espionne… et vous le fait payer

 -  23 avril - 

Ceci se passe aux États-Unis, pour l’instant, aucune preuve qu’une telle fuite existe en Europe. Mais… si votre assurance augmente brutalement, (...)