Niedawno byłem zmuszony do powrotu do kodu, który kiedyś współtworzyłem. Musiałem dołożyć pewną w gruncie rzeczy drobną funkcjonalność. Nie sprawiło to mi większych problemów, ale samo obcowanie z tym kodem skłoniło mnie do refleksji. Dopiero porównując tamten kod (z którego byłem przecież dumny jak paw) z kodem dzisiejszym widzę różnicę (ciekawe co powiem za kilka lat o obecnym kodzie). Różnicę w sobie samym. Widzę jak przez ostatnie dwa lata się zmieniłem (ale to temat na inny post). Moją szczegó...
Sztuka programowania 2239 dni, 15 godzin, 28 minut temu 135 źrodło rozwiń
Częstym zadaniem, na które natykam się w czasie pracy programisty .NET to integracja z Office-em. Typowym zastosowanie takiej integracji jest export lub import danych do plików Excela dla Pań z księgowości : ) Jednym z problemów podczas integracji jest szybkość importowania i eksportowania danych do z plików Excela. Problem szybkości tworzenia plików Excel-a widać już przy wielkościach rzędu 1000 wierszy. Jedyną pomocą jest zmienić sposób integracji.
Sztuka programowania 2242 dni, 22 godziny, 21 minut temu 507 źrodło rozwiń
Jeżeli chcecie się pobawić ASP.NET vNext to trzeba wiedzieć o jednym. Jeżeli w VS mamy zdefiniowane dodatkowe źródła nuget to domyślnie kpm (K Package Manager) będzie także przeczesywał je w poszukiwaniu paczek. Czyli za każdym razem jak odpalicie komendę kpm restore czy kpm install, nie tylko zostanie przeczesany standardowy nuget, ale także wszystkie dodatkowe źródła jakie macie ustawione w VS. Ogólnie nie j...
Sztuka programowania 2244 dni, 23 godziny, 30 minut temu 162 źrodło rozwiń
W trzecim odcinku rozmawiam z Adamem Kosińskim – programistą, prelegentem, aktualnie kodzącym C# w Londynie. Tematem przewodnim są testy jednostkowe – nasza wspólna pasja. Gadamy zarówno o najlepszych jak i najgorszych praktykach. Przestrzegamy też na to uważać podczas przygody z testowaniem. Zastanawiamy się również dlaczego czasami testy nie spełniają oczekiwań programistów i… i wiele więcej :). Konkurs: dzisiaj rozdaję licencję na NCrunch. ...
Sztuka programowania 2247 dni, 9 godzin, 56 minut temu 152 źrodło rozwiń
Nieuchronnie zbliża się moment, w którym aplikacja, za którą jestem współodpowiedzialny zostanie opublikowana i zacznie działać u klienta. Lubię ten moment bo jest to ostateczna weryfikacja naszej pracy. Zdaje sobie jednak sprawę, że wiąże się to z wprowadzeniem pewnych dodatkowych funkcjonalności w aplikacji, które w fazie rozwojowej są (całkowicie?) zbędne. I właśnie jedyną z takich funkcjonalności chciałem omówić a konkretnie migrację bazy danych. Pamiętam jak dziś moment, w którym oddaliśmy (na...
Sztuka programowania 2252 dni, 10 godzin, 46 minut temu 200 źrodło rozwiń
Continuous Integration, Code Reviews, Test/Behaviour Driven Development, Automated User Acceptance Tests, FxCop, StyleCop, NDepend, Resharper i wiele wiele innych technik/narzędzi wykorzystywanych tylko po to, aby tworzyć lepszy kod. A często zapominamy, lub nie wiemy, o podstawowych sposobach na zapewnienie lepszej jakości kodu. Dzisiaj pokażę jak osiągnąć lepszy kod w 4 kliknięciach.
Sztuka programowania 2263 dni, 2 godziny, 34 minuty temu 473 źrodło rozwiń
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 2263 dni, 20 godzin, 7 minut temu 246 ź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 2269 dni, 1 godzinę, 47 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 2269 dni, 1 godzinę, 47 minut temu 217 źrodło rozwiń
How to make your 'debugging life' easier with DebuggerDisplay attribute
Sztuka programowania 2270 dni, 10 godzin, 26 minut temu 159 ź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 2272 dni, 5 godzin, 42 minuty temu 397 ź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 2272 dni, 5 godzin, 42 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 2279 dni, 4 godziny, 51 minut temu 360 źrodło rozwiń
Some guidelines about creation and naming projects in Visual Studio
Sztuka programowania 2280 dni, 8 godzin, 58 minut temu 173 ź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 2288 dni, 3 godziny, 28 minut temu 238 ź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 2294 dni, 13 godzin, 1 minutę temu 182 ź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 2308 dni, 4 godziny, 20 minut temu 450 ź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 2308 dni, 4 godziny, 20 minut 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 2310 dni, 10 godzin, 57 minut temu 245 ź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 2311 dni, 6 godzin, 10 minut temu 146 źrodło rozwiń