Posté par BFG .
En réponse à la dépêche Le langage D.
Évalué à 2.
Si ses méthodes d'argumentation font controverse, le fond de ses remarques est souvent juste et il sait reconnaître quand il a tort.
En l'occurrence, ici, il y a un problème de gestion d'encodage, et ce problème n'est pas dans la console utilisée. Également, l'intérêt d'un programme d'exemple est de montrer les bonnes pratiques, par exemple en vérifiant les entrées pour que le programme ne plante pas.
Posté par BFG .
En réponse à la dépêche Le langage D.
Évalué à 6.
Mais si on utilise pas const_cast, je vois pas en quoi le const de C++ est moins thread-safe que le immutable de D.
Parce qu'une référence const peut être obtenu à partir d'une référence non-const en C++. La référence non-const peut être modifiée, modifiant ainsi la référence const depuis un autre endroit. En revanche, une référence immutable ne peut pas être obtenue depuis une référence non-immutable.
intx=0;constint&y=x;x=42;// y est modifié (à replacer dans un contexte multi-thread)
Posté par BFG .
En réponse à la dépêche Le langage D.
Évalué à 4.
il a du mal si je m'amuse avec des caractères qui ne sont pas sur la locale de l'OS utilisé (la locale change suivant la région) alors que j'ai des caractère d'un autre endroit (fichier, réseau etc, la j'en chie bien car du coup je n'ai pas la même locale en input et output, et je dois configurer la local de sortie du coup).
Je ne comprends pas : si tout le programme est structuré autour des caractères et non des octets (c'est à dire en utilisant wchar_t/std::wstring si l'on utilise que les types C/C++ de base), et que l'on utilise uniquement les fonctions appropriées qui gèrent Unicode (les fonctions *W), alors il n'y a aucun problème sur Windows.
Je recommande la lecture d'UTF-8 Everywhere, même s'il n'explique pas les détails pour Windows.
Posté par BFG .
En réponse à la dépêche Le langage D.
Évalué à 3.
Dernière modification le 09 juin 2012 à 20:10.
En fait, il semblerait que ce soit le writefln qui pose problème, car "J├®r├┤me" est l'interprétation CP-850 des octets correspondants à "Jérôme" encodé en UTF-8. argv est bien interprété et contient les octets UTF-8 de "Jérôme", et writefln écrit ces octets sans tenir compte de l'encodage de la console.
Pourquoi CP-850 alors que la console supporte bien Unicode ? Probablement parce que la variante ANSI de la fonction a été utilisée, et non la variante Unicode. Le problème vient donc de writefln.
Posté par BFG .
En réponse à la dépêche Le langage D.
Évalué à 3.
char => caractère unicode 8
"unicode 8" ? Qu'est ce que c'est ? UTF-8 ? Sur Windows, argv n'est pas en UTF-8, et si D ne convertit pas lui-même les arguments avant d'entrer dans main, alors c'est bien un bug de D.
Posté par BFG .
En réponse à la dépêche Le langage D.
Évalué à 6.
D n'a pas l'air de connaitre autre chose que du ASCII 7-bit. On est en 2012!
J'ai bien l'impression que D a fait la même erreur que C++ : le type string n'est qu'un char[] amélioré, c'est à dire qu'il stocke des octets, pas des caractères, string ne gère donc pas Unicode et laisse le développeur gérer l'encodage lui-même. Comme vous dites, faire encore cette erreur en 2012 est idiot.
Il semblerait que Windows 8 "Server" utilisera ReFS, qui possède une liste de fonctionnalités impressionnantes :
Some NTFS features are not supported in ReFS, including named streams, object IDs, short names, file compression, file level encryption (EFS), user data transactions, sparse files, hard links, extended attributes, and disk quotas. ReFS does not itself offer data deduplication. […]. However, in Windows Server 2012, automated error-correction is only supported on mirrored spaces, and booting from ReFS is not supported either.
Alors oui effectivement, l'avion peut revenir rapidement bien plus cher (par exemple j'ai pris un billet de retour à 99€, à d'autres horaires ça aurait été 230, alors que le train n'aurait lui augmenté que de 20-30€).
Comme vous le dites, pour vos horaires, l'avion est sans doute plus avantageux. L'avion est souvent bien plus cher si l'on prend les horaires les plus au début ou les plus à la fin du weekend.
Plutôt que de tenter à tout prix de faire ce qu'on a en tête, il vaut mieux considérer d'abord si c'est une bonne chose. Si par exemple il faut faire des contorsions dans le code, des bidouilles difficiles à lire, des choses qu'on aurait du mal à expliquer, alors c'est un bon indice que c'est probablement une mauvaise idée.
Pour ce qui est des fermetures, elles existent en Python, il s'agit de lambda. Il souhaite également pouvoir les modifier après, il souhaite une syntaxe pour les faire sans objets, etc.
Ça va l'amuser pendant quelques minutes de chercher une solution à ce problème, et il va s'extasier devant le fait qu'on peut cumuler décorateurs, modifier les paramètres. Mais ça sera mauvais sur le long terme, on aura rajouté des couches pour faire quelque chose que le langage permettait déjà de faire (les classes), parce qu'on aura estimé qu'on était plus intelligent que le langage, ce qui est faux dans la totalité des cas.
Ce code est difficile à maintenir. Et il est lourd à utiliser : il faut utiliser des décorateurs, utiliser des types personnalisés comme Int. On n'est même plus dans la complexité, on est dans la complication.
Tant de code difficile à comprendre et maintenir pour réinventer la roue que sont les classes et les membres… Je ne parle même pas de l'utilisation de noms communs comme "Int" qui font un conflit mental avec le type de base "int".
Ça me semble la solution la plus simple, et qui évite de se reposer sur des bidouilles non maitrisées. Et extensible, vu que les fonctionnalités demandées ont l'air d'évoluer.
Cette époque est vraiment étrange. Pour recevoir un colis correctement, il faut s'inscrire à un service web à la mode et étranger, et communiquer ses problèmes et ses informations privées en public.
Posté par BFG .
En réponse au journal OpenDiscussionDay ce samedi.
Évalué à 10.
Dernière modification le 16 mai 2012 à 20:50.
Concrêtement, les participants sont encouragés, pendant une journée, à ne pas envoyer de documents dans un format fermé, de ne pas utiliser MSN/ICQ, Facebook, G+ ou Twitter.
En se rendant sur le site d'OpenDiscussionDay, que voit-on ? Des liens vers Facebook. Ils le reconnaissent et disent :
(1) (2) We do not like the Facebook policy but this page and this event are here for communicate with “fans” of this day.
qui s'interprète en
On dit qu'on n'aime pas la politique de Facebook mais on ne reculera devant rien pour être ridicules et pour ça on reniera même nos principes s'il le faut.
Le jour sans format fermé, pour mieux avoir les 364 jours restants avec formats fermés.
Ça ne répond pas à la question, vous en aviez fait une option, proposant ainsi les deux modes possibles. Pourquoi n'avez vous gardé qu'un seul des deux ? (et qui se trouve de plus être le mode qui ne correspond pas à la référence que vous citez)
Ce n'est pas exactement le principe de la grille de mot de passe décrite à l'origine. Le principe est que l'on peut jeter la grille pour oublier volontairement le mot de passe. Là, il vous faudra jeter un livre, ce qui serait dommage.
[^] # Re: Je cherche à comprendre
Posté par BFG . En réponse à la dépêche Le langage D. Évalué à 2.
Si ses méthodes d'argumentation font controverse, le fond de ses remarques est souvent juste et il sait reconnaître quand il a tort.
En l'occurrence, ici, il y a un problème de gestion d'encodage, et ce problème n'est pas dans la console utilisée. Également, l'intérêt d'un programme d'exemple est de montrer les bonnes pratiques, par exemple en vérifiant les entrées pour que le programme ne plante pas.
[^] # Re: cross compilation
Posté par BFG . En réponse à la dépêche Le langage D. Évalué à 5.
Il parle de compiler sous Linux un .exe qui sera utilisable sous Windows, sans avoir besoin de compiler depuis Windows.
[^] # Re: Le langage D est-il choisi lorsqu'on ne sait pas avec quoi coder ?
Posté par BFG . En réponse à la dépêche Le langage D. Évalué à 6.
Parce qu'une référence
const
peut être obtenu à partir d'une référence non-const
en C++. La référence non-const
peut être modifiée, modifiant ainsi la référenceconst
depuis un autre endroit. En revanche, une référenceimmutable
ne peut pas être obtenue depuis une référence non-immutable
.[^] # Re: Je cherche à comprendre
Posté par BFG . En réponse à la dépêche Le langage D. Évalué à 4.
Je ne comprends pas : si tout le programme est structuré autour des caractères et non des octets (c'est à dire en utilisant
wchar_t/std::wstring
si l'on utilise que les types C/C++ de base), et que l'on utilise uniquement les fonctions appropriées qui gèrent Unicode (les fonctions *W), alors il n'y a aucun problème sur Windows.Je recommande la lecture d'UTF-8 Everywhere, même s'il n'explique pas les détails pour Windows.
[^] # Re: Je cherche à comprendre
Posté par BFG . En réponse à la dépêche Le langage D. Évalué à 3. Dernière modification le 09 juin 2012 à 20:10.
En fait, il semblerait que ce soit le
writefln
qui pose problème, car "J├®r├┤me" est l'interprétation CP-850 des octets correspondants à "Jérôme" encodé en UTF-8.argv
est bien interprété et contient les octets UTF-8 de "Jérôme", etwritefln
écrit ces octets sans tenir compte de l'encodage de la console.Pourquoi CP-850 alors que la console supporte bien Unicode ? Probablement parce que la variante ANSI de la fonction a été utilisée, et non la variante Unicode. Le problème vient donc de
writefln
.[^] # Re: Je cherche à comprendre
Posté par BFG . En réponse à la dépêche Le langage D. Évalué à 3.
"unicode 8" ? Qu'est ce que c'est ? UTF-8 ? Sur Windows,
argv
n'est pas en UTF-8, et si D ne convertit pas lui-même les arguments avant d'entrer dansmain
, alors c'est bien un bug de D.[^] # Re: Je cherche à comprendre
Posté par BFG . En réponse à la dépêche Le langage D. Évalué à 6.
J'ai bien l'impression que D a fait la même erreur que C++ : le type
string
n'est qu'unchar[]
amélioré, c'est à dire qu'il stocke des octets, pas des caractères,string
ne gère donc pas Unicode et laisse le développeur gérer l'encodage lui-même. Comme vous dites, faire encore cette erreur en 2012 est idiot.# Gerrit
Posté par BFG . En réponse au journal De tout, de rien, des liens, du vrac (des bookmarks quoi). Évalué à 3.
À noter que le projet Qt utilise Gerrit pour le développement de Qt5, et qu'il est très simple d'y faire accepter des patches si vous en avez.
[^] # Re: Pas pour tout le monde ?
Posté par BFG . En réponse au journal [HS] Metro, huitpointzéro, placebo. Évalué à 3.
Il semblerait que Windows 8 "Server" utilisera ReFS, qui possède une liste de fonctionnalités impressionnantes :
[^] # Re: Évaluation partielle
Posté par BFG . En réponse au message Argument de fonction récurrent. Évalué à 2.
Vous auriez mieux fait de lire le premier commentaire.
[^] # Re: C'est dommage… pour l'effet de serre !
Posté par BFG . En réponse au journal Le nouveau programme de fidélité de la SNCF : Le programme Voyageur. Évalué à -2.
Comme vous le dites, pour vos horaires, l'avion est sans doute plus avantageux. L'avion est souvent bien plus cher si l'on prend les horaires les plus au début ou les plus à la fin du weekend.
[^] # Re: wrapper et decorateur
Posté par BFG . En réponse au message Argument de fonction récurrent. Évalué à 6. Dernière modification le 01 juin 2012 à 19:03.
Plutôt que de tenter à tout prix de faire ce qu'on a en tête, il vaut mieux considérer d'abord si c'est une bonne chose. Si par exemple il faut faire des contorsions dans le code, des bidouilles difficiles à lire, des choses qu'on aurait du mal à expliquer, alors c'est un bon indice que c'est probablement une mauvaise idée.
Pour ce qui est des fermetures, elles existent en Python, il s'agit de
lambda
. Il souhaite également pouvoir les modifier après, il souhaite une syntaxe pour les faire sans objets, etc.Ça va l'amuser pendant quelques minutes de chercher une solution à ce problème, et il va s'extasier devant le fait qu'on peut cumuler décorateurs, modifier les paramètres. Mais ça sera mauvais sur le long terme, on aura rajouté des couches pour faire quelque chose que le langage permettait déjà de faire (les classes), parce qu'on aura estimé qu'on était plus intelligent que le langage, ce qui est faux dans la totalité des cas.
Ce code est difficile à maintenir. Et il est lourd à utiliser : il faut utiliser des décorateurs, utiliser des types personnalisés comme
Int
. On n'est même plus dans la complexité, on est dans la complication.[^] # Re: Le global c'est bien pour du global
Posté par BFG . En réponse au message Argument de fonction récurrent. Évalué à 3.
Les singletons sont des variables globales, il n'y a aucune différence entre les deux.
[^] # Re: wrapper et decorateur
Posté par BFG . En réponse au message Argument de fonction récurrent. Évalué à 7.
Tant de code difficile à comprendre et maintenir pour réinventer la roue que sont les classes et les membres… Je ne parle même pas de l'utilisation de noms communs comme "Int" qui font un conflit mental avec le type de base "int".
[^] # Re: Functools ?
Posté par BFG . En réponse au message Argument de fonction récurrent. Évalué à 3.
Ça me semble la solution la plus simple, et qui évite de se reposer sur des bidouilles non maitrisées. Et extensible, vu que les fonctionnalités demandées ont l'air d'évoluer.
[^] # Re: écrire à la petite lisa
Posté par BFG . En réponse au journal Chez Chronopost, vos colis urgents arrivent dans 4/5 jours. Évalué à 4.
Cette époque est vraiment étrange. Pour recevoir un colis correctement, il faut s'inscrire à un service web à la mode et étranger, et communiquer ses problèmes et ses informations privées en public.
[^] # Re: undefined
Posté par BFG . En réponse au journal Javascript Garden. Évalué à 5. Dernière modification le 30 mai 2012 à 18:38.
En Python 2.7 :
Édition : le
True
par défaut est dans__builtin__.True
.[^] # Re: Contradiction
Posté par BFG . En réponse au journal OpenDiscussionDay ce samedi. Évalué à 6.
La journée des formats ouverts un jour ouvrable ?
# Contradiction
Posté par BFG . En réponse au journal OpenDiscussionDay ce samedi. Évalué à 10. Dernière modification le 16 mai 2012 à 20:50.
En se rendant sur le site d'OpenDiscussionDay, que voit-on ? Des liens vers Facebook. Ils le reconnaissent et disent :
qui s'interprète en
Le jour sans format fermé, pour mieux avoir les 364 jours restants avec formats fermés.
[^] # Re: J'en connais qu'un
Posté par BFG . En réponse au journal free et la gestion des mails. Évalué à 1.
Si le port USB est truqué et copie tout stockage qu'on y branche ?
[^] # Re: Wolfram rocks
Posté par BFG . En réponse au journal Convertisseur d'unité en ligne. Évalué à 3. Dernière modification le 08 mai 2012 à 23:59.
Ainsi que WolframAlpha.
[^] # Re: Dans ton shell
Posté par BFG . En réponse au journal Convertisseur d'unité en ligne. Évalué à 10.
C'est en effet très intéressant comme programme…
# Également
Posté par BFG . En réponse au journal Les fautes des Linuxfriens. Évalué à 3.
Voir également Dire, Ne pas dire.
Malheureusement, certain participes ne peuvent pas être testés facilement, par exemple on lit souvent l'abominable "j'ai rit".
On voit aussi "d'avantage" au lieu de "davantage".
[^] # Re: questions
Posté par BFG . En réponse au journal [ sécurité ] Comment se faire plomber sa messagerie (ou tout autre compte) par la "question secrète". Évalué à 2.
Ça ne répond pas à la question, vous en aviez fait une option, proposant ainsi les deux modes possibles. Pourquoi n'avez vous gardé qu'un seul des deux ? (et qui se trouve de plus être le mode qui ne correspond pas à la référence que vous citez)
[^] # Re: questions
Posté par BFG . En réponse au journal [ sécurité ] Comment se faire plomber sa messagerie (ou tout autre compte) par la "question secrète". Évalué à 2.
Ce n'est pas exactement le principe de la grille de mot de passe décrite à l'origine. Le principe est que l'on peut jeter la grille pour oublier volontairement le mot de passe. Là, il vous faudra jeter un livre, ce qui serait dommage.