Archive for July, 2006

Az MSDN Lib ingyenes lett :)

Monday, July 31st, 2006

Ez nagyon jó hír sok embernek szerintem, akik heteket töltenek a weben válaszra várva a lassú msdn online felületen.

Download itt.

NDoc helyett SandCastle

Monday, July 31st, 2006

Sajnos az NDoc fejlesztése megrekedt, mert szegény szerző egyedül vergődött vele, sokan basztatták, hogy miért ez vagy az a programban, ő meg ingyen csinálta egy darabig, aztán feladta, belefáradt.

Ez rossz hír a .NET 2.0-ban fejlesztőknek, de ez van.

Az ms viszont most elindult ezen a vonalon, is, ennek az eredménye az egyelőre még csak alpha verziójú Sandcastle (download).

Sandcastle is used internally to build .Net Framework documentation

Meglátjuk, nagyon kellene egy jó NDoc utód.

Az inline optimalizálás szivatásai

Friday, July 28th, 2006

Érdekes esetbe ütköztem.

private static string SettingName()
{
  StackTrace st = new StackTrace();
  StackFrame sf = st.GetFrame(2);
  return sf.GetMethod().Name.Substring(4);
}

private static object GetItemFromStore()
{
   return GetItemFromStore((PersistentSettingsKeys)Enum.Parse(
   typeof(PersistentSettingsKeys),
   SettingName()));
}

No, ami ebben érdekes, hogy a debug verzió simán lefut, a release viszont elszáll, mert a stack frame 1-el rövidebb! A Jitter inlineosítja a SettingName-et, így a reflection is eggyel elcsúszik. Ez nekem azért meglepő, mert az IL kódban még nincs inline-osítás (ok, az nem is egy managed compiler dolga), de ami meglepő, hogy a jitter inline látszik a reflectionön keresztül. A megoldás persze elég egyszerű,

[MethodImpl(MethodImplOptions.NoInlining)]

kell a SettingName elé.

 

(Ha valaki tudna segíteni hogyan lehet kódot szépen elhelyezni wordpressben kérdem segítsen.)

Blogspam és a szőrös emberek – ki mit javasol

Wednesday, July 26th, 2006

Kb. egy hónapja megtaláltak a spamelők, azóta napi 10-20 blogspamot kell törölnöm. Érdekes módon már nem viagrát árulnak mint régen, hanem hajhullás elleni szert. Nem baj, ha impotens vagyok, de seggig fog érni a hajam. Ha valaki tud valami bevált blogellenes izét a WordPresshez, please, kommentezze ide nekem.

Erről a hajhullásról jut eszembe. Miért olyan divat manapság borotválni a szőrös részeket? Régen “mediterrán” stílusúak voltak a nők, kis bundával a lábukon, a punciról és egyebekről persze nem is szólva. Aztán a 80-as években (gondolom én, akkor még kicsi voltam), már a lábakat szőrtelenítették, a puncit pedig fazonírozták, a keskenyebbre vették. A tendencia jól megfigyelhető a pornófilmekben, a régi idők bundái helyett ma már a férfikat is borotválják sokszor.

Egyik nézet szerint a nőket azért szeretjük borotváltan látni, mert így kislányosak, azaz akaratgyengék. A férfiak pedig általában nem szeretik a határozott, akarattal rendelkező nőket, ld. emancicik.

Persze ami érdekes, hogy pont az emancicik borotválnak a legjobban. :)

Ami nekem viszont már vad, hogy az egyik ismerős 16 éves fia borotválta a fürdőszobában a zacsiját, mert már cikizik az osztályban, hogy csak ő a szőrös. Na, erre mondjon nekem valaki elméletet. :)

A Community ereje – lézernyomtató javítás

Wednesday, July 26th, 2006

Az msnél erős szándék van a community építésre, erről szól az MVP is többek között. Mivel általában én segítek másoknak, nem annyira ismertem a másik oldalt, akinek segítenek.

De most volt rá alkalmam. Már egy éve áll a HP 1010-es nyomtatóm, bedöglött. Na, mondom itt az ideje, hogy kihasználjam azt, hogy villamosmérnök vagyok. Elvégre egy gázszerelő is maga javítja meg a kazánt, nem?

Méregettem, hamar rájöttem, hogy a tápegysége rossz. Kapcsolóüzemű tápja van, a primer oldalon ott volt az 320V egyenfesz, de a szekunderen semmi, és a frekimérő se mutatott semmit, azaz nem rezgett a meghajtás. Egy műszerész barátom szerint van egy megaohm nagyságrendű ellenállás, ez ad minimális induló feszt a szekunder körnek, hogy beinduljon az oszcilláció, utána már magát táplálja a tápegység. Azt mondta, ez az ellenállás szokott megszakadni.

Jó, de hol van ez. Kiírtam az elekro listára a problémámat. Egy órán belül jött a válasz, hogy pontosan melyik is ez az ellenállás, annyira pontosan, hogy van ott egy nagy pufferkondi a primér oldalon, a mellett van egymásra derékszögben elhelyezve két sorba kötött ellenállás, azok a gyanúsak.

És tényleg, pontosan azok közül volt az egyik megszkadva. HP úr alulméretezte szegényt. Beraktam egy hasonlót, és azóta is boldogan nyomtatok.  A szervizben feltételezem kicserélték volna a teljes táppanelt, ami valszeg lett volna minimum 10e.

Tök jó élmény volt, hogy egy általam kevésbé ismert témában ilyen sikerrel tudtak segíteni. Remélem, hogy hasonlóan tudok én is lökni a devlistán a listatagokon, a kezdeti nehézségeket leküzdeni.

Ps. méricskélés közben sikerült hozzáérnem a 250 V-ra feltöltött kondihoz, nagy élmény volt. Az ilyenek mindig megerősítenek benne, hogy jól elvagyok én a sw. oldalon. :)

ICQ nem megy a Mirandában – megoldás

Tuesday, July 25th, 2006

Pár hete nem megy az ICQ protokoll a Mirandában, rákerestem már, kell hozzá egy update, mert megváltozott a protokoll a háttérben. Extract a plugin könyvtárba, majd Miranda újraindít.

Design Pattern tanfolyam – last call

Wednesday, July 12th, 2006

Könnyen lehet, hogy az utolsó DP tanfolyamom lesz a jövő héten, aki még szeretne csatlakozni, még 1 napig megteheti.

A gázos CLR Thread Pool

Wednesday, July 12th, 2006

Szegényke jól zenél, amíg csak annyi szál kell ahány proci van a gépben, de ha hirtelen jön sok igény, akkor csak lassan pumpálja fel a szálak számát (500ms-enként egyet), így aztán másodpercekre lepunnyad szegény jóhiszemű pool használó.

Be is szívta ezt már az ASP.NET és a Biztalk 2004 is.

Erről ír az egyik CLR programoló, és arról, hogy bár ezt ők tudják, ez nem is olyan egyszerű megoldani.

Én mindenesetre a kódpárbaj motorjában saját szálkezelést használtam, nem bíztam a threadpoolban. Mondjuk ott nem voltak burstök, egyenletes volt a terhelés.

Érdekes cikk az MVP Patternről – ASP.NET design

Wednesday, July 12th, 2006

Egy pár napja megjelent cikk a codeprojecten (verhetetlen ez a site). Arról beszél, hogy az MVP (Model-View-Presenter) Patternnel hogyan lehet kiemelni és tesztelhetővé tenni az üzleti logikát egy weblapból. Nagyon jó cikk.

Emellett a cikk tele van érdekes linkekkel, amiket betárazok ide magamnak is későbbi olvasásra:

MVC vs. MVP

Dependency Injection for Loose Coupling

Model View Presenter Fowler bátyótól

NHibernate Best Practices with ASP.NET, Generics, and Unit Tests

Castle

PageMethods

Design by Contract Framework

Update: első link javítva, köszi gubus.

Ingyenes újság – The Architecture Journal

Tuesday, July 11th, 2006

Most kaptam róla levelet, hogy olvassam elsőként. Olvassátok ti is.

Berak a.txt-be:

https://www.msarchitecturejournal.com/pdf/Journal5.pdf
https://www.msarchitecturejournal.com/pdf/Journal6.pdf
https://www.msarchitecturejournal.com/pdf/Journal7.pdf
https://www.msarchitecturejournal.com/pdf/Journal8.pdf

Aztan wget -i a.txt. :)

Csak az 5. számtól kezdve használják ezt a konvenciót, aki kitalálja az első négy szám urljét, az légyszi postolja ide. Köszi.

Update: Zsolt (köszönöm) felpostolta a maradékokat:

http://www.architecturejournal.net/2004/issue1/pdf/journal1_english.pdf
http://www.architecturejournal.net/2004/issue2/pdf/journal2_english.pdf
http://www.architecturejournal.net/2004/issue3/pdf/journal3_english.pdf
http://www.architecturejournal.net/2005/issue4/pdf/journal4_english.pdf

Jó, jó ez a TFS, de azért 1.0

Monday, July 10th, 2006

Tudjuk, hogy a 90 %-os és a 100%-ig kész program között iszonyat nagy különbség van. És azt is tudjuk, hogy az idő igen jelentős része ebben az utolsó szakaszban megy el.

Nagyon jól tudja ezt az ms is, ennek ellenére és pont ezért notóriusan szereti kiadni a termékeit bosszantó hiányosságokkal.

Itt van pl. a Team Foundation Server. Teljesen intranetes és online működésre van hangolva, akármennyire is webszervizeket használ a háttérben, amiről pedig tudjuk, hogy lazáncsatolt, SOA, stb.

Csak windows authetikációval működik, így internetes környezetben elég nehéz használni. Vagy állandóan be kell verni a jelszavakat, vagy ugyanaz a név és jelszó kell a szerveren és a munkaállomáson.

Ez még ok, nem fért bele az 1.0-ba, majd az spben lehet, hogy benne lesz valami javítás. Ami bosszant, hogy könnyedén belerakhatták volna. Jóbarátunk, a reflector jóvoltából könnyű megtalálni, hogy a CredUIPromptForCredentials dialóggal kérik be a jelszavakat. A reflector analízis funkciója segítségével pár másodperc múlva már látjuk is hogy hívják meg:

if (CredUIHelper.CredUIPromptForCredentials(ref credui_info1, uri.ToString(), IntPtr.Zero, 0, builder1, 0x100, builder2, 0x100, ref num1, CREDUI_FLAGS.GENERIC_CREDENTIALS | CREDUI_FLAGS.ALWAYS_SHOW_UI | CREDUI_FLAGS.EXCLUDE_CERTIFICATES | CREDUI_FLAGS.DO_NOT_PERSIST) != CredUIReturnCodes.NO_ERROR) …

Hát köszönöm, ezért kérdezi meg állandón a jelszót. Ezt mondták neki. Meddig tartott volna más flageket átadni? Tudom, security, meg minden. De így meg használhatatlan a termék interneten. Egyebet nem mondhatok, kérem kapcsolja ki.

Mégiscsak sikerült az SQL Design vizsgám decemberben!

Thursday, July 6th, 2006

Csodálkozva olvastam ma reggel ezt a levelet:

Dear Zsolt Soczo,
Thank you for participating in the beta of Exam 70-441: PRO: Designing Database Solutions by Using Microsoft SQL Server 2005. As you know, the purpose of betas is to validate the quality and relevance of test questions according to valuable participant feedback. Based on the feedback we received for this beta exam we have made changes to the test. This adjustment has changed some of the scores from failing to passing. Consequently, we congratulate you on passing Microsoft Certification Exam 70-441: PRO: Designing Database Solutions by Using Microsoft SQL Server 2005. Your original status of “fail” has been corrected to become a “pass” and is now accurately reflected in the Microsoft certification database. No further action is required by you.
We apologize for any inconvenience this may have caused you and are pleased to offer you a free voucher for a future Microsoft certification exam of your choice as compensation. Ez k. jó, akkor már csak egy vizsgát kellene megcsinálnom, amire már nem volt Beta hely tavaly, és megvan minden SQL 2005 vizsgám. Most van 7 ingyen vócserem, ennyiből second-shottal csak sikerül. :)

Láthatóan a 442-re nem tudtam elmenni, kár, pedig ezek szerint eddig minden Beta vizsgám sikerült (a vizsgáim legalább felét így csináltam meg, így ingyen van, és nem lehet rám mondani, hogy Braindumpoltam, hisz még ilyenkor nincsenek braindumpok).

441 PRO: Designing Database Solutions by Using Microsoft® SQL Server™ 2005 Dec 02, 2005
443 PRO: Designing a Database Server Infrastructure by Using Microsoft® SQL Server™ 2005 Dec 16, 2005
444 PRO: Optimizing and Maintaining a Database Administration Solution by Using Microsoft® SQL Server™ 2005 Dec 02, 2005
447 UPGRADE: MCDBA Skills to MCITP Database Administrator by Using Microsoft® SQL Server™ 2005 Dec 16, 2005

A 447 csak hobbivizsga volt, azt se tudom hová számít be. :)

Az elmúlt hét tanulságai

Monday, July 3rd, 2006

Hajmeresztő (szerencsére csak szakmailag) időszakon vagyok lassan túl, ezért is nem blogoltam már régen.

Pár vegyes tanulság az elmúlt időszakból, zöme magamnak is emlékeztető:

  • A C/C++ secure stringkezelő (és egyéb) függvények nem úri huncutságok, és nem csak security szempontjából fontosak. A buffer overrun fogalom sok embernek a hekkeléssel forrt össze, pedig adatvesztések, instabilitások is gyakran következményei. Ha egyszer vannak rá normális függvények, és a kódok átírása se olyen vészes (tudom, mert átírtam vagy 100 függvényhívást az új függvényekre), akkor nem látok okot nem megtenni. Ahol a régi kód kussol, csendben elbassza a dolgokat az új visong. Ugyanez a helyzet a /GS kapcsolóval is (stack overrun ellenőrzés), valamint a /analyze opcióval (prefast) is. Igenis hallgatni kell rájuk, mert értelmes hibákat szúrnak ki.
  • Ha az IIS alatt nem megy egy website, Service Unavailable hibával nem indul a worker process, és 0x80004005-ös (Access Denied) hiba van az eventlogban, akkor az iis valahol nem tud írni vagy olvasni. Jelentős FileMon/Regmon erőfeszítéseim ellenére se jöttem rá mi hiányzik neki, de az aspnet_regiis -ga megadja a szükséges jogokat a futtatáshoz.
  • Ha egy osztály IDisposable, akkor kurvára meg kell hívni a Dispose metódust. Nem tudok elég nagy betűket rendelni ehhez:

Használd a C# usingot, bmeg!!!

Én a DirectoryServicessel szívtam meg, mivel az nemmanazsolt kódot és erőforrásokat hívokat a háttérben úgy fejreáll mint állat pár száz allokált objektum után, ha nem Disposolunk keményen.

  • A backup hasznos dolog. Ennek hiányában a GetDataBack-kel számottevő sikereket érhetünk el. A rendszergazda meg barátkozzon össze a kapa nyelével a megfelelő testrészén.