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.
autor: Czasami się zdarza, że ktoś wysyła do mnie maila z zapytaniem o radę. Rzadziej się zdarza, że ktoś wysyła maila i podaje nie istniejący adres e-mail. Tak się zdarzyło teraz. 2h odpowiadania na maila by się dowiedzieć iż sorry ale adres e-mail nie istnieje. Tak więc by moja praca nie poszła na marne, zamieszczam tutaj zarówno pytania jak i odpowiedzi także zachęcam do komentowania :)
Kolejne omówienie, kolejnej sesji z konferencji BUILD - tym razem temat to: What's next in .NET Framework 4.5 Chyba każdy programista .NET, nawet taki, który traktuje to tylko jako zawód (są tacy? :)) z zainteresowaniem śledzi wydarzenia w .NET Frameworku. W końcu zmiany w nim będą rzutować na to w jaki sposób będzie kodował w przyszłości (chyba, że jest uwięziony w jakimś legacy code z .NET 2.0). Sesja zaprezentuje nam jakie oręże będzie dostępne już w niedalekiej przyszłości na potrzeby pisania apli...
autor: Tworząc programy na platformę Windows Phone 7 spotykałem się dość często z problemem ikon. Nie jestem grafikiem i zrobienie porządnej ikony do programu zajmowało mi zbyt wiele czasu. Pierwsze próby poszukania jakiś ikon w sieci skończyły się fiaskiem. Oczywiście poszukiwałem rozwiązań darmowych. Jedyne, co udało mi się znaleźć to zestaw ikon udostępniony przez Microsoft. Niestety ilość ikon nie jest zbyt wielka. Dlatego, też poszukiwania trwały dalej. Udało mi się znale...
autor: We wtorek miałem przyjemność wygłosić prelekcję prelekcję na temat Mono.Cecil na Wrocławskiej Grupie .NET. W sesji starałem się zaprezentować czym jest Mono.Cecil oraz jakie daje nam możliwości jeśli chodzi o przeglądanie, modyfikację plików assembly. Mam nadzieję, że za pomocą przykładów: generatora statystyk, automatyczną implementację INotifyPropertyChnaged wraz z użyciem MSBuild task pokazałem jak możemy wykorzystać Mono.Cecil, aby ułatwić naszą pracę. Dodatkowo poprzez zaprezentowanie proste...
Ostatnio zacząłem uczyć się Perla na potrzeby mojej pracy magisterskiej. Część projektowa opiera się na przetwarzaniu tekstu, dlatego dla własnej wygody odpuściłem sobie C# (ok, wymóg promotora i słusznie!). Choć poradziłbym sobie z tym problemem, nikt nie zaprzeczy, że języki pokroju Perla czy Pythona zostały do tego typu zadań stworzone. Gdy promotor zapytał mnie o preferowane języki (w ogóle), bez chwili namysłu wymieniłem C#, C++. Na co odpowiedział, że każdy szanujący się programista powinien znać d...
Czasami zdarza się, że usługi jakie oferuje nasz program powinny być uzależnione od wersji systemu operacyjnego na jakim pracuje użytkownik końcowy. Wydawanie osobnych instalatorów nie jest wygodnym rozwiązaniem ani dla użytkownika ani tym bardziej dla programisty. Choć biblioteki .NET, a w szczególności klasa System.OperatingSystem oferuje wiele ciekawych informacji, są one niewygodne w codziennej pracy. Wymagana jest szczegółowa wiedza na temat Major oraz Minor Version systemu, który nas interesuje...
Jak pewnie wszyscy wiedzą niedawno skończyła się konferencja BUILD na której przede wszystkim zaprezentowano najnowszego Windows'a 8. Jednak nie tylko. W kilku nadchodzących postach postaram się pokazać filmy warte obejrzenia i przedstawić dlaczego. Dziś na pierwszy ogień.. Future directions for C# and Visual Basic Anders Hejlsberg prezentuje co czeka nas w przyszłości w C# i VB. Nazwisko, którego nie trzeba przedstawiać nikomu - twórca języka. Pierwsza część prezentacji skupia się na zapr...
Dziś dotnetomaniak łączy się z z grupą devMedia tworząc dotnetoMedia group :). Z nazwą żartuję, ale dzięki połączeniu sił mamy nadzieję dostarczać jeszcze więcej dobrej treści i informacji dla programistów, sysadminów i zwykłych użytkowników komputerów. Już od jakiegoś czasu współpracujemy, z grupą devMedia i postanowiliśmy naszą współpracę uczynić oficjalną. Co się zmieni po tym 50-50 joint-venture? dotnetomaniak przejdzie lekki rebranding, który sprawi, że będziemy mieć wszystkie portale, w gr...
Całkiem niedawno napisałem krótki artykuł, gdzie wykorzystałem koncepcję wyrażeń lambda i w oparciu o nie zbudowałem prosty system zdarzeń dla okienek Windows. Wyrażenia Lambda wprowadzone wraz z C++0x są na tyle uniwersalnie zbudowane, że z łatwością mogą być skonsumowane przez algorytmy ze standardowej biblioteki STL. Oto przykład z find_if:
Dziś post informacyjny. Trochę zmienia się na dotnetomaniaku i warto by było o tym napomknąć i wyjaśnić dlaczego tak a nie inaczej. Zatem - do dzieła. Zmienia się przede wszystkim sposób otwierania artykułów. Dotychczas, po zmianie ze stanu pierwotnego, kliknięcie w tytuł powodowało od razu przejście do artykułu docelowego z pominięciem strony wpisu gdzie były dostępne komentarze i informacje o tym kto poleca dany artykuł. Po dzisiejszym wdrożeniu zostało to przywrócone do pierwotnego działania. Wiem,...