Szakmai és kevésbé szakmai bejegyzések webes térképekről, szoftverfejlesztésről, térinformatikáról meg csak úgy...
2008. május 28., szerda
Böngészőbe ágyazott 3D a Google Earth API-val
Á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
Letölthető innen.
2008. május 25., vasárnap
Google Maps geokódó elérése GET protokollal
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
http://www.cartosoft.com/mapicons/
A google maps geokódolása sem tökéletes
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
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
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
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
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
2008. május 7., szerda
MS SQLServer 2008 termékbejelentő konf
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 :)