Feb 25 2008

Cine spunea ca…

Category: TechnicalIuliana @ 16:40

… in programare nu iti trebuie matematica? Uite un link care demonstreaza exact contrariul: aici.

Formula aia “super-interesanta” de acolo este folosita de Lucene pentru a determina exact daca un document anterior indexat corespunde unui criteriu de cautare dat de utilizator. Lucene este folosit de majoritatea programatorilor(nu de mine desigur, ca eu prefer sa folosesc instrumentele de search oferite de linux :D) pentru indexarea surselor si a informatiilor legate de un proiect. Indexarea se face destul de repede, iar daca criteriile de indexare sunt destul de bine puse la punct si rezultatele unui search vor fi returnate destul de rapid.

Daca Lucene ar fi scris conform ultimelor standarde java poate l-as folosi. Dar cat timp in codul sau nu se folosesc generice(pierzandu-se timp cu teste si conversii inutile), se folosesc vectori(sunt sincronizati si merg greu, iar contextele in care sunt folositi nu sunt multi-threading, deci nu inteleg rostul folosirii vectorilor in locul unei ArrayList, de exemplu), iar unii algoritmi de cautare sunt implementati cu picioarele (mai mult ca sigur n-au fost implementati cu creierul :D), se folosesc constante imprastiate, in loc sa fie adunate in enum-uri s.a. nu intentionez sa-l folosesc. Dar asta e doar parerea mea de programator pretentios.:D (O sa postez si exemple in curand.)


Feb 19 2008

Frustrari de programator

Category: TechnicalIuliana @ 10:31

Nu ma simt frustrata si nu ma enervez cand nu imi iese ceva. In cazuri de genul ma ambitionez, ma mai documentez si pana la urma gasesc eu o solutie. Dar cand lucrez cu codul unui coleg si cu un framework open source, iar ceva crapa fara a-mi spune de unde ma enervez. Pentru ca la un moment dat nu mai am alte optiuni decat sa banuiesc cam ce nu merge si sa incep sa elimin si sa adaug chestii la nimereala in speranta ca va merge. Asa am patit acum cateva zile. De o saptamana un modul arunca din cand in cand o exceptie, dar isi facea treaba bine. Am tras concluzia ca e ceva intern framework-ului open source. Era enervanta exceptia aia, dar daca nu imi afecta rezultatele nu era mare problema. Intr-o dimineata ma apuc de modificat niste chestii (faza era ca respectiva chestie trebuia sa genereze ceva si mergea greu asa ca “the master of threads“, adica moi :D, a trebuit sa faca modulul respectiv sa mearga multithreaded) pentru ca in momentul in care rula multithreaded apareau exceptii noi. Incercand sa le rezolv pe astea(problema se invartea in jurul unor variabile care nu fusesera setate bine) le-am rezolvat pe celelalte. Cand am rulat si am vazut ca nu mai apar  imi venea sa musc din birou de ciuda, pentru ca nu stiam ce am facut pentru a le rezolva si daca mai aveam aceeasi problema ulterior chiar nu as fi stiut cum s-o rezov. Am rezolvat si celelalte exceptii si m-am linistit. Gandind la rece, banuiesc din ce motiv apareau exceptiile alea,dar pana o sa-mi confirm banuielile o sa mai dureze putin. Nu de alta dar am alt task mai important acum. Eu sper sa am timp sa ma intorc la partea respectiva.


Feb 18 2008

Microshit technology…

Category: TechnicalIuliana @ 23:15

…drives me nuts again. In ultima vreme sunt putine lucruri care chiar sa ma scoata din sarite, poate pentru ca am eliminat sursa principala de draci: Windowsul. De cand am scapat de el nimic nu mai crapa, exceptand desigur firefox cand deschid prea multe taburi cu Liberatea( ziarul ala chiar nu e bun pentru mine, pana si noul meu sistem de operare incearca sa-mi spuna asta:D). De ce ma lamentez in continuare de Microshit Technology? Pentru ca am nevoie de o masina virtuala pe care sa testez anumite aplicatii si pe care sa retusez laboratoarele la disciplina pe care o predau. Disciplina aia legata de C#, pentru care am nevoie de Windows, desigur :(. Disciplina asta presupune la un moment dat si realizarea de aplicatii web si normal lucrand cu .Net , am nevoie de IIS, tot tehnologie Microshit ca sa se pupe mai bine. Poate multi au fost norocosi si le-a mers IIS + Asp .Net 2.0 din prima dupa instalare. Ei bine, eu nu sunt unul din cei norocosi. Acum doi ani cand a trebuit sa-mi fac un proiect pentru facultate m-am chinuit o gramada, intr-un final a mers si inca nu stiu de ce. Anul trecut la fel, l-am facut sa mearga am tinut minte pasii. L-am dezinstalat ca sa mai fac o data ca sa pot sa le spun studentilor si sa fiu sigura pe mine cand o fac ca merge asa. Am refacut aceeasi pasi. Rezultatul:ciuciu. Slava Domnului ca la faculate a mers!

Eh, in seara asta voiam sa ma apuc de facut un site international pentru Clopotel nu de alta, dar chiar ar fi nevoie de unul. Plus ma gandeam si la o baza de date serioasa si o aplicatie aserioasa de administrare a ei ca sa nu se mai chinuie cu managementul pozelor. Si fac din nou aceeasi pasi. Adica instalez IIS, instalez Asp.Net 2.0 si torn si un Vs2005. Il deschid, creez un nou site, compilez si dau sa deschid pagina default pentru testul intial. Imi scuipa ca serverul meu nu e configurat pentru Asp. Net 2.0. Sa mor nu alta… Oki, nici o problema, il mai chinui, ma uit prin optiuni(era setat ca versiune de asp folosita 2.0), ma duc la ei pe site, rulez o aspnet_regiis -ga pentru a acorda orice fel de drept userului meu. In continuare daca rulam din vs imi spunea ca nu e configurat serverul, iar daca deschideam manual pagina din browser imi rage binecunoscuta eroare cu IIS metabase:
HostingEnvironmentException: Failed to access IIS metabase.]
System.Web.Configuration.MetabaseServerConfig.MapPathCaching(String siteID, VirtualPath path) +3492122
System.Web.Configuration.MetabaseServerConfig.System.Web.Configuration.IConfigMapPath.MapPath(String siteID, VirtualPath vpath) +9
System.Web.Hosting.HostingEnvironment.MapPathActual(VirtualPath virtualPath, Boolean permitNull) +163
System.Web.CachedPathData.GetConfigPathData(String configPath) +382
System.Web.CachedPathData.GetConfigPathData(String configPath) +243
System.Web.CachedPathData.GetConfigPathData(String configPath) +243
System.Web.CachedPathData.GetApplicationPathData() +68
System.Web.CachedPathData.GetVirtualPathData(VirtualPath virtualPath, Boolean permitPathsOutsideApp) +3385631
System.Web.Configuration.RuntimeConfig.GetLKGRuntimeConfig(VirtualPath path) +189

In fine, o sa-i dau eu de capat. Internetul este mare si sigur cineva a avut aceeasi problema ca mine si a rezolvat-o si a si postat pe undeva rezolvarea :)

[later edit]: Cica trebuie instalat mai intai IIS si apoi .Net Framework. Cum eu am facut putin invers pasii astia, :D solutia este desigur dezinstalarea .Net Framework si reinstalarea ei. Inteligent, nu? 196683.gif

[later than later edit]: Se pare ca am scapat fara dezinstalare. Doar am dat repair. Si a mers. Sper sa mearga si altora.

[later than later later edit]: Cea mai simpla solutie in comentariul nr. 3 al acestui post. :D


Feb 13 2008

Atentie la teste!(Ep. 3)

Category: TechnicalIuliana @ 16:22

Sunt pe la intrebarea 218, am mai dat peste cateva erori gramaticale si negatii lipsa in cadrul intrebarilor, n-are rost sa le insir aici, ma voi lega strict de cele a caror variante de raspuns sunt aberante.
Deci….inca una:
The file “file.txt” exists on the file system and contains ASCII text. Given:
try {
File ff = new File(“resources/file.txt”);
OutputStream out = new FileOutputStream(ff, true);
} catch (IOException e) {}
What is the result?

  1. the code does not compile
  2. the code runs and no change is made to the file
  3. the code runs and sets the length of the file to 0
  4. an exception is thrown because the file is not closed
  5. the code runs and deletes the file from the file system.

Raspuns oficial: A. Daca imi explica si mie cineva de ce nu s-ar compila bucata de mai sus, eu ma las de java. Parerea mea este ca se compileaza bine merci(avand in vedere ca nu e data toata implementarea clasei respective sar din schema declaratiile de import lipsa), avand in vedere ca FileOutputStream extinde OutputStream,deci nu e nici o problema in linia respectiva. Nu e profesional sa nu inchizi un stream, dat trecem cu vederea in cazul asta. Avand in vedere ca stream-ul respectiv este deschis pentru operatia de append(verificati javadoc-ul constructorului respectiv in caz ca sunteti nelamuriti),e clar ca fisierul nu va fi modificat si codul in cauza va rula, singurul lucru facut de el fiind deschiderea unui stream, ce va fi inchis apoi de gc. Deci raspunsul corect era B.
Si inca una:
Continue reading “Atentie la teste!(Ep. 3)”


Feb 12 2008

KDE 4

Category: Miscellaneous,TechnicalRpx @ 20:46

Acum o luna a fost lansat in mod oficial KDE 4.0

Am fost si inca sunt un fan infocat al KDE. Inca de la inceput cand am avut prima data linux pe calculator (acum vreo 10-11 ani) KDE m-a capturat, mai ales datorita multitudinii de gadget-uri oferite, in detrimentul lui Gnome (care pe atunci era foarte “chel”, nu ca acum ar avea mai mult “par”, dar nah). Alte optiuni nici nu prea aveam exceptand o consola banala.

Recunosc faptul ca release-ul lui KDE 4 m-a facut foarte nerabdator sa-l incerc. Prima problema care s-a ivit a fost sistemul meu. Fiind ceva mai vechi, ar fi trebuit sa inlocuiesc o sumedenie de pachete, ceea ce ar fi fost atat consumator de timp, cat si oarecum periculos pentru pachetele deja existente. Asa ca m-am hotarat sa stau cuminte in banca mea si sa astept.

Si bine am facut! De curand, staff-ul KDE a facut publica stirea prin care afirma ca release-ul lui KDE 4.0 este prematur si ca aceasta miscare a fost facuta pentru a studia piata de desfacere si pentru a primi feedback. Cu alte cuvinte, KDE 4.0 este inca “beta” in ciuda faptului ca este marcat ca “release”. Acest anunt a fost facut in urma multor plangeri ale celor ce s-au grabit sa-l instaleze si s-au trezit cu bube. Composite extensions (adica chestia aia care face ferestrele transparente si te lasa sa te joci cu ele de parca ar fi plastilina) nu este activata implicit. De altfel, CE nici macar nu vrea sa functioneze pe X.Org impreuna cu driverele oficiale de la ATi (adica FGLRX, lucru care se cunoaste inca de pe vremea lui Fedora Core 6 si X.Org 7.1), iar daca nu ai driverele, nu ai 3D, deci iar nu ai Composite extensions. O alta problema e legata de stabilitate. Recunosc faptul ca orice software are defecte la prima sa iesire pe piata, insa KDE 4 se pare ca are mai multe defecte decat facilitati, iar stabilitatea lasa de dorit.

Da’ bine fratilor! Si eu gigel daca ma chinuiam si faceam pe dracu’n patru sa il instalez pe solnitza mea ce faceam? Reboot de 3 ori pe zi ca-n Microshit Bindoze? Nu condamn staff-ul kde.org pentru ca au facut publica noua versiune de KDE, insa ceea ce condamn este faptul ca l-au marcat ca Release (gold) pe cand aceasta versiune ar trebui privita cel mult ca un Release candidate.


Feb 10 2008

Upgrades…

Category: Miscellaneous,TechnicalRpx @ 23:44

Azi am avut o zi plina.

Au venit proprietarii in vizita, am avut placerea sa vorbesc cu ei, apoi ca in aproape orice weekend m-am apucat de curatenie. Doar ca azi m-am hotarat sa curat calculatoraşul meu (calculatoraş ce cantareste mai bine de 12kg). Fac asta cam o data pe an, si nu e foarte greu… principalul lucru de facut e sa curat filtrele de aer :)

Recent achizitionasem un controller S-ATA si un hard drive de 500GB, insa nu apucasem sa le folosesc pe nici unul dintre ele, asa ca am zis ca ar fi o ocazie perfecta sa le integrez in sistem. O recompilare de kernel pentru controller, un download pentru sistemul de fisiere si totul a fost pregatit. Am decis sa formatez partitia (singura de pe hard de altfel :) ) folosind sistemul XFS. Celalalt hard pe care imi stochez datele e formatat cu ReiserFS, sistem de care sunt foarte multumit… insa am zis ca ar fi bine sa incerc si alte chestii noi. Pacat ca e prea mult chin sa-mi convertesc partitiile sistem existente la ReiserFS/XFS. Ext3 e nasol tare. Dar oricum… dupa ce am terminat, am realizat ca am in calculator si o placa wireless D-Link AirPlus DWL-G510 pe care nu o foloseam. Si nu ca n-as fi avut la ce sa o folosesc… doar ca pana acum mi-a fost foarte lene sa ma chinui sa o configurez pe linux. Bineinteles ca atunci cand am cumparat-o m-am gandit mai intai ca “whoa… e D-Link” si nu la faptul ca “oare are suport stabil pe linux?”. Si bineinteles ca NU a avut suport stabil pe linux… driverele de pe site-ul lor erau experimentale (si de altfel nefunctionale) iar cele de pe un “comunity site” erau doar pentru niste nuclee foarte recente (2.6.24+). Meh…. si mai multa munca?? Nu cred…. ar fi trebuit sa pierd cel putin cateva ore sa buchisez noile optiuni din kernel. Mi s-a parut (si pana la urma asa a si fost) mai usor sa modific driverele oficiale sa functioneze. Long live ANSI C. Astfel am facut fericita colega de apartament care are laptop. :)

Pana la urma, a fost o zi productiva. Imi cer scuze pentru downtime-ul blog-ului datorat acestor imbunatatiri, insa unele chestii chiar sunt necesare :P


Feb 05 2008

Atentie la teste!(Ep. 2)

Category: TechnicalIuliana @ 23:54

Alta care ma baga in ceata:
Given that b and c refer to instances of wrapper classes, which two statements are true?(Choose two)

  1. b.equals(b) returns true
  2. b.equals(c) returns the same result as b==c
  3. b.equals(c) can return false even if c.equals(b) returns true
  4. b.equals(c) throws an exception if b and c are different wrapper types
  5. b.equals(c) returns false if the type of wrapper objects being compared are different

Raspunsul oficial: “Answer:B,C.” Normal ca nu sunt de acord. Si hai sa va spun si de ce. In primul rand hai sa ne uitam in codul sursa al unei clase wrapper, Integer de exemplu, pentru a vedea cum este implementata metoda equals:

public boolean equals(Object obj) {
return obj instanceof Integer && value == ((Integer) obj).value;
}

Din bucatica asta oficiala de cod ne putem da seama imediat ca A si E sunt adevarate. Deci daca as fi dat examenul de certificare Sun pana acum as fi avut 3 intrebari pe care le-as fi “gresit”.
Continue reading “Atentie la teste!(Ep. 2)”