miercuri, 27 mai 2009
Videotutoriale
Lucram in continuare si pentru realizarea de videoturiale pentru cursurile de Java Fundamentals, Java Advanced si C# Training.
Identificarea unui dispozitiv mobil in cazul aplicatiilor ASP.NET
In prezent, dispozitivele mobile de tip smartphone, pocketPC, palm sunt utilizate in mod frecvent pentru a naviga pe Internet. Acest lucru este permis de software, aplicaţiile browser pentru dispozitive mobile (Opera, Safari, Pocket Internet Explorer) si de capacitatea dispozitivului de a accesa o retea de date wireless sau una oferita de furnizorul de comunicatii mobile.
In acest scenariu, apare o problema privind dezvoltarea aplicatiilor Web, deoarece dispozitivul mobil este limitat in comparatie cu un PC sau Notebook din punctul de vedere al:
- dimensiunilor fizice ale ecranului;
- capacitatea de a afişa resurse multimedia (imagini, filme, sunet);
- viteza de transfer a datelor
- capacitatea de a rula script-uri.
Diferenţele enunţate influenţează negativ experienţa utilizatorului deoarece, in majoritatea cazurilor, aplicaţia este conceputa sa ruleze minim pe un ecran ce permite rezoluţia 800X600. Astfel, utilizatorul mobil întampină dificultati la vizualizarea meniului aplicatiei, a conţinutului si la completarea unor formulare de date.
Solutia problemei consta in dezvoltarea de versiuni diferite ale aplicaţiei Web. Utilizand tehnologia ASP.NET framework 2.0 si Visual Studio 2005
Cu toate că URL-ul site-ului Web rămâne neschimbat, trebuie să existe posibilitatea de a detecta tipul dispozitivului care face cererea şi în funcţie de acesta de a-i furniza conţinut care să ţină cont de particularităţile acestuia.
Soluţia prezentată este implementată utilizând ASP.NET 2.0 si Visual Studio 2005 ca mediu de dezvoltare. Pentru testare se utilizeaza emulatoarele de dispozitive mobile puse la dispozitie de Visual Studio 2005. Acesta sunt iniţializate prin intermediul Device Emulator Manager din opţiunea Tools a mediului.
Identificarea tipului dispozitivului se realizeaza din pagina principală a site-ului analizând cererea HTTP făcută de browser-ul acestuia. In această zonă există informaţii care indică tipul aplicaţiei de tip browser. In situaţia identificării unui dispozitiv mobil, serverul va face o redirectare a cererii catre o pagina Web construită în mod explicit pentru dispozitive cu ecran de dimensiuni reduse si capacitate particulara de interpretare a unui formular.
Interogarea tipului dispozitivului se face în pagina principală a site-ului, în funcţia Page_Load prin intermediul obiectului HttpContext.Current.Request.Browser ce are proprietatea IsMobileDevice. Această metodă analizează header-ul HTTP al cererii căutând informaţii despre platformă şi browser. Proprietatea intoarce true daca informaţiile gasite indica un dispozitiv mobil.
protected void Page_Load(object sender, EventArgs e)
{
if(Request.Browser.IsMobileDevice)
Server.Transfer(”MobileVersion/Default.aspx”);
}
Datorita numarului mare de dispozitive mobile si a evolutiei rapide a tehnologiei, metoda IsMobileDevice nu contine informatii despre toate dispozitivele mobile. Lista oficială a platformelor recunoscute se gaseste la http://www.asp.net/mobile/tested-devices/
După cum se observă, această listă nu este actualizată în mod curent, fapt care generează destul de uşor situaţii în care dispozitivul nu este identificat corect. In această situaţie este recomandată o abordare mai pragmatică ce implică definirea de metode proprii care să simuleze execuţia metodei IsMobileDevice.
Informaţiile ce pot fi analizate pentru a identifica platforma utilizatorului sunt obţinute prin intermediul metodei UserAgent pentru obiectul HttpContext.Current.Request.
De exemplu, pentru un telefon mobil Nokia N95, datele puse în cererea HTTP sunt
Mozilla/5.0(SymbianOS/9.2;U;Series60/3.1NokiaN95_8GB/15.0.015; Profile/MIDP-2.0Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413
Utilizand emulatorul Windows Mobile 6 Professional (este disponibil pentru Visual Studio 2005 si 2008 descarcand Windows Mobile 6 Professional and Standard Software Development Kits de la adresa http://www.microsoft.com/downloads/en/default.aspx)
protected void Page_Load(object sender, EventArgs e)
{
if(Request.Browser.IsMobileDevice)
Server.Transfer(”MobileVersion/Default.aspx”);
else
if(Request.UserAgent.ToString().ToLower().Contains(“nokia”))
Server.Transfer(”MobileVersion/Default.aspx”);
}
Aceste profile de dispozitive mobile pot fi inserate in Web.config sau in fisiere XML externe astfel incat sa fie gestionate fara a modifica codul aplicatiei. O solutie devoltata pentru a genera astfel de profile poate fi descarcata de la adresa http://www.asp.net/mobile/profile/default.aspx.
Aceasta solutie poate fi utilizata si pentru dezvoltarea de aplicatii ASP.NET utilizand Visual Studio 2008. Diferentele dintre cele doua medii de dezvoltare sunt vizibile la abordarea continutului unei pagini ASP.NET destinata dispozitivelor mobile. Pentru Visual Studio 2005 exista conceptul ca browser-ele mobile au capacitati reduse, lucru adevarat la nivelul anilor 2004 – 2005. In prezent, aceste aplicatii au evoluat suficient de mult astfel incat sa fie capabile sa interpreteze continutul la fel ca un browser clasic, destinat PC-urilor.
luni, 18 mai 2009
Filtru avansat – problema intampinata la copierea rezultatulul in alta foaie de calcul .
Din tabelul initial (A1:D33) vreau sa pastrez doar inregistrarile pentru angajatii care au un salariu mai mare decat salariul mediu . Pentru asta am nevoie de un filtru avansat in care criteriul de filtrare sa fie criteriul definit in celula G8 (salariul sa fie mai mare decat rezultatul functiei AVERAGE aplicata pe intreaga coloana “Salariul lunar”) .
SOLUTIA GRESITA :
Dupa stabilirea criteriului actionez Data – Filter – Advanced Filter , de pe bara de meniu din foaia de calcul in care se afla tabelul initial .Va aparea casuta de dialog pentru filtru avansat , in care voi stabili tabela pe care doresc sa o filtrez (List Range) , aria de celule in care se afla criteriul de filtrare (Crteria Rnage) si locul unde vreau sa copiez rezultaul filtrarii (Copy to) . Atentie! Pentru a activa rubrica Copy to , dintre cele doua optiuni dn partea de sus a casutei de dialog trebuie sa alegem Copy to another location .
- A1:D33 este adresa in care se afla tabela initala
- G7:G8 este adresa compusa din celula in care am stabilit criteriul (salariul sa fie mai mare decat salariul mediu) si celula aflata imediat deasupra acesteia (G7 ramane necompletata deoarece criteriul este stabilit pe baza unei formule)
- Sheet2!A1 este adresa in care vreau sa copiez rezultatul filtrarii .
Am spus la inceputul exercitiului ca vreau ca rezultatul filtrului avansat sa fie copiat in alta foaie de calcul (in cazul acesta Sheet2 , tabela initiala aflandu-se in Sheet1)
Pentru a inchea filtrarea se apasa butonul OK .
Insa in locul rezultatului asteptat vom primi din partea Excel-ului urmatoarea atentionare :
Asadar , ni se atrage atentia ca putem copia rezultatul filtrarii doar in foaia de calcul activa (adica acolo unde am actioant comanda Data – Filter - Advanced Filter)
SOLUTIA CORECTA :
Daca dorim copierea in alta foaie de calcul (in cazul acesta in Sheet2 , nu in Sheet 1 unde avem tabela) , va trebui sa actionam Data-Filter-Advanced Filter chiar in foaia in care dorim sa copiem , nu in cea in care avem tabela .
Pentru asta mergem in Sheet2 , iar casuta de dialog pentru filtru avansat va arata in felul urmator :
joi, 14 mai 2009
Table Layout - partea 2
marți, 12 mai 2009
Microsoft Excel - Grafice combinate
luni, 11 mai 2009
Table Layout - partea 1
duminică, 10 mai 2009
Singleton - design pattern
sâmbătă, 9 mai 2009
Frequently Asked Questions
SwingLabs PDF Renderer
vineri, 8 mai 2009
Scenarii in Microsoft Excel
joi, 7 mai 2009
JRuby
miercuri, 6 mai 2009
Aplicatii 3D folosind Java
Folosing Java 3D API se pot crea elemente de grafica 3D cu efecte destul de spectaculoase. Java 3D este dezvoltat in cadrul Java Community Process si ruleaza pe baza OpenGL. Pe langa suport 3D pentru sunet, API-ul ofera si o implementare foarte puternica, la nivel grafic, a conceptelor programarii orientate obiect, spre deosebire de celelate API-uri populare de OpenGL sau DirectX axate in special pe partea procedurala si modul de lucru al hardware-ului. In exemplul de mai sus obiectele grafice sunt incapsulate intr-o scena graf iar apoi scena poate fi manipulata pentru randare folosind Java 3D. Partea mai intersanta este reprezentata de cantitatea de cod foarte mica necesara pentru modificarea perspectivei. Puteti gasi aici un articol introductiv, destul de interesant, despre cum pot fi create aplicatii grafice puternice folosind Java 3D.
luni, 4 mai 2009
Certificari Java
Fiecare dintre certificarile oferite de SUN pentru platforma Java se concentreaza pentru o anumita pozitie din ciclul de software development.
In prezent SUN ofera opt certificari Java, care sunt clasificate in functie de nivelul de dificultate si gradul de specealizare. Majoritatea examenelor de certificare sunt constituite din intrebari grila cu raspunsuri multiple, insa sunt si cateva pentru care este necesara si realizarea unui proiect.
- Sun Certified Java Associate (SCJA): Aceasta reprezinta entrylevel-ul pentru certificarile Java oferind garantii doar pentru conceptele fundamentale ale limbajului Java si pentru cunostintele generale ale tehnologiilor SUN
- Sun Certified Java Programmer (SCJP): Atesta cunostinte solide despre principiile limbajului Java. (Nota: nu este necesara obtinerea SCJA pentru a avea acces la SCJP)
- Sun Certified Java Developer (SCJD): Majoritatea angajatorilor se concentreaza asupra acestui tip de certificare in principal din doua motive: trebuie sa treci SCJP (indiferent de versiune) inainte de a incera sa dai SCJD. De asemenea examenul de certificare cere canditatilor sa dezvolte un proiect conform specificatiilor si sa realizae un document in care sa explice designul arhitecturii si deciziile de dezvoltare.
- Sun Certified Web Component Developer (SCWCD): Acest examen poate fi interesant pentru dezvoltatorii web care vor sa se specealizeze in tehnologii Java precum Java Server Pages (JSP) si servleturi. Este necesar SCJP pentru a avea acces la aceast examen.
- Sun Certified Business Component Developer (SCBCD): Aceasta certificare, consta doar intr-un examen, si reprezinta nucleul certificarilor pentru tehnologii J2EE. Examenul este destul de greu de trecut in cazul in care candidatul nu are deloc experienta in proiecte axate pe Enterprise JavaBeans (EJB). Pentru sustinerea examenelui este necesara certificarea SCJP. Aceasta certificare poate fi interesanta pentru angajatorii care intentioneaza sa foloseasca EJB in cadrul proiectelor.
- Sun Certified Developer for Java Web Services (SCDJWS):Certificarea SCDJWS atesta cunostintele legate de dezvoltarea serviciilor Web. Pentru obtinerea acestei certificari se da doar un examen este necesara si SCJP.
- Sun Certified Mobile Application Developer (SCMAD): SCMAD atesta cunostintele pentru dezvoltarea aplicatiilor Java pentru telefoanele mobile sau alte device-uri care suporta J2ME. Proba pentru aceasta certificare nu presupune nici un proiect ci doar un examen. De asemenea, pentru a avea acces la aceasta certificare este necesar SCJP.
- Sun Certified Enterprise Architect (SCEA): Acesta este „scopul final” al programului de certificari SUN. SCEA certifica cunostintele necesare pentru a defini arhitectura si a crea aplicatii de tip J2EE de la zero. In ciuda faptului ca este cea mai avansata certificare SUN pentru sustinerea ei nu este necesara nici o certificare anterioara, cum este cazul celor de nivel 3. Proba consta intr-un examen grila cu raspunsuri multiple, un proiect asemanator cu cel de la SCJD, insa nivelul de complexitate este mult mai mare iar pe langa acestea trebuie realizat si un eseu in care sa fie explicat modul in care a fost construita aplicatia si motivele care au stat la baza deciziilor de arhitectura si programare.
duminică, 3 mai 2009
JavaFX
sâmbătă, 2 mai 2009
Greenfoot
Framework-ul din greenfoot are in principal doua resposabiltati:
- - sa faciliteze crearea de reprezentari grafice pentru un obiect si al comportamentului acestuia
- - sa controleze controleze executia unui ciclu de simulare (start, stop si descrierea actiunilor pentru fiecare pas).
Pentru a reusi acest lucru framework-ul pune la dispozitie o clasa de baza - GreenfootObject care trebuie sa fie mostenita de toate celelate obiecte pentru care se doreste o reprezentare vizuala. Metodele cele mai importante care trebuie sa fie implementate sunt getImage(), care returezeaza imagina prin care este reprezentat obiectul si act(), metoda care descrie comportamentul acestuia.
Greenfoot a fost creat prentru a putea fi utilizat in predarea notiunilor de programre. Ideea de baza este ca stundetii pot avea foarte usor acces la un mediu interactiv, comportamentul codului scris putand lua foarte usor o forma vizuala.