poniedziałek, styczeń 30, 2012

VS Debugger - ustawienia w rejestrze

W ostatnim poście wspominałem, że napisze jeszcze o ustawieniach debuggera VS w rejestrze.

Okazuje się, że nie wszystko da się ustawić w Visual Studio czy ustawieniach systemowych. Częścią funkcjonalności trzeba sterować za pomocą ustawień w rejestrze - na szczęście są to marginalne przypadki.

Czasami jednak zdarza się, że dodając jakieś wyrażenie do okienka Watch dostajemy niemiły komunikat - Function evaluation timed out. Buu... :/

Okazuje się, że możemy choć trochę wpłynąć na VS po jakim czasie pokaże nam ten komunikat - niestety musimy zrobić to w rejestrze.

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Debugger.


Mamy tam wszelkie ustawienia, których dokonujemy za pomocą VS ale także kilka wartości, których nie odnajdziemy w okienku Settings - to te, których nazwy kończące się na Timeout.

Jak może się domyśleć odpowiadają one za czas po jakim VS rzuci nam wspomnianym wcześniej komunikatem. Niestety nie da się ich zwiększyć do jakichś niebotycznych wartości - VS broni jakichś swoich (prawdopodobnie - wewnętrznych - maksimów), ale trochę możemy je ponaginać. Wystarczy odnaleźć tylko interesującą nas zmienną Timeout :).

niedziela, styczeń 29, 2012

VS Debugger - Tips & Tricks


Kilka dni temu miałem okazję wygłosić kolejną prelekcję na Wrocławskiej Grupie .NET. Tym razem jako temat wybrałem debugger, który jest dostępny w Visual Studio. Jest to na prawdę kawałek narzędzia, który możemy wykorzystać dość sprawnie na naszą korzyść jeśli tylko wiemy gdzie szukać.
Prezentacja to tak na prawdę zbiór tego co publikowałem w ostatnich czasach na blogu jak również na devPytania  tak więc jeśli ktoś regularnie czyta bloga - zapewne nie znajdzie zbyt wiele nowości.

Powiedziałem o:

Z ciekawostek wspomniałem o:

Przykłady i prezentacja (niewiele w niej jest) do pobrania. W razie pytań zachęcam do kontaktu.

sobota, styczeń 14, 2012

Breakpoint na funkcji

Dziś będzie o jeszcze jednym typie breakpointu. Kiedy może się on przydać zobaczmy na przykładzie.

Automatycznie właściwości


Wszyscy kochamy automatyczne właściwości, oszczędzają one nam czas i redukują ilość kodu jaki musimy napisać. Jedyną (?) ich wadą jest niemożliwość ich debuggowania. Często, tego nie potrzebujemy, ale czasem przydaje się możliwość ustawienia breakpoint'a na set lub get i np. podejrzenie call stack'a. Zwykłe postawienie w tym miejscu pułapki skutkuje następującym stanem. W Visual Studio widzimy breakpoint jednakże gdy tylko uruchomimy aplikację nasza pułapka znika.

Miejmy poniższy kod:
Code Snippet
  1. namespace ConsoleApplication2
  2. {
  3.     class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             new Program().SetMe = "I'm setting u";
  8.         }
  9.  
  10.         public string SetMe { get; set; }
  11.     }
  12. }
Aby postawić pułapkę na takiej właściwości skorzystajmy z okna New Breakpoint (CTRL+B). To co nam się ukaże to okno tworzenia pułapki.
Dodawanie breakpointa
W polu Function skasujmy to co jest wpisane i zamiast tego dajmy: ConsoleApplication2.Program.set_SetMe (pełna nazwa nie jest wymagana jeśli nazwa identyfikuje nam obiekt jednoznacznie - inaczej podepniemy się do wszystkich takich właściwości). Upewnijmy się, że mamy odznaczone pole 'Use IntelliSense...' - inaczej dostaniemy komunikat o braku potwierdzenia.

Teraz jak uruchomimy naszą aplikację - zatrzyma się ona w momencie wywołania settera. Na pasku bocznym nie zobaczymy jednak oznaczenia ustawionej pułapki (tu może się przydać info z poprzedniego posta - Dźwiękowy breakpoint) jednakże będziemy mogli podejrzeć call stack, czy w oknie Watch podejrzeć wartość obiektu value. Oczywiście taka pułapka jest wylistowana w oknie Breakpoints i możemy robić z nią standardowe modyfikacje typu: warunkowy breakpoint, hit count, etc.

Podobne zabawy można robić z podpinaniem się pod event'y z tym wyjątkiem, że tam będą metody zaczynające się od add i remove.

środa, styczeń 11, 2012

Dźwiękowy brekpoint

Macie czasem tak, że podczas długiej sesji z debuggerem, wiedząc, że jakiś breakpoint nie wskoczy prędko przełączacie się z VS aby później zorientować się, że breakpoint już dawno czekan na waszą reakcję a wy po prostu nie zauważyliście tego małego migoczącego znaku VS w pasku?

O właśnie o ten mrygacz chodzi :)

Jeśli tak to ten post jest dla was - jeśli nie poczytajcie jak wkurzyć kolegów :)

Okazuje się, że VS prócz standardowych opcji, które możemy ustawić w Tools->Options posiada kilka dodatkowych trochę ukrytych (no dobra nie ukrytych, ale trzeba wiedzieć gdzie szukać :)). Okazuje się, że jak pójdziemy do Panelu sterowania i odpalimy okienko dźwięków to zobaczymy tam coś takiego:
Panel Sterowania -> Dźwięki
Zapomniane okno od czasów Win98 :)
Jak widać, możemy sobie skonfigurować kilka dźwięków na pewne zdarzenia zachodzące w VS. Jest Breakpoint Hit, są zdarzenia z buildem więc można taki dźwięk ustawić jak nam się projekt nie zbuduje.

Tak więc od dziś jeśli potrzebujecie możecie zmusić VS do odegrania waszego ulubionego pliku wav jak zaskoczy breakpoint. A jak zdenerwować tym kolegę? Wystarczy ustawić... mało kto wie gdzie to się zmienia :)

sobota, grudzień 31, 2011

Podsumowanie 2011

Kolejny rok, kolejne podsumowanie.


30 postów (znów mało - coś się nie mogę przełamać tej granicy). 21 tys. odsłon, 37 tys. wizyt - trochę mniej niż w poprzednim roku. Tendencja spadkowa, którą trzeba będzie odwrócić.

Najpopularniejsze posty:

WPF Podsumowanie - 2111 wyświetleń - Post z 2009 roku zbierający wszystkie moje wpisy odnośnie WPF'a więc nic dziwnego, że ma trochę odwiedzin.

Visual Studio 2010 & .NET 4.0 - Pierwsze wrażenie - 1166 - Post z 2008! roku. Dziwne, że jeszcze popularny biorąc pod uwagę, że już niedługo przyjdzie nam działać na VS 11 :). No, ale widać jeszcze są osoby, które interesuje temat. VS 2010 sporo zmienił w stosunku do poprzedników, więc może stąd takie zainteresowanie wśród odwiedzających.

Tajniki DependencyProperty - 886 - Dependency Property to jedna z fundamentalnych rzeczy jeśli chodzi o programowanie z użyciem WPFa. Widać zainteresowanie tematem WPFa jest.

Niestety żaden z 30 postów z tego roku nie wszedł na pudło. Trzeba bardziej się postarać. Lepiej pisać i promować!

Do plusów minionego roku należy zaliczyć moje dwie prezentacje na Wroc.NET czyli Mono.Cecil oraz VS 11 oraz .NET 4.5. Liczę, że w nadchodzącym roku uda mi się także dać jakieś ciekawe prelekcje. Kilka pomysłów w głowie - zobaczymy jak wyjdzie z ich realizacją.

Plany zawodowe na nadchodzący rok także są. Może trochę zmienić kierunek nauki? Liznąć trochę czegoś innego niż .NET. Może Objective-C? Może Haskella (lub czegoś innego funkcyjnego). Zdecydowanie - pobawić się RavenDB, którą to ostatnio prezentował Marcin Najder. Ważne, aby wymyślić jakieś projekty na to, aby nauka miała jakiś cel a nie była sama sobie tylko nauką. Oczywiście postaram się wszystko zaprezentować z punktu widzenia programisty .NET, tak więc nie będzie powodów do rezygnacji z czytania bloga :). Zobaczymy tylko na ile córka pozwoli plany zrealizować :)

Wszystkiego najlepszego w 2012 i dzięki za odwiedziny. Stay tuned.

piątek, grudzień 02, 2011

Wiedza od Google

© phecsone - Fotolia.com
Z dzisiejszej ankiety na FanPage'u dotnetomaniaka wynika, że sporo z nas na co dzień tworzy aplikacje ASP.NET (czy to WebForms czy też MVC). Zapewne zatem przyda nam się trochę darmowej wiedzy od Googla, co i jak wpływa na wyniki wyszukiwania i PR.

Czy wiesz np. jak robot Google  traktuje adresy z '-' a adresy z '_'? Jest jakaś różnica a może nie ma? Czy adresy z '/' na końcu są lepsze od tych bez? Czy dodawanie www do domeny ma jakieś znaczenie?

Na te i inne pytania odpowiedzą na kanale wideo GoogleWebmasterHelp. Zobacz i przekonaj się sam jakie są prawidłowe odpowiedzi na te pytania.

Miłego oglądania :)

sobota, listopad 12, 2011

devPC 2012

Rauer © Więcej zdjęć na Fotolia.pl

Ostatnio dumając nad kielichem wina okazało się, że mój obecny PC, na którym pracuję zbliża się do swoich 4 urodzin. Lata świetlne jeśli chodzi o naszą branżę, a wiadomo, że prędkość jest ważna i jeśli spędzamy, nawet sekundy, czekając na jakąś akcję a powtarzamy ją wielokrotnie to sporo na tym tracimy.
Tak więc wyszedłem z wnioskiem formalnym do odpowiednich władz (;-)), że trzeba maszynę zaktualizować do czegoś szybszego.Wniosek został zaakceptowany tak więc działamy.



Jako, że nie mam wiedzy sprzętowej - bo od dawna nie śledzę już tego świata - wychodzę z zapytaniem o pomoc w wyborze do czytelników. Razem zapewne uda nam się skompletować coś wydajnego a jednocześnie w przystępnej cenie.

Przed wyborem komponentów jednak warto ustalić do czego dany komputer będzie nam potrzebny. Dzięki temu będzie można się skupić na wyborze odpowiednich elementów.




Zastosowania:
  • programowanie. Tu zaskoczenia nie ma (a przynajmniej nie powinno :)) - jako, że to moje główne zajęcie to zapewne przez 80%-85% czasu do tego będzie przeznaczony sprzęt. Sporo działam na wirtualkach (choć nie tyle pewnie co Procent), tak więc dobrze jakby sprzęt sprawdzał się na tym polu :). Poza tym nic nadzwyczajnego VS 2010 + R# w kilku instancjach na raz nawet :)
  • gry - tak, tak - od czasu do czasu zdarzy mi się pograć na tym sprzęcie i poza moimi ulubionymi TD czasem nawet w jakieś nowości (FPSy) - dobrze zatem jakby grafika dawała radę z nowymi, nadchodzącymi tytułami. Sądzę, że do 10% czasu wykorzystania na gry będzie :)
  • obróbka wideo - mam w planach trochę ponakręcać moją przyszłą kamerą video jakiś materiał no i trzeba będzie go zapewne jakoś obrobić. Dobrze jakby i tu trochę siły było :)
Jakieś dodatkowe wymagania? Karta grafiki musi obsłużyć 2+ wyjścia DVI :]. Aktualnie dwa monitory a w przyszłości być może +1, więc dobrze jakby nie trzeba było wymieniać karty za jakiś niedługo czas.

A jaki jest mój obecny sprzęt?
  • Procesor - Intel Quad Q6600 @ 2.4GHz
  • Płyta - Gigabyte GA-P-35-DS3P
  • Pamięć - 8GB (nie pamiętam/znalazłem info jaka)
  • Grafika - NVIDIA GeForce 8600 GTS 256 MB
  • Dysk - OCZ Vertex2 - 120 GB + WDC WD 320 GB
Co daje WEI na poziomie 6.5 - mało :)

Co warto umieścić w obecnej maszynie devPC? Jakie komponenty są najbardziej opłacalne jeśli chodzi o wydajność do ceny? Jaka kwota jest odpowiednia na główne narzędzie naszej pracy?

A na czym wy pracujecie? Co siedzi pod maską waszych maszyn do pracy?