Pour moi un transfert explicite c’est « je vous transfère mes droits ».
« Faites ce que vous voulez » c’est en tant que détenteur du copyright, je vous permet d’exercer les droits sur lequel j’ai le contrôle, à savoir la « reproduction », « l’adaptation » et la « représentation » de l’œuvre comme vous le voulez. Mais ce n’est pas un transfert explicite de tes droits.
Ah non, le logiciel n’est pas différent d’une œuvre artistique de ce point de vue - le droit concerne plus généralement les oeuvres de l’esprit d’ailleurs : https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006278875&cidTexte=LEGITEXT000006069414 . La seule différence (de mémoire) c’est que pour un logiciel c’est l’employeur d’un dev qui détient les droits, alors que dans les autres cas c’est l’auteur indépendamment de qui le paye.
Tu prends le problème a l’envers. Lequel des droits patrimoniaux sur lequel l’auteur a le droit de jouer dans la licence permet au signataire de la licence d’obtenir les droits de licencier ? Aucun.
Seule la cession des droits (le CLA) est un transfert explicite de ces droits, qui permet au détenteur des droits de décider à sa guise des condition de « reproduction », « d’adaptation » et de « représentation » (3 des 4 libertés du libres). Le droit de licencier n’en fait pas partie, seule la détention de ces droits (et pas leur exercice) le permet.
D’autant plus qu’il ne faut pas 15 lectures pour se rendre compte que la licence zlib ne permet certainement pas de toucher à la licence : https://www.zlib.net/zlib_license.html
The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
This notice may not be removed or altered from any source distribution.
Elle permet juste de ne pas mentionner qu’elle est utilisée dans un binaire.
j'ai refusé de relicencier zlib (on peut le faire car la licence permet "tout")
Moui en droit anglo saxon je sais pas mais en droit français certains droits sont inaliénables. Du coup c’est pas parce que la licence permet « tout » que tu peux céder ces droits là … et même la cessation des droits cédables est soumise a des obligations légales : http://www.jurizine.net/2005/09/02/13-la-cession-des-droits-patrimoniaux-d-auteur
La licence permet tout … ce qu’il est possible de faire légalement. En particulier l’objectif de la licence est de fixer dans quel mesure le signataire de la licence a le droit d’exploiter l’oeuvre. Mais ce n’est pas un contrat de transferts des droits patrimoniaux qui sont « exclusifs » ( http://www.jurizine.net/2005/09/02/11-les-droits-patrimoniaux-de-l-auteur-sur-son-oeuvre ) et restent donc la propriété de l’auteur, je pense. Et seule la possession de ces droits permet de fixer les conditions d’exploitation, donc de licencier …
tout en défendant le mot quand son "camps" l'utilise
C’est marrant ton utilisation des guillemets, possiblement pour souligner le ridicule de ces pseudos guerres parfois un peu picrocholines et du regroupement en « camps » un peu fictifs alors que c’est toi qui depuis le début emploie une terminologie de guerres et qui introduit cette idée de camps antagonistes qui vont s’annihiler …
Quand il y a personne pour troller avec toi, tu trolles avec toi même, quoi …
Apparemment, c’est pas std::extend dont il s’agit, mais de std::extent : http://en.cppreference.com/w/cpp/types/extent pour ceux qui comme moi sont un peu perplexe et auraient cherchés à comprendre.
A priori ça colle : sur un tableau N-dimensionnel, std::extent::value donne statiquement le nombre d’éléments de la Xième dimension (0 pour un tableau unidimensionnel)
Mouarf, tu me replonge dans cette époque ou les (des) codes des programmes étaient distribués sur papier et ou il fallait les taper à la main avant de les lancer :)
L’arbre s’est révélé fertile et robuste. Il devint touffu et grandit rapidement, fleurit vite, certains fruits furent très rapidement murs. Ils furent cueillis :)
Quand tu en est rendu à écrire ce type de code, c’est que tu joues avec le système de type, peut être pour faire des vérifications assez avancées au moment de la compilations. Du coup ce qui compte c’est pas tant l’assembleur généré, ce code ne faisant absolument rien tu aurais tôt fait de ne rien écrire :) L’extensibilité de la solution mentionnée dans un autre commentaire prime sans doute alors, c’est sacrifier un peu de lisibilité dans la biblio pour pouvoir faire des vérifications poussées simplement sur le code client. Enfin j’imagine parce que j’ai foutrement aucune idée de à quoi une telle construction peut servir :) Le fait que le code ne fasse rien me fait penser que c’est peut être purement pour satisfaire ou aider le système de type dans un truc avec un haut niveau de généricité.
Par curiosité, @l’auteur, c’est quoi le contexte ?
|s| s != "q"
fonction anonyme de paramètre "s" (et de valeur s!=q). C’est juste plus compact et léger que les déclarations de fonctions habituelles :)
Map est juste une fonction qui en attend une autre en paramètre. Le « map » classique s’applique sur une liste et applique la fonction sur tous les élément de la liste. C’est à dire qu’à partir d’une fonction d’un type A vers un type B ( A -> B ) map permet de former une fonction qui à partir d’une liste de A ([A] ou Liste A) retourne une liste de B : [A] -> B.
Haskell, avec la notion de foncteur, a généralisé cette idée avec la notion de « foncteur » et fmap : un « truc » qui transforme une fonction de A -> B en une fonction « Truc A -> Truc B » est le fmap du foncteur truc ( https://hackage.haskell.org/package/base-4.10.1.0/docs/Control-Monad.html#v:fmap )
Corrigez moi si je me trompe mais en l’occurrence « map » est le « fmap » du std::option de rust : il permet d’appliquer une fonction A -> B qui n’a pas à se soucier de si son A peut être null ou que sais-je en une fonction « option A -> option B » (« Truc A -> Truc B » avec Truc = option) qui va gérer d’elle même les cas « null » dans d’autres langage.
f est une fonction qui renvoie un U et map(f) renvoie un option.
L’idée du « Maybe » en haskell c’est que tu écris tes fonctions sans te soucier des cas d’erreurs ou des éventuels « null » quand rien ne peut arriver, comme si tu écrivais du code avec exceptions presque (ou des fonctions qui prennent un A et retournent un « peut être B » ( voir https://en.wikibooks.org/wiki/Haskell/Understanding_monads#Motivation:_Maybe ). Et le langage t’aides à les composer comme il faut avec des opérateurs et du sucre syntaxique éventuellement. C’est un cas particulier de « monade ». Dans un monade des opérations sont abstraites de la même manière que « fmap » est abstraite dans le début de mon commentaire.
Dans les langages à typage dynamique tu veux dire ? Le type n’est pas déduit (dans le sens de l’inférence de types en tout cas), il est donné par le type de la valeur affectée lors de l’utilisation de la variable par l’interpréteur.
Après la construction d’un objet « TapTempo », _sampleSize à la valeur qui correspond au littéral « 5 », qui est probablement un entier. Mais si c’est dynamique on peut affecter une valeur de n’importe quelle autre type plus loin dans le programme, et la seule manière de savoir ce qu’il y a dedans qui marchera à tout les coups c’est de tester ça à l’exécution.
Ou essayer. Parce qu’à la lecture de ce simple helloworld, pas simple de deviner une quelconque spécificité par rapport aux autres.
C’est assez lisible, comparable à du lua dans la même niche. Au delà de ça, difficile de dire quoi que ce soit :) Il y a un intérêt au delà du fait que ça semble être populaire ?
Le besoin de partager des liens, il est présent dans toute communauté. Si les gens le font pas ici, il le feront ailleurs, genre sur des plateformes proprios comme twitter qui sont parfaites pour ça.
Le truc c’est que sur ces plateformes, on est pas forcément dans la même logique qu’ici : soit on est abonnés à des proches, soit on est abonné à des « célébrités » (des personnes en vue ou influente). Ici on reçoit les liens de personnes qu’on aurait pas forcément remarqué dans une logique plus thématique que personnelle, c’est une autre perspective qui favorise la diversité.
Enfin la possibilité de création de contenu peut naître de l’éventuelle discussion qui suit, ce qui sur un site thématique comme linuxfr ou les commentaires sont généralement relativement pertinents, n’est pas inintéressant. Ce serait rajouter une section similaire à « HackerNews » https://news.ycombinator.com/ sur Linuxfr.
J’ai déjà par exemple trouvé des liens pas inintéressants sur la tribune de rédaction que personne n’avait eu le temps de développer en journal, et c’est dommage parce qu’ils sont peu visibles.
J’en ai utilisé un autre dans le genre dans le passé : https://github.com/micha/jsawk . Comme awk balance du texte en sortie, ça peut balancer du json en sortie. On peut extraire des données pour les sortir formatées en texte comme on veut, et le langage n’est pas du awk mais du js à la place.
Ça pourrait être un peu long parce qu’il y a pléthore d’outils, alors je vais me contenter d’un inventaire à la Prévert. On sent que c’est un projet fondamentalement international pour lequel les langues sont importantes, même si comme ailleurs bien des discussions se font en anglais. Voici un aperçu des outils que j’ai eu l’occasion d’utiliser :
(que je découvre pour l’occasion n’est même pas géré par Wikimedia). Un wiki qui expose les chaîne de traduction de divers projets, dont Wikimedia et ses extensions. On peut proposer son propre projet en en parlant aux responsables de wiki. Gère d’autres projets d’envergure comme les logiciels OSM, apparemment.
Pour le traducteur, il se voit proposer une interface avec une pseudo page wiki à traduire pour chaque message, éventuellement avec une doc pour aider les suivants et contextualiser un peu (si vous avez tenté de traduire un logiciel, vous savez sûrement qu’un message isolé sans avoir connaissance de l’interface autour, on sait pas toujours bien ce qu’il est supposé vouloir dire). Relativement simple. L’interface utilise une extension Mediawiki dont on parle plus bas. L’aspect social est géré par les messages entre utlisateurs sur le wikis et les différents systèmes de notification, et de suivi des modifications habituels sur les wikis.
L’extension Translate est une extension Mediawiki qui permet de gérer des wikis multilingues. En pratique une page wiki dans une langue peut être préparée pour être traduite grâce à des balises dans le code déterminant les parties à traduire. L’interface expose alors à un traducteur dans une langue la liste des parties d’article à traduire. Elle génère ensuite une version traduite de la page par langue.
Elle gère une éventuelle documentation des message à traduire et l’identification des message dans la page pour suivi grâce à des annotations automatiques du code wiki. C’est important parce que les pages wiki sont évolutives et éditées en permanence, tout peut être déplacé à l’envie. Elle possède des fonctionnalité de relecture et d’aide à la traduction : suggestions de traductions existantes de messages proches dans la base existante de traduction, et suggestion de traduction par des services de traduction automatique.
Elle gère aussi des listes de traductions de messages non associées à des pages wikis traditionnelles. Peut être des pages de fichiers « po » annotés dans le cas de « translatewiki.net », mais c’est pure spéculation de ma part.
Dans le cadre de l’utilisation aux quotidien sur un wiki, il faut compter sur la bonne volonté des éditeurs d’une page wiki qui peuvent ne pas apprécier des annotations du code induites, qui sont perçues comme compliquant l’édition. (note perso et certains vouent un tel culte de la « simplicité » du code que ça en confine au simplisme.)
Outil pour le transfert d’article d’un projet linguistique à un autre, par exemple traduire un article de wp en français en arabe ou en anglais.
Fonctionne en divisant la page en titre / section / paragraphe qu’on peut sélectionner (ou pas) pour la traduction. Propose pas mal d’aides comme la traduction des liens de site, il s’agit de trouver automatiquement l’article équivalent (ou la catégorie) équivalente dans le wiki cible, l’expansion des modèles (les modèles du wiki source sont pas forcément dispo sur le wiki cible, ou sont incompatibles). Propose pour certaines paires de langues des traductions automatiques. Fonctionne avec une version « visuelle » des parties à traduire et du formatage wysiwig.
C’est assez sympathique et utile, mais ça souffre de pas mal de bugs qui font que la sortie de l’outil doive de mon expérience forcément être revue après traduction (perte des formules mathématiques, difficulté de gérer le formatage avec l’interface au moment de la traduction.) Défauts de jeunesses mais qui perdurent, les équipent qui développent ayant d’autres projets et priorités. J’ai subis des gros bugs comme l’impossibilité de recharger une traduction en cours (qui traînait un peu) après quelque semaine quand l’article original est modifié, tout perdu. La traduction est toujours en cours mais du coup j’ai suivi une stratégie différente, exporter un semblant de traduction depuis l’outil de traduction dans une page wiki très tôt dans le processus traduction vers une page normale de mon espace utilisateur, que je modifie comme n’importe quelle page.
Tooltranslate: les outils web de l’univers Wikipedia
Des serveurs hébergent des interfaces web qui fournissent des service divers et variés pour visualiser / modifier / faire des requêtes sur les outils Wikimedia, par exemple https://tools.wmflabs.org/reasonator/ opur visauliser Wikidata ou https://petscan.wmflabs.org/ pour récupérer des tas d’articles et leur élément Wikidata en fonction de tout un tas de critères et des éditions en masse.
Ces outils disposent de tooltranslate, qui vise manifestement l’efficacité et l’ouverture. On clique sur « traduire », on choisit sa langue et on traduit. Il semble possible d’ajouter ses propres outils à l’envie sans demander à personne. Il suffit d’avoir un compte Mediawiki pour traduire, l’identification est gérée par Wikimedia.
Ressources linguistiques inter-langues libres :
Il y a bien évidemment le wiktionnaire, qui donne des définitions de pleins de termes dans plein de langue, avec le projet en cours de wiktionnaire structuré, c’est à dire d’utiliser des structures de données informatiques pour stocker les synonymes, antonymes … des termes dans les différentes langues, les relier à l’élément Wikidata correspondant à leurs différentes définitions. Il y a des projets de https://en.wiktionary.org/wiki/Wiktionary:Thesaurus . Wikidata fournit un point de vue inverse : pour un concept donné, on peut retrouver un « intitulé » (terme) (et les pages wikipédia le décrivant) le désignant dans toutes les langues. C’est ce qui permet à l’outil de traduction d’article de transposer les liens, même si c’est pas abouti.
En conclusion :
J’ai un peu débordé du cadre, mais le potentiel de Wikimedia en terme d’ingénierie du langage est tel que c’est bien tentant. On pourrait rire au nez et douter du succès de n’importe quel autre projet avec ce genre d’ambition, mais dans le cas de Wikimedia ça semble juste naturel. La fondation a une équipe de développement dédiée
Au lieux de stocker les mots de passes en clair, tu peux peut être t’envoyer régulièrement des notifications pour te rappeler de lancer un script, associé à zenity pour te demander les mots de passe. Un truc genre « appindicator » (comment on fait ça on python : http://candidtim.github.io/appindicator/2014/09/13/ubuntu-appindicator-step-by-step.html » ) que tu lances à chaque démarrage de ton desktop, ou par anacron, qui fonctionnerait un peu comme les notifications de nouvelles mises à jour système.
Sauf qu’aujourd’hui certaines preuves utilisent des ordis pour faire des bouts de démonstration. Ça complique les choses d’une part parce que si tu veux enlever l’algo de l’équation ça produit des preuves dont la taille est sans commune mesure avec les preuves d’avant. Donc un truc probablement fastidieux et long à vérifier à la main, on a ptete mieux à faire du temps et des nerfs de nos meilleurs matheux. Ou alors ça nécessite de se convaincre que le programme utilisé est effectivement capable de produire une démonstration de ce qu’il est supposé montrer. Donc qu’il est sans bug. Les matheux tradis détestent ces démonstrations d’ailleurs, parce que les ordis servent souvent à faire une exploration systématique d’un certain nombre de cas qui peuvent exploser combinatoirement, et qu’ils préfèreraient un argument qui règle tout de manière plus synthétique avec une belle théorie. Et que ça rend difficile de se convaincre de la correction de la preuve. Mais rien ne dit que ça existe dans l’absolu et que toutes les preuves sont « courtes ». Au contraire est certains qu’il y a des objets comme des indécidables ou des propositions à démonstrations très très longue dans un système logique donné. cf. https://fr.wikipedia.org/wiki/Longueur_d%27une_d%C3%A9monstration
Par exemple pour P=?NP ou des « preuves » sont produites régulièrement par tout un chacun et envoyés à des experts, il y a de bonne chances pour que personne ne lise jamais la proposition, trop long et peu probable que ce soit correct de la part d’un non expert du domaine. Si ça se trouve elle a été trouvée mais personne n’a ouvert le mail et elle a zéro chances d’être publiée :) Si le type fournit une preuve prouvée (inception) il a peut être plus de chances d’être pris au sérieux.
[^] # Re: Relicencier zlib
Posté par thoasm . En réponse au journal Utilité des CLA quand on fait du libre et que du libre. Évalué à 2.
Pour moi un transfert explicite c’est « je vous transfère mes droits ».
« Faites ce que vous voulez » c’est en tant que détenteur du copyright, je vous permet d’exercer les droits sur lequel j’ai le contrôle, à savoir la « reproduction », « l’adaptation » et la « représentation » de l’œuvre comme vous le voulez. Mais ce n’est pas un transfert explicite de tes droits.
Du coup j’ai cherché un peu, et trouvé ça : https://www.captaincontrat.com/articles-gestion-entreprise/difference-cession-droit-licence les deux notions sont bien distinctes.
[^] # Re: Relicencier zlib
Posté par thoasm . En réponse au journal Utilité des CLA quand on fait du libre et que du libre. Évalué à 2.
Ah non, le logiciel n’est pas différent d’une œuvre artistique de ce point de vue - le droit concerne plus généralement les oeuvres de l’esprit d’ailleurs : https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006278875&cidTexte=LEGITEXT000006069414 . La seule différence (de mémoire) c’est que pour un logiciel c’est l’employeur d’un dev qui détient les droits, alors que dans les autres cas c’est l’auteur indépendamment de qui le paye.
[^] # Re: Relicencier zlib
Posté par thoasm . En réponse au journal Utilité des CLA quand on fait du libre et que du libre. Évalué à 0.
Tu prends le problème a l’envers. Lequel des droits patrimoniaux sur lequel l’auteur a le droit de jouer dans la licence permet au signataire de la licence d’obtenir les droits de licencier ? Aucun.
Seule la cession des droits (le CLA) est un transfert explicite de ces droits, qui permet au détenteur des droits de décider à sa guise des condition de « reproduction », « d’adaptation » et de « représentation » (3 des 4 libertés du libres). Le droit de licencier n’en fait pas partie, seule la détention de ces droits (et pas leur exercice) le permet.
[^] # Re: Relicencier zlib
Posté par thoasm . En réponse au journal Utilité des CLA quand on fait du libre et que du libre. Évalué à 3.
D’autant plus qu’il ne faut pas 15 lectures pour se rendre compte que la licence zlib ne permet certainement pas de toucher à la licence : https://www.zlib.net/zlib_license.html
Elle permet juste de ne pas mentionner qu’elle est utilisée dans un binaire.
# Relicencier zlib
Posté par thoasm . En réponse au journal Utilité des CLA quand on fait du libre et que du libre. Évalué à 5.
Moui en droit anglo saxon je sais pas mais en droit français certains droits sont inaliénables. Du coup c’est pas parce que la licence permet « tout » que tu peux céder ces droits là … et même la cessation des droits cédables est soumise a des obligations légales : http://www.jurizine.net/2005/09/02/13-la-cession-des-droits-patrimoniaux-d-auteur
La licence permet tout … ce qu’il est possible de faire légalement. En particulier l’objectif de la licence est de fixer dans quel mesure le signataire de la licence a le droit d’exploiter l’oeuvre. Mais ce n’est pas un contrat de transferts des droits patrimoniaux qui sont « exclusifs » ( http://www.jurizine.net/2005/09/02/11-les-droits-patrimoniaux-de-l-auteur-sur-son-oeuvre ) et restent donc la propriété de l’auteur, je pense. Et seule la possession de ces droits permet de fixer les conditions d’exploitation, donc de licencier …
[^] # Re: Le pire
Posté par thoasm . En réponse au journal Copyleft is censorship. Évalué à 10.
C’est marrant ton utilisation des guillemets, possiblement pour souligner le ridicule de ces pseudos guerres parfois un peu picrocholines et du regroupement en « camps » un peu fictifs alors que c’est toi qui depuis le début emploie une terminologie de guerres et qui introduit cette idée de camps antagonistes qui vont s’annihiler …
Quand il y a personne pour troller avec toi, tu trolles avec toi même, quoi …
[^] # Re: erreur de recruteur...
Posté par thoasm . En réponse au journal Etude comparée de la popularité des langages de programmation sur linuxfr. Évalué à 8.
Le plus simple, c’est de laissez les grincheux grincher et de réagir si à un moment il y a vraiment un problème.
# std::extend typo?
Posté par thoasm . En réponse à la dépêche C++17 libère size(), data() et empty(). Évalué à 4.
Apparemment, c’est pas std::extend dont il s’agit, mais de std::extent : http://en.cppreference.com/w/cpp/types/extent pour ceux qui comme moi sont un peu perplexe et auraient cherchés à comprendre.
A priori ça colle : sur un tableau N-dimensionnel, std::extent::value donne statiquement le nombre d’éléments de la Xième dimension (0 pour un tableau unidimensionnel)
[^] # Re: Prévisible
Posté par thoasm . En réponse au journal v'la ce qui se passe quand on est pas cloud ready. Évalué à 4.
Ou de nouveaux donneurs d’ordres, genre un nouveau gvt, qui veut surtout ne rien faire comme le précédent.
[^] # Re: Monsieur essaye de masquer la réalité
Posté par thoasm . En réponse au journal Le débat est clos. Évalué à 9.
C’est con c’est pas mal pollué la Seine, faudrait pas se plonger dedans :/
[^] # Re: J'oubliais : Revue de code
Posté par thoasm . En réponse au journal [VINTAGE] "portage" taptempo en basic Amstrad CPC. Évalué à 8.
Mouarf, tu me replonge dans cette époque ou les (des) codes des programmes étaient distribués sur papier et ou il fallait les taper à la main avant de les lancer :)
[^] # Re: Version pour les francophone ?
Posté par thoasm . En réponse à la dépêche Interview de Dimitri Fontaine, contributeur majeur à PostgreSQL. Évalué à 4.
Tu devrais surtout avoir honte de rire de tes propres blagues /o\
# Cueillette de fruit à portée de main
Posté par thoasm . En réponse au journal Portage de TapTempo en Reason. Évalué à 2.
L’arbre s’est révélé fertile et robuste. Il devint touffu et grandit rapidement, fleurit vite, certains fruits furent très rapidement murs. Ils furent cueillis :)
[^] # Re: Lisibilité
Posté par thoasm . En réponse au journal Jouons avec le ``switch`` et C++17. Évalué à 3.
Si si, c’est clair :) merci.
[^] # Re: Lisibilité
Posté par thoasm . En réponse au journal Jouons avec le ``switch`` et C++17. Évalué à 3.
Quand tu en est rendu à écrire ce type de code, c’est que tu joues avec le système de type, peut être pour faire des vérifications assez avancées au moment de la compilations. Du coup ce qui compte c’est pas tant l’assembleur généré, ce code ne faisant absolument rien tu aurais tôt fait de ne rien écrire :) L’extensibilité de la solution mentionnée dans un autre commentaire prime sans doute alors, c’est sacrifier un peu de lisibilité dans la biblio pour pouvoir faire des vérifications poussées simplement sur le code client. Enfin j’imagine parce que j’ai foutrement aucune idée de à quoi une telle construction peut servir :) Le fait que le code ne fasse rien me fait penser que c’est peut être purement pour satisfaire ou aider le système de type dans un truc avec un haut niveau de généricité.
Par curiosité, @l’auteur, c’est quoi le contexte ?
[^] # Re: Super !
Posté par thoasm . En réponse au journal Port de taptempo en Rust. Évalué à 4.
Haskell, avec la notion de foncteur, a généralisé cette idée avec la notion de « foncteur » et fmap : un « truc » qui transforme une fonction de A -> B en une fonction « Truc A -> Truc B » est le fmap du foncteur truc ( https://hackage.haskell.org/package/base-4.10.1.0/docs/Control-Monad.html#v:fmap )
Corrigez moi si je me trompe mais en l’occurrence « map » est le « fmap » du std::option de rust : il permet d’appliquer une fonction A -> B qui n’a pas à se soucier de si son A peut être null ou que sais-je en une fonction « option A -> option B » (« Truc A -> Truc B » avec Truc = option) qui va gérer d’elle même les cas « null » dans d’autres langage.
Et effectivement, on peux trouver son code ici : https://doc.rust-lang.org/src/core/option.rs.html#402-407
f est une fonction qui renvoie un U et map(f) renvoie un option.
L’idée du « Maybe » en haskell c’est que tu écris tes fonctions sans te soucier des cas d’erreurs ou des éventuels « null » quand rien ne peut arriver, comme si tu écrivais du code avec exceptions presque (ou des fonctions qui prennent un A et retournent un « peut être B » ( voir https://en.wikibooks.org/wiki/Haskell/Understanding_monads#Motivation:_Maybe ). Et le langage t’aides à les composer comme il faut avec des opérateurs et du sucre syntaxique éventuellement. C’est un cas particulier de « monade ». Dans un monade des opérations sont abstraites de la même manière que « fmap » est abstraite dans le début de mon commentaire.
[^] # Re: Types
Posté par thoasm . En réponse au journal Portage de TapTempo en Wren. Évalué à 3.
Dans les langages à typage dynamique tu veux dire ? Le type n’est pas déduit (dans le sens de l’inférence de types en tout cas), il est donné par le type de la valeur affectée lors de l’utilisation de la variable par l’interpréteur.
Après la construction d’un objet « TapTempo », _sampleSize à la valeur qui correspond au littéral « 5 », qui est probablement un entier. Mais si c’est dynamique on peut affecter une valeur de n’importe quelle autre type plus loin dans le programme, et la seule manière de savoir ce qu’il y a dedans qui marchera à tout les coups c’est de tester ça à l’exécution.
# Deviner l’intérêt du langage
Posté par thoasm . En réponse au journal Portage de TapTempo en Wren. Évalué à 6.
Ou essayer. Parce qu’à la lecture de ce simple helloworld, pas simple de deviner une quelconque spécificité par rapport aux autres.
C’est assez lisible, comparable à du lua dans la même niche. Au delà de ça, difficile de dire quoi que ce soit :) Il y a un intérêt au delà du fait que ça semble être populaire ?
[^] # Re: What else ?
Posté par thoasm . En réponse au journal Portage de TapTempo en Python (2.7). Évalué à 3.
C'est facile, tu prends la version C++ et les bonnes options de g++.
[^] # Re: Gestion du cache
Posté par thoasm . En réponse à la dépêche Firefox 58. Évalué à 4.
C’est différent de modifier le cache avec un fichier js non compilé ?
# Contraire à la ligne du parti ?
Posté par thoasm . En réponse à l’entrée du suivi Une catégorie bookmark. Évalué à 2 (+0/-0).
Le besoin de partager des liens, il est présent dans toute communauté. Si les gens le font pas ici, il le feront ailleurs, genre sur des plateformes proprios comme twitter qui sont parfaites pour ça.
Le truc c’est que sur ces plateformes, on est pas forcément dans la même logique qu’ici : soit on est abonnés à des proches, soit on est abonné à des « célébrités » (des personnes en vue ou influente). Ici on reçoit les liens de personnes qu’on aurait pas forcément remarqué dans une logique plus thématique que personnelle, c’est une autre perspective qui favorise la diversité.
Enfin la possibilité de création de contenu peut naître de l’éventuelle discussion qui suit, ce qui sur un site thématique comme linuxfr ou les commentaires sont généralement relativement pertinents, n’est pas inintéressant. Ce serait rajouter une section similaire à « HackerNews » https://news.ycombinator.com/ sur Linuxfr.
J’ai déjà par exemple trouvé des liens pas inintéressants sur la tribune de rédaction que personne n’avait eu le temps de développer en journal, et c’est dommage parce qu’ils sont peu visibles.
# Dans le même registre jsawk
Posté par thoasm . En réponse au journal JSON en ligne de commande : jq/pjy. Évalué à 5.
J’en ai utilisé un autre dans le genre dans le passé : https://github.com/micha/jsawk . Comme awk balance du texte en sortie, ça peut balancer du json en sortie. On peut extraire des données pour les sortir formatées en texte comme on veut, et le langage n’est pas du awk mais du js à la place.
# Chez Wikimedia …
Posté par thoasm . En réponse au journal On ne contribue pas que du code. Évalué à 7.
Sommaire
Ça pourrait être un peu long parce qu’il y a pléthore d’outils, alors je vais me contenter d’un inventaire à la Prévert. On sent que c’est un projet fondamentalement international pour lequel les langues sont importantes, même si comme ailleurs bien des discussions se font en anglais. Voici un aperçu des outils que j’ai eu l’occasion d’utiliser :
Tanslatewiki.net
(que je découvre pour l’occasion n’est même pas géré par Wikimedia). Un wiki qui expose les chaîne de traduction de divers projets, dont Wikimedia et ses extensions. On peut proposer son propre projet en en parlant aux responsables de wiki. Gère d’autres projets d’envergure comme les logiciels OSM, apparemment.
Pour le traducteur, il se voit proposer une interface avec une pseudo page wiki à traduire pour chaque message, éventuellement avec une doc pour aider les suivants et contextualiser un peu (si vous avez tenté de traduire un logiciel, vous savez sûrement qu’un message isolé sans avoir connaissance de l’interface autour, on sait pas toujours bien ce qu’il est supposé vouloir dire). Relativement simple. L’interface utilise une extension Mediawiki dont on parle plus bas. L’aspect social est géré par les messages entre utlisateurs sur le wikis et les différents systèmes de notification, et de suivi des modifications habituels sur les wikis.
Pour le développeur, ça à l’air de fonctionner grâce aux fichiers .po et à la bonne volonté des responsables du wiki, donc peut possible de gérer plus ou moins d’autres formats en s’arrangeant avec eux : https://translatewiki.net/wiki/Translating:Localisation_for_developers
Extension « Translate »
L’extension Translate est une extension Mediawiki qui permet de gérer des wikis multilingues. En pratique une page wiki dans une langue peut être préparée pour être traduite grâce à des balises dans le code déterminant les parties à traduire. L’interface expose alors à un traducteur dans une langue la liste des parties d’article à traduire. Elle génère ensuite une version traduite de la page par langue.
Elle gère une éventuelle documentation des message à traduire et l’identification des message dans la page pour suivi grâce à des annotations automatiques du code wiki. C’est important parce que les pages wiki sont évolutives et éditées en permanence, tout peut être déplacé à l’envie. Elle possède des fonctionnalité de relecture et d’aide à la traduction : suggestions de traductions existantes de messages proches dans la base existante de traduction, et suggestion de traduction par des services de traduction automatique.
Elle gère aussi des listes de traductions de messages non associées à des pages wikis traditionnelles. Peut être des pages de fichiers « po » annotés dans le cas de « translatewiki.net », mais c’est pure spéculation de ma part.
Dans le cadre de l’utilisation aux quotidien sur un wiki, il faut compter sur la bonne volonté des éditeurs d’une page wiki qui peuvent ne pas apprécier des annotations du code induites, qui sont perçues comme compliquant l’édition. (note perso et certains vouent un tel culte de la « simplicité » du code que ça en confine au simplisme.)
Extension « Content Translation »
Outil pour le transfert d’article d’un projet linguistique à un autre, par exemple traduire un article de wp en français en arabe ou en anglais.
Fonctionne en divisant la page en titre / section / paragraphe qu’on peut sélectionner (ou pas) pour la traduction. Propose pas mal d’aides comme la traduction des liens de site, il s’agit de trouver automatiquement l’article équivalent (ou la catégorie) équivalente dans le wiki cible, l’expansion des modèles (les modèles du wiki source sont pas forcément dispo sur le wiki cible, ou sont incompatibles). Propose pour certaines paires de langues des traductions automatiques. Fonctionne avec une version « visuelle » des parties à traduire et du formatage wysiwig.
C’est assez sympathique et utile, mais ça souffre de pas mal de bugs qui font que la sortie de l’outil doive de mon expérience forcément être revue après traduction (perte des formules mathématiques, difficulté de gérer le formatage avec l’interface au moment de la traduction.) Défauts de jeunesses mais qui perdurent, les équipent qui développent ayant d’autres projets et priorités. J’ai subis des gros bugs comme l’impossibilité de recharger une traduction en cours (qui traînait un peu) après quelque semaine quand l’article original est modifié, tout perdu. La traduction est toujours en cours mais du coup j’ai suivi une stratégie différente, exporter un semblant de traduction depuis l’outil de traduction dans une page wiki très tôt dans le processus traduction vers une page normale de mon espace utilisateur, que je modifie comme n’importe quelle page.
Tooltranslate: les outils web de l’univers Wikipedia
Des serveurs hébergent des interfaces web qui fournissent des service divers et variés pour visualiser / modifier / faire des requêtes sur les outils Wikimedia, par exemple https://tools.wmflabs.org/reasonator/ opur visauliser Wikidata ou https://petscan.wmflabs.org/ pour récupérer des tas d’articles et leur élément Wikidata en fonction de tout un tas de critères et des éditions en masse.
Ces outils disposent de tooltranslate, qui vise manifestement l’efficacité et l’ouverture. On clique sur « traduire », on choisit sa langue et on traduit. Il semble possible d’ajouter ses propres outils à l’envie sans demander à personne. Il suffit d’avoir un compte Mediawiki pour traduire, l’identification est gérée par Wikimedia.
Ressources linguistiques inter-langues libres :
Il y a bien évidemment le wiktionnaire, qui donne des définitions de pleins de termes dans plein de langue, avec le projet en cours de wiktionnaire structuré, c’est à dire d’utiliser des structures de données informatiques pour stocker les synonymes, antonymes … des termes dans les différentes langues, les relier à l’élément Wikidata correspondant à leurs différentes définitions. Il y a des projets de https://en.wiktionary.org/wiki/Wiktionary:Thesaurus . Wikidata fournit un point de vue inverse : pour un concept donné, on peut retrouver un « intitulé » (terme) (et les pages wikipédia le décrivant) le désignant dans toutes les langues. C’est ce qui permet à l’outil de traduction d’article de transposer les liens, même si c’est pas abouti.
En conclusion :
J’ai un peu débordé du cadre, mais le potentiel de Wikimedia en terme d’ingénierie du langage est tel que c’est bien tentant. On pourrait rire au nez et douter du succès de n’importe quel autre projet avec ce genre d’ambition, mais dans le cas de Wikimedia ça semble juste naturel. La fondation a une équipe de développement dédiée
# Utiliser les notifications
Posté par thoasm . En réponse au journal Histoire de budget. Évalué à 6.
Au lieux de stocker les mots de passes en clair, tu peux peut être t’envoyer régulièrement des notifications pour te rappeler de lancer un script, associé à zenity pour te demander les mots de passe. Un truc genre « appindicator » (comment on fait ça on python : http://candidtim.github.io/appindicator/2014/09/13/ubuntu-appindicator-step-by-step.html » ) que tu lances à chaque démarrage de ton desktop, ou par anacron, qui fonctionnerait un peu comme les notifications de nouvelles mises à jour système.
[^] # Re: Math
Posté par thoasm . En réponse au journal La recherche en langages de programmation au quotidien. Évalué à 4.
Sauf qu’aujourd’hui certaines preuves utilisent des ordis pour faire des bouts de démonstration. Ça complique les choses d’une part parce que si tu veux enlever l’algo de l’équation ça produit des preuves dont la taille est sans commune mesure avec les preuves d’avant. Donc un truc probablement fastidieux et long à vérifier à la main, on a ptete mieux à faire du temps et des nerfs de nos meilleurs matheux. Ou alors ça nécessite de se convaincre que le programme utilisé est effectivement capable de produire une démonstration de ce qu’il est supposé montrer. Donc qu’il est sans bug. Les matheux tradis détestent ces démonstrations d’ailleurs, parce que les ordis servent souvent à faire une exploration systématique d’un certain nombre de cas qui peuvent exploser combinatoirement, et qu’ils préfèreraient un argument qui règle tout de manière plus synthétique avec une belle théorie. Et que ça rend difficile de se convaincre de la correction de la preuve. Mais rien ne dit que ça existe dans l’absolu et que toutes les preuves sont « courtes ». Au contraire est certains qu’il y a des objets comme des indécidables ou des propositions à démonstrations très très longue dans un système logique donné. cf. https://fr.wikipedia.org/wiki/Longueur_d%27une_d%C3%A9monstration
Par exemple pour P=?NP ou des « preuves » sont produites régulièrement par tout un chacun et envoyés à des experts, il y a de bonne chances pour que personne ne lise jamais la proposition, trop long et peu probable que ce soit correct de la part d’un non expert du domaine. Si ça se trouve elle a été trouvée mais personne n’a ouvert le mail et elle a zéro chances d’être publiée :) Si le type fournit une preuve prouvée (inception) il a peut être plus de chances d’être pris au sérieux.