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.

sâmbătă, 30 iunie 2007

(Încă un) Început

ÎNCEPÚT, începuturi, s.n.

  1. Faptul de a (se) începe; începere.
  2. Punct de plecare, moment iniţial; parte care începe sau cu care se începe ceva.
Aceasta ar fi a treia oară când încerc să ţin un blog. A patra, dacă numărăm şi pagina de adrese utile de pe situl de la facultate. Prima dată a fost linux360: Poveşti de adormit UPS-ul. Apoi, timp de mai bine de un an, o soluţie de blog pe care o administram eu, şi care, evident, acum nu mai există.

Într-o lipsă cumplită de inspiraţie, l-am denumit Jurnalul lui Alaiba. De obicei, eu într-un jurnal scriu din experienţele mele tehnico-ştiinţifico-fantastice, despre succesele şi eşecurile profesionale. Nu promit că va fi la fel şi acum, dar aşa cum lupul îşi schimbă părul, dar năravul ba, mă aştept sa fie cam acelaşi lucru.

Această înregistrare o voi ante-data cu altele trei, care se află deja pe siteul de la facultate şi care sunt, de fapt, manifestări pre-natale ale acestui jurnal.

vineri, 29 iunie 2007

O nouă viziune asupra reţelisticii

În discursul din 30 august 2006, A New Way to look at Networking, Van Jacobson oferă o perspectivă nouă asupra multor probleme rămase în mare parte nerezolvate în privinţa a ceea ce înseamnă reţelistică. Cercetător experimentat, el s-a concentrat pe probleme de reţelistică încă din 1969, fiind colaborator la multe proiecte care au avut impact major asupra domeniului aşa cum este el astăzi.

Van arată că, aşa cum în anii '70, cercetarea era concentrată pe sistemul de telefonie şi în consecinţă era extrem de greu de transmis date în acel moment, la fel acum este concentrată pe reţele TCP/IP punct-la-punct şi ignoră de fapt adevărata problemă: modelul de utilizare a Internetului astăzi nu mai este centrat pe conceptul de "discuţie", ci pe "distribuţie". Astfel, aceeaşi informaţie este trimisă într-un mod incredibil de ineficient, punctul culminant fiind serviciile audio-video online.

miercuri, 27 iunie 2007

A Lock-Free Hash Table

Advanced Topics in Programming Languages: A Lock-Free Hash Table este o prezentare susţinută de Dr. Cliff Click la Google Tech Talks în data de 28 martie 2007. Subiectul este implementarea unei structuri de date de tip hash table fără utilizarea unor mecanisme explicite de sincronizare (locks). Soluţia propusă are performanţe mai bune decât toate soluţiile existente, atât cu un singur fir de execuţie, cât şi pe un sistem cu 768 de procesoare şi peste 800 de fire de execuţie.

Pe lângă subiectul în sine, foarte interesantă este maniera de proiectare şi mai ales verificare a soluţiei. Aceasta este bazată pe automate cu un număr de stări finite, demonstrând astfel în mod concret cum pot fi acestea folosite în practică, pe un caz concret. De asemenea, este interesant faptul că autorul are în vedere şi modul în care se comportă hardware maşina pe care rulează codul. Unele noţiuni precum CAS, fencing, stripping nu sunt explicate, autorul presupunând că auditorii au o pregătire în domeniul programării concurente.

Dr. Cliff Click este arhitect şef al maşinii virtuale Java (JVM) produsă de Azul Systems. Până în 2002 a lucrat la Sun Microsystems unde a fost arhitect şi dezvoltator al HotSpot Server Compiler.

joi, 14 iunie 2007

500 de ani de trecut, 50 de viitor

În The Next Fifty Years of Science, Kevin Kelly încearcă să ofere o imagine a ştiinţei, aşa cum a evoluat în ultimii 500 de ani, şi speculează asupra schimbărilor la care ne putem aştepta în următorii 50 de ani. Este o prezentare foarte interesantă, care a fost susţinută la seminariile ştiinţifice de la Google (Google TechTalks) în data de 9 mai, 2006.