sâmbătă, 21 iulie 2007

Teste gratuite de la Brainbench

Cred că oricine lucrează în domeniul IT, şi nu numai, ar trebui să ştie de testele de la Brainbench. Brainbench Inc. este o companie americană specializată în testarea online în diferite profesii. Acum testele acoperă mai mult decât domeniul IT, cel mai bine reprezentat fiind domeniul afacerilor, inclusiv management, marketing, etc.

Testele Brainbench sunt destul de scumpe cumpărate individual, la preţul de $49,95. Se poate face abonament lunar de $99, sau anual de $199. Din fericire, periodic Brainbench face promoţii. Unele teste sunt sponsorizate de terţi care au interese în a promova unele domenii prioritare, sau chiar de companie pentru a atrage clienţi.

Eu sunt un vechi utilizator de Brainbench, deşi trebuie să recunosc că până acum nu am făcut decât să "vânez" promoţiile. Din păcate certificările sunt valabile 3 ani, deci trebuie să vă retestaţi periodic pentru a avea un "transcript" puternic. Eu am luat peste 50 de certificări în 2004, care tocmai au expirat. Ce a mai rămas, se poate vedea pe transcript-ul online. Lista s-a scurtat considerabil, deci ar trebui să mă pun din nou pe treabă!

Până la sfârşitul lunii iulie sunt disponibile în mod gratuit destul de multe teste. Iată unele din cele mai interesante:

  • .Net Framework 2.0
  • ASP.NET
  • C#
  • HTML 4.0
  • Java 2 Fundamentals
  • Java 2 Platform Enterprise Edition (J2EE) 1.4
  • Programming Concepts
  • Project Management (2005)
  • RDBMS Concepts
  • Software Quality Assurance
  • Software Testing
Lista completă a testelor gratuite în acest moment poate fi consultată la Brainbench pe site.

luni, 16 iulie 2007

Incredibila jucărie: Hydrofoam

Am primit acum câteva zile de la un prieten un link către un film, cu o demonstraţie a unei jucării absolut fantastice. Denumită "hydrofoam", jucăria este de fapt un aeromodel amfibiu controlat radio cu o telecomandă.

Nu am găsit o traducere exactă a cuvântului foam din engleză în română, însă din descrierile citite este vorba de un material de tipul polistirenului expandat. Cadrul jucăriei este construit din trei feluri de asemenea polistiren, unul mai rezistent în partea din faţă şi dedesubt, pentru protecţie, şi două mai uşoare dar mai puţin rezistente în partea de deasupra. Dar mai bine urmăriţi demonstraţiile:





Trecând peste faptul că demonstraţiile cu acest hydrofoam sunt cel puţin spectaculoase, ideea controlării autonome unui asemenea aparat nu îmi dă pace. Practic, problema are mai multe aspecte. În primul rând, din punct de vedere hardware ar fi necesare:
  • o unitate centrală de control: aceasta ar putea fi un PIC sau altă formă de on-chip-computer (circuit programabil şi cu memorie internă)
  • senzori: ce tip, în ce număr şi cum trimit informaţia la UCC sunt toate probleme grele, dar nu nerezolvabile
  • controller-e: cel puţin pentru motoare şi direcţie. Acestea acum sunt controlate prin telecomanda radio, deci probabil că nu ar fi greu de schimbat să fie controlate de UCC
Apoi ar urma partea de software, care este de fapt cea mai grea. Problema de rezolvat poate fi formulată astfel: utilizând informaţiile primite de la senzori să se dea comenzi la controller-e astfel încât aparatul să se menţină în stare de funcţionare şi să îndeplinească misiunea prestabilită.

Desigur se pune problema, ce anume ne dorim să realizăm cu un asemenea aparat autonom. De cele mai multe ori, problema se pune de traversat o distanţă, pentru a ajunge la un punct de destinaţie cunoscut a priori.

O altă problemă interesantă, tot legată de software, este cum putem avea un mediu de simulare a funcţionării acestui aparat, în aşa fel încât să nu fie necesar să distrugem câteva zeci în procesul de proiectare.

Cum se citeşte un fişier Excel din Java

Recent am avut această problemă: cum aş pute să citesc date dintr-un fişier excel, într-un program Java. Există, desigur, varianta simplă prin care configurezi fişierul în ODBC şi îl accesezi ca pe o bază de date cu JDBC.

Probleme sunt însă mai multe cu această abordare:

  • e complicat - nu foarte, dar existenţa unui pas de instalare nu e placută
  • nu e portabilă - există unixodbc, dar...
  • nu îmi imaginez cum ar funcţiona pe o listă de 100 000 de fişiere (ok, îmi pot imagina, dar e urât!)
Aşa că m-am hotărât să găsesc o soluţie alternativă, care să fie uşor de folosit şi să nu necesite instalare. Am încercat proiectul JExcelApi. În ciuda felului în care arată situl lor, se pare că este un proiect activ: ultima versiune (2.6.4), pe care am încercat-o şi eu, datează din 14 mai 2007.

Trebuie să recunosc că utilizarea JXL (acronimul pentru JExcelApi) a fost mai uşoară decât mă aşteptam. Pentru a testa funcţionarea, am vrut să afişez pe consolă conţinutul primei foi dintr-un fişier de test.

Am început prin a crea un proiect nou în Eclipse, de tip Java. În interiorul acestui proiect am făcut un director lib, în care am copiat fişierul jxl.jar ce se găseşte în arhiva de la JExcelApi. După ce am adăugat acest jar la build path, am creat un fişier Main.java.

Pentru a deschide fişierul Excel al cărui nume l-am primit ca parametru, folosesc clasa Workbook:
Workbook workbook = Workbook.getWorkbook(new File(args[0]));

Foile în fişier sunt numerotate de la 0, deci în continuare obţinem prima foaie:
Sheet sheet = workbook.getSheet(0);

Clasa Sheet are două metode, getRows() şi getColumns(), care returnează dimensiunea pe orizontală şi verticală a foii. Aici trebui avut grijă, căci Excel indexează întâi pe coloană, apoi pe linie (de ex. A1, unde A e coloana şi 1 e linia). Ştiind acestea, parcurg în întregime foaia şi afişez la consolă conţinutul celulelor, luat ca şir de caractere:
for (int i = 0; i < sheet.getRows(); i++) {     
 
for (int j = 0; j < sheet.getColumns(); j++)
   
System.out.printf("%30s",
        sheet.getCell
(j, i).getContents());
  System.out.println
();
}



În final, se închide fişierul. Nu este obligatoriu în cazul nostru, dar în general se eliberează memoria mai eficient dacă se închide manual.
workbook.close();

miercuri, 11 iulie 2007

Microsoft Robotics Studio 1.5

Alaltăieri (9 iulie), echipa de dezvoltare a Microsoft Robotics Studio a anunţat disponibilitatea versiunii 1.5. Aceasta reprezintă un update a versiunii 1.0, publicată la mijlocul lunii decembrie anul trecut. Printre îmbunătăţirile aduse de noua versiune se numără suportul pentru sistemele Windows® Embedded CE 6.0 and Windows Mobile® 6.

Punctele tari de care dispune mediul de la Microsoft sunt, după spusele lor:

  • un limbaj de programare vizual ce permite nespecialiştilor să programeze roboţi
  • un mediu de execuţie uşor de folosit, orientat spre servicii, ce permite aplicaţiilor să folosească o mare varietate de platforme hardware
  • un mediu de simulare tridimensional cu suport pentru interacţiuni fizice realiste, bazat pe motorul PhysX produs de AGEIA Technologies
  • suport pentru recunoaştere de imagini şi a vorbirii
  • posibilitatea programării în C#, Visual Basic sau alte limbaje terţe
Interesant este şi faptul că Robotics Studio este folosit de către Universitatea Princeton pentru construcţia maşinii ce va participa la competiţia DARPA Grand Challenge de anul acesta (Urban Challenge).

Robotica şi platformele pentru construit roboţi converg în sfârşit. MRS este doar una dintre alternative, existând practic un număr destul de mare de platforme dedicate dezvoltării roboţilor.

Sedimentarea unor soluţii clasice la problemele comune ale roboticii este nu numai necesară, dar aş putea spune chiar indispensabilă pentru maturizarea domeniului. Pentru ca roboţii să devină parte a vieţii noastre, aşa cum calculatoarele personale au făcut-o, sunt necesare standarde de fabricare a componentelor hardware şi software, şi o industrie care să le respecte.

Miza este foarte mare, şi dacă în momentul când IBM a creat calculatorul personal aproape nimeni nu credea în viitorul acestuia, acum situaţia este alta. Un număr foarte mare de jucători se află pe piaţă, inclusiv Microsoft căutând să obţină o parte din aceasta.

duminică, 8 iulie 2007

DARPA Grand Challenge

Trebuie să recunosc faptul că rareori sunt puternic impresionat de un subiect tehnic, dar atunci când se întâmplă simt nevoia să împărtăşesc entuziasmul. Recent a fost cazul când am descoperit DARPA Grand Challenge. Aceasta este o competiţie al cărui scop este costruirea unui vehicul terestru care să fie capabil să parcurgă un drum dat fără intervenţie umană.

Până acum au fost două asemenea competiţii. La ediţia din 2004 echipa Carnegie-Mellon a ajuns cel mai departe, reuşind să parcurgă 5% din distanţa necesară. Însă în 2005, cinci maşini au reuşit să termine cursa prin deşert. Dintre acestea, maşina construită de echipa lui Sebastian Thrun, de la Stanford, a ajuns prima la linia de sosire şi a câştigat premiul de 1 milion USD.

Competiţia a treia, intitulată Urban Challenge, se va desfăşura într-un mediu urban simulat. Maşinile competitoare vor trebui să parcurgă un drum prin oraş, respectând toate regulile de circulaţie în vigoare!

Despre DARPA Grand Challenge am aflat de la Google Tech Talks, din prezentarea Winning The DARPA Grand Challenge. Sebastian Thrun prezintă felul în care el şi echipa sa formată din 20 de studenţi de la Stanford au reuşit să câştige, şi mai ales problemele pe care aceştia le-au întâmpinat. Este o demonstraţie de tehnologie, o îmbinare extraordinară dintre hardware şi software. Este interesant cum algoritmi de învăţare automată pot fi folosiţi pentru a rezolva probleme foarte grele, şi cum se va ajunge la soluţia dorită. Tot aici puteţi afla câte ceva şi despre competiţia din 2007, DARPA Urban Challenge.