Wpis bardziej ‘ku pamięci’, ale może komuś zaoszczędzić kłopotów ;-)
Załóżmy, że mamy taki oto kod:
class First
{
static First()
{
Console.WriteLine("First static constructor");
}
public static void DoSth()
{
Console.WriteLine("Let's do sth");
}
}
class Second : First
{
static Second()
{
Console.WriteLine("Second static constructor");
}
}
Jeśli wywołamy metodę First.DoSth() w outpucie otrzymamy:
First static constructor
Let's do sth
Jeśli jednak spróbujemy z Second.DoSth() otrzymamy… to samo?! A gdzie wykonanie statycznego konstruktora klasy Second? Wszak w dokumentacji MSDN możemy przeczytać:
A static constructor is called automatically to initialize the class before the first instance is created or any static members are referenced.
I… to się zgadza! Podejrzyjmy Reflectorem jak kompilator zbudował aplikację:

W związku z tym, iż metoda DoSth() jest w klasie First, kompilator ‘olewa’ nasze wywołanie przez klasę Second, przez co statyczny konstruktor tej drugiej się nie wykona. Jest to o tyle niebezpieczne (co sam w swoim kodzie ‘przetestowałem’), że jeśli metoda DoSth() jest w jakikolwiek sposób zależna od wyniku statycznego konstruktora (a wcześniej nic i nikt nie odwoływał się do Second), to możemy spędzić trochę czasu na szukaniu błędu…
Na Bliplogu pojawiły się dwa wpisy krótko podsumowujące rok ‘09 na tym polskim odpowiedniku Twittera (tu i tu). Chciałbym i ja dorzucić swoje trzy grosze przestawiając drobne statystyki z BlipTags obejmujące przedział czasowy 18.12.2008 do 5.01.2010. Oczywiście, w związku z przerwami w parsowaniu wiadomości spowodowanymi problemami zarówno po stronie Rootnode jak i Blipa, nie są one wielce dokładne.
Continue reading ‘BlipTags – małe podsumowanie’
Ufff… dawno tu nic nie pisałem… Wraz z nadchodzącym rokiem akademickim (jeszcze kilka tygodni ‘wakacji’!) trzeba zacząć blogować trochę częściej niż raz na kwartał ;-)
Od czegoś jednak trzeba zacząć, toteż wpis będzie dość krótki i raczej ‘ku mojej słabej pamięci’. Od dłuższego już czasu na uczelnianych stronach programu MSDN AA bryluje wersja RTM Windows 7 Professional. Tak więc…:
1. … podczas instalacji systemu na drugim komputerze z tym samym kluczem okazało się, że aktywacja nie jest już możliwa. Rozwiązanie podsunął mi Tewux (też ‘cieńko’ idzie mu blogowanie ;-) ) – Windows jest dystrybuowany na dwie architektury (32- i 64-bitową), wystarczy więc… wygenerować sobie klucz używając drugiej architektury! Jest to dokładnie taki sam mechanizm jak przy Viście – instalator ani aktywator systemu pomijają sprawdzanie która z tych edycji systemu masz zainstalowaną.
2. … na niektórych uczelniach pojawił się także obraz płyty DVD z paczkami językowymi. Niestety, teoretycznie działają one tylko w wersji Ultimate… Na szczęście jest prosty w obsłudze program Vistalizator, dzięki któremu można dograć ’spolszczenie’. Jedyny minus (przynajmniej w moim przypadku) to pojawienie się we właściwościach systemu ‘Windows 7 Home Premium E‘ zamiast ‘Windows 7 Professional‘ ;-) Nie mam pojęcia czy jest to działanie legalne czy też nie. Logika podpowiada, że wszystko powinno być jak najbardziej okay, ale sami wiecie…
To na tyle, dzięki za uwagę ;-)
Masz Windows 7 ale do uruchomienia aplikacji potrzebujesz “normalnego” XP, bo nawet w trybie kompatybilności program nie działa? Microsoft wydał kolejną wersję Virtual PC dla Windows 7 – tym razem jako aktualizację do systemu. W osobnej instalce dostajemy wirtualny dysk właśnie z Windows XP Pro. Nie byłoby to nic nowego (bo takie instalki istniały już od dawna – o, np. tutaj), gdyby nie możliwość uruchamiania programów w wirtualnej maszynie wprost z menu hosta!


Jak na razie obsługiwane wirtualne systemy w tym trybie to XP, Vista oraz 7 – przydałyby się wersje serwerowe ;-)
Nowe Virtual PC działa tylko na procesorach ze wsparciem wirtualizacji przez co wersja 2007 pewnie jest ostatnią bez tego wymogu. Na moim komputerze wydajność takiego rozwiązania wydaję się być przyzwoita, choć okienka czasem potrafią się “przyciąć” ;-)
Garść porad
- jeśli masz zainstalowanego Kaspersky’iego for Win7 to wyłącz w nim Proactive Defense – w przeciwnym przypadku będziesz dostawał komunikaty o niemożności zapisywania plików wirtualnej maszyny
- aplikacje zainstalowane na wirtualnej maszynie pojawiają się w folderze Windows Virtual PC\Virtual Windows XP (Vista/7) w menu Start. Widziane są tam tylko skróty znajdujące się na wirtualnej maszynie w menu start dla All Users
- Programy systemowe (Notatnik, Paint itp.) nie wyświetlają się w menu hosta. Jeśli chcesz mieć do nich dostęp, na wirtualnym systemie w edytorze rejestru przejdź do:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtual Machine\VPCVAppExcludeList
i usuń wpisy z odpowiadającym programem.
- w powyższym wpisie w rejestrze nie znajdziesz nic na temat Internet Explorer :-) By móc go uruchamiać skopiuj skrót do niego do menu start w All Users

- spróbowałem odpalić maszynę wirtualną z Windows 2003 – działa bez zarzutu, niemniej trzeba uważać na “Virtual Credential Manager”, bo po chwili nieuwagi byłem kilka razy zalogowany na tym systemie ;-)
Garść linków
- Virtual PC Beta for Windows 7
- dyskusja nt. uruchamiania programów w wirtualnej maszynie
Uzyskanie kompatybilności wstecznej poprzez zastosowanie wirtualnej maszyny to dobry pomysł – mam ciche nadzieje, na to, że może kiedyś doczekamy się zupełnie nowego Windowsa z zupełnie nowym kernelem :-)