Ja wiem, że posty o tej tematyce były modne jakieś 6 tygodni temu, no ale z mojego punktu widzenia bardzo dziwne jest podsumowywanie czegos przed jego zakończeniem. Później zaś miałem natłok różnych spraw osobistych i zawodowych, więc z niniejszym podsumowaniem musiałem się wstrzymać dłużej niż chciałem.

MVC jest obecnie bardzo popularnym wzorcem stosowanym w chyba każdej technologii służącej do tworzenia aplikacji webowych. Zarówno w .NET, PHP, Javie, jak i bardziej hipsterskich językach stał się on pewną podstawą, bez znajomości której nie ma szans na znalezienie pracy. Z moich doświadczeń wynika jednak, że MVC jest chyba najbardziej nierozumianym wzorcem. Nierozumianym chyba nawet bardziej niż repozytorium. Powszechne niezrozumienie MVC zauważył i opisał już jakieś 10 lat temu Martin Fowler. Świadczy to chyba o tym, że nasza cywilizacja przestała sie już rozwijać.

Uwaga - ten artykuł zawiera bardzo dużo faktów obalających powszechne panujące przekonania. Może zniszczyć i tak ciężkie dzieciństwo senior developerów. Zaglądasz na własne ryzyko!

Mawiają, że przyzwyczajenie jest drugą naturą człowieka. Sprawia ono, że bezwiednie (albo nawet bezmyślnie) wykonujemy pewne czynności. Niekiedy to jest dobre - np. z przyzwyczajenia myjemy dłonie po skorzystaniu z toalety, nawet jeśli ich nie obsikaliśmy. Niestety, czasem mimowolność przyzwyczajeń sprawia, że ludzie dokładają sobie zbędnej roboty, np. pisania kodu, który nie ma sensu. Samo pisanie jeszcze nie jest złe, gorzej, że później ktoś taką radosną twórczość musi czytać i utrzymywać. Tak zazwyczaj dzieje się w przypadku wzorca Repozytorium.

Zadaniem, które wziąłem na warsztat w poprzednim tygodniu, była refaktoryzacja obsługi optimistic concurrency. Do tej pory obsługa konfliktu wersji przy aktualizacji rekordu była obsługiwana za pomocą wyjątku rzucanego z serwisu i łapanego w filtrze MVC. To oczywiście był błąd projektowy, bo przecież wystąpienie optimistic concurrency to spodziewany efekt edycji rekordu, a nie żaden wyjątek. Poprawiając to, stwierdziłem że dobrze będzie przy okazji w ogóle poprawić komunikację na linii serwis-kontroler, tak aby wyjątki z aplikacji nigdy nie docierały do GUI.

Wiele razy rożni ludzie dziwili mi się, że “nie lubię Entity Frameworka”. Takie stwierdzenie nie tylko bardzo mija się z prawdą, ale wręcz jest zupełnie pozbawione sensu. Lubić można rosół z makaronem, komplementy i kolor niebieski, ale nie ORMa. To samo zresztą dotyczy innych bibliotek czy języków - technologia to jest coś, czego się używa albo i nie (w zależności od potrzeb, zastosowań i możliwości), nie obiekt uczuć. Co do EF zaś - mam po prostu bardzo wiele argumentów za tym, żeby go nie używać. Postaram sie je wymienić w tym krótkim wpisie.

Kilka dni temu ogłosiłem nadzieję na zakończenie moich zmagań z Bootstrap Datepicker. Jak wiadomo, nadzieja jest matką głupich, i dzisiaj musiałem wrócić do tego tematu przy okazji naprawiania dat w gridzie. Po ostatnich zmianach zauważyłem, że daty w kolumnach wyświetlane są w amerykańskim formacie, zaś wyszukiwanie nie działa.

W życiu wielu ludzi nadchodzi taki moment, że mają dość mieszkania z rodzicami/teściami/pod mostem i postanawiają wziąć kredyt na mieszkanie. Mnie również się to przydarzyło. Niestety, branie kredytu wiąże się z kontaktem z bardzo zbiurokratyzowanymi instytucjami - bankami, które wymagają dostarczenia różnych dokumentów, potwierdzeń i zaświadczeń. Zazwyczaj jest to łatwe, mi jednak dostarczyło niesamowitych przygód.

Gdy pod koniec 2013 roku zaczynałem pracę nad swoim frameworkiem, jednym z najważniejszych wyborów, które musiałem podjąć, był wybór kontrolki grida. Po przeanalizowaniu dostępnych rozwiązań, zdecydowałem się na jqGrid. Wydawał się prosty w obsłudze i miał dobre wsparcie po stronie serwerowej ASP.NET MVC (tzn. builder i model binder). Do tego był darmowy. No właśnie - tu jest problem - BYŁ. Od grudnia 2014 przestał być dostępny na licencji MIT, i z tego powodu stanąłem przed koniecznością zamiany go na coś darmowego.

To trzecia i (mam nadzieję) ostatnia część moich przygód z kontrolką daty w PizzaMVC. Tym razem musiałem naprawić problem związany z polskim zapisem daty wynikający z ewidentych błędów Microsoftu w .NET Framework. A przy okazji napisałem najdłuższy program w Javie w swoim życiu.

Bootstrap datepicker pojawił się w PizzaMVC przy okazji migracji z ASP.NET MVC 4 na 5. Ponieważ wersja 5 standarodowo korzysta z Bootstrapa, musiałem wymienić poprzednie kontrolki (pochodzące z jQuery UI) na coś kompatybilnego z Bootstrapem. Wtedy zrobiłem to pod presją czasu, wrzucając luźno pliki JS i podpinając je po linii najmniejszego oporu. Teraz przyszła pora na poprawki.