Pisaliśmy kiedyś aplikację dla klienta z dość jaśnie określoną specyfikacją sprzętową. Program ma się bez problemów uruchamiać na 64-bitowym Windowsie 8 ponieważ wszystkie komputery działają pod obsługą tego systemu. Czyli hulaj dusza jedziemy z najnowszą wersją .neta (wszak jest to soft dedykowany dla tego konkretnego klienta). Po czasie określonym w umowie dostarczamy soft klientowi na testy, instalacja przebiega bezproblemowo… do czasu. Jest godzina 10 spokojnie dopijam czwarty kubek kawy (wsz...
Sztuka programowania 3725 dni, 17 godzin, 27 minut temu 259 źrodło rozwiń
W poprzednim poście pokazałem prostą aplikację z wykorzystaniem Caliburn.Micro. Teraz chciałem pokazać bardziej zaawansowane (ale tylko trochę) sposoby bindowania.Bindowanie bezpośrednio do obiektu W przykładzie, który został pokazany uzupełniając dane w textboxach przypisujemy te dane do odpowiedniej property w klasie. Fragment dla przypomnienia public string LastName { get { return _person.LastName; } set { _person.LastName = value; NotifyOfPropertyChange("Last...
Pod koniec poprzedniego postu na temat MVVM wspomniałem o Caliburn.Micro jako narzędziu, które czyni moją pracę lżejszą. Dla tych, którzy nie wiedzą jest to framework wspomagający w tworzeniu aplikacji opartej o wzorzec MVVM. Jeśli ktoś zastanawia się dlaczego od razu nie wspomniałem o tym frameworku i poprzedni przykład robiłem bez jego użycia to moja odpowiedź jest prosta (i poparta gorzkim doświadczeniem). Otóż robiąc coś zaawansowanego musimy mieć świadomość mechanizmów za tym stojących inaczej...
Today, working on a new feature for my pet project, I realized that I have to notify the view, that all properties in view model have changed. The most obvious way to achieve that would, of course be to rise PropertyChange event a bunch of times. protected virtual void OnPropertyChanged(Expression
W poprzednim poście opisałem (bardzo ogólnie) dlaczego już nie lubię WinForms i dlaczego używam WPF. Przez używanie WPFa mam na myśli WPF+MVVM ponieważ szczerze mówiąc to uważam, że stosowanie WPFa bez MVVMa to strata czasu, ale to tylko moje zdanie (jak większość opinii wyrażona na tym blogu). Czym więc jest ten cały MVVM? Otóż jest to ni mniej ni więcej wzorzec projektowy. Na początek trochę teorii (niestety bez niej się nie da).Model Obiekty biznesowe, serwisy i wszystko to co jest związane z ...
Od pewnego czasu wszystkie nowe aplikację okienkowe tworzę w WPFie. Próba napisania czegoś w Winformsach sprawia mi ból. A przecież gdy zaczynałem to Winformsy były moją pierwotną technologią (bo php litościwie pomine). To właśnie WinFormsy wraz z prostotą C# (o naiwności!) były przyczyną mojego zainteresowania platformą .net. Pamiętam jak przez mgłę mój pierwszy projekt w WinFormsach. Jakieś matematyczne obliczenia (średnia, mediana itp.), ale istotny był graficzny interfejs (jego brak powodował ...
Ponieważ popełniłem kiedyś coś co nazwałem Fody ciekawa ptaszyna – część 1 to w związku z tym należało zrobić coś co nazywa się Fody cz2 co też obecnie czynie. Fody ma wiele pakietów, ale opiszę teraz tylko te wybrane z których kiedyś korzystałem (lub widziałem sens ich zastosowania). Tworząc aplikacje okienkowe musimy również przemyśleć sposób ich dystrybucji. Należy go dostosować do poziomu zaawansowania klienta oraz do nakładów pracy związanych z danym sposobem. Pisząc dużą aplikację wymaga...
Jak zdefiniować rozwój zawodowy? Rozwój zawodowy to proces zwiększania zakresu swojej wiedzy w czasie. Niby dobrze, ale jak to rozumieć? Może najprościej jak się da: każdego dnia uczymy się X nowych metod ( z danej klasy Frameworka etc.). I jeśli mówimy o początkach kariery zawodowej to jest to z pewnością prawda. Tylko, że jeśli z biegiem czasu dalej będziemy tak rozumieć rozwój to chyba coś z nami jest nie do końca w porządku. Chociaż to za dużo powiedziane. Może lepiej zabrzmi, że taka ścieżka r...
Architektura 3746 dni, 4 godziny, 30 minut temu 563 źrodło rozwiń
C# 5.0 in a Nutshell is a great reference book about C#. Furthermore, it is worth to read it from the beginning to the end, to understand how C# works and to get familiar with the language features (can be used in the future as a reference). This book describes many features, which I have never used (after over 4 years programming in C#) like some XML serializers, COM interoperability or advanced threading/tasking techniques. Now, I know about them an...
Sztuka programowania 3747 dni, 20 godzin, 5 minut temu 184 źrodło rozwiń
Tak jak napisałem w jednym z wcześniejszych postów nie zajmuję się już tworzeniem raportów w Crystal Reports. Nie oznacza to jednak, że nie piszę kodu, który wykorzystuje te raporty. Dlatego też postanowiłem zebrać w jednym miejscu informację, które zaczynającemu pracę z Crystal Reports developerowi służyłyby pomocą (przy czym jest to pomoc ze strony samouka, ale lepsza tak niż żadna).1. Środowisko pracy Teoretycznie wystarczy pobrać odpowiednią wersję ze strony producenta zainstalować i możemy dz...
Czasami mam takie dni, że mam dość. Wszystko się sypie a ja sam nie wiem w co włożyć ręce (szczególnie jak przestaje działać coś na czym polegam od dłuższego czasu i coś co do tej pory nie sprawiało mi żadnych problemów). Pewnego pięknego poniedziałkowego ranka przychodzę do pracy i od progu słyszę, że po tym jak w piątek zrobiłem pusha to kod przestał się kompilować. Wprost “uwielbiam” takie rozpoczęcie tygodnia. Oczywiście jestem przekonany, że kod działa, ale jestem przecież tylko człowiekiem...
Może słyszeliście o takim ptaszku Fody. Ostatnim czasem ptaszek ten podbił moje serce. Korzystam z jego usług tak często jak się tylko da. Ogólnie muszę podziękować Pawłowi Łukasikowi za prezentacje na KGD.NET, która otworzyła mi oczy PropertyChanged.Fody To chyba mój ulubiony pakiet, ale zanim go opiszę muszę zrobić drobne wprowadzenie. Od początku mojej przygody z WPFem ( i ogólnie XAMLem) strasznie żmudnym procesem było bindowanie pomiędzy DataModelem a widokiem (niech zasłona milczenia zakryje fak...
Finally, I had time to watch Build 2014 sessions. Here are the best I have seen. Thinking for programmers (Leslie Lamport) Windows and the Internet of Things (Steve Teixeira) Building Azure Web Sites with Visual Studio Online “Monaco” (Chris Dias) What’s New for ASP.NET and Web in Visual Studio 2013 Update 2 and Beyond (Scott Hanselman and Scott Hunter) Modern C++: What You Need to Know (Herb Sutter) The Future of C# (and VB) Go Mobile with C# and Xamarin (Miguel de Icaza) TypeScript (Anders Hejlsberg) D...
More experience I gain, more interested I am in how things work underneath the code level. In this post I want to provide short description of the Top 10 programming languages (by TIOBE Index), how they work and their super short history.
Sztuka programowania 3761 dni, 1 godzinę, 6 minut temu 441 źrodło rozwiń
Main menuMain pageAboutContact Share article via: You have web application administration panel and want to display data from Google Analytics in custom view, instead of opening the Google Analytics? Noting simpler! Google offers great API thanks to which we - developers, can get almost anything in easy way. Let's have a look how to get the PageViews number of our site from certain time period..
Metody rozszerzające i ich ciekawa właściwość...
Sztuka programowania 3790 dni, 17 godzin, 14 minut temu 416 źrodło rozwiń
Bez zbędnego przeciągania i całego bałaganu związanego z założeniem nowego bloga i przywitania z czytelnikami, przechodzę do rzeczy. W obecnie pisanej przeze mnie aplikacji WPFowej zaistniała konieczność dodania testów dla użytkowników (nie mam na myśli unit testów, a testów sprawdzających jednokrotnego wyboru). Rozwiązaniem, jakie pierwsze przyszło mi do głowy, jest przechowywanie d...
Rozważmy przez chwilę scenariusz wysyłania wiadomości e-mail. A raczej tą część procesu, w której generowana jest treść. W tagu demo3-finish mamy taki interfejs: public interface IEmailService { void RegistrationEmail(string email, string link); } (https://github.com/maniserowicz/di-talk/blob/demo3-finish/src/app/EmailService.cs) Jego implementacja powinna zająć...
Sztuka programowania 3801 dni, 21 godzin, 47 minut temu 264 źrodło rozwiń
OK – mamy niektóre “odpowiedzialności” wyjęte do osobnych klas. Ale co dalej? Czy UsersController powinien sam, ot, tak sobie, tworzyć nowe instancje których aktualnie potrzebuje? Nie! Pójdę o krok dalej i powiem więcej: użycie słowa kluczowego “new” w kodzie aplikacji uznaję za anti-pattern. Howgh, rzekłem. Jeżeli klasa potrzebuje innej klasy do działania, to ta zależność powinna być jawnie wyeksponowana w kodzie. Najlepiej przez param...
Sztuka programowania 3808 dni, 18 godzin, 23 minuty temu 212 źrodło rozwiń
O finalizers czy też destruktorach pisałem już wielokrotnie. Wspomniałem również, że lepiej ich unikać, jeśli oczywiście to możliwe. Głównym problem jest możliwość wypromowania obiektu do kolejnych generacji, ponieważ obiekty z destruktorami są umieszczane w kolejce freachable, gdzie na nową stają się osiągalne. Jeśli ktoś nie pamięta, to polecam najpierw poczytanie o tym (w dziale articles są linki do moich tekstów o GC). Dzisiaj jednak chciałbym wspomnieć o czymś innym. Wiemy, że jeden wątek zwykle m...
Sztuka programowania 3808 dni, 18 godzin, 23 minuty temu 158 źrodło rozwiń