Archive for Java
03.11.08
Posted in Java at 3:24 am by rast
Concurenţă mare la realizarea de aplicaţii pentru administrarea bazelor de date. Una dintre ele, aici, realizată în .net, îmi va oferi posibilitatea, cel puţin, de a-i analiza interfeţele utilizator folosite.
Cât de mult îmi place mie programarea, şi ce aplicaţii mi-am propus să realizez, mă văd pus în situaţia de a nu avea ce programa! Fac o muncă de analiză şi proiectare a interfeţelor utilizator. Uzabilitatea este primordială.
Chiar sunt curios dacă interfaţa noului program/concurent descoperit îmi oferă posibilitatea de a-l critica sau de a-l lăuda.
Oricum, o primă critică este faptul că se foloseşte .net Framework.
Chiar dacă şi eu utilizez în unele aplicaţii JVM-ul de la SUN… cred că JVM este mai utilizat (instalat pe mai multe calculatoare) decât .net.
Deja, cu avantajele lui extJS, “balanţa” înclină spre realizarea de aplicaţii în tehnologii web, în detrimentul celor folosind Java nativ.
Permalink
03.10.08
Posted in Java at 11:25 pm by rast
Mă gândeam deseori de ce nu au luat amploare aplicaţiile Java, având în vedere faptul că ele pot rula ca aplicaţii de sine stătătoare, pe un calculator fără server web şi/sau conexiune Internet, doar cu un JVM instalat, dar şi ca aplicaţii ce pot rula din browser.
Nu numai că mă gândeam, dar am şi realizat un “schelet” pentru o aplicaţie ce poate rula în ambele moduri. Pe acest schelet am început să programez aplicaţia RoJavaMyAdmin… în paralel cu RoJSPMyAdmin, pe Tomcat, folosind tehnologiile de programare web.
Iniţial credeam (orice programator ar spune la fel) că fac o greşeală, că încep să lucrez la două aplicaţii simultan. Da! Este un efort mai mare, dar am început să înţeleg diferenţele dintre cele două “stiluri” de programare: programarea web şi programarea… compilată.
Programarea web în tehnologii web, server web, HTML, JavaScript, etc., îţi oferă în primul rând, avantajul scrierii rapide a interfeţei de comunicare cu utilizatorul. Din experienţa pe care o am cu alte limbaje: Pascal, FoxPro, C++, Java; scrierea interfeţelor ia mai mult timp decât scrierea algoritmului de calcul.
Tehnologiile web oferă o modalitate mai rapidă de creeare a interfeţelor utilizator. Nu trebuie să scrii cod mult. Din acest motiv se poate desprende şi un alt avantaj. Tehnologiile web oferă o modalitate de creeare a interfeţelor mai structurată şi mai uşor de modificat/depanat ulterior.
Am început să-mi modific părerea şi să-mi schimb priorităţile de programare. Scriptul extJS oferă posibilitatea creearii unor interfeţe foarte asemănătoare cu cele din aplicaţiile compilate. Am mai “scormonit” puţin prin exemplele oferite de kit-ul de instalare. Un alt exemplu care m-a “fascinat” este creearea de splitPane-luri. Un fel de frameuri în HTML. Sper să pot oferi în scurt timp un exemplu de aceste pane-luri.
Permalink
Posted in Java at 4:44 am by rast
“Se există” în IT un job care se numeşte “tester”, persoane care testau buna funcţionare a unui program. Mai nou, datorită complexităţii aplicaţiilor software, job-ul se numeşte QA (Quality Assessment). În general programatorii au o părere slabă despre QA, În QA nu se creează, doar se testează… nu-ţi trebuie cunoştinţe deosebite sau cunoaştere de algoritmi.
Am ajuns acu’ la bătrâneţe, s-o fac şi pe asta: muncă de “tester critic”, să critic constructiv ceea ce au făcut alţii, pentru a face eu ceva mai bun.
Azi m-am ocupat de Java (RoJavaMyAdmin), prilej cu care am testat funcţionalitatea programului Open Source JavaMyAdmin, din care mă inspiram. Da! Deja pot vorbi la trecut. Are mari probleme de interfaţă şi funcţionalitate.
Nu mă mai miră faptul că cel ce a început proiectul, a abandonat munca.
Aplicaţia are implementate puţine acţiuni asupra unui server MySQL, dar şi acestea cu probleme mari de interfaţare/uzabilitate. Trebuia să rezolve mai întăi problemele existente şi mai apoi să mai facă câte ceva la program. După selectarea unei baze de date, apar următoarele informaţii:

Butoanele “Import”, “Rename”, “Export”, nu au funcţionalităţi implementate. Dacă am selectat o bază de date, de ce-mi afişează operaţiunile ce le pot face asupra unei tabele? Mai întâi să selectez o tabelă, nu?
După ce selectez o tabelă:

Nu numai că se mută meniul sus şi dispare cel cu acţiunile asupra unei baze de date… sau poate s-a oprit, voia să afişeze meniul în cadranul rămas gol - dar se şi schimbă opţiunile din meniu: apare butonul “Export” şi dispare cel de “Properties”.
Of! of! of! şi eu care credeam că am nişte programe Open Source (toate trei: JavaMyAdmin, jspMyAdmin şi phpMyAdmin) şi le voi “fura” munca celor ce le-au făcut… Of! of! of! ce m-am înşelat!!! (da’ bine că m-am înşelat singur). Va trebui să muncesc nu glumăreală!!! Va trebui să mă inspir din greşelile lor.
Vai! vai! vai! neuronii mei!! Prevăd că voi sărbători victoria socialismului de la 23 august tot prin muncă!!! 
Permalink
Posted in Java at 3:17 am by rast
Iată-mă începând să pun în practică sintagma: “pauzele lungi şi dese, cheia marilor succese”. Am început cu pauzele lungi. Săptămâna trecută am lucrat numai la aplicaţia de administrare MySQL cu JSP, la cea cu Java nu am lucrat deloc, dar m-am gândit ce şi cum să fac; iar azi în 3 ore am rezolvat ceea ce nu putusem rezolva mai înainte într-o zi (9-10 ore).
Nu era nevoie să mă conving încă odată despre adevărul ce stă în ideea că odihna/pauzele, fac parte din munca noastră. Nu numai randamentul muncii creşte atunci când eşti odihnit, dar şi ideile de rezolvare se “sedimentează”.
De cele mai multe ori soluţia care ne vine pentru prima dată în minte nu este cea mai bună. Făcând o pauză de la muncă, dar nu şi de la gândirea asupra problemei ce trebuie rezolvată, ne pot veni în minte şi alte soluţii, uneori mai bune decât prima.
Permalink
03.09.08
Posted in Java at 3:03 am by rast
Aş putea spune că programarea, scrierea de cod, este o pasiune pentru mine. În timpul vieţii am avut ocazia să fac mai lulte activităţi, fie ele ca job, sau altele. M-am observat atent, scrierea de cod îmi dă o stare de bine. Ca administrator, chiar dacă am reuşit să mă descurc onorabil de sarcinile de servici, nu aveam acele stări de bine. Când programez mă simt ca peştele în apă. Când copii ceva de pe o foaie tipărită pe calculator mă simt ca peştele pe uscat, într-o zi toridă de vară.
D’asta am început să scriu şi programe Open Source, dacă ar veni şi o sponsorizare pe parcurs nu mă dau în lături.
Dar mai am şi altă intenţie nu numai să-mi satisfac oarece plăceri/pasiuni: vreau să fac ceva bun, performant. Am găsit acel copac Tree JavaScript, l-am adaptat… 80% intenţiilor mele. După vreo 4-5 zile de muncă de înţelegere a funcţionalităţii codului, am crezut că mă voi simţi ca peştele în apă, adică voi începe să scriu cod. Am scris puţin, vreo 3-4 ore
. Vrând să fac ceva fain, mi-am adus aminte de grid-ul editabil cel implementează extJS-ul. Azi am făcut nişte teste.
E fain! dar nu exact ceea ce-mi trebuie, la fel ca şi Tree-ul. “Alţi bani, altă distracţie“, alt JavaScript, alte zile la fript!… ca peştele în soarele torid. Va trebui să descifrez iar program făcut de alţii. Dar trebuie, nu are rost să descopăr din nou roata, extJS-ul merită înglobat în RoJSPMyAdmin.
Asta este! Ajung eu odată şi odată iar în apele mele teritoriale!
Permalink
03.08.08
Posted in Java at 7:16 am by rast
Eu am vrut să dau în Java şi a crăpat JavaScript-ul. Cu alte cuvinte, în ultimele ore am programat numai JavaScript. Este şi normal, am vrut să realizez aplicaţia în tehnologie Ajax: JavaScript and XML.
Am început să mă familiarizez cu acel JavaScript şi să-i aduc îmbunătăţirile necesare pentru a putea fi util aplicaţiei mele. Scriptul mi-a plăcut ca “look”, nu ca funcţionalitate, aceste le voi implementa pe parcurs.
Oricum, nu mă grăbesc cu programarea, cu scrierea de cod, mai întâi analizez bine ce am de făcut, astfel încât etapa de debugging sau depistare de bug-uri să fie facilă.
Permalink
Posted in Java at 4:01 am by rast
Dacă tot am început să analizez critic phpMyAdmin-ul, să vă mai dau un exemplu, ceva mai puţin grav, dar care îmi dă un imbold puternis de a continua ceea ce mi-am propus.
După alegerea unei tabele dintr-o bază de date, se afişează o fereastră cu înregistrările din acea tabelă:

Dacă se alegeopţiunea de editare a unei înregistrări, se afişează următoarele:

În primul rând, în meniul de sus este selectată opţiunea “Insert”. Nu este vorba de insert ci despre edit. Chiar dacă cele două operaţiuni au formulare identice, ele sunt destul de diferite, prima, insert, presupune o adăugare în baza de date, pe când a doua, edit, doar o modificare a unor date dintr-o înregistrare.
Dacă se apasă butonul “Insert”, din meniul de sus, apare o fereastră de forma:

Adică la opţiunea de inserare ţi se oferă avantajul de a insera deodată, dacă vrei, două înregistrări. De ce nu trei… numărul magic? Sau 7… tot magic?
Spuneam într-un post mai vechi că m-am îndrăgostit de un script JavaScript: extJS. Este un script gratuit cu ajutorul căruia se pot implementa diferite efecte şi funcţionalităţi în paginile web. ExtJS-ul oferă posibilitatea unui grid editabil.
Am auzit eu de extJS, oare cei de la phpMyAdmin nu au auzit?
Permalink
03.07.08
Posted in Java at 5:09 am by rast
Da! Îi critic pe cei care au programat phpMyAdmin-ul. După părerea mea au făcut o gafă mare. Să vă arăt mai întâi trăznaia:

Nu este greu de înţeles nici pentru celelalte persoane care nu au de lucru cu bazele de date.
Să vă explic despre ce este vorba: o bază de date este alcătuită din tabele (orice om a văzut tabele - tabelul din holul blocului cu lista de locatari, tabelul cu suma ce trebuie plătită la întreţinere, etc.). Fiecare tabel are “capul” lui… adică arată ceea ce conţine fiecare coloană. În exemplul din figură:
- un tabel clienţi: nume, prenume, adresă, etc.
- un tabel cu serviciile prestate de firmă
Mă opresc aici. Să spunem că firma prestează 5 servicii:
- repară umbrele
- sudează porţi de garaj
- confecţionează copii pentru chei de yală
- execută copii xerox
- face schimb valutar
şi are o sumedenie de clienţi. Poţi să aduni sumedenia aia de clienţi cu serviciile oferite? Nu aduni paie cu măgari? Zici: am 7 paie şi 10 măgari… în total 17 lucruri. Vi se pare logic?
M-am izbit de această adunare şi la un fost loc de muncă. M-am zbîrlit ca măgarii adunaţi mai sus!
Acelaşi lucru îl face şi phpMyAdmin-ul. Priviţi poza: pe fiecare linie este câte o tabelă conţinută în baza de date. Pe coloana “records” sunt afişate înregistrările fiecărei tabele. Pe ultima linie este totalul… sau suma.
Credeţi că greşesc? E normal să aduni liniile din tabele diferite? Fiecare tabel are un “Nr. crt.” - număr curent - care indică numărul de linii. Le poţi aduna unele cu altele?
Permalink
Posted in Java at 3:23 am by rast
Nu vreau să critic phpMyAdmin-ul, vreau să observ îmbunătăţirile ce pot fi aduse. Am mai găsit: în meniul din partea stângă - cel de mai jos:

sunt 5 iconiţe:
- Home
- Log out
- Query window
- Documentation phpMyAdmin
- Documentation MySQL
De ce nu apare tot acolo şi opţiunile:
- About phpMyAdmin
- Web server information
- MySQL server information
- Interface
care apar în fereastra din dreapta? Asta ar însemna să nu ai acces la cele 4 informaţii decât din fereastra de Home.
Punând şi aceste 4 informaţii în meniul din stânga se poate avea acces la ele oricând.
Altă… nedumerire: apăsând butonul 3 din meniul stâng “Query window”, se deschide o nouă fereastră a browser-ului care oferă o interfaţă de interogare identică cu cea oferită de opţiunile “SQL” din interfeţele de lucru asupra bazelor de date şi tabelelor.
Sfetnicu’ meu, probabil în colaborare cu sfetnicii celor ca au realizat phpMyAdmin-ul, mi-a spus să ţin cont că echipa care l-a realizat nu este “adunată într-un singur loc”, ci a contribuit fiecare membru cu ce a putut.
No problem! Avantaj io! Neuronii mei sunt adunaţi în aceeaşi locaţie a cutiei mele craniene. Au vrut nişte psihologi să mi-i despartă în două emisfere cerebrale: unii să se ocupe cu anumite chestii şi alţii cu altele. N-au vrut! Au rămas încăpăţînaţi să stea în acelaţi loc!
Permalink
Posted in Java at 1:17 am by rast
După îndelungi chinuri de a adapta scriptul JavaScript pe care-l folosesc pentru afişarea bazelor de date şi a tabelelor, de a afişa şi baza de date nou creată sau cea ştearsă, folosind Ajax, scopul urmărit fiind ne-refresh-ul ecranului, am ajuns la concluzia că scriptul trebuie foarte mult modificat.
Aceste modificări implică programare JavaScript. Deja mă lua cu friguri printre neuroni, bătea un crivăţ de JavaScript de-mi viscolea tot JSP-ul şi Java pe care mă concentram.
Dar… evrika! Apare gândul pe ne-gândite: fraiere! de ce oare s-au inventat versiunile! Ajax-ul la crearea şi drop-ul ştergerea unei baze de date fă-l ca “new feature” în verisiunea viitoare, când te vei ocupa cu preponderenţă de JavaScript.
Permalink
Next entries » · « Previous entries