Archive for January, 2007

“aztán a pszichologiai blogjaidbol is olvastam persze”

Monday, January 29th, 2007

Ma kaptam egy levelet, amiben a parkettás bejegyzésemmel kapcsolatban kérdeztek. Ami érdekes volt, hogy benne volt ez a megjegyzés. Erről aztán az jutott az eszembe, hogy akit idegesítenek a nem szakmai bejegyzések, azok a
http://soci.hu/blog/index.php/category/szakmai-elet/
címen tisztán szakmai tartalmat olvashatnak.

Köszi.

SQL Server izolációs szintek

Friday, January 26th, 2007

Sokan azt hiszik, ha beraknak néhány tsql utasítást egy tranzakciós blokkba, akkor máris védettek más kapcsolatok hatásaitól. Természetesen ez messzemenőkig nem igaz, a default read commmitted szint mellett simán szúrhatnak be vagy törölhetnek sorokat, miközben egy select dolgozik rajta, mivel a select mindig csak azon a kis tartományon tart locokot, amit éppen olvasgat. Azon a pár lapon pl.

Ez egész gondolatmenet innen indult. A szerző azt bizonygatja, tök jó a NOLOCK hint, mert így gyorsabb lesz a query. Persze, valamelyest biztos, hisz ilyenkor egyáltalán nem rak lockokat a szerver az olvasott sorokra. A hozzászólásokban persze jól odamondják a jóembernek, hogy ne beszélj ilyenekről, mert sok hozzá nem értő ember azt hiszi, ez valami tuning lehetőség, miközben súlyos adathibák léphetnek fel a read UNcommitted szinten, a NOLOCK miatt.

Ez egyik hozzászólásban volt egy érdekes gondolat:

Anyway, there is a little catch with NOLOCK however.  SQL Server mostly uses unordered clustered index scans when NOLOCK is specified, this can cause duplicate records to be returned when page splits occur while your query is scanning the index.

Szóval nem feltétlen csak olyan sorok jöhetnek be, amiket esetleg egy másik tranzakció még visszavon, hanem még ugyanaz a sor is bejöhet duplikálva. Persze, aki ésszel használja, pl. statisztikai funkciókra, azt ez nem értekli, de fontos, hogy mindenki realizálja a NOLOCK veszélyeit.

A hozzászólásokban van egy link erre a cikkre, innen bedig erre. Mindkettő az izolációs szintek anomáliát boncolgatja, érdemes átfutni őket.

Mi a helyzet a 2005-ben, a snapshot read committed bekapcsolása után? Nos, ebben az esetben a read committed szintű izolációs szint esetén a select a párhuzamos módosítás előtti eredményeket adja vissza, ami egy bár időben eltolt, de konzisztens állapotot állít elő. Ezt a szintet nyilván azért szeretjük, mert az írók nem blokkolják az olvasókat és vica versa. Ugyanezért szokták bevetni 2000-ben a NOLOCKot, csak itt nincs meg viszont az inkonzisztens adatok veszélye. Ezért szeretjük ezt az újítást, és erre irigykedett minden sql server programozó az orákulumra 2005 előtt.

De persze ennek is meg van az ára. Minden egyes, a select futása alatti módosítást bevezet a szerver a tempdb-be, így mikor odaér a select a módosított adathoz, akkor átnyúlnak a tempdbbe, és onnak veszik el a sor módosítás előtti állapotát. Ez azért eléggé erőforrásigényes lehet. Különösen érdekes lehet a helyzet, ha egy order by-os selectet kérünk le. Ha az order by pont a clustering key mentén működik, akkor normál esetben egyszerűen olvasni kell a szervernek az adatlapokat, sorban, ez piszok gyors. Mi van viszont ebben a helyzetben? Foglalmam sincs, ilyenkor hogyan hajtja végre a kérést. Ha valaki tudja, ne tartsa magában. Köszönöm.

Vista RDP kliens jelszavak előre megadása

Tuesday, January 23rd, 2007

A Vistán RDP kliensbe nem lehet előre beírni a jelszót, csak egy külön credentials ablakban, amiben viszont nincs kopi-paszta. Bonyolult jelszavaknál ez igen “örömteli”.

Szerencsére van megoldás (az egyik kommentben), a lényeget bepasztázom ide:

“A simple way around this is to first store the credential you want to use in CredMan outside of Remote Desktop. Fire up CredMan by running “control keymgr.dll” at the command prompt. Then press the “Add” button. Enter in the IP address of the server (e.g. “192.168.0.1″) and the username and password you want. Then make sure you use the “Web site or program credential” radio selection (for connections to non-Vista machines). Save the credential and start Remote Desktop. Expand the Remote Desktop UI and type in the IP address in the “Computer” field on the General tab and it should pick up the saved credential. Then hit “Connect” and you should not be prompted.”

Hogyan kell a type library-t beágyazni a DLL-be (C++)?

Tuesday, January 23rd, 2007

Furcsa módon az IE nem képes scriptből meghívni egy ojjektum metódusát, ha nincs hozzá type lib. Azt gondoltam az IDispatch-hez nem kell tlb, de csak így működött jól.

Így kell berakni a type library-t erőforrásként a kimeneti dll-be. Sajnos az ATL type library regisztráló izéje csak a HKCR-ba hajlandó telepíteni a TLB-t, nekem viszont mindent a HKCU-ban kell megoldanom, hogy nonadmin is telepíthesse a komponenst.

Ezért kézzel kell regisztrálni az rgs-sel, pl. így:

[source:C++]
HKCU
{
NoRemove Software
{
NoRemove Classes
{
NoRemove TypeLib
{
ForceRemove {8A786A39-7654-4FE0-880F-4E2AA5166D3A}
{
1.0
{
0
{
win32 = s ‘%MODULE%’
{
}
FLAGS = s ‘0’
{
}
HELPDIR
{
}
}
}
}

}
}
}
}

[/source]

Mitől kemény a szilvásgombóc?

Sunday, January 21st, 2007

A Lidlben lehet kapni egész finom szilvásgombócot, valami 2xx Ft kilója, kéthavonta egyszer szoktunk belőle főzni. Csodálkoztam, hogy szemben a házilag készített gombóccal, miért marad egyben főzés közben.

Nos, a csomagolást tanulmányozva fény derült a titokra: kálcium-szulfát fogja össze. Laikusok kedvéért: gipsz.

Számolgassunk CO2-ot

Saturday, January 20th, 2007

Mostanában elég sok szó esik az üvegházhatásról, meg a bűnös CO2-ről (pontosabban az emberről).

Kicsit számolgassunk, mit tehetünk mi. Tegyük fel, hogy az előző bejegyzésem alapján a felesleges készülékek üresjárati áramfelvételét megspóroljuk, azaz éjszakára kihúzzuk a TV-t és egyéb készülékeket. Kazán maradhat. :)

Ezzel napi kb. 1 kWh-t, azaz havi kb. 30 kWh-t lehet megspórolni családonként.

Nézzük tovább. Tegyük fel naponta két szobában, egy-egy 100W-os izzó világít, napi 4 óra hosszan. Ez naponta 800 Wh fogyasztás. Ha ezek helyett kompakt fénycsöveket rakunk be, akkor a fogyasztás leesik 40 W-ra. Azaz 160 W lesz a napi fogyasztás, 800 helyett. Spórolunk 0.64 KWh-t naponta, kb havi 20 kWht.

Azaz csak ezzel a két intézkedéssel családonként kb. havi 50 kWh-t lehet spórolni. Az, hogy ez kb. 2000 Ft most nem érdekel mindet, most a széndioxidot akarjuk visszafogni.

Tegyük fel, Magyarországon 1 millió család él (több, de sokan kevesebbet fogyasztanak – gondolom). Ez azt jelenti, hogy 10^6 fogyasztó x 50 kWh/hó x 12 hónap = 6×10^8 kWh.

Na, és most jön a lényeg. Az itt közölt adatok alapján 1kWh elektromos energia előállításához 0.4 kg CO2-dal szennyezzük a levegőt (hőerőmű esetén, természetesen).

A kettőt összeszorozva kiderül, hogy 2.4×10^8 kg CO2 spórolható meg így. Ez 2.4×10^5 tonna CO2. Évente a Földön 7×10^9 tonna CO2 keletkezik az emberi tevékenység miatt.

Azaz a spórolásunk kb. 10^-4 részével csökkentené csak a kibocsájtást. Ez ugye 0.01%. Semmi, fügyi. De nem kerül semmibe, sőt, évente 24e Ft-ot sprórolsz vele a villanyszámlán.

(Irónia: ebből a 24e-ből vehetsz 100 l benzint, amiből 200 kg széndioxidot lehet elpöfögni.)

Készenléti áramfogyasztások

Saturday, January 20th, 2007

Év végén rájöttem, hogy eléggé alá van lőve a havonta fizetett áramfogyasztásunk a valóságnak. Ezért összeszereltem egy konnektort a multiméterrel, és méricskéltem egyet.

Megdöbbentő, de havi X Ft fölötti az áramfogyasztás csak a készülékek készenléti árama miatt.

Az eredményeket itt publikáltam. Mielőtt megnéznéd, érdemes megtippelni, és csak aztán megnézni a mért adatokat. Azóta éjszaka kihúzom a HIFI cuccokat. Hogy ezzel mennyi fosszilis tüzelőanyagot lehet megspórolni, hamarosan kiszámítom.

IIS7 Config – appcmd.exe

Thursday, January 18th, 2007

Vistán, egy program telepítése közben futott a process monitor, és akkor láttam, hogy használja az appcmd.exe-t. Rákerestem már, kiderült, hogy ő az IIS7 konfig utilja, az eddig vbscriptek helyett.

A szokásos site, appdomain, stb. mellett érdekes dolgokat is tud, pl. kilistázni az éppen futó kéréseket. Eddig ez tudomásom szerint nem lehetett, vagy talán a 2003 SP1-ben igen? Nem tudom.

De a cikk nagyon jó bevezető az eszközbe.

Saroksikáló

Thursday, January 18th, 2007

Bálint ma elindult a fürdőszobából elcsent habkővel, a “saroksikálóval”. Bement a nappali sarkába, és sikálta vele a falat. :)

Bevezető a setup projectekbe

Tuesday, January 16th, 2007

A VS tartalmaz egy alapvető MSI készítő Setup projectet, amivel egyszeűbb telepítők készíthetők. Összetettebb dolgokhoz inkább a WIX-et ajánlom.

No, az előbbihez, a VS féléhez található itt egy egész jó bevezető. Nekem pl. új volt, hogy COM komponensek regisztrációja során tudnak olyat, hogy az MSI buildelésekor végrehajtják a RegisterServert, és eltárolják a komponens működéséhez szükséges registry módosításokat, amit installáláskor visszajátszik az MSI installer. Így nincs gond telepítéskor, ha egy olyan komponent akarnának regisztrálni a beépített RegisterServerrel, amikor még nincsenek felmásolva a számára szükséges függőségek.

Miért nehéz néha bánni a gyerekekkel + könyvajánlók

Thursday, January 11th, 2007

2005 Karácsonyán olvastam Feldmár András Tudatállapotok szivárványa c. könyvét, és akkor iszonyat sok minden megváltozott bennem. Könyv még úgy nem érintett meg, mint ez. Katarzis volt. Tud valamit ez a Feldmár. (Érdekes mellékinfó, rákövetkező januárban jelentettem be a NetAcademiánál, hogy elmegyek. Mondom, hogy megérintett a könyv.)
Pont jókor olvastam, mert nem sokkal utána jött Bálint dackorszaka, amelynek kezelésében sokat segített a könyv. Idézem a kapcsolódó részt:

“Piaget, amikor gyerekekkel dolgozott, leírt egy ilyen tanulási formát. Ezt a folyamatot úgy hívja, hogy asszimiláció, a változási pontot pedig akkomodációnak nevezi. Ő persze csak gyerekekről beszélt. Szerintem az egész életünkön keresztül így tanulunk. Az asszimiláció azt jelenti, hogy van egyfajta struktúra bennünk, amivel próbáljuk megérteni a világot és egymást. És addig, amíg a világ komplexitása belefér abba, ahogyan próbáljuk a világot asszimilálni, minden rendben van. Ezt nem akarjuk feladni, mert nagyon örülünk, hogy így értjük a világot. De ahogy növünk, a világ egyre komplexebb lesz körülöttünk, egyre nehezebb lesz asszimilálni. Ekkor a gyerekek rettenetesen frusztráltak lesznek, nyűgösek s olyan utálatosak, hogy szinte kiállhatatlanná válnak. Ekkor gyakran betegek is lesznek, s mikor meggyógyulnak, akkor okosabbaknak látszanak, megnyugszanak, és már nem olyan utálatosak. Akkor már megint asszimilálnak, átmentek egy nagy káoszon, s egy magasabb színvonalon egy új struktúrát készítettek, amiben meg lehet érteni a világot. Ez sokkal többet fog fel, mint az előző. Ekkor ez megint eltart egy jó darabig, ez alatt minden nagyon jó, aztán megint utálatosak lesznek, s megint nehéz lesz az élet. Akkor megint létrejön egy ilyen akkomodáció. Az egyik esetben a világot asszimiláljuk, a másik esetben pedig nekünk kell megváltoznunk ahhoz, hogy a világban tudjunk élni. Egyszer a világot emésztjük, másszor a világ emészt minket. Aki megakad valamelyik ponton, annak nagy baja lesz. Előfordul, hogy valaki megakaszt minket, például, ha a szüleink, akikkel élünk, megálltak az „ötödik lépcsőn”. Ha a szüleink megálltak az ötödik lépcsőn, nekünk pedig már a hatodikra kell lépni, akkor a szüleink mindent meg fognak tenni, amit csak tudnak, hogy meggátoljanak minket a továbblépésben, mert abszolút nem értenék meg, hogy mi a fenét csinálunk. Ahhoz, hogy megértsék, egy akkomodációs ponton kellene átmenniük. És ha ők elhatározták, hogy a világukat olyan szimplának fogják tartani, amilyennek addig megismerték, hogy nekik már elegük volt az akkomodációból, sőt többet ők ilyet nem csinálnak, amíg meg nem halnak, hát akkor végül is ők már lelkileg meghaltak. A testük él, de a lelkük meghalt. És akkor tudat alatt mindent meg fognak tenni, amit csak tudnak, azért, hogy minket is megöljenek, hogy minket is ott tartsanak, ahol ők vannak, hogy megértsük egymást.

Végül is egy család vagyunk ugye, hát akkor miért ne legyünk mindannyian halottak? Szóval lehetséges az, hogy aki pszichotikus, vagy skizofrén, megakadt egy ilyen létrehozó hurokban.

Az LSD nem strukturálisan változtatja meg az ember agyát, hanem valahogy – nem tudom hogy – energiát ad ahhoz, hogy az ember kiperdüljön ebből a hurokból. Ne visszamenjen, hanem kiperdüljön. Tehát, ha itt valahol meg vagyok akadva, akkor minden pszichiáter, minden pszichológus, minden terapeuta, a szüleink, a tanáraink, mindenki ide akar engem visszanyomni. Az LSD pedig olyan energiát ad, hogy kipördülök innen. Amikor már ide kikerültem, akkor már nem lesz semmi bajom, mert akkor már nincs, ami elakaszt. Esetleg az lesz a bajom, hogy kevés barátom lesz, mert nem sokan vannak ott. Létezik egy könyv, amelynek a címe: Jonathan Livingston Seagull. (Magyar változat: Richard Bach: Jonathan, a sirály, Édesvíz Kiadó, 1984 – a szerk. megj.) Ez nagyon jó történet. Arról szól, hogy ez a sirály, nagyon szeretett magasan repülni. De amikor felszállt, mindig azt hitte, hogy valami nincs rendben vele, mert ezt mást sirályok nem csinálták, senki sem volt ott, így hát nagyon egyedül érezte magát, aztán visszaesett, visszajött. Próbálta elmondani a barátainak az élményét, hogy azok vele menjenek, de ők nem tudtak vele szállni. Egyszer elhatározta, hogy addig repül fel, ameddig csak tud, még ha ez az életébe fog is kerülni. És elhatározta, hogy ha nincs ott egy barátja sem, egy lélek sem, akit ismer, akkor is otthagyja azokat, akik csak alacsonyan tudnak repülni, mert az olyan unalmas, hogy nem érdemes azon a szinten maradni. Tehát, ha egyedül lesz egész életében, akkor is felmegy olyan magasra, ahol jól érzi magát. A kellemes meglepetés számára az volt, hogy ment-ment, és egy darabig ugyan senki sem volt, de akkor egyszerre csak talált egy réteget, ahol nagyon jól érezte magát, s nem volt egyedül, ott voltak más sirályok is. Azok a sirályok azonban, akik lent voltak, nem is tudták, hogy ott fönt vannak más sirályok. Addig, amíg az ember oda nem kerül, ahová valóban tartozik, addig nem tudja soha, hogy van-e valaki más ott. Csak akkor tudja meg, ha már ott van. Tehát szerintem, amikor az ember olyan magasra megy, annyi létrehozó hurkon keresztül megy át, emennyin csak képes, akkor látja meg, hogy ki van ott, akkor látja meg, hogy kivel lehet ott találkozni. Szerintem azért maradunk alacsonyan, mert félünk egyedül lenni. Visszatart az a rettegés, hogy ha én teljesen úgy szárnyalok, ahogy én akarok szárnyalni, s azt csinálok, amit én akarok, és nem fékezek, s megyek úgy ahogy tudok, akkor egyedül leszek. Meg kell próbálni. Mindenki úgy határoz, ahogy akar. Lehet, hogy sokkal kellemesebb hülye társaságban élni, mint egyedül okosnak lenni. De az nagyon kellemetlen, amikor a saját szülei, a saját tanítói elgáncsolják az embert, mert ők nem akarnak elszakadni, elválni tőlünk.”

Mostanában olvastam egy másik könyvet is (sokat, csak nincs időm mindről írni), Mérgező szülők a címe. Na, ez is nagy pofánvágás. Ha valaki úgy érzi, eljött az életében az a pont, amikor már elég nagynak érzi magát (van, aki a haláláig nem érez így, sőt, a többség így viselkedik), hogy szembenézzen azokkal a hazugságokkal, amivel a családja, a saját anyja-apja, a tanárai, a társadalom eteti, akkor olvassa el az előbbi két könyvet. És gondolkodjon, sokat. Sírjon is, ha kell. Megéri, másképp jön vissza belőle az ember.
Aki nem olvasta ezeken könyveket, és nem szánt időt az életének alapos vizsgálatára, az ne sírjon, hogy itt fáj, ott fáj, meg, hogy már megint beteg a gyerek, azok a kurva vírusok, stb. Ne áltassuk magunkat. Inkább próbáljuk meg szembenézni a valósággal, és rendbehozni az életünket. Az  idősebbek erre azt mondják, ezek a gondolatok fiatal korból eredő naiv optimizmusra vallanak. Én meg azt mondom, ez az ő részükről a megkeseredett életből fakadó cinizmus. Remélem 10, 20, stb. év múlva nem zuhanok bele én is ebbe a táborba.
És végül még egy idézet:

“Mindannyian nagyon szeretünk regresszálni. Ez azonban tilos, sőt nagyon sokan szégyenletesnek tartják, ha valaki úgy viselkedik, mintha fiatalabb lenne a koránál. Már amikor az ember gyerek, akkor is azt mondják, hogy „Hány éves vagy? Már tíz? Egy tíz éves gyerek már nem mondhat ilyen butaságokat.” Az egyetlen dolog, ami megengedi, hogy az ember nyugodtan regresszáljon az, ha megbetegszik. Mondjuk otthon. Szerintem a legegészségesebb az lenne, ha olyan emberekkel venné magát körül az ember, akiknek csak úgy meg lehetne mondani, hogy „Egy hétig ágyban akarok maradni, nem vagyok náthás, nem vagyok beteg, de azért légy szíves hozzál teát, etess meg, legyél kedves velem.” Ha ezt meg tudnánk tenni, s volna valaki, aki szeretne minket annyira, hogy megtegye amit kérünk anélkül, hogy náthásak lennénk, akkor nem kellene náthásnak lennünk. Nagyon jó lenne, ha az ember találna olyan barátokat, akikkel ezt meg lehet csinálni betegség nélkül.”

Én találtam. :)

Klímaháborúra készül Európa

Wednesday, January 10th, 2007

“A károsanyag-kibocsátás drasztikus, ha kell, önkényes visszafogása, a megújuló energiaforrások felhasználási arányának növelése, egységes energiapiac – ezek a fő gondolatai annak a szerdán bemutatott EU-stratégiának, amely az éghajlatváltozás várható káros hatásait igyekszik mérsékelni, megelőzni.”

http://origo.hu/nagyvilag/20070110klimahaborura.html

Ez a meleg tél és az orosz csapok elzárása -meg persze az EU gazdasági függősége a külső energiától- végre valamiféle elhatározásra juttatta őket, ami dicséretes, őszintén örülök.

Ami aggaszt, az az USA és Kína hozzáállása. Szerintem ők csak akkor lépnek, mikor már New York víz alatt lesz.

Ami érdekes, hogy 1996-ben villámvédelmet hallgattam az egyetemen. Ott a prof, aki egyébként egy okos ember, és a villámok kialakulása miatt elég sokat foglalkozott a légköri jelenségekkel, azt mondta, hogy semmi nyoma nincs a felmelegedésnek, ez csak hiszti. Nos, a következő évek lehet, hogy lassan őt is, és másokat is rádöbbentenek, hogy nem.

Érdekes switch optimalizálás a C# fordítóban

Wednesday, January 10th, 2007

Cikk.

Ha pl. stringeken kell elágazni, berakja őket Dictionary-be, és abban keresgél. Ha csak egyszer hívódik meg a switch, akkor ez még lassabb lesz, mintha sima if-else-ekre fordítana, de többszöri nekifutásra már sokat nyerhetünk vele.

(Sok most a munkám, pedig van sok érdekes dolog a fejemben, majd ha lesz kis időm kiírom magamból.)�