Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3730 connectés 

 


Sujet auquel vous répondez
Sujet : [blabla@olympe] Le topic du modo, dieu de la fibre et du monde
skeye

vapeur_cochonne a écrit :

[:prozac] putain mais pourquoi j'ai mis en route la pyrolyse avant de me poser devant la TV


parce-qu'une fois devant la tv t'aurais eu la flemme de re-bouger ton cul jusqu'au four?:o


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
0x90 La spec des dates de XML 1.0 [:pingouino]

 

"""
Those using this (1.0) version of this Recommendation to represent negative years should be aware that the interpretation of lexical representations beginning with a '-' is likely to change in subsequent versions.

 

[ISO 8601] makes no mention of the year 0; in [ISO 8601:1998 Draft Revision] the form '0000' was disallowed and this recommendation disallows it as well. However, [ISO 8601:2000 Second Edition], which became available just as we were completing version 1.0, allows the form '0000', representing the year 1 BCE. A number of external commentators have also suggested that '0000' be allowed, as the lexical representation for 1 BCE, which is the normal usage in astronomical contexts. It is the intention of the XML Schema Working Group to allow '0000' as a lexical representation in the dateTime, date, gYear, and gYearMonth datatypes in a subsequent version of this Recommendation. '0000' will be the lexical representation of 1 BCE (which is a leap year), '-0001' will become the lexical representation of 2 BCE (not 1 BCE as in this (1.0) version), '-0002' of 3 BCE, etc.
"""

boulax

Loom the Gloom a écrit :

prems [:banguy]
 
BelgiqueG [:sadnoir]
Me suis fait fracturé la bagnole :pfff:, adieu GPS, costumes, valise...


déplacement pro?

masklinn

Citation :

I can metastasize now mommy, aren't you proud of me? Today was the day you found out about me. You were talking to the doctor and crying. Why did that mean doctor make you cry? I'm spreading to your pancreas and liver and lungs, so I can hug you from the inside. Why don't you love me mommy?

uriel Loom> rassures toi, ils peuvent pas utiliser ta mastercard :O
uriel preums@nespresso
Harkonnen

Loom the Gloom a écrit :

prems [:banguy]
 
BelgiqueG [:sadnoir]
Me suis fait fracturé la bagnole :pfff:, adieu GPS, costumes, valise...


te plains pas, au moins tu t'es fait fracturer ta caisse pour quelque chose :o
y'a quelques années, je suis allé à Cordoue en Espagne... je me suis fait fracturer la caisse pour une paire de lunettes de soleil laissées sur le tableau de bord [:kiki]
en règle générale, en Espagne, vaut mieux éviter de laisser trainer même 1 euro sur le tableau de bord

skeye preums@voiture au garage.[:dawao]
kadreg tu as eut des roumains qui font de l'accordéon avec une vieille radio cassette [:dawak]
vapeur_cochonne prem's a paris  
le rer c'est la fete ...
masklinn

Loom the Gloom a écrit :

prems [:banguy]

 

BelgiqueG [:sadnoir]
Me suis fait fracturé la bagnole :pfff:, adieu GPS, costumes, valise...


Charleroi? [:sadnoir]

 

Ou alors t'étais en flandres avec des plaques françaises? [:sadnoir]

Loom the Gloom prems [:banguy]
 
BelgiqueG [:sadnoir]
Me suis fait fracturé la bagnole :pfff:, adieu GPS, costumes, valise...
vapeur_cochonne [:kikiv]
Dion :sarcastic:
vapeur_cochonne dern'z
J'ai la haine, parce que... Je me suis planté dans la sauvegarde de mes sources et j'ai du copier coller deux fois tout le code avant que ça marche.  :fou:  
6500 lignes....
Mackila omg, la chef de ma copine a appelé son fils CharliG [:sadnoir]
masklinn oh-my-zsh a pas de plugin pour mercurial et bazaar ಠ_ಠ
 
Alors qu'il y a des branches pour dans les pull requests ಠ_ಠ
 
Font chier ces giteux ಠ_ಠ
flo850

vapeur_cochonne a écrit :

:D
tes beau parents ça va ?


 
comme d'hab quoi :d

masklinn

ratibus a écrit :

Je l'utilise depuis plusieurs mois avec satisfaction dans phpstorm, en Dark  :jap:


Dark il marche pas bien chez moi, dans les fichiers Python j'ai le mot clé class qui apparait en bleu foncé, sur le fond bleu marine c'est illisible (dans le port Emacs les mot clés sont en jaune sombre et les noms de classes en orange, c'est parfait)

 

Et toute l'UI de PyCharm (genre project/class browser) est très claire, ça fait moche avec Dark.

ratibus

masklinn a écrit :

J'ai enfin installé Solarized dans Emacs (Dark), Terminal (Dark) et PyCharm (Light), c'est tro bô [:ripthejacker:4]


 
Je l'utilise depuis plusieurs mois avec satisfaction dans phpstorm, en Dark  :jap:

vapeur_cochonne :D
tes beau parents ça va ?
flo850

vapeur_cochonne a écrit :

bah non  
j'ai une femme, elle a tout remplie
je vais la ptet virer la chambre d'amis pour en faire un  
mais bon, je suis pas vraiment cinéfile
enfin j'ai pas non plus d'amis



FTFY

J'avais oublié d'initializer les couleurs !  :o  
 
 
 [:joglle]  [:boulet_girl]  [:_astrid]  [:mich_mich]  [:painkiller]  [:gijar]  [:smogl]  [:kukron]  [:black_lord]
Lutain, j'ai perdu de la couleur.
vapeur_cochonne bah non  
j'ai une femme, elle a tout remplie  
je vais ptet virer la chambre d'amis pour en faire un  
mais bon, je suis pas vraiment cinéfile
enfin j'ai pas non plus d'amis  
skeye

vapeur_cochonne a écrit :


:non: j'ai plus qu'une tv et elle est dans la cuisine :'(
 
faut que j'en rachete une pour le salon, tant pis pour la beaufitude


T'as même pas une pièce spéciale home cinema dans ton château de160m²?:o

vapeur_cochonne

skeye a écrit :


parce-qu'une fois devant la tv t'aurais eu la flemme de re-bouger ton cul jusqu'au four?:o


:non: j'ai plus qu'une tv et elle est dans la cuisine :'(
 
faut que j'en rachete une pour le salon, tant pis pour la beaufitude

vapeur_cochonne [:icon3] on peux l'arreter [:joce]
skeye

vapeur_cochonne a écrit :

[:prozac] putain mais pourquoi j'ai mis en route la pyrolyse avant de me poser devant la TV


parce-qu'une fois devant la tv t'aurais eu la flemme de re-bouger ton cul jusqu'au four?:o

vapeur_cochonne [:prozac] putain mais pourquoi j'ai mis en route la pyrolyse avant de me poser devant la TV
Lam's

el muchacho a écrit :

vos concours de bites permanents.


Represents! \o/

 

Bon j'aurais bien participé un peu, mais je suis trop occupé à donner du bonheur à ma famille.

masklinn J'ai enfin installé Solarized dans Emacs (Dark), Terminal (Dark) et PyCharm (Light), c'est tro bô [:ripthejacker:4]
el muchacho

mareek a écrit :


confondre garbage collector et ref count [:prozac]


 :heink: Euh non, il n'y a aucune confusion de ma part. Ne pas vouloir les séparer n'a aucune incidence dans cette discussion. Je sais qu'à mon âge très avancé, je suis un peu rouillé sur certaines notions, mais faudrait p-ê pas en conclure trop vite que je suis déjà bon à mettre à la benne, hein. :sarcastic:
Va pas te plaindre qu'on te prend pour un con quand tu fais la même chose avec les autres. Vous êtes sérieusement saoûlants, avec vos concours de bites permanents.

Jubijub http://internetactu.blog.lemonde.f [...] ens-forts/
 
Article intéressant...
Ce soir j'aurai ré- écrit ~4000 lignes...  [:chadouw]  
 
J'aurai le reste de la semaine pour débugger....  :sweat:
masklinn

mareek a écrit :

merci du "compliment"  :sarcastic:


mareek a écrit :

cf quote ci dessus :o


 [:urd]

 

Ah ok :o C'était pour dire que tu es un dev "normal", genre t'es pas 0x90 qui connaît probablement déjà le sujet et a juste besoin de matcher ce qu'on raconte avec ses banques mémoire internes :o

 

Mais je vois pas trop comment le dire autrement, donc bon...

mareek

masklinn a écrit :


Dans ce cas tu demandes des explications plus claires en disant que t'as pas compris, au lieu de te replier sur ton comportement d'idiot du village.
 
(mais si mareek a pu comprendre, je pense que le problème est plus proche de ton côté des intertubes que tu mien, sans vouloir être méchant)


merci du "compliment"  :sarcastic:  

masklinn a écrit :

[:bromure de cheval:5]


cf quote ci dessus :o

Xavier_OM a écrit :

Bref si tu construits proprement ton truc, tu ne risques pas trop de te demander "est-ce que je dois faire delete ou est-ce que c'est quelqu'un d'autre qui s'en charge ?". Au final tu écris très peu de delete d'ailleurs  [:spamafote] Ton vrai problème commence quand tu tombes sur du C++ pensé comme du C (et c'est pas si rare) blindé de new/delete "kivonbien" je trouve :o


Mais si tu fais tout proprement il n'y a jamais de problème dans aucun langage :spamafote:
Ce que masklinn trouve d'intéressant dans Rust c'est que le comportement propre est le seul disponible (si j'ai bien compris)

el muchacho a écrit :

Voila, tu utilises bien un compteur de référence (j'ai écrit "garbage collector", mais j'incluais implicitement le comptage de référence --> j'aurais dû écrire gestion de mémoire auto). Le shared_ptr fait ça de façon transparente "attention, cet objet va être reference counted, prière de ne pas faire de delete dessus" ).


confondre garbage collector et ref count [:prozac]

el muchacho

masklinn a écrit :


Ya pas de question à se poser, c'est l'owner qui détruit l'objet, un pointeur unique n'a qu'un owner et est le seul pointeur sur l'objet correspondant. Quand tu transfère l'ownership tu transfère la responsabilité de destruction, et le langage vérifie statiquement (via typestates) que seul l'owner a accès au pointeur.


Ok.

masklinn

el muchacho a écrit :


Je ne vois pas ce que tes pointeurs uniques ont de différent des auto_ptr de C++ (respectivement unique_ptr de C++11). Et les auto_ptr, ça ne fait pas l'économie de la réflexion sur le cycle de vie dont je parle, puisqu'en transférant l'ownership, tu es obligé de te poser la question de qui va détruire l'objet. Qu'est-ce que j'ai raté dans ton raisonnement ?


Ya pas de question à se poser, c'est l'owner qui détruit l'objet, un pointeur unique n'a qu'un owner et est le seul pointeur sur l'objet correspondant. Quand tu transfère l'ownership tu transfère la responsabilité de destruction, et le langage vérifie statiquement (via typestates) que seul l'owner a accès au pointeur.

 

Et de cette manière, tu peux intégrer la destruction au langage même: si l'owner d'un pointeur ne transfère pas l'ownership (en retournant le pointeur ou en le passant en argument à un autre), tu peux détruire l'objet puisqu'il n'y a plus personne pouvant y accéder.

 

C'est comme si tu faisais de la stack allocation et que tu pouvais déplacer un objet stack-allocated d'une stack à une autre.

Xavier_OM a écrit :

À noter une petite variante très C++ : unique_ptr. C'est un peu comme un shared_ptr mais quand tu sais qu'un et un seul truc sera responsable de ton objet. Si node est le seul à posséder ses enfants, et qu'il ne partage ça avec personne, tu peux utiliser unique_ptr et c'est un peu mieux niveau perf qu'un shared_ptr partagé par une seule instance.

Code :
  1. class Node {
  2. private:
  3.     vector< unique_ptr<Node> > children;
  4. }


Mais globalement c'est pas très différent.


C'est la même idée, mais via typestates et intégré au langage pour que t'aies pas besoin de faire des std::move (et ptet aussi le delete implicite, je sais pas comment ça se passe précisément avec unique_ptr quand tu le ballades d'une fonction à une autre)

el muchacho Voila, tu utilises bien un compteur de référence (j'ai écrit "garbage collector", mais j'incluais implicitement le comptage de référence --> j'aurais dû écrire gestion de mémoire auto). Le shared_ptr fait ça de façon transparente "attention, cet objet va être reference counted, prière de ne pas faire de delete dessus" ).

 

Ce que je comprends des explications de masklinn, c'est que Rust ne fait implémente certains smart pointers de C++ à l'aide d'un concept plus générique, qu'ils appellent typestates, qui facilite la programmation intentionnelle (je viens de tomber la-dessus). Et qui lui est un concept intéressant.

Xavier_OM

masklinn a écrit :


Mais prominent, facile à utiliser, central au langage et qui ressemble à quelque chose.


 :sarcastic:  
 

el muchacho a écrit :

Facile à utiliser, c'est vite dit. Le problème avec les pointeurs qui se baladent, c'est le cycle de vie des objets sous-jacents. Tant qu'on reste dans un scope et qu'on fait du RAII, c'est facile, l'objet est créé au début du scope, et détruit en sortie. Dès qu'il sort du scope, il faut réfléchir à quand, comment et par qui il va être détruit. Quelques fois, c'est pas évident, parce qu'il faut en principe faire l'exhaustivité des cas possibles. Si on en oublie un, on a soit un pointeur nul, soit un memleak. A part à l'aide d'un garbage collector, qui sert justement à ça, je ne vois pas trop comment le langage permet de s'économiser cette réflexion.


 
En C++ tu as quelques trucs pour gérer correctement ta mémoire sans garbage collection :
 
 
La durée de vie de gadget est celle de ton instance widget :

Code :
  1. class Widget {
  2. private:
  3.     Gadget g;
  4. };


 
 
 
 
La durée de vie de gadget est celle de ton instance de widget, mais tu partages ton gadget entre différents objets. Tu peux utiliser un shared pointer pour avoir un comptage de référence automatique : la libération se fera automatiquement quand le compteur sera à 0, quand mourra le dernier objet qui possédait une référence vers ce gadget :

Code :
  1. class Widget
  2. private:
  3.     shared_ptr<Gadget> g;
  4. }


 
Presque comme shared_ptr, tu partages une référence entre plusieurs classes, sauf que les weak_ptr ne comptent pas dans le comptage de référence automatique mais peuvent tester si la libération a déjà été faite. Pas mal pour éviter les cycles si tu veux vraiment qu'un objet A possède B et que B possède A.

Code :
  1. class Gadget {
  2. private:
  3.     weak_ptr<Widget> parent;
  4. }


Exemple :

Code :
  1. shared_ptr<Widget> w = parent.lock(); // toujours là ?
  2. if (w) {
  3. // on ne passe jamais ici si parent a été nettoyé, cad quand plus personne ne détient un shared_ptr vers parent.
  4. }


Tout ça type_safe et sans avoir à faire des trucs à la main du genre foutre soi-même NULL dans un Widget* ou stocker des flags 'disposable' pour savoir si oui ou non l'instance existe toujours.
 
 
À noter une petite variante très C++ : unique_ptr. C'est un peu comme un shared_ptr mais quand tu sais qu'un et un seul truc sera responsable de ton objet. Si node est le seul à posséder ses enfants, et qu'il ne partage ça avec personne, tu peux utiliser unique_ptr et c'est un peu mieux niveau perf qu'un shared_ptr partagé par une seule instance.

Code :
  1. class Node {
  2. private:
  3.     vector< unique_ptr<Node> > children;
  4. }


Mais globalement c'est pas très différent.
 
 
 
Bref si tu construits proprement ton truc, tu ne risques pas trop de te demander "est-ce que je dois faire delete ou est-ce que c'est quelqu'un d'autre qui s'en charge ?". Au final tu écris très peu de delete d'ailleurs  [:spamafote] Ton vrai problème commence quand tu tombes sur du C++ pensé comme du C (et c'est pas si rare) blindé de new/delete "kivonbien" je trouve :o


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)