luni, 21 decembrie 2009

Servicii Web publice. Exemplu de parsare REST cu PHP şi SimpleXML (YouTube, Flickr & Twitter API)

Serviciile Web reprezintă un mod de schimb de date pe Web (pe Internet) prin protocolul HTTP. Acest schimb de date se poate face între mai calculatoare, chiar dacă au arhitecturi şi sisteme de operare diferite. Deci, serviciile Web sunt cross-platform.
Pentru a putea comunica mai uşor, se foloseşte un limbaj de tip markup (de tip plain text) precum XML sau JSON. Datele transmise cu XML sau JSON nu necesită criptare/decriptare (pot fi percepute şi de către om, nu doar maşină :) ), iar mesajul (un şir de caractere de dimensiune relativ mică) ajunge foarte repede la destinaţie.
Există mai multe tipuri de servicii Web, cele mai utilizate fiind XML-RPC, SOAP şi REST. Prin intermediul lor, o companie permite accesul utilizatorilor la baza sa de date. În dependenţă de informaţia pe care o pune la dispoziţie, compania decide dacă serviciul Web va fi privat (acces autorizat) sau public (acces tuturor utilizatorilor).
În acest articol voi descrie doar codul PHP de parsare a REST-urilor, mai multe informaţii despre fiecare serviciu Web în parte găsiţi în articolul anterior - Follow-up LEC Technology Meetings - editia a II-a .

joi, 17 decembrie 2009

Adobe AIR Boot Camp

LEC împreună cu Adobe Romania vor organiza Adobe AIR Boot Camp. Acest eveniment se va desfăşura sub forma unui mini-training de 3 ore în care veţi învăţa să folosiţi Flash Builder 4 pentru a crea proiecte AIR cu frameworkul Flex, a le compila şi depăna. Veţi face atat exemple simple de genul "Hello World", cat si exemple mai complicate care vă vor ajuta să vă familiarizaţi cu unele tehnologii din API-ul AIR (local database, encrypted storage, chromless UI, native processes etc).
Abode

Dacă veţi veni cu laptopul vostru veţi putea face toate exerciţiile practice pe durata desfăşurării cursului. Trainingul va fi tinut de Mihai Corlan de la Adobe şi Daniel Năstase de la Line Education Center.

În cadrul Adobe AIR Boot Camp va fi anunţat şi cursul pentru tehnologia Adobe Flex în cadrul Line Education Center.

Ce sunt Adobe Flex şi Adobe Air ?
Flex este un framework, care are la bază limbajul Action Script, cu ajutorul căruia putem construi aplicaţii interactive. Aceste aplicaţii pot fi puse atât într-un browser (prin Flash Player runtime) cât şi pe desktop prin Adobe Air. Mai multe detalii despre Flex, puteţi găsi în prezentarea ţinută de Mihai Corlan, Platform Evangelist Adobe, la cea de-a doua ediţie a LEC Technology Meetings.

Adobe AIR Boot Camp va fi concentrat doar pe realizarea aplicaţiilor desktop, folosind Flex.

Când şi unde se va desfăşura Adobe AIR Boot Camp ?
Evenimentul va fi pe data de 30 ianuarie 2010, între orele 12.00 si 15.00, la sediul Adobe Romania (Anchor Plaza, etaj 9, Bd. Timisoara 26Z).

Cât costă şi ce trebuie să fac pentru a mă înscrie ?
Participarea la eveniment este gratuită. Pentru a te înregistra pentru acest eveniment trebuie sa trimiti un mail pe adresa andreea.gemene[ at ]leconline.ro cu titlul "Adobe AIR Boot Camp" în care să îţi spui numele şi dacă mai vii şi cu altcineva. În cazul in care vii însoţit trebuie precizat numele celui care te va însoţi şi adresa sa de mail. Numărul de locuri va fi restricţionat la 30 de participanţi, iar rezervarea locurilor se va face în ordinea trimiterii email-urilor de înscriere.

duminică, 13 decembrie 2009

Follow-up LEC Technology Meetings - editia a II-a

LEC Technology Meetings a avut loc sâmbătă, 12 decembrie, în Salonul Mare al ceainăriei Green Tea. Am avut parte de nişte participanţi pasionaţi cu adevărat de PHP, studenţi la Universitatea Politehnica Bucureşti, Academia de Studii Economice, Universitatea Bucureşti şi tineri care lucrează în domeniul programării.

Prima prezentarea a fost a lui Dumitru Glavan, trainer LEC, care le-a povestit invitaţilor cum se poate lucra cu web services în PHP. Dumitru le-a pregătit şi un mic concurs la sfârşit: cine răspundea corect la o întrebare, primea un premiu. Sperăm că a fost o surpriză plăcută pentru câştigător. Mai jos, puteţi viziona prezentarea "Web Services - Core of Web 2.0 Social Media Communication. Chewing up Google, Yahoo and Twitter APIs with PHP":

La a doua prezentare, Mihai Corlan, platform evangelist la Adobe Systems a explicat conceptele de "RIA (Rich Internet Applications)" şi "Flex framework". Mai jos este prezentarea "Building RIA with PHP and Flex":

A urmat Tudor Barbu, trainer LEC, cu o prezentare orientată pe limbajul de programare din Vim & Zend Framework, iar în încheiere, Victor Mihaiu, responsabil cu dezvoltarea site-ului www.Joined.ro, a purtat o discuţie liberă cu cei prezenti la LTM despre cum am putea să ne folosim de social networks astfel încât să ne realizăm obiectivele. Mai jos, puteţi viziona prezentarea lui:

Pe parcursul acestui eveniment, s-au savurat din ceaiurile şi prăjiturile gustoase de la Green Tea.
Echipa LEC speră că v-aţi simţit bine şi că aţi acumulat multe cunoştinte noi, utile.

Vă aşteptăm şi la celelalte ediţii!

miercuri, 2 decembrie 2009

Launch48 Romania - acceptă provocarea şi implică-te în dezvoltarea unui business online în doar 2 zile!

Launch48 Romania

Dacă te pasionează domeniul aplicaţiilor web, internetul, business-ul online, îţi doreşti să creezi noi contacte şi să traieşti o experienţă inedită, contra cronometru, atunci vino la Launch48 Romania!

Când şi unde?
Launch48, cel mai interesant şi antrenant eveniment dedicat antreprenorilor existenţi sau viitori din mediul online londonez va avea loc în premiera în România, în perioada 7-9 decembrie, în cadrul celei de-a treia ediţii NetCamp, un eveniment marca Evensys, organizat în parteneriat cu Microsoft, Nokia, Kaspersky şi BCR.

Cum funcţionează Launch48?
Participanţi din domenii variate de activitate şi cu nivele diferite de experienţă în industria online se reunesc în echipe de lucru pentru a concepe, planifica, dezvolta şi lansa împreună una sau mai multe aplicaţii online, în doar 2 zile de activitate, plecând de la o serie de idei propuse şi alese prin vot democratic. Echipele formate sunt consiliate pe parcursul celor 48 de ore de mentori şi un board, format din specialişti cu experienţă în domeniu.

Cum poţi participa?
Launch48 Romania va oferi tuturor celor implicaţi o experienţă inedită şi o excelentă ocazie pentru a aprofunda domeniul antreprenoriatului online. Dacă îţi doreşti să te implici în proiect, te poţi înscrie aici. Grăbeşte-te, mai ai la dispoziţie doar 3 zile!

De ce merită să te implici?
Launch48 Romania îţi va oferi oportunitatea unică de a te perfecţiona în domeniul tău, de a învăţa prin implicarea efectiva în dezvoltarea unei idei, de a colabora cu o serie de cunoscuţi profesionişti locali şi de a-ţi testa propriile abilităţi şi limite, lucrând sub presiunea celor 48 de ore pentru atingerea unui obiectiv concret.

Cum se va desfăşura?
Vor exista patru etape în desfăşurarea Launch48 Romania: trimiterea ideilor de proiecte, selecţia ideilor şi formarea echipelor, dezvoltarea proiectelor şi prezentarea lor în cadrul evenimentului
NetCamp, pe data de 9 decembrie. Detalii complete poţi regăsi la http://www.netcamp.ro/2009/launch48.php.

Ai o întrebare?
Intră atunci în comunitatea
Launch48 Network Romania, o pagina de forum realizată cu sprijinul HotNews - http://forum.hotnews.ro/index.php?showtopic=5626. Vei găsi locul ideal pentru a face schimb de impresii, cunoaşte noi oameni şi testa idei în premieră.

LEC Technology Meetings - update ediţia 2

LEC Technology Meetings se va desfăşura sâmbătă, 12 decembrie, în ceainăria Green Tea, începând cu ora 12:10.
logo

Pentru această ediţie, tema principală va fi
tehnologia PHP, iar programul prezentărilor este următorul:

Web Services - Core of Web 2.0 Social Media Communication. Chewing up Google, Yahoo and Twitter APIs with PHP
Speaker: Dumitru Glavan, Trainer LEC
Past and Future - Vim & Zend Framework
Speaker: Tudor Barbu, Trainer LEC

Building RIA with PHP and Flex
Speaker: Mihai Corlan, Platform Evangelist | Adobe Systems

How social networks make things happen!
Speaker: Victor Mihaiu, Responsabil Dezvoltare
www.Joined.ro

După cum observaţi, avem un invitat special, şi anume Mihai Corlan, platform evangelist la Adobe Systems. Acesta ne va vorbi despre aplicaţiile RIA (Rich Internet Applications). Se spune că acestea ar schimba jocul, în timp ce aplicaţii precum Gmail, Buzzword, TAAZ Makeover ar schimba regulile jocului. Pentru a crea o aplicaţie RIA se foloseşte Flex framework, iar în aceasta prezentare vom afla informaţiile elementare despre Flex şi despre conectarea unui client Flex cu un PHP backend.

Fiecare prezentare va dura între 30 şi 40 de minute, iar conţinutul va fi strict legat de elemente practice şi de noutate.

Când şi unde ?
Evenimentul se va desfăşura sâmbătă, 12 decembrie, între orele 12:10 si 15:00, în Salonul Mare al Ceainăriei Green Tea (Str. Dr. Burghelea, nr. 24). Harta o găsiţi aici.

Cât costă ?
Participarea la acest eveniment nu implică niciun cost, eventual consumaţia care se va face la Green Tea.

Ce trebuie să fac pentru a mă înscrie ?
Pentru înscrieri trebuie să trimiteţi un mail pe adresa andreea.gemene[ at ]leconline.ro cu subiectul LEC Technology Meetings - editia 2, în care vă spuneţi numele şi eventual dacă veţi mai veni şi cu alţi însoţitori. Numărul de locuri este limitat la 30, iar înscrierile se vor face în ordinea mail-urilor primite. După ce veţi trimite mail, veti primi un mail de confirmare, dacă mai sunt locuri sau nu.

Poate veni oricine ?
Da. Acesta este un eveniment deschis, la care poate participa oricine este interesat de subiect. Pot participa atât cei care au urmat cursurile LEC (nu neapărat doar cele de PHP), cât şi prieteni de-ai voştri care sunt pasionaţi de tehnologie.

miercuri, 25 noiembrie 2009

Transmiterea securizată a datelor – modelul SSL

SSL (Secure Socket Layer), numit şi TLS (Transport Socket Layer), este un protocol care permite ca două aplicaţii să comunice într-un mod securizat. În cazul transmiterii datelor pe Web – Serverul comunică cu Clientul prin protocolul HTTPS şi nu HTTP.

Cum funcţionează SSL?

Deobicei datele circula de la Client spre Server şi vice-versa în mod text şi pot fi citite şi modificate de oricine poate prelua comunicarea dintre Client şi Server. Pentru ca acest lucru să nu se întâmple, protocolul SSL criptează informaţia care circulă prin canalele din internet şi verifică dacă proprietarul serverului este cel real. În modul acesta, clientul poate fi sigur că s-a logat pe site-ul băncii sale şi nu a trimis datele spre un alt server care ar putea să profite de datele contului său.


Modelul SSL foloseşte tehnica de “public/private key encryption”. O cheie publică este un string compus din litere şi cifre care se foloseşte la criptarea mesajelor astfel, încât numai proprietarul cheii publice îl poate citi. Acest mesaj, însă, poate fi descifrat doar dacă a fost criptat cu o cheie privată. Cheile funcţionează şi pe invers: mesajele criptate cu o cheie privată pot fi decriptate cu o cheie publică.

SSL Handshake: Identitate şi securitate

Spre exemplu Maria doreşte să îşi acceseze contul bancar de pe www.bancamariei.ro. Browser-ul Mariei începe o conecţiune HTTPS cu serverul www.bancamariei.ro şi transmite acestuia un string generat aleator pe care îl vom numi “noroc”.


Serverul www.bancamariei.ro va începe conecţiunea cu Maria şi va trimite browser-ului ei două lucruri: cheia sa publică criptată într-un certificat SSL şi “noroc” criptat cu cheia sa privată.


Browser-ul Mariei va decripta mesajul de “noroc” cu cheia publică primită de la server. Dacă mesajul decriptat este identic cu cel transmis de Maria mai înainte spre server – atunci serverul sigur este www.bancamariei.ro , căci numai cheia privată de pe server poate cripta mesajul în aşa fel încât să poată fi decriptat cu cheia publică.


Să presupunem că Ion este un administrator de reţea şi monitorizează această comunicare de pe Internet. Până acum el a putut prelua din discuţia Client – Server cheia publică a băncii şi mesajul “noroc” a Mariei. Dar el nu are cheia privată a serverului, astfel, el nu poate cripta mesajul ca să îl trimită clientului. Deci, Ion nu poate să o păcălească pe Maria.

Problema identităţii

Dar ce s-ar fi putut întâmpla dacă Ion intervenea din start în discuţia dintre Maria şi bancă? Ce se întâmplă dacă browser-ul Mariei ar fi discutat de la început cu serverul fals al lui Ion? În cazul acesta Ion ar fi putut genera cheia sa privată pentru a cripta mesajul “noroc” şi păcăli browser-ul Mariei că PC-ul lui este banca. Nu e bine!


Pentru aceasta, comunicare prin SSL dintre Client şi Server nu se rezumă doar la cheia publică. Cheia publică face parte dintr-un certificat SSL, emis de către o companie autorizată, în care browser-ul Mariei are încredere. După instalarea browser-ului pe calculatorul Mariei acesta deja conţine cheile publice a diverse companii autorizate ca GoDaddy, VeriSign şi Thawte ce emit certificate SSL. Companiile care doresc să deţină o conexiune securizată cu clienţii trebuie să cumpere un certificat SSL de la una dintre companiile autorizate de mai sus.


Certificatul SSL se compune din cheia publică a băncii şi un bloc de date ce pot identifica banca, criptate cu cheia privată a emiţătorului de certificate.


Când serverul băncii trimite certificatul spre browser-ul Mariei, acesta decriptează certificatul cu cheia publică a emiţătorului de certificate. Dacă certificatul este fals – decriptarea eşuiază. Dacă certificatul este valid – în datele decriptate apare cheia publică a băncii şi informaţia despre bancă. Dacă prin informaţia despre bancă nu e inclusă şi adresa băncii (www.bancamariei.ro) - Maria primeşte un mesaj de eroare şi conecţiunea se întrerupe.


Să ne întoarcem la Ion. Poate acesta să se dea drept Bancamariei? Nu, deoarece nu are cheia privată a emiţătorului de certificate pentru a cripta certificatul SSL.


După verificarea certificatului, comunicare dintre Maria şi bancă poate continua.

După Handshake: criptare simetrică chei

Browser-ul Mariei şi serverul băncii ar putea comunica şi mai departe prin schimb de certificate, însă aceasta necesită prea multe calcule şi resurse pe serverul băncii şi ar putea încetini mult conecţiunea cu banca la un moment dat dacă sunt logaţi prea mulţi clienţi simultan.


Pentru aceasta browser-ul Mariei, după ce a verificat identitatea băncii, transmite băncii o cheie de criptare “simetrică” (pe care o va folosi şi Clientul şi Serverul de acum încolo) şi un algoritm nou de criptare serverului. Această modalitate de criptare este mai simplă şi va cripta datele mult mai uşor pe tot parcursul comunicării Client – Server.


Dar ce face Ion? El poate vedea cheia “simetrică” şi tipul algoritmului transmis către server de către browser-ul Mariei? Da, însă cheia “simetrică” încă este criptată cu cheia publică a băncii şi nu poate fi decriptată decât de către bancă cu cheia sa privată.


Acum Maria şi banca comunică cu ajutorul unei chei simetrice pe care o cunosc numai ei. Această cheie se mai numeşte “master secret”.


Tot procesul de autentificare şi comunicare este schiţat în imaginea de mai jos (click pentru a o mări):



Apache şi OpenSSL

Pentru Apache se poate instala modulul OpenSSL care funcţionează fără a cumpăra neapărat un certificat SSL. Cu OpenSSL se pot genera certificate proprii, însă, aceste certificate nu sunt autorizate de nici o companie. În acest caz browser-ul clientului îl va întreba pe acesta dacă vrea sau nu să accepte un certificat de comunicare ne semnat de o companie autorizată. Clientul ar putea renunţa la vizitarea paginii dacă nu cunoaşte deţinătorul certificatului.

Resurse SSL

Tutorial de instalare a modulului OpenSSL pentru Apache:
http://www.debianadmin.com/install-and-configure-apache2-with-php5-and-ssl-support-in-debian-etch.html

De aici se pot cumpăra certificate SSL:

StumbleUpon

StumbleUpon nu este o noutate, având în vedere că a fost lansat la sfârşitul anului 2001. Eu l-am descoperit acum un an şi mi se pare un tool dinamic bun, atunci când chiar vrei să afli informaţii doar din aria ta de interes.

StumbleUpon

Sistemul de navigare este simplu. Îţi creezi un cont, îţi instalezi toolbar-ul, îţi alegi domeniile şi subdomeniile care te interesează - lista o găseşti pe pagina profilului tău şi începi să stumble, prin click-ul unui singur buton.

Totuşi, nu ar fi mai simplu să foloseşti în continuare un search engine?

Ba da, atunci când cauţi ceva exact. De exemplu, care sunt regulile dintr-un joc de baschet? Dar atunci când ai timp şi doreşti să afli mai multe informaţii despre acel sport, îţi recomand StumbleUpon deoarece aici sunt filtrate paginile cu ratings (adică recomandate de alţi utilizatori StumbleUpon - care sunt deocamdată în număr de 8 713 417).

Mai multe informaţii găsiţi pe pagina lor de prezentare sau urmărind acest video.

Voi aţi folosit StumbleUpon?

marți, 24 noiembrie 2009

MS Office - Learn how to use IT the right way

MS Office - Learn how to use IT the right way a avut loc luni, 23 noiembrie, în sala Unirii a Hotelului Royal. Este primul eveniment axat pe partea de Microsoft Office organizat de noi şi ne-am bucurat că invitaţii ne-au onorat cu prezenţa lor.

Prima prezentare a fost a Andrei Marin, specialist HR, care a purtat o discuţie liberă cu participanţii despre modalităţile de evaluare a unui potenţial angajat şi despre competenţele pe care ar trebui să le aibă orice angajat, indiferent de poziţia pe care o ocupă într-o companie. Am avut parte chiar şi de un exerciţiu interactiv, prin care invitaţii au decis pe cine ar trebui să angajăm sau nu, în funcţie de soft skills şi hard skills.



A urmat Sorin Stancu, trainer LEC, care le-a arătat invitaţilor câteva lucruri utile care se pot face în Excel. Datorită timpului scurt, trainerul s-a axat mai mult pe partea finală a unor exerciţii în Excel, însă promitem ca la următoarele ediţii ne vom concentra mai în detaliu asupra unor probleme cu care vă confruntaţi zilnic la birou.

Desigur, a fost şi o scurtă pauză, unde invitaţii au interacţionat între ei. Evenimentul s-a încheiat cu prezentarea lui Daniel Năstase, trainer LEC, care ne-a învăţat ce ar fi bine şi ce nu ar fi bine să folosim în prezentările realizate în PowerPoint.



În urma completării formularului de feedback, Ana Hajdău - Administrative Coordinator Synergetica si Mihaela Tănasă - Compensation&Benefit Specialist Azadea au câştigat un training la Excel for Business, care se va desfăşura în perioada 7-8 decembrie, iar Dana Vladuţ - Project Manager Synergetica şi Gabriela Irinuca Văduva - Coordonator Marketing si Comunicare ECDL la PowerPoint Workshop, care se va desfăşura în data de 9 decembrie.

Următoarea ediţie va avea loc la începutul lunii februarie. Vă aşteptăm şi atunci!

marți, 17 noiembrie 2009

Editia 2 - LEC Technology Meetings

Din motive tehnice cea de-a doua ediţie LEC - Technology Meetings se va defăşura sâmbătă, 12 decembrie. Intervalul orar va rămâne acelaşi, 18.30 - 20.30, însă cel mai probabil locaţia va fi alta. Vom anunţa noua locaţie cât mai curând posibil.

În cazul în care cineva a făcut o rezervare pentru data de 19 noiembrie aceasta va fi valabilă şi pentru data de 12 decembrie.

vineri, 13 noiembrie 2009

Google Wave

Ştiţi de Google Wave? Este cel mai nou proiect Google, definit de utilizatori ca fiind un instrument online de comunicare şi colaborare în timp real.

Google Wave

Până în 2010, Google Wave va fi disponibil în varianta de testare beta. S-au trimis deja 100 000 de invitaţii, în septembrie, cu scopul de a primi sugestii de îmbunătăţire. Odată ce eşti pe "val", vei putea trimite mai departe şi tu invitaţii prietenilor tăi. Poţi solicita o invitaţie aici, însă nu garantez promptitudinea deoarece chiar ei declară: "Invitations will not be sent immediately. We have a lot of stamps to lick."

Şi totusi, de ce este atât de special?

Personal, imi place să cred că e un upgrade al e-mailurilor cu multe reply-uri: poţi comunica în timp real cu un grup de oameni. În momentul în care scrii în wave (acea căsuţă) ceilalţi văd asta şi pot veni în acelaşi timp cu feedback: idei, imagini, videoclipuri, URL-uri, hărţi şi alte aplicaţii.

Dacă eşti interesat să afli mai multe despre Google Wave, poţi găsi informaţii pe pagina lor de prezentare sau poţi urmări următorul filmuleţ:


Ca şi utilizator Wave, tu ce beneficii ai mai descoperit în Google Wave?

miercuri, 11 noiembrie 2009

LEC Technology Meetings editia 2

Cea de-a doua editie a seriei de evenimente LEC Technology Meetings se va desfasura joi, 19 noiembrie, incepand cu ora 18.30, in club Maya. Daca prima editie a fost dedicata technologiei Java, aceasta editie va fi dedicata PHP-ului. Deocamdata sunt confirmate urmatoarele prezentari:

Web Services - Core of Web 2.0 Social Media Communication. Chewing up Google, Yahoo and Twitter APIs with PHP
Speaker: Dumitru Glavan, trainer LEC

Past and Future - Vim & Zend Framework
Speaker: Tudor Barbu, trainer LEC

Fiecare prezentare va dura intre 30 si 40 de minute, iar continutul va fi strict legat de elemente practice si de noutate.

Cand si unde ?
Evenimentul se va desfasura joi19 noiembrie, intre orele 18.30 si 20.30, in club Maya (Calea Mosilor nr. 138). Mai jos aveti o harta cu locatia exacta.



Cat costa ?
Nu costa nimic, decat eventuala consumatie care se va face de la bar.

Ce trebuie sa fac pentru a ma inscrie ?
Pentru inscrieri trebuie sa trimiteti un mail pe adresa daniel.nastase@leconline.ro cu subiectul LEC Technology Meetings - editia 2, in care va spuneti numele si eventual daca veti mai veni si cu alti insotitori. Numarul de locuri este limitat la 40, iar inscrierile se vor face in ordinea mail-urilor primite. Dupa ce veti trimite mail, veti primi si din partea mea un mail de confirmare, daca mai sunt locuri sau nu.

Poate veni oricine ?
Da. Acesta este un eveniment deschis, la care poate participa oricine este interesat de subiect. Pot participa atat cei care au urmat cursurile LEC , cat si prieteni de ai vostri.

luni, 9 noiembrie 2009

Share and win!

Începând cu data de 21 noiembrie, se vor forma grupe noi pentru următoarele traininguri:

Vrei să câştigi un training Line Education Center, la alegerea ta? Dacă da, uite ce îţi propunem să faci:

Scrie pe blogul tău un articol despre trainingurile noastre. Prezintă-le şi demonstrează-le cititorilor tăi beneficiile şi avantajele cursurilor LEC. Iar dacă i-ai convins, spune-le ca atunci când se vor înscrie la un training LEC să mentioneze la rubrica "Observaţii" ca de la tine au aflat. Şi nu uita să postezi la comentariile acestui articol linkul către blogul tău.

Creativitatea ta va fi măsurata şi recompensată prin numărul de prieteni care vor lua parte la un training LEC, începând cu data de 21 noiembrie.

Aşadar, cine reuşeşte să convingă câţi mai mulţi prieteni să participe la un training LEC, va beneficia la rândul lui de un curs LEC la alegere.

Aşteptăm comentariile tale. Share and win!

Iar câştigătorii de la How To Web sunt..

..Simian Mihnea, student la Facultatea de Automatică şi Calculatoare şi Radu Ioana, studentă la Facultatea de Matematică şi Informatică. Aceştia vor beneficia de un training gratuit de la Line Education Center.

Mulţumim celor care şi-au manifestat interesul pentru trainingurile noastre şi sperăm să ne întâlnim şi la alte astfel de evenimente! De asemenea, felicitări echipei How To Web!

vineri, 30 octombrie 2009

Dacă vei veni la How To Web..

..vei avea posibilitatea de a câştiga unul dintre trainingurile Line Education Center, care se vor începe în luna martie 2010.

Pentru a participa la acest concurs, va trebui să completezi un mic formular prin care te vei abona la newsletterul lunar LEC. Simplu, nu?

Acest formular fizic il vei primi când vei intra în sala EC105 din cadrul facultăţii de Automatică şi Calculatoare, locul de desfăşurare How To Web, sau îl poţi lua direct de la noi, de la Learning Corner.

Aşadar, dacă eşti interesat de Java, PHP, CSS, .NET, Microsoft Excel, Microsoft PowerPoint, nu uita să participi la acest concurs.

Te aşteptăm la How To Web!

miercuri, 21 octombrie 2009

How To Web

Pe data de 31 octombrie, LEC va fi prezent la prima conferinţă dedicată web-ului din România, How To Web, aceasta având loc în incinta Facultăţii de Automatică şi Calculatoare.

Pe durata întregii zile vor avea loc prezentări ale temelor şi tehnologiilor de actualitate din domeniul Web-ului. Printre speakeri se numără Vladimir Oane, Călin Fusu, Vlad Stan, George Lemnaru şi mulţi alţii. Mai multe detalii despre desfăşurarea evenimentului găsiţi şi în agenda How To Web.

Pe lângă aceste conferinţe, în pauze, veţi putea discuta cu câţiva dintre cei care crează cele mai interesante proiecte online din web-ul românesc, veţi putea afla mai multe informaţii despre cărţi, cursuri şi alte surse de informare specifice acestui domeniu şi desigur, vă puteţi relaxa la o cafea împreuna cu speakerii, schimbând păreri despre cele văzute sau prezentate.

Nu rataţi această ocazie de a interacţiona cu oameni pasionaţi de IT ca şi voi!

Ne vedem la How To Web?

marți, 13 octombrie 2009

Bill Gates - The first rule

"The first rule of any technology used in a business is that automation applied to an efficient operation will magnify the efficiency. The second is that automation applied to an inefficient operation will magnify the inefficiency."

Bill Gates [link]

miercuri, 7 octombrie 2009

Grupe noi

Dupa cum v-ati obisnuit deja, la sfarsitul lunii octombrie vor incepe trainingurile Line Education Center pentru grupe noi.



Va asteptam la trainingurile noastre!

vineri, 2 octombrie 2009

Google Style

Jen Fitzpatrick, principala responsabila pentru user interface al produselor Google:

Google is a tool that gives you exactly what you want, when you want it; not everything you could possibly ever want all the time.


marți, 22 septembrie 2009

LEC Technology Meetings - editia 1

Lec Technology Meetings a avut loc sambata, 19 septembrie, in club Maya. Este primul eveniment de acest tip organizat de LEC si ne-am bucurat sa vedem invitatii atat de dornici de a afla cat mai multe informatii despre Java, tema acestei prime editii.

Daniel Nastase a dat tonul acestui eveniment, povestind despre ideea acestei intalniri, apoi despre conceptul "learning by doing", atat de putin familiar sistemului de educatie romanesc, dar nu si LEC-ului.

A urmat Catalin Boja care a vorbit despre dezvoltarea aplicatiilor pentru telefoanele mobile folosind tehnologia Java, despre provocarile pe care le impune acest mediu, despre evolutia J2ME si despre primii pasi care trebuie facuti de catre cineva care este interesat de acest domeniu.

Cristian Olaru, software developer la IBM, a prezentat dezvoltarea aplicatiilor web folosind Java si in special un studiu de caz despre aplicatia care sta in spatele www.javaromania.com. In urma sesiunii de intrebari de la aceasta prezentare, un participant a fost premiat cu cartea Java de la 0 la expert.

Desigur, intre prezentari au existat pauze, unde invitatii au interactionat intre ei si au putut vorbi deschis cu speakerii despre proiectele lor. Evenimentul s-a incheiat cu o scurta prezentare a lui Daniel insotita de exemple practice privind dezvoltarea interfetelor grafice folosind JavaFx.

Mai jos gasiti prezentarile sustinute sambata si cateva fotografii in care este surprinsa atmosfera acestei intalniri.

Voi ce parere aveti despre aceasta initiativa? Ce alte teme v-ar interesa?

Va asteptam la urmatoarele editii!










LTM - editia 1

joi, 10 septembrie 2009

LEC Technology Meetings


Incepand din luna septembrie Line Education Center va lansa o noua intiativa sub denumirea de LEC Technology Meetings. Aveti mai jos mai multe detalii despre acest eveniment.

Ce ?
Pe scurt, ideea este: ne vom aduna intr-o locatie si vom povesti despre o anumita tema, special aleasa pentru editia respectiva. Evenimentul va contine o serie de prezentari sustinute de trainerii din LEC si de invitati din industrie.

Pentru prima editie am ales ca tema tehnologia Java, iar programul prezentarilor este urmatorul:

Dezvoltarea de aplicatii pentru telefoane mobile folosind J2ME
Speaker: Catalin Boja, trainer LEC
Dezvoltarea aplicatiilor Web folosind Java / studiu de caz: www.javaromania.com
Speaker: Cristian Olaru, software developer IBM
Dezvoltarea de Rich User Interfaces folosind JavaFx
Speaker: Daniel Nastase, trainer LEC

Fiecare prezentare va dura intre 30 si 40 de minute, iar continutul va fi strict legat de elemente practice si de noutate.

La aceasta prima editie il vom avea ca invitat special pe domnul Cristian Olaru, autorul cartii Java de la 0 la expert.

Cand si unde ?
Evenimentul se va desfasura sambata 19 septembrie, intre orele 11.00 si 13.30, in club Maya (Calea Mosilor nr. 138). Mai jos aveti o harta cu locatia exacta.



Cat costa ?
Nu costa nimic, decat eventuala consumatie care se va face de la bar.

Ce trebuie sa fac pentru a ma inscrie ?
Pentru inscrieri trebuie sa trimiteti un mail pe adresa daniel.nastase@leconline.ro cu subiectul LEC Technology Meetings - editia 1, in care va spuneti numele si eventual daca veti mai veni si cu alti insotitori. Numarul de locuri este limitat la 40, iar inscrierile se vor face in ordinea mail-urilor primite. Dupa ce veti trimite mail, veti primi si din partea mea un mail de confirmare, daca mai sunt locuri sau nu.

Poate veni oricine ?
Da. Acesta este un eveniment deschis, la care poate participa oricine este interesat de subiect. Pot participa atat cei care au urmat cursurile LEC (nu neaparat doar cele de Java), cat si prieteni de ai vostri care sunt pasionati de technologie.

Cea de-a doua editie LEC Technology Meetings se va desfasura in luna octombrie.

miercuri, 26 august 2009

Tabela de ipoteze cu o singura variabila (Data table)


In acest articol voi prezenta tabela de ipoteze cu o singura variabila (data table) .
In imaginea de mai jos sunt cateva date despre un potential credit : suma imprumutata este de 100000 u.m. , rata anuala a dobanzii este de 5% si perioada de creditare , exprimata ca numar de luni , este de 120 .
In tabelul din aceeasi imagine avem inscrise diferite valori ale ratei anuale a dobanzii (aria de celule B8:B18)



In celula C7 este inscrisa functia PMT , functie care calculeaza rata ce trebuie platita lunar pentru un credit ale carui date sunt cele prezentate anterior . Primul argument al functiei este rata lunara a dobanzii , de aceea apare B2/12 , B2 fiind rata anuala a dobanzii . Al doilea argument este numarul de plati ce se vor efectua sau perioada de creditare exprimata in luni .
Iar al treilea argument este suma imprumutata . Inaintea functiei s-a trecut semnul "-" deoarece functia PMT are intotdeauna ca rezultat un numar negativ .




Asadar vrem ca folosind tabela de ipoteze cu o singura variabila sa aflam care ar fi valoarea ratei ce trebuie achitatalunar pentru fiecare dintre valorile ratei lunare a dobanzii , valori ce sunt inscrise in coloana B8:B18 .
Intai selectam toata aria de celule in care vom crea scenariul , adica B7:C18 , ca in imaginea de mai jos .


Apoi in meniu mergem la Data si alegem Table . Va aparea casuta pentru tabela de ipoteze , ca in imaginea de mai jos .
In una dintre cele doua rubrici (Row input cell sau Column input cell) va trebui sa introducem adresa de celula pe care , pentru a fi creat scenariul , vrem sa o inlocuim in functia PMT aplicata in celula C7 , cu toate valorile variabilei rata anuala a dobanzii , din aria B8:B18 .
Aceasta adresa este in cazul nostru chiar B2 . Functia aratand in felul urmator : PMT(B2/12;B3;B1) ,vrem sa fie create functii PMT in care B2 , adica rata anuala de 5 % , sa fie inlocuita pe rand cu toate valorile din aria B8:B18 .
Am stabilit asadar care adresa de celula din functia initiala va trebui inlocuita pe rand de diferitele valori ale variabile a.i. sa putem crea scenariul propus. Mai departe va trebui sa stabilim in care dintre cele doua rubrici (Row input cell sau Column input cell) vom introduce adresa B2 . Acest lucru se va stabili in functie de cum sunt distribuite , intr-o coloana sau intr-un rand , valorile cu care vrem sa inlocuim pe B2 in functia initiala . Deoarece valorile ratei anuale in functie de care vrem sa cream scenariul sunt distribuite intr-o coloana a foii de calcul , vom introduce B2 in zona Column input cell , ca in imaginea de mai jos .


Dupa apasare butonului OK tabela pe care am transformat-o in tabela de ipoteze va arata astfel:

Am creat in felul acesta diferite scenarii pentru suma ce ar trebui achitata lunar catre banca in functie de diferite valori ale ratei anuale a dobanzii .

marți, 28 iulie 2009

Lucru cu fisiere XML in ASP.NET

XML (Extensible Markup Language) reprezinta un limbaj de marcare prin care pot fi definite structuri ierarhice de date in fisiere de tip text. Acest limbaj a fost definit pentru a permite implementarea unei metode independenta de tehnologiile Web si pentru gestiunea bazelor de date existente care sa fie utilizata la descrierea si utilizarea datelor.

Principalele caracteristici ale tehnologiei XML sunt:
  • defineste un limbaj de marcare asemanator HTML si SGML;
  • definita pentru a permite descrierea structurilor de date si al datelor;
  • utilizata pentru a transporta date intre aplicatii si platforme diferite;
  • bazata pe utilizarea fisierelor text cu extensia .xml;
  • independenta de platformele hardware si software;
  • implementata de browser-ele Web existente
  • datele descrise formeaza o structura ierarhica.

Datele descrise prin limbajul XML sunt stocate in fisiere text cu extensia .xml in care trebuie respectate o serie de reguli (o descriere completa a limbajului poate fi gasita la www.w3.org/XML/):
  • limbajul este case-sensitive facand diferenta intre literele mari si mici;
  • tag-urile de descriere a datelor sunt definite de utilizator, spre deosebire de HTML unde sunt predefinite;
  • structura ierarhica trebuie sa contina un element radacina;
  • un element poate contine text, unul sau mai multe elemente sau nimic;
  • orice eticheta de inceput trebuie sa aiba asociata o eticheta de inchidere; daca elementul este gol, atunci eticheta de inceput poate fi inchisa prin simbolul /;
  • numele etichetelor trebuie sa inceapa cu o litera; numele xml, Xml, XML sunt rezervate;
  • comentariile sunt inserate intre ;
  • trebuie pastrata structura ierarhica si elementele trebuie sa fie imbricate in mod corespunzator (ordinea de inserare a etichetelor de inchidere este inversa celei de inserare a etichetelor de deschidere);
  • elementele pot avea atribute ale caror valori pot fi definite utilizand ghilimele sau apostrof.

Daca se doreste stocarea informatiilor despre angajatii unei firme intr-un fisier XMl, atunci o forma simpla de definire a acestuia este:

<angajati>
<angajat id=”123”>
<nume>Popescu Ion</nume>
<departament>Clienti</departament>
<functie>Manager</functie>
</angajat>
<angajat id=”123”>
<nume>Gheorghe Anca</nume>
<departament>Vanzari</departament>
<functie>Casiera</functie>
</angajat>
</angajati>

Pentru a permite o validare sumara a documentului XML si pentru a indica setul de caractere utilizat la descrierea continutului, la inceputul fisierului se da o declaratie de tipul

<?xml version="1.0" encoding="utf-8" ?>

Aceasta informatie nu este obligatorie insa repreinta o zona de descriere a documentului XML.

Pentru a afisa si prelucra aceste date dintr-o aplicatie ASP.NET se vor utiliza clase definite in framework-ul .NET si la care programatorul are acces prin API-ul (application programming interface) parser-ului XML inclus in framework. Acest parser implementeaza standardul XML DOM (Document Object Model) definit de consortiul W3C (www.w3.org/DOM) si reprezinta un document XML sub forma unei structuri arborescente in care elementele sunt reprezentate de noduri.
In namespace-ul System.Xml sunt definite clasele:
  • XmlReader – clasa abstracta utilizata pentru a citit date dintr-un fisier XML
  • XmlTextReader – implementeaza un parser XML derivat din XmlReader ce nu face validari si ce permite doar operatia de citire;
  • XmlWriter - abstracta utilizata pentru a scrie date intr-un fisier XML;
  • XmlTextWriter – implementeaza o clasa derivata din XmlWriter ce permite generarea unui document XML;
  • XmlDocument – implementeaza un parser XML conform specificatiilor XML DOM;
  • XmlNode – clasa asociata unui singur nod dintr-un document XML;
  • XmlNodeList – gestioneaza o lista de obiecte XmlNode;
  • XmlElement – un element din documentul XML
  • XmlAttribute – reprezinta un atribut al unui element din documentul XML
Daca se considera o pagina ASP.NET in care exista un buton si un label, LabelAngajati, conform structurii
<form id="form1" runat="server">

<div>

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Lista angajati" />

<br />

<br />

<asp:Label ID="LabelAngajati" runat="server"></asp:Label>

</div>

</form>

, afisarea datelor angajatilor din documentul XML la activarea butonului este realizata prin functia

protected void Button1_Click(object sender, EventArgs e)

{

XmlDocument doc = new XmlDocument();

//deschidere document XML local

doc.Load(Server.MapPath("angajati.xml"));


LabelAngajati.Text = "";

//generare lista noduri de tip angajat

XmlNodeList lista = doc.GetElementsByTagName("angajat");

//parcurgere lista noduri

foreach (XmlNode angajat in lista)

{

//preluarea valoare atribut nod curent

string id = angajat.Attributes["id"].Value;

//preluare valori noduri fiu

string functie = angajat["functie"].FirstChild.Value;

string nume = angajat["nume"].FirstChild.Value;

string departament = angajat["departament"].FirstChild.Value;

//afisare date preluate din fisierul XML

LabelAngajati.Text += "<strong>Angajat :" + nume + " - " + id + "</strong><br/>";

LabelAngajati.Text += "Functie :" + functie + "<br/>";

LabelAngajati.Text += "Departament :" + departament + "<br/>";

}

}



ce este abonata la evenimentul Click al controlului. In secventa anterioara, preluarea textului asociat unui element se realizeaza prin proprietatea FirstChild a nodului. Acelasi rezultat este obtinut, pentru valorile de tip text, prin proprietatea InnerText. De exemplu, extragerea numelui se face si prin

string nume = angajat["nume"].InnerText;

Un exemplu practic al utilitatii documentelor XML este dat de prelucrarea informatiilor cu privire la cursul valutar. Banca Nationala a Romaniei furnizeaza zilnic informatii valutare prin intermediul unui document XML publicat la adresa http://www.bnr.ro/nbrfxrates.xml. Transferand datele pe baza acestui suport este permisa realizarea unei multitudini de aplicatii, diferite ca tehnologie, pentru afisarea cursului valutar.
Prelucrarea documentului XML se face prin intermediul claselor .NET descrise anterior, insa se pune problema accesarii acestui fisier. Solutia eficienta este data de accesarea la distanta a documentului, iar acest lucru este posibil prin intermediul metodei Load a obiectului XmlDocument

doc.Load("http://www.bnr.ro/nbrfxrates.xml");

Parcurgerea ratelor de schimb se face cautand nodurile Rate.

miercuri, 22 iulie 2009

VLOOKUP intre doua foi de calcul

In aceasta prezentare vom vedea cum se foloseste functia de cautare pe verticala (VLOOKUP) atunci cand tabela de consultare se afla in alta foaie de calcul decat cea in care aplicam functia .

Avem asadar in prima foaie de calcul (Sheet 1) o tabela cu incasarile relaizate de mai multi agenti de vanzare ai unei firme in mai multe tranzactii efectuate . Codurile fiecaruia dintre agenti sunt trecute in prima coloana a tabelei , iar in a treia coloana sumele incasate in diferite tranzactii efectuate de acestia . Folosind functia vlookup va trebui ca pe cea de-a doua coloana sa completam numele fiecarui agent in functie de cod .


In imaginea de mai jos avem o parte a celei de-a doua foi de calcul , in care se gaseste tabela de cautare
Asadar pentru a completa coloana Nume in tabela din Sheet1 , vom folosi functia vlookup cu urmatoarele argumente : vlookup(A2;'Tabela de cautare'!$A$1:$B$10;2) .
Intai aplicam functia pe prima linie din coloana Nume . Primul argument , A2 , este cheia de consultare sau valoarea dupa care se cauta (in cazul nostru codul inscris in prima linie a tabelei) . Al doilea argument este tabela de cautare , iar al treilea este numarul coloanei din tabela de cautare de pe care vreau sa mi se returneze valoarea corespunzatoare codului ce apare ca prim argument al functiei .
Cum vom introduce aceste argumente ?
Pentru a introduce primul argument selectam celula A2 .
Pentru a introduce al doilea argument mergem in cealalta foaie de calcul si selectam aria de celule A1:B10 , iar in functie , inaintea acestei adrese , va aparea numele foii de calcul in care se afla tabela de cautare , astfel : 'Tabela de cautare'!$A$1:$B$10 .
Pentru a introduce cel de-al treilea argument , adica numarul coloanei de pe care vreau sa-mi fie returnata valoarea corespunzatoare cheii de consultare , raman in cea de-a doua foaie de calcul si introduc numarul coloanei in functia vlookup care apare sub meniu , in bara functiei .
Acest lucuru este reprezentat in imaginea de mai jos , unde se observa ca fisierul este deschis pe cea de-a doua foaie de calcul (nu pe prima , acolo unde am introdus initial functia vlookup) . Iar bara in care apare functia inscrisa de noi in prima foaie de calcul este indicata printr-o sageata .
ATENTIE! Trebuie respectati obligatoriu acesti pasi pentru ca vlookup-ul sa nu returneze o eroare . Adica trebuie neaparat ca atunci cand introducem in functie numarul coloanei , sa ramanem in foaia de calcul in care avem tabela de cautare si nu sa ne intoarcem in foaia de calcul in care aplicam functia .

Dupa aplicarea functiei in primul rand al coloanei Nume si dupa incrementarea pe restul coloanei , tabela din prima foaie de calcul va arata astfel :

luni, 6 iulie 2009

Utilizarea protocoalelor POP3 si SMTP in JAVA - Partea 2

2.Protocolul SMTP

SMTP (Simple Mail Transfer Protocol) este un protocol simplu, folosit pentru transmiterea mesajelor în format electronic pe Internet. SMTP foloseşte portul de aplicaţie 25 TCP şi determină adresa unui server SMTP pe baza înregistrării MX (Mail eXchange) din configuraţia serverului DNS.

Metoda pentru conectarea la un server ce recunoaste protocolul SMTP si trimiterea unui email catre o adresa trimisa ca parametru:


import sun.net.smtp.SmtpClient;

import java.io.*;

//sunt trimise ca parametri urmatoarele informatii:
//String destinationAddress - adresa catre care va fi trimisa mailul (ex. //'mihai.mogos@gmail.com')
//String smtpServer - adresa serverului ce recunoaste protocolul SMTP
//String subject - subiectul emailului ce va fi trimis
//Strin pathFileName - calea catre fisierul ce contine textul mesajului

public boolean forwardEmailMsg(
String destinationAddress,
String smtpServer,
String subject,
String pathFileName)
{


StringBuffer message = new StringBuffer(
"No message found");

try{


//Se realizeaza conexiunea cu serverul ce recunoaste protocolul SMTP
//Pentru asta se creaza un obiect din clasa sun.net.smtp.SmtpClient


SmtpClient smtp =
new SmtpClient(smtpServer);

//se seteaza adresa de email catrea care se va trimite mesajul electronic
//folosindu-se metoda from(String) cat si metoda to(String)




smtp.from(destinationAddress);

smtp.to(destinationAddress);


//se creaza corpul mesajului concatentndu-se fiecare linie
//din fisierul a carui cale a fost trimisa ca parametru


message = new StringBuffer(readLines(
pathFileName,null,null));


//se insereaza subiectul mesajului ca parte a obiectului
//de tip StringBuffer folosit pentru conceperea mesajului


message = message.insert(message.indexOf(
"Subject: ")+9,fwdTag);


//Get an output stream for the message


PrintStream msg = smtp.startMessage();


//Write the message into the output

// stream.


msg.println(new String(message));


//Close the stream and send the message


smtp.closeServer();


return true;


}catch( Exception e ){


e.printStackTrace();


System.out.println(
"while forwarding email");


//Sound an alarm.


Toolkit.getDefaultToolkit().beep();


try{


Thread.currentThread().sleep(500);


}catch(Exception ex){


System.out.println(ex);


}//end catch


Toolkit.getDefaultToolkit().beep();



//Return false to indicate that the msg

// was not successfully forwarded.


return false;


}//end catch


}//end forwardEmailMsg


miercuri, 1 iulie 2009

Grafic mixt

In acest tutorial vom vedea cum putem crea un grafic mixt sau cum putem transforma un grafic simplu intr-unul mixt .
Avem in imaginea urmatoare date despre vanzarile reusite de 4 agenti de vanzare ale unei firme in cele 4 trimestre ale unui an :

Pentru a sintetiza aceste date printr-un grafic selectam tabela (A1:F6) si din meniu alegem Insert-Chart . Va aparea casuta de dialog pentru grafice si la primul pas alegem un grafic de tip liniar(atentie, pentru grafic am selectat inclusv linia de total din tabela)

Mai departe vom stabili daca seriile graficului sunt pe linii sau pe coloane (alegem Series in rows) .


Dupa apasrea butonului Finish graficul va arata astfel :

Observam ca in afara de cel 4 serii liniare care ne redau vanzarile celor 4 agenti in fiecare dintre cele 4 trimestre ale anului , avem si o a cincea serie , cea pentru total. Inutilitatea acestei serii, ca serie liniara , este evidenta , datele din linia de total a tabelei neputand fi comparate cu cele din celelalte linii decat ca raport intre parte si intreg . Totusi putem transforma seria liniara de total intr-un grafic PIE in felul urmator: dam click dreapta pe seria respectiva si din lista de optiuni alegem Chart Type . Astfel ne va aparea din nou casuta de dialog in care va trebui sa alegem tipul de grafic , dar de data aceasta numai pentru seria Total . La rubrica Chart Type alegem Pie .

Rezultatul obtinut va arata astfel :

Avem acum un grafic mixt : seriile liniare redau evolutia in timp a vanzarilor ralizate de fiecare dintre cei 4 agenti , iar cel de tip Pie ne reda raportul dintre vanzarile fiecarui trimestru si cele pe intregul an .