Klasa (immutable) Tuple istniała aż od .NET Framework 4.0. W C# 7.0 mamy jednak wsparcie dla tuple od strony języka. Jednym z problemów klasy Tuple było, że każda właściwość nazywała się kolejno Item1, Item2 itp. W tym wpisie dowiemy się jak to rozwiązano w C# 7.0
Sztuka programowania 3024 dni, 15 godzin, 28 minut temu 398 źrodło rozwiń
Chcesz logować SQL generowany przez NHibernate do pliku? Przejdę od razu do konkretów. Potrzeba klasy NLogFactory, która będzie tworzyła instancje Loggera.
Bazy danych i XML 3027 dni, 14 godzin, 36 minut temu 106 źrodło rozwiń
Czym się różni Lazy Loading od Eager Loading? Co udostępnia nam EntityFramework? W jakim momencie wykorzystać dany sposób ładowania danych? Jak ładować dane? Zahaczymy też o JSON, SQL performance i inne. Zapraszam do lektury.
W ostatnim czasie dzięki uprzejmości Patricka Smacchia, miałam okazję zapoznać się z narzędziem do analizy kodu jakim jest NDepend. Ponieważ jednak ma on tak dużo możliwości, iż wyrósł by z tego całkiem spory artykuł, postanowiłam podzielić go na mniejsze i niniejszym zapraszam na pierwszy odcinek cyklu poświeconego temu narzędziu.Zacznijmy zatem od tego czym jest NDepend, jak zacząć pracę z nim i Co nam daje? Narzędzie służy do zaawansowanej analizy kodu, wspomaga przyglądanie się strukturze projektu,...
Zasada działania Ubera z punktu widzenia użytkownika smartfona jest stosunkowo nieskomplikowana. Uruchamiamy aplikację, wciskamy jeden przycisk i czekamy na kierowcę. Proste? Proste. Ale pójdźmy o krok dalej i zastanówmy się nad nieco bardziej wymagającym użytkownikiem, który chciałby dostać się Uberem w pewne miejsce o zaplanowanej wcześniej godzinie. Po najniższym koszcie. A i żeby sam się zamówił :) Poznajmy Uber API.
Zaczynając swoją przygodę z ASP.NET MVC (oraz w ogóle z programowaniem) miałem sporo problemów z utrzymaniem porządku w moich akcjach na kontrolerach. Bardzo często pojawiało się tam mnóstwo warunków i niepotrzebnej logiki. Ten problem trzeba było sensownie rozwiązać, więc z kolegami wypracowaliśmy sobie pewną konwencję, której twardo się trzymaliśmy...
Which one of us doesn’t like to give commands? It’s the natural way to ask (in a polite way) for a specific task that needs to be completed. Therefore, it shouldn’t be surprising that the command pattern can be also easily implemented within our software, which might provide some serious benefits in terms of loose coupling the existing code.
Sztuka programowania 3034 dni, 13 godzin, 33 minuty temu 239 źrodło rozwiń
NHibernate wymaga od programisty, aby wszystkie Properties (właściwości) wewnątrz Enitity (encji / klasy POCO) były oznaczone słowem kluczowym virtual. Jak zrobić, aby automatycznie sprawdzać czy wszystkie properties spełniają wymagania? Wykorzystać Unit Testy!
Bazy danych i XML 3034 dni, 13 godzin, 33 minuty temu 74 źrodło rozwiń
NDepend jako narzędzie pomocne w pisaniu lepszego kodu i trackowaniu zmian w zależnościach.
Within the last few weeks, a lot of things have happened in terms of the Warden project. It has gained already quite some popularity and became a whole stack of different applications and technologies with a single, ultimate goal which is providing the unified interface and set of tools to help you monitor and automatically resolve the issues with the maintenance of your system, infrastructure and resources.
TestyPiotr Zieliński2 Comments O testach UI, szczególnie w SpecFlow pisałem już kilka razy. Zawsze korzystałem z wzorca PageObject, chociaż nie wiedziałem, że ma on swoją nazwę. Czasami mam wrażenie, że na proste rzeczy wymyśla się “wzorce”. Muszę przyznać jednak, że uproszcza to często komunikację między programistami. Wzorce w końcu stanowią pewnego rodzaju słownictwo dla programistów. Zamiast opisywać coś w kilku zdaniach, można powiedzieć po prostu nazwę wzorca. PageObject pattern polega na tym, ż...
Sztuka programowania 3046 dni, 15 godzin, 8 minut temu 192 źrodło rozwiń
Zarówno o BDD, jak i TDD wiele razy już pisałem. Najważniejszą rzeczą w TDD jest sekwencja red-green-refactor. Zwykle BDD\TDD przybiera następującą postać: Zaczynamy od etapu BDD. Definiujemy wymagania za pomocą języka rozumianego zarówno przez programistów jak i jak BA\PO. Za pomocą Specflow możemy zdefiniować np. następujący test: Given I have entered 50 into the calculator And I have entered 70 into the calculator When I press add Then 120 sho...
Sztuka programowania 3046 dni, 15 godzin, 8 minut temu 134 źrodło rozwiń
If you take a look at the title of this post and instantly think it’s a trap or bait – let me prove you wrong. This is not going to be one of these catchy titles, so “what kind of bs am I going to read here” has little use in this place. Actually, this is 100% true that contributing to the open source community might greatly affect your life – and it goes far beyond daily activities related to the coding. Therefore, let me tell you a short story about a guy, typical .NET developer, who not so long ago al...
Dziś chciałabym się podzielić znaleziskiem, którego dokonałam ostatnio – mianowicie bardzo fajną biblioteką do przetwarzania plików CSV. Generalnie nie jest to przyjemna robota, ale z tym narzędziem zrobiło się naprawdę fajnie. Nazywa się CsvHelper a więcej informacji na jej temat można znaleźć tutaj. Żeby nie przepisywać oryginalnej dokumentacji, która jest dostępna na stronie biblioteki chciałabym raczej pokazać jak to działa w praktyce dlatego też od razu zapraszam do moich przykładów dostępnych na...
Imagine that you have a service, which receives requests to execute specific methods, possibly from a number of different underlying libraries that you don’t want to expose directly. Possible examples are web services. The request comes in as a number of string values (method name, parameters etc.) and you need to respond with results. So you have inherited a project with API that starts with a method: object Invoke(string methodName, object[] parameters); You now have to call variety o...
Na chwilę obecną SportsTacticsBoard używa plików .resx aby przechowywać zasoby w celu internacjonalizacji. Celem jest zapewnienie właściwego tłumaczenia aplikacji użytkownikom. Jednak moim zdaniem używanie tłumaczeń w plikach .resx jest trochę niepraktyczne. Po pierwsze, głównym powodem na posiadanie oddzielnych plików na tłumaczenie jest to, aby tłumacz nie musiał wiedzieć nic o programowaniu...
Do you ever feel like (well, you should) these huge switch + case statements or too many ifs seem to be wrong? What if I told you, there’s one simple trick that will change your life, by getting rid of them? Ok, seriously – I have nothing against switch or if as the way of controlling the flow (I use them quite often) however, there are certain occasions at which the things could be done better. And let me show you another way to achieve the same goal which is much cleaner in terms of code readability a...
Sztuka programowania 3054 dni, 13 godzin, 1 minutę temu 361 źrodło rozwiń
Rozpoznawanie twarzy na zdjęciach, emocji jakie wyrażają, opisywanie zawartości fotografii, przetwarzanie języka naturalnego – te i wiele więcej tematów powiązanych ze sztuczną inteligencją znane są nam od dawna. Jednak od niedawna są one tak bardzo na wyciągnięcie ręki. Rzućmy okiem na Microsoft Cognitive Services.
Xamarin nie jest gwarantem trzykrotnie szybszego developmentu. Nie zachodzi tutaj żadna równość typu, że niezależnie ile platform docelowych będziemy chcieli obsłużyć, to w praktyce i tak piszemy jedną aplikację. Xamarin tak nie działa. Nawet w sytuacji gdy korzystamy z Formsów to i tak nie jesteśmy w stanie skrócić developmentu na inne platformy do zera. Na ten temat szerzej pisałem we wpisie w ubiegłym tygodniu.
Mobile development 3054 dni, 13 godzin, 1 minutę temu 203 źrodło rozwiń
Dzisiaj napiszemy nasz pierwszy skrypt w Unity 3d. Najpierw dodajmy jakiś element na scene, który potem będziemy mogli obracać za pomocą skryptu. W tym celu z menu głównego wybieramy GameObject->3d Object-> Cube: Następnie w celu dodania skryptu klikamy na “Assets” w panelu “Project” i wybieramy Create->C# Script: Zanim przejdziemy do edycji skryptu, warto upewnić się, że Visual Studio jest skonfigurowany jako narzędzie do pisania kodu. W tym celu wchod...