IPB

Bienvenue invité ( Connexion | Inscription )

3 Pages V  < 1 2 3  
Reply to this topicStart new topic
> Techniques et astuces de programmation pour débutants et "confirmés", Partagez ici vos techniques et astuces pour mieux programmer
Options
hubeert
posté 17 Aug 2009, 10:53
Message #61


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 975
Inscrit : 19 May 2005
Lieu : Chateauneuf du pape
Membre no 39 495



pour le 33eme tu crées une deuxième variable voire 3 ou 4. mais déjà 31 ca fait un paquet d'indication in fine !!
je comprend pas pourquoi ça limiterai l'evolution du code?
indéterminé n'est qu'une variante de on et off tu peux accoler la possibilité a cote sur le bit voisin par exemple
alors je ne men suis servi que pour pour des jeux ou j'ai besoin de savoir ou se trouve un élément je men suis servi par exemple dans le tetris que j'ai dans ma signature a la fois pour le jeux lui même mais aussi pour créer des forme bizarres en 2 seconds je peux créer n'importe quelle forme et l'inclure dans le jeux sans reprendre tout le code comme c'est fait dans un tetris traditionnel (d'ailleurs tu trouveras pas de tetris avec des formes non traditionnelle ' enfin jen ai pas trouve lol)
je m'en suis servi aussi dans une jeu de croix et l'inteligence artificielle !! mais mon programme est trop fort il est quasiment imbattable.. lol
ais encore dans plein de truc inutile comme un jeu de cascade
cascade
il sagit de faire degringoler des casse de même couleurs qui se touchent
et sans le binaire au lieu de 60 ligne de code j'en aurais je sais pas combien avec des ralentissements incroyables..
ca peut servir aussi pour dans un jeu "remplacer" le concept de tile
enfin bref a plein de chose; il est même étonnant que le concept soit si peu utilisé meme de la part de codeurs chevronnés mais il est clair qu'ils ont pas forcément le temps de s'amuser lorsqu'ils bossent biggrin.gif


--------------------
Musique techno avec MAO (Logic Pro)

des que quelqu'un a du pouvoir il croit détenir la vérité...
Des que quelqu'un a un clavier il A la la vérité.(Forcément)
Go to the top of the page
 
+Quote Post
noop
posté 17 Aug 2009, 11:31
Message #62


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 964
Inscrit : 3 Nov 2005
Membre no 49 239



Citation (hubeert @ 17 Aug 2009, 11:53) *
je men suis servi par exemple dans le tetris que j'ai dans ma signature a la fois pour le jeux lui même mais aussi pour créer des forme bizarres en 2 seconds je peux créer n'importe quelle forme et l'inclure dans le jeux sans reprendre tout le code comme c'est fait dans un tetris traditionnel (d'ailleurs tu trouveras pas de tetris avec des formes non traditionnelle ' enfin jen ai pas trouve lol)


Effectivement, dans certains domaines (jeux, IA), les chaînes de bits servent beaucoup. Il y a même par le passé un moteur de système expert qui était implémenté sur l'utilisation de masque binaires. Dans mon cas, j'ai rarement développé des tetris pour mes clients laugh.gif Dommage car ce serais plus fun que certains cahiers de spécifications abscons mad.gif
Go to the top of the page
 
+Quote Post
Jaypee
posté 17 Aug 2009, 12:46
Message #63


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Je suis du même avis que noop, et je rajouterai "montre-moi tes tests de performances et mesure-moi le gain effectif".

Le codeur doit avoir une vision suffisamment large pour ne pas provoquer de mauvaises performances comme des requêtes qui provoquent des balayages de table sur des champs non-indexés, ou (je l'avoue, je l'ai fait) faire de la lecture sequentielle sur les logs à la recherche d'infos passées (j'ai honte !)... Donc c'est plus le comportement qu'il faut améliorer.

Tout à fait d'accord pour la maintenance. Maintenant si tu cherches à protéger ton job... c'est une autre discussion.

J-P

Ce message a été modifié par Jaypee - 17 Aug 2009, 12:46.
Go to the top of the page
 
+Quote Post
noop
posté 17 Aug 2009, 13:07
Message #64


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 964
Inscrit : 3 Nov 2005
Membre no 49 239



Citation (Jaypee @ 17 Aug 2009, 13:46) *
Tout à fait d'accord pour la maintenance. Maintenant si tu cherches à protéger ton job... c'est une autre discussion.


Très juste. On peut même renommer le topic: "Techniques et astuces de programmation pour garder son job" laugh.gif
Go to the top of the page
 
+Quote Post
hubeert
posté 17 Aug 2009, 13:33
Message #65


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 975
Inscrit : 19 May 2005
Lieu : Chateauneuf du pape
Membre no 39 495



coucou..
c'est pas mon job. j'ai un videoclub et je fais aussi des pizzas c'est un loisir. j'ai programmé un truc pour Schlum et Ghisdiem en binaire on pouvait sans doute le faire autrement je voulais juste apporter une petite idée si cela tourne a celui qui code le mieux et qui a raison.. ca ne sert a rien biggrin.gif et dans le logiciel usité les gains de performance sont .... top biggrin.gif et bienvenues aux idées toutefois et longue vie a ce topic amitié a tous ceux dont c'est le métier.. et qui n'ont pas forcement le temps de faire des jeux .. biggrin.gif

Ce message a été modifié par hubeert - 17 Aug 2009, 20:02.


--------------------
Musique techno avec MAO (Logic Pro)

des que quelqu'un a du pouvoir il croit détenir la vérité...
Des que quelqu'un a un clavier il A la la vérité.(Forcément)
Go to the top of the page
 
+Quote Post
noop
posté 17 Aug 2009, 13:41
Message #66


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 964
Inscrit : 3 Nov 2005
Membre no 49 239



On plaisante..... Et puis l'histoire du mec qui code comme un saguoin dans le milieu professionnel celà existe (ce qui n'est pas ton cas car toi tu fais ca pour le plaisir). Moi j'en ai connu un qui était dans le même bureau que moi il y a presque 30 ans, il refusait de m'expliquer ce qu'il avait codé en RPG alors que je devais traduire son programme en COBOL. Et bien son boulot il se l'est gardé jusqu'à la retraite....et je ne lui jette pas la pierre car maintenant je suis un peu dans sa situation. Par contre je ne fous pas les collègues dans la mouise. Mes programmes / scripts sont tous documentés.
Go to the top of the page
 
+Quote Post
hubeert
posté 17 Aug 2009, 14:02
Message #67


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 975
Inscrit : 19 May 2005
Lieu : Chateauneuf du pape
Membre no 39 495



coucou
d'accord alors continuons sur les astuces et les techniques biggrin.gif bonne continuation a tous

Ce message a été modifié par hubeert - 17 Aug 2009, 14:06.


--------------------
Musique techno avec MAO (Logic Pro)

des que quelqu'un a du pouvoir il croit détenir la vérité...
Des que quelqu'un a un clavier il A la la vérité.(Forcément)
Go to the top of the page
 
+Quote Post
Hellstorm
posté 17 Aug 2009, 14:13
Message #68


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 409
Inscrit : 7 Nov 2004
Membre no 26 535



Citation (noop @ 17 Aug 2009, 14:41) *
On plaisante..... Et puis l'histoire du mec qui code comme un saguoin dans le milieu professionnel celà existe (ce qui n'est pas ton cas car toi tu fais ca pour le plaisir). Moi j'en ai connu un qui était dans le même bureau que moi il y a presque 30 ans, il refusait de m'expliquer ce qu'il avait codé en RPG alors que je devais traduire son programme en COBOL. Et bien son boulot il se l'est gardé jusqu'à la retraite....et je ne lui jette pas la pierre car maintenant je suis un peu dans sa situation. Par contre je ne fous pas les collègues dans la mouise. Mes programmes / scripts sont tous documentés.


Entièrement d'accord, y a encore pas logntemps j'ai vu quelque chose d'assez mémorable :

On cast une string en double qu'on recast en string pour recaster en double et finalement recaster en string.

Très performant smile.gif
Go to the top of the page
 
+Quote Post
macuserfr
posté 17 Aug 2009, 17:29
Message #69


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 4 690
Inscrit : 28 Nov 2001
Lieu : Pas loin du grand pic qu'on surnomme Tour Eiffel
Membre no 1 440



Le binaire c'est un peu comme l'assembleur. Cela peu booster considérablement les performances mais faut l'utiliser avec parcimonie car

1) Cela prend plus de temps à coder que de rester en haut niveau (coût)
2) Cela est beaucoup moins lisible (maintenabilité)

Je ne sais pas vous, mais je code d'abord "pour que ça marche" (en évitant de faire un code trop crade), ensuite je repasse pour réorganiser (découper en fonctions, mieux commenter). C'est qu'à ce stade là que je vais chercher à optimiser le code, si besoin. Sachant que le processus d'optimisation peut être long et couteux (le temps c'est de l argent, si on est en milieu pro) on préfère souvent (c'est malheureux et paradoxal) acheter du matériel plus puissant que de gagner du temps de traitement sur le code. Cela revient moins cher.


--------------------
Mordu de Mac depuis 1996, avec un Performa 6230CD sous Mac OS 7.5.1. Depuis l'extinction de Steve Jobs, le logiciel libre se fait de plus en plus présent dans ma vie numérique.
Go to the top of the page
 
+Quote Post
flocharal
posté 17 Aug 2009, 21:03
Message #70


Nouveau Membre


Groupe : Membres
Messages : 22
Inscrit : 10 Jun 2009
Lieu : paris
Membre no 137 448



Citation (hubeert @ 17 Aug 2009, 11:53) *

J'adore ce jeux, je m'amuse comme un petit fou, ......... en plus les couleurs sont trop chouettes
Go to the top of the page
 
+Quote Post
Jaypee
posté 19 Aug 2009, 20:48
Message #71


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Retour aux trucs...

J'ai un mini-poster imprimé avec les commandes de "Vi". C'est un collector échappé des années 80, et je n' ai même plus le postscript original...

Tout ça pour dire qu'il rappelle des commandes essentielles comme "Afficher les numéros de lignes". Perso, je ne savais même pas que "Vi" savait faire ça wink.gif

:se nu

pour seT nuMBER

Parlant d'éditeurs, mon estime pour TextWrangler est remontée en flèche, après que j' ai eu à re-architecturer un fichier XML. Je devais passer d'un schéma avec des attributs à un schéma avec des sous-éléments.

TextWrangler a un mode un peu simplistement nommé "use grep".

La chaîne de départ, <element attr1="val1" attr2="val2"/>

et la chaîne souhaitée:
<element>
<attr1>val1</attr1>
<attr2>val2</attr2>
</element>

Avec TW, on va chercher
<element attr1="(.*)" attr2="(.*)"/>

Rappelez-vous: Dans les expressions régulières, les parenthèses c'est un peu comme des mémoires d'une calculette et on rappelle la valeur avec \1 ou \2

On va le remplacer par:
<element>\r\t<attr1>\1</attr1>\r\t<attr2>\2</attr2>\r</element>


Voilà, deux trucs pour tout public (de bidouilleur quand même)
J-P

Ce message a été modifié par Jaypee - 19 Aug 2009, 20:49.
Go to the top of the page
 
+Quote Post
noop
posté 20 Aug 2009, 08:10
Message #72


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 964
Inscrit : 3 Nov 2005
Membre no 49 239



Citation (Jaypee @ 19 Aug 2009, 21:48) *
Avec TW, on va chercher
<element attr1="(.*)" attr2="(.*)"/>

Rappelez-vous: Dans les expressions régulières, les parenthèses c'est un peu comme des mémoires d'une calculette et on rappelle la valeur avec \1 ou \2

On va le remplacer par:
<element>\r\t<attr1>\1</attr1>\r\t<attr2>\2</attr2>\r</element>


laugh.gif C'est le même boulot que je faisais depuis 3 jours (mais sous linux en shell). Par contre j'utilise sed. Seule différence, les expressions sont délimitées par \( et \)
Go to the top of the page
 
+Quote Post
Jaypee
posté 19 Oct 2009, 08:25
Message #73


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Je réactive un peu ce bon sujet.

Dernièrement, sur un serveur HP-UX, je lance un script shell préparé avec un des bons éditeurs à la Smultron du PC (NotePad++ en est un) et catastrophe, le script crashe sur la ligne 1 en accusant le fameux BOM UTF-8 (byte order marker, 3 caractères servant d'indicateur pour la polarité des mots machine, l'endianness) invisible dans l'éditeur, on ne peut pas l'éditer.

Par un ami, Google, j'ai découvert la commande vi qui règle ça :
: set noboum
: wq # On resauve

C'est facile à retenir après un crash... smile.gif
Niveau : Confirmé, quand même
J-P
PS : Apparemment, la commande est inconnue sur vim

Ce message a été modifié par Jaypee - 19 Oct 2009, 08:31.
Go to the top of the page
 
+Quote Post
noop
posté 19 Oct 2009, 08:32
Message #74


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 964
Inscrit : 3 Nov 2005
Membre no 49 239



Citation (Jaypee @ 19 Oct 2009, 09:25) *
Je réactive un peu ce bon sujet.

Dernièrement, sur un serveur HP-UX, je lance un script shell préparé avec un des bons éditeurs à la Smultron du PC (NotePad++ en est un) et catastrophe, le script crashe sur la ligne 1 en accusant le fameux BOM UTF-8 (byte order marker, 3 caractères servant d'indicateur pour la polarité des mots machine, l'endianness) invisible dans l'éditeur, on ne peut pas l'éditer.

Par un ami, Google, j'ai découvert la commande vi qui règle ça :
: set noboum
: wq # On resauve

C'est facile à retenir après un crash... smile.gif
Niveau : Confirmé, quand même
J-P


Bonjour,

je bosse aussi sur HP-UX ( mad.gif ) comment ce caractère a t'il été inséré dans ton script ? Par Notepad++ ? J'ai jamais vu ca !

Ce message a été modifié par noop - 19 Oct 2009, 08:32.
Go to the top of the page
 
+Quote Post
Jaypee
posté 19 Oct 2009, 08:45
Message #75


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Oui un éditeur classique, réglé en UTF-8 avec BOM.

En fait je me suis planté sur la commande vi, ça collait pas. Là où j' ai besoin de scripts shell, ce sont des serveurs Linux, pas sur les serveurs HP-UX qui ont un autre usage...

Mais c'est proche et ça marche bien sous vim :

: set nobomb
: wq

J-P

Ce message a été modifié par Jaypee - 19 Oct 2009, 08:45.
Go to the top of the page
 
+Quote Post
noop
posté 19 Oct 2009, 09:00
Message #76


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 964
Inscrit : 3 Nov 2005
Membre no 49 239



Ca y est j'ai vu l'option UTS-8 with BOM. En fait je ne l'avais jamais utilisé ? Ca sert dans quel cas ?
Go to the top of the page
 
+Quote Post
schlum
posté 19 Oct 2009, 10:31
Message #77


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 456
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



Citation (cbrandt @ 14 Aug 2009, 09:52) *
En C/Objective-C je mets toujours cette petite macro pour faciliter le traitement des erreurs:
Code
#define Fail(erreur,label) {if(erreur) goto label;}

oui, je sais, les goto c'est crade, mais c'est pour la bonne cause biggrin.gif
Ça permet de regrouper le code de gestion d'erreur en fin de fonction, et ça s'utilise comme ça:
Code
int err;
...
err = appel_de_fonction ();
Fail (err, stop);
...
return;
stop:
NSLog (@"erreur: %d", err);
...


Beauh ! laugh.gif
Et les NSException et @try @catch, c'est fait pour quoi ? tongue.gif
(oui, j'arrive après la guerre…)


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Jaypee
posté 19 Oct 2009, 10:38
Message #78


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Le BOM ce sont 3 octets conventionnels, qui servent si on échange le fichier UTF-8 entre machines d'architectures différentes, à définir l'ordre des octets dans un mot, big ou little endian. En général, on ne le met pas, mais certains éditeurs n'ont qu'un seul réglage UTF-8, sans précision.

Dans mon cas, le fichier était déjà déployé à destination, donc pour régler juste un encodage, c'eut été un peu pénible de re-déployer. Donc, le patch rapide sur place, suivi de la correction dans le code versionné, pour un prochain kit, était acceptable.

J-P
Go to the top of the page
 
+Quote Post
cbrandt
posté 19 Oct 2009, 10:48
Message #79


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 291
Inscrit : 29 May 2004
Lieu : 48°50'27" N, 2°13'43" E
Membre no 19 336



Citation (schlum @ 19 Oct 2009, 11:31) *
Citation (cbrandt @ 14 Aug 2009, 09:52) *
En C/Objective-C je mets toujours cette petite macro pour faciliter le traitement des erreurs:
Code
#define Fail(erreur,label) {if(erreur) goto label;}

oui, je sais, les goto c'est crade, mais c'est pour la bonne cause biggrin.gif
Ça permet de regrouper le code de gestion d'erreur en fin de fonction, et ça s'utilise comme ça:
Code
int err;
...
err = appel_de_fonction ();
Fail (err, stop);
...
return;
stop:
NSLog (@"erreur: %d", err);
...


Beauh ! laugh.gif
Et les NSException et @try @catch, c'est fait pour quoi ? tongue.gif
(oui, j'arrive après la guerre…)



oui, bon… c'est vrai…
mais j'ai pris l'habitude, car j'ai commencé à mettre ça dans ma "toollib" perso qui marche sous MacOS, Windows et Linux… pour quand je fais du code serveur (portable) sans interface utilisateur…


--------------------
Membre no. 14 du club des AIPBP (Anciens Inscrits Pas Beaucoup de Posts) Voir la liste
Go to the top of the page
 
+Quote Post
Jaypee
posté 19 Oct 2009, 10:49
Message #80


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



A Schlum, pas grave... il faut aussi signaler le @finally.

On y passe tout le temps, exception où pas.

C'est important pour faire le ménage après une exception. Certaines ressources système manquantes peuvent conduire au besoin de reboot d'un système si on ne les libère pas correctement : threads, file handles... Même en cas d' exception qui va immanquablement conduire à un crash, il faut faire ce ménage avant de s'écraser avec grâce.

J-P

Ce message a été modifié par Jaypee - 19 Oct 2009, 10:50.
Go to the top of the page
 
+Quote Post
schlum
posté 19 Oct 2009, 10:58
Message #81


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 456
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



Citation (cbrandt @ 19 Oct 2009, 11:48) *
oui, bon… c'est vrai…
mais j'ai pris l'habitude, car j'ai commencé à mettre ça dans ma "toollib" perso qui marche sous MacOS, Windows et Linux… pour quand je fais du code serveur (portable) sans interface utilisateur…


Ah oui… Si c'est multi-plateformes, je préfère le C++ avec le même mécanisme d'exceptions (mieux encore que celui d'Objective-C d'ailleurs).

Code
#define TRY try {

#define CATCH \
} catch (MyException &e) { \
    // Log \
    throw; \
}

#define CATCHIGN \
} catch (MyException &e) { \
    // Log \
}

#define THROW(msg) { \
    // Log \
    MyException newE; \
    throw newE; \
}


Et mettre des TRY … CATCH autour de chaque fonction / méthode

Citation (Jaypee @ 19 Oct 2009, 11:49) *
A Schlum, pas grave... il faut aussi signaler le @finally.

On y passe tout le temps, exception où pas.

C'est important pour faire le ménage après une exception. Certaines ressources système manquantes peuvent conduire au besoin de reboot d'un système si on ne les libère pas correctement : threads, file handles... Même en cas d' exception qui va immanquablement conduire à un crash, il faut faire ce ménage avant de s'écraser avec grâce.

J-P


Oui… Mais ne pas oublier que le NSAutoreleasePool en Obj-C est automatiquement nettoyé quand on saute avec une exception… même s'il n'est pas libéré dans le @finally
Donc il est plus facile de l'utiliser et de se passer de @finally quand c'est possible tongue.gif


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
No6
posté 19 Oct 2009, 12:08
Message #82


Oui ?
*****

Groupe : Membres
Messages : 3 889
Inscrit : 24 Jun 2003
Lieu : BZH
Membre no 8 224



Citation (bad_duck @ 27 Jul 2009, 14:00) *
" Si on ne peut pas comprendre l'utilité d'un programme en lisant uniquement les commentaires, alors vous pouvez jeter l'ensemble du code ! "

Oui, je suis vraiment d'accord.
J'ajouterai simplement un petit plus, les commentaires doivent aussi apporter une petite touche d'humour et de légèreté si possible.
Il faut aussi penser à l'individu qui les relira dans X années, certainement stressé, dépressif...
La programmation n'attire que trop souvent les individus dans un monde Kafkaïen...

J'ai découvert cette méthode dans les sources de Bill Atkinson et de Scott Knaster ; alors excusez du peu wink.gif
C'est une bonne pratique (hélas) plutôt rare en France ; qui mériterai d'être diffusée, et à utiliser avec modération, bien sur.

Citation (macuserfr @ 14 Aug 2009, 12:06) *
Pourquoi faire du goto et des labels quand un
Code
if(!fonction())
{
    //traitement de l'erreur

Beurk !!!!

Ça me rappelle le temps ou je faisais du débugging sur des programmes en APL.

Et pour le sujet de l'utilisation de tables binaires, je conseille l'analyse des sources de Agrep http://www.tgries.de/agrep/

D'ailleurs, pour apprendre à bien programmer, rien de tel que lire des codes sources, prestigieux ou non, comme Agrep

Ah, j'oubliais, à placer dans le chapitre "bonne pratiques" quand vous tapez une accolade (ou une parenthèse, crochet) ouvrante, taper immédiatement la fermante correspondante, puis utilisez le retour arrière pour écrire le contenu...



--------------------
"Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas sûr que vous réalisiez que ce que vous avez entendu n'est pas ce que je pense."
(Alan Greenspan)
Go to the top of the page
 
+Quote Post
noop
posté 19 Oct 2009, 14:01
Message #83


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 964
Inscrit : 3 Nov 2005
Membre no 49 239



Citation (No6 @ 19 Oct 2009, 13:08) *
Ah, j'oubliais, à placer dans le chapitre "bonne pratiques" quand vous tapez une accolade (ou une parenthèse, crochet) ouvrante, taper immédiatement la fermante correspondante, puis utilisez le retour arrière pour écrire le contenu...


laugh.gif Très juste. Même combat pour les caractères suivants:
Code
' " `[ (


je viens d'en faire l'expérience dans un script shell (oublié un " fermant). Même chose quand on utilise les caractères de control par exemple pour taper:
Code
"......\"Voici une belle chaîne de char quotée\" ....."


Eh bien je tapes tout de suite une chaîne quotée NULL [\"\"] et je rentre mon texte dedans.
Go to the top of the page
 
+Quote Post
Jaypee
posté 19 Oct 2009, 15:14
Message #84


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Toujours à Schlum et à propos du @finally, je faisais allusion à tout ce qui n' est pas mémoire, et que l'on consomme comme ressource. Imaginons un Thread zombie qui "tient" une connexion de database. Si on a un bug qui fait ça, on relance l'appli, ça marche un moment... puis ça crashe, on essaie de nouveau... et à chaque tentative, on aggrave le problème en saturant le système (plus de threads) ou en consommant tout le connection pool... Au bout d'un moment, le reboot est inévitable.

Bon, c'est vrai, j' ai une culture de serveur et de règlement à la con (faut de la paperasse pour rebooter un serveur de prod sad.gif, voire de développement qui peut aussi être partagé) , qui me donnent la hantise du reboot. Sur un PC ou un Mac, ce n' est pas si grave.

@No6 : En APL, tu fais allusion au branch vers expression ?
-> expr

C'est un GOTO calculé comme en Fortran, mais un -> (chaine vide ou vecteur nul ou tout objet de dimension 0) est un saut à la ligne suivante, et -> 0 est équivalent à un return
Certains créaient une fonction IF pour faire plus propre :
-> etiquette IF cond

J-P

Ce message a été modifié par Jaypee - 19 Oct 2009, 15:27.
Go to the top of the page
 
+Quote Post
schlum
posté 19 Oct 2009, 16:09
Message #85


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 456
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



Jaypee, en langage objet, je règle ce problème avec les constructeurs pour tout ce qui est initialisation (allocation, connexion, ouverture de "handles" ou sockets etc.) et les destructeurs pour tout ce qui est finalisation (déallocation, déconnexions, fermeture de "handles" ou sockets etc.)
Du coup, tout mon nettoyage se passe à coup d'alloc et de release.
En C++ c'est encore plus pratique car j'utilise au maximum des variables sur la pile, donc libérées automatiquement dès qu'on sort du scope, et ce quelque soit la sortie (exception, goto, sortie normale…). Et on peut même créer un scope pour l'occasion à coup d'accolades.


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Jaypee
posté 19 Oct 2009, 16:20
Message #86


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Au temps pour moi, en culture Java, je ne fréquente pas les destructeurs... toute une éducation à refaire...

Tout dépend quand même si le destructeur de l'objet est bien écrit, c'est à dire si la désallocation d'un File handle (le free de la structure File Handle en mémoire) est précédée de son changement d'état (le "close")

Mais OK, c'est vu...
J-P
Go to the top of the page
 
+Quote Post
schlum
posté 19 Oct 2009, 16:32
Message #87


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 456
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



Ah oui, bien sûr, il faut que tout soit propre au niveau libération… Ça fonctionne également avec les mutex que j'ai oublié dans mon énumération (ne pas déverrouiller un mutex est une des pires choses qui peuvent arriver…).


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post

3 Pages V  < 1 2 3
Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 18th September 2025 - 20:51