2009. szeptember 8., kedd

DIGITÁLIS GÉNEK, avagy Csaó Darwin!

Az ember mindig is kíváncsi volt a természet rejtélyeire, igyekezet megismerni belőle minél többet. Folyamatosan kezdte el másolni, ami később a művészetében, formáiban és mindennapi eszközeiben egyaránt megjelent. A modern korban a számítástechnika rohamos fejlődésének köszönhetően már nem csak tárgyak, hanem folyamatok is modellezhetők, kihasználva, hogy számolási kapacitásaink jelentősen megnőttek. Ezen cikk a matematika és a biológiai modellhasonló és alapjaiban különböző tulajdonságaira szeretne rámutatni a teljesség igénye nélkül. Így aztán Horatius után szabadon inkább in medias res a dolgok közepébe vágok és megpróbálom a magam egyszerű módján legombolyítani gondolataim fonalát.
„…elképzelem, hogy egyszer majd egy lelkes tudós ikreit Adeninnek és Timinnek fogja nevezni.”
Francis H. C. Crick.
Talán csak egyetlen egy olyan molekulaféleség létezik a világon, amelyet mindenki ismer, aminek a neve ma már „márka”, amitől mindenki a csodát várja, és amitől mindenki egy kicsit fél. Ez a DNS.
E. SCHRÖDINGER Nobel-díjas osztrák fizikus egy fiatal tudományról már keletkezésekor megállapította: „…alighanem napjaink legérdekesebb tudománya”. Személyes adatai:

Neve: Molekuláris Genetika
Születési éve: 1944
Születési helye: Rockefeller Intézet, New York
Apja neve: Klasszikus Örökléstan
Anyja neve: Kémia

Tapsvihar! Hiszen ez életünk egyik legnagyobb vívmánya, az emberiség „szép új világának” kapuja, a sci-fi írok megtestesült álma és minden jogi, etikai, ökológiai, szociológiai és teológiai probléma okozója. Pedig nem több mint a nukleáris energia reinkarnációja mégis van benne valami csodálatos. Ez nem véletlen, hiszen maga a DNS és a genetika hatalmas intellektuális izgalmat és kihívást jelent mindenki számára. Így volt ezzel Darwin is, aki főművében (A fajok eredete) ezt írja: „…egész munkám egyetlen hosszú gondolatmenet…” (15. fej., 1. mondat) Persze nem azt állítom, hogy Darwin értett a molekuláris genetikához, de hatalmas lépést tett felé, sőt maga az evolúció elmélete minden kritikától eltekintve talán még nagyobb eredmény, mint a 21. század molekuláris genetikája. De mit is értünk evolúció alatt? Mi Darwin elmélete? Hogyan kerül a képbe a genetika?

A dolgok jelenlegi állása

Darwin elmélete szerint, ha képesek az egyedek exponenciális mértékben szaporodni de a környezetük eltartóképessége véges, akkor az egyedek között a legapróbb különbség is fontossá válhat és ez a létért folyó küzdelemhez, és kiválasztáshoz vezet, azaz a gyengébb elpusztul az erősebb tovább él. Természetesen az egyedileg eltérő, örökletes változatok eltérő mértékben sikeresek. Az örökletes eltérések a folyamatos kiválasztás révén felhalmozódnak, ami adaptációkat (a túlélést és a szaporodást, segítő jellegeket) hoz létre. Látatjuk hogy a szelekció, mint egyszerű elv, hogy képes létrehozni a fajok sokszínűségét. Természetesen ez önmagában nem elegendő, Darwin többször ki is kéri magának ezt a gondolatsort, „Meg vagyok győződve arról, hogy a természetes kiválasztás volt a módosulások legfontosabb, ha nem is kizárólagos eszköze”. Azonban a szelekciónak, mint vezérlőelvnek van még egy nagyon érdekes tulajdonsága, mégpedig az, hogy absztrakt fogalom és nem függ az élő földi világtól. Ugyan ez a helyzet az evolúcióval is, ez is elvonatkoztatható a bioszférától.
Ezt a gondolatot fogalmazza meg Csányi Vilmos Evolúciós rendszerek című munkájában, amiben az evolúció általános elméletét ismerteti. Ez az absztrakt modell rendszerelméleti fogalmakkal dolgozik, és megmutatja, hogy az evolúciós mechanizmusok nemcsak a biológiában, hanem az anyag csaknem minden szerveződési szintjén érvényesülnek, a molekuláris szinttől kezdve a sejteken és a többsejtű organizmusokon keresztül egészen a társulásokig és ökológiai rendszerekig, vagy az idegrendszertől kezdve a viselkedésen keresztül a kultúráig és a technikai evolúcióig.
Gondoljuk csak példaként a replikátorra amely, egy olyan entitás, amely képes létrehozni saját másolatát, könnyen beláthatjuk, hogy erre nem csak a baktériumok, nyulak és a rókák képesek, hanem milliónyi más dolog is. Ilyen módón lehetőség van arra, hogy az absztrakt fogalmakat többféle konkrét tartalommal töltsük fel, alternatív élővilágot létrehozva ezzel. Így elképzelhetünk olyan „fajok” evolúcióját, mint a gráfok vagy a függvények. Ezek a fura állatok is szaporodhatnak, meghalhatnak vagy mutánsaik jöhetnek létre – a számítógépek virtuális világában. És mire jó ez a matematikai állatkert? Ha a létrejövő egyedek mind egy probléma lehetséges megoldásai, akkor máris van egy optimumkereső algoritmusunk…
Most képzeljünk el egy világot, amiben nincsen Google; nincsen szélessávú internet és nincsen is rá szükség, hiszen még csak most adja el Bill Gates és Paul Allen az Altair 8800-ra írt BASIC-et, a személyi számítógépekhez írt első számítógépes programozási nyelvet a Microsoft első ügyfelének, az Albuquerque, Új-Mexikó székhelyű MITS vállalatnak. Képzeljük el azt a világot ahol a BEK döntőben a Bayern München 2-0-ra veri a Leeds Unitedet, és ahol még a Balatonban is Steven Spielberg Cápája úszkál bambit majszolva; amikor még apáink úgy néztek ki, mint Bobijuing, és az Abba, a BoneyM, meg a Borsodi Világos volt a trendi. Ez a mi világunk csak éppen 1975-öt írunk, és ekkor bukkan fel John Holland, aki a keresési és optimalizálási faladatok megoldásra természetes kiválasztódás darwini elveire épülő adaptív lágy számítási módszert dolgoz ki, másnevén Genetikus Algoritmust (GA).
Ma már nincsen az életnek olyan területe, ahol elkerülhetőek lennének az optimalizálási, adatfeldolgozási feladatok. Már egy mérési eredmény kiértékelése is valamilyen szinten optimalizálás, de természetesen köznapi életünk is tele van ilyen feladatokkal. Gondoljunk csak a napi időbeosztásunk megtervezésére vagy két város közötti optimális út megtalálására. Kellő tapasztalattal ezek a feladatok hamar megoldhatóak, azonban akadnak olyan problémák, amelyekre nincsenek egzakt módszerek, azonban belátható időn belül szükségünk lenne egy „kellően jó” megoldásra, ilyenkor lépnek akcióba a digitális gének és a GA. A GA felépítését a már ismertetett darwini elmélet inspirálta, azaz az élőlények genotípusának és fenotípusának változását veszik a fejlődés alapjául. A fenotípus jellemzi egy egyed külső megjelenését, a genotípus pedig a génstruktúrát. A megoldások egy adott lépésben érvényes halmazát populációnak nevezik, a populáció elemei a feladatot különböző sikerrel látják el, eltérő tulajdonságúak, képességűek. A keresés lépésekből áll, az egyes iterációk populációját generációknak nevezik. A keresés célja, hogy az újabb generációkban létrehozott populációinak minél több eleme legyen közel a jó megoldáshoz, mialatt a gyenge eredményt adók egyre ritkulnak. Az egyes egyedek tulajdonságait kromoszómákkal reprezentálják, amelyekhez hozzárendelhetők a kritériumfüggvény értékéből következő jósági, más szóval a fitnes-értékeik. Az iterációk során a kromoszómákban tárolt információt kell a következő generációkba tovább örökíteni, mely valószínűségi operátorokkal történik. A legegyszerűbb genetikus algoritmus a következő alap-operátorokkal rendelkezik: reprodukció, keresztezés és mutáció. A genetikus algoritmusok így tehát a genotípus változtatásával operálnak. A reprodukció során egy kromoszóma a jósága és a populációba tartozó összes kromoszóma átlagos jóságának aránya által meghatározott valószínűséggel megjelenik a következő populációban is.
Ne lepődjünk meg azon se, ha azt halljuk, hogy a darwini alapelvek már a motorsportban is megjelentek. Gondoljunk csak a Formula 1-re, ahol milliókat költenek évente a jobb kezelhetőségre, a nagyobb biztonságra, ahol az autók helyes beállításával sorsdöntő tizedmásodpercek lefaragása lehetséges a köridőkből. A döntések a tapasztalaton alapulnak, azonban arra nincsen garancia, hogy mindig a helyes beállítást sikerül eltalálni egy-egy verseny előtt. Ezt a problémát boncolgatták a University College London tudósai is, akik kifejlesztettek egy a GA elveken nyugvó számítógépes modellt melynek segítségével nyerő Formula 1-es versenyautókat „tenyészthetnek”. A GA modell ugyanis szelektíven kombinálva optimalizálja a teljesítményt, amelynek köszönhetően akár 0,88 másodperc is lefaragható a köridőkből. Ez pedig tetemes előny egy olyan iparágban ahol századmásodpercek választják el a győztest a vesztestől. A GA erejét azonban abban mutatja meg, hogy egy ilyen elveken nyugvó szoftver akár verseny közben is képes kialakítani az autó „legjobb” beálltásait, így alkalmazkodva az adott pályához, hőmérséklethez vagy akár sérüléshez.
Összefoglalva láthatjuk, hogy a GA is azokon az absztrakt fogalmakon nyugszik, mint a molekuláris genetika vagy akár Darwin elmélete. De vajon miért működik? Miért használható fel bonyolult feladatok megoldására? Maga az evolúció az, ami olyan módszert valósít meg, amely igen nagyszámú lehetséges megoldás között képes „keresni”. Ahelyett, hogy egy fajjal foglalkozna egy időben, fajok millióit próbálja ki és változtatja egyszerre. A biológia rendszerek ezen robosztussága, hatékonysága és rugalmassága megdöbbentő lehet, aminek az alapja az önjavító, önvezérlő és a szaporodó képesség. Ezért ha a tervező mérnöknek szüksége van egy párhuzamosításra képes flexibilis, adaptív modellre, akkor nincs más dolga, mint lemásolni a természetet, a legnagyobb tanárt. Hajrá digitális génsebészek!
Talán ennél jobb végszó nem is zárhatná a cikk végét, de sajnos még nem fejezhetem be, mert a végén képesek lennénk azt hinni, hogy e gének mindenre megoldást kínálnak. Pedig ez nincs így, legalább is szimulációs rendszerek estében. Adott ugyanis egy klasszikus feladat az utazó ügynök problémája (travelling salesman problem, TSP). Voltaképpen könnyen érthető, ám annál nehezebben megoldható logikai-matematikai játék. Az ügynöknek több városon keresztül, a lehető leggyorsabban kell megtennie egy utat. Az összes várost kell érintenie, ám egy adott városban csak egyszer járhat. Melyik a legrövidebb útvonal? Gondolhatnánk a fentiek alapján, hogy GA erre a feladatra is megoldást kínál. Ez így is van de valóban ez a legeredményesebb? Nem lenne e célszerűbb egyből kiválasztani a fenotípus alapján egy olyan egyedet melynek külső tulajdonsága és viselkedése a legjobban felel meg az adott feladatnak? Érdekel e minket, milyen is belül? Érdekes dilemma, de egy biztos, ha útvonalat akarunk optimalizálni, azt bízzuk a hangyákra. Ugyanis a hangyáknak van egy olyan bizonyos képessége, hogy a lehetséges útvonalak közül (feromonlerakódás alapján) rátalálnak a legrövidebbre! Itt most nem gének által leírt digitális organizmusokról van szó, hanem mesterséges hangyakolóniáról. A hangyák a TSP-gráfon városról városra mozgó ágensek - véletlenszerűen indulnak el, virtuális feromont hagyva maguk után. Valószínűség és az információként szolgáló, korábban lerakott feromon alapján döntenek. Miután befejeztek egy-egy utat, a gráf élein hagynak nyomot: (értelemszerűen) a rövidebb út mentén többet. Végül - azt az élt választva, ahol a legtöbb a speciális illatanyag - kialakul az optimális útvonal. Láthatjuk, hogy itt egyből a valódi hangyák viselkedését vettük alapul, mivel őket is az evolúció tenyésztette ki az évmilliók alatt, így felesleges a gének szintjén mindent újra kezdenünk. Elegendő egy bevált, működő stratégiát átvenni és alkalmazni. Pukkk. Hogy lyukadt ki most egyből a molekuláris genetika „isteni” luftballonja.
Természetesen a fentiek nem ilyen egyszerűen értelmezendőek, hiszen az egyenlő lenne a gumilepedőre dobált súlyos tárgyak szemléletes képével azaz a gravitáció hatására meggörbülő einsteini téridővel. Ezt pedig egy bonyolult fizikai elméletről nem gondolhatjuk komolyan. Elvégre a tér idő nem gumilepedő. Így van ez a genetikával és minden komoly tudományággal is. De míg Darwin idejében elég volt az evolúció megértéséhez a Fajok eredetét és még néhány más köznyelven megírt könyvet átolvasni, akkor ez ma már távolról sincs így. A matematika, a játékelmélet, a genetika, a populációbiológia megértéséhez és együttes alkalmazásához rengeteg irodalmon és cikken kell átrágnia magát az embernek, úgy, hogy közben hosszú évek telnek el. Bár a matematika a tudományok királynője ennek ellenére mégis be kell látni, hogy az elkövetkezendő évek a biológia sikerei lesznek. Pontosan ezért érdemes az eredményeit más diszciplínákkal összekapcsolni és olyan kérdésekre választ keresni amik eddig megválaszolatlanul maradtak vagy pedig ennek következményeiként merülnek majd fel. Egy ilyen intellektuális kaland mindenki számára vonzó lehet? Gondolom én, de most be kell fejeznem mert indul a Győzike Show!

USB eszközök gyors eltávolítása

Windows XP és Vista esetében nem túl könnyű néha eltávolítani USB eszközeinket. No, nem azért mintha bármi gond lenne velük, csak néha a felhasználói interfész útvesztőiben könnyedén eltévedhetünk miközben egy apró zöld nyilacskára vadászunk egerünkkel. Ha megtaláljuk a tálcánkon, akkor már szerencsés embernek érezhetjük magunkat, mert néha bizony meg sem jelenik, ha meg mégis, akkor gyakran előfordul, hogy nem a megfelelő eszközt távolítjuk el. Szerencsére van más megoldás a problémára.

1. ábra

Nosza, készítsük el saját parancsikonunkat és billentyűkombinációnkat az USB-s eszközök biztonságos eltávolítására. Hozzunk létre egy új parancsikont! A folyamat a következő Windows Visa esetében: jobb klikk az Asztalon és a megjelenő helyérzékeny menüből válasszuk ki az Új menüpontot azon belül pedig a Parancsikon opciót. Ekkor a Vista Parancsikon varázslója elindul és a Parancsikon célját kérdezi meg tőlünk. Célnak a következő helyet adjuk meg (1. ábra):
RunDll32.exe shell32.dll, Control_RunDLL hotplug.dll
majd klikk a Tovább gombra. Végül pedig a parancsikonunk nevét kell megadni, ami tetszőleges lehet (2. ábra).

2. ábra

Innentől kezdve működik is az ikon, választhatunk hozzá még egy passzoló képet is, hogy jól nézzen ki az Asztalon. A hivatkozás a hardver biztonságos eltávolítása menüt hozza elő, innen még egy gombnyomás az eszközök leállítása. Hogy még jobban felgyorsítsuk a folyamatot, billentyűparancsot is rendelhetünk az ikonhoz. A tulajdonságok között navigáljunk a billentyűparancs menühöz, és nyomjunk meg azt a billentyűt, amelyet használni szeretnénk. A kombó első két része automatikusan a Ctrl+Alt lesz, s ezt követi az a karakter, amelyet megadtunk.
Ugye, hogy máris sokkal komfortosabb az egész?!

2009. július 19., vasárnap

Unable to find manifest signing certificate in the certificate store

A Visual Studio 2008 és a .NET világa valami gyönyörűség. Mindig tud olyat mutatni amin az ember elámul. Hát igen, nincs ez másképpen a hibaüzenetek tekintetében sem. A múltkorában a következő hibát dobta az a drága intelligens:
Visual Studio: "Unable to find manifest signing certificate in the certificate store"
Amikor megpillantottam csak pislogtam mint pocok a lisztben. Mi van? Ámultam és vertem a fejem a földbe. Nem tettem más csak az egyik gépről a másikra másoltam a solution-ömet és rebuild-eltem a projektet. Hoppá, milyen szép magyar mondat lett ebből, de tényleg ennyit tettem csak. Oksa, jöjjön Google apó és halgassuk mit mond erre. Természetesen a kérdés nem maradt válasznélkül. Akkor most jöjjön a solution solutionja: nyissuk meg a *.csproj fájlt és a következő négy sort hideg kegyetlenséggel távolítsuk el:
manifestcertificatethumbprint...manifestcertificatethumbprint
manifestkeyfile...manifestkeyfile
generatemanifests...generatemanifests
signmanifests...signmanifests
Ezután már helyre kell álnia a világbékének és bátran nyomogathatjuk a rebuild gombot.

2009. június 7., vasárnap

Igen.NET - Yes.NET vagy Ja.NET

Egy újabb érdekes projektre találtam rá az Internet hálójában, amely még erősebbé teheti a .NET fejlesztést. Ez pedig a Java 5 JDK for .NET projekt, amellyel Java-t lehet portolni .NET-re és a kód még Mono-val is működik! Nem tud még mindent, de már így is figyelemre méltó tudással rendelkezik, mivel az átportolt részek változtatás nélkül működnek .NET alatt. További részletek…

2009. június 6., szombat

Ciao Nedved!

A 36 éves cseh játékos hétvégén, a Lazio elleni mérkőzésen lépett utoljára pályára a Juventus színeiben. Újságíróknak azt nyilatkozta, örül, hogy végre abbahagyja a játékot, és a jövőben a futásra sem akar gondolni...


"Nagyon nehéz, de egyben csodálatos nap is volt. Éreztem a szurkolók és a társak szeretetét, ami bebizonyítja, hogy óriási dolgokat vittünk véghez együtt. Nem vártam ekkora ünneplést, nagyon boldog vagyok, hogy egy olyan csapatban játszhattam, ahol ilyen rendkívüli szurkolók vannak. Mától többet nem fogok futni, a 11-es számomat pedig Amaurira hagyom, aki nagyon megérdemli. Holnaptól végre minden időmet a családomra szentelhetem, akik annyi éven át vártak rám. Mikor találkozunk legközelebb? Amikor jövök a stadionba szurkolni a csapatnak. Nagyon kötődöm Torinóhoz, itt maradunk, itt élünk majd a családommal.

Mindenkinek éreznie kell, milyen a Juventusban játszani, mert hihetetlen érzés. A Juve mindig is a maximum volt és az is marad örökké" - Pavel Nedved.



A Juventus és minden szurkolója megköszöni Pavelnek ezt a csodálatos büszkeséggel, határozottsággal, odaadással, erővel, szenvedéllyel átélt nyolc szezont!

2009. április 12., vasárnap

Tetszetős ábra Wordben

Tanulmányaink és munkánk során sok estben előfordul az, hogy szépen megfogalmazott gondolatainkat papírra vetjük. Ehhez a legtöbb átlag felhasználó a Microsoft Office programcsomagban megtalálható Word programot használja fel. A szöveg megírása és megformázása ma már nem okoz különösebb gondot. Képekkel is gazdagíthatjuk írásainkat, számos támogatás nyújt az Office programcsomag. Mégis sok esetben érezzük azt, hogy ábráink nem a legszebben jelennek meg a kinyomtatott oldalakon. Ennek az oka az, hogy maga a kép rossz minőségű, amit beszúrtunk a dokumentumunkba. A legjobb az, ha mi magunk készítjük el ábráinkat. A kérdés csak az, mivel? A kérdés annak ellenére sem költői, hogy a Word közvetlenül kíván fel rajzolási lehetőséget. De valljuk be őszintén, ez az út teljesen használhatatlan és alkalmatlan pontos ábrák elkészítéséhez. Vagy gondoljunk az Excelben szépen megformázott grafikonjainkra, amik teljesen széjjelcsúsznak a Word-be illesztés után. Mi lehet a megoldás?
Az első egy Office tanfolyam. De komolyan. Én persze ezt kihagynám, és egy kerülőutat mutatnék be.
A most következő apró segítség azok számára lehet hasznos akik Word-ben írják meg jelentéseiket, diplomamunkájukat, egyetemi jegyzetüket stb., valamint készség szinten tudnak kezelni egy vektorgrafikus programot pl. AutoCAD. Lássunk hozzá.
A Microsoft Office 2003-2007 telepítése után egy érdekes nevű nyomtató fog elérhetővé válni gépünkön, mégpedig a Microsoft Office Document Image Writer.


Ez a virtuális nyomtató a telepítés után minden programból elérhetővé válik számunkra és a segítségével MDI vagy TIFF formátumban tudjuk elmenteni dokumentumainkat. Hasonlóan a PDF fájl készítéséhez. Itt álljunk meg most egy percre, mi az a MDI?
A Microsoft Office Document Imaging a képeket oldalelrendezésben tároló Tagged Image File Format (TIFF) alapjaira épülő Microsoft Document Imaging Format (MDI) formátumot használja. Az Office Document Imaging programban mind MDI, mind TIFF formátumú fájlokat megnyithatunk vagy menthetünk. Mindkét formátum képes az által felismert szöveg tárolására a képekkel együtt. Az Office Document Imaging segítségével létrehozott TIFF fájlokat sok más grafikai alkalmazásban megnyithatjuk vagy szerkeszthetjük, de az MDI fájlokkal ugyanezt csak az Office Document Imaging programban tehetjük meg. Ha a fájlokat Office Document Imaging 2002 programmal rendelkező felhasználókkal osztjuk meg, a kompatibilitás érdekében TIFF formátumban mentsük a fájlt. Az MDI fájlok előnyei a TIFF fájlokkal szemben:
  • Kisebb fájlméret: Az MDI formátumban mentett képek kevesebb helyet foglalnak, mint ugyanazok a képek TIFF formátumban mentve.
  • Jobb képminőség: Az MDI formátumú fájlok képminősége általában jobb, mint ugyanazoknak a képeknek a TIFF formátumban (a Veszteségmentes tömörítés (LZW) beállítás használatával) mentett változata.
Alapértelmezésként az MDI fájlformátum van beállítva. A legjobb minőségű ábrákat ezzel tudjuk elkészíteni majd az MDI fájlba nyomtatott képet, Excel diagramot vagy bármit a Microsoft Document Imaging programmal tudjuk megtekinteni és más formátumba elmenteni. Ha egyből TIFF fájlt kívánunk létrehozni akkor a Tulajdonságok nyomgombra klikkelve tudjuk elérni a beállítási lehetőségeket. Igényes ábrák készítéséhez a következő beállításokat javaslom. Kimeneti formátum TIFF, minőség 300 DPI. Ha ezzel megvagyunk klikkeljünk az OK gombra. Ezek a beállítások mindig érvényben maradnak, függetlenül attól, milyen programból is nyomtatunk.


Mielőtt kipróbálnánk virtuális nyomtatónkat érdemes megjegyezni azt, hogy ezzel a nyomtatóval akár több száz oldalas dokumentumokat is lementhetünk MDI vagy TIFF formátumba! Mivel az utóbbi formátumot több program is támogatja, érdemes azt alkalmazni.
Ha megvan az ábránk, akkor azt már csak be kell illesztenünk Word dokumentumunkba és készen is vagyunk.

2009. április 10., péntek

Reflector, avagy zseblámpát a kézbe!

Gondolkoztál már azon, hogy hogy működhet például az ArrayList? Szerettél volna belekukkantani egy StreamReader életébe? Szeretnéd úgy optmalizálni a programodat, hogy tudod, mi folyik a háttérben? Akkor itt a megoldás! Világíts bele a fekete dobozba! Használj .NET Reflectort!

Ja, és hogy mire jó?

Végülis is csak egy class browser, explorer, analyzer és dokumentáció nézegető, amivel minden .NET assemblyt megnézhetsz, kereshetsz bennük, visszafejtheted és elemezheted őket C#, Visual Basic vagy IL nyelven. Szóval semmi különös…
A Reflector tulajdonképpen visszafejti a lefordított rendszer-DLL-ek (assembly-k) kódját. De nem hackermódszerekkel, hanem legálisan: az úgynevezett Reflection eljárás segítségével, ami a DLL-ekben meglévő információk visszafejtéséhez tartozó beépített .NET-technológia. Objektumnév és névtér szerinti keresésre is képes, tehát ha csak félig, vagy alig tudjuk, mit keresünk, a Reflector akkor is jó szolgálatot tesz. Van még hozzá:
  • Delphi és Managed C++ nyelvű megjelenítő
  • Közvetlenül fájlba exportáló, bármilyen Reflector által támogatott nyelven.
  • Eltérés kereső (diff) két assembly között
  • Vizuális típus megjelenítő
  • Form megjelenítő
  • Hívási lánc megjelenítő gráfos formában
  • Kódgenerátor COM komponens használatához
és további sok-sok kiegészítő, melyek kipróbálása után már el sem tudjuk képzelni az életünket nélkülük :)


.NET Zseblámpa akcióban

Ha valaha is foglalkoztál .NET-es fejlesztéssel, mindenképpen próbáld ki. Ingyenes és nagyszerű! Letöltés után jó .NET-es szokás szerint nem kell telepítést végezni, csak zippeljük ki valahova, és egyszerűen indítsuk el!

2009. április 3., péntek

Karóra, mint iránytű

Minden kalandozó kedvű férfi számára szükséges egy elegáns számlapos karóra. Azon felül, hogy sokat tud hozzáadni a megjelenésünkhöz még hasznos segítőtársunk is lehet kalandjaink során.
Terepen a legfontosabb dolog a tájékozás. Rávághatnánk, ott van a GPS. Igen, de azért nélküle is elboldogult az emberiség elég sokáig, szóval ne legyünk már ilyen kényelmesek. Akkor, mi maradt? Az iránytű! Hurrá! De mindenki hord magánál a nap 24 órájában iránytűt? Nem! De a karóránk mindig nálunk van. Akkor keressük meg az északi irányt a segítségével. Nagyon egyszerű az egész.
Hogyha a Földgömb északi féltekén vagyunk, vagyis az Egyenlítőtől északra, akkor a következőképpen kell eljárnunk: karóránkat a nyitott tenyerünkbe helyezzük úgy, hogy a 12 óra a tenyerünk bal felén legyen. Ez után karunkat úgy mozdítjuk el, hogy az óramutató pontosan a nap irányába mutasson. A kismutató és a 12-es közötti szöget megfelezzük, a felezési vonal a déli irányt mutatja. Szemben vele van észak. Délelőtt a kismutató és a 12-es szám közötti szöget, délután a 12-estől kiindulva a kismutatóig tartó szöget felezzük.

Karórával való eligazodás a Föld északi féltekén

Hogyha a déli féltekén vagyunk a Földnek, akkor a karunkat úgy mozgatjuk, hogy a 12 óra mutasson a nap irányába. 12 óra és az óramutató közötti pont fog mutatni Észak felé.
Figyelni kell pár dologra azért. Először is arra, hogy megfelelő időt mutat a karóránk. Tehát pontos és az időzónának megfelelő. Ezután figyeljünk a téli és nyári óratekergetésre. Valamint jó ha tudjuk, hogy a Nap-idő és az óra-idő nem ugyan az. De ha eltévedtünk, akkor ez az iránytű is valamelyest segítségünkre lehet… Egy kis magyarázó videó így a végére:

2009. április 1., szerda

April Fool

Igen, még időben vagyok. Van még legalább egy óra hátra április elsejéből. A bolondok napjából. Megtréfálni nem tudok már senkit sem, de így is elég nagy szívás volt ez a nap nekem. Főleg, hogy az irodai fénymásolóba sikeresen beleolvasztottam egy fóliát. Puff. Elnéztem. Beleolvadt, keményen. Alig bírtam kirángatni. Igaz, volt tettestársam is, de az most nem lényeg.
Ha minden igaz, akkor már mostanra több mint 12 millió pécét tett gallyra a Conficker nevű féregvírus. Részvétem minden áldozatnak. Azért, hogy valami vicces is legyen ebben a bejegyzésben, egy képet azért beszúrok. No comment.

A GPS Nyelv: NMEA Interface Formátum

Nemrég már írtam pár bevezető gondolatot a NMEA formátumról. Persze azt csak gondolatébresztőnek szántam. Most újra előveszem a témát, mindezt két okból teszem. Tulajdonképpen a GPS adatokat feldolgozó programocska nem tesz mást, mint ilyen NMEA formátumú szövegecskéket dolgoz fel. Pont. Nem egy nagy valami az egész, ezt kell megértenünk. Persze az adat még semmi, azokkal dolgoznunk kell, na ott már kell tüdő. A másik ok az, hogy egy olyan jó összefoglalót találtam a neten erről a témáról, amit muszáj megosztanom veletek. Ferencz Viktória 2006-ban publikált TDK dolgozatában korrektül összefoglalta a legfontosabb ismereteket ezzel kapcsolatosan. Ezer hála neki érte. Ezért én most ide bevágom a lényeget és eméssze meg mindenki maga.
Természetesen nemsokára C#-kódot is fogunk írni. Talán majd ez a kód fog segíteni egy jövőbeli TDK-s hallgatónak. Tudáscsere!
A NMEA egy mozaikszó, amely a National Marine Electronics Association nevéhez fűződik. Ez a szervezet fejlesztette ugyanis azt az interface-t, amely segítségével a használt eszközök egymással, illetve különböző számítógépekkel egységes formátumú üzenetek alapján képesek kommunikálni.
A GPS vevők esetében beállítható paraméterként szerepel, hogy az eszköz az észlelések eredményeit milyen formátumban továbbítsa a számítógép, vagy bármely más adóvevő készülék felé. Az NMEA formátumban továbbított üzenetek teljes egészében tartalmazzák az észlelési adatokat (PVT - Position, Velocity, Time).
Az NMEA üzenetek alapja az, hogy a vevő olyan mondatokban kommunikál, amelyek teljesen sajátságosak és függetlenek egymástól. A mondatok egy része szabványos formátum, minden egyes vevő által ismert, lehetőség van azonban egyedi konfigurációval rendelkező üzenetek definiálására is. Minden mondat elején szerepel 2 karakter, amely az üzenetet továbbító berendezés jellemzője, ez a GPS vevők esetén a "GP" karakter-kombináció.
Az egyedileg meghatározott sorok az eszköz gyártójára vonatkozó információt tartalmaznak, ezek első karaktere "P" és a következő 3 karakter utal az eszközt gyártó cégre (pl. PMGN - Magellan).
Minden egyes mondat kezdő karaktere a '$' és utolsó karaktere az un. CR/LF (Carriage Return/ Line Feed), és a sorok maximális hossza nem haladhatja meg a 80 karaktert a befejező karakter (line terminator) nélkül. Az egy sorban levő különböző üzenetek elválasztására a ’,’ karakter szolgál. Minden mondat végét egy un. ’checksum’ karakter zárja le, amelyet a fogadó egység nem feltétlenül vizsgál, viszont megléte fontos információ az adatok jóságára vonatkozóan.
Az NMEA üzenetek minden serial port esetében az RS232 protokollt használva elérhetőek bármely számítógép számára. Az adattovábbítás sebessége általában 4800 b/s (bit per second rate), de egyes vevők esetében beállítható a 9600 b/s érték is. Az alapérték azt jelenti, hogy a vevő 480 karaktert képes elküldeni egy másodperc alatt, ami tulajdonképpen 6 mondatnak felel meg. A mondatokat felépítő adatok 8 Bitesek, egyezés (parity) nem értelmezett és egyetlen un. ’StopBit’ karakter található bennük.
Az NMEA mondatok felépítése szabványos, minden egyes mondat egy sort jelent és egyedi azonosítóval rendelkezik. A küldött üzenetek függenek a vevő gyártójától, azonban ezek a szabványos üzenetek kiegészítéseként jelentkeznek az egyes típusoknál.
De hogy is néznek ki ezek a mondatok? Ez fog következni. Hamarosan.