Komentarze są bardzo ważnym elementem kodu źródłowego. Standardowo Visual Studio jest jednak dość ubogie jeżeli chodzi o ich formatowanie. Z jednej strony to dobrze, ponieważ kod źródłowy to nie choinka, którą trzeba przyozdobić kolorowymi szlaczkami, z drugiej czasami przydałoby się zaznaczyć, że jakiś komentarz jest ważniejszy.
Strona głównaUżytkownik
Paweł Łukasik | użytkownik
Testy jednostkowe testują wyłącznie lokalne wykonywanie metod i jest nawet niewskazane aby testowane metody odnosiły się do zewnętrznych, zdalnych zasobów.Rozbudowane systemy są często rozproszone, działające na wielu komputerach oraz składających się z wielu modułów. Podstawowe pytanie brzmi: Jak sprawdzić czy utworzone moduły współpracują ze sobą? Otóż należy przeprowadzić testy integracyjne zgodnie z wybraną metodyką. Testy integracyjne tak jak testy funkcjonalne powinny być przeprowadzane na bieżąco...
Pod jednym z moich ostatnich postów na temat logowania Jacek zasugerował w komentarzu abym napisał trochę więcej o tym jak dzielę logi na poszczególne poziomy. Poniżej opis moich ZAMIERZEŃ. Zamierzeń, ponieważ jeszcze w ten sposób z logowania nie korzystałem, ale po dość długim rozmyślaniu wydaje mi się to najsensowniejszy podział. Może pojawią się uwagi korygujące takie podejście zanim wprowadzę je do projektu?:)
W poprzednim wpisie wspomniałem o API Moniotrze, dzięki któremu mogliśmy z bliska podejrzeć zestaw parametrów przekazanych do jednej z funkcji systemowych tworzących nowy proces. Tym razem zrobimy jeszcze jeden krok - pokusimy się o rozszerzenie zbioru API Monitora o funkcje systemu, których jeszcze nie zna. W tym celu wejrzymy w trzewia klasy SecureString, która wdzięcznie pomagała nam przy naszych poprzednich zabawach, tym razem jednak to ją samą weźmiemy na stół doktora Reflectora. Albo nie - użyję do...
Kolejny raz o logowaniu... "bo to naprawdę ważne™" :). W świecie .NET mamy dwie liczące się biblioteki oferujące logowanie informacji z aplikacji: log4net oraz nLog. Oczywiście znajdą się też inne rozwiązania: od koszmarnych (The Logging Application Block z EntLiba) po głupie (pisanie własnego loggera i jego produkcyjne wykorzystanie).
Jeden z dev pojechał na wakacje i pozostawił mi aplikacje, którą miałem wgrać na serwer testowy i produkcyjny jednak jak się okazało pozostawił małą kaszankę na której naprawianie nie miałem czasu. Ogólnie nie licząc innych problemów pojawił się problem z odwołaniem do usług WCF i WCF ReST spowodowany przez referencje – hardcodowany w pliku konfiguracyjnym od SL. A to ze nie miałem dużo czasu na myślenie to rozwiązałem to w następujący sposób...
Niedawno przedstawiłem TokenContext, klasę pomocniczą upraszczającą wyławianie kontekstu z masy logów tworzonych w aplikacji wielowątkowej, gdzie wiele operacji przeplata się nawzajem. Regularnie jednak zdarza się, że interesuje nas nie tyle jedna szczególna operacje co cały cykl życia konkretnego obiektu. Kumpel, z którym pracuję nad "głównym" projektem, zaproponował stosowanie takiej, bardzo prostej, logicznej i przydatnej, konwencji...
Architektura 5036 dni, 1 godzinę, 37 minut temu 85 źrodło rozwiń
Jednym z wyzwań przed jakimi stoją programiści w trakcie pracy nad aplikacją jest sposób przechowywania w pamięci ‘wrażliwych danych’, czyli wszelkiego rodzaju haseł, connection stringów, etc., a zatem informacji, którymi ludzie niechętnie dzielą się ze wszystkimi wokół. Generalnie chodzi bowiem o to, żeby jakiś dobry człowiek podczas przeglądania pamięci procesu nie miał na widelcu wszystkich tych danych, a jedynie sieczkę z której wyciągnięcie czegokolwiek sensownego graniczy z cudem. I właśnie specjal...
Hostingiem ASP na Webio.pl jestem bardzo mile zaskoczony. Niedrogi, a niezawodny i funkcjonalny. Problemem jest tylko automatyczne ubijanie nieaktywnej aplikacji po 20 minutach. Staje się to uciążliwe jeśli: start aplikacji długo trwa (pierwszy wizytujący będzie musiał czekać) potrzeb...
Używając analizy kodu w projektach .NET 4.0 można natknąć się na taki oto komunikat: CA1026: Microsoft Design: Replace method xyz with an overload that supplies all default arguments. W dokumentacji do tego ostrzeżenia czytamy, że choć używanie metod opcjonalnych jest dozwolone w specyfikacji CLS, to dozwolone jest także ich ignorowanie. Przyjrzyjmy się więc temu nieco bliżej. Parametry opcjonalne Na tapetę weźmiemy tę oto prostą metodę: public void OptionalMethod(string name, int value = 42) { ...
Wpadłem w pułapkę relacji wiele do wielu, m:n. Po raz kolejny. Jak fretka w sidła... te same po raz n-ty (czy m-ty?). Byłem na siebie tak wściekły, że to ludzkie pojęcie przechodzi. Właściwie bardziej mi teraz szkoda nerwów niż straconego czasu. Ale o co się, panie, rozchodzi? W moim systemie miałem bardzo prostą zależność: Company (n) - (m) Customer. Firma posiada wielu klientów, a klient przypisany jest do wielu firm. Bez dodatkowych ceregieli utworzyłem:
Architektura 5042 dni, 56 minut temu 321 źrodło rozwiń
W komentarzach do poprzedniego wpisu Sławek dopominał się o 'ciąg dalszy', więc może jako uzupełnienie dodam garść informacji odnośnie dostępności modułów w zrzutach pamięci analizowanego procesu. Weźmy zatem aplikację testową z poprzedniego tekstu i przygotujmy zrzuty pamięci dla działającego procesu, a potem sprawdźmy co też możemy z nich wyłuskać odnośnie załadowanych modułów. 1. WinDbg W WinDbg mamy polecenie .dump z wieloma parametrami określającymi zestaw informacji do zapisania w pliku zrzutu. Dla...
Poprzedni tekst zakończyłem zagadką: czy wykonując !SaveModule będziemy mieli kod dynamicznej metody DynamicClass.SecureGetKey(Test.Program, Int32) w pliku na dysku? Nikt nie odpowiedział, więc ja to zrobię: Nie, kod generowany w ramach DynamicMethod nie znajdzie się w zrzucie modułu na dysku. Zdziwieni? Ja trochę, a to jeszcze nie jest ostatnia niespodzianka, jaką serwuje nam SaveModule.Dziś zapoznamy się z następną, ale po kolei. Uwaga! Wszystkie dalsze rozważania dotyczą aplikacji x86, więc wszystki...
Przez ostatnie dwa tygodnie dużo się już na ten temat pisało, postanowiłem, więc, że dodam i swoje dwie krople do dyskusji. Dla tych którzy nie są w temacie, wszystko rozbija się o to, że RedGate (firma która kilka lat temu przejęła development na darmowym narzędziem do analizy i dekompilacji kodu napisanego pod .NET) oświadczyło, że zacznie pobierać opłatę za oprogramowanie. Pewnie to by umknęło uwadze społeczności gdyby nie tak naprawdę trzy kluczowe punkty:
Kilka dni temu Sławek napisał tekst o ukrywaniu kodu i skorzystał z klasy DynamicMethod, dzięki której generował kod IL w trakcie wykonania programu. Był również na tyle uprzejmy, że podesłał mi przykładowy kod, dzięki któremu zaoszczędziłem trochę czasu i mogłem zająć się od razu konkretem. Mam nadzieję, ze nie będzie na mnie zły jak wrzucę całościowo część tego kodu, dostępnego również w jego notce... :) Dla przypomnienia zatem, Sławkowi zależało na ukryciu szczegółów metody GetValue, tak, aby po dezas...
Stanąłem ostatnio przed następującym problemem: ukryć algorytm (w tym wypadku zawartość metody) tak, żeby przynajmniej na pierwszy rzut oka nie dało się go przeczytać. Pogrzebałem troche w róźnych helpach i innych internetach i stwierdziłem, że idealnie do tego celu nada się klasa DynamicMethod. Jak się okazało łatwiej powierdzieć, trudniej zrobić. Jak zawsze zresztą...
Obiekt użytkownika wykonującego żądanie (Context.User) jest powszechnie znany. Dzięki niemu w prosty i szybki sposób sprawdzimy, czy osobnik poruszający się po naszej aplikacji jest zalogowany oraz jaki jest jego login. Dodatkowo, jeśli zrzutujemy ten obiekt na klasę, np. RolePrincipal ...
Programiści dzielą się na: Tych, którzy piszą bardzo dużo komentarzy, czasami prawie w każdej linijce. Tych spotkałem niewielu.Tych, którzy w ogóle ich nie piszą, nawet jeśli napisali kod, którego nie da się zrozumieć bez choćby odrobiny komentarza. Tych ortodoksów jest już więcej.Największa grupę stanowią natomiast programiści, którzy sytuują się gdzieś pomiędzy tymi dwiema skrajnościami. Kiedy zaczynałem programować pisałem bardzo dużo komentarzy. Wiele z nich było zupełnie niepotrze...
Dziś po małej przerwie mała podpowiedź dla osób zajmujących się Windows Phone 7. Jak wiadomo (lub też nie ) platformy, przy pomocy których możemy pisać własne aplikacje na WP7 to Silverlight 4 Windows Phone (nie piszę samego Silverlight, bo są tu pewne różnice w stosunku do pełnej wersji) oraz XNA 4.0. Nie oznacza to jednak, że musimy zamykać się tylko w jednym ze światów. Istnieje możliwość korzystania w jednym projekcie z przestrzeni nazw, klas i funkcjonalności dostępnych w obu tych technologiach. Z...
Silverlight 5070 dni, 2 godziny, 22 minuty temu 48 źrodło rozwiń
Czy można zrobić coś źle dodając nowy plik do projektu aplikacji WWW w Visual Studio? Dla ustalenia uwagi niech będzie do plik z definicją raportu wczytywanego w czasie działania tejże aplikacji. Plik ten chcemy w razie potrzeby zmodyfikować bez konieczności ponownej kompilacji projektu. Sprawa wydaje się prosta (Add -> Existing item... itd.) ale jest pewien haczyk. Otóż, Visual Studio dla plików z nieznanymi rozszerzeniami ustawia ich właściwość Build Action na wartość None. Jeśli urucho...