Czasami typ ENUM znajduje zastosowanie(czasami ponieważ często ogranicza on modułowość aplikacji). W wielu przypadkach potrzebujemy jednak skojarzyć pewien opis z każdą wartością enum’a. Jako praktyczny scenariusz można wymienić implementację menedżera dźwięków. Dla przykładu w pewnej grze, którą współtworzyłem aby uatrakcyjnić interfejs dla programisty zdefiniowałem sobie typ enumeryczny SOUNDTYPE:publicenum SOUNDTYPE { ROCKETLAUNCH, MACHINEGUN_LAUNCH } Programista zatem chcąc wykorzystać d...
Programując własne biblioteki, często potrzebujemy zdefiniować własny typ wyjątku. Przeglądając różnego rodzaju kody źródłowe nierzadko spotykam błędną deklarację własnych wyjątków:publicclass MyException : Exception { // specyfikacja } Co prawa kompilator nie zgłosi błędu ale już np. CodeAnalysis zwróci nam uwagę o błędnej deklaracji. Najprościej korzystać w Visual Studio z tzw. snippet’ów czyli gotowych fragmentów kodu. Naciskając klawisze ctrl+space pojawi nam się lista dostępnych snippetów w VS...
O wielowątkowości pisałem już niejednokrotnie. Niestety w żadnym z moich postów, nie wyjaśniłem podstawowych pojęć związanych z współbieżnością. Oczywiście jeśli wykorzystujemy wątki do prostych zadań typu asynchroniczne połączenie z usługą, poważniejszych problemów nie doświadczymy. W przypadku jednak nieco bardziej zaawansowanych algorytmów, musimy zawsze badać nasz kod pod kątem: 1. Zakleszczenie (deadlock) – występuję gdy wątek A czeka aż wątek B skończy swoją operację a wątek B czeka aż wątek A zako...
Generator haseł z możliwością parametryzacjilis 21 2011 9:48 W końcu nadszedł ten dzień, kiedy metoda Membership.GeneratePassword przestała mi wystarczać. Zawiedziony niewystarczającymi możliwościami tego generatora napisałem poniższy kawałek kodu:using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using Olsoft.Common.Extensions; namespace Olsoft.Common.Security { public interface IPasswordGenerator { string Generate(int length)...
No niestety tezę tę opieram na swoim przykładzie. Skąd więc taka generalizacja, że posądzam o lenistwo wszystkich? Bazuję na swoich odczuciach i na przeświadczeniu, że gdy sam sobie organizuje pracę, to lenistwo mnie nie nęka!
Dzisiaj króciutki post. Wchodząc we właściwości projektu jako Target Platform można zauważyć .NET Framework 4 Client profile oraz .NET Framework 4. Jaka jest różnica? Client profile to taka mocno uproszczona wersja .NET framework przeznaczona dla aplikacji klienckich. Dzięki temu użytkownik nie musi instalować pełnego .NET Framework a uproszczony i mniej ważący Microsoft .NET Framework 4 Client Profile. Wersja kliencka zawiera między innymi wsparcie dla WPF, WCF, WWF, Entity Framework, Linq To SQL, MEF. ...
Od jakiegoś czasu chciałem napisać coś o refleksji, gdyż od kiedy niedawno zacząłem jej używać spodobała mi się bardzo Dziś krótko bo szybko.
Kilka dni temu, w zgodzie z tym co wykazała ankieta - Programiści to stworzenia nocne - kodowałem sobie jakieś mało znaczące rzeczy pomiędzy 2 a 3 nad ranem. Jako, że niewiele się o tej porze dzieje, można spokojnie skupić się na programowaniu :). Jakież było moje zdziwienie, gdy o godzinie 2:28 nagle zaczęły spływać raporty błędów z dotnetomaniaka. Sam fakt pojawienia się błędów nie jest jeszcze jakiś niezwykły - wiadomo, od czasu do czasu może pójść coś nie tak. Bardziej interesujący był komunikat kt...
z pamiętnika anonimowego programisty
z pamiętnika anonimowego programisty
Czytając różne książki lub artykuły można się zgubić w terminologii. Szczególnie Mock oraz Stub często są używane zamiennie a ich różnica jest jednak znacząca. Nie tłumaczyłem na język polski powyższych terminów aby nie wprowadzać jeszcze większego zamieszania Zacznijmy od terminu najbardziej ogólnego – Double. Nazwa określa dowolny obiekt naśladujący realną klasę. Zatem obiektem double może być Fake, Dummy, Stub lub Mock. Innymi słowy double można podzielić na wspomniane 4 obiekty. Termin stanowi po pr...
autor: Obecnie tworze aplikację konsolową, jest to REPL dla mojego tyci-mini języka (język nie istnieje poza REPL). Postanowiłem, że istniejącą funkcję print pokryję testami jednostkowymi. Zastanawiałem się jak to zrobić. Problem polegał na tym że wynik przekazywałem na ekran i teraz miałem zagwostkę jak ten tekst przechwycić. Dowiedziałem się o klasie MemoryStream, który tworzy strumień piszący po pamięci przydzielonej dla klasy. Moją klasę PrintMethod, musiałem z modyfikować z: public override Resu...
C# 4.0 dostarcza kilka nowych możliwości jeśli chodzi o parametry i ich przekazywanie. Pierwszym rozszerzeniem jest możliwość zdefiniowania opcjonalnych argumentów (dlaczego musieliśmy tak długo na to czekać?):privatevoid ShowText(string text="Hello world") { MessageBox.Show(text); } Teraz możemy wywołać metodę ShowText dostarczając własny argument lub pomijać go i wykorzystując wartość domyślną (“Hello World”):ShowText("Custom Text"); ShowText(); // również poprawne Named arguments umożliwiają prze...
XMLSerializer jest bardzo wygodnym sposobem zapisu klas w formie pliku XML. Rozważmy następujący przykład:publicinterface IData { // jakies dekleracjestring Text{get;set;} } publicclass Data: IData { publicstring Text{get{...}set{...}} } publicclass ClassA { public IData Data{get;set;} } Niestety po próbie serializacji dostaniemy wyjątek mówiący, że nie można zapisywać interfejsu. Jaka jest odpowiedź na pytanie zadanie w poście? NIE da się! W poście mam zamiar pokazać wyłącznie pewne sposob...
Autor: Naszło mnie ostatnio, żeby zebrać do kupy kilka artykułów skierowanych do początkujących programistów. Bez zbędnego gadania, oto kupa...
Biblioteka SOS, która dostarczana jest wraz z .NET Framework to nie jedyne źródło informacji o aplikacjach .NET analizowanych w WinDbg. Poza nią jest jeszcze Psscor4 (oraz wcześniejsza wersja - Psscor2, obie do ściągnięcia z Microsoft), która jest rozbudowaną wersją sos i jest najczęśniej zamiast niej używana. Kolejna to sosex, autorstwa Steve’a Johnsona, o której tu i ówdzie już wspominałem i właśnie o niej powiemy dziś parę słów. Miesiąc temu pojawiła się najnowsza wersja tej biblioteki, w której pojaw...
Zanim przejdę do wyjaśnienia kilku usprawnień wprowadzonych w C# 4.0 spróbujmy zdefiniować pojęcia kowariancji oraz kontrawariancji. Te skomplikowane pojęcia odnoszą się po prostu do typów konwersji. Kowariancja to określenie typu konwersji z bardziej specyficznego do bardziej ogólnego(klasy). Kontrawariancja to oczywiście przeciwieństwo (bazowa klasa do pochodnej). Jako przykład kowariancji w c# można pokazać np.:object text ="Hello World!"; Deklaracja text jest kowariancją ponieważ możemy przypisać ...
Netmajor's Tech Blogwin 7 C# ASP.NET etcHOMEO mnieKontaktThe message with Action ” cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher – problemy z SOAPem Błąd ten męczył mnie już chyba od miesiąca :/ Prawdziwa bolączka. Błąd moze oznaczać iż mamy niezgodność między tym co wysyła klient a tym co mamy zdefiniowane po stronie serwisu. U mnie objawiło się to przy ...
Progresywny podatek dochodowy w Izraelu Zbliżają się wybory, zatem podatki to teraz gorący temat. Tak się złożyło, że Ayende Rahien na swoim blogu opublikował jedno z zadań rekrutacyjnych, które wykorzystywał do weryfikacji umiejętności potencjalnych kandydatów na programistę. Problem polegał na obliczeniu podatku dochodowego od danej kwoty, zakładając, że stawki podatku i progi podatkowe w Izraelu są następujące.
Wczoraj Gutek opublikował swoją odpowiedź na maila zatytułowanego "Prośba o radę…". Los chciał, że dostałem maila o identycznym tytule, jednak innej zawartości. Jakaś zorganizowana akcja, żeby dać piątaka?:). Odpisanie na niego zajęło mi dobre półtorej godziny i doszedłem do wniosku że publikacja tego co się urodziło może być faktycznie dobrym pomysłem.