Jeśli ktoś czytał moje poprzednie posty na temat MVVMa to z pewnością wie, że jednym z plusów jego stosowania jest możliwość odseparowania(w mniejszym lub większym zakresie) pracy programisty od pracy osoby odpowiedzialnej za design aplikacji. Oczywiście tak mówi teoria i często programista sam musi opracować wygląd okna aplikacji (no ale takie jest już życie). Wyobraźmy więc sobie, że dostaliśmy wytyczne jak ma wyglądać okno (takie a takie przyciski, tutaj grid, jakiś checkbox, szerokość elementu ...
W dzisiejszym wpisie skupię się na pokazaniu, w jaki sposób można stworzyć prostą metodę pomocniczą dla naszej aplikacji napisanej przy wykorzystaniu ASP.NET MVC. W przykładzie, metoda będzie wyświetlać wszystkie elementy przekazane za pomocą listy do widoku, dodając do nich tekst “Welcome in” (przykład nieco abstrakcyjny, jednak bardzo dobrze przekazuje wiedzę potrzebną na tworzenie helperów w przyszłości). Aby stworzyć metodę pomocniczą, możemy wybrać jedno z dwóch podstawowych podejść: - wewnętrzna...
Sztuka programowania 3188 dni, 10 godzin, 39 minut temu 241 źrodło rozwiń
Stało się! Stworzyłem swój własny schemat kolorów do Visual Studio. Niby nic takiego… a jadenak! Do tej pory korzystałem ze stylu Son of obsidian i najbardziej wkurzało mnie to, że zaznaczenie linii było prawie niewidoczne. I chyba to zdecydowało. Schemat stworzyłem przy użyciu StudioStyles (polecam).
This post is part of the series: iOS for C# Developer. String operations in Objective-C are very verbose in comparison to C#.
Dziś kolejny wpis na temat mikro-optymalizacji. Oczywiście dla większości aplikacji biznesowych taka różnica w wydajności nie ma kluczowego znaczenia. Myślę jednak, że jest to ciekawe z punktu widzenia IL i jak naprawdę działa język c#. Jeśli ktoś z kolei piszę np. grę albo aplikację czasu rzeczywistego, wtedy ma to już znaczenie, co robimy w każdej sekundzie. Zacznijmy od razu od wniosku: foreach w niektórych przypadkach jest znacząco wolniejszy od klasycznego for. Nie powinno to dziwić – w końcu iter...
Nie ma się nad czym zbytnio rozwodzić, ponieważ MoreLINQ jest biblioteką, która po prostu rozszerza podstawowe LINQ o dodatkowe operatory. Ja najczęściej korzystam z DistinctBy(), MinBy() oraz MaxBy(). Takie rozszerzenie nie tylko oszczędza mi czas, ale również sprawia, że kod jest „czystszy” i np. to co napisałbym w 3 linijkach mam w jednej – krótkiej i jasnej. Z pełnym przekonaniem polecam! Znacie coś podobnego, co rozszerza nam LINQ o jeszcze inne operatory?
Niejednokrotnie musimy przeczytać jakieś dane “skądś”, i nie mam na myśli bazy danych. Czy to zewnętrzny system przysyła excela, czy na dysku ląduje plik tekstowy, czy jeszcze coś innego. Takie pliki musimy przetworzyć, więc prawdopodobnie utworzymy klasę “XFileProcessor” albo “XFileParser”, czy coś w ten deseń. To jest akurat idealny scenariusz do pisania testów: dostajemy input i znamy oczekiwany output. Klient przysyła plik wejściowy i mówi, ja...
Let's assume that we have a simple table GL_Task which looks like this I was asked to rewrite simple SQL query SELECT Id,Name,IdProject FROM GL_Task WHERE Name = 'First task' OR Id IN (3,4 /more id's to come/) using NHibernate's QueryOver API. As simple as it may seem, solution for this particular problem is not straightforward. My first (not so clever) attempt was simply combining WhereRestrictionOn and Where clause var result = session.QueryOver
Najwyższy szas na zapowiadaną obsługę zdarzeń w Caliburn.Micro. Najpierw jednak krótkie przypomnienie. Zaczniemy od prostego zdarzenie Click na ButtonieBez MVVM Każde zdarzenie z z View ma odwzorowanie w Code-Behind. Jeśli nazwy metod się nie zgadzają kod się nie kompiluje View Code-behind private void SayHi_Click(object sender, RoutedEventArgs e) { //some app logic } Z MVVM Musimy pamiętać o konieczności wpowadzenia klasy implementującej ICommand (odsyłam do przykładów z wcześn...
In this series I would like to present an overview of differences and similarities in developing iOS and C# apps. First part is about Object-Oriented features. If you are C# developer and you are starting with Objective-C, Object-Oriented terminology might be confusing.
Some time ago I created an Azure alert (thanks to Iris Classon). I did it as a part of my Azure exploration. The rule I created, send me email every time I have more than 1000 requests per hour. I received one or two e-mails in last two weeks and that was fine. High traffic can happen occasionally. Of course I created this rule based on history of the number of requests from the past. However, last night I received 3 e-mails. I checked with Azure Man...
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 3193 dni, 23 godziny, 10 minut temu 259 źrodło rozwiń
Tak naprawdę, moje posty powinienem rozpocząć od wyjaśnienia czym jest JIT. To jedno z podstawowych pojęć, które pojawia się w przypadku omawiania .NET. Wolałem jednak najpierw pokazać kilka programów napisanych w IL Assembly. Kilka postów powinno dać już jakiś obraz czym jest IL. Oczywiście kod piszemy w C# lub w innym języku wysokiego poziomu, więc wystarczy abyśmy ogólnie mieli pojęcie o IL. Co to jest więc kompilacja JIT? Czym różni się od klasycznej? W językach niezarządzanych takich jak CPP...
Dzisiaj mało znana funkcjonalność języka\kompilatora, która niestety czasami przydaje się. W zdecydowanej większości przypadków nie powinna ona mieć w projekcie zastosowania, ale wiadomo, czasami nie mamy na to wpływu. Problem dotyczy scenariusza, gdy mamy dwa typy o takiej samej nazwie, znajdujące się w takiej samej przestrzeni nazw. Oczywiście taka sytuacja wymaga, aby podane typy były umieszczone w różnych projektach (inaczej nastąpiłby błąd kompilacji). Przy wielkich systemach, w których nie przestr...
Skróty klawiaturowe są często przez nas wykorzystywane. Chyba każdy z programistów wie jak to przyspiesza pracę i zwiększa produktywność. Dlaczego więc nie dać użytkownikom możliwości korzystania ze skrótów w aplikacjach internetowych.
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...
Dzisiaj na ruszt wrzucimy integrację z systemem automatycznych płatności transferuj.pl. Sprawa wydaje się nie być trudna, ale spędziłem za pierwszym razem nad tym trochę czasu zanim wszystko odpowiednio skonfigurowałem, a w Internecie na ten temat materiałów brak. Dokumentacja do integracji jest i to jest dobra, jednak co na chłopski rozum opisane to łatwiej zrozumieć.
Sztuka programowania 3199 dni, 10 godzin, 48 minut temu 284 źrodło rozwiń
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
Ile razy mieliście tak „Hej, komputer/drukarka/myszka/klawiatura/monitor/telewizor/radio/suszarka (niepotrzebne skreślić) nie działa! Zrób coś z tym!”, mówicie, kurde nie za bardzo wiem o co chodzi, nie znam się akurat na tym… A w odpowiedzi dostajecie „No jak to? Przecież jesteś INFORMATYKIEM!”.