Wednesday, February 28, 2007

Komentarai

Ayende@Rahien bando spėti, kas bus NHibernate ORM įrankiui, kai bus išleistas Linq.

"ADO.Net for Entities <...> is the usual 80% solution, with a hood welded shut in all the interesting locations."
Labai teisingai pasakyta. Skirtingai negu dauguma laisvų projektų, kuriuose visa valdžia atiduodama programuotojui, Microsoft ir kituose uždaruose produktuose yra tas pats apribojimas - kodas negali būti modifikuotas ar išplėstas. 80% atveju tai yra gerai, tačiau likę 20% bus nepatenkinti.
<...> an ORM that comes from Microsoft is probably going to be popular because it comes from Microsoft.
Taip pat visiška tiesa. Ir tai yra didelė programa. Daug programuotojų tiesiog bijo įvertinti savo galva naudojamą technologiją ir įvardyti jos trūkumus ir minusus. Jei kažkokia technologija yra Microsoft gaminama, ji nebūtinai yra geriausia. Taip, tikrai Microsoft produktai yra geri, tačiau yra ir geresnių.

Tas pats yra ir duomenų bazių sferoje. Oracle yra absoliutus lyderis nesvarbu kokiu aspektu nagrinėsi. Programuotojai tiesiog nelygina duomenų bazių. Oracle yra de facto lyderis visose srityse. Taip, Oracle yra galingas, tačiau turi būti ir poreikiai dideli.

Beje, kalbant apie kodo kokybę. Vakar VU MiF paskaitose išgirdau įdomų teiginį. Teiginys buvo toks - niekas kodo nedokumentuoja. Kai pabandžiau tam paprieštarauti, jokio palaikymo nesulaukiau, net iš dėstytojo. Kasžin kaip VU MiF gali studentus išmokyti būti gerais IT specialistais, jei net patys dėstytojai nesupranta elementaraus dalyko - norint rašyti geras ir tikrai kokybiškas programas kodo komentarai tiesiog gyvybiškai svarbūs, nekalbant apie testus ir gerą OOP suvokimą.

Ayende@Rahien straipsni - What would happen to NHibernate after Linq ships

Tuesday, February 27, 2007

Selenium testavimo įrankis

Šį vakar 1800 baltupiuose esančiose MiF patalpose skaitysiu pranešimą apie automatizuotus internetinių programų testavimo įrankius.

Apžvelgsiu Selenium įrankį

--
Pranešimas įvyko, tačiau auditorija liko nesupratusi, ką aš pristatinėjau.

Teks laukti jūsų, skaitytojai, komentarų prezentacijai ir taisyti pagal pasiūlymus ;)

Prezentacija : pdf odp

Friday, February 23, 2007

Object/Relational mapping tools

Object Relational Mapping tools - įrankiai, susiejantys reliacines duomenų bazes ir objektus. Nesu guru šioje srityje, bet kiek žiūrėjau, yra keli variantai:

* Naudoti kokį nors savo rašytą O/R mapping įrankį
* Naudoti kitų parašytą.

Pirmuoju variantu viskas paprasta - jūs miręs, jei norite savo rašyti, nebent norite pralenkti jau esamus produktus. Sėkmės tokiu atveju!

Antruoju - galima išsirinkti begalę variantų iš čia: http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software

Pats esu susipažinęs su keliais variantais:
- Neo - http://neo.codehaus.org/
- NHibernate - http://www.hibernate.org/343.html
- Castle.ActiveRecord - http://www.castleproject.org/activerecord/index.html


Neo yra neblogas variantas tuom, kad
* lengvai išmokstamas,
* saugomus objektus apibūdini XML aprašu, kuris nėra sudėtingas,
* galima rašyti "enterprise distributed systems".
* Be to, sėkmingai naudojome kuriant paprastą desktop aplikaciją.

Neo minusai:
* objektus galima traukti tik tik per paprasčiausias užklausas. Jokių grupavimų ar agregavimų
* Jokių tiesioginių SQL vykdymo galimybių,
* duomenų bazių palaikymas nedidelis (FireBird, MSSql, MySql, ir kitos).

Asmeninė nuomonė - labai šaunus variantas pradiniam susipažinimui su O/R įrankiais




NHibernate yra monstras, trumpai tariant. Sunku sugalvoti kokių galimybių jums reikia, kurių jis netūrėtų.

* Kešavimas pirmo lygio
* Kešavimas antro lygio
* Lanksti užklausų kalba įskaitant agregavimo ir grupavimo funkcijas
* Tiesioginių SQL sakinių ar procedūrų vykdymas.
* Naujų objektų kūrimas grąžinant užklausą
t.y. tarkime jūs turite Mokinius ir turie Supermenus. Galima rašyti tokią užklausą: select new SuperMokiniai (Mokiniai.Name, Mokiniai.SuperAbility) from Mokiniai, Supermenai where ....
* Duomenų bazių palaikymas didelis.
* Galimybė turėti "composite" pirminius raktus, t.y. pirminį raktą gali sudaryti keli atributai.
* Galimybė gauti objektų savybes, o ne pačius objektus.
* Didelė bendruomenė
ir taip toliau. Turbūt praleidau dar pusę jo savybių.

Minusai:
* NHibernate yra monstras
* Sunku išmokti
* Objektus reikia parašyti xml'u, kuris yra labai komplikuotas ir painus

Pastaba. NHibernate yra .net'inis Hibernate klonas.



Castle.ActiveRecord yra trečias, ir, žinoma, geriausias variantas.
Catsle.ActiveRecord yra ActiveRecord projektavimo principo įgyvendimas .net'inėje aplinkoje naudojant NHibernate kaip pagrindą.

Pliusai:
* Paprasta išmoki
* Galimybės tokios pačios, kaip NHibernate
* Nereikia rašyti XML'ų
* Auganti bendruomenė

Minusai
* Jei reikia tikrai įmantrių galimybių, geriau dirbkite su NHibernate, bet jei reikia greičio, naudokite Castle.ActiveRecord