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

 


Combien d'intervenants dans cette cat ?


 
27.5 %
 11 votes
1.  1 (Masklinn)
 
 
25.0 %
 10 votes
2.  5 ou moins (Masklinn et ses amis)
 
 
10.0 %
 4 votes
3.  Environ une dizaine
 
 
2.5 %
    1 vote
4.  Environ une centaine
 
 
25.0 %
 10 votes
5.  Environ une centaine de multis de stiffler
 
 
10.0 %
 4 votes
6.  Obiwan n'a pas besoin de langage pour être fonctionnel
 

Total : 40 votes (0 vote blanc)
Ce sondage est clos, vous ne pouvez plus voter
 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7
Auteur Sujet :

blabla@fonctionnel : Taiche ne sert à rien

n°1722909
lorill
Posté le 23-04-2008 à 15:29:23  profilanswer
 

Reprise du message précédent :
bon, j'ai un doute sur ce que je fais, je crains un peu pour les perfs, parce que je ne comprends pas ce qui se passe derrière :
 
J'ai toujours mes mêmes types :

Code :
  1. type Coords = (Int, Int)
  2. data Unit = Unit { archetype :: Archetype, movePoints :: Int, hitPoints :: Int, coords :: Coords }
  3. data Army = Army { name :: String, units :: [U.Unit] }


 
J'ai ce code (le U, c'est le module Unit, qui contient mon type & quelques bricoles)

Code :
  1. updateUnit :: (U.Unit -> U.Unit) -> Army -> Coords -> Army
  2. updateUnit f army coords = Army (name army) (updateUnit' (units army))
  3.   where
  4.     updateUnit' [] = []
  5.     updateUnit' (u:us) = (if U.coords u == coords then f u else u):(updateUnit' us)
  6.                                
  7. updateArmyUnit :: (U.Unit -> U.Unit) -> [Army] -> Coords -> [Army]                               
  8. updateArmyUnit f [] _ = []
  9. updateArmyUnit f (a:as) coords = (updateUnit f a coords):(updateArmyUnit f as coords)
  10. hit :: Int -> Unit -> Unit
  11. hit amount unit = Unit (archetype unit) (movePoints unit) ((hitPoints unit)-amount) (coords unit)


 
et a l'utilisation, si l'unité en (x, y) se fait attaquer, j'ai ca

Code :
  1. Army.updateArmyUnit (hit 1) armies (x, y)


 
Et si j'imagine bien ce qui se passe, je n'arrete pas de reconstruire mes listes et mes Army, non ?
ou alors le compilateur est vraiment très fort ?

mood
Publicité
Posté le 23-04-2008 à 15:29:23  profilanswer
 

n°1722911
masklinn
í dag viðrar vel til loftárása
Posté le 23-04-2008 à 15:31:33  profilanswer
 

Je crois pas que le compilo fasse des trucs pareils non :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1722914
lorill
Posté le 23-04-2008 à 15:36:21  profilanswer
 

de maniere plus générale, si je veux modifier un champ d'un élément d'une liste, comment je fais, proprement ?

n°1722918
masklinn
í dag viðrar vel til loftárása
Posté le 23-04-2008 à 15:41:55  profilanswer
 

Ben comme ça à première vue, mais j'aurais essayé d'utiliser les hofs existantes, genre map/filter/reduce toussa, parce que là tu réinventes pas mal la roue.
 
Sinon, essaie de poser la question dans #haskell, ou de voir comment ce genre de trucs est fait dans xmonad


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1722930
lorill
Posté le 23-04-2008 à 15:52:53  profilanswer
 

masklinn a écrit :

Ben comme ça à première vue, mais j'aurais essayé d'utiliser les hofs existantes, genre map/filter/reduce toussa, parce que là tu réinventes pas mal la roue.


si ce n'est que ca...

 
Code :
  1. updateUnit :: Coords -> (U.Unit -> U.Unit) -> Army -> Army
  2. updateUnit coords f army = Army (name army) (updateUnit' (units army))
  3.   where
  4.     updateUnit' = map (\u -> if U.coords u == coords then f u else u)
  5.                                
  6. updateArmyUnit :: Coords -> (U.Unit -> U.Unit) -> [Army] -> [Army]                               
  7. updateArmyUnit coords f = map (updateUnit coords f)
 
masklinn a écrit :

Sinon, essaie de poser la question dans #haskell


:fou: [:mechant] [:florentg]


Message édité par lorill le 23-04-2008 à 15:53:20
n°1722939
IrmatDen
Posté le 23-04-2008 à 16:02:29  profilanswer
 

Tu peux changer l'écriture de hit pour celle-ci qui se contente de copier unit en modifiant uniquement le champ nécessaire:

Code :
  1. hit :: Int -> Unit -> Unit
  2. hit amount unit = unit { hitPoints = hitPoints unit - amount }
 

Et +1 avec mask pour utiliser les fonctions faite pour. Tu peux changer un peu la logique comme ça aussi par exemple (en supprimant la dépendance entre Army et Unit au niveau des update)

Code :
  1. updateUnit :: Coords -> (U.Unit -> U.Unit) -> [Unit] -> [Unit]
  2. updateUnit c f = map (\u -> if U.coords u == c then f u else u)
  3.  
  4. updateArmyUnit :: Army -> Coords -> (U.Unit -> U.Unit) -> Army
  5. updateArmyUnit army c f = army { units = updateUnit c f $ units army }
  6.  
  7. -- et pour utiliser le tout:
  8. map (\a -> Army.updateArmyUnit a (x, y)  (hit 1)) armies
 

J'ai du mal à imaginer une amélioration des perfs liées à ça par contre, mais bon déjà tu gagnes en taille et lisibilité du code :D

 

Edit: j'ai changé updateArmyList pour ne s'appliquer qu'à une armée à cause du nom de la fonction et parce que ça me paraîssait plus logique de n'agir que sur une armée à la fois, mais bien sûr, tu peux la repasser sur armies et bouger l'appel à map dedans ;)

 

Edit2: inversion de la fonction et de la coordonnée dans updateArmyUnit...
Edit3: et correction de l'exemple. Comme quoi je ferais vraiment mieux de tester avant de mettre ça ici :sweat:


Message édité par IrmatDen le 23-04-2008 à 17:11:32
n°1723027
lorill
Posté le 23-04-2008 à 17:16:11  profilanswer
 

c'est vrai que c'est plus clair, je n'avais pas encore vu la copie en modifiant qu'un champs, ca aide pas mal.

 

pour les perfs, c'est surement un faux problème, je n'ai pas constaté de lenteur (vu la taille des données de toutes facons...), je me demandais juste.


Message édité par lorill le 24-04-2008 à 08:07:41
n°1726867
lorill
Posté le 30-04-2008 à 13:43:27  profilanswer
 

IrmatDen a écrit :

Avec plaisir; tiens nous (moi? je sais pas si y'a des lurkeurs ici :D) au courant, ton expérimentation me sera d'une grande aide quand je me déciderais à lâcher un peu l'apprentissage d'haskell en mode console...


finalement j'ai mis 2 iorefs : un data Game qui contient la carte et les armées (donc les unités, leur etat et positition), et la selection courante (un Maybe (Army, Unit)).
 
Ca marche bien :sol:

n°1726873
IrmatDen
Posté le 30-04-2008 à 13:57:21  profilanswer
 

C'est bon à savoir, merci :jap:

n°1726875
lorill
Posté le 30-04-2008 à 13:59:18  profilanswer
 

je pense que j'en mettrais un 3eme quand je commencerais la gestion des tours, pour savoir qui doit jouer, mais je n'en suis pas encore la.

mood
Publicité
Posté le 30-04-2008 à 13:59:18  profilanswer
 

n°1726882
seabee
Posté le 30-04-2008 à 14:16:50  profilanswer
 

J'ai fait du caml, du prolog et de l'alpha-calcul, j'ai le droit de dawater et de foutre ma merde? :o

n°1726890
IrmatDen
Posté le 30-04-2008 à 14:25:04  profilanswer
 

Pas sûr, ici, c'est strict :o

Chaos Intestinal a écrit :

3] Pour troller, utiliser les catégories approriées du forum comme Seti ou OSA.
 
[...]
 
Règles du topic:
3] No dawa
Faites pas les malins, j'ai la modération en MP ©


 

Spoiler :

mais les modos passent pas trop [:dawa]

n°1726892
IrmatDen
Posté le 30-04-2008 à 14:26:42  profilanswer
 

lorill a écrit :

je pense que j'en mettrais un 3eme quand je commencerais la gestion des tours, pour savoir qui doit jouer, mais je n'en suis pas encore la.


T'auras pas juste à cycler une liste de x joueurs?

n°1726899
lorill
Posté le 30-04-2008 à 14:34:52  profilanswer
 

IrmatDen a écrit :


T'auras pas juste à cycler une liste de x joueurs?


Ca va dépendre de comment je fais l'ihm en fait.
Si je veux pas que tu puisses sélectionner les units de ton adversaire, il faut que mon code appelé par gtk lors du dessin sache qui est le joueur courant, donc je suis obligé de le mettre en IORef par un moyen ou un autre pour que la fonction de dessin puisse le récupérer.

 

Non ?


Message édité par lorill le 30-04-2008 à 14:35:09
n°1726939
IrmatDen
Posté le 30-04-2008 à 15:44:54  profilanswer
 

Moui, toutafé; c'est moi qui pensais un niveau "plus bas" encore, désolé.

n°1728039
rakzom
Dans une bÔnne aubÊrge
Posté le 03-05-2008 à 18:14:52  profilanswer
 

Je m'intéresse depuis peu à l'approche fonctionnelle (depuis que je suis tombé sur les vidéos du SICP en fait :p) et suis à proprement parler sur le cul. J'adore la façon dont le LISP (et en particulier le Scheme) est construit : quelques prédicats et fonctions de bases, une  syntaxe super simple (enfin surtout pour la machine :/ ) et la possibilité de redéfinir completement le langage. Ca change des ambiguités syntaxiques du C et des #define crados :o
 
Je trouve dommage de pas avoir (encore) eu l'occasion de tomber sur du fonctionnel pendant mes études, je sors d'un IUT info et tout ce qu'on attends de nous c'est de pouvoir pisser des kilomètres de Java :/

n°1728052
schnapsman​n
Zaford Beeblefect
Posté le 03-05-2008 à 19:16:04  profilanswer
 

rakzom a écrit :

Je trouve dommage de pas avoir (encore) eu l'occasion de tomber sur du fonctionnel pendant mes études, je sors d'un IUT info et tout ce qu'on attends de nous c'est de pouvoir pisser des kilomètres de Java :/


La mécanique des fluides n'est pas au programme du CAP plomberie non plus...  [:cupra]

n°1728056
masklinn
í dag viðrar vel til loftárása
Posté le 03-05-2008 à 19:24:39  profilanswer
 

rakzom a écrit :

Je m'intéresse depuis peu à l'approche fonctionnelle (depuis que je suis tombé sur les vidéos du SICP en fait :p) et suis à proprement parler sur le cul. J'adore la façon dont le LISP (et en particulier le Scheme) est construit : quelques prédicats et fonctions de bases, une  syntaxe super simple (enfin surtout pour la machine :/ ) et la possibilité de redéfinir completement le langage. Ca change des ambiguités syntaxiques du C et des #define crados :o


Attention, les Lisp ont un certain nombre de spécificités (la syntaxe et les macros, principalement) qui sont spécifique aux lisp, et pas au domaine fonctionnel. Tu ne les retrouvera pas nécessairement, ou tout du moins pas nécessairement sous la même forme, dans les autres langages fonctionnels.
 
En attendant, si tu as apprécié les vidéos SICP, je te conseille de te payer le bouquin, c'est un excellent investissement :jap:

rakzom a écrit :

Je trouve dommage de pas avoir (encore) eu l'occasion de tomber sur du fonctionnel pendant mes études, je sors d'un IUT info et tout ce qu'on attends de nous c'est de pouvoir pisser des kilomètres de Java :/


Les langages fonctionnels, c'est pas vendeur, c'est pas que ce les SSII et autres demandent, et la méthode actuelle (surtout en IUT, mais les écoles d'ingé info de bas de tableau sont dans la même optique :/) c'est pas de sortir des gens ayant la culture et les connaissance pour apprendre ce qui sera vendeur pendant leur carrière, c'est de sortir des gens qui pissent du code permettant de les vendre [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1736958
IrmatDen
Posté le 26-05-2008 à 03:11:09  profilanswer
 

GHC a des (morceaux de) messages d'erreurs totalement compréhensibles:

Citation :

My brain just exploded.


Je crois que je lui ai fait vraiment mal là [:petrus75]


Message édité par IrmatDen le 26-05-2008 à 03:11:33
n°1737781
IrmatDen
Posté le 27-05-2008 à 15:15:51  profilanswer
 

Haskell est toujours autant totozifiant...
 
J'ai une petite question liée à la rapidité et à la consommation mémoire. La routine qui m'intéresse est l'écriture dans un fichier targa d'une liste de couleur (une couleur étant un tuple (Float,Float,Float,Float)).
 
Je me sers de 2 helpers:
* roundClamp: transforme une liste de float compris entre 0 et 1 en une liste de char
* writeColors: applique roundClamp récursivement à une liste de Color4 pour générer une liste de Char
 
Les fonctions concernées dans leur totalité:

Code :
  1. roundClamp :: Float -> Char
  2. roundClamp = (toEnum . round . min 255 . (*) 255)
  3. writeColors :: [Color4] -> [Char]
  4. writeColors ((Color4 (r,g,b,a)) : colors) = (map roundClamp [r,g,b,a]) ++ (writeColors colors)
  5. writeColors [] = []
  6. writeTga :: String -> Int -> Int -> [Char] -> IO ()
  7. writeTga filename width height colors =
  8.        let tgaDefaultHeader :: [Char]
  9.            tgaDefaultHeader = map (toEnum.fromIntegral)
  10.                                   [0,0,2,0,0,0,0,0,0,0,0,0,
  11.                                    ( width  .&. 0x00FF),
  12.                                    ((width  .&. 0xFF00) `div` 256),
  13.                                    ( height .&. 0x00FF),
  14.                                    ((height .&. 0xFF00) `div` 256),
  15.                                    32, 0]
  16.         in do h <- openFile filename WriteMode
  17.               hPutStr h tgaDefaultHeader
  18.               hPutStr h colors
  19.               hClose h


 
Si je mets roundClamp et writeColors dans le let de de writeTga, il faut ajouter ~0.5s d'exécution et 140 MB de mémoire consommée.
 
La question est simple: pourquoi? :D
Je pensais naïvement qu'une fonction déclarée dans un let était juste une fonction locale à la fonction contenant le let et que la seule incidence serait liée à la portée. De toute évidence non, et j'éviterais à l'avenir de faire ce genre de trucs. Mais je suis assez curieux de l'explication si quelqu'un en a une :)

n°1737786
masklinn
í dag viðrar vel til loftárása
Posté le 27-05-2008 à 15:27:40  profilanswer
 

heuu tu les utiliserais comment exactement, roundClamp et (surtout) writeColors?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1737789
IrmatDen
Posté le 27-05-2008 à 15:35:17  profilanswer
 

Actuellement (avec le code ci-dessus), je les utilise ainsi:

Code :
  1. main = writeTga "test.tga" resX resY $ writeColors $ draw rayt
 

(Edit: draw rayt est une méthode qui dessine une scène et renvoit une liste de Color4, c'est un petit raytracer)

 

Résumé du profil avec ce code:

Citation :

total time  =        1.20 secs   (24 ticks @ 50 ms)
total alloc = 362,158,356 bytes  (excludes profiling overheads)

 

Précédemment, le code était:

Code :
  1. writeTga :: String -> Int -> Int -> [Color4] -> IO ()
  2. writeTga filename width height colors =
  3.        let tgaDefaultHeader :: [Char]
  4.            tgaDefaultHeader = map (toEnum.fromIntegral)
  5.                                   [0,0,2,0,0,0,0,0,0,0,0,0,
  6.                                    ( width  .&. 0x00FF),
  7.                                    ((width  .&. 0xFF00) `div` 256),
  8.                                    ( height .&. 0x00FF),
  9.                                    ((height .&. 0xFF00) `div` 256),
  10.                                    32, 0]
  11.            roundClamp :: Float -> Char
  12.            roundClamp = (toEnum . round . min 255 . (*) 255)
  13.            writeColors :: [Color4] -> [Char]
  14.            writeColors ((Color4 (r,g,b,a)) : colors) =
  15.                        (map roundClamp [r,g,b,a]) ++ (writeColors colors)
  16.            writeColors [] = []
  17.         in do h <- openFile filename WriteMode
  18.               hPutStr h tgaDefaultHeader
  19.               hPutStr h $ writeColors colors
  20.               hClose h


Code :
  1. main = writeTga "test.tga" resX resY $ draw rayt
 

Résumé du profil avec ce code:

Citation :

total time  =        1.80 secs   (36 ticks @ 50 ms)
total alloc = 520,994,200 bytes  (excludes profiling overheads)

 

(Les 2 versions du projet sont compilées en -O2)

 

PS: les noms de fonctions ne sont plus très explicite dû à certains tests, avoir des noms plus clair est parmi les choses à faire ;)


Message édité par IrmatDen le 27-05-2008 à 15:36:21
n°1737803
IrmatDen
Posté le 27-05-2008 à 15:50:46  profilanswer
 

Je commence à me demander si ce serait pas parce qu'il y aurait une copie de moins... J'ai bon? (Je pensais que ce genre de trucs était compris par le compilo)


Message édité par IrmatDen le 27-05-2008 à 15:51:06
n°1737808
masklinn
í dag viðrar vel til loftárása
Posté le 27-05-2008 à 15:54:23  profilanswer
 

Je sais pas en fait, par contre je me dis que t'as intérêt à pas avoir trop de couleurs dans ton truc.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1737815
IrmatDen
Posté le 27-05-2008 à 15:56:49  profilanswer
 

Si tu parles de la résolutions, y'a des chances que ça reste à peu prés stable (je fais mes tests en 800x600 actuellement).

 

A part le temps d'exécution, tu vois un autre risque? Est-ce que passer une fonction à draw qui servirait de "convertisseur" pour basculer chaque pixel dans sa représentation finale serait intéressant?


Message édité par IrmatDen le 27-05-2008 à 15:56:59
n°1737827
masklinn
í dag viðrar vel til loftárása
Posté le 27-05-2008 à 16:09:36  profilanswer
 

No se, tu devrais coller ton truc dans hpaste et aller demander sur #haskell, je suis sûr que tu trouveras des gens qui t'expliqueront très bien ce qui se passe (surtout si e.g. dons est présent)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1737833
IrmatDen
Posté le 27-05-2008 à 16:13:19  profilanswer
 

Ok, je ferais ça. Juste pas du taf, ce serait un peu abusé :D

n°1737834
masklinn
í dag viðrar vel til loftárása
Posté le 27-05-2008 à 16:14:08  profilanswer
 

IrmatDen a écrit :

Ok, je ferais ça. Juste pas du taf, ce serait un peu abusé :D


Pourquoi?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1737845
IrmatDen
Posté le 27-05-2008 à 16:29:50  profilanswer
 

Parce que j'ai arrêté de me démonter au taf, mais qu'il faudrait tout de même que j'assure un "service minimum" avant de trouver mieux ;)</my_life>

n°1737851
masklinn
í dag viðrar vel til loftárása
Posté le 27-05-2008 à 16:36:26  profilanswer
 

Ouais enfin c'est pas aller poser une question et lire 3 réponses sur #haskell qui t'empêche de bosser :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1738084
Trap D
Posté le 27-05-2008 à 23:09:19  profilanswer
 

C'est peut-être pas de les lire qui prend du temps mais de les comprendre ...
(je suis déjà dehors)

n°1738144
masklinn
í dag viðrar vel til loftárása
Posté le 28-05-2008 à 08:54:51  profilanswer
 

Trap D a écrit :

C'est peut-être pas de les lire qui prend du temps mais de les comprendre ...
(je suis déjà dehors)


:D


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1765083
Shinuza
This is unexecpected
Posté le 25-07-2008 à 21:36:24  profilanswer
 

Yop,
 
Je viens tout juste de découvrir Erlang et les langages fonctionnels.
Pour m'amuser je veux filtrer une list pour récupérer uniquement les nombres pairs.
J'ai commencé par écrire deux fonctions, even et odd.
 

Code :
  1. even(X) ->
  2.    case X of
  3.       0 ->
  4.          true;
  5.       N ->  Y = N -1,
  6.          odd(Y)
  7.    end.
Code :
  1. odd(X) ->
  2.    case X of
  3.        0 ->
  4.          false;
  5.     N -> Y = N - 1,
  6.          even(Y)
  7.    end.


 
Donc je me demande s'il n'est pas possible d'écrire ces fonctions autrement? (Sans utiliser le "case" par exemple)


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1765086
KangOl
Profil : pointeur
Posté le 25-07-2008 à 21:47:34  profilanswer
 
n°1765087
Shinuza
This is unexecpected
Posté le 25-07-2008 à 21:56:53  profilanswer
 

Je connais filter, celà dit ce n'est pas la que réside ma question :)

 

J'ai ré écrit even comme suit :

Code :
  1. even(X) when X rem 2 == 0 ->
  2.    true;
  3. even(_X) ->
  4.    false.
 

Edit :

 

D'où

 
Code :
  1. odd(X) ->
  2.    even(X) == false;
  3. odd(_X) ->
  4.    false.
 

Ma question c'est "Est ce que je procède correctement (le code fonctionne, mais est ce qu'il est bien écrit)"


Message édité par Shinuza le 25-07-2008 à 22:01:02

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1765092
souk
Tourist
Posté le 25-07-2008 à 22:03:37  profilanswer
 

Code :
  1. even(X) -> X rem 2 == 0.
  2. odd(X) -> not even(X).


nan ? [:pingouino]

Message cité 1 fois
Message édité par souk le 25-07-2008 à 22:07:17
n°1765100
Shinuza
This is unexecpected
Posté le 25-07-2008 à 22:16:48  profilanswer
 

souk a écrit :

Code :
  1. even(X) -> X rem 2 == 0.
  2. odd(X) -> not even(X).


nan ? [:pingouino]

Ouaip :)
Je savais pas qu'on pouvait écrire ça :/


Message édité par Shinuza le 25-07-2008 à 22:17:33

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1766616
el muchach​o
Comfortably Numb
Posté le 30-07-2008 à 08:39:47  profilanswer
 

Ben ta fonction retourne un booléen... Le fait que tu ne types pas explicitement ne te dispense pas d'avoir en tête que tes variables sont typées.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1766855
Shinuza
This is unexecpected
Posté le 30-07-2008 à 18:00:43  profilanswer
 

el muchacho a écrit :

Ben ta fonction retourne un booléen... Le fait que tu ne types pas explicitement ne te dispense pas d'avoir en tête que tes variables sont typées.


Le monsieur il comprends pas pourquoi tu dis ça :D


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1766868
souk
Tourist
Posté le 30-07-2008 à 18:17:05  profilanswer
 

Shinuza a écrit :


Le monsieur il comprends pas pourquoi tu dis ça :D


+1 [:pingouino] je vois pas le rapport

n°1768252
schnapsman​n
Zaford Beeblefect
Posté le 02-08-2008 à 14:57:41  profilanswer
 


concept error, abort

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7

Aller à :
Ajouter une réponse
 

Sujets relatifs
Rien ne s'afficheRien n'apparait sur IE..
[SQL Server 2005] Full-Text Index n'indexe rien[XPATH] Chemin fonctionnel
Est ce qu'un serveur CVS sert bien a cela?[MySQL] a quoi sert l'interclassement ?
Php ne renvoi rien au navigateurca veut rien dire (req VBA)
Je ne comprend rien au PHP[HTML - CSS] Problème avec la balise <a>href="#">blabla</a>
Plus de sujets relatifs à : blabla@fonctionnel : Taiche ne sert à rien


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR