Beta test de SmallImage2
Publié : 10.12.2004 - 14h44 par Fabien
Bonjour à tous,
je vous propose de participer au beta test de la version 2 de SmallImage.
Tout a été reprogrammé depuis le début et le programme ne repose plus sur ImageMagick.
Du coup, il y a maintenant la possibilité de supprimer les profiles d'une fichier JPEG
sans passer par une décompression - recompression.
Il n'y a donc plus aucune perte de qualité lorsqu'on décide de ne supprimer que les profils.
La fenêtre d'informations permet à présent d'afficher les information EXIF si elles sont présentes, ainsi que les informations sur l'appareil photo.
Les réglages peuvent à présent être sauvegardés sous forme de "presets" réutilisables.
Il y a également l'option de conserver l'icône du fichier, ou même de l'ajouter (cette option n'est disponible qu'avec Panther).
Bref, plein de nouvautés....et probablement pleins de bugs.
Du coup j'ai besoin de vous.
Je vous invite à tester l'application sous toute ses coutures et à me signaler les bugs (pensez à regarder ce qui se passe dans la console lors d'un plantage).
Je suis particulièrement interessé par la compatibilité avec MacOS X 10.2, que je ne suis pas en mesure de tester.
Vous remarquerez qu'ils manque encore quelques trucs: il n'y a pas de préférences (il n'y aura en fait que deux options: vider la liste avec le traitement et traiter immédiatement les fichiers déposés sur l'icône de l'application) ni d'aide.
Bref, j'attends vos remarques et critiques.
Pour le téléchargement,
c'est par ici (212 ko) !
Merci d'avance
Publié : 10.12.2004 - 15h01 par bernie14
peux-tu corriger l'adresse du téléchargement: httrp !
Bye
Bernard
Publié : 10.12.2004 - 15h10 par Fabien
bernie14 a écrit :peux-tu corriger l'adresse du téléchargement: httrp !
Bye
Bernard
c'est fait ! merci bien !
Publié : 13.12.2004 - 11h05 par Marc Pergand
Salut Fabien,
Verdict:
Jaguar: blocage sur la recherche des infos ( roue qui tourne ) et plantage à l'ouverture des eléments du outlineview
Panther: plantage à l'ouverture des eléments du outlineview
Code : Tout sélectionner
Thread 10 Crashed:
0 com.apple.AppKit 0x92e568c0 -[NSOutlineView _expandItemEntry:expandChildren:startLevel:] + 0x248
1 com.apple.AppKit 0x92e56918 -[NSOutlineView _expandItemEntry:expandChildren:startLevel:] + 0x2a0
2 com.apple.AppKit 0x92e2ffd8 -[NSOutlineView numberOfRows] + 0x94
3 com.apple.AppKit 0x92e462c8 -[NSTableView _verifySelectionIsOK] + 0x44
4 com.apple.AppKit 0x92e17cd4 -[NSTableView tile] + 0x40
5 com.apple.AppKit 0x92e91120 -[NSTableView reloadData] + 0x44
6 com.apple.AppKit 0x92ed13c0 -[NSOutlineView reloadData] + 0x6c
7 libAppKitJava.B.dylib 0x8865be48 Java_com_apple_cocoa_application_NSTableView_reloadData + 0x6c
Je pense que tu autorises l'ouverture de ces infos trop tôt, car elles ne sont pas toutes dispo.
[edit]
J'avais pas vu !
pour Jaguar ?
y a plein de :
Code : Tout sélectionner
2004-12-13 10:35:56.080 SmallImage2[904] *** _NSAutoreleaseNoPool(): Object 0x46cc610 of class NSCFNumber autoreleased with no pool in place - just leaking
problème déja évoqué sur Cappuccino !
et ça aussi:
Code : Tout sélectionner
java.lang.NoSuchMethodError
at SIInfoController.getCameraInfo(SIInfoController.java:158)
at SIInfoController.getValuesForCurrentFile(SIInfoController.java:73)
at SIInfoController.setCurrentFile(SIInfoController.java:40)
at SIController.outlineViewSelectionDidChange(SIController.java:598)
Publié : 13.12.2004 - 13h28 par Fabien
Marc Pergand, le pape de Cocoa-Java sur Cuk ! Hourrah !
Bon, c'est pas brillant tout ça, apparemment.
Pour les NSAutoreleaseNoPool car j'ai réussi à m'en débarrasser sous Panther avec le truc que tu m'as donné sur Capuccino. Je vais investiguer la chose.
Le NoSuchMethodError, là je ne pige pas... Cette méthode existe j'en suis sûr (je l'ai rencontrée
![Wink :wink:](icon_wink.gif)
) !
Franchement, je ne vais pas passer trop de temps à régler les problèmes de Jaguar, car c'est difficile pour moi de tester, je vais me concentrer à ce qu'il fonctionne bien sous Panther.
Lorsque tu dis:
Panther: plantage à l'ouverture des eléments du outlineview
de quel outlineview parles-tu ? Celui de l'arborescence des fichiers ou celui des informations ?
Je pense que tu autorises l'ouverture de ces infos trop tôt, car elles ne sont pas toutes dispo.
effectivement, ça peut poser un problème. Je vais implémenter "outlineViewShouldExpandItem" et ajouter une vérification.
[edit]en fait, non. Car l'object est ajouté au dataSource uniquement une fois que l'information à été obtenue. Donc, en aucun cas on peu ouvrir l'item trop tôt...le problème est ailleur...mais où ? Je n'arrive pas à le reproduire...
Est-ce qu'il survient à chaque fois ?[/edit]
Merci beaucoup pour ces tests.
Je vais mettre une 1.0b2 tout bientôt.
Publié : 13.12.2004 - 15h02 par Marc Pergand
Hi,
de quel outlineview parles-tu ? Celui de l'arborescence des fichiers ou celui des informations ?
Du tiroir infos
Le crash log du 1er post est celui de panther, je viens de le refaire planter en cliquant sur quality ou metadata alors que la roue tourne encore... (je sais, je clique partout comme un débile
![Laughing :lol:](icon_lol.gif)
)
Publié : 13.12.2004 - 15h08 par Fabien
Pffff.....
j'ai en plus de gros problèmes de "weak references" sur les objets de la liste de ce outlineview. Je me bats contre ça depuis le début et je ne m'en sors pas...
Ils sont régulièrement "garbage collected" alors que j'en ai encore besoin, c'est très énervant.
Je commence de plus en plus à me dire que je vais virer cette outlineview et la remplacer par de bêtes NSTextField.
Publié : 13.12.2004 - 15h20 par Marc Pergand
Fabien a écrit :Pffff.....
j'ai en plus de gros problèmes de "weak references" sur les objets de la liste de ce outlineview. Je me bats contre ça depuis le début et je ne m'en sors pas...
Ils sont régulièrement "garbage collected" alors que j'en ai encore besoin, c'est très énervant.
Est-ce que tu retiens bien le data source dans une variable, d'autre part, tous les éléments affichés par le outlineview doivent faire partie d'une structure ( ex: NSDictionary) et ne doivent pas être créés à la volée.
Autre chose: tu sembles faire la recherche dans un thread, fais-tu la mise à jour du outlineview à partir de ce thread ? parce que c'est complètement forbidden
![Razz :P](icon_razz.gif)
Publié : 13.12.2004 - 16h14 par Fabien
Marc Pergand a écrit :Est-ce que tu retiens bien le data source dans une variable, d'autre part, tous les éléments affichés par le outlineview doivent faire partie d'une structure ( ex: NSDictionary) et ne doivent pas être créés à la volée.
Le datasource est le controller, c'est donc une instance de IB. C'est la manière habituelle de procéder en Cocoa-Java, il me semble.
Dans ce controller, j'ai une variable infos qui est un NSArray et je que vais utiliser commme pointeur.
Chaque fichier (donc objet de l'outlineview principal) est un NSDictionary qui contient un NSArray dans lequel je stocke les items correspondants aux informations. Lorsqu'un fichier est sélectionné, je dirige le pointeur "infos" cité plus haut vers le NSArray du NSDictionary. Si c'est la première fois que ce fichier est sélectionné, le NSArray est alors créé.
Marc Pergand a écrit :Autre chose: tu sembles faire la recherche dans un thread, fais-tu la mise à jour du outlineview à partir de ce thread ? parce que c'est complètement forbidden
![Razz :P](icon_razz.gif)
je sais
Non, en fait, à la fin de l'exécution du Thread j'utilise un NSSelector pour appeler une méthode du controller qui se chargera alors d'introduire la valeur calculée dans le NSArray et de mettre à jour l'outlineview.
Mais je ne comprend pas pourquoi il garbage collect mon NSArray qui est pourant inclu dans le NSDictionary qui représente le fichier.
Le bug est reproductible: affiche les infos d'un fichier, redimensionne la fenêtre de manière à masquer une partie des infos et agrandi-la à nouveau. Ca plante à chaque fois...
C'est assez décourageant.
![Crying or Very sad :cry:](icon_cry.gif)
Publié : 13.12.2004 - 16h33 par Marc Pergand
Non, en fait, à la fin de l'exécution du Thread j'utilise un NSSelector pour appeler une méthode du controller qui se chargera alors d'introduire la valeur calculée dans le NSArray et de mettre à jour l'outlineview.
C'est pas bon, ta méthode s'exécute dans le thread secondaire !!
C'est un problème pas facile à résoudre en cocoa-java, tu peux jeter un œil sur mon exemple
DoItOnMainThread (fichier dmg)
L'autre solution c'est d'utiliser un timer dans le controller et de scruter quand le thread secondaire à fini son travail.
Mais je ne comprend pas pourquoi il garbage collect mon NSArray qui est pourant inclu dans le NSDictionary qui représente le fichier.
Je pense qu'il y a un sac de nœud avec les NSAutoreleasePool, c'est pour ça que ton array est détruit.
Beta Test de Smallimage2
Publié : 14.12.2004 - 0h37 par JFC
Bon, ben on vous laisse causer les deux entre vous !
C'est assez étrange tout de même de suivre un dialogue certainement tout à fait cohérent, en français - quelques horribles termes mis à part -, et de n'y rien comprendre.
C'est probablement ce que nos collègues doivent ressentir quand ils nous entendent parler informatique "entre initiés".
Suffit de peu finalement pour être dépaysé !
Cela dit, mettez-y toutes vos compétences et ardeurs, nous on attend avec un vif intérêt le résultat final : un Smallimage2 parfaitement fonctionnel.
Merci d'avance !
Publié : 14.12.2004 - 16h56 par Fabien
Marc Pergand a écrit :C'est pas bon, ta méthode s'exécute dans le thread secondaire !!
C'est un problème pas facile à résoudre en cocoa-java, tu peux jeter un œil sur mon exemple
DoItOnMainThread (fichier dmg)
c'est bon j'ai corrigé mon programme.
Je pense qu'il y a un sac de nœud avec les NSAutoreleasePool, c'est pour ça que ton array est détruit.
probablement, mais que faire ???
Publié : 14.12.2004 - 19h28 par Marc Pergand
Salut Fabien,
J'ai regardé un peu ton code et y a des trucs bizarre:
Code : Tout sélectionner
public class SIInfoController extends NSObject
{
public SIInfoController()
{
arPool =NSAutoreleasePool.push();
list = new NSMutableArray();
jhead = '"' + myBundle.pathForResource("jhead", "") + '"';
exiftags = '"' + myBundle.pathForResource("exiftags", "") + '"';
}
Pourquoi un NSAutoreleasePool.push() ici ? Ce n'est pas un thread et le pop() il est où ?
Par contre dans JPEPInfos tu n'en mets pas !
Le principe d'utilisation des NSAutoreleasePool est le suivant:
Code : Tout sélectionner
public class JPEGInfos extends Thread
{
public void run()
{
NSAutoreleasePool.push();
// traitement ici
.......
NSAutoreleasePool.pop();
}
}
Mais je me pose la question de l'intêret de ces threads, que fait de particulier ton appli lors de la collecte des infos d'un fichier ?
Tous tes problèmes viennent de ces threads, je te conseillerais donc de les éliminer.
Publié : 15.12.2004 - 9h12 par Fabien
En fait, le arPool =NSAutoreleasePool.push(); que j'ai mis au début a été rapidement enlevé. Je l'avais mis en désespoir de cause car je ne comprennais pas pourquoi ça plantait.
Je ne pense pas que mes problèmes de garbage collection viennent de mes threads...mais je vais encore investiguer.
En fait, l'utilisation d'un thread est nécessaire pour contourner un bug de chez Apple. Si tu fais ceci au sein d'une application Cocoa-Java:
Code : Tout sélectionner
FileInputStream myFileStream = new FileInputStream(theJPEGFile);
JPEGImageDecoder myDecoder = JPEGCodec.createJPEGDecoder(myFileStream);
myDecoder.decodeAsBufferedImage();
toute l'interface devient inopérante. J'ai posé la question sur plusieurs forums et mailing-lists (dont java-dev) et personne n'a pu m'expliquer le problème. Depuis le JDK 1.4, en mettant ces instructions dans un Thread je parviens à contourner le problème.
C'est bien malheureux, mais bon...
[edit]je viens de faire un test. J'ai enlevé l'appel au Thread chargé d'obtenir les infos "Quality" et "Metadata". Toutes les autres infos sont obtenues dans la classe sans passer par un thread....et j'ai toujours le problème de garbage collection. C'est donc indépendant du fait que j'ai un thread.[/edit]
Publié : 15.12.2004 - 10h26 par Marc Pergand
FileInputStream myFileStream = new FileInputStream(theJPEGFile);
JPEGImageDecoder myDecoder = JPEGCodec.createJPEGDecoder(myFileStream);
myDecoder.decodeAsBufferedImage();
Oui, cette classe fait appel à awt/swing et rentre en conflit avec la gestion des évènements cocoa.
Mais une petite question, pourquoi utilises-tu JPEGCodec?
Depuis le JDK 1.4, en mettant ces instructions dans un Thread je parviens à contourner le problème.
Hum, pas sûr en fait, non ?
[edit]je viens de faire un test. J'ai enlevé l'appel au Thread chargé d'obtenir les infos "Quality" et "Metadata". Toutes les autres infos sont obtenues dans la classe sans passer par un thread....et j'ai toujours le problème de garbage collection. C'est donc indépendant du fait que j'ai un thread.[/edit]
Et vire bien tous les NSAutoreleasePool aussi ...
Publié : 15.12.2004 - 11h16 par Fabien
Victoire, ça marche !
j'ai tout repris l'implémentation du datasource depuis le début et maintenant ça marche !
Il y a encore quelques réglages fins à faire.
[quote=Marc Pergand]Mais une petite question, pourquoi utilises-tu JPEGCodec? [/quote]
en fait ce qu'il me faut surtout c'est le JPEGDecodeParam issu du decodeAsBufferedImage(). Grâce à lui je peux obtenir les tables de quantization et ainsi calculer le facteur de compression. C'est aussi lui qui me fournit les informations sur les metadonnées.
Publié : 15.12.2004 - 12h24 par Marc Pergand
As-tu mis la dernière version en ligne ?
Pourrais-tu indiquer la version b1, b2 etc
Parce que ça plante encore
![Sad :(](icon_sad.gif)
Publié : 15.12.2004 - 13h13 par Fabien
Voilà, j'ai mis à la
même adresse la version 2.0b2 (j'avais mis 1.0b1 pour la première mais c'est en fait le version 2 de SmallImage).
Chez moi elle fonctionne bien, il n'y a plus de problèmes de garbage avec les informations.
Publié : 15.12.2004 - 13h58 par Marc Pergand
Effectivement ça s'améliore
Mais j'ai toujours des erreurs NSReleasePool sous Jaguar et c'est pas normal.
Il y a un prob avec les infos exif, ça affiche "not available" pour mes photos avec un CoolPix 990. Pour d'autres images, à la première lecture elles s'affichent, mais si je désélectionne cette image et la resélectionne, ça affiche "not available"
![Shocked :shock:](icon_eek.gif)
Publié : 20.12.2004 - 13h21 par Fabien
Voilà, j'ai mis en ligne la béta 4,
toujours au même endroit.
Les préférences sont maintenant complètes, avec la possibilité de gérer les presets.
Je crois que les infos fonctionne bien à présent.
Il y a également une vérification pour empêcher d'écrire sur des fichiers déjà présents.
Je crois que je m'approche d'une version publiable. Je travaille maintenant la doc.
Publié : 22.12.2004 - 16h48 par Marc Pergand
Toujours un affichage alléatoire des infos Exif et Camera...
On peut charger plusieurs fois la même image.
J'ai fait une petite appli permettant de récupérer les infos sur une image grace à Quicktime en C :
ExifInfos.zip 70k projet pour Xcode 1.5
Si ça peut t'éviter l'utilisation du problématique JPEGCodec.createJPEGDecoder et consors ...
Publié : 23.12.2004 - 9h09 par Fabien
Rogntudju !
J'ai pas mal modifié le code d'affichage des infos et ça devrait marcher !
Je vais encore y travailler.
Merci pour le programme !
Malheureusement, ça ne m'évitera pas le problème du JPEGDecodeParam car c'est le seul qui peut me fournir les tables de Quantization.
Publié : 23.12.2004 - 12h34 par Marc Pergand
Oui, j'ai vu que tu faisais un gros calcul avec ces tables de quantification, mais dans quel but ?
Publié : 23.12.2004 - 13h08 par Fabien
simplement pour calculer le taux de compression utilisé pour créer le fichier JPEG.
Parfois cette information est stockée dans les metadonnées (Photoshop le fait, par exemple) et dans ce cas j'y récupère la valeur. Mais lorsqu'un fichier de contient pas cette information je la calcule à partir des tables que quantization.
Pour les infos qui ne se mettent pas à jour j'ai trouvé la faute ! Honte à moi
Je vais corriger ça.
En tout cas, merci pour tes tests !
Encore une quertion, peux-tu vérifier si sous Jaguar l'option "Add icon" est bien grisée ?
Publié : 23.12.2004 - 13h21 par Fabien
J'ai mis en ligne la version 2.0b5 qui devrait cette fois fonctionner au niveau des infos (je croise les doigts).
SmallImage 2.0b5
Publié : 23.12.2004 - 14h03 par jibu
je comprend rien, c tout en anglais ....
jolie interface je trouve.
Publié : 23.12.2004 - 14h08 par jibu
c koi manage preset dans les prefs?
on peut pas enlever les yeux rouge???
Les sources, sont-elle publiques?
![Embarassed :oops:](icon_redface.gif)
ben koi, je donne des idées non?
Publié : 23.12.2004 - 14h58 par Marc Pergand
Bonnes nouvelles:
- le bouton Add icon est bien grisée sous jaguar
- ya pu d'erreurs NSAutoreleasePool !!! Ouais !!!
moins bonnes nouvelles:
- les infos exif ne s'affichent pas du tout !
Quelles images utilises-tu pour tes tests ?
Tu peux en récupérer sur des sites de tests d'appareils comme:
http://www.dcresource.com/
Pour le taux de compression, j'ai fait ça dans mon appli ExifInfos:
Code : Tout sélectionner
// compression : taille en 32 bits/ imageSize
int imageSize=((Integer)dic.objectForKey(imageInfos.INFO_ImageSize)).intValue();
int width=((Integer)dic.objectForKey(imageInfos.INFO_ImageWidth)).intValue();
int height=((Integer)dic.objectForKey(imageInfos.INFO_ImageHeight)).intValue();
int maxSize=width*height*4; // taille en 32bits
infoTextView.insertText("\n Compression= 1/"+(maxSize/imageSize));
ça concorde avec les taux de compression indiqués par GraphicConverter
Publié : 03.01.2005 - 10h36 par Fabien
J'ai enfin trouvé le bug idiot qui empêchait les infos EXIF de s'afficher !
Voici le nouvelle version 2.0b6:
SmallImage 2.0b6
Pour la compression je n'ai pas retrouvé le code que tu mentionnes dans ton projet ExifInfos, as-tu fais une mise-à-jour récente ?
Publié : 05.01.2005 - 16h01 par Fabien
SmallImage 2 à présent en français !
j'ai terminé la localisation de SmallImage 2 et j'en ai profité pour corriger quelques bugs qui subsistaient çà et là.
Voici donc
SmallImage 2.0b7 qui est pratiquement totalement abouti.
Il y a même une doc !
Tout ce qu'il me manque à présent ce sont des tests dans différentes conditions,
je compte donc sur vous !
Publié : 05.01.2005 - 22h51 par jibu
- ça serait pas mal de pouvoir faire un tout déployer/rétracter pour les flèches des infos.
- pouvoir choisir d'afficher toujours un aperçu dans l'info
- donner la taille actuel et la taille prévu avec le calcul de gain
rien d'autre
![Smile :-)](icon_smile.gif)
Publié : 06.01.2005 - 9h11 par Fabien
jibu a écrit :- ça serait pas mal de pouvoir faire un tout déployer/rétracter pour les flèches des infos.
- pouvoir choisir d'afficher toujours un aperçu dans l'info
- donner la taille actuel et la taille prévu avec le calcul de gain
rien d'autre
![Smile :-)](icon_smile.gif)
- faisable
- faisable, mais lent avec les grandes images
- pas faisable. Il faudrait pour cela créer réellement l'image à chaque fois, et ce pour à chaque changement d'options, ce serait beaucoup trop lent à mon avis. Remarque c'est ce que fait un logiciel comme ImageReady, mais sur une image JPEG de plus d'un Mo c'est l'enfer.
Publié : 06.01.2005 - 13h12 par Marc Pergand
Fabien a écrit :J'ai enfin trouvé le bug idiot qui empêchait les infos EXIF de s'afficher !
Voici le nouvelle version 2.0b6:
SmallImage 2.0b6
Ca marche !
Fabien a écrit :Pour la compression je n'ai pas retrouvé le code que tu mentionnes dans ton projet ExifInfos, as-tu fais une mise-à-jour récente ?
Communique-moi ton addresse email si tu veux que je te l'envoie (je ne peux pas modifier mon site dans l'immédiat - maintenance Wanadoo
![Sad :(](icon_sad.gif)
)
- pouvoir choisir d'afficher toujours un aperçu dans l'info
Tu peux afficher l'icone du fichier ou le thumbnail Exif
- donner la taille actuel et la taille prévu avec le calcul de gain
On peut faire un calcul approximatif :
qualité 25% -> compression 1/50
qualité 50% -> compression 1/25
qualité 75% -> compression 1/12
Détails d'ordre cosmétique:
- les textured buttons n'existent pas dans jaguar
- j'utilise le mode toggle plutôt que momentary push in (compatible jaguar)
Autres:
- tu peux ajouter dans infoplist: OS Type 'JPEG', pour pouvoir charger des fichiers sans extension
- il est toujours possible de charger plusieurs fois le même fichier
Ca sera tout pour le moment
![Very Happy :D](icon_biggrin.gif)
Publié : 06.01.2005 - 13h41 par Fabien
Mon adresse email est dans la doc de SmallImage
Pour l'aperçu, c'est que vrai je pourrais afficher l'icône mais j'ai remarqué que la methode "icon" de la classe NSFileWrapper était passablement lente, je préfère donc laisser le choix à l'utilisateur de cliquer sur la loupe pour afficher l'aperçu.
Pour l'estimation de la taille c'est vrai que je pourrais faire un calcul approximatif...je vais y penser sérieusement.
Enfin, pour le "textured button" je l'ai modifié et remplacé par un "square button". Le problème du Toggle c'est que le bouton reste enfoncé (probablement à cause du runModal qui suit), je l'ai changé en un "Momentary Change".
Pour le fichier que l'on peux ajouter plusieurs fois à la liste je sais que c'est le cas, mais franchement ce n'est pas réellement handicapant...
...ceci dit ce n'est pas très difficile d'ajouter un petit test.
Publié : 06.01.2005 - 18h39 par jibu
pour le calcul de taille, je pensais à cela seulement dans le cas ou on ne modifie pas la compression, donc seulement en retirant les infos diverses.
je maintiens donc encore le tout déployer/rétracter.
Publié : 14.01.2005 - 14h57 par Fabien
Voici la nouvelle fournée de SmallImage intitulée à présent rc1 (pour release candidate 1).
Au programme:
- deux boutons pour déployer et retracter les infos à la demande de jibu
- le bouton de gestion des presets devrait être un peu plus "Jaguar Compatible"
- Une prefs pour choisir de toujours afficher l'aperçu (toujours à la demande de jibu)
- Ajout de l'OS Type JPEG (merci Marc)
Pour l'estimation de la compression je revient à ma conclusion que ce n'est pas possible. Après un échange de mails avec Marc j'en ai conclu que nous n'avions pas la même définition de "Compression". Son petit truc ne fonctionne donc pas.
Pour l'estimation du gain de taille sans recompression, tout est dans les infos.
Donc, SmallImage ne va plus vraiment bouger (il faut juste que je complète la doc pour refléter ces changements).
Le téléchargement est par là:
SmallImage 2.0rc1
(pensez à effacer vos préférences pour que ça fonctionne correctement).