Zamień bóla na enuma. Dlaczego zamienić? Moim zdaniem czytelniej i jasno sformułowana myśl i łatwiej zrozumieć. Nie chodzi o prosty przypadek, gdzie zamiana polegałaby na zamianie true/false na MyEnum.True/MyEnum.False – nie nie, to byłoby szaleństwem. Ale może od razu do kodu, bo czas nagli dzisiaj. Pierwszy przypadek, wszystko działa jak należy...
Strona głównaUżytkownik
rroszczyk | użytkownik
Sztuka programowania 3195 dni, 14 godzin, 40 minut temu 336 źrodło rozwiń
Często logika zawarta w procedurach jest dość skomplikowana. W zależności od projektu, może okazać się, że potrzebujemy testów jednostkowych. Dzięki tSQLt możemy testować tSQL w analogiczny sposób do nUnit+moq, czyli:Dane po wykonaniu testu są usuwane. Każdy test jest wykonywany w transakcji. Nie musimy się zatem martwić, że testując coś będziemy zaśmiecać bazę danych.Każdy element może być odizolowany, czyli możemy stworzyć mock dla tabeli, procedury lu...
Bazy danych i XML 3198 dni, 10 godzin, 47 minut temu 211 źrodło rozwiń
W internecie znaleźć można mnóstwo sposobów na zwalidowanie modelu. Najlepszym sposobem jest zastosowanie atrybutów z przestrzeni System.ComponentModel.DataAnnotations, ponieważ walidacja odbywa się automagicznie. Niestety kiedy te same atrybuty wykorzystamy do parametrów akcji, to już tak automagicznie nie jest. W tym poście zaprezentuję problem oraz pokażę jak można sobie z nim poradzić.
Sztuka programowania 3200 dni, 11 godzin, 58 minut temu 270 źrodło rozwiń
Do napisania tego posta wprost umotywował mnie wpis Oskara Dudycza na podobny temat - nauki uczenia się. Jest to temat bardzo ciekawy i od dawna na mojej liście "to do". Zatem napisałem, w końcu! Pytanie, na które chciałbym odpowiedzieć jest proste - jak się właściwie uczyć technologii w naszym dev-świecie?
W .NET istnieją dwie przydatne klasy do logowania wszelkich informacji: Trace oraz Debug. Często różnica nie jest jasna oraz klasy są ze sobą mylone. Co się dokładnie dzieje, gdy napiszemy następujący fragment kodu? Trace.WriteLine("Trace test"); Debug.WriteLine("Debug test"); Efekt wydaje się podobny, w okienku debug zobaczymy wykonane logi: Najlepiej zajrzeć do źródeł powyższych klas. Debug.WriteLine wygląda następująco: [System.Diagnostics.Conditiona...
Następny wpis, tym razem już na nowym systemie i nowej własnej domenie. Zobaczymy czy będzie tak jak z samochodami, gdzie wizyta na myjni daje dwa konie mechaniczne więcej. Ostatnio pisałem więcej filozoficznie, dzisiaj powrót do twardej rzeczywistości. Obejrzałem nie dawno na pluralsightfajny i krótki kurs o OWIN i Katana i częścią wiedzy chce się z wami podzielić. Kto z was zaczynał projekt ASP MVC z włączonymi indywidualnymi kontami użytkowników? Ja na pewno! Także ja, gdy pat...
Wiecie jaka jest definicja wzorca projektowego, prawda? Za wikipedią: “a general repeatable solution to a commonly occurring problem in software design“. Czym zatem będzie antywzorzec? Czymś takim: “a general repeatable anti-solution to a commonly occurring problem in software design“. Czyli: recepta na napytanie sobie biedy. Czerwony pijany znak z napisem: “Nie idź tą drogą”.
Sztuka programowania 3201 dni, 11 godzin, 3 minuty temu 169 źrodło rozwiń
Jak wspomniałem w jednym z wcześniejszych już wpisów, nie ma znaczenia, gdzie aktor jest zlokalizowany. Dzięki AKKA.NET jest to szczegół konfiguracyjny. Jeśli pewnego dnia, stwierdzimy, że wykonywanie obliczeń na jednym komputerze nie wystarcza, wtedy po prostu zmieniamy konfigurację, aby hostować danego aktora gdzieś indziej. Framework zadba o komunikację (TCP) między węzłami znajdującymi się w innych sieciach. W ten sposób, bardzo łatwo jest sk...
Programowanie rozproszone 3204 dni, 5 godzin, 4 minuty temu 81 źrodło rozwiń
Temat dotyczący pet projects na polskich blogach technicznych był już poruszany, ale z pewnością nie został wyczerpany mogę dodać coś od siebie. Prawie rok temu Maciej Aniserowicz pisał o tym dlaczego warto robić coś po pracy i zachęcał do działania. Komentarze pod wpisem pokazują, że ...
Gdy tworzymy kod jakiejś własnej paczki nugetowej, bardzo często wykorzystujemy kompilację w wariancie Any CPU. Dzięki temu docelowa DLLka zadziała zarówno na x86 jak i x64, ale również i na ARM w sytuacji gdy mamy do czynienia z systemami mobilnymi. Niestety nie zawsze jest tak kolorowo i prosto, i czasem Any CPU po prostu nie zadziała - np. w sytuacji gdy mamy składowe DLLki przygotowane pod określone platformy/architektury...
DbUp jest prostą biblioteką, przeznaczoną do aktualizacji baz danych. Jeśli korzystamy z ORM, zwykle wtedy dany framework posiada już analogiczną funkcjonalność. Na przykład, EntityFramework wspiera migrację, która umożliwia automatyczną aktualizacje tabel i procedur. Z drugiej strony, nie zawsze jest potrzeba korzystania z tak ciężkich rozwiązań. Bardzo popularną biblioteką do odczytu danych z baz jest Dapper. Niestety nie posiada on mechanizmu podobne...
Sztuka programowania 3206 dni, 31 minut temu 170 źrodło rozwiń
Zasady SOLID Zasady SOLID: Odwracanie zależności Kamil Jóźwiak No Comments Wszystko powinno być tak proste, jak to tylko możliwe, ale nie prostsze. Albert Einstein Co ma wspólnego kopanie rowów z zasadami SOLID? A to już zależy od podejścia. Jako programista często przenoszę zagadnienia ze świata realnego do kodu. Tym razem będzie odwrotnie, wszystko w imię zrozumienia ostatnią z zasad SOLID – zasady odwracania zależności. Poznanie wzorców projektowych wraz z całym...
Sztuka programowania 3206 dni, 31 minut temu 571 źrodło rozwiń
Ależ jesteśmy rozpieszczeni! Królowie świata i okolic! Każdy chce nam, programistom, dogodzić, nie zważając czy ma to sens czy nie. Zupełnie. Ale czy firmy, padając przed programistami na kolana, faktycznie robią dobrze i sobie i nam? I co my na to? O negatywnym wpływie wszelkich przejawów jesteśmy-wielką-rodziną-przytulmy-się-i-żyjmy-razem-bullshit na programistów pisałem już niedawno w bardzo chodliwym poście “Nie sprzedawaj się za piłkarzyki“. Ale jakie skutki na zachowanie programistów względem firm...
Luźny wpis, w którym poruszę temat raportowania stanu projektu. Zachęcam do przeczytania wszystkich, którzy takie raporty piszą, a przede wszystkim tych, którzy je czytają :). Odpowiem dlaczego pytanie „ile procent projektu mamy ukończone?” może zakłamywać rzeczywistość i dawać złudne poczucie bezpieczeństwa. Pokażę również bardziej skuteczną metodę raportowania stanu projektu. Gdy stawiałem pi...
Standardowo w aplikacjach używa się takich frameworków jak log4net czy nlog w celu logowania kluczowych informacji jak i wyjątków. Bardzo szybko staje się jasne (szczególnie w przypadku micro-serwisów), że analizowanie plików tekstowych z logami jest czasochłonne. Z tego względu dobrze mieć centralne repozytorium logów i łatwy do niego dostęp. Większość rozwiązań umożliwia dzisiaj indeksowanie oraz łatwe przeszukiwanie danych. Jednym z bardziej znanych produktów je...
Ten wpis jest drugą częścią poprzedniego artykułu – dlaczego twój projekt się opóźnia? – bufory „bezpieczeństwa” w zadaniach. Poprzednio poruszałem kwestię tego jak „kary” za nieukończenie zadań w terminie powodują zwiększanie buforów w estymatach oraz jaki negatywny ma to wpływ na realizację projektu w terminie....
Jest wiele czynników, które mówią o jakości kodu, jednym z nich jest jego czytelność. W jaki sposób można, bez dużego nakładu pracy, poprawić czytelność kodu? Czy wielkość i poziom skomplikowania projektu mają wpływ na czytelność kodu? Kto jest odpowiedzialny z powstawanie nieczytelnego kodu i czy czytelność kodu mówi coś o profesjonalizmie programisty? W jaki sposób można zapobiegać a w jaki sposób leczyć zainfekowany kod? „Lepszy jest kod dobrze napisa...
Sztuka programowania 3215 dni, 10 godzin, 1 minutę temu 527 źrodło rozwiń
Metoda Split dzieli łańcuch znaków na części w zależności od separatora, który został przekazany w parametrach. Ostatnio jednak natknąłem się na plik CSV, który oprócz tego, że jest rozdzielony przecinkami to na dodatek ma jeszcze ogranicznik pól. Parsowanie takiego pliku metodą String.Split nie będzie prawidłowe. Poniżej implementacja metody String.Split z możliwością zdefiniowania ogranicznika pól(checkSeparator)...
Sztuka programowania 3217 dni, 13 godzin, 11 minut temu 177 źrodło rozwiń
Dzisiaj kolejny element HTTP 2.0, tym razem wymagający zmiany kodu po stronie aplikacji. Tak jak już z wszystkimi opisanymi wcześniej zmianami, ma to na celu zmniejszenie opóźnienia (latency) wynikającego z liczby zapytań. Doskonale wiemy, że każda strona ma referencje do innych zasobów takich jak CSS czy pliki graficzne. Wcześniej zajęliśmy się już HTTP Multiplexing, który znacząco niweluje problem. W jednym z poprzednich wpisów pokazałem również jak w H...
JMeter jest darmową aplikacją bardzo przydatną podczas wykonywania “load testing”. Interfejs użytkownika co prawda jest bardzo mało intuicyjny, ale po pewnym czasie można przyzwyczaić się. Aplikacja, po uruchomieniu prezentuje się następująco (...) Oczywiście na oficjalnej stronie można znaleźć pełną dokumentację, więc moim celem nie jest opisywanie każdego elementu. Jako próbkę, po prostu spróbujmy stworzyć test, który będzie łączył się z jakąś stroną (np. Google) i...