fichier excel et Tomcat
- Skubidou
- Administrateur
- Messages : 2367
- Inscription : 19 juil. 2003 17:39
- Localisation : Lonzée (B)
- Contact :
fichier excel et Tomcat
Hello,
petite question aux spécialistes de l'open source
Au boulot, une société est occupée à nous développer une appli web sous tomcat. Cette application donne des liens vers des fichiers word et excel (des formulaires).
Pour les fichiers word, je n'ai pas de problème (IE6 me propose de l'ouvrir), mais pour les xls, IE me les ouvre en binaire dans la fenêtre IE ).
Sachant qu'il va y avoir environ 1000 utilisateurs qui vont se connecter à ce système (et que j'ai pas envie de devoir changer un param dans les 1000 PC), et que IE6 est le standard de la société (donc ça sert à rien de me dire que ça marchera peut-être avec Firefox ), et qu'on est en froid avec la société de développement (prévu pour 3 mois, il traine depuis 1 an. Donc si on peut éviter de leur dire qu'il doivent modifier la façon de gérer les liens, ça faciliterait les choses) est-ce qu'il y a moyen de modifier Tomcat (un paramètre pour dire de gérer les xls, ...) pour résoudre ce problème?
Skubidou:~
petite question aux spécialistes de l'open source
Au boulot, une société est occupée à nous développer une appli web sous tomcat. Cette application donne des liens vers des fichiers word et excel (des formulaires).
Pour les fichiers word, je n'ai pas de problème (IE6 me propose de l'ouvrir), mais pour les xls, IE me les ouvre en binaire dans la fenêtre IE ).
Sachant qu'il va y avoir environ 1000 utilisateurs qui vont se connecter à ce système (et que j'ai pas envie de devoir changer un param dans les 1000 PC), et que IE6 est le standard de la société (donc ça sert à rien de me dire que ça marchera peut-être avec Firefox ), et qu'on est en froid avec la société de développement (prévu pour 3 mois, il traine depuis 1 an. Donc si on peut éviter de leur dire qu'il doivent modifier la façon de gérer les liens, ça faciliterait les choses) est-ce qu'il y a moyen de modifier Tomcat (un paramètre pour dire de gérer les xls, ...) pour résoudre ce problème?
Skubidou:~
- Lazarus
- Administrateur
- Messages : 669
- Inscription : 23 juil. 2003 11:40
- Localisation : Tampere (Suomi)
- Contact :
glop
Salut,
Je suis presque sûr que c'est possible mais n'étant pas familier de tomcat je ne peux pas répondre vraiment dans le détail.
A mon avis ça se passe dans le fichier web.xml de l'appli (TOMCAT_APP_ROOT/conf/web.xml), où il faut jouer avec mapping mime. Ca devrait se traduire par un truc comme ça dans le fichier en question :
<mime>
<extension>xls</extension>
<mime>application/excel</mime>
</mime>
Ca me paraît la solution la plus efficace et la plus élégante. L'autre solution consisterait à envoyer un header forçant le téléchargement du fichier, mais ça me paraît moins correct.
Le header en question serait :
'Content-Disposition: attachment; filename="NOM_DU_FICHIER_ICI"'
Cette dernière solution n'est possible que dans l'hypothèse où les liens vers les fichiers xls sont générés par une function unique, dans laquelle il suffira d'ajouter le header http en question avant de transmettre le fichier en lui-même.
Voilou
Lazzy
Je suis presque sûr que c'est possible mais n'étant pas familier de tomcat je ne peux pas répondre vraiment dans le détail.
A mon avis ça se passe dans le fichier web.xml de l'appli (TOMCAT_APP_ROOT/conf/web.xml), où il faut jouer avec mapping mime. Ca devrait se traduire par un truc comme ça dans le fichier en question :
<mime>
<extension>xls</extension>
<mime>application/excel</mime>
</mime>
Ca me paraît la solution la plus efficace et la plus élégante. L'autre solution consisterait à envoyer un header forçant le téléchargement du fichier, mais ça me paraît moins correct.
Le header en question serait :
'Content-Disposition: attachment; filename="NOM_DU_FICHIER_ICI"'
Cette dernière solution n'est possible que dans l'hypothèse où les liens vers les fichiers xls sont générés par une function unique, dans laquelle il suffira d'ajouter le header http en question avant de transmettre le fichier en lui-même.
Voilou
Lazzy
- Skubidou
- Administrateur
- Messages : 2367
- Inscription : 19 juil. 2003 17:39
- Localisation : Lonzée (B)
- Contact :
Heu, je dirais qu'il est préférable (pour toi) qu'on ne fasse pas appel à ta société Le projet est foireu depuis le début, le cahier des charges (fait par mon chef qui n'y connait rien) était 'vide', et la société qui l'a accepté (pour un prix minable en espérant ainsi avoir d'autres contrat) a sous-estimé le boulot : 20 jours prévu, il en ont fait 60 sur le premier développement, par un analyste foireu (qui avait des clés bidon dans toutes les tables, viré de la boîte depuis) et un programmeur dont c'était le premier développement. On en sortait plus dans les bugs, et ils ont décidé de reprendre le truc de zéro (avec un nouvel analyste et un nouveau programmeur). On en est maintenant à nouveau à 60 jours de développement, mais c'est pas encore ça....(y a tellement de truc imbriqués que personne n'avait prévu, sauf moi mais personne m'écoute, tout le monde trouve depuis le début que c'est une 'petite application que quand il corrige un bug, ça en crée un autre ailleurs)
Faut dire aussi que c'est moi qui fait les tests, et je cherche toutes les petites bêtes
Résultat, ça fait 8 mois qu'on dit qu'il faudrait abandonner le projet, mais mon chef ne veut pas (il veut le développement pas cher et s'est rendu compte depuis que si on recommence le projet avec un vrai cahier des charges, il l'aura plus au même prix ) et la société non plus (si elle casse le projet, elle ne touchera pas le restant du, et espère toujours d'autres contrats, mais là elle peut toujours rêver...), donc on patauge à essayer de sortir un truc 'utilisable'
On en est arrivé au point où les bugs (messages d'erreur) ils les corrigent, mais les problèmes fonctionnels (possibilité de faire une demande sans uploader de formulaire alors qu'il n'y a rien d'autre dans la demande qu'un formulaire), ils lance 'demande d'évolution, change request payant'...On peut même faire des demandes de modification où on a fait aucune modification (bon, je sais bien que ça existe sur ce forum, on peut modifier son profile sans rien modifier ), mais bon chez nous, c'est une application de demande d'accès, et quand on demande une modif par exemple, ça doit passer chez le chef de service (pour approbation) et chez le gestionnaire de l'application (pour modifier), et là une modification vide, ça fait un peu con
Merci pour l'info , je regarderai demain.
Skubidou:~
Faut dire aussi que c'est moi qui fait les tests, et je cherche toutes les petites bêtes
Résultat, ça fait 8 mois qu'on dit qu'il faudrait abandonner le projet, mais mon chef ne veut pas (il veut le développement pas cher et s'est rendu compte depuis que si on recommence le projet avec un vrai cahier des charges, il l'aura plus au même prix ) et la société non plus (si elle casse le projet, elle ne touchera pas le restant du, et espère toujours d'autres contrats, mais là elle peut toujours rêver...), donc on patauge à essayer de sortir un truc 'utilisable'
On en est arrivé au point où les bugs (messages d'erreur) ils les corrigent, mais les problèmes fonctionnels (possibilité de faire une demande sans uploader de formulaire alors qu'il n'y a rien d'autre dans la demande qu'un formulaire), ils lance 'demande d'évolution, change request payant'...On peut même faire des demandes de modification où on a fait aucune modification (bon, je sais bien que ça existe sur ce forum, on peut modifier son profile sans rien modifier ), mais bon chez nous, c'est une application de demande d'accès, et quand on demande une modif par exemple, ça doit passer chez le chef de service (pour approbation) et chez le gestionnaire de l'application (pour modifier), et là une modification vide, ça fait un peu con
Merci pour l'info , je regarderai demain.
Skubidou:~
- Skubidou
- Administrateur
- Messages : 2367
- Inscription : 19 juil. 2003 17:39
- Localisation : Lonzée (B)
- Contact :
Histoire de faire migrer le topic dans le coin philo et que Phoenix retrouve ses jeux , voici la dernière trouvaille de mon chef:
Dans le projet actuel (qui contient 67 rapports de bugs, dont certains rapports contiennent plusieurs bugs associés), je me suis rendu compte par hasard que certains anciens bugs avaient refait surface. Sur ce, j'indique à mon chef qu'il va falloir (à nouveau) retester tous les bugs pour voir ceux qui sont revenus...
Sa réponse à été: "Mais non, pas besoin, ce n'est pas comme cela que l'on fait pour tester... Si par exemple tu as 65 rapports de bugs, tu en tire 5 aux hasard et tu les tests. Si tu n'as pas de bugs dans ces 5 tests, tout va bien"
Maintenant je suis sûr d'avoir compris pourquoi tous les projets qu'il lance sont foireux
Au passage, je viens de trouver un nouveau truc... Si j'encode que le gars arrive le 40/01/2007 (ben oui, on a juste droit à une zone texte, sans masque d'affichage, il test juste que c'est xx/xx/xxxx), il transforme ça en 09/02/2007 (c'est d'une logique implacable )
Skubidou:~
Dans le projet actuel (qui contient 67 rapports de bugs, dont certains rapports contiennent plusieurs bugs associés), je me suis rendu compte par hasard que certains anciens bugs avaient refait surface. Sur ce, j'indique à mon chef qu'il va falloir (à nouveau) retester tous les bugs pour voir ceux qui sont revenus...
Sa réponse à été: "Mais non, pas besoin, ce n'est pas comme cela que l'on fait pour tester... Si par exemple tu as 65 rapports de bugs, tu en tire 5 aux hasard et tu les tests. Si tu n'as pas de bugs dans ces 5 tests, tout va bien"
Maintenant je suis sûr d'avoir compris pourquoi tous les projets qu'il lance sont foireux
Au passage, je viens de trouver un nouveau truc... Si j'encode que le gars arrive le 40/01/2007 (ben oui, on a juste droit à une zone texte, sans masque d'affichage, il test juste que c'est xx/xx/xxxx), il transforme ça en 09/02/2007 (c'est d'une logique implacable )
Skubidou:~
- Skubidou
- Administrateur
- Messages : 2367
- Inscription : 19 juil. 2003 17:39
- Localisation : Lonzée (B)
- Contact :
Ben heu... Nous on est client, on a commandé le programme. Ma boîte n'est pas une boîte d'informatique, on fabrique du verre (enfin non, c'est du verre plat pour faire des carreaux, pas des bouteilles ). Donc nous on est solvable (et si je reste là, c'est parce que ce projet foireux n'est qu'un projet ponctuel, le reste du temps, je fais de l'administration réseau/serveurs, et là ça dépend très peu de mon chef, les directives venant directement de la maison mère...en interne, on ne discute pratiquement plus que du budget pour le hardware)
Eux, ben c'est une grosse boîte (Fujitsu), donc notre petit projet, ce n'est pas ce qui va les couler... ils essayent juste de limiter la casse au niveau financier.
Et si mon chef est si 'impliqué' dans le projet, c'est parce qu'on soupçonne que c'est dans ses objectifs personnels (avec prime à la fin de l'année...), donc il faut que ça se termine, le plus vite possible (c'est presque plus important que d'avoir un programme qui fonctionne... ) Il n'arrête pas de me demander si on ne peut pas déjà mettre le prog en fonctionnement, et corriger les bugs restants après.
Tiens, dernière trouvaille, pour les experts en base de données (j'en ai plus dessiné depuis tellement d'année que je suis plus sûr):
Dans les tables, on définit des sociétés.
Chaque société peut avoir plusieurs sites, donc relation 1-n
Chaque société a plusieurs services, qui contiennent plusieurs sous-services, donc relation 1-n à chaque fois.
Un utilisateur est donc rattaché à un sous-service, et un site (en remontant, par les 2 chemins, on retrouve la société)
La question piège: Si la base de donnée est bien dessinée (avec clés primaires correctes, ...), accepte-t-elle que l'on assigne un utilisateur au site de la société A, mais à un sous-service d'une société B? Parce qu'ici, c'est possible
Autre projet réalisé la semaine passée (et beaucoup plus amusant):
On a un vieux serveur NT4 (1997) avec un programme qui gère les impression d'un autre serveur de prod. Le logiciel n'est plus supporté par la société qui le vendait, donc impossibilité de le réinstaller (clé de licence impossible à ré-enregistrer, ...), le serveur se fait vieux (hardware), la solution de remplacement proposée par la maison mère n'est pas satisfaisante, et on doit supprimer les NT4 du réseau (plus de patchs)
- La solution de départ était de le placer dans un VLAN pour le protéger des attaques virales et ne laisser que les ports d'impression et de prier que le hardware tienne.
- Finalement, je me suis amusé à ghoster le NT4 sur une simple station, désactiver tous les vieux drivers (Compaq Array, ...j'ai trouvé aucun utilisataire pour les désinstaller), le nettoyer de tous les services inutiles, migrer le NT4 en Windows 2003 R2 et corriger les petits problèmes restants
Skubidou:~
Eux, ben c'est une grosse boîte (Fujitsu), donc notre petit projet, ce n'est pas ce qui va les couler... ils essayent juste de limiter la casse au niveau financier.
Et si mon chef est si 'impliqué' dans le projet, c'est parce qu'on soupçonne que c'est dans ses objectifs personnels (avec prime à la fin de l'année...), donc il faut que ça se termine, le plus vite possible (c'est presque plus important que d'avoir un programme qui fonctionne... ) Il n'arrête pas de me demander si on ne peut pas déjà mettre le prog en fonctionnement, et corriger les bugs restants après.
Tiens, dernière trouvaille, pour les experts en base de données (j'en ai plus dessiné depuis tellement d'année que je suis plus sûr):
Dans les tables, on définit des sociétés.
Chaque société peut avoir plusieurs sites, donc relation 1-n
Chaque société a plusieurs services, qui contiennent plusieurs sous-services, donc relation 1-n à chaque fois.
Un utilisateur est donc rattaché à un sous-service, et un site (en remontant, par les 2 chemins, on retrouve la société)
La question piège: Si la base de donnée est bien dessinée (avec clés primaires correctes, ...), accepte-t-elle que l'on assigne un utilisateur au site de la société A, mais à un sous-service d'une société B? Parce qu'ici, c'est possible
Autre projet réalisé la semaine passée (et beaucoup plus amusant):
On a un vieux serveur NT4 (1997) avec un programme qui gère les impression d'un autre serveur de prod. Le logiciel n'est plus supporté par la société qui le vendait, donc impossibilité de le réinstaller (clé de licence impossible à ré-enregistrer, ...), le serveur se fait vieux (hardware), la solution de remplacement proposée par la maison mère n'est pas satisfaisante, et on doit supprimer les NT4 du réseau (plus de patchs)
- La solution de départ était de le placer dans un VLAN pour le protéger des attaques virales et ne laisser que les ports d'impression et de prier que le hardware tienne.
- Finalement, je me suis amusé à ghoster le NT4 sur une simple station, désactiver tous les vieux drivers (Compaq Array, ...j'ai trouvé aucun utilisataire pour les désinstaller), le nettoyer de tous les services inutiles, migrer le NT4 en Windows 2003 R2 et corriger les petits problèmes restants
Skubidou:~
Non. C'est relié soi à l'un, soit à l'autre, suivant les besoins métiers, mais la relation avec le sous-service est plus logique, puisque plus précise. C'est ensuite la jointure sous-service/service/site qui permet de remonter au site.Skubidou a écrit : La question piège: Si la base de donnée est bien dessinée (avec clés primaires correctes, ...), accepte-t-elle que l'on assigne un utilisateur au site de la société A, mais à un sous-service d'une société B? Parce qu'ici, c'est possible :ced:
Le problème de ce qu'ils font, c'est qu'un type appartient à 2 sociétés, du coup... On peut optimiser et relier 2 fois le type, pour accélérer les requête, c'est de la dénormalisation, mais il faut être sur de ce qu'on fait, en utilisant une procédure stocké d'insertion unique ou un trigger.