Ojjektumorientált

Published 2010. 10. 30. by Admin in IT Pro

A múlt héten "megtanultam" objektumorientáltan programozni. Na nem mintha nem tanultam volna ezt korábban, sőt, ifjú éveimben írtam egy komplett Windowst Turbo Pascalban, ami alaposan ojjektumorientált volt, a pontból származott a vonal, a vonalból a téglalap, a téglalapból az ablak stb.

Ez a dotnetes ojjektumorientáltság viszont sehogy sem ment a fejembe a múlt hétig. Mert persze, a string egy objektum, naná, minden stringem rendelkezik frankó metódusokkal, mint pl. ToUpper(), meg vannak statikus metódusai is, pölö string.Format(), és ez oké, de ez rám, mint programolóra ugyan milyen hatással van, ha ugyan van? Továbbra is a { jelnél kell elkezdeni a programot, és a }-nél ér véget, nemde?

Kitérő: egyik oktató kolléga háborog, hogy állandóan az interfészek fogalmát kell elmagyaráznia, mint az óvodában, mert a népeknek fogggggalmuk sincs az objektumorientált programozásról, pedig tanulták. Lapítottam eddig csendesen, hogy ez akár én is lehetnék, mindent tudok az objektumorientált programozásról (enkapszuláció, öröklődés, metódus, minden-minden), mégsem férnek a fejembe az interfészek :)

Rájöttem, hogy ezek a mai fiatalok egyszerűen "visszaélnek" az objektumokkal, és nem csak arra használják, amire valók, hanem mindenre. Gyakorlatilag minden változójuk objektum, minden átadott paraméterük objektum, sőt, sok esetben komplett kollekció. Mi annak idején azt tanultuk, hogy nézz körül a világban, és ha valami nagyon úgy néz ki, mint egy egybefüggő entitás, csinálj belőle objektumot. Egyéb esetekben ott van neked a sok-sok lokális változó a sztekken, jó az, nomeg gyors is.

A mai fiatal meg ezt mondja: "nézd már, hű de sok paramétert kell átadni ennek a metódusnak, csináljunk belőle egy ojjektumot, és akkor csak egy paraméterünk lesz!" Esetleg még hozzáteszi: "a Unit-tesztelést is milyen jól megkönyíti, hogy csak egy paraméterünk van, és nem öt!".

Vagyis teljesen más megfontolások alapján ontják magukból az ojjektumokat, mint anno mi tettük. Ontják. Két értéket kell átpasszolni valahova? Hopp, egy anonim objektum, nesze!

new {egyikertek=5, masikertek=66}

Ügyes, ügyes, én tutira nem csináltam volna. Egészen a múlt hétig.

A másik társaság, aki orrba-szájba objektumozik, az a Microsoft. De naggggggyyyyyyyyyyon dúúúúúúúúúúúúúúúúrván! Az egyik legszebb példa a helper metódusok csodálatos világa. Van egy gyári ojjektumtípus, mondjuk a string. Van neki egy rahedli statikus metódusa, de neked ez nem elég, azt szeretnéd, ha a stringek tudnának még valamit pluszban, mondjuk - hogy teljesen gyakorlatias példát adjak - visszafelé beszélni, Indulagörögaludni, Rámnémetnemlel,elmeteménmár. A metódus neve legyen mondjuk Palindrom.

Oké, ez szuper. Mekkora eséllyel fogjuk tudni ezt az elképzelést átverni Redmondon? "Hahó, Bill, hahó Steve! Kellene a string osztálynak plusz egy metódus! Nagyon kellene!"

Ugye, hogy ez kivitelezhetetlen? Ugyanakkor helyben meg tudjuk csinálni magunknak. meg lehet patkolni bármelyik osztályt, és rá lehet aggatni plusz metódusokat. És aki ezt nem tudja, az dotnet-vak, vagy legalábbis dotnet-hülye. Így köll csinálni:

public String Palindrom(this String bemeno)

{

...blablabla, meg is kellene írni, de nem írom meg...

}

A szintaxis elképesztő: az első "bemenő" paraméter neve előtti this kulcsszó indítja be az átváltozást. A compiler felismeri, és azt mondja: "aha, ezek a Stringet akarják új metódussal megfejelni!" - és megcsinálja.

Ilyenkor az ember hátán hirtelen feláll az összes szőr, nomeg a molekulákok, és elordítja magát: "de hát miéééééééééééééééééééért?!"

Meglepő módon van rá válasz: ezzel a módszerrel úgy tudtuk bővíteni a stringet, hogy semmilyen kész alkalmazást nem kell átírkálni és újrafordítani a használatához. (Ellentétben a leszármaztatással és öröklődéssel.) Egy DLL-be bele lehet hányni a plusz metódust, belerakni a projectbe, és BÁRMELYIK stringen azonnal használni. Hát ezért.

És akkor az interfész. Ami egy olyan öröklődés, ami semmit nem örököltet. Ha valaki megnézi .net Reflectorral egy interfész definícióját, azt találja, az üres. MINDIG üres. Ha egy interfészből származtatunk, a SEMMIT fogjuk megörökölni. Értelmetlen!

Hacsaaaaaaaaaaaak...!

Ez egy hosszabb történet. Kezdődik azzal, hogy a C#-ban már nincs többszörös öröklődés. Minden objektumnak csak egyetlen őse lehet. Ezt a korlátozást egyrészt az áttekinthetőség, másrészt a statikus öröklődés visszaszorítása érdekében tették. A Design Patternek sokkal többet hoznak a konyhára, mint amennyit az öröklődés csúnya korlátozása elvisz.

Igen ám, de ezzel látszólag megszűnt a lehetősége annak, hogy egy objektum hol Alma legyen, hol Körte, a hívási körülményeknek megfelelően. Hol dugóhúzó legyen, hol körömreszelő, hol meg csavarhúzó. Erre találták ki az interfészeket, amelyek egy-egy szerszámot jelentenek a svájci bicskán. Jobban mondva egy interfész nem más, mint annak definíciója, hogy az adott objektumot LEHET dugóhúzóként használni. De hogy HOGYAN lehet, azt nem határozza meg, ezért üres. Azért üres, mert honnan a bánatból tudhatná dugóhúzó feltalálója, hogy egy sokkal később kifejlesztett objektumot hogyan lehet majd dugóhúzóként használni?

Interfészből pediglen korlátlan számúval fel lehet szerelni az objektumokat, de most már tudjuk, azon az áron, hogy okozunk magunknak egy csomó programoznivalót, mert a HOGYAN a mi feladatunk marad. (Ellentétben az öröklődéssel, ahol a HOGYANT készen kapjuk, az ősosztályé szépen működik alapból.)

Így lehet lértehozni a Dugóhúzó interfészt:

interface IDugohuzo

{

public void BalraKiteker();

}

Ennyi. Hogy hogyan kell balra kitekerni egy tetszőleges objektumot, az az objektum fejlesztőjének feladata.

Hogyan csinálunk a tányérból dugóhúzót?

class Tányér: IDugohuzo

{

}

Ennyi. Innentől kutya kötelességünk megvalósítani, implementálni a BalraKiteker() metódust, különben a kód le sem fordul. Homályos, ugye? Eddig még nekem is az lenne. Mi a túróra jó ez? Mi ez a kavarás? Miért nem egyszerűen csak beleírom a metódust, miért nem hagyom ki az interfészt a csudába? Most jön a lényeg!

Vannak olyan rendszerelemek, amelyek csodálatosan kezelgetik a mi saját objektumainkat, HA felismerik rajta az általunk keresett csatlakozót, interfészt. A legelterjedtebb, legismertebb ilyen rendszer például a LinQ, amelyik kvázi SQL-nyelven kezelhetővé teszi az objektumainkat, lehet szelektálni a tányérjainkat, lehet sorbarendezni őket (WHERE matyóhímzés) stb. Ehhez "csupán" arra van szükség, hogy a saját Tányér objektumunk implementálja a "központilag előírt" interfészt. Kész.

(A fenti példa nem igazán szerencsés, mert ráadásul a LINQ-eléshez bőven elegendő, ha a kollekciónk IEnumerable, nem kell, hogy maga a tányér is az legyen. Tehát a tányérokat belerakjuk egy List<>-be, és máris mehet a tányérzsonglőrködés)

Az MSDN-ben van egy versenyzős példa, az talán kifejezőbb. Van egy versenypálya a városban, ahol olyan izék tudnak versenyezni, amelyek implementálják az IVerseny interfészt, és azon belül van Sebesség propertijük. Szeretnénk használni a versenypályát, vagy úgy is fogalmazhatnánk, azt szeretnénk, ha beengednének minket a versenypályára. Ha van egy autó objektumunk, el tudjuk indítani a versenyen, ha implementáljuk az IVerseny interfészt, és kitöltjük a Sebesség propertit, már rajthoz is állhat. Van egy nyulunk is, azt is szeretnénk indítani a versenyen. Ehhez bizony a nyuszira is fel kell szerelni az IVerseny interfészt, és meg kell adni a sebességét, és már mehet is!

Vagy legyen ez: van egy állás, bárki betöltheti, aki rendelkezik MCSEFGHIJ-képesítéssel, vagyis implementálja a MCSEFGHIJ-interfészt. Ehhez a delikvenst fel kell szerelni a kívánatos interfésszel: tanul, levizsgázik, megszerzi az MCSEFGHIJ képesítést, és máris mehet a meló!

Momentán több ojjektumorientált trükk nem jut eszembe, a tanfolyam, amit elvégeztem: ASP.NET MVC :) Köszi Tocsi, egészen megvilágosodtam! :)


Tanácsot kérnék a nagyérdeműtől a következő ügyben. Egy csomó saját számlázóprogit készítettünk már, egyet Krisztián, egyet én magam, de MOST lett ebből elegem. Állandóan karbantartani, vállalni a felelősségét az apeh őrült hozzáállásából származó hibáknak: így nem szabad sztornóni, úgy tilos kedvezményt adni - horror. Buta vagyok, hogy eddig ezt a felelősséget magamra vállaltam. Az új utat az elektronikus, egyben online számlázásban vélném megtalálni. Olyannak kell lennie, hogy meghívok egy webszörvízt, vagy feltolok egy XML-t, és a többit elintézi. Ilyen szolgáltatót találtam a neten vagy egyet: billzone.eu. Na most erről frankón nem lehet megállapítani, hogy apeh-konform-e.

Elolvastam Gaba blogjában az idevágó threadet, de nem tűnök okosabbnak tőle sajnos.

Van-e valakinek javallata, kommentje ez ügyben?

 


Viszlát BPOS, üdv Office 365!

Published 2010. 10. 20. by Admin in IT Pro

Hát akkor irány a klód azoknak is, akik nem akarják. Sokakkal vitatkozva mondtam már a magamét, hogy ha a Microsoft eldöntötte, hogy a klódba megyünk, akkor oda megyünk, akármit is gondoltok úgy egyébként a témáról. A Microsoft mindentt erre az egy tétre tett fel, mondták is Washingtonban a WPC-n, hogy "all in", ami azt jelenti, hogy a teljes gépezet ezzel foglalkozik, ezt fejleszti, és ezt is adja el.

Márpedig amit a Microsoft el akar adni, azt sikeresen eladja, függetlenül attól, a vevők meg akarják-e venni. Lásd Sharepoint Laughing

Az eddig BPOS néven futó, jobbára szerveroldali cuccokat tartalmazó, villanyszámlánál is olcsóbb előfizetést felváltja a ma bejelentett Office 365, amiben mindez benne van, plusz onlájn ofisz. Mindez 6 dollár per fő per hó. Összehasonlításképpen: egy bonyolultabb Frapuccino a Starbucksban 5 dollár. Mondom én, hogy olcsóbb, mint az otthoni szerverinfrastruktúra villanyszámlája, nem beszélve a kirúgott informatikusok béréről. Plusz havi 12 dollárért megkapod a dobozos ofiszt is hozzá. Ezek egész egyszerűen nem összegek itthon sem, pláne nem Ámerikában.

Akinek idáig kétségei voltak afelől, hogy vajon az ő cége bemegy-e a klódba, megint mondom: ne legyenek kétségei. Bemegy. A bank is bemegy.

Verhetetlen ár + verhetetlen szolgáltatások + verhetetlen marketinggépezet: ugyan mi más esélyed van?

Keresitek már az új szakmát, informatikusok?


17 éves, de már hekker

Published 2010. 10. 17. by Admin in IT Pro | Oktatás

Tomcsányi Domonkos, az idei Hacktivity legfiatalabb hekkere bemutatja az ITCafénak a telefonjára feltuszkolt Linuxot, Metasploitot.


ITBN kerekasztal

Published 2010. 10. 11. by Admin in IT Pro

Tökre élveztem az idei ITBN-t. Jó volt. Hacking szekció, mmmmmm! Ja, és a keynote kerekasztal. Nem tudom, okosakat mondtam-e, de ha esetleg nem, akkor is köszönöm a lehetőséget az ITBN szervezőinek, elsősorban Keleti Arthurnak.


DoD-minősítés

Published 2010. 10. 10. by Admin in IT Pro | Oktatás

2010. februárjában a Certified Ethical Hacker képzést az USA védelmi minisztériuma (Department of Defense) 8570-es lajstromszámmal hivatalos védelmi képzéssé nyilvánította. Hurrá!


Csaba meghódítja a világot

Published 2010. 10. 05. by Admin

Viszlát Magyarország, viszlát Ferihegy! Barta Csabával (CHFI-oktató) pénteken Miamiba repülünk, a Hacker Halted konferenciára. Kis magyar siker: Csaba bemutatja a földgolyónak az általa készített, Windows 2008 és Windows 7 alatt is futó, víruskergetők által (ma még) felfedezhetetlen rootkitet! (Én csak a kisinas szerepét töltöm be mellette, nyitom neki az ajtót, kifényesítem a cipőjét, felveszem kamerával, ilyesmi.)

Október 14-én, a harmadik (bugyirózsaszín) szekcióban ő a legelső előadó: http://www.hackerhalted.com/2010/AtAGlance/tabid/259/Default.aspx 

Gratuláljunk Csabának! Ez azért kétszeresen sem semmi! Egyrészt megírni egy ilyen cuccot elképesztően nagy teljesítmény, aztán meg kiállni egy nemzetközi (etikus) hackerkonferenciára, hogy széttépjék élve, nagyon nagy dolog!

Ha nem tépik ki a kezemből a kamerát, a felvételt kipakolom valahova. A jútúbra ugye nem lehet, mert max 15 perc :(


Elvámolták a Kindléinket, én arra számítottam, 3% lesz a vám, mert ezek számítástechnikai kkészülékek. De nem. 15% lett a vám, mert ezek bizony monitorok. Fel is hívtam a VPOP-t, ugyan magyarázzák már el az álláspontjukat, de hibátlan logikai okfejtésbe futottam: számítógép az, amin tetszőleges program futtatható (legálisan). A Kindlén maximum tetszőleges doksikat olvashatunk. Tetszőleges programot csak az eszköz meghekkelése révén olvashatunk, tehát ez a kütyü nem számítógép. Hanem monitor. Fellebbezésnek helye van, de a bukás garantált.

Néhány szót a sorsolásról: ez a gép egy telitalálat. Mindenki annyira szeretne vele találkozni, mint anno én. Gondolkodom is, hogy a sorsolásos akciónkat meghosszabbítjuk AND/OR kiszámíthatóvá tesszük. Az kap, aki... (világos feltételek).

Nem üresen adjuk át a gépeket, rajtuk van egy csomó magyar nyelvű, ingyenes szakkönyv. A listát lásd itt: http://netacademia.net/info/kindle

Felpakoljuk továbbá a Galaktika Magazin legelső öt számát PDF-formátumban, melyek a http://galaktikabolt.hu-ról is letölthetők. Ezek érdekessége, hogy bár kiadásuk éve 1972, a bennük lévő sci-fi novellák a mai napig megállják a helyüket. Érdekes észrevenni, hogy akkoriban mi foglalkoztatta az emberiséget: az első űrutazások, és a mesterséges intelligencia eljövetelébe vetett hit kora ez.

A nem túl távoli jövőben, 2003-ban úgy repkednek az űrhajók a távoli galaxisok felé, hogy öröm nézni! Az informatika páratlan fejlődésének azonban nyoma sincs a művekben. A robotok lyukszalaggal, lyukkártyával programozandók, az űrhajókon hatalmas (természetesen papíralapú) könyvtárak és irattárak foglalnak helyet. Egyetlen regényben találkozhatunk lapos kijelzőkkel, ennek szerzőjét nyilván teljesen elragadtatta a képzelete.

Javaslatok a könyvolvasáshoz

A .mobi formátumú könyveket természetes módon lehet olvasni a Kindle csodálatos e-papír kijekzőjén. A PDF-ekkel más a helyzet, mivel ezek menthetetlenül oldalakra vannak tördelve. Lehet ugyan konvertálással próbálkozni, de úgy elveszítjük a tördelés minden elemét. Hogy néz ki az oldalszámozás a szövegbe ékelve? És a főcím, mint közönséges mondat? Nem járható út. Ezen dokumentumok olvasására a fektetett formátum javasolt, ekkor teljes szélességében kifér a kijelzőre egy A4-es oldal, így csak "lefelé" kell lapozni.

És még valamit: Ha lenyomod az ALT-SHIFT-M billentyűkombinációt a főképernyőn, bejön az aknakereső! Ugye, hogy lehet tetszőleges szoftvert futtatni rajta?


Azzal kezdeném ezt a bejegyzést, hogy természetesen az ember nemhogy nem elsőkörben, hanem körülbelül harmadik próbálkozásra dönt úgy, hogy a nyilvánosság elé tárja az ügyét. A Krups Magyarország nagyon sokat "tett" azért, hogy továbblépjek, és elkezdjek másokat lebeszélni a kávéfőzőgépükről. Konkrétan: elérhetetlenek. Az alábbi levelet minden lehetséges csatornán eljuttattam nekik, ami egy webformot és egy publikus emailcímet jelent a krups.hu oldalon. Semmit sem reagáltak, abszolúte semmit. Telefonszám nincs az oldalon, nyomozni nem fogok. Ha ezt a bejegyzést sem veszik észre/figyelembe, úgy jártak. Íme a levél:

"

Tisztelt Krups Magyarország!

 

Azügyben írok Önöknek, hogy rendkívül elégedetlenek vagyunk az Önök VIP-kávéfőzőjének váratlan kimúlásával kapcsolatban.

 

Előzmények:

2007 júniusában vásároltuk meg a Krups márkájú, jelenleg leolvashatatlan típusú, de mindenképpen őrültdrága, VIP-ként aposztrofált kávéfőzőgépet, mely már a garanciális időtartama alatt kétszer volt javítva, és most végleg elromlott, amivel nem is lenne baj, na de ilyen körülmények között?

 

Az elégedetlenségünk fő forrása, hogy miközben alig használtuk (két csésze capuccino per nap), viszont éves szinten több mint ötvenezer forint értékben költöttünk vízszűrőre és egyéb karbantarási szerekre az Önök javaslata szerint (hogy hosszú életű legyen a készülék!), gyakorlatilag teljesen tönkrement, a tartálya kilyukadt, a Kisgépszervíz egy 46 ezer Ft-os javítási árajánlattal örvendeztetett meg, és úgy adta vissza javítatlanul (a horribilis költésgek miatt nem kértük a javítást), hogy ráírták, hogy tilos bekapcsolni.

 

Hab a tortán, hogy így a nyakunkon maradt 3 víztisztító patron (~24 eFt) és további egyéb kisebb értékű karbantartószerek.

 

Ez így, mindent összevetve: rablás. Rablás, hogy éves szinten többet költök a szerekre, mint a személygépkocsim karbantartására, HOGY HOSSZÚ ÉLETŰ LEGYEN a VIP-készülék, ennek ellenére úgy kinyiffan, hogy többe kerül a javítása, mint egy új, garanciális középkategóriás kávéfőző.

 

Megerősítem, hogy a készüléket abszolút a felhasználási célnak megfelelően használtuk, és túlhajtásról sem beszélhetünk a napi két csésze capuccinóval.

 

Úgy gondolom, az Önök célja nem lehet más, mint elégedett vevőket látni maguk körül, ezért várom a javaslataikat, hogyan lehetne ezt az elég rosszul hangzó történetet happy endbe fordítani?

"

Ennyi. Azzal zárnám eme hozzászólást, hogy "Beyound reason". Ez a Krups jelmondata. Magyarra úgy fordíthatnánk: az értelmen túl :)))))

Kedves Krups, egyfelől nyilván megírom Önöknek, hogy ittmegittvanaweben a panasz, másrészt jelzem, hogy ha továbbra is lapítanak, menni fogok tovább.


Hőskor. Az internet kora.

Az életnek nincs célja és nincs értelme. Az életnek szépsége van.