Do dzisiejszego wpisu zainspirowała mnie aplikacja, którą współtworzymy z Tymkiem Kęstowiczem. Potrzebowaliśmy połączyć naszą aplikację napisaną w MVC z bazą danych (tu wybór padł na MySQL). Zdecydowanie chcieliśmy uniknąć strzelania z armaty ...
Sztuka programowania 3635 dni, 15 godzin, 34 minuty temu 280 źrodło rozwiń
Programowanie nigdy nie było łatwe i szybkie, ale największe wyzwania stoją przed tymi, którzy chcą stworzyć prosty, czytelny, elastyczny i wydajny kod. Czy da się zawsze ładnie połączyć wszystkie elementy tej układanki? Niestety nie, ale to nie oznacza, że powinniśmy łatwo się poddawać.
Sztuka programowania 3637 dni, 2 godziny, 47 minut temu 512 źrodło rozwiń
O korzyściach z modyfikatora sealed, od strony projektowej pisałem już tutaj. Dzisiaj postanowiłem jednak napisać prosty program, który pokaże nam czy faktycznie są jakieś różnice wydajnościowe. Oczywiście jest to raczej ciekawostka dla ludzi zajmujących się c# internals. Jeśli zależy nam na optymalizacji, zawsze zaczynajmy od ulepszenia samego algorytmu (zmniejszenia jego złożoności), a w ostateczności sięgajmy po mikro-optymalizacje. Warto stosować wspominane wskazówki, ale ze względu na dobre praktyk...
Sztuka programowania 3638 dni, 22 godziny, 21 minut temu 243 źrodło rozwiń
W moich zamierzeniach ten temat miał być omówiony w jednej części, ale duża ilość komentarzy, pytań i uwag spowodowała, że powstała część druga. Istnienie drugiej (nieplanowanej) części posta mogłoby sugerować, że chcę się wycofać z części poglądów, które przedstawiłem w części pierwszej. Częściowo tak, ale nie w tę stronę co myślicie. Rzeczywiście zmieniłem zdanie, od dzisiaj będę pisał ToString() jeszcze częściej, tzn. dla każdej swojej klasy i struktury, nawet jeżeli tworzyłbym bibliotekę dla klienta...
Sztuka programowania 3643 dni, 6 godzin, 43 minuty temu 289 źrodło rozwiń
Write better and faster in javascript with built-in array methods (every, some, forEach, map, filter, reduce), different known libraries and lambdas. Also how to extend built-in functions and write custom helpers.
Sztuka programowania 3651 dni, 6 godzin, 47 minut temu 208 źrodło rozwiń
Pomimo stosowania TDD każdemu z nas od czasu do czasu zdarza się debugować kod. Czy to lubimy, czy nie, czasem po prostu nie ma innego wyjścia. Ułatwiajmy sobie (i osobom, które odziedziczą kiedyś ten kod) debugowanie przez dodawanie ToString() do wszystkich swoich klas.
Sztuka programowania 3651 dni, 6 godzin, 47 minut temu 314 źrodło rozwiń
Gdy przychodzi czas na stworzenie aplikacji to najpierw staram się przemyśleć co ona ma robić i co z czym się łączy. Gdy obraz jest już w miarę wyraźny to zanim zacznę kodować jakieś prototypy i abstrakcje, przeglądam poniższą listę wzorców projektowych. Są ku temu dwa powody. Po pierwsze sprawdzam czy do mojego rozwiązania można dopasować jakieś wzorzec. Nie znam na pamięć wszystkich wzorców a czasem te mniej popularne (o których się normalnie nie pamięta) się przydają. Po drugie robię to aby trochę s...
Sztuka programowania 3654 dni, 4 godziny, 52 minuty temu 3425 źrodło rozwiń
Dołączę do grona piszących o nowościach w C# 6. Jedną z nich jest słowo kluczowe „nameof”. Po zainstalowania Visual Studio 2015 (do czego gorąco zachęcam) będzie można je sprawdzić w praktyce. Nameof zwraca w postaci stringa nazwę argumentu, który przekazujemy do metody nameof. Na początek praktyczny przykład zastosowania tego słówka kluczowego w WPF-ie. Podczas bindowania właściwości z zastosowaniem interfejsu INotifyPropertyChanged musimy...
Sztuka programowania 3659 dni, 7 godzin, 22 minuty temu 592 źrodło rozwiń
I w ten właśnie sposób szykuje się pierwszy w historii bloga zgrany cykl postów :-) Ostatnio pomyślałem sobie, że fajnie by było, oprócz aplikacji internetowej, zrobić też aplikację mobilną. A jak już robić aplikację mobilną to na 3 najpopularniejsze systemy.
Sztuka programowania 3659 dni, 7 godzin, 22 minuty temu 188 źrodło rozwiń
W ostatnim czasie otworzyłem mały cykl wpisów na temat Universal Apps, ponieważ jest to obecnie dość bliski mi zawodowo temat. Sama koncepcja tego rozwiązania, wydaje się być odważna, ale wygląda jednak na to, że ktoś to w Microsofcie całkiem sprytnie to przemyślał. Oczywiście kilka elementów jeszcze tutaj kuleje, ale w tej chwili projekty Universal Apps przypominają trochę tworzenie stron responsywnych. Mamy jednolity backend i tak naprawdę zmienia się głównie frontend (XAML), choć w tym akurat przypadk...
Sztuka programowania 3659 dni, 7 godzin, 22 minuty temu 106 źrodło rozwiń
Just as natural pearls grow from grains of sand that have irritated oysters, these programming pearls have grown from real problems that have irritated real programmers. I just finished reading Jon Bentley’s book: Programming Pearls. I read this book after Scott Hanselman’s and Jeff Atwood’s recommendations. The problems analyzed in this book are still actual. However, I think that today programmers face slightly different challenges...
Sztuka programowania 3661 dni, 18 godzin, 12 minut temu 135 źrodło rozwiń
Dużo w ostatnim czasie piszę o aplikacjach uniwersalnych, a wcześniej również sporo było tekstów o WPF. Co łączy oba tematy? Oprócz XAMLa który pojawia się w obu tych technologiach, pewnym dość istotnym łącznikiem jest wzorzec architektoniczny MVVM. MVVM pozwala na rozbicie logiki naszej aplikacji na pewne określone elementy. Mamy widoki, modele oraz tajemniczy element ViewModel. ViewModel to klasa, która zawiera uporządkowane i wypełnione danymi klasy modelu, pasujące do pewnego określonego widoku. Inny...
Sztuka programowania 3664 dni, 7 godzin, 39 minut temu 514 źrodło rozwiń
Czasami pisząc aplikację claims-aware musimy zaktualizować dane, które są przechowywane w Claims. Takich przypadków może być wiele, na przykład użytkownik zaktualizował imię czy też nazwisko, a może adres. Jeżeli nie zaktualizujemy Claims a polegamy na nich to przy odwołaniu się do wartości danego claim otrzymamy błędne informacje – stare. Może to prowadzić do pewnych komplikacji ...
Sztuka programowania 3667 dni, 6 godzin, 51 minut temu 164 źrodło rozwiń
In this post, I want to go beyond “Hello World” and show real life examples. F# and Nancy – Where to start ?
Sztuka programowania 3676 dni, 12 godzin, 35 minut temu 150 źrodło rozwiń
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 3676 dni, 12 godzin, 35 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 3679 dni, 19 godzin, 29 minut temu 528 ź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 3681 dni, 20 godzin, 37 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 3684 dni, 7 godzin, 3 minuty 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 3689 dni, 7 godzin, 53 minuty temu 201 ź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 3699 dni, 23 godziny, 41 minut temu 473 źrodło rozwiń