W następnym poście mam zamiar napisać o SpecsFor, kolejnym framework’u ułatwiającym pisanie testów BDD. Najpierw jednak chciałbym przedstawić expectedObjects oraz Should Assertion Library, które są składowymi SpecsFlow. Wszystkie z wymienionych bibliotek można zainstalować przez NuGet. Should Assertion Library to mała biblioteka ułatwiająca asercje danych. W standardowych unit testach zwykle piszemy coś w stylu:Assert.IsTrue(value); Assert.IsNull(value); Assert.AreEqual(actualValue,expectedValue) Jes...
Strona głównaUżytkownik
jedmac | użytkownik
Stwórz sztuczną inteligencję i wygraj 2500zł Platforma codearena.pl organizuje turniej online dla programistów. Główna nagroda to 2500zł. Zadanie konkursowe to napisanie skryptu sztucznej inteligencji dostosowanego do reguł i planszy gry, które zostaną ogłoszone 31 lipca. Udział w konkursie może wziąć każdy, kto ma ochotę spróbować swoich sił w pisaniu sztucznej inteligencji, która zmierzy się ze skryptami innych uczestników. Język programowania jest dowolny. Gra konkursowa zostanie ogłoszona 31 lipc...
Po bardzo gorącym okresie ostatniego miesiąca i totalnym braku czasu, przyszedł czas na nowy, mogący budzić kontrowersje, niechęć do autora itp. post :) Język angielski. Jakże świetnie znany...
Ten post jest częścią cyklu o Dependency Injection. Ostatnim razem rozstaliśmy się w takim napięciu, że aż jeden z Czytelników nazwał to cliffhangerem (nauczyłem się nowego słowa!). Zanim jednak zaczniemy przyglądać się rozwiązaniu naszej niewesołej sytuacji (nie kompiluje się, buuu): chwila refleksji i nader trafnego (a jak!) porównania. Znacie te potworki przedstawione na obrazku? Matrioszka. Ruska drewniana baba...
Sztuka programowania 3832 dni, 21 godzin, 26 minut temu 281 źrodło rozwiń
0xDBE jest nowym narzędziem do zarządzania bazami danych stworzonym przez JetBrains. Znając R# oraz słysząc opinie o inych ich produktach można mieć nadzieję że będzie dobre. Jednak zamiast mieć nadzieję lepiej po prostu sprawdzić, a można to zrobić dzięki "Early Access Program". Skorzystał z niego Maciek Aniserowicz i wyraził się dość niepochlebnie. A więc postanowiłem sprawdzić to narzędzie sam.
Bazy danych i XML 3832 dni, 21 godzin, 26 minut temu 313 źrodło rozwiń
Metody rozszerzające i ich ciekawa właściwość...
Sztuka programowania 3827 dni, 22 godziny, 6 minut temu 416 źrodło rozwiń
Zastanawiacie się co to takiego ten tunel kodu? Otóż chodzi tutaj o specyficzny stan świadomości, z dużym skupieniem i widzeniem tunelowym, w który mogą wejść programiści tworzący kod. Można o nim przeczytać np. w książce autorstwa Roberta C. Martina "Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów", choć tam nosi on nazwę strefy lub przepływu (flow). Zgodnie z opisem we wspomnianej książce, stan ów charakteryzuje się tym, że znajdujący się w nim programiści czują się ...
Sztuka programowania 3827 dni, 17 minut temu 308 źrodło rozwiń
Obiekty Hub mają z góry określony czas życia. Ten sam obiekt nie jest współdzielony pomiędzy różne wywołania. Jeśli klient wywołuje metodę, instancja huba jest tworzona od nowa. Oznacza to, że nie możemy przechować stanu między zapytaniami w następujący sposób
Dzisiaj trochę więcej szczegółów na temat, jak można wywoływać metody w Hub API. W ostatnim wpisie, zaimplementowaliśmy klasę, która wykonuje metodę po wszystkich klientach (broadcast). SignalR ma ogromne możliwości i istnieje wiele innych wzorców. Dla przypomnienia broadcast wygląda następująco:publicvoid SendMessage(string message) { Clients.All.newMessage(string.Format("{0}: {1}",DateTime.Now,message)); } Clients posiada kilka metod, służących do wysyłania wiadomości w różnych sposób. Na przykła...
Zainstalowałem wczoraj rozszerzenie do VS 2013, które pozwala na uniknięcie pozostawiania białych znaków w kodzie. Bardzo prosty dodatek, o którym nawet bym nie pomyślał, gdyby nie przypadek. Przykładowy zrzut ekranu...
Ostatnimi czasy szukam różnych rozszerzeń do Visual Studio i wypróbowuję je w swoich aplikacjach webowych. Jednym z takich rozszerzeń jest biblioteka jQueryUIHelpers, która umożliwia nam korzystanie z jQuery za pomocą helperów. Jak to wygląda w praktyce?
W VS 2013 usprawniono debugowanie kodu asynchronicznego. Wszyscy jesteśmy przyzwyczajeni już do async\await. Znacząco to ułatwia wykonywanie operacji asynchronicznych. Niestety, debugowanie w VS 2012 jest dość uciążliwe. Załóżmy, że mamy kod z wieloma metodami asynchronicznymi, które z kolei są pozagnieżdżane. W przypadku wyrzucenia wyjątku lub ustawienia breakpoint’a, call stack nie zawierał żadnych informacji. Przetestujmy opisany problem na następującym kodzie:publicpartialclass MainWindow : Window {...
Już kilka tygodni typu pisałem o ASP.NET MVC 5 Scaffolding. Jak wspomniałem, domyślny szablon nadaje się do prototypów albo tymczasowych aplikacji. W praktyce będziemy chcieli wykorzystać IoC i własne usługi, a nie bezpośrednio operować na bazie danych. Za pomocą własnego szablonu, można wszystko dostosować do konkretnego projektu i infrastruktury. Najpierw ściągamy pakiet szablonów VS z http://sidewaffle.com/. Oprócz tego, musimy zainstalować Visual Studio 2013 Update 2 oraz Visual Studio 2013 SDK. Na...
O finalizers czy też destruktorach pisałem już wielokrotnie. Wspomniałem również, że lepiej ich unikać, jeśli oczywiście to możliwe. Głównym problem jest możliwość wypromowania obiektu do kolejnych generacji, ponieważ obiekty z destruktorami są umieszczane w kolejce freachable, gdzie na nową stają się osiągalne. Jeśli ktoś nie pamięta, to polecam najpierw poczytanie o tym (w dziale articles są linki do moich tekstów o GC). Dzisiaj jednak chciałbym wspomnieć o czymś innym. Wiemy, że jeden wątek zwykle m...
Sztuka programowania 3845 dni, 23 godziny, 15 minut temu 158 źrodło rozwiń
Kiedyś na stronach MS widziałem rekomendację mówiącą “używaj typów wyjątków dostarczanych przez framework”. Jakiś czas temu, na jakimś polskim chyba blogu, przeczytałem tego powtórkę. Wiecie co? U mnie się doskonale sprawdza kompletne przeciwieństwo tej praktyki. Zawsze w swoich aplikacjach staram się mieć jeden bazowy typ wyjątku, abstrakcyjna klasa MyAppException: Exception. Dzięki temu jestem w stanie wyłapać wszystko co rzuca mój...
Sztuka programowania 3848 dni, 4 godziny, 2 minuty temu 254 źrodło rozwiń
The topic of custom exceptions is surprisingly controversial. Some argue that exceptions shouldn't be used for anything related to "business", while others (me included) say that exceptions like InsufficientFunds are fine - I even wrote a whole chapter about using custom exceptions to simplify controllers in my Rails Refactoring book. I've read an interesting blog post today about custom exceptions (here - unfortunately it's in Polish), where the author advocates for using "business exceptions". ...
Sztuka programowania 3848 dni, 4 godziny, 2 minuty temu 147 źrodło rozwiń
OK – mamy niektóre “odpowiedzialności” wyjęte do osobnych klas. Ale co dalej? Czy UsersController powinien sam, ot, tak sobie, tworzyć nowe instancje których aktualnie potrzebuje? Nie! Pójdę o krok dalej i powiem więcej: użycie słowa kluczowego “new” w kodzie aplikacji uznaję za anti-pattern. Howgh, rzekłem. Jeżeli klasa potrzebuje innej klasy do działania, to ta zależność powinna być jawnie wyeksponowana w kodzie. Najlepiej przez param...
Sztuka programowania 3845 dni, 23 godziny, 15 minut temu 212 źrodło rozwiń
Co prawda nie jest to ani blog ani wpis .Netowy, nie jest nawet techniczny. Wydaje mi się jednak, że każdy kto pracuje jako B2B powinien takie rzeczy wiedzieć i warto, żeby takie coś znalazło się na dotnetomaniaku.
Ostatnio omawialiśmy co to jest NPM oraz co to jest Bower. Pora na coś z czego będzie nam naprawdę ciężko (do póki nie poznamy alternatywy ;)) żyć w świecie JavaScript.Grunt The JavaScript Task Runner Grunt jest to system automatyzacji pracy – nie zależnie co robimy, czy to ma być statyczna strona w HTML i JavaScript, czy bardziej zaawansowana aplikacja wykorzystująca coffee script, czy też po prostu coś co chcielibyśmy z automatyzować. W odniesieniu do naszego świata .NET Grunt można porównać z MSBUIL...
Niedawno na łamach natematu pojawił się artykuł o jakże wdzięcznym tytule: “IT-arystokracja. Najbardziej zepsuta pensjami i przywilejami grupa zawodowa“. Widziałem linki do niego w bardzo wielu miejscach, więc pewnie każdy z Was go już czytał. A teraz się do niego ustosunkuję (po raz wtóry, gdyż raz już to, trochę po łebkach, uczyniłem na grupie polskich programistów .NET na FB). Odnośnie artykułu Sam art...