Tytuł podsumowuje moje przemyślenia na temat tej technologii, jakie mam od kilku miesięcy w mojej głowie. Jako PlaceChallenge zaryzykowaliśmy ostatnio z aplikacją, która jest planem lekcji dla uczniów– I co się okazało? Ludzie to ściągają. Aplikacja z dnia na dzień rośnie prawie o 20% w ilości ściągnięć. Potocznie można powiedzieć… leci jak przeciąg w wiosenny poranek. Nie można inaczej powiedzieć o aplikacji, która ma kilka tysięcy ściągnięć dziennie. Niestety nic tu nie jest przypadkowe, to wypadkowa...
Mobile development 4132 dni, 19 godzin, 26 minut temu 200 źrodło rozwiń
Niezwykle udana nocka przy migracji PlaceChallenge z EF 4 na 5 zaowocowała porannym uderzeniem jak grom z jasnego nieba… w postaci HRESULT 2146233079.return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction
Architektura 4133 dni, 6 godzin, 27 minut temu 188 źrodło rozwiń
W kolejnym wpisie o linq przedstawię zasadę działania Func, Predicate, Action. Dla przypomnienia Linq jest połączeniem 5 elementów:extension methodsyieldFunc, Predicate, Actionwyrażenia lambdaIQueryable i Expression Trees Przyjrzyjmy się najpierw deklaracji tych trzech typów. C# public delegate void Action
Sztuka programowania 4135 dni, 6 godzin, 4 minuty temu 210 źrodło rozwiń
Ostatnio potrzebowałem użyć Border z CornerRadius ustawionym na jakąś wartość, aby móc potem umieścić w środku inne kontrolki (np. obrazek). Moje pierwsze podejście było następujące: Niestety w taki sposób zawartość Border nie zostanie poprawnie przycięta i efekt jest następujący: Znalazłem na forum bardzo ciekawe rozwiązanie z użyciem OpacityMask. Najpierw kod a potem wyjaśnienie: Efekt: Aby zrozumieć powyższy kod należy najpierw wyjaśnić jak działa OpacityMask. OpacityMask to brush, który o...
Jeśli kiedykolwiek chciałeś stworzyć xml'a z obiektu, do którego klasy nie mogłeś modyfikować, a nie wystarczał Ci .net-owy XmlSerializer, sprawdź tą bibliotekę, może tobie też się przyda.
Bazy danych i XML 4140 dni, 6 godzin, 23 minuty temu 178 źrodło rozwiń
Dzisiaj temat z natury “ciekawy świata” I od razu idziemy do Visual Studio. Jako przykładny architekt jednego z moich rozwiązań postanowiłem swego czasu zrobić upgrade (używając systemu do aktualizacji wersji NuGET) Entity Framework do stabilnej wersji 5.0. Klik tu, klik tam I mam wersję 5.0. Ucieszony sobie programuje I niczym się nie przejmuje, aż tu nagle… nie wiem dlaczego pokusiło mnie by zobaczyć jaką mam wersję Entity Framework w referencjach I co się okazuje…. że 4.4! Problem w tym, że wersja...
Architektura 4140 dni, 6 godzin, 23 minuty temu 191 źrodło rozwiń
W poprzednim wpisie opisałem extension methods, dzisiaj czas na kolejny element moim zdaniem bardzo ważny do zrozumienia działania linq mianowicie słowo kluczowe yield. Dla przypomnienia Linq jest połączeniem 5 elementów:extension methodsyieldFunc, Predicate, Actionwyrażenia lambdaIQueryable i Expression Trees Zasadę działania słowa kluczowego yield najlepiej zobrazuje przykład. Załóżmy, że mamy metodę, która generuje ...
Sztuka programowania 4140 dni, 6 godzin, 23 minuty temu 165 źrodło rozwiń
W zdecydowanej większości przypadków jestem przeciwnikiem singleton’a i uważam to za anty-wzorzec. Dużo lepiej użyć IoC i przekazywać wszędzie w konstruktorach tą samą instancję. Istnieją jednak przypadki, w których użycie singleton’a nie jest brzydkie. Ostatnio miałem klasę, która potrzebowała pewnych danych – kolekcję prostych struktur. Każda struktura zawiera string i pole bool. Ze względu, że ta kolekcja musi być wykorzystana w kilku klasach, zdecydowałem się na przeniesienie jej do osobnej klasy (s...
Sztuka programowania 4140 dni, 6 godzin, 23 minuty temu 256 źrodło rozwiń
Od ponad 3 lat używam TDD z lepszymi i gorszymi wynikami, zawsze koniec końców okazuje się, że kod napisany w TDD (nie TAD czyli nie dopisując testy post factum ale w prawdziwym TDD czyli pisząc testy NAJPIERW) sprawia najmniej problemów i jest najłatwiejszy do utrzymania i do modyfikacji. Czyli wydaje się, że TDD to świetne narzędzie, dlaczego zatem tak mało osób stosuję tą metodykę? Poniżej postaram się zebrać co popularniejsze wymówki. Jeśli macie swoje to proszę dopisywać. 1) Pisanie ...
Sztuka programowania 4140 dni, 6 godzin, 23 minuty temu 324 źrodło rozwiń
Czasem sobie myślę, że jeszcze jeden dzień I stracę cierpliwość do tego jak niektóre technologie ze sobą działają… współdziałają… nie działają. Postanowiłem doinstalować wczoraj Reactive Framework (RX) do mojego świeżutkiego projektu ASP.NET MVC 4.0… I oto co zobaczyłem po uruchomieniu: ogólnie katastrofa… widzę komunikat “type ‘System.Object’ is defined in an assembly that is not referenced”… a jeszcze przed chwilą było wszystko dobrze. Okazuje się, że musimy dodać oto taką linijeczkę do web.config...
Odpływasz myślami, całe skupienie jest na kostce. Ruszasz palcami i dłońmi, unikniesz kilku chorób zawodowych. Mieści się w pomodoro (patrz niżej). Ćwiczysz umysł, widzenie w 3 wymiarach rozwija. Grywalizacja – chyba każdy chce układać najszybciej.
Dzisiejszy wpis dotyczy wszystkich klas, jednak zostanie on zaprezentowany na przykładzie ViewModel znanego z MVVM. W moim projekcie używam MVVM i dlatego jest to dla mnie naturalne. W poście zaprezentuje bardzo sztuczne przykłady, dlatego proszę nie skupiać się na nazewnictwie czy na zaprezentowanej funkcjonalności. Przedstawiony problem jest jednak bardzo częsty w realnych projektach i sam mam\miałem z nim do czynienia w codziennej pracy. Powiedzmy, że napisaliśmy ViewModel prezentujący jakąś część ...
Sztuka programowania 4142 dni, 1 godzinę, 36 minut temu 284 źrodło rozwiń
sie10Kategorie: .Net, C# przez graf Blogowania chciałem rozpocząć od cyklu wpisów o Linq. Każdy dobry programista C# powinien umieć się posługiwać Linq, nie każdy niestety wie jak to właściwie działa. Linq wprowadza wspólny interfejs do pracy z kolekcjami niezależnie od źródła danych. Linq jest połączeniem 4 elementów:extension methodsyieldFunc, Predicate, Actionwyrażenia lambda W tym poście omówię extension methods czyli metody rozszerzające. Extension methods jak sama nazwa wskazuje ...
Sztuka programowania 4142 dni, 1 godzinę, 36 minut temu 132 źrodło rozwiń
ASP.NET jest wiodącą technologią, jeżeli idzie o rozwiązania webowe w środowisku .NET. I mimo, że pojęcie to samo w sobie nie jest jednolite (w ramach ASP występuje wiele oddzielnych technologii), to jednak niewiele słyszy się o alternatywach. A jest ich całkiem sporo...
Dzisiaj będzie gadka motywacyjna o pisaniu testów więc jeśli jeszcze nie piszesz, może to Ciebie w końcu przekona. We wpisie Testowanie własnego ControllerFactory w MVC pisałem jak to zmarnowałem 6h na napisanie praktycznie jednego testu do kawałka kodu, który można napisać w 15 minut i przez dodatkowe 15 minut prze-klikać w kilku różnych przypadkach. Gdzie tu logika, gdzie tu sens. Pisząc CustomControllerFactory nie pisze się go z byle powodu, pisze się, ponieważ są potrzebne bardzo spec...
Sztuka programowania 4144 dni, 5 godzin, 33 minuty temu 170 źrodło rozwiń
Jak macie R# 8 zainstalowanego to odpalajcie jego extension manager (alt+r+x) i instalujcie Resharper Mnemonics Live Templates (możliwe że restart vs będzie wymagany albo po prostu się powiesi przy pierwszym wykorzystaniu). Rozszerzenie to dodaje szablony do tworzenia klas (c), metod (m), własności (p), opcji macie wiele, najważniejsza zasada to taka, że jeżeli pierwsza litera jest mała to jest to metoda/klasa/własność publiczna, jak jest duża to jest to statyczna publiczna. Wasza praca stała się właśn...
Pierwszym etapem przy wdrażaniu się w nowy projekt jest poznanie jego funkcjonalności. Nie będziemy w stanie zrozumieć kodu, nie wiedząc do czego dana aplikacja służy. Jeżeli nieuchronnie zbliża się deadline i nie możemy poznać projektu w całości, skupmy się na jednej funkcjonalności. Ludzie, jakkolwiek nie pisaliby kiepsko, to zwykli pisać konwencyjnie. To znaczy, że opanowanie jednego modułu, otworzy nam drzwi do zrozumienia kolejnych modułów. Wyjaśnijmy to na przykładzie systemu TravelCRM, który pr...
Sztuka programowania 4145 dni, 4 godziny, 30 minut temu 216 źrodło rozwiń
Często można usłyszeć, że przypisania są zawsze bezpieczne w wielowątkowości i powinniśmy martwić się np. inkrementacją. Jest to prawda dla Int32 ale dla long już nie zawsze. Przykład:internalclass Program { privatestaticlong _x =0; privatestaticvoid Main(string[] args) { Task.Factory.StartNew(Task1); Task.Factory.StartNew(Task2); Thread.Sleep(5000); } privatestaticvoid Task2() { while (true) { Console.WriteLine(_x); } } privat...
Sztuka programowania 4145 dni, 4 godziny, 30 minut temu 137 źrodło rozwiń
TL;DR Zobacz filmik "JavaScript: The Good Parts". Jednej rzeczy nigdy za wiele – pisania jak bardzo JavaScript jest “inny”. JavaScript to nie C# ! Tylko składnia jest podobna. To nie wina JS, że działa inaczej niż znany każdemu model obiektowy, to wina programisty, który nie chce wyjść poza strefę komfortu (języki, które już zna).
Sometimes there is a need to generate a document (HTML report, e-mail etc.) from a given template. It’s simple when it comes to just replace some tokens, but in case of more complicated operations (dealing with collections, conditions, loops) it’s better to use advanced template engine. Fortunately there is NVelocity that can be used as a standalone tool that gives pretty much flexibility.