O TDD napisano wiele, sam napisałem całkiem sporo i mówiłem całkiem sporo podczas kilku prelekcji. Używam TDD od ponad 5 lat już. Powinienem być super mega ninja pro TDD master. Mimo tego jakiś czas temu, pisząc bardzo prosty kod, na prawdę super prosty, naszła mnie taka refleksja: Jest zielone, jest ok. [Fact] public void Example_test() ...
Sztuka programowania 3700 dni, 16 godzin, 48 minut temu 248 źrodło rozwiń
Omawiana w poprzednim poście zależność w najprostszej postaci charakteryzuje się pewnym nieprzyjemnym problemem (nie mówiąc o samym fakcie konieczności korzystania z takiej abstrakcji), który postaram się przedstawić na przykładzie.
Sztuka programowania 3705 dni, 22 godziny, 27 minut temu 343 źrodło rozwiń
I would like to present a solution that will make it easier to work with any application logs and convenient way to help monitor the work of program. This solution is based on ILogCollector interface.
Sztuka programowania 3705 dni, 22 godziny, 27 minut temu 217 źrodło rozwiń
How to make your 'debugging life' easier with DebuggerDisplay attribute
Sztuka programowania 3707 dni, 7 godzin, 6 minut temu 161 źrodło rozwiń
Pamiętam jak dawnymi czasami każde exception przyprawiało mnie o gęsią skórkę. Szukałem sposobu jak tu je wyeliminować (choć już wtedy wiedziałem, że niektórych źródeł nie wyeliminuje nigdy). Dziś z perspektywy czasu wiem jaki byłem głupi. Czasami exception to rzecz, o której wprost marzymy. A jak to z marzeniami bywa rzadko się one spełniają. Kilka “ciekawszych” problemów z którymi się zetknąłem:1. Backup bazy danych działa wybiórczo Wdrażając oprogramowanie u klienta liczyłem tylko na jedno ni...
Sztuka programowania 3709 dni, 2 godziny, 22 minuty temu 398 źrodło rozwiń
Założenie: Chcemy mieć możliwie wysoką zgodność z SOLID + Depedency Injection Problem: Piszemy implementację, która zawiera jakieś zasoby i musi je zwalniać (czyli implementacja IDisposable) Omawiane zasoby są bardzo obciążające i nie chcemy je jak najszybciej zwalniać Nie chcemy mieć interfejsu dziedziczącego po IDisposable, bo najczęściej jest to Leaky Abstraction
Sztuka programowania 3709 dni, 2 godziny, 22 minuty temu 293 źrodło rozwiń
Z poprzedniego posta “DI: profesjonalne kontenery” wiemy, że wykorzystujemy kontener. Wiemy też, że użycie własnej implementacji to głupota. Pomyśleliśmy również jakimi kryteriami się kierować wybierając kontener do naszego projektu. Tak jak napisałem: ja używam Autofac. I właśnie ta biblioteka wyląduje w przedstawianym demo. Pierwsze co robię to: Install-Package Autofac Mając na pokładzie Autofaca mogę z nie...
Sztuka programowania 3716 dni, 1 godzinę, 31 minut temu 364 źrodło rozwiń
Some guidelines about creation and naming projects in Visual Studio
Sztuka programowania 3717 dni, 5 godzin, 38 minut temu 174 źrodło rozwiń
Temat testów parametryzowanych pojawił się przy okazji pisania naszego „drugiego” testu jednostkowego. Wtedy to skorzystaliśmy z atrybutu [TestCase] pozwalającym na zdefiniowanie zestawów wartości, które są przekazywane do metody testowej. Stosując atrybuty do testów parametryzowanych (m. in. TestCase, Values, Range, Random) ograniczamy liczbę naszych metod testowych i redukujemy ilość redundantnego kodu.
Sztuka programowania 3725 dni, 9 minut temu 241 źrodło rozwiń
Na ostatnim (tj. 90) spotkaniu KGD.NET miały miejsce dwie prezentacje. Prezentacja Procenta o DI to było to na co czekałem (tzn. potwierdzenie, że idę słuszną drogą oraz rozwianie pewnych wątpliwości). Druga prezentacja (a może lepiej powiedzieć pierwsza) była poświęcona F#. Nie spodziewałem się nic specjalnego po niej. Co tu dużo mówić pewien czas temu stworzyłem nawet coś w tym języku, ale mówiąc szczerze jakoś specjalnie mi to nie podchodziło. Jednak Michał Łusiak pokazał, że F# to język, którem...
Sztuka programowania 3731 dni, 9 godzin, 41 minut temu 183 źrodło rozwiń
Poprzedni wpis dotyczył cyklu życia strony w ASP.NET. Był związany z pytaniem, które trafiło mi się na jednej z rozmów kwalifikacyjnych. Po ukończeniu tamtego posta, zaczęły mi się przypominać również inne pytania. Stwierdziłem, że przez następne kilka tygodni będę tutaj na blogu zadawał jedno z takich pytań i starał się je rozwiązać, rozwiewając wszelkie wątpliwości. Pytanie brzmiało: jaka jest różnica pomiędzy słowem new, a słowem override? Zaczynając od przykładu: class Program { stat...
Sztuka programowania 3745 dni, 1 godzinę temu 452 źrodło rozwiń
Kompresja gZIP czyli najprostszy (chyba) sposób na odchudzenie strony. Wiadomo, że należy stosować odpowiednie podejście do tworzenia layoutów, jednak kiedy zdarzy się już tak rozbudowany widok, a nie można z niego po prostu wyrzucić danych czy podielić ich na kilka innych widoków to warto się tym rozwiązaniem zainteresować. W sumie warto się nim zainteresować tak czy tak.
Sztuka programowania 3745 dni, 1 godzinę temu 169 źrodło rozwiń
Jakiś czas temu opisałem jak utowrzyć instalator dla uslugi Windows w środowisku Visual Studio. Jest to sposób dość skomplikowany i czasochłonny. Z drugiej strony daje duże możliwości konfiguracyjne i rozszerzające. Nie o tym jednak. W niniejszym artykule opisuję jak zainstalować usługę Windows wyłącznie za pomoca kodu.
Sztuka programowania 3747 dni, 7 godzin, 37 minut temu 247 źrodło rozwiń
Google Charts to świetne rozwiązanie, jeżeli potrzebujecie wykresów w swojej aplikacji. Właściwie spodobało mi się od razu po pierwszym użyciu i póki co nie szukam alternatywy (chociaż jeżeli korzystacie z jakiś przyjemnych bibliotek to chętnie poznam :-)). Integracja we własnym systemie jest w sumie prosta, chociaż trochę się nagimnastykowaliśmy, żeby odpowiednio do naszych potrzeb skonfigurować bardziej rozbudowane wykresy. Po przez bardziej rozbudowane mam na myśli np.. liniowy i kolumnowy na jednym ...
Sztuka programowania 3748 dni, 2 godziny, 50 minut temu 147 źrodło rozwiń
Ostatnio znalazłem fajny przykład pokazujący jak można nieoczekiwanie pogorszyć wydajność aplikacji. Załóżmy, że mamy metodę, która jako parametr wejściowy przyjmuje funkcję...
Sztuka programowania 3751 dni, 7 godzin, 31 minut temu 391 źrodło rozwiń
Main menuMain pageAboutContact Share article via: You've read lot of articles about advanced C# constructions, new features, frameworks, etc. and at the end you are opening your solution and you start looking... and thinking... what is wrong the hell? Why my project is so f* boring? I'd like to change something. I want to have the cool application, which I want to be proud of and compare this solution with the ones I've read about. If this situations happened before this article is for you...
Sztuka programowania 3751 dni, 7 godzin, 31 minut temu 156 źrodło rozwiń
Chyba każdy programista piszący w C# usłyszał kiedyś (najczęściej na rozmowie kwalifikacyjnej) pytanie o typy danych występujących w tym języku. Naturalną odpowiedzią są typy wartościowe i typy referencyjne (taka nierozłączna para bliźniąt), mówimy jakie są różnice pomiędzy nimi, mówimy mądre zdania o stosie i o stercie. Czasem dostajemy “podchwytliwe” pytanie w stylu: String to typ referencyjny czy wartościowy? String to jest przechowywany na stosie czy na stercie? Tablica intów to typ refer...
Sztuka programowania 3752 dni, 21 godzin, 21 minut temu 286 źrodło rozwiń
Siedzę sobie i integruję można by rzec. Integruję swoją aplikację z API serwisu furgonetka.pl. Ogólnie rozwiązanie zajebiste, żądania ładnie idą po http, odpowiedzi dostaję w pięknych jsonach. Wszystko idealnie. Tylko dlaczego dokumentacja do tego API jest tak ogólnikowa? Tak bardzo zrobiona po łebkach? Dlaczego za każdym razem trzeba się wszystkiego domyślać?
Sztuka programowania 3754 dni, 6 godzin, 33 minuty temu 250 źrodło rozwiń
W dzisiejszym wpisie skupię się na pokazaniu, w jaki sposób można stworzyć prostą metodę pomocniczą dla naszej aplikacji napisanej przy wykorzystaniu ASP.NET MVC. W przykładzie, metoda będzie wyświetlać wszystkie elementy przekazane za pomocą listy do widoku, dodając do nich tekst “Welcome in” (przykład nieco abstrakcyjny, jednak bardzo dobrze przekazuje wiedzę potrzebną na tworzenie helperów w przyszłości). Aby stworzyć metodę pomocniczą, możemy wybrać jedno z dwóch podstawowych podejść: - wewnętrzna...
Sztuka programowania 3754 dni, 6 godzin, 33 minuty temu 241 źrodło rozwiń
Pisaliśmy kiedyś aplikację dla klienta z dość jaśnie określoną specyfikacją sprzętową. Program ma się bez problemów uruchamiać na 64-bitowym Windowsie 8 ponieważ wszystkie komputery działają pod obsługą tego systemu. Czyli hulaj dusza jedziemy z najnowszą wersją .neta (wszak jest to soft dedykowany dla tego konkretnego klienta). Po czasie określonym w umowie dostarczamy soft klientowi na testy, instalacja przebiega bezproblemowo… do czasu. Jest godzina 10 spokojnie dopijam czwarty kubek kawy (wsz...
Sztuka programowania 3759 dni, 19 godzin, 4 minuty temu 259 źrodło rozwiń