Komenda preprocesora #if DEBUG i problemy z utrzymaniem (rename).
Strona głównaUżytkownik
pawelm | użytkownik
Architektura 4585 dni, 2 godziny, 51 minut temu 183 źrodło rozwiń
Programując, wcześniej czy później będziemy zmuszeni nauczyć się obsługi zdarzeń (events). Opisując program z laborek wyjaśnię jak korzystać ze zdarzeń według wzorca .NETu. Zdarzenia Początkujący programiści mogą nie wiedzieć czym są zdarzenia, ale zapewne ich używają. Bo czy nie zdarzyło się komuś wpisać fragmentu kodu do Form1Load(…) lub button1Click(…)? Podejrzewam, że takich osób jest niewiele. Tak jak w życiu codziennym, tak i w programowaniu są pewne zdarzenia na które musimy odpow...
O zdarzeniach IntelliTrace pisałem już kilkakrotnie (Własne zdarzenia IntelliTrace!, Własne zdarzenia IntelliTrace 2). Każdy z tych postów dotyczył jednak zdarzeń definiowanych deklaratywnie w pliku XML. Jest to stosunkowo proste, nie potrzeba nic kodować ale co z tym związane ma to też swoje ograniczenia. W takiej sytuacji z pomocą przychodzą nam Programmable Data Query (w skrócie PDQ) czyli klasy implementujące interfejs Microsoft.HistoricalDebuggerHost.IProgrammableDataQuery....
Bazy danych i XML 4582 dni, 19 godzin, 40 minut temu 148 źrodło rozwiń
Ostatnimi czasy rozpocząłem naukę programowania pod Windows Phone 7. Szybko okazało się, że przy pisaniu jednej z testowych aplikacji, warunkiem koniecznym jej dalszego rozwoju stał się dostęp do bazy danych. Programowanie na platformę mobilną wiążę się jednak z wieloma ograniczeniami w stosunku do programowania aplikacji desktopowych i oczywiście nie ominęły one również samej bazy danych. W przypadku Windows Phone, możemy korzystać zatem tylko z SQL Server CE i wykorzystywać w tym celu wyłącznie LINQ t...
Mobile development 4584 dni, 1 godzinę, 45 minut temu 179 źrodło rozwiń
Na rynku jest wiele dobrych aplikacji pełniących rolę serwera poczty - niestety większość wymaga skomplikowanej konfiguracji. Z drugiej strony programując rozwiązania pod SharePoint czasami jest konieczne skorzystanie z funkcji poczty wychodzącej i przychodzącej. W związku z tym przydałby się serwer poczty, który łatwo się konfiguruje i wystarcza min. na potrzeby programisty.
Dzisiaj pokażę, jak od strony programistycznej wygląda AppDomain. Zwykle tworzymy aplikację host, która trzyma referencje do kilku AppDomain. Stwórzmy najpierw aplikację konsolową wyświetlającą po prostu tekst:namespace ConsoleApplication3 { class Program { staticvoid Main(string[] args) { while (true) { Console.WriteLine(AppDomain.CurrentDomain.FriendlyName); System.Threading.Thread.Sleep(2000); } } }...
Architektura 4584 dni, 5 godzin, 32 minuty temu 125 źrodło rozwiń
W poprzednim poście opisałem czym są Programmable Data Query i jak zdefiniować wykorzystujące je zdarzenie IntelliTrace. Teraz pora na przedstawienie przykładowej implementacji PDQ. Zacznijmy jednak od przypomnienia do czego służą poszczególne metody interfejsu IProgrammbleDataQuery. Potrzebne informacje zamieściłem na poniższej mapie myśli: Poniższe PDQ może zostać użyte z każdym zdarzeniem diagnostycznym. Jest proste ale nie znajdziemy analogicznego w bibliotece Microsoft.Vis...
Bazy danych i XML 4582 dni, 19 godzin, 40 minut temu 36 źrodło rozwiń
Pozwolę sobie tutaj rzucić okiem na style CSS w ujęciu dość podstawowym i funkcjonalnie porównać je do styli XAML. W niewielkim stopniu zahaczymy też o podstawowe ustawienia elementów wizualnych i zagadnienia layout’u. HistoriaCSS 1 - 1996 (czcionki, kolory, wyrównania, odstępy) CSS 2.1 - 2004 (layout, pozycjonowanie) CSS 3 - w rozwoju (efekty, rozmiary, mowa) http://www.quirksmode.org/css/contents.html Selektory w stylach Prostepo typie np. body; h1,h2 (h1 i h2) po id, np. #menu po klasie, np. .b...
.NET 4.5 przynosi wiele zmian. Szczególnie ciekawym jest nowe podejście do programowania asynchronicznego, znacząco ułatwiające prace programisty z callback’ami itp. W zasadzie nie ma już callback’ow – kod asynchroniczny niewiele różni się od synchronicznego. Zachęcam do przeczytania mojego nowego artykułu: http://msdn.microsoft.com/pl-pl/library/programowanie-asynchroniczne-w-net-4-5.aspxExplore posts in the same categories:C#, Wielowątkowość This entry was posted ...
Programowanie rozproszone 4591 dni, 2 godziny, 13 minut temu 405 źrodło rozwiń
W wielu przypadkach firmy zaczynają przygodę z SharePoint od najprostszej konfiguracji farmy. Z tego względu chciałbym w tym poście przedstawić dwie najprostsze konfigurację oraz punkt po punkcie przeanalizować proces instalacji.
W .NET istnieje twór zwany AppDomain. W systemie operacyjnym mamy kilka podobnych pojęć takich jak proces czy wątek. AppDomain w dużej mierze przypomina proces – służy do izolowania aplikacji bezpośrednio niezwiązanych ze sobą. Dwa różne procesy mają przede wszystkim różną przestrzeń pamięciową. Adres zmiennej w procesie A, odnosi się już do innego obszaru w procesie B – alokacja zaczyna się w różnych miejscach. Z tego względu uruchomienie nowego procesu jest czasochłonną operacją i wiąże się z alokacją...
Architektura 4587 dni, 6 godzin, 50 minut temu 256 źrodło rozwiń
Hej, wzięło mi się na przetestowanie rzeczywistej wydajności owej funkcji. Jeszcze produkcyjnie nie używałem jej więc postanowiłem użyć jej praktycznie w teście.
Zgodnie z obietnicą dziś napiszę trochę więcej o rzutowaniu, wydajności oraz dobrych praktykach. Muszę przyznać, że w jednej kwestii miałem nieprawdziwe informacje (znalezione gdzieś na forum) których byłem pewien ponieważ napisałem prosty program sprawdzający wydajność – jak na końcu pokażę popełniłem błąd podczas mierzenia wydajności spowodowany kompilacją JIT. Na początku trochę przypomnienia: 1. Rzutowanie prefiksowe – najpopularniejszy typ znany np. z CPP. int value = (int)boxedValue; Można wyk...
W kolejnym artykule chciałbym przedstawić podstawy pisania usług sieciowych w WCF (Windows Communication Foundation) oraz łączenia ich z aplikacją klienta. Wszystko omówię na przykładzie bardzo prostego przykładu. Stworzę prosty kalkulator, który będzie umożliwiał dodawanie, odejmowanie, mnożenie i dzielenie dwóch liczb. Zaczynamy!
Autorzy książki Ross Mistry i Stacia Misner opublikowali na blogu Microsoft Press najnowszą książkę na temat SQL Sever 2012 . Plik zajmuje ok 10 MB w formacie PDF. Plik można pobrać stąd. Na stronie źródłowej można przeczytać spis treści oraz przybliżoną cenę wersji papierowej - 14$ . źródło
Bazy danych i XML 4605 dni, 19 godzin, 32 minuty temu 191 źrodło rozwiń
Co powiedzie na taki fragment kodu?FileInfo fileInfo; if (sender is FileInfo) fileInfo = sender as FileInfo; Konstrukcja jest dość popularna i: - oczywiście skompiluje się, - jest bezpieczna na wartość NULL (tzn. nie wyrzuci wyjątku), - jeśli sender jest innego typu niż FileInfo, kod nie wyrzuci wyjątku. Co jest w końcu nie tak? Chodzi tutaj o good practice i nie wprowadzanie czytelnika kodu w błąd. Operator is sprawdza czy obiekt jest danego typu. Zatem w instrukcji IF wiemy już, że sender ...
Ostatnio przyszło mi nieco więcej niż zwykle bawić się zrzutami pamięci różnych procesów, generowanych przez procdumpa, tudzież myszkowo z Process Explorera lub Process Hackera. Czasem po prostu wygodniej jest zrobić zrzut i potem bawić się takim 'zamrożonym procesem' na spokojnie, w innym miejscu i o innym czasie. Szczególnie, gdy bawimy się w analizę jakiegoś ciekawego malware'u (;)) i po prostu maszyna wirtualna nie jest najlepszym miejscem do zabawy debuggerem, a pliki .dmp zarażonych procesów można ...
Bardzo często się zdarza, że używana przez nas wartość nie jest dogodnego dla nas typu. Co zrobić gdy chcemy dodać do siebie dwie liczby, a jedyne co mamy to ciągi znaków? W tym artykule zajmiemy się właśnie tym zagadnieniem. Istnieją cztery zasadnicze rodzaje konwersji: -konwersja niejawna(implicit) -konwersja jawna(explicit, casts) -konwersje użytkownika -konwersja poprzez klasę pomocniczą Konwersja niejawna Dla tego przypadku konwersja odbywa się bez wiedzy użytkownika. Używan...
W ramach zakończenia cyklu poświęconego Managed Add-in Framework (MAF, System.Addin) i aby ułatwić czytanie, przygotowałem spis artykułów związanych z tym tematem. Zapraszam do przeczytania całego cyklu...
W programowaniu obiektowym użycie tak popularnej konstrukcji jak if-else jest często symptomem złej architektury. Załóżmy, że mamy metodę walidująca dostęp do danych np:privatebool Validate(string userName, string password, AuthType authType) { if(authType == AuthType.PlainPwd) { if(password == _user.Password) returntrue; } elseif(authType == AuthType.MD5) { if(Md5.Hash(password) == _user.Password) } elseif(authType == ....) // ITD... } Powyż...