Dzisiaj przybliżymy sobie możliwość jaką daje nam console.trace - funkcja powstała po to byśmy mogli prześledzić ścieżkę wykonywania aplikacji bez śledzenia jej krok po kroku. Poniżej przykładowy kawałek kodu: W kodzie mamy 4 funkcje i dwa przyciski. Oba przyciski dochodzą do wykonania funkcji last(...
Strona głównaUżytkownik
trismegista | użytkownik
W ramach śledzenia kodu Naszej aplikacji mamy możliwość wprowadzenia liczników do kodu I sprawdzenia ile razy wykonał się dany element. Liczniki są z góry zdefiniowanym elementem konsoli dlatego mamy do niego słowo kluczowe console.count – poniżej przykład kodu z jego użyciem: W kodzie funkcja consol...
Funkcjonalność to nie wszystko, w działającym systemie liczy się też wydajność systemu, na którą składają się wszystkie jego części. W przeglądarce Internet Explorer dostajemy funkcje, która pozwala liczyć czas wykonania poszczególnych sekwencji kodu i sprawdzać, co poszło nie tak. Zacznijmy od razu od prz...
Poprzedni artykuł dotyczył pokazywania obiektów w konsoli Internet Explorera. Tym razem chciałbym pokazać jak takie obiekty można pogrupować. Zaczniemy od razu od przykładu: Wynik przebiegu takiego programu po wciśnięciu przycisku wygląda tak: Patrząc na to trudno rozdzielić dane z jednego przebieg...
Dzisiaj chciałbym trochę opowiedzieć o tym jak logować do konsoli całe obiekty, tak byśmy mieli podgląd nie tylko na same zmienne co już prezentowałem w poprzednich artykułach, ale całe złożone elementy. Zaczniemy od prostego kodu z dwoma przyciskami: Kod realizuje następujące zadania:Mamy dwa przycis...
Sztuka programowania 3885 dni, 20 godzin, 20 minut temu 39 źrodło rozwiń
W ostatnich odcinkach serii wspominałem o tym jak można w łatwy sposób wyrzucić do konsoli informacje o stanie Naszej aplikacji. Dzisiaj pokazuję jak można formatować te dane, uzyskując większy porządek w danych. Umiętność formatowania danych, czy to pisanych ręcznie czy pochodzących ze zmiennych przydaj...
Sztuka programowania 3885 dni, 20 godzin, 20 minut temu 38 źrodło rozwiń
Od dłuższego czasu korzystam z automappera, jest to genialne rozwiązanie gdy trzeba mapować jeden obiekt na drugi. Gdy w klasach, z i do której chcemy mapować wszystkie typy właściwości/pól i ich nazwy się zgadzają nie trzeba robić praktycznie nic, gdy pojawiają się inne nazwy, wystarczy tylko wskazać że pole właściwość W w klasie A to właściwość X w klasie B i tyle, raz i spokój do końca projektu. Gdy typy się nie zgadzają, można skorzystać z konwerterów, zarówno na poziomie właściwości jak i całych kla...
W .NET bardzo łatwo podpisać cyfrowo jakiś pakiet. Przeważnie korzystając z WCF czy z innych technologii jest już to wykonane za nas w ramach framework’a. Bardzo często jednak pisząc aplikacje, chcemy zapewnić integralność danych. Za pomocą kilku linii kodu można tego dokonać. Przede wszystkim warto przyjrzeć się klasom RSACryptoServiceProvider oraz DSACryptoServiceProvider. Obie posiadają one metody takie jak SignData oraz VerifyData. Przyjrzymy się najpierw samemu podpisowi:privatestaticbyte[] SignDa...
Sztuka programowania 3938 dni, 11 minut temu 164 źrodło rozwiń
Przez ostatnie lata nie zajmowałem zbytnio się aplikacjami webowymi ale stopniowo zmienia się to. Z tego względu więcej na blogu można spodziewać się takiej tematyki. Powoli sobie wszystko przypominam. Prawdopodobnie dla wielu z Was będą to podstawy ale mam nadzieję, że komuś przydadzą się takie wpisy. W poście chciałbym pokazać czym różni się RouteUrl od Action. Zacznijmy następującej metody:public ActionResult Index() { string action = Url.Action("Index"); string route = Url.RouteUrl("CustomRoute2...
Uruchomienie aplikacji .NET może być procesem powolnym. Związanie jest to oczywiście z potrzebą skompilowania kodu do postaci maszynowej. W przeciwieństwie do np. C++, w plikach jest przechowywany kod tymczasowy. W większości przypadków nie jest to problemem, ale dla naprawdę dużych aplikacji może być to odczuwalne. Szczególnie ma to znaczenie dla ASP.NET, gdzie zależy nam jak na najkrótszym opóźnieniu. Jednym ze sposobów jest użycie nGen, który wygeneruje kod maszynowy. Ma to taką wadę, że trzeba wywoł...
Tym razem kilka słów o dosyć często pojawiającym się problemie, który miałem opisać wieki temu, ale inne wpisy jakoś zawsze okazywały się ciekawsze, ważniejsze i mniej udokumentowane. Przy okazji będę mógł zachęcić do zainteresowania się biblioteką procdumpext.dll, która wiele rzeczy bardzo usprawnia. Analizując zrzuty pamięci przygotowane na innym komputerze nietrudno trafić na sytuację, gdy środowisko uruchomieniowe różni się od naszego i wówczas może się okazać, że nie będziemy w stanie korzystać z m...
W bibliotece RadControls for Windows Phone znajduje się mechanizm do zrzucania kontrolki do kafelka Live Tile (przy użyciu LiveTileHelper). Niestety, ta operacja jest bardzo zawodna - często kafelek nie renderuje się prawidłowo (zwłaszcza gdy jest nieco bardziej skomplikowany), a i czas wykonywania pozostawia wiele do życzenia. Nie mam pojęcia jak to ich programiści zaimplementowali, ale postanowiłem wziąc sprawy w swoje ręce, by znaleźć lepsze rozwiązanie!
Mobile development 3972 dni, 16 godzin, 39 minut temu 100 źrodło rozwiń
Dawanie lub otrzymywanie konstruktywnego feedbacku to bardzo trudna sprawa (challenge). Najczęśniej trzeba powiedzieć, co nie działa u danej osobo i powiedzieć to twarzą w twarz. Nie każdy dobrze znosi krytykę. W naszym zawodzie, gdzie miękkich umiejętności raczej deficyt, jest to jeszcze trudniejsze.
Dzisiaj kilka przykładów pokazujących jak operować licznikami z poziomu c#. Czytanie jakichkolwiek liczników jest bardzo proste ponieważ .NET Framework dostarcza odpowiednie klasy.
Sztuka programowania 3972 dni, 16 godzin, 39 minut temu 196 źrodło rozwiń
Swojego czasu zachwalałem wytrawność kodu i zapraszałem do jego degustacji. Pocieszające jest, że nikt z tego powodu nie był zdegustowany, a wręcz przeciwnie – niektórych zainspirowałem. Nie ukrywam, że lubię być inspiracją, a już uwielbiam, kiedy wynikiem tejże inspiracji jest z kolei zainspirowanie mnie. Nic tak bowiem nie pomaga poszerzaniu wiedzy, jak wymiana poglądów. W przypadku, który mam zamiar omówić, moja inspiracja jest podwójna. Na razie jednak skupię się na jednym jej aspekcie. Krzysztof Mor...
Sztuka programowania 3968 dni, 23 godziny, 4 minuty temu 239 źrodło rozwiń
Zgodnie z obietnicą wypada przedstawić drugi z rezultatów inspiracji wynikłej ze swoistego dialogu (diaBlogu ;) ) pomiędzy Krzysztofem Morcinkiem a mną. Tym razem skupię się na następującym fragmencie jego wpisu ...
Sztuka programowania 3967 dni, 3 godziny, 16 minut temu 166 źrodło rozwiń
Wiele programistów c# zapomina, że struktury również istnieją w .NET. Mam wrażenie, że jest to konstrukcja bardziej popularna w CPP niż w C#. W praktyce jednak, wybranie struktur zamiast klas, może mieć kolosalne znaczenie jeśli chodzi o wydajność i płynność aplikacji. Nie jednokrotnie porównywałem te dwa typy obiektów na blogu więc podstaw nie będę omawiał tutaj. Przyjmuje, że każdy wie, że struktury znajdują się na stosie a obiekty klas na stercie. W poście chciałbym skupić się na następującym scenar...
Sztuka programowania 3968 dni, 23 godziny, 4 minuty temu 385 źrodło rozwiń
W dzisiejszym wpisie, pokażę jaki wpływ mają klasy na zużycie pamięci. W ostatnim poście pokazałem korzyści płynące ze struktur jeśli mamy do czynienia z małymi kontenerami na dane. Najlepiej odpalmy po prostu następujący kod.
Sztuka programowania 3964 dni, 17 godzin, 24 minuty temu 237 źrodło rozwiń
If you work on small and relatively simple projects (in terms of number of components) you may not encounter this limitation. But in any non trivial ‘line of business’ application it is very likely that sooner or later you will come across this troublesome problem: Visual Studio refuses to open a project when the length of its (or any of its references) file system path is longer than 260 characters.
Ostatnio intensywnie pracuję w .NET Micro Framework. Na tyle intensywnie, że pokusiłem się o stworzenie emulatora do urządzenia, dla którego piszę oprogramowanie. Przykładowy emulator znalazłem w katalogu przykładów dołączonych do .NET Micro Framework, zaś wiedzę uzupełniłem lekturą rozdziału poświęconego emulacji z tej książki. Emulator ma postać aplikacji, której klasa Program dziedziczy po klasie Emulator z Microsoft.SPOT.Emulator. Dodatkowo należy stworzyć odpowiedni plik konfiguracyjny opisujący em...