mercredi 28 décembre 2011

Activer/Désactiver la mise en veille prolongée dans Windows

Pour activer la mise en veille prolongée, procédez comme suit :
  1. Cliquez sur Démarrer, puis tapez cmd dans la zone Rechercher.
  2. Dans la liste des résultats de la recherche, cliquez avec le bouton droit sur Invite de commandes, puis cliquez sur Exécuter en tant qu'administrateur.
  3. Lorsque vous y êtes invité par le contrôle de compte d'utilisateur, cliquez sur Continuer.
  4. À l'invite de commandes, tapez powercfg.exe /hibernate on, puis appuyez sur Entrée.
  5. Tapez exit, puis appuyez sur Entrée pour fermer la fenêtre d'invite de commandes.
Pour désactiver la mise en veille prolongée, procédez comme suit :
  1. Cliquez sur Démarrer, puis tapez cmd dans la zone Rechercher.
  2. Dans la liste des résultats de la recherche, cliquez avec le bouton droit sur Invite de commandes, puis cliquez sur Exécuter en tant qu'administrateur.
  3. Lorsque vous y êtes invité par le contrôle de compte d'utilisateur, cliquez sur Continuer.
  4. À l'invite de commandes, tapez powercfg.exe /hibernate off, puis appuyez sur Entrée.
  5. Tapez exit, puis appuyez sur Entrée pour fermer la fenêtre d'invite de commandes.
Ces manipulations s'appliquent seulement sur les versions de Windows suivantes :
  • Windows Vista (Toutes les éditions)
  • Windows Server 2008 (Toutes les éditions)
  • Windows Web Server 2008
  • Windows 7 (Toutes les éditions)
Notez que pour mettre votre ordinateur en veille prolongée via ligne de commande, utilisez la commande shutdown -h.

jeudi 22 décembre 2011

Probléme de connexion à une base de données Oracle XE via SQL Navigator 6.2

Dans cet article je parlerai d'un problème courant connu dans Quest Software SQL Navigator 6.2, et de la solution pour le remédier.
Si vous installez SQL Navigator 6.2 dans une version 64 de Windows 7 (ou Windows 2008 Server 64 bits), vous aurez surement rencontré un problème de connexion à une base de données Oracle XE, vous indiquant : "Could not resolve service name", ou  "TNS : l'identificateur de connexion indiqué n'a pas pu être résolu". 
Ne vous paniquez pas, ce n'est pas un problème dans votre installation Oracle, ni un problème d'absence de tnsnames.ora . Il s'agit d'un bug connu dans la version 6.2 de SQL Navigator. Pour une raison inconnue que seuls les développeurs de cet outil peuvent connaitre, SQL Navigator a du mal à fonctionner s'il est installé dans le répertoire "Program Files (x86)". Donc, ce que je suggère est désinstaller SQL Navigator et le réinstaller dans un autre répertoire autre que "Program Files (x86)", Par exemple "C:\Quest Software". Ceci devra résoudre votre problème.
Noter également que SQL Navigator ne peut supporter que les versions 32 bits de Oracle client.

dimanche 11 septembre 2011

Récupérer le nom de la page appelante dans PHP

Parfois, lors du développement de pages Web, on est confronté à une situation où on a besoin de récupérer le nom de la page appelante. Ceci par exemple pour personnaliser le traitement selon la page qui a appelé, imaginons le cas de figure suivant :
Après saisie d'un produit, je suis redirigé à la page de détail du produit saisi. la même chose si j'effectue une recherche, je peux consulter le détail du produit recherché à partir des résultats de recherche. Dans le premier cas on souhaite mettre en place un lien dans la page de détail pour passer à la page de saisie pour introduire un nouveau produit. Dans le deuxième cas, on souhaite mettre en place un lien dans la page de détail pour retourner aux résultats de recherche.
Il s'agirait dans cas de figure
de personnaliser le lien selon la page appelante, il existe plusieurs solution pour remédier à ce problème :
Méthode - 1:  Créer bêtement deux pages distinctes de détail, une pour la saisie et une pour la recherche. une solution assez simple au début, car il suffit de copier coller la page de détail, et modifier directement l'url du lien de retour. mais les choses vont se compliquer lorsqu'on voudra modifier les données de la page de détail, la il faut veiller toujours à appliquer chaque modification dans les deux pages, ce qui peut devenir fastidieux avec le temps.
Méthode - 2: Passer à la page de détail un paramètre HTTP "source" dont préciser soit "page_saisie" ou "page_recherche" :
detail_produit.php?source=page_saisie
Selon le paramètre source, le traitement sera différent dans la page de détail :
<?php
if ($_POST['source']='page_saisie') {
?>
<a href="saisir_nouveau_produit.php">saisir un nouveau produit</a>
<?php
} else if ($_GET['source']=='page_recherche.php') {
?>
<a href="resultats_recherche.php">retour au résultats de la recherche</a>
<?php
}
?>
cette solution mieux que celle d'avant, qui réglé le problème à condition de renseigner le paramètre "source" avec la bonne valeur, et l'envoyer avec la bonne méthode d'envoi (GET ou POST).
Méthode - 3: Récupérer le nom de la page appelante depuis la requête HTTP qui fais appel à la page de détail. Il existe un header spécial dans chaque requête HTTP envoyée, ayant le nom 'HTTP_REFERER' et qui contient l'url source depuis étais crée la requête HTTP. Pour lire la valeur de ce header, il faut le récupérer à partir du tableau prédéfini $_SERVER, il regroupe tout les headers qui composent une requête HTTP.
$url_source=$_SERVER['HTTP_REFERER'];
Maintenant il reste juste d'extraire le nom de la page depuis l'url récupérer. Pour faire, il existe dans php une fonction dédiée à ce besoin, c'est la fonction url_parse. elle permet d'extraire le nom de la page à partir d'un chemin web long.
<?php
$url_source=$_SERVER['HTTP_REFERER']; 
$page_source=url_parse($url_source); 
if ($page_source=='saisie.php') { 
?> 
<a href="saisir_nouveau_produit.php">saisir un nouveau produit</a>
<?php
} else if ($page_source=='recherche.php'){
?>
<a href="resultats_recherche.php">retour au résultats de la recherche</a>
<?php
}
?>
Cette méthode est plus flexible que celle d'avant, plus besoin d'utiliser un paramètre pour indiquer la source, puisque le paramètre $_SERVER['HTTP_REFERER'] le permet déjà.

vendredi 9 septembre 2011

Différence entre les commandes java et javaw

java et javaw deux commandes offertes dans la JRE d'Oracle, deux commandes qui possèdent le même rôle "Interpréter le byte-code Java". mais elle ont une différence importante - java s'exécute via une Console Java, tandis que javaw ne le fait pas. La console est là principalement pour les programmes de texte, dont vous souhaitez voir imprimer les messages liées au déroulement du programme, les messages d'erreur et les informations de configuration et de débogage. Cependant, une console Java ralentit le programme puisqu'il est constamment à l'écoute de données pour la sortie. 

Java ou Javaw : 
  • Si votre programme est basé 100% sur du texte, utilisez java
  • Si elle est graphique mais imprime du texte en un point quelconque, utilisez java .
  • Si vous souhaiter vérifier les messages de débogage , les messages erreurs utiliser java.
  • S'il est purement graphique, et vous avez besoin d'augmenter la vitesse, utilisez javaw.
  • Si vous souhaitez une exécution en arrière plan de votre programme, utilisez javaw
Syntaxe :
  • java [ options ] classe [ argument ... ]
  • java [ options ] -jar fichier.jar [ argument ... ]
  • javaw [ options ] classe [ argument ... ]
  • javaw [ options ] -jar fichier.jar [ argument ... ]
classe être doit un fichier .class dont il ne faut pas préciser l'extension. La classe contenue dans ce fichier doit obligatoirement posséder une méthode main(). La casse du nom de la classe doit être respectée.
Ces outils sont disponibles depuis la version 1.0 du JDK.


Les MIME types des extensions les plus connus

Ce tableau affiche les MIME types les plus connus avec les extensions correspondants :

Extension MIME type
.3dm x-world/x-3dmf
.3dmf x-world/x-3dmf
.a application/octet-stream
.aab application/x-authorware-bin
.aam application/x-authorware-map
.aas application/x-authorware-seg
.abc text/vnd.abc
.acgi text/html
.afl video/animaflex
.ai application/postscript
.aif audio/aiff
.aif audio/x-aiff
.aifc audio/aiff
.aifc audio/x-aiff
.aiff audio/aiff
.aiff audio/x-aiff
.aim application/x-aim
.aip text/x-audiosoft-intra
.ani application/x-navi-animation
.aos application/x-nokia-9000-communicator-add-on-software
.aps application/mime
.arc application/octet-stream
.arj application/arj
.arj application/octet-stream
.art image/x-jg
.asf video/x-ms-asf
.asm text/x-asm
.asp text/asp
.asx application/x-mplayer2
.asx video/x-ms-asf
.asx video/x-ms-asf-plugin
.au audio/basic
.au audio/x-au
.avi application/x-troff-msvideo
.avi video/avi
.avi video/msvideo
.avi video/x-msvideo
.avs video/avs-video
.bcpio application/x-bcpio
.bin application/mac-binary
.bin application/macbinary
.bin application/octet-stream
.bin application/x-binary
.bin application/x-macbinary
.bm image/bmp
.bmp image/bmp
.bmp image/x-windows-bmp
.boo application/book
.book application/book
.boz application/x-bzip2
.bsh application/x-bsh
.bz application/x-bzip
.bz2 application/x-bzip2
.c text/plain
.c text/x-c
.c++ text/plain
.cat application/vnd.ms-pki.seccat
.cc text/plain
.cc text/x-c
.ccad application/clariscad
.cco application/x-cocoa
.cdf application/cdf
.cdf application/x-cdf
.cdf application/x-netcdf
.cer application/pkix-cert
.cer application/x-x509-ca-cert
.cha application/x-chat
.chat application/x-chat
.class application/java
.class application/java-byte-code
.class application/x-java-class
.com application/octet-stream
.com text/plain
.conf text/plain
.cpio application/x-cpio
.cpp text/x-c
.cpt application/mac-compactpro
.cpt application/x-compactpro
.cpt application/x-cpt
.crl application/pkcs-crl
.crl application/pkix-crl
.crt application/pkix-cert
.crt application/x-x509-ca-cert
.crt application/x-x509-user-cert
.csh application/x-csh
.csh text/x-script.csh
.css application/x-pointplus
.css text/css
.cxx text/plain
.dcr application/x-director
.deepv application/x-deepv
.def text/plain
.der application/x-x509-ca-cert
.dif video/x-dv
.dir application/x-director
.dl video/dl
.dl video/x-dl
.doc application/msword
.dot application/msword
.dp application/commonground
.drw application/drafting
.dump application/octet-stream
.dv video/x-dv
.dvi application/x-dvi
.dwf drawing/x-dwf (old)
.dwf model/vnd.dwf
.dwg application/acad
.dwg image/vnd.dwg
.dwg image/x-dwg
.dxf application/dxf
.dxf image/vnd.dwg
.dxf image/x-dwg
.dxr application/x-director
.el text/x-script.elisp
.elc application/x-bytecode.elisp (compiled elisp)
.elc application/x-elc
.env application/x-envoy
.eps application/postscript
.es application/x-esrehber
.etx text/x-setext
.evy application/envoy
.evy application/x-envoy
.exe application/octet-stream
.f text/plain
.f text/x-fortran
.f77 text/x-fortran
.f90 text/plain
.f90 text/x-fortran
.fdf application/vnd.fdf
.fif application/fractals
.fif image/fif
.fli video/fli
.fli video/x-fli
.flo image/florian
.flv flv-application/octet-stream
.flx text/vnd.fmi.flexstor
.fmf video/x-atomic3d-feature
.for text/plain
.for text/x-fortran
.fpx image/vnd.fpx
.fpx image/vnd.net-fpx
.frl application/freeloader
.funk audio/make
.g text/plain
.g3 image/g3fax
.gif image/gif
.gl video/gl
.gl video/x-gl
.gsd audio/x-gsm
.gsm audio/x-gsm
.gsp application/x-gsp
.gss application/x-gss
.gtar application/x-gtar
.gz application/x-compressed
.gz application/x-gzip
.gzip application/x-gzip
.gzip multipart/x-gzip
.h text/plain
.h text/x-h
.hdf application/x-hdf
.help application/x-helpfile
.hgl application/vnd.hp-hpgl
.hh text/plain
.hh text/x-h
.hlb text/x-script
.hlp application/hlp
.hlp application/x-helpfile
.hlp application/x-winhelp
.hpg application/vnd.hp-hpgl
.hpgl application/vnd.hp-hpgl
.hqx application/binhex
.hqx application/binhex4
.hqx application/mac-binhex
.hqx application/mac-binhex40
.hqx application/x-binhex40
.hqx application/x-mac-binhex40
.hta application/hta
.htc text/x-component
.htm text/html
.html text/html
.htmls text/html
.htt text/webviewhtml
.htx text/html
.ice x-conference/x-cooltalk
.ico image/x-icon
.idc text/plain
.ief image/ief
.iefs image/ief
.iges application/iges
.iges model/iges
.igs application/iges
.igs model/iges
.ima application/x-ima
.imap application/x-httpd-imap
.inf application/inf
.ins application/x-internett-signup
.ip application/x-ip2
.isu video/x-isvideo
.it audio/it
.iv application/x-inventor
.ivr i-world/i-vrml
.ivy application/x-livescreen
.jam audio/x-jam
.jav text/plain
.jav text/x-java-source
.java text/plain
.java text/x-java-source
.jcm application/x-java-commerce
.jfif image/jpeg
.jfif image/pjpeg
.jfif-tbnl image/jpeg
.jpe image/jpeg
.jpe image/pjpeg
.jpeg image/jpeg
.jpeg image/pjpeg
.jpg image/jpeg
.jpg image/pjpeg
.jps image/x-jps
.js application/x-javascript
.jut image/jutvision
.kar audio/midi
.kar music/x-karaoke
.ksh application/x-ksh
.ksh text/x-script.ksh
.la audio/nspaudio
.la audio/x-nspaudio
.lam audio/x-liveaudio
.latex application/x-latex
.lha application/lha
.lha application/octet-stream
.lha application/x-lha
.lhx application/octet-stream
.list text/plain
.lma audio/nspaudio
.lma audio/x-nspaudio
.log text/plain
.lsp application/x-lisp
.lsp text/x-script.lisp
.lst text/plain
.lsx text/x-la-asf
.ltx application/x-latex
.lzh application/octet-stream
.lzh application/x-lzh
.lzx application/lzx
.lzx application/octet-stream
.lzx application/x-lzx
.m text/plain
.m text/x-m
.m1v video/mpeg
.m2a audio/mpeg
.m2v video/mpeg
.m3u audio/x-mpequrl
.man application/x-troff-man
.map application/x-navimap
.mar text/plain
.mbd application/mbedlet
.mc$ application/x-magic-cap-package-1.0
.mcd application/mcad
.mcd application/x-mathcad
.mcf image/vasa
.mcf text/mcf
.mcp application/netmc
.me application/x-troff-me
.mht message/rfc822
.mhtml message/rfc822
.mid application/x-midi
.mid audio/midi
.mid audio/x-mid
.mid audio/x-midi
.mid music/crescendo
.mid x-music/x-midi
.midi application/x-midi
.midi audio/midi
.midi audio/x-mid
.midi audio/x-midi
.midi music/crescendo
.midi x-music/x-midi
.mif application/x-frame
.mif application/x-mif
.mime message/rfc822
.mime www/mime
.mjf audio/x-vnd.audioexplosion.mjuicemediafile
.mjpg video/x-motion-jpeg
.mm application/base64
.mm application/x-meme
.mme application/base64
.mod audio/mod
.mod audio/x-mod
.moov video/quicktime
.mov video/quicktime
.movie video/x-sgi-movie
.mp2 audio/mpeg
.mp2 audio/x-mpeg
.mp2 video/mpeg
.mp2 video/x-mpeg
.mp2 video/x-mpeq2a
.mp3 audio/mpeg3
.mp3 audio/x-mpeg-3
.mp3 video/mpeg
.mp3 video/x-mpeg
.mpa audio/mpeg
.mpa video/mpeg
.mpc application/x-project
.mpe video/mpeg
.mpeg video/mpeg
.mpg audio/mpeg
.mpg video/mpeg
.mpga audio/mpeg
.mpp application/vnd.ms-project
.mpt application/x-project
.mpv application/x-project
.mpx application/x-project
.mrc application/marc
.ms application/x-troff-ms
.mv video/x-sgi-movie
.my audio/make
.mzz application/x-vnd.audioexplosion.mzz
.nap image/naplps
.naplps image/naplps
.nc application/x-netcdf
.ncm application/vnd.nokia.configuration-message
.nif image/x-niff
.niff image/x-niff
.nix application/x-mix-transfer
.nsc application/x-conference
.nvd application/x-navidoc
.o application/octet-stream
.oda application/oda
.omc application/x-omc
.omcd application/x-omcdatamaker
.omcr application/x-omcregerator
.p text/x-pascal
.p10 application/pkcs10
.p10 application/x-pkcs10
.p12 application/pkcs-12
.p12 application/x-pkcs12
.p7a application/x-pkcs7-signature
.p7c application/pkcs7-mime
.p7c application/x-pkcs7-mime
.p7m application/pkcs7-mime
.p7m application/x-pkcs7-mime
.p7r application/x-pkcs7-certreqresp
.p7s application/pkcs7-signature
.part application/pro_eng
.pas text/pascal
.pbm image/x-portable-bitmap
.pcl application/vnd.hp-pcl
.pcl application/x-pcl
.pct image/x-pict
.pcx image/x-pcx
.pdb chemical/x-pdb
.pdf application/pdf
.pfunk audio/make
.pfunk audio/make.my.funk
.pgm image/x-portable-graymap
.pgm image/x-portable-greymap
.pic image/pict
.pict image/pict
.pkg application/x-newton-compatible-pkg
.pko application/vnd.ms-pki.pko
.pl text/plain
.pl text/x-script.perl
.plx application/x-pixclscript
.pm image/x-xpixmap
.pm text/x-script.perl-module
.pm4 application/x-pagemaker
.pm5 application/x-pagemaker
.png image/png
.pnm application/x-portable-anymap
.pnm image/x-portable-anymap
.pot application/mspowerpoint
.pot application/vnd.ms-powerpoint
.pov model/x-pov
.ppa application/vnd.ms-powerpoint
.ppm image/x-portable-pixmap
.pps application/mspowerpoint
.pps application/vnd.ms-powerpoint
.ppt application/mspowerpoint
.ppt application/powerpoint
.ppt application/vnd.ms-powerpoint
.ppt application/x-mspowerpoint
.ppz application/mspowerpoint
.pre application/x-freelance
.prt application/pro_eng
.ps application/postscript
.psd application/octet-stream
.pvu paleovu/x-pv
.pwz application/vnd.ms-powerpoint
.py text/x-script.phyton
.pyc applicaiton/x-bytecode.python
.qcp audio/vnd.qcelp
.qd3 x-world/x-3dmf
.qd3d x-world/x-3dmf
.qif image/x-quicktime
.qt video/quicktime
.qtc video/x-qtc
.qti image/x-quicktime
.qtif image/x-quicktime
.ra audio/x-pn-realaudio
.ra audio/x-pn-realaudio-plugin
.ra audio/x-realaudio
.ram audio/x-pn-realaudio
.ras application/x-cmu-raster
.ras image/cmu-raster
.ras image/x-cmu-raster
.rast image/cmu-raster
.rexx text/x-script.rexx
.rf image/vnd.rn-realflash
.rgb image/x-rgb
.rm application/vnd.rn-realmedia
.rm audio/x-pn-realaudio
.rmi audio/mid
.rmm audio/x-pn-realaudio
.rmp audio/x-pn-realaudio
.rmp audio/x-pn-realaudio-plugin
.rng application/ringing-tones
.rng application/vnd.nokia.ringing-tone
.rnx application/vnd.rn-realplayer
.roff application/x-troff
.rp image/vnd.rn-realpix
.rpm audio/x-pn-realaudio-plugin
.rt text/richtext
.rt text/vnd.rn-realtext
.rtf application/rtf
.rtf application/x-rtf
.rtf text/richtext
.rtx application/rtf
.rtx text/richtext
.rv video/vnd.rn-realvideo
.s text/x-asm
.s3m audio/s3m
.saveme application/octet-stream
.sbk application/x-tbook
.scm application/x-lotusscreencam
.scm text/x-script.guile
.scm text/x-script.scheme
.scm video/x-scm
.sdml text/plain
.sdp application/sdp
.sdp application/x-sdp
.sdr application/sounder
.sea application/sea
.sea application/x-sea
.set application/set
.sgm text/sgml
.sgm text/x-sgml
.sgml text/sgml
.sgml text/x-sgml
.sh application/x-bsh
.sh application/x-sh
.sh application/x-shar
.sh text/x-script.sh
.shar application/x-bsh
.shar application/x-shar
.shtml text/html
.shtml text/x-server-parsed-html
.sid audio/x-psid
.sit application/x-sit
.sit application/x-stuffit
.skd application/x-koan
.skm application/x-koan
.skp application/x-koan
.skt application/x-koan
.sl application/x-seelogo
.smi application/smil
.smil application/smil
.snd audio/basic
.snd audio/x-adpcm
.sol application/solids
.spc application/x-pkcs7-certificates
.spc text/x-speech
.spl application/futuresplash
.spr application/x-sprite
.sprite application/x-sprite
.src application/x-wais-source
.ssi text/x-server-parsed-html
.ssm application/streamingmedia
.sst application/vnd.ms-pki.certstore
.step application/step
.stl application/sla
.stl application/vnd.ms-pki.stl
.stl application/x-navistyle
.stp application/step
.sv4cpio application/x-sv4cpio
.sv4crc application/x-sv4crc
.svf image/vnd.dwg
.svf image/x-dwg
.svr application/x-world
.svr x-world/x-svr
.swf application/x-shockwave-flash
.t application/x-troff
.talk text/x-speech
.tar application/x-tar
.tbk application/toolbook
.tbk application/x-tbook
.tcl application/x-tcl
.tcl text/x-script.tcl
.tcsh text/x-script.tcsh
.tex application/x-tex
.texi application/x-texinfo
.texinfo application/x-texinfo
.text application/plain
.text text/plain
.tgz application/gnutar
.tgz application/x-compressed
.tif image/tiff
.tif image/x-tiff
.tiff image/tiff
.tiff image/x-tiff
.tr application/x-troff
.tsi audio/tsp-audio
.tsp application/dsptype
.tsp audio/tsplayer
.tsv text/tab-separated-values
.turbot image/florian
.txt text/plain
.uil text/x-uil
.uni text/uri-list
.unis text/uri-list
.unv application/i-deas
.uri text/uri-list
.uris text/uri-list
.ustar application/x-ustar
.ustar multipart/x-ustar
.uu application/octet-stream
.uu text/x-uuencode
.uue text/x-uuencode
.vcd application/x-cdlink
.vcs text/x-vcalendar
.vda application/vda
.vdo video/vdo
.vew application/groupwise
.viv video/vivo
.viv video/vnd.vivo
.vivo video/vivo
.vivo video/vnd.vivo
.vmd application/vocaltec-media-desc
.vmf application/vocaltec-media-file
.voc audio/voc
.voc audio/x-voc
.vos video/vosaic
.vox audio/voxware
.vqe audio/x-twinvq-plugin
.vqf audio/x-twinvq
.vql audio/x-twinvq-plugin
.vrml application/x-vrml
.vrml model/vrml
.vrml x-world/x-vrml
.vrt x-world/x-vrt
.vsd application/x-visio
.vst application/x-visio
.vsw application/x-visio
.w60 application/wordperfect6.0
.w61 application/wordperfect6.1
.w6w application/msword
.wav audio/wav
.wav audio/x-wav
.wb1 application/x-qpro
.wbmp image/vnd.wap.wbmp
.web application/vnd.xara
.wiz application/msword
.wk1 application/x-123
.wmf windows/metafile
.wml text/vnd.wap.wml
.wmlc application/vnd.wap.wmlc
.wmls text/vnd.wap.wmlscript
.wmlsc application/vnd.wap.wmlscriptc
.word application/msword
.wp application/wordperfect
.wp5 application/wordperfect
.wp5 application/wordperfect6.0
.wp6 application/wordperfect
.wpd application/wordperfect
.wpd application/x-wpwin
.wq1 application/x-lotus
.wri application/mswrite
.wri application/x-wri
.wrl application/x-world
.wrl model/vrml
.wrl x-world/x-vrml
.wrz model/vrml
.wrz x-world/x-vrml
.wsc text/scriplet
.wsrc application/x-wais-source
.wtk application/x-wintalk
.xbm image/x-xbitmap
.xbm image/x-xbm
.xbm image/xbm
.xdr video/x-amt-demorun
.xgz xgl/drawing
.xif image/vnd.xiff
.xl application/excel
.xla application/excel
.xla application/x-excel
.xla application/x-msexcel
.xlb application/excel
.xlb application/vnd.ms-excel
.xlb application/x-excel
.xlc application/excel
.xlc application/vnd.ms-excel
.xlc application/x-excel
.xld application/excel
.xld application/x-excel
.xlk application/excel
.xlk application/x-excel
.xll application/excel
.xll application/vnd.ms-excel
.xll application/x-excel
.xlm application/excel
.xlm application/vnd.ms-excel
.xlm application/x-excel
.xls application/excel
.xls application/vnd.ms-excel
.xls application/x-excel
.xls application/x-msexcel
.xlt application/excel
.xlt application/x-excel
.xlv application/excel
.xlv application/x-excel
.xlw application/excel
.xlw application/vnd.ms-excel
.xlw application/x-excel
.xlw application/x-msexcel
.xm audio/xm
.xml application/xml
.xml text/xml
.xmz xgl/movie
.xpix application/x-vnd.ls-xpix
.xpm image/x-xpixmap
.xpm image/xpm
.x-png image/png
.xsr video/x-amt-showrun
.xwd image/x-xwd
.xwd image/x-xwindowdump
.xyz chemical/x-pdb
.z application/x-compress
.z application/x-compressed
.zip application/x-compressed
.zip application/x-zip-compressed
.zip application/zip
.zip multipart/x-zip
.zoo application/octet-stream
.zsh text/x-script.zsh

Créer une servlet Java pour envoyer un fichier ou des données binaires


Il y'a deux moyens pour envoyer des fichiers ou des données binaires au client via une servlet :
  1. Via la méthode sendRedirect
  2. Envoyer les données via un OutputStream
Méthode sendRedirect
Cette méthode permet de rediriger implicitement la requête HTTP de l'utilisateur vers un fichier local ou distant.
Voila un exemple d'utilisation de sendRedirect :

import javax.servlet.*;
import javax.servlet.http.*;
/**
 * Un exemple d'une servlet de redirection.  
 */

public class RedirectServlet extends HttpServlet {

public void service(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException
    {
      String fichier = "generated_file.doc";
      //vous pouvez aussi rediriger vers un URL d'un fichier distant
      //String fichier = "http://www.monsiteweb.com/generated_file.doc"
      res.sendRedirect(fichier);
    }


Envoi des données via un OutputStream

L'autre moyen est d'envoyer les données binaire à travers un OutputStream. Sauf qu'il faut veiller à indiquer dans la réponse HTTP, la taille du fichier et son mime-type (Comme indiqué en gras dans l'exemple ci-dessous).
import java.io.IOException;
import java.io.RandomAccessFile;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

class DownloadFileServlet extends HttpServlet {
	public synchronized void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/**
		 * Indiquer le Mime-Type du fichier 
		 * pour voir la liste des Mime-Type par extension de fichier, cliquez ici.
		 */
		response.setContentType("application/pdf");
		RandomAccessFile raf = new RandomAccessFile("fichier_generated.pdf", "r");
		/**
		 * N'oubliez pas d'indiquer la longueur du fichier envoyé
		 */
		response.setContentLength((int) raf.length());
		ServletOutputStream sortie = response.getOutputStream();

		byte[] tampon = new byte[(int) raf.length()];
		while ((raf.read(tampon)) > 0) {
			sortie.write(tampon);
		}
		
		sortie.close();
	}
}

Pour voir la liste des Mime-Types par extension, cliquez ici.

mercredi 7 septembre 2011

Localiser un élement sur une page en utilisant Firebug

Dans la création d'un scénario de test Web, il arrive parfois où on a besoin d’exécuter une action sur un élément Web difficile à localiser, surtout si cet élément ne possède par un attribut d’identification comme id ou name. Dans ce cas, certains outils d'automatisation de tests Web propose de localiser l’élément à travers son chemin XPath, mais dans une structure arborescente très compliqué d'une page, il est difficile de calculer manuellement le chemin XPath d'un élément. c'est pourquoi je vais vous présenter dans cet article un moyen pour avoir ce chemin exact sans se casser la tête. la solution consiste à installer le module complémentaire Firebug, ce module très pratique destinés au développeurs Web, permet d'inspecter n'importe quel élément dans une page Web.

Firebug
  • Ajouter Firebug à Firefox à partir de ce lien. une fois bien installé, ouvrez le à partir de Outils>Développeur Web>FireBug>Ouvrir FireBug
Ouvrir FireBug

  • En cliquant sur la flèche bleu dans le coin en haut a droite de Firebug, il est possible de sélectionner un élément sur la page Web ouverte pour l'inspecter.

Inspecter un élément

  • Dans l'onglet HTML, cliquez sur le bouton comme indiqué dans l'image, un menu apparait, choisissez "Copier le chemin XPath", voila maintenant le chemin si compliqué  est copié dans votre presse papier.

Copier le chemin XPath
Utiliser XPath dans Selenuim IDE
Maintenant, pour exploiter ce chemin, je vais utiliser Selenium IDE comme exemple. Pour prendre une petite idée rapide sur cet outil, consulter l'article précédent.
Nous avons appris dans l'article précédent comment enregistrer un test avec Selenium IDE. Et on a appris que chaque commande enregistré contient un bloc essentiel qui est la cible, c'est l’élément sur lequel la commande sera effectuée. Il est possible autre que l'id ou le nom  de localiser un élément avec son chemin XPath. Pour faire, il suffit de coller le chemin copié via Firebug dans la zone de texte cible.
Modifier la cible d'une commande

Pour vérifier que le chemin est correct, cliquez sur Le bouton Rechercher, vous allez voir que l’élément trouvée par Selenium IDE est colorée en jaune, cela indique qu'il a bien trouvé l’élément sinon il enverra un message d'erreur indiquant que l’élément est introuvable.