2008. május 28., szerda

Böngészőbe ágyazott 3D a Google Earth API-val

Mai hír, hogy a Google Earth team kihozta a Firefox, IE6 és 7 alá a Google Earth plugint. A Microsoft Live Mapja IE alatt már régóta tudott nekünk 3D-t mutatni, ideje volt, hogy a guglinál is kijöjjön valami hasonló.
Állítólag remek API-ja van, alig várom, hogy kipróbáljam :)

2008. május 27., kedd

Újabb ingyenes e-book .NET témában

Bár inkább cikkgyűjteménynek nevezhető, ami a Simple-Talk közösségi szájt néhány írását fogja egybe. Bár ha jól sejtem elsődlegesen a marketing célokat szolgált a gyűjtemény létrehozása, illetve közzététele, de ettől függetlenül rendkívül hasznos anyagnak tűnik első blikkre. Olyan problémák kerültek be a válogatásba, amik közül jó esélyyel legalább egyeel minden ASP.NET-tel foglalkozó fejlesztő találkozott már.
Letölthető innen.

GPS-szel rajzolták a világ legnagyobb portréját

A Figyelőn találtam egy rövid hírt a GPS-nek erről a szokatlan felhasználási módjáról.

2008. május 25., vasárnap

Google Maps geokódó elérése GET protokollal

A Webisztán egyik bejegyzése - amely arról szólt amit korábban én is leírtam itt - kapcsán az egyik nyájas olvasó megkérdezte, hogy GET protokollon keresztül miért nem lehet elérni a Maps keresőjét.
Hát kérem az a helyzet, hogy GET-tel is elérhető, minimál túrás után rá lehet jönni, de rendes vagyok és beírom :)
http://www.google.com/maps?q=budapest, kossuth tér
A querystringet nem árt urlencode-olni, de az okosabb böngészők megteszik helyetted. (http://www.google.com/maps?q=budapest,%20kossuth%20t%E9r)
Azt nem tudom mennyire recommended a használata, de működik. Persze ha komolyna gondoljuk a dolgot, akkor mindenképpen a GClientGeocoder osztály használata javallott az API-ban.

2008. május 24., szombat

Újabb ikongyár

Nemrég ismét találtam egy, a hozzám hasonlóan térkép-mániás illetők számára hasznos eszközt, a változatosság kedvéért ismét térképi jelek gyártására. Színes szagos, de egy kis reklámot el kell viselni.
http://www.cartosoft.com/mapicons/

A google maps geokódolása sem tökéletes

Mostanában játszogattam a különböző térképszerverek geokódoló eszközeivel, némileg szubjektívan összehasonlítva őket.
Az eddigi kedvencem a Bükki Nemzeti Park volt, ezzel teszteltem a főbb térképalkalmazásokat, vagyis a Yahoo, a MS Live és a Google térképi szolgáltatásait. A múltkor pedig az itt megénekelt versennyel kapcsolatosan Siófok egyik utcája a Fasor sétány volt az ad-hoc tesztelés alanya.
A Yahoo adatbázisa Magyarországra elég részletes, de annyira azért nem, hogy az olyan földrajzi neveket mint a BNP vagy Siófok kicsi utcácskái megtaláljon. Siófok esetében a szándék megvolt, hiszen legalább a várost meglelte, de a BNP-vel bizony nem boldogult.
A Live esetében legalább háromszor írtam be a keresési feltételt, mire észrevettem, hogy szegénykémnél az alapértelmezett nem a Location hanem a Businesses. Hogy ezt ki találta ki, nem tudom, de monnyon le. Na persze mikor végül beírtam, akkor sem volt benne köszönet. Microsofték szerint Siófok kb 3 utcából áll (mondjuk arra legalább ránagyított), viszont a BNP-t valahogy megtalálja. A fene se érti...
A Google esetében az adatbázis teljesen rendben van. A BNP-t gond nélkül meglelte, a siófoki címnél viszont érdekes dologra figyeltem fel. Eddig a geokódoló algoritmusukat jónak tartottam (bár jelen esetben a cím felparsolására gondolok, ami bele is érthető meg nem is), de a mostani próbálkozás alkalmával a nem létező Fasor utcára kerestem. Nem is találta meg, mivel a Fasor sétányt írták el a lapon, ahonnan vettem a címet. Pedig ha én geokódoló algoritmus lennék, akkor számomra, eléggé magától értetődő dolog lenne, hogy ha találok egy darab közterületnevet ami hajszálra egyezik, akkor azt legalább illene kirakni, ha egyezik a jelleg, ha nem. De még egy egyszerű LIKE vagy szavankénti keresés is visszaad találatot ebben az esetben. Szerintem legalábbis ennek így kéne működnie.

2008. május 23., péntek

Google Maps: WIKIpedia és fotók

Az utóbbi időben lassabban sikerül követni a dolgokat a kedvenc területemen, illetve legalábbis írni róla.
Már két hete is van, hogy hírül adták, miszerint a Google Maps, az Earth-höz hasonlóan kibővült két réteggel. Az egyiken geolokált WIKI bejegyzések olvashatók (sajnos egyelőra csak az angol WIKI :( ), a másikon pedig a Panoramio fotói érhetőek el.
Előbbi esetben nem világos, hogy miért nem keres a felhasználó nyelvének megfelelő bejegyzések között, holott a WIKI ad erre lehetőséget, utóbbi esetben viszont azt nem nagyon értem, hogy ha már a Picasa lehetőséget ad geokódolásra, akkor vajh miért nem jelennek meg a Picasa fotók is, ha már gugli szoftver... Ezt persze főleg azért sajnálom, mert így nem láthatjátok az én Picasas képeimet :)

2008. május 21., szerda

Adatbázis tesztelése tranzakciók használatával

Ez az iromány valahogy piszkozatban ragadt úgy egy hónapja és csak most vettem észre. Sebaj, jobb későn mint soha.

Az adatbázis kommunikációval is foglalkozó alkalmazások esetében örök probléma, hogy mit is tegyünk, hogy ki is legyen tesztelve a megfelelő osztály, de lehetőleg azonosak legyenek a feltételek, ne is szemeteljük tele az adatbázist, pláne ne kelljen "kézimunkázni".
Szégyen ide, szégyen oda, de csak nemrégiben, egy neten talált példa alapján esett le a tantusz, hogy a legkézenfekvőbb megoldás, ha tranzakciót használunk, így a tesztadatok nem zavarják köreinket amikor nem kell. Hiába, az újszülöttnek minden vicc új.

A megoldás lényege röviden leírható:

Vagyis a setupban elindítjuk a tranzakciót, a teardown-ban pedig szépen eltüntetjük, a tesztadatokkal együtt, mintha ott se lettek volna.

Ne feledkezz meg a a System.Transactions.dll referenciába tételéről és persze a System.Transactions névtér usingolásáról!

(Egyben be szeretném mutatni a csodálatos új dark színösszeállításomat, amire itt tettem szert :))

2008. május 15., csütörtök

Fájlműveletek tesztelése

A piszkozatok között kallódott egy marék forráskód, megnézegettem mi lehetett ez.
Nos hát...
Egy időben problémám volt az egységteszteléssel fájlokat használó metódusok esetén, erre találtam egy megoldást. Lehet, hogy van ennél jobb is, de a célnak megfelelt.
Bár ha jobban belegondolunk lehet róla vitatkozni, hogy egységtesztelésről vagy inkább integrációs tesztről van-e szó, hiszen a programunknak a fájlrendszerrel való együttműködését teszteljük. De a talált maréknyi kód szempontjából ez nem is érdekes :)

Az alkalmazás valami képeket méretezett és nevezett át, aztán lementette az átméretezett képeket.

A probléma ott volt, hogy úgy lehessen tesztelni, hogy lehetőleg ne kelljen semmi spéci beállításokat csinálni, ne kelljen rendszergazdai jog stb., de a tesztállományokat kiírni, majd a futás végén letörölni gond nélkül tudjam bármelyik gépen. A program a DirectoryInfo osztályt használta, amit az én szintemen lehetetlennek tűnt mockkal vagy bármi más módon kiváltani. Így jött az ötlet, hogy az aktuális felhasználó profilja alatti temp könyvtárba fogom pakolni az tesztállományaimat. A temp könyvtár elérését a  .NET prímán támogatja, a Path osztályon keresztül.

DirectoryInfo d = new DirectoryInfo(Path.GetTempPath());

A Path osztály további finomságokkal is szolgál, például elegánsan fűzhetünk össze vele útvonalakat. Ráadáasul ha ezt a módszert szokja meg az ember, akkor elvileg MONO alatt azonnal fordíthatja a kódját, nem lesz probléma az oprendszerek különböző szeparátoraival. (Azért mondom, hogy elméletben, mert ezt én még sosem próbáltam, de működnie kellene.)

DirectoryInfo d2 = new DirectoryInfo(Path.Combine(d.FullName, "backup"));

A teszteléshez használt fájlokat egyszerűen resource-ként belefordítottam a tesztprogramba, így már szépen létrehozhatom a tesztállományaimat a teszt indításakor:


        [TestFixtureSetUp]

        public void SetUpDir()

       {

            ...

            ...

            ...

            TestResource.Image1.Save(Path.Combine(d2.FullName "23817_2_01.jpg"));

            TestResource.Image1.Save(Path.Combine(d2.FullName, "23817_2_02.jpg"));

            ...

            ...

            ...

        }

A teszt után pedig, visszaállítandó az eredeti állapotot törölhetem a tesztállományokat. A megoldás nem túl szofisztikált, de a célnak megfelel, tesztelni lehet a programot. Ha valaki tud erre jobb megoldást írja meg ;)

2008. május 12., hétfő

Visual Studio 2008 és .NET Framework 3.5 SP1 Beta

Ma reggel jött ki a fent említett SP1 szervízcsomag bétája, olyan friss, hogy még meleg.
A csomagban sok WPF-es javítás van, a WCF-fen is reszeltek valamit.
Véleményem szerint a két legfontosabb újdonság a teljes SQL2008 support (eddig ehhez kellett egy kiegészítő), illetve a sokak által kíváncsian várt Entity Framework, mégpedig a VS-be integrált kattogós dizájnerrel karöltve. Állítólag a JS szerkesztőn is javítottak, ami azt illeti ezen van is mit és bekerült valami, aminek pár éve még nagyon örültem volna, mégpedig a klasszikus ASP intellisense támogatás.
ScottGuthrie egy bejegyzésben szépen összeszedte az újdonságokat, ajánlatos átfutni.
Még alig kezdtem el felrakni a pakkot máris vidám pillanatokat szerzett nekem a .NET FW telepítője :)

2008. május 10., szombat

Utólagos véleménymódosítás GhostDoc témában

Korábban egy MSDN blogbejegyzés nyomán írtam többek között a GhostDoc nevű csodáról. Akkor feltettem, kipróbáltam, de nem voltam nagy véleménnyel a dologról. Nos, azóta sok víz lefolyt a homlokomon és kénytelen vagyok nyilvánosan megváltoztatni a véleményemet. Igenis jól használható kis eszköz ez, ha az ember ráérez az ízére, hiszen ha szép beszédes függvényneveink vannak, akkor a legtöbbször elég néhány szót hozzáírni vagy megváltoztatni és egész használható doksit kapunk. Nem utolsó sorban rászoktat, hogy beszédes neveket használj ;)

2008. május 7., szerda

MS SQLServer 2008 termékbejelentő konf

Tegnap lezajlott az SQL Server 2008 bejelentése. Ami engem illet, felületesen már tájékozott voltam a témában, Soci idevágó blogbejegyzéseinek köszönhetően. Természetesen nagy érdeklődéssel vártam a térbeli adattípusok bemutatását, ami sajnos az én ízlésemnek kicsit felületes volt, de belátom, hogy a GIS téma végül is elég szűk réteget érint, figyelemfelkeltésnek pedig végül is jó volt. Amire azért felkaptam a fejem az a spatial index téma. Nekem úgy tűnt nagyon hatékonyan működik a dolog, legalábbis a demo alapján, valamint a háttere is érdekes, az elméletnek máshol is hasznát lehet venni. Volt egy rövid szösszenet arról is, hogy hogyan lehet földrajzi helyett időbeli dimenzióra használni az adattípust. Ami viszont szakmailag kicsit fájt, az az volt, hogy amikor a vetületekről és koordinátarendszerekről volt szó, egyrészt eléggé pongyola volt a megfogalmazás, másrészt, hogy a magyar vetületi rendszerről (gyk. EOV ;)) annyi hangzott el, hogy "Van valami magyar is....". Szóval még a neve sem, így aztán gyanús, hogy nem támogatja a cucc, de utána fogok nézni.
A másik érdekesség, amit epedve vártam az Entity Framework volt. A demo alapján már egész használhatónak tűnik a dolog, ha a teljesítményteszteknek hinni lehet, akkor érdemes is lesz. Van hozzá pöpec GUI, természetesen most már VS 2008-cal is teljesen jól megy, állítólag az SP1 -ben már benne lesz az egész, tokkal, vonóval. A bibi csak az, hogy nem tudni mikor lesz SP1. Felkerült a kipróbálandók listájára :)