2008. április 29., kedd

Ikongyár lustáknak

Ez a post nagyjából egy hónapja született a Maps háza táján. Az ikongyár, amiről szó van, nem egy nagy durranás, mégis jelentősen egyszerűsíti az ikonkészítést. Persze ha igazán egyedit és szépet akarsz csinálni, akkor jobb a hagyományos mosópor, magyarul vegyél elő egy képszerkesztőt, aztán használd a GIcon image és shadow tulajdonságait.
Viszont nekem éppen ma gyorsan kellett két egyszerű, színes ikonocska, amit így 1 perc alatt készítettem el, míg ha nekiálllok szöszmötölni a képszerkesztővel, akkor tuti rámegy egy órám, mert hát akkor már csináljuk meg rendesen.
Na persze tartok tőle, hogy végül nem fogom megúszni, de most hirtelen jól jött.

2008. április 25., péntek

Párhuzamos fordítás MSBuild -del

Ebből a postból megtudhatod, hogyan buildelhetsz párhuzamosan MSBuild-del, kihasználva a többmagos proci lehetőségeit. Érdekes...

2008. április 22., kedd

Kövesd az olimpiai lángot

Az előző postból kimaradt:
Ezen az oldalon az olimpiai lángot lehet elkísérni a világ körüli útján. Technológiailag nem egy nagy kaland a dolog, de azért mégiscsak olimpia vagy mifene....

Ismét google maps mashupok

Rábukkantam (hogy miért csak most az jó kérdés) egy magyar google map katalógusra.
Ezen a lapon pedig néhány olyan mashupra, ami mindenképpen említésra méltó.

Bűnözési térkép

Szemléletes példája, hogy milyen térképes alkalmazást NE csináljunk. Rendkívül érdekes témából, rengeteg értékes adat felhasználásával egy ronda, igénytelen, a 90-es éveket idéző honlap. Egy 20 soros CSS és egy jó kép kellene csak. Bár elnézve a külföldi hasonló témájú oldalakat, nem biztos, hogy ez legrosszabb, de ez kétes dicsőség.

Magyarország legnagyobb fái

Az oldal adatai a Google Earth-ben is elérhetőek. Szerintem aki valamelyennyire is természetkedvelő, annak egészen biztosan érdekes ez a honlap, mint ahogy nekem is. A tegnapi erdei futásom nyomvonalát a GE-ben követve figyeltem fel egy fa-ikonra a térképen, ugyanis a Vöröskő völgyben is van egy nevezetes fa. Sajnos nem tudom melyik az, de a legközelebbi alkalommal feltétlenül felkeresem, ha ismét arra járok.
Ami a kinézetet illeti, éppen jól szemlélteti azt, amit az előző térképnél írtam, vagyis, hogy miképpen lehet egy egyszerű CSS és pár jó kép és némi ízlés segítségével kis ráfordítással is normális kinézetet produkálni. Persze "De gustibus non est disputandum", hogy latin műveltségemet is fitogtassam.

Végül egy vitathatatlanul hasznos és egyben rendkívül "webkettes" oldalra is rábukkantam.
Az oldal tavaly nyár óta létezik, nem értem hogyan bújt el eddig előlem. A lap a Wikimapia és a Yellow Pages ötvözete. Talán szerencsésebb lenne bizonyos esetekben itt is befoglalókkal dolgozni pushpinek helyett, de ez csak kukacoskodás. Az oldal élő bizonyíték arra, hogy hogyan tudja egy low-budget közösségi oldal frappánsan megoldani azt, amit nem egy "hagyományos" kereskededelmi oldal sokmillióért sem.

2008. április 9., szerda

Hatékonyságnövelő tippek a Visual Studio 2008-hoz

Az egyik MSDN blogban megjelent egy bejegyzés, 10 tippel, ami a kódolás hatékonyságát növelheti Visual Studioban.
Ki ne szeretne hatékonyabb lenni, hát átolvastam, itt most továbbadom, a saját véleményemmel kiegészítve. Amit jónak tartok így jelölöm: (!), amit nem azt így (?), ahol ezek a jelek nem szerepelnek azt döntsd el magad :)

1. tipp: Tanuld meg a gyorsbillentyűket.

Ez nem túl fantáziadús javaslat, mondhatnám, hogy triviális, de tény ami tény, valóban hatékonyságnövelő tényező, ezért is hívják úgy, hogy GYORSbillentyű.
A legfontosabbakat felsorolja a cikk, bár SZVSZ ezeket mindenki ismeri, hacsak nem ma látott először Studiot.
  • Build: CTRL + SHIFT + B
  • Word completion: CTRL + SPACE
  • Start with debugging: F5
  • Start without debugging: CTRL + F5
2. tipp: Automatikus dokumentációgenerálás GhostDoc segítségével (?)
Ez a tipp erősen vitatható. Egyetlen esetben van értelme használni, ha valaki olyan cégnél dolgozik, ahol a dokumentációt "kilóra" mérik. Ugyanis egyedül ilyen esetben csinál épeszű ember ilyen "dokumentációt":

Vagy ilyet:
A magam részéről úgy gondolom, hogy ennek semmi értelme. Ugyanis a függvény, property, osztály neve ha "önleíró", mint fent, akkor gyakorlatilag csak szószaporítás az ilyen típusú dokumentáció, ha azonban nem az, akkor semmilyen automatikus eszköz nem tudja értelmesen dokumentálni, csak a programozó.

3. tipp: Használd az automatikus tulajdonságokat
Ezt én inkább így írnám:
Használd ki a nyelvi újdonságokat (!)

Az automatikus tulajdonságok egy hasznos újítás a C# 3.0-ban. Mindenkit bátorítanék ennek az anyagnak az átolvasására, aki még nem tette, itt minden újdonság, szépen jól magyarul olvasható el.
A hatékonyságnövelő újdonságok bajuszokban, rövid példával:

Automatikus tulajdonságok


Új lehetőség az objektumok inicializálására



Lokális típusfeloldás


Lambda kifejezések


Erről itt írtam egy szemléletes példát.

4. Tipp: Használd a Refactort

Ha nem tudsz vagy nem akarsz automatikus tulajdonságot alkalmazni, hasznos lehet a Refactor menü Encapsulate field... menüpontja.
Így kezded:


..és ez lesz belőle:

A Rename is igen hasznos lehet, bár néha igen lassúcska, illetve kétségtelenül hasznos és (általam) gyakran használt tool az Extract interface..., ami nem meglepő módon interfészt állít elő az osztályunk alapján pikk-pakk módon.

Az 5. tipp (egyéni parancsok) részben emlegetett PowerCommands toolt ki fogom próbálni, mert a projekt oldalán látok néhány ígéretes dolgot (Copy/Paste Class, Copy/Paste References).

6. tipp: a build testreszabása

Egy nagyobb projekt esetében perceket vehet el az életünkből fölöslegesen, ha olyan dolgok is be vannak kapcsolva a projekt fordítása során, amelyekre például csak a végső változatban lesz szükség. Példaként a post az XML dokumentáció generálását hozza. Érdemes ezekre odafigyelni.



7. tipp: használd a VS unit test generáló funkcióját (??)

Hát ez nálam erősen kérdőjeles. Nem tudom mennyit ér egy ilyen automatikusan generált teszt. Érzésem szerint ez ugyanaz a kategória, mint a fentebb tárgyalt automatikus dokumentálás, vagyis csak kilóra van haszna, érdemben nem nagyon. Emgem ez azért sem érint különösebben, mert az NUnit és a Testdriven.NET használata mellett köteleztem el magam egyelőre, így a VS saját teszteszközeit nemigen használom.

A következő két tipp valóban hasznos, azonban a C#-hoz, de főleg a Studiohoz társítani némileg erős, hiszen mindkettő iknább módszertani kérdés, bár a szükséges eszközök valóban rendelkezésre állnak VS2008-hoz, ha másképp nem, hát külső fejlesztésként.

8. tipp: Interfész-központú tervezés

Az interfész alapú tervezés az én olvasatomban az agilis módszertanok fegyvertárába tartozik. A cikk arra mutat rá, hogy ennek a módszernek jelentős hatékonyságnövelő hatása lehet, főleg teamek esetében. A lényeg röviden annyi, hogy a többrétegű alkalmazások fejlesztésekor legelőször a kommunikációs felületek kialakítása a célszerű, mert így a csapat tagjainak nem kell egymásra várniuk, hiszen például az üzleti logika készítői elkészíthetik a saját - nyilván egyszerűsített - adathozzáférési objektumaikat vagy a következőben emlegetett mocking technikát alkalmazhatják, így párhuzamosan tud zajlani a fejlesztés szorosan kapcsolt rendszer esetében is. Jah igen, ami a Visual Studiot illeti, az objektumtervező lehetőséget ad minimális erőfeszítéssel az interfészek előállítására



9. tipp: A függőségek kiiktatása mock objektumok segítségével

A tipp kétségtelenül hasznos, bár ez nem a Studio vagy a C# fejlesztőinek érdeme :)
Mivel jómagam is newbie vagyok a tesztvezérelt fejlesztésnek nevezett metodológiában, ezért nem szeretnék itt mélyen belemenni a dolog taglalásába. A lényeget már majdnem le is írtam az előző pontban. Gyakorlatilag arról van itt szó, hogy az álobjektumokat egy eszköz segítségével úgy állítjuk elő, hogy azok megvalósítsák azokat a függvényeket, tulajdonságokat, amelyeket a tesztek során használni szeretnénk (lehetőség szerint CSAK azokat). Így egyrészt valóban függetlenítjük a programrészünket a többitől, másrészt a tesztjeink jelentősen gyorsulhatnak is, ha ezzel a módszerrel kiiktatunk például adatbázisműveleteket vagy más idő és erőforrásigényes eljárásokat. A cikk írója által ajánlott rendszer a RhinoMocks névre hallgat, jómagam is ennek használatába kezdtem bele a közelmúltban, az elterjedtsége és nem utolsó sorban az ingyenes volta miatt.
A cikk szerzője hoz egy rövid példát is, amit idelinkelek:



10. tipp: Adatvezérelt egységtesztek

Ismét röviden arról van itt szó, hogy X darab teszt írása helyett egyetlen tesztet írunk, amelyet a VS segítségével egy adatbázis X sorára lefuttathatunk. Ez a tesztek írását valóban gyorsítja, ellenben a futtatáskor - az előző pontban írottal szemben - éppen, hogy megterhetljük a tesztet egy kvázi fölösleges adatbázis és/vagy fájlolvasással. Én kis adatmennyiség esetében (és hogy ne kelljen megválnom a jó öreg NUnittól ;)) inkább az NUnit egyik kiegészítőjét használom (RowTest Extension for NUnit). Ki-ki döntse el, hogy melyiket akarja szeretni.

2008. április 8., kedd

VS2008 probléma: Cannot copy file because it is being used by another process

Unit tesztek esetében nálam is rendszeresen előfordul VS2008 alatt az a probléma, aminek a megoldását most olvastam. Még nem próbáltam ki, remélem használ...

Hírolvasó funkció a Google Earthben

Ismét a webisztán nyomán leltem ezt a hírt. Ez a téma akkor lenne igazán szép, ha mondjuk nem csak desktopon lenne elérhető, hanem mondjuk mobilon is meg bárhol is, magyarán, ha a Maps-szel lenne integrálva. Ha meg neadjisten volna hozzá valami jó szűrő- elemző eszköz, az maga lenne a gyönyör, de ez csak egy GIS mániás álma egyelőre.
Korábban írtam a National Geographic geotaggelt cikkeiről is, az még erdekes lehet annak, akinek ez is az.

2008. április 2., szerda

Quick-n-dirty megoldás tömb rendezésére Lambda kifejezéssel

A napokban egy könyvtárban együtt levő fájlokkal kellett dolgoznom. Ha nem csak a fájlnevekre van szükségünk, akkor ennek legegyszerűbb módja a DirectoryInfo objektum GetFiles metódusának használata.

private DirectoryInfo mPictureDir;
....
....
FileInfo[] fileEntries = mPictureDir.GetFiles(mSearchPattern);
Igen ám, de ez a tömb egyáltalán nem biztos, hogy a nekünk megfelelő módon rendezett, így rászorolunk az Array.Sort használatára. Jelen esetben név szerint szeretném rendeznia tömböt.

Mit is csináltunk korábban egy C# 2.0-át használó alkalmazásban?
Array.Sort(fileEntries, delegate(FileInfo x, FileInfo y)
{
return x.FullName.CompareTo(y.FullName);
});
Ez a C# 3.0 alatt a lambda kifejezések jóvoltából valóban QUICK módon leírható:

Array.Sort(fileEntries,(x,y) => x.FullName.CompareTo(y.FullName)) ;
Hasznos kis jószág ez, hiába...
A lambda kifejezéseknek már magyarul is van némi irodalma.

2008. április 1., kedd

Jang - képernyőfelvétel bárhol, bármikor

Éppen egy régebbi Camtasiaval kínlódtam, mikor Biri felhívta a figyelmemet a TechSmith egy új community projektjére. A cucc első tesztjeim alapján kiválóan használható és ami nem mellékes , mindenféle egzotikus formátumok helyett flash-be konvertálja a felvett anyagot, így az könnyedén publikálható neten, vagy bátran terjeszthető anélkül, hogy aggódni kellene amiatt, hogy a kliensnek ugyan van-e megfelelő kodekje, ha nincs, akkor pedig képes-e a telepítésére (mert ez sem mindig egyértelmű). Ráadásul a szemnek is nagyon kellemesen megoldott a dizájnja nem megy a kezelhetőség rovására, sőt.
Az alap kezelőfelület mindössze ennyi:

Rendhagyó "könyvkiadás" a Google Maps -on

A webisztán nyomdokain fedeztem fel azt a rendkívül érdekes módon közzétett novellát , amit a szerzője egy Google Maps mashup segítségével tárt a nagyérdemű elé.
Mi mindenre lehet jó egy internetes térkép :)
Nem csodálnám, ha a dolog divatba jönne, a geotaggelt blog már eddig is adta magát.