cURL error 7: Failed to connect to 74.125.132.99: Unknown error 101
ericreboisson's shared items in Google Reader
Enquête sur les salaires des Geeks 2011
Il y a un an exactement, je lançais une enquête sur les salaires des geeks. Vous avez complété votre déclaration de revenu il y a quelques semaines ? Cela tombe bien, nous allons vous demander quel a été votre revenu en 2010, afin de comparer ces chiffres à 2009. Et nous vous demanderons aussi vos intentions d’ici à la fin de l’année.
N’hésitez pas à faire passer l’adresse de cette page via Twitter, à vos amis informaticiens ou travaillant dans le monde informatique. Vous pouvez me faire part de vos remarques par email ou via Twitter.
Source: ericreboisson's shared items in Google Reader | admin
Liste de freewares à connaitre, voir indispensables
**Les MUST have**
Adobe Reader; Flash Player; AIR; Shockwave Player; http://www.adobe.com/downloads/
CCLeaner; http://www.piriform.com/ccleaner/download
DirectX End-User Runtime Web Installer; http://www.microsoft.com/downloads/fr-fr/details.aspx?familyid=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&displaylang=fr
Java; http://www.java.com/en/download/index.jsp
_________________________
1) Anti-Virus/Securité;
Avast Free AV; http://www.avast.com/fr-fr/free-antivirus-download
AVG Free; http://free.avg.com/fr-fr/accueil
Avira Free; http://www.avira.com/fr/avira-free-antivirus
Comodo; http://personalfirewall.comodo.com/free-download.html
Microsoft Security Essentials; http://www.microsoft.com/fr-fr/security_essentials/default.aspx
Panda USB Vaccine; (USB anti-malware) http://www.pandasecurity.com/homeuse…ds/usbvaccine/
SpywareBlaster; http://www.javacoolsoftware.com/
Sandboxie;http://www.sandboxie.com/index.php?DownloadSandboxie
ZoneAlarm Free Firewall; http://www.zonealarm.fr/security/fr/zonealarm-pc-security-free-firewall.htm
2) Audio;
Audacity; http://audacity.sourceforge.net/
EAC-Exact Audio Copy; http://www.exactaudiocopy.de/
FreeCommander; http://www.freecommander.com/index.htm
Power Sound Editor Free; http://www.free-sound-editor.com/
Rename Master; http://www.joejoesoft.com/cms/showpage.php?cid=108
Songbird; http://getsongbird.com/product/
3) Navigateurs;
Avant Browser; http://www.avantbrowser.com/default.aspx?uil=fr
Firefox; http://www.mozilla.com/fr/firefox/
Mozbackup; http://mozbackup.jasnapaka.com/
Google Chrome; http://www.google.com/chrome/index.html?hl=fr
kylo; http://kylo.tv/
Opera; http://www.opera.com/
RockMelt (beta); http://www.rockmelt.com/
SpaceTime-3D Browser/search; http://www.spacetime.com/home.php
SRWare Iron; http://www.srware.net/fr/software_srware_iron.php
—————————
a) Lecteurs RSS *
FeedDemon; http://www.feeddemon.com/
4) CD/DVD Gravures & Outils;
bitRipper- DVD to AVI software; http://www.bitripper.com/
CDBurnerXP; http://cdburnerxp.se/
BurnAware Free; http://www.burnaware.com/burnaware_free.html
DeepBurner; http://www.deepburner.com/index.php
DVDShrink; http://www.dvdshrink.org/
Free Easy CD DVD Burner; http://www.koyotesoft.com/indexEn.html
Free ISO Burner; http://www.freeisoburner.com/
ImgBurn; http://www.imgburn.com/
Infra Recorder; http://infrarecorder.org/
Nero Kwik Media; http://www.nero.com/enu/downloads-nbl-free.php
5) Codec packs;
CCCP; http://www.cccp-project.net/wiki/ind…itle=Main_Page
K-Lite Codec pack; http://www.codecguide.com/download_kl.htm
Shark007; http://shark007.net/win7codecs.html
6) CPU, Outils de test pour Hardware & Mémoire;
CPUID; http://www.cpuid.com/
CoreTemp; http://www.alcpu.com/CoreTemp/
Disk Benchmark; http://www.attotech.com/products/pro…Disk_Benchmark
GPU-Z; http://www.techpowerup.com/gpuz/
HWiNFO/32/64 Tools (Professional System Information and Diagnostics); http://www.hwinfo.com/
IntelBurn Test; http://majorgeeks.com/IntelBurnTest_d5987.html
Memtest86; http://www.memtest.org/
Prime95; http://www.mersenne.org/
RealTemp; http://www.techpowerup.com/realtemp/
SIW – System Information for Windows; http://www.gtopala.com/
7) Récupération de données…
Recuva; http://www.piriform.com/recuva/features
Mini-Tool; http://www.powerdatarecovery.com/
EASEUS; http://www.easeus.com/product.htm
PC Inspector; http://www.pcinspector.de/default.htm?language=1
TestDisc; http://www.cgsecurity.org/wiki/TestDisk_Download
PhotoRec; http://www.cgsecurity.org/wiki/PhotoRec
Restoration; http://www.aumha.org/a/recover.php
Encryptage;
TrueCrypt; http://www.truecrypt.org/downloads
AxCrypt; http://www.axantum.com/axcrypt/
dsCrypt; http://members.ozemail.com.au/~nulif…ezip/freeware/
Pismo File Mount; http://www.pismotechnic.com/pfm/ap/
9) Extraction & Compression;
7zip; http://www.7-zip.org/
ExtractNow; http://www.extractnow.com/
HaoZip; http://www.haozip.com/Eng/index_en.htm
IZArc; http://www.izarc.org/
PeaZip; http://www.peazip.org/
Universal Extractor; http://legroom.net/software/uniextract
Winrar; http://www.win-rar.com/download.html
10) Transfert de fichiers & Partage;
eMule; http://www.emule-project.net/home/perl/general.cgi?l=1
Free Download Manager; http://www.freedownloadmanager.org/
JDownloader; http://jdownloader.org/
Live SkyDrive-(25GB Windows cloud file share); http://windows.microsoft.com/en-us/w…e-file-storage
Mipony-download manager; http://www.mipony.net/
PeerBlock; http://www.peerblock.com/
Shareaza; http://shareaza.sourceforge.net/
Tixati; (+1) http://www.tixati.com/
uTorrent; http://www.utorrent.com/
Vuze; http://www.vuze.com/
—————————
a) FTP Clients*
FileZilla; http://filezilla-project.org/
PuTTY; http://www.chiark.greenend.org.uk/~sgtatham/putty/
WinSCP; http://winscp.net/eng/docs/introduction
11) Hash tools;
WinMD5Free; http://www.winmd5.com/download/winmd5free.zip
HashTab; http://www.implbits.com/Products/HashTab.aspx
HashMyFiles; http://www.nirsoft.net/utils/hash_my_files.html
HashCheck Shell Extension; http://code.kliu.org/hashcheck/
Marxio File Checksum Verifier; http://download.cnet.com/Marxio-File…b_content;main
Microsoft File Checksum Integrity Verifier; http://www.microsoft.com/downloads/e…3-7365c1686c08
MD5summer (Windows MD5 Sum generator); http://download.cnet.com/MD5summer/3…-10050856.html
12) Maison & Bureau;
CSVed; http://csved.sjfrancke.nl/index.html
Everything Search: http://www.voidtools.com/
FileLocator Lite; http://www.mythicsoft.com/Page.aspx?…&page=download
FreeOCR; http://www.paperfile.net/
JR Directory Printer; http://www.spadixbd.com/freetools/jdirprint.htm
Microsoft Mathematics; http://www.microsoft.com/education/t…atics_4.0.aspx
NFOPad; http://thd.dyndns.org/s_nfopad.php
Q10; http://www.baara.com/q10/
SimpleOCR; http://www.simpleocr.com/
Speckie-Spell check for IE; also for IE9 http://www.speckie.com/home/
Stickies – Any Windows OS; http://www.zhornsoftware.co.uk/stickies/
Total Commander (file manager); http://www.ghisler.com/index.htm
Wunderlist (great task manager); http://www.6wunderkinder.com/wunderlist/
—————————-
a) MICROSOFT Office Alternatives*
LibreOffice; http://www.libreoffice.org/
OpenOffice.org; http://www.openoffice.org/
—————————-
b) PDF lecture/création*
Bullzip PDF Printer; http://www.bullzip.com/products/pdf/info.php#download
CutePDF; http://www.cutepdf.com/
doPDF; http://www.dopdf.com/
Foxit PDF reader; http://www.foxitsoftware.com/pdf/reader/
Nitro PDF Reader; http://www.nitroreader.com/
PDFill PDF Editor; http://www.pdfill.com/download.html
PDF Creator; http://www.pdfforge.org/
PDF-XChange; http://www.tracker-software.com/prod…xchange-viewer
Sumatra PDF; http://blog.kowalczyk.info/software/…df-reader.html
13) Image & Photo Edition;
Artweaver; http://www.artweaver.de/home-en/
GIMP; http://www.gimp.org/
IrfanView; http://www.irfanview.com/
Inkscape-vector graphics editor; http://inkscape.org/
Paint.NET; http://www.getpaint.net/download.html
PaintStar; http://sites.google.com/site/wangzhenzhou/home#new
PhotoFiltre; http://photofiltre.free.fr/frames_en.htm
PhotoWipe; (magic eraser) http://www.hanovsolutions.com/?prod=PhotoWipe
Picasa; http://picasa.google.com/#utm_campai…tm_term=picasa
XnView; http://www.xnview.com/en/features.html
————————-
a) Outils Créatifs*
AniFX- cursor creator; http://icofx.ro/anifx/index.html
GIF Viewer; http://www.gifviewer.org/
GIF Resizer; http://www.ashongsoft.com/howto-resi…animation.html
IcoFX- icon creator; http://icofx.ro/
PicPick; http://www.picpick.org/
PowerBullet Presenter; http://powerbullet.com/info.php
14) Outils pour ISO;
Alchohol 52% Free Edition; http://www.free-downloads.net/progra…utmk=233181854
Daemon Tools; http://www.daemon-tools.cc/eng/downloads
ei.cfg removal tool; http://code.kliu.org/misc/win7utils/
ImDisk (virtual disk driver); http://www.ltr-data.se/opencode.html/#ImDisk
MagicDisc; http://www.magiciso.com/tutorials/mi…c-overview.htm
Virtual CloneDrive http://www.slysoft.com/en/virtual-clonedrive.html
WinCDEmu (lightweight CD/DVD/BD emulator); http://wincdemu.sysprogs.org/
Windows 7 ISO Image Edition Switcher; http://code.kliu.org/misc/win7utils/
15) Malware detection & désinfection;
Malwarebytes; http://www.malwarebytes.org/mbam.php
Ad-Aware; http://www.lavasoft.com/products/ad_aware.php
Emsisoft Anti-Malware; http://www.emsisoft.com/en/software/antimalware/
GMER; http://www.gmer.net/
HijackThis; http://free.antivirus.com/hijackthis/
Kaspersky Online Scanner; http://www.kaspersky.com.my/virusscanner.php
RKill; http://www.bleepingcomputer.com/forums/topic308364.html
Sophos Anti-Rootkit; http://www.sophos.com/en-us/products…/download.aspx
Spybot Search and Destroy; http://www.safer-networking.org/en/download/index.html
SUPERAntiSpyware; http://www.superantispyware.com/index.html
Trend Micro HouseCall – Free Online Virus Scan; http://housecall.trendmicro.com/
16) Media Players;
AIMP; http://www.aimp.ru/
GOM Player; http://www.gomlab.com/eng/GMP_download.html
KMPlayer; http://www.kmplayer.com/korea/index.php
Media Player Classic; http://mpc-hc.sourceforge.net/
Kantaris; http://kantaris.org/
QuickTime; http://www.apple.com/quicktime/download/
UMPlayer; http://www.umplayer.com/
VLC Player; http://www.videolan.org/vlc/
WINAMP; http://www.winamp.com/
Zune; http://www.zune.net/en-us/products/s…ad/default.htm Offline installer;http://www.microsoft.com/downloads/e…displaylang=en
————————-
a) Media Centers*
Ashampoo ClipFinder HD- Online video finder/viewer; https://www.ashampoo.com/en/usd/pin/…-ClipFinder-HD
Boxee; http://www.boxee.tv/
Hulu-desktop; http://www.hulu.com/labs/hulu-desktop
MediaPortal; http://www.team-mediaportal.com/
XBMC- player and media center app.; http://xbmc.org/about/
17) Programmation;
Code::Blocks; http://www.codeblocks.org/
ConTEXT; http://www.contexteditor.org/
Crimson Editor; http://www.crimsoneditor.com/
Flashdevelop; http://osflash.org/flashdevelop
GetDiz; http://www.outertech.com/en/notepad-replacement
HxD; http://mh-nexus.de/en/downloads.php?product=HxD
jGRASP; http://www.jgrasp.org/
Notepad++; http://notepad-plus-plus.org/
Programmer’s Notepad; http://www.pnotepad.org/
SharpDevelop; http://www.icsharpcode.net/OpenSource/SD/
Win32Pad; http://winscp.net/eng/docs/introduction
18) Accès à distance;
TeamViewer; http://www.teamviewer.com/en/download/index.aspx
Join.me; https://join.me/
LogMeIn; http://help.logmein.com/SelfServiceDownloads
Mikogo; http://www.mikogo.com/product/what-is-mikogo/
19) Outils Systèmes;
Advanced SystemCare Free (all-in-one); http://www.iobit.com/advancedsystemcareper.html
CCEnhancer (advanced users-works with CCleaner-not a Piriform product);http://thewebatom.net/software/ccenhancer/
Belarc Advisor;(detailed system report) http://www.belarc.com/free_download.html
EasyBCD; http://neosmart.net/dl.php?id=1
GLARY All-In-One; http://www.glaryutilities.com/
Hiren’s BootCD; http://www.hirensbootcd.org/download/
Inno Setup (installer); http://www.jrsoftware.org/isinfo.php
Kiwi-program monitor/tweak; http://drinkprog.com/kiwi/
MGA Diagnostic tool; http://go.microsoft.com/fwlink/?linkid=52012
.NET Framework- All versions; http://www.askvg.com/what-is-microso…rsions-inside/
Process Explorer; http://technet.microsoft.com/en-us/s…rnals/bb896653
pserv (pserv.cpl replacement); http://p-nand-q.com/gtools/pserv3.html
System Nucleus-tweak and monitor; http://www.spencerberus.com/projects.aspx
TCPView; http://technet.microsoft.com/en-us/s…rnals/bb897437
TweakNow PowerPack; http://tweaknow.com/powerPack.php
TweakUI for XP;http://download.cnet.com/Tweak-UI/30…-10002117.html
Ultimate Windows Tweaker; http://www.thewindowsclub.com/ultima…ista#more-1957
Unlocker; http://www.emptyloop.com/unlocker/
Unknown Device Identifier; http://www.zhangduo.com/udi.html
WinMend Auto Shutdown; http://www.winmend.com/auto-shutdown/
————————-
a) Defragmentation*
Auslogics Defrag; http://www.auslogics.com/en/software/disk-defrag/
Defraggler; http://www.piriform.com/defraggler
MyDefrag; http://www.mydefrag.com/
O&O Defrag; http://www.oo-software.com/free/en/
Smart Defrag; http://download.cnet.com/Smart-Defra…nt;contentMain
————————-
b) Utilitaires Disques*
Active KillDisc; http://www.killdisk.com/downloadfree.htm
CrystalDiskInfo-HDD/SSD utility; http://crystalmark.info/software/Cry…o/index-e.html
DBAN; http://www.dban.org/about
HDD OEM Diagnostics Tools and Utilities; http://www.tacktech.com/display.cfm?ttid=287#conner
GParted; http://gparted.sourceforge.net/download.php
HotSwap! http://mt-naka.com/hotswap/index_enu.htm
HP USB Disk Storage Format Tool; http://download.cnet.com/HP-USB-Disk…-10974082.html
NoDrives Manager (hide windows drives); http://nodrvman.sourceforge.net/
WinToFlash- AIO USB Install Tool; http://wintoflash.com/home/en/
————————-
c) DOCKS pour Windows*
ObjectDock; http://www.stardock.com/products/objectdock/ …+1
Nexus by Winstep; http://www.winstep.net/index.asp
XWindows Dock http://xwdock.aqua-soft.org/
Ultimate Docks collection; http://www.askvg.com/ultimate-collec…s-for-windows/
————————-
d) Outils Pilotes*
Double Driver; View, backup and restore Windows drivers. http://www.boozet.org/download.htm
Driver Genius-Driver backup tool; Free to try (Drivers download disabled) http://www.driver-soft.com/
Driver Magician; http://www.drivermagician.com/Lite.htm
DriverMax; (requires free registration for full features) http://www.drivermax.com/index.htm
————————-
e) Découpe de fichiers*
FFSJ-file splitter/joiner; http://www.jaist.ac.jp/~hoangle/filesj/
Free File Splitter; http://www.filesplitter.org/
GSplit; http://www.gdgsoft.com/gsplit/index.aspx
HJsplit; http://www.hjsplit.org/
————————-
f) Gérer les mots de passe*
KeePass Password Safe; http://keepass.info/
LastPass; https://lastpass.com/
Password Safe; http://passwordsafe.sourceforge.net/
————————-
g) Shell Extensions*
Open++ (context menu); http://download.cnet.com/Open/3000-2094_4-10743609.html
Path Copy Copy; http://pathcopycopy.codeplex.com/
SKTimeStamp; http://tools.tortoisesvn.net/SKTimeStamp.html
————————-
h) Startup Managers*
Autoruns for Windows (startup manager); http://technet.microsoft.com/en-us/s…rnals/bb963902
BootVis (XP startup manager); http://www.majorgeeks.com/download.php?det=664
Mike Lin’s Startup Control Panel; http://www.mlin.net/StartupCPL.shtml
Startup Delayer; http://www.r2.com.au/page/products/show/startdelay
————————-
i) Désinstalleurs*
IObit Uninstaller; http://www.iobit.com/advanceduninstaller.html
Revo Uninstaller free version; http://www.revouninstaller.com/revo_…_download.html
————————-
j) Virtualisation*
Paragon GO Virtual; http://www.paragon-software.com/home/go-virtual/
VirtualBox; http://www.virtualbox.org/
Virtual PC/XP Mode; Windows 7 Pro & Ult. only- http://www.microsoft.com/windows/virtual-pc/
VMware software trial evaluation; https://www.vmware.com/tryvmware/?p=default
VMware Player; http://www.vmware.com/products/player/
Easy VMX-Create virtual machines for VMware Player on the Web; http://www.easyvmx.com/
20) Video Downloaders & Convertisseurs;
Any Video Converter; http://www.any-video-converter.com/p…or_video_free/
CamStudio; http://camstudio.org/
Feemake Video Downloader(40+ sites support); http://www.freemake.com/free_video_downloader/
Freemake Video Converter (200+ Input Formats); http://www.freemake.com/free_video_converter/
Hamster Free Video Converter; http://videoconverter.hamstersoft.com/en/
Handbrake; http://handbrake.fr/
iMedia Converter; http://www.iskysoft.com/imedia-converter-windows.html
MediaCoder; http://www.mediacoderhq.com/
Orbit Downloader; http://www.orbitdownloader.com/
WinX DVD Ripper; http://www.winxdvd.com/dvd-ripper/
21) Autres applications.
AAClr (auto aero colors); http://tools.tortoisesvn.net/AAClr.html
DOSBox- DOS emulator; http://www.dosbox.com/information.php?page=0
FREEOPENER (multi-file opener/player); http://www.freeopener.com/
GameSave Manager; http://gsm.duncsweb.com/
Mozilla Thunderbird-multiple email client; http://www.mozillamessaging.com/en-US/thunderbird/
Path Copy; http://download.cnet.com/Path-Copy/3…4-1487176.html
Skype; http://www.skype.com/intl/en-us/home
TeraCopy; (faster copier) http://www.codesector.com/teracopy.php
Tweaks.com Logon Changer for Windows 7; http://tweaks.com/software/tweakslogon/
World Clock; http://www.wimsprograms.com/programs.html#wclock30
UNetbootin-Linux; http://unetbootin.sourceforge.net/
22) Sauvegarde de données et disques;
Comodo Backup; http://www.comodo.com/home/data-stor…odo-backup.php
EASEUS Todo Backup Home; http://www.todo-backup.com/products/…p-software.htm
GFI Backup 2011; http://www.gfi.com/pages/backup-freeware.asp
Macrium Reflect (free version imaging only); http://www.macrium.com/reflectfree.asp
Paragon Backup and Recovery 2011; http://www.paragon-software.com/home/br-free/
Termes de recherche entrant:
- antivirus freeware (1)
- fr/software_srware_iron php (1)
- voidtools total commander (1)
- WinCDEmu ImDisk Virtual Disk Driver (1)
Je vous conseille de voir aussi:
- 50 applications gratuites
- Liste des Freewares de thewindowsclub.com
- Petite liste de logiciels gratuits
Source: ericreboisson's shared items in Google Reader | Cedric Guizelin
Macho mais tellement drôle!

Macho mais tellement drôle!
Source: ericreboisson's shared items in Google Reader | youpinadi
7 Essential Apps For Andriod Mobile Phones
When we talk about the operating systems of the Smartphone, Android comes on the top and is actually surpassing the Blackberry and iPhone. With the growing technologies, there are tons of highly advanced android applications.
Few month ago we came up with Best Free Media Player Apps for Android Phones and today we are here again with a guide of the available essential android applications. Among tons of applications, people usually prefer using the best free applications. Keep on reading to know more about such Android apps.
You may be interested in the following related articles as well
- 8 Latest Android Apps That You Need To Get Immediately
- Android Mobile Phones Start Malfunction By Trojan – Risk Highlights
- Comparison: Motorola Atrix 4G vs. iPhone 4
- 22 Coolest Photography Apps for Your Android Mobile Phone
- 21 Most Useful Android Apps For Social Networking Fans
Don’t forget to
subscribe to our RSS-feed and
follow us on Twitter for recent updates.
1. Calorie Counter Apps
This is a very new application offered in Android and is most preferred by the dieters. You just have to make an online profile and sync the app with it. In this application the user have to create an account with the current weight, goal weight and the time set to attain the goal.

A perfect dietary goal is provided by the calorie counter and the user has to enter the food items eaten every day, the application then will let you know the amount of calories earned. This will definitely help you to attain your goal weight in the set time.
2. Handcent
This application is the best for the SMS freaks, it provide the facility to set different alerts for text received from different friends. The user can now view the text message in a new bubble format.

3. Audiobooks
this is a wonderful android application for the book lovers. You just have to create an account in amblingbooks.com and sync it with the android application audiobooks. You can then access your favorite books online. To access your favorite books with your android phone you just have to download the application and enter the name of the book you want to read.

4. Soundhound
The music lovers cannot afford to miss this application, it is the best android application for you if you want to know the details of the song you are listening on the radio from your mobile phone. Just download the application and find out the details about your favorite songs. The application also allows you to save the songs, to check the details later on.

5. Words with Friends
if you are a game lover and want to play the word games online with your friends, this is the best android application for you. You can also challenge other people online for the games using this application. The best part is that you can save the ongoing game and play it afterwards according to your convenience.

6. Angry Birds
This application includes fun games that could be played individually on the android mobile phone. The players move on to the level ahead by shooting the ‘angry birds’ into the given structures.

7. Photofunia
this android application is used to capture the photos from different treatments and effects. You can upload the photos directly to different sites using this application.

You may be interested in the following related articles as well
- 8 Latest Android Apps That You Need To Get Immediately
- Android Mobile Phones Start Malfunction By Trojan – Risk Highlights
- Comparison: Motorola Atrix 4G vs. iPhone 4
- 22 Coolest Photography Apps for Your Android Mobile Phone
- 21 Most Useful Android Apps For Social Networking Fans
Source: ericreboisson's shared items in Google Reader | Arvind
Can we believe our eyes?
Several days ago, one of our customers submitted a sample (SHA1: fbe71968d4c5399c2906b56d9feadf19a35beb97, detected as TrojanDropper:Win32/Vundo.L). This trojan hijacks the hosts “vk.com” and “vkontakte.ru” (both social networking sites in Russia)and redirects them to 92.38.209.252, but achieves this in an unusual way.
A common method used to hijack a website and redirect it to a site of the attacker’s choice is to add an entry in the Windows hosts file located in the %SystemRoot%\system32\drivers\etc directory. However, when we open this file on an affected computer, it doesn’t contain any entries related to “vk.com” and “vkontakte.ru”, as you can see in the following example:
But when we show hidden files, we can see another “hosts” file. It is hidden, as in the following example:
There are two files with exactly the same name, “hosts”, in the etc directory! How can this happen?
As we know, it is not possible for a directory to contain two files with the same name. When we copy the file names to notepad, save them as a Unicode text file and open them with a hex editor we see the following (the upper is for the first “hosts” file, the lower is for the second “hosts” file):
For Unicode (UTF-16), the 0x006F is the same as 0x6F in ASCII, which is the character “o”. But what’s the 0x043E in Unicode? We can find it in Unicode chart table (Range: 0400-04FF). The following is part of this table.
We can see that Unicode 0x043E is a Cyrillic character, and it looks very much like the English character “o”.
So the hidden “hosts” file is the real hosts file in fact. When we open this file, we can see that two entries have been added to the end of the file:
Mystery solved!
This is not the first time we’ve seen a hacker using Unicode characters to mislead people. In Aug 2010, a Chinese hacker disclosed a trick with a Unicode control character used to mislead people into running an executable file. Hackers use Unicode control characters 0x202E (RLO) to reverse parts of a special file name, which changes the look of the file name in Windows Explorer.
For example, there is a file named as “picgpj.exe”, as the following:
The “gpj.exe” part of this name is specially crafted. When inserting an RLO character before “gpj.exe” in this name, the whole name appears as the following:
Hackers also usually use a picture as the file icon. Unwary people treat this file as a picture, and blindly double-click to open it, thus running the executable. Obviously, this type of trick is useless for Unicode aware programs, but it is not easy for the eyes of people to identify the problem.
Can we believe our eyes? The answer is... not always.
Zhitao Zhou
Source: ericreboisson's shared items in Google Reader | msft-mmpc
Simple server mock for REST services
When working on a mobile Android application, I was confronted with the fact that the backend server wasn’t available yet to deliver the REST service. But I needed a server or good dummy for testing the Android client against the REST services. So I began my search for a REST mock server.
I started out using the SoapUI REST functionality, but that still lacks a good implementation for my purpose of reacting on REST calls. I ended up with a 10-minute build-your-own REST mock using the Play framework. This blogs describes how this was accomplished.
The Play framework crossed my path earlier. It is a very simple yet powerful application framework for web applications. It is almost trivial to set it up for mocking REST services. First make sure you download and unpack the framework. Then execute the following commands to create a new project:
play new RestMockServer play eclipsify RestMockServer play run RestMockServer
The project is running and now ready to be worked on in eclipse (see ‘play help’ for other IDEs). Changes in code and configuration will be picked up by the framework automatically. Just point your browser to http://localhost:9000/ to see the application running.
The next step is to add the REST URLs to the routing table. Let us say I ‘m creating a system for storing photos containing meta data and the image URL. Open the file ‘conf/routes’ and add the following lines before the ‘Catch all’ entry:
PUT /photo PhotoController.create POST /photo PhotoController.update GET /photo/{id} PhotoController.read DELETE /photo/{id} PhotoController.deleteThis defines the CRUD actions on a photo object. First in line is the http method on which the framework should react. The second part is the URL with optional parameters which will be mapped onto the method indicated in the first part.
The following action is to define a controller handling the calls. The implementation uses a very simple response technique based on text. The mapping of the id to the actual response is left to the reader to implement. You could for example read a file based on the URL parameter and return the content of it. For now, we just return the identifier specified in the URL.
Save the file below as ‘PhotoController.java’ and call http://localhost:9000/photo/123 and see your favorite number showing on screen. Note that the name between curly braces should match the name of the parameter. The mapping on type will be done auto-magically by the framework.
package controllers;import java.util.Random;import com.google.gson.JsonObject;import play.mvc.Controller;public class PhotoController extends Controller { public static void read(int id) { try { response.contentType = "application/json"; renderText(id); } catch (Exception e) { notFound(e.getMessage()); } }}The next step is to implement the other methods. Since I’m using JSON as data format, I have to add a specific binder for the JsonObject type, used both by the create and update method. The ‘ok’ just returns a 200 status code. Upon creation of an object I need the identifier of the newly stored data object, so for test purposes I return a random integer.
Add the following method implementations to PhotoController.java:
public static void delete(int id) { ok(); } public static void update(JsonObject body) { ok(); } public static void create(JsonObject body) { response.contentType = "application/json"; renderText("\"id\":"+Math.abs(new Random().nextInt())); }The binder is also automatically found by the framework. I’ve created a new package ‘util’ in which I placed the following class:
package util;import java.lang.annotation.*;import java.lang.reflect.Type;import com.google.gson.*;import play.data.binding.*;@Globalpublic class GsonBinder implements TypeBinder<jsonobject> { @Override public Object bind(String name, Annotation[] a, String value, Class c, Type t) throws Exception { return new JsonParser().parse(value); }}And that is basically all to set up your mock server for REST services using the Play framework! From your favorite REST client, call the URL: http://localhost:9000/photo with a PUT request and set the entity of the request to some JSON content.
Happy development!
Source: ericreboisson's shared items in Google Reader | Michaël van Leeuwen
Cracker une Wii sans jeu ni soudure
Grâce à une nouvelle faille découverte par Giantpune, il y a peu dans le firmware de la Wii 4.3 au niveau du système de messagerie interne de la wii, il est devenu possible de cracker sa console sans jeu. C’est la team Twiizers qui a mis au point un hack plutôt simple.
En gros, pour que ça marche, l’exploit utilisant cette faille doit être signé avec un algo utilisant l’adresse MAC de la console. Si vous voulez tester, il faut d’abord vous rendre dans le menu Options Wii, puis dans paramètres, puis Internet, afin de sélectionner « Informations générales ». A partir de là, il suffit de recopier l’adresse Mac sur ce site web, en n’oubliant pas de cocher le radio bouton 4.3E si vous avez une console européenne.
Entrez le captcha, cliquez sur l’un des 2 boutons (fil bleu ou rouge, on s’en fiche), et le site vous proposera de télécharger l’exploit correctement signé. Dézippez-le, et copier le dossier « private » et le fichier boot.elf (sans les fichiers TXT) sur une carte SD (2 Go maximum comme d’hab et formatée en FAT 16 ou 32).
Mettez cette carte SD dans l’emplacement prévu à cet effet sur votre Wii, puis lorsque vous êtes sur l’écran d’accueil de la console, cliquez sur la petite enveloppe en bas à droite et revenez à hier (en appuyant sur la touche « moins »). Vous verrez alors une jolie Letter Bomb sur laquelle il faudra cliquer ! Hackmii se lancera, ce qui vous permettra d’installer la chaine homebrew ainsi que bootmii.

Si vous avez un System Menu (firmware) qui porte un n° de version < ou égal à 4.2, rabattez vous sur le hack BannerBomb.
Ensuite, si vous voulez vraiment pousser le bouchon, installez PimpMyWii (pour les mises à jour), puis WiiFlow pour faire tourner des softs depuis un disque externe.
Merci beaucoup à BlogApyka pour l’astuce.
[Source]
Source: ericreboisson's shared items in Google Reader | Korben
Twitter: vous pouvez joindre une image à un tweet depuis Twitter.com!
Vous pouvez dorénavant ajouter une image ou une photo à un tweet directement depuis Twitter.com. Twitter introduit donc la notion de pièce jointe sur son service Web. Cette nouvelle fonctionnalité s’utilise de la même façon que sur les clients Twitter.

Vous devriez apercevoir au-dessous du champ qui vous permet de saisir votre Tweet l’icône d’une caméra. Lorsque vous cliquez sur cette icône, vous pourrez joindre une image à votre tweet. Une fois téléversée, la miniature de votre photo apparaîtra au-dessous de votre message. En cas d’erreur, vous pouvez cliquer sur le X qui apparaît dans le coin supérieur droit de l’image pour la supprimer.

La taille maximale d’une image jointe à un tweet est de 3Mb. Si vous possédez un compte privé, uniquement ceux et celles qui vous suivent pourront apercevoir vos photos. D’ici quelques semaines, tous les comptes auront accès à leur galerie d’image. Twitter y ajoutera les photos provenant de son service, mais aussi celles que vous avez publiées depuis Twitpic, yfrog et instagram.
Benoit Descary
Devenez fan de Descary.com sur Facebook. Suivez-moi sur Twitter. Copyright Descary.com.
Source: ericreboisson's shared items in Google Reader | benoit@descary.com (Benoit Descary)
Little Geeks
Source: ericreboisson's shared items in Google Reader | Oliver Widder
Partager un message sur Twitter, Facebook et Google+ en un clic
Contrairement à ce que l’on pourrait penser, le « boulot » de blogueur ne s’arrête pas à la rédaction d’articles. Loin de là, même, ça ce n’est que la partie émergée de l’iceberg. Non, ce qui prend aussi du temps, c’est de tailler le bout de gras sur les différents réseaux sociaux du marché. Des outils existent pour gagner du temps, mais ils ne sont pas parfaits et ne fonctionnent pas forcément avec tous les réseaux sociaux que l’on utilise au quotidien. Surtout depuis l’arrivée de Google+ d’ailleurs. Et bien justement, les amis, Publish Sync est une extension bien pratique qui va vous permettre de partager vos messages en un clic sur Twitter, Facebook et Google+. Simple et pratique, que demander de mieux ?

Une extension qui n’est disponible que sur Google Chrome. Okay, si vous tournez sur Safari, Opera ou même Firefox, vous devez sans doute l’avoir mauvaise mais c’est comme ça, le navigateur de Google a le vent en poupe et les développeurs sont bien décidés à tirer leur épingle du jeu. Remarquez, on ne peut vraiment pas leur en vouloir, hein, et puis ça vous fera une raison de plus pour passer du côté obscur de la Force. Donc la première chose à faire est bien entendu d’aller récupérer Publish Sync sur le Chrome Web Store et de l’installer dans la foulée sur votre navigateur.
Une fois cette étape franchie, un tout nouveau bouton va venir s’installer dans la barre d’outils de votre navigateur. Un joli bouton qui ressemble à une pousse verte, genre une plante ou un mini arbre. En cliquant sur ce bouton, un menu magique va apparaître avec pas moins de quatre gros boutons. Ces derniers représentent les réseaux sociaux sur lesquels vous allez pouvoir synchroniser votre actualité. On retrouve ainsi Twitter, Facebook ou encore Google+, mais aussi un certain Plurk que certains d’entre vous connaissent peut-être. Bien évidemment, avant de pouvoir profiter des fonctions de partage de l’outil, vous allez devoir l’authentifier sur ces différents réseaux. Pour se faire, ce n’est pas bien compliqué puisqu’il suffit de cliquer sur leur nom. Cela aura pour effet d’ouvrir de nouvelles fenêtres contenant toutes les autorisations nécessaires à son bon fonctionnement, accompagnées d’un bouton pour valider l’ensemble.
Et après, qu’est ce qu’on fait ? Et bien c’est là que cela devient intéressant. Il suffit de se rendre sur son réseau social préféré pour constater l’intégration de nouvelles options de partage. Sur Twitter, par exemple, on retrouve sous le champ dédié à l’écriture d’un nouveau tweet plusieurs cases à cocher permettant d’envoyer son message sur Facebook, Google+ ou encore Plurk en même temps. Même chose évidemment sur Facebook et sur les autres. Pour Google+, ce qui est assez bien pensé, d’ailleurs, c’est qu’il suffit de positionner le curseur de la souris sur la case à cocher qui va bien pour voir apparaître d’autres cases à cocher nous permettant de sélectionner le ou les cercles qui auront le droit de lire notre magnifique prose. Vraiment pas mal.
Oui, pas mal mais pas parfait. Ce qui aurait été tout simplement génial, aussi, c’est de pouvoir passer par le bouton situé dans la barre d’outils du navigateur pour partager facilement une page sur les réseaux sociaux de notre choix. Parce que si tailler le bout de gras avec ses copains virtuels demande beaucoup de temps au blogueur, partager ses articles sur les différents médias du moment est tout aussi chronophage. Tiens, d’ailleurs, puisqu’on en parle, ce serait quand même bien que Socialize supporte Google+, non ?


Partager un message sur Twitter, Facebook et Google+ en un clic est un article de la Fredzone. Si vous l'avez aimé, n'hésitez pas et rejoignez-nous sur notre page Facebook ou sur Twitter
- Utiliser Twitter et Facebook dans Google+
Entre Twitter, Facebook et Google+, les Geeks que nous sommes ne savent plus où donner de la tête. Faut dire aussi, être présent continuellement sur c... - Transformer Google+ en Facebook, c’est possible !
Depuis hier, vous n'avez pas mangé, vous n'avez pas dormi, vous ne vous êtes pas lavés et vous passez toute votre vie sur Google+. Un peu comme des mi... - Comment profiter de la barre Google+ sur n’importe quel site
L'un des plus gros points forts de Google+, c'est d'être facilement accessible depuis n'importe quel service de la firme grâce à sa barre de notificat... - Et si Facebook et Twitter avaient des badges ?
La grande force de Foursquare, ce sont ces fameux badges que l'on peut décrocher en checkant certaines localisations. C'est trop la classe et ça te pe... - Importer ses contacts Facebook dans Google+
Les précédentes tentatives de Google pour percer sur le secteur des réseaux sociaux se sont toutes soldées par un échec et cela s'explique assez facil...
Source: ericreboisson's shared items in Google Reader | Fred
Transformez votre téléphone Android en hacking machine
C’est une application qui sera normalement bientôt disponible sur l’Android Market en version light gratuite ou en version complète pour 10 $ et ça risque de faire un carton… Car Anti (c’est son nom – Android Network Toolkit) est un véritable couteau suisse pour hackers (black hat, white hat, grey hat ou rainbow hat ;-))
Développée par zImperium, une boite de sécu Israélienne, cette application a été présentée lors de la Defcon et permet plusieurs choses :
- Recherche de cibles vulnérables (scans réseau, scan de vulns)
- Connexion simple ou attaque contre ces cibles (exploits)
- Espionnage (sniffing, écoute téléphonique via un Man in the middle…etc)
Il devient alors possible de hacker un bon vieux Windows (and co), mais aussi des téléphones Android ou iPhone disposant de vulnérabilités (donc pas mis à jour). Bref, les téléphones Android vont se transformer en véritable petite hacking-machine.

Reste à voir si Google approuvera Anti sur son market. J’ai de gros doutes, mais pourquoi pas ! En tout cas, j’ai hâte de tester ça pour voir si vraiment c’est aussi bien foutu que ça en a l’air.
Source: ericreboisson's shared items in Google Reader | Korben
Revue de Presse Xebia

La revue de presse de l’actualité Java/JEE hebdomadaire proposée par Xebia.
Actualité éditeurs / SSII
Le coin de la technique
Actualité éditeurs / SSII
A vos radars!
ThoughtWorks vient de publier une nouvelle édition de son Technology Radar et, comme à chaque publication de ce désormais célèbre baromètre technologique, l’analyse conjoncturelle qu’y proposent Rebecca Parsons et Martin Fowler est souvent avant-gardiste, quelquefois controversée, mais ne laisse jamais indifférent.
Cette nouvelle mouture se situe nettement dans la mouvance du Software Craftsmanship avec pour maîtres-mots l’automatisation, la simplicité et la qualité.
En effet, quand on plonge dans le détail de l’analyse, on s’aperçoit que la tendance côté techniques est à l’automatisation. Les cultures prônant l’automatisation totale ou quasi-totale de la chaîne de build, jusqu’à la mise en production, sont l’objet d’un gain d’intérêt considérable, passant pour certaines d’entre elles du stade de Trial (à tester) à celui d’Adopt (à adopter): citons d’une part le concept de « Continuous Delivery » — véritable fer de lance de ThoughtWorks dont nous avions déjà fait l’écho ici-même — et d’autre part la culture « DevOps », décidément de plus en plus en vogue.
Citons encore le concept de plus en plus répandu de infrastructure as code ou encore le concept novateur d’architecture évolutive (evolutionary architecture): il s’agit de promouvoir une architecture d’entreprise non pas chargée de prédire l’avenir mais constamment adaptée au besoin du moment; plutôt que de deviner comment un composant pourrait être réutilisé, il s’agit ici de prévoir son adaptabilité intrinsèque en favorisant un développement robuste, fondé sur les bonnes pratiques de code, les tests et l’intégration continue.
Côté performance et tests, ThoughtWorks estime que la problématique de la mise en cache des données et de son usage raisonné (thoughtful caching) est souvent négligée et reléguée au rang d’ajustement final, alors qu’il s’agirait d’un élément clé du succès d’une application. De même pour les tests de performance, qui gagneraient à être exécutés dès les phases initiales du projet et sur une base régulière; il n’est d’ailleurs pas nécessaire, pour cela, de faire appel à des frameworks lourds: un simple script peut suffire.
ThoughtWorks salue ensuite la maturité actuelle du développement mobile, en le faisant passer de Trial à Adopt. A l’aide d’outils comme jQuery Mobile et de Selenium (qui commence à se doter de quelques drivers pour mobiles), ainsi que des techniques comme le progressive enhancement (adaptation de l’application aux capacités du terminal mobile), il serait aujourd’hui aussi aisé de développer pour mobiles que pour des desktops. ThoughtWorks met en revanche en garde contre les kits de développement multi-plateformes qui engendreraient davantage de complexité qu’ils ne produisent de bénéfices.
En termes d’outils de développement, c’est sans doute Git et surtout GitHub qui sortent du lot, ce dernier passant d’un seul coup de Assess (à considérer) à Adopt. ThoughtWorks salue la rapidité et l’aisance de cet outil de contrôle de version, tout en récriminant contre des outils concurrents, comme ClearCase ou TFS, qui mettraient des freins à la productivité avec par exemple des contrôles de validité au moment du commit: décidément has been.
Parmi les langages de programmation, JRuby est à l’honneur: selon le radar, le couple Rails 3 + JRuby serait une « plateforme exceptionnelle » dont l’entreprise aurait tort de se priver. Clojure fait quant à lui son entrée dans le radar et se voit saluer une communauté vibrante et des librairies et outils toujours plus complets. Mais c’est HTML5 qui gagne en confiance en passant de Trial à Adopt, notamment grâce au stockage offline; selon ThoughtWorks, il s’agit d’un langage mûr malgré un standard encore sujet à évolution.
Un autre langage dont le radar vante les mérites est bien sûr JavaScript; mais ThoughtWorks met en garde contre un langage parfois trop puissant ou souvent mal maîtrisé, d’où la nécessité de le « cadrer » au travers d’outils de plus en plus répandus, comme Backbone.js (une implémentation du modèle MVC en JavaScript), ou même d’outils encore confidentiels, comme Coffeescript, un compilateur capable de compiler du « coffeescript » en javascript. (Nous nous permettons d’ailleurs d’ajouter à cette liste Require.js, un petit framework pour le chargement asynchrone de fichiers JavaScript.)
La simplicité et la facilité d’utilisation sont prônées un peu partout, notamment dans le domaine SOA, où REST et OAuth s’imposent face à SOAP et aux stacks WS-*; dans le domaine des frameworks web, où l’on voit Play! Framework prendre du galon au détriment de GWT ou des solutions de type portail, qui à force de masquer la complexité en finiraient par brider le développeur; ou encore lorsque ThoughtWorks sort le carton rouge pour les procédures stockées: trop lourdes, pas assez maintenables, elles ne seraient quasiment jamais une bonne solution.
Le cloud n’est pas oublié non plus et, d’une manière générale, le concept de PaaS (Platform as a Service) est à l’honneur: Amazon AWS passe au stade de Adopt tandis que Cloud Foundry fait son entrée dans le radar.
Enfin, la nécessité de métriques fiables et surtout consolidées et historisées de la qualité du code font enfin apparaître Sonar dans le radar: un comble!
Bref, on peut ne pas être d’accord sur tout, on peut mettre en doute l’impartialité du jugement, mais le Technology Radar reste une référence en matière d’analyse conjoncturelle et ses oracles sont de plus en plus suivis. Cette mouture ne préconise-t-elle pas d’ailleurs, assez ironiquement, que chaque entreprise conçoive son propre radar?
Le coin de la technique
Gaelyk v1.0: Google App Engine en Groovy
Guillaume Laforge, castcodeur émérite et surtout celui qui pousse le langage Groovy, nous apprend qu’il vient de sortir la version 1.0 de Gaelyk, son bébé. Démarré mi-2009, le framework se veut léger: il utilise la puissance de la syntaxe Groovy et tourne sur le cloud de Google. L’avantage, par rapport à Grails, est que Gaelyk est pensé des le départ pour tourner sur App Engine, alors que Grails y a souvent eu des problèmes. Bien sûr, on est limité à une version du Cloud, celui de Google, ce qui pose tout de même quelques limitations, mais il faut bien avouer que pour déployer rapidement une application Cloud bénéficiant de toute la puissance de Groovy (pour la syntaxe) et Java (pour les librairies), Gaelyk est très puissant.
La grosse nouveauté de cette version est sans conteste le tant attendu Query DSL qui permettra d’écrire des requêtes directement en Groovy. C’était vraiment la fonctionnalité qui était attendue depuis longtemps et permet au framework de combler le principal manque de manière à offrir une réelle uniformité.
Parmi les autres nouveautés, on notera l’ajout d’un fichier DSLD (descripteur utilisé par Eclipse pour permettre l’auto-complétion), des mises à jour des version de GAE et Groovy et quelques autres fix et ajouts, visibles sur le changelog.
A noter que Guillaume Laforge « eats his own dogfood » et cette release est l’occasion pour lui de migrer son propre blog sur Gaelyk. Il a annoncé qu’il utilisait pour cela un nouveau framework créé par ses soins pour l’occasion, Bloogaey, disponible pour tous sur Github.
Du coté de Grails, rappelons que la V2 se rapproche, nous vous avions annoncé la Milestone 1 la semaine dernière.
Source: ericreboisson's shared items in Google Reader | Xebia France
[Infographie] Le petit monde interconnecté des entreprises High-Tech
Comme on peut s’en douter, les capitaux qui servent à lancer les startups proviennent souvent des mêmes sources, à savoir les anciennes gloires d’un ère de l’informatique qui ont gagné beaucoup d’argent à certaines époques.
Ce que l’on sait probablement moins si l’on n’est pas initié, c’est que la plupart des boites qui comptent dans le microcosme High-Tech sont soit des spin-off des grandes entreprises, soit rachetées par celles-ci ou fondées par des anciens de celles-ci.
Note au lecteur : si tu as l’intention de publier cette infographie sur ton blog, n’hésite surtout pas à faire un lien vers cette page.
Sur le même thème:
- [Infographie] La course aux talents est engagée dans les entreprises High-Tech
- [Infographie] Les fondateurs d’entreprises High-tech les plus en vue du moment
- [Infographie] Les femmes prennent le pouvoir dans la sphère Tech
- [Infographie] Les prédictions technologiques qui ne se sont pas réalisées
Vous devriez me suivre sur Twitter | Commentez ce billet !
Cet article original est publié sur Websourcing.fr.
Toute reproduction, même partielle, est interdite sans l’accord explicite de son auteur sauf citation de quelques lignes accompagnées d’un lien (permalien : http://blog.websourcing.fr/infographie-petit-monde-interconnecte-entreprises-high-tech/) vers ce billet.
[Infographie] Le petit monde interconnecté des entreprises High-Tech
Source: ericreboisson's shared items in Google Reader | Lionel Roux
Enable Gmail's Great New Preview Pane in Gmail Labs [Gmail]
Source: ericreboisson's shared items in Google Reader | Adam Dachis
recrutement 2.0
Lorsque je travaillais en SSII, mon CV était comme des milliers d'autres basé sur un ronflant titre d' "Expert Java EE confirmé" et incluait tous les mots clés (Spring | Hibernate | GWT | Maven, ...) qu'on retrouve aujourd'hui même sur les CV de débutants. Je pouvais me targuer de plus de 10 ans d'expérience, et bien sur appuyer mon expertise sur la publication de mon bouquin.
Source: ericreboisson's shared items in Google Reader | nicolas deloof
Simply Explained
Source: ericreboisson's shared items in Google Reader | Oliver Widder
Graph Theory For Geeks
Source: ericreboisson's shared items in Google Reader | Oliver Widder
Announcing Git Support for Google Code Project Hosting
Source: ericreboisson's shared items in Google Reader | Stephanie Taylor
Le cru 2011 de commons-lang est arrivé (en 3.0)
Quelles sont les librairies que tout bon développeur Java a déjà utilisées au moins une fois dans ses applications ? Oui, je parle bien sûr des fameuses Apache Commons !
Véritables bibliothèques génériques/réutilisables, elles nous permettent de gagner un temps précieux sur des snippets de code de tous les jours. Mais surtout : elles nous évitent un nombre de bugs incalculables ! Terminée donc l'écriture d'un code maison bien souvent buggé pour l'escaping, la suppression de caractères spéciaux en début et fin de chaîne, la gestion d'un paramètre null que l'on peut facilement oublier ou bien encore la copie d'un fichier d'un emplacement à un autre (ouverture/fermeture des Stream, gestion du path selon l'OS...), déléguons plutôt cela aux Commons qui sont reconnues pour faire cela et surtout pour le faire bien.
Parmi les plus connues et utilisées (regardez donc dans votre classpath), on peut citer : commons-collections (non, on ne troll pas avec guava svp
), commons-configuration, commons-dbcp, commons-digester, commons-io, commons-logging, commons-validator et, le sujet de cet article, commons-lang qui est sortie le 19 juillet dernier en version 3.0. Au menu :
Introduction
lang3.*
lang3.concurrent.*
lang3.builder.*
lang3.reflect.*
lang3.mutable|tuple.*
Conclusion
Introduction
Seulement voilà, il y a un petit hic : la plupart de ces projets est à l'abandon, ou en tout cas n'a pas été mis à jour depuis plus de 3 ans (ce qui est très long dans le monde Java). On peut notamment citer collections (avril 2008), configuration (décembre 2008), logging (mars 2008) ou bien encore validator (mars 2008).
La date n'est pas un critère en soi, en effet Java 7 vient tout juste de sortir et il faut savoir que la sortie de Java 6 date déjà d'il y a presque 5 ans ! Ainsi, on pourrait se dire que les librairies ont pris tout ce qu'il y avait à prendre dans Java 6 pendant presque 3 ans de développement et ainsi, à partir de mi-2008, il n'y a pas eu de nouveau développement car plus rien à faire de nouveau dans ces librairies. Il faut donc attendre Java 7...
Sauf que, pour ceux qui les utilisent tous les jours et qui suivent leur développement, ce n'est pas du tout le cas. En effet, la plupart d'entre elles sont restées bloquées sont du code Java 1.4 et ne sont donc même pas compatibles avec les nombreuses nouveautés de Java 5.0 dont l'une des évolutions marquantes de cette distribution à savoir les Generics, d'où le grand succès de guava par rapport à commons-collections ces dernières années.
Et c'est dans ce climat que commons-lang sort en version 3.0 avec de nombreuses nouvelles méthodes (pour StringUtils, WordUtils...), qui d'ailleurs devraient vous faire rappeler leurs équivalentes dans Guava (au niveau de Strings), mais aussi avec l'intégration... des Generics ! Voyons tout cela en détail.
La liste complète des ajouts, suppressions, améliorations et bugs fixed se trouve sur cette page.
lang3.*
Le package lang3.* contient tous les utilitaires du type StringUtils, ArrayUtils, CharUtils, ObjectUtils, EnumUtils... Pour une grande majorité, notre utilisation de commons-lang se passe dans ce package.
Petit exemple d'une utilisation quotidienne : dans la plupart des classes *Utils, on trouve des méthodes du type isEmpty (isBlank...). Celles-ci gèrent à la fois l'aspect vide de l'objet, qu'on l'on soit un String, une List ou un Array, mais aussi la non-nullité i.e. object!=null. Ce qui fait qu'un code comme myStr!=null && !myStr.isEmpty() peut aussi s'écrire StringUtils.isEmpty(myStr). Certains préféreront la première expression et d'autres la deuxième, tout dépendra du besoin. Par exemple, si notre code métier autorise null comme paramètre d'entrée et que null signifie vide, alors la deuxième expression est plus adaptée.
Heureusement, commons-lang ne se limite pas qu'à ce cas ! Je ne vais quand même pas mettre un jar pour éviter les obj!=null
Petit florilège d'exemples avec des méthodes que vous connaissaient certainement déjà mais aussi avec les nouvelles qui sont plutôt sympathiques :
@Testpublic void lang3_StringUtils() {assertEquals("Web...", StringUtils.abbreviate("Web Tambouille", 6));assertEquals(2, StringUtils.countMatches("Web Tambouille", "e"));assertNull(StringUtils.trimToNull(" "));assertEquals(EMPTY, StringUtils.trimToEmpty(" "));assertFalse(StringUtils.isAllUpperCase("WEB TAMBoUILLE"));assertEquals("oaoa", StringUtils.difference("Web Tambouille", "Web Tambooaoa"));assertEquals(1, StringUtils.getLevenshteinDistance("hello", "hallo"));assertEquals(7, StringUtils.getLevenshteinDistance("elephant", "hippo"));}@Testpublic void lang3_StringEscapeUtils() {assertEquals("<webt&mbouille xml />", StringEscapeUtils.escapeXml("<webt&mbouille xml />"));assertEquals("webtambouille\\\\njava", StringEscapeUtils.escapeJava("webtambouille\\njava"));}@Testpublic void lang3_RandomStringUtils() {System.out.println(RandomStringUtils.random(3, "abcde")); // dccSystem.out.println(RandomStringUtils.randomAlphanumeric(10)); // TBPUqddYJlSystem.out.println(RandomStringUtils.randomNumeric(6)); // 722169System.out.println(RandomStringUtils.randomAlphabetic(4)); // Tyow}@Testpublic void lang3_WordUtils() {assertEquals("Web Tambouille", WordUtils.capitalize("web tambouille"));assertEquals("WT", WordUtils.initials("Web Tambouille"));assertEquals("wEB tambouille", WordUtils.swapCase("Web TAMBOUILLE"));}@Testpublic void lang3_ArrayUtils() {int[] array = new int[] {1, 2, 3, 4, 5};Assert.assertArrayEquals(array, ArrayUtils.clone(array));}A noter aussi la classe Range<T> (oui oui, les voilà nos fameux Generics) qui permet d'avoir un range d'objets de type T . Le pré requis est bien sûr, comme c'est un range donc une liste de valeur ordonnées, d'avoir un objet qui implémente Comparable ou qui fournit un Comparator. On aura alors à notre disposition plusieurs méthodes de comparaison : isBefore(t), isAfter(t), between(from, to), isNaturalOrdering(), getMaximum()...
lang3.concurrent.*
Le package lang3.concurrent.* contient plusieurs utilitaires qui enrichissent le package que les développeurs Java connaissent bien à savoir java.util.concurrent.
On y trouve une interface ConcurrentInitializer<T> qui sera l'interface pour les classes utilitaires qui gèreront l'initialisation d'objets de manière thread-safe. L'idée est donc d'accéder à un objet de manière thread-safe : si chaque thread reçoit ce ConcurrentInitializer, alors ils accèderont tous au même objet qui sera produit par ce ConcurrentInitializer. Parmi ces classes, on trouve notamment :
- AtomicInitializer<T> : elle vérifie si la variable AtomicReference existe, si oui la retourne. Sinon elle appelle la méthode initialize(). Après création de la valeur, si la variable AtomicReference est toujours null, elle est stockée dans la variable AtomicReference. Sinon, elle retourne la variable AtomicReference.
Et là vous me dîtes : pourquoi retester la variable AtomicReference puisqu'elle était déjà null... dans un contexte monothread oui, mais pas dans un contexte multithread. Comme le décrit la javadoc : si plusieurs threads arrivent en même temps, il se pourrait qu'ils appellent tous la méthode initialize() (le "revers" de cette classe). Toutefois, l'algorithme utilisé par la méthode get() garantit que le même objet sera retourné à tous les threads.
Comme tout se fait à l'aide de variables atomiques, il n'y a pas besoin de faire de la synchronisation et donc pas de deadlock possible. Comparée à la classe LazyInitializer<T> (un petit peu plus loin), l'avantage est que l'accès à la donnée est très rapide (pas de synchronized), par contre la méthode d'initialisation peut être appelée plusieurs fois. - BackgroundInitializer<T> : elle permet d'effectuer une initialisation complexe d'un objet en tâche de fond. Exemple : après avoir créé notre objet complexObject = new MyBackgroundInitializer(), on appelle la méthode complexObject.start() qui démarre un thread en parallèle dont le rôle sera d'effectuer l'initialisation. Notre code continue de s'exécuter (non bloquant) jusqu'à l'appelle à la méthode complexObject.get(), notre code est alors bloqué : si l'initialisation était terminée, l'objet est immédiatement retourné ; sinon le code attend la fin de création de l'objet qui lui sera ensuite retourné. C'est donc le même comportement que pour un Future<T>, BackgroundInitializer<T> est d'ailleurs un wrapper de Future<T> qui contient aussi un ExecutorService pour lancer la tâche en parallèle.
- LazyInitializer<T> : beaucoup de langages ont ce comportement par défaut, il parlera donc à plusieurs d'entre vous. L'idée est de retarder l'initialisation de l'objet uniquement quand celui-ci sera utilisé. Ainsi, notre mémoire est économisée puisque, selon notre code métier, peut-être que cet objet ne sera jamais instancié.
On trouve aussi la classe ConcurrentUtils qui nous offrira tout un tas de méthodes utilitaires comme constantFuture(t), createIfAbsent(ConcurrentMap, Key, ConcurrentInitializer) ou bien encore extractCauseUnchecked(ExecutionException) (qui retourne une ConcurrentRuntimeException).
Le package est très bien détaillé sur la page d'annonce, je vous conseille d'aller y faire un tour !
lang3.builder.*
Le package lang3.builder.* contient tout une panoplie de builders tous plus utiles les uns que les autres. On y trouve notamment le EqualsBuilder, le HashCodeBuilder, le ToStringBuilder ou bien encore le ReflectionToStringBuilder (qui utilise la réflexion pour calculer son toString()). Quelques exemples :
@Testpublic void lang3_builders() {Person p1 = new Person("Joshua", "BLOCH");Person p2 = new Person("Doug", "LEA");assertFalse(new EqualsBuilder().append(p1.fn, p2.fn).append(p1.ln, p2.ln).build());assertNotSame(new HashCodeBuilder().append(p1.fn).append(p1.ln).build(), new HashCodeBuilder().append(p2.fn).append(p2.ln).build());assertEquals(6, new CompareToBuilder().append(p1.fn, p2.fn).append(p1.ln, p2.ln).build().intValue());assertEquals("Person[firstname=Joshua,lastname=BLOCH]", new ToStringBuilder(p1, ToStringStyle.SHORT_PREFIX_STYLE) .append("firstname", p1.fn).append("lastname", p1.ln).build());// In Person class :// @Override// public String toString() {// return new ReflectionToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).build();// }assertEquals("Person[fn=Web,ln=TAMBOUILLE]", new Person("Web", "TAMBOUILLE").toString());}Qu'ouïe-je ? Vous allez remplacer tous vos Object.equals et vos Objects.hascode guava par les builders de lang3 ? 
lang3.reflect.*
Le package lang3.reflect.* se focalise sur tout ce qui concerne l'accès et l'invocation par réflexion. On retrouve ici 4 classes utilitaires :
- ConstructorUtils : elle permet de récupérer un objet Constructor qui représente le constructeur d'une classe, elle permet aussi d'invoquer un constructeur (invokeConstructor(...)).
- FieldUtils : tout comme pour le constructeur, cette classe permet de récupérer un objet Field, de lire sa valeur ou de la changer (read et write). Elle contient aussi des méthodes pour gérer spécifiquement le cas des champs statiques.
- MethodUtils : je pense que vous avez compris...
- TypeUtils : cette classe se concentre sur le type des objets passés en paramètres, ainsi on pourra récupérer les lower et upper bounds, savoir si l'objet en entrée isInstanceOf d'un type, si c'est un array avec isArrayType...
lang3.mutable|tuple.*
Comme vous le savez, toutes les classes Integer, Double, Long... sont des wrappers pour leur équivalent primitif et donc par principe immuables. C'est là qu'intervient le package lang3.mutable.* qui va nous permettre de créer des MutableInteger, MutableDouble et MutableLong (et bien d'autres) ! En ce qui concerne les nouvelles méthodes, on pourra utiliser (selon la classe) add(x), substract(x), increment(), decrement(), isInfinite(), isNaN()... la liste est longue !
A noter aussi, Generics obligent, la classe MutableObject<T> qui va nous permettre de définir notre propre type T. On aura alors accès à des méthodes comme getValue() ou setValue(t) qui seront typées pour retourner/prendre un type T.
Quant au dernier package de cet article, à savoir le package lang3.tuple.*, je ne peux que repenser à tout ce que je vous ai déjà présenté sur ce blog et notamment la partie sur les Tuple<A, B> de la librairie play.libs.F ! Je vous renvoie donc vers celui-ci pour l'idée générale autour de ce concept.
Sachez que 3 implémentations existent : la Pair<L, R> (avec les méthodes isLeft, getLeft, isRight, getRight, Pair.of(l,r)...), la MutablePair<L, R> (avec les méthodes setLeft(l) et setRight(r)) et l'ImmutablePair<L, R>.
Conclusion
Ceci n'est qu'un bref aperçu de tout se que contient la librairie. Elle arrive certes très tard par rapport à d'autres concurrents qui ont déjà bien avancé techniquement (Generics...) mais aussi fonctionnellement (concepts de la programmation fonctionnelle...) mais au moins elle est là !
J'espère en tout cas vous avoir donné envie de tester cette librairie car il n'y a pas que Guava et FunkyJFunctionnal dans la vie 
D'ailleurs, à quand une version Generics pour la fameuse commons-collections ? En attendant, si vous êtes intéressé (et un petit peu intrépide), vous pouvez regarder ce projet sur sourceforge qui est un portage de la libraire vers une version Java 5 adaptée aux Generics.
Articles :
- Scala en pratique : présentations + exercices disponibles en ligne
- Soirée Scala au Lorraine JUG
- Play! Framework : nouvelle librairie play.libs.F
- Java + Programmation fonctionnelle + Funky = FunkyJFunctional !
- Android 3.0 (HoneyComb) en approche !
Source: ericreboisson's shared items in Google Reader | Romain
Photo

Source: ericreboisson's shared items in Google Reader | (author unknown)









![mashable_infographic_interconnected-tech-companies mashable infographic interconnected tech companies 500x2636 [Infographie] Le petit monde interconnecté des entreprises High Tech](http://img2.websourcing.fr/files/2011/08/mashable_infographic_interconnected-tech-companies-500x2636.jpg)


