Wiele razy pisałem już o słowach async\await i z pewnością ułatwiają one życie. Dla przypomnienia rozważmy kod:private async void DownloadAndSortAsync() { int[] allNumbers = await DownloadNumbersAsync(); int[] sortedNumbers = await SortNumbersAsync(allNumbers); MessageBox.Show(string.Join(“,”,sortedNumbers)); } private Task
Strona głównaUżytkownik
niao | użytkownik
Sztuka programowania 3748 dni, 10 godzin, 20 minut temu 194 źrodło rozwiń
Role of the Application Architect “Architect” is one of the buzzword, sometimes used just to name an important person working in the software development department. In other cases, we will call this way the only people who understand how given software works. For some people it will be another level of software developers’ career ladder. Sometimes word ‘architect’ describes a person who draws lines and rectangles on whiteboards. All in all, most of us saying “architect” does not actually know,...
Architektura 3842 dni, 16 godzin, 41 minut temu 166 źrodło rozwiń
Z sobotę odbyła się łódzka konferencja GET.NET (o czym jeszcze napiszę), w trakcie której tuż przed moją, odbyła się prezentacja Procenta o Dependency Injection. Samo wystąpienie było świetne, a moją ciekawość podsyciła dodatkowo obietnica (powtórzona dwukrotnie) wyjaśnienia całego zamieszania wokół pojęć DI (Dependency Injecton i Inversion) oraz IoC. Jakie było moje rozczarowanie, gdy upragniony moment nadszedł, a Maciek skwitował wszystko zdaniem, że definicje nie są ważne. Oj wkurzyłam się… Pomyślała...
Sztuka programowania 3850 dni, 5 godzin, 24 minuty temu 413 źrodło rozwiń
W ASP.NET MVC do dyspozycji jest dość mało popularny atrybut Bind, który pozwala określić zachowanie bindingu pomiędzy modelem a widokiem. Załóżmy, że mamy następujący model:publicclass Person { publicstring FirstName { get; set; } publicstring LastName { get; set; } publicstring Email { get; set; } } Następnie napiszemy prostą akcję, zwracającą model do widoku:public ActionResult Create() { var person=new Person(); return View(person); } Widok stanowić będzie prosty formularz:@using ...
Nigdy jakoś specjalnie nie lubiłem testów jednostkowych jednak każdy porządny programista dobrze wie, że to ważny aspekt wytwarzania oprogramowania. Dzięki testom jesteśmy w stanie bezpiecznie dokonywać zmian w kodzie właściwym – jeśli w wyniku refaktoryzacji zmienimy sposób działania aplikacji, testy przestaną „przechodzić”, wiemy więc od razu, że coś jest nie tak. ...
Sztuka programowania 3843 dni, 14 godzin, 41 minut temu 199 źrodło rozwiń
FileTable to kolejny mechanizm dostępny w SQL Server mający na celu ułatwić przechowywanie dużej ilości danych np. plików. W starych bazach danych, często przechowywano pliki osobno na serwerze, a baza danych zawierała wyłącznie wskaźniki do tych plików. Podejście powodowało problemy, w przypadku synchronizacji danych tzn. plików dostępnych na dysku a ich identyfikatorami w bazie. Zwykle nie było innego wyjścia, ponieważ przechowywanie dużej ilości danych w bazach (plików graficznych) nie było zbyt optym...
Bazy danych i XML 3860 dni, 12 godzin, 29 minut temu 198 źrodło rozwiń
Leave a reply I mentioned some time ago, that fall will be eventful. But I didn’t know about all the events. Everyday I learn about something new, and most of it looks really impressive. During last two weeks I attended two really well organized events. First one on 12th October. This day I planned to be at leetspeak (BTW – videos are already uploaded) in Sweden, but due some health issues I had to stay home. But there were more than one backup options. There was Warsjawa (name is nice play on polish n...
Sztuka programowania 4026 dni, 10 godzin, 45 minut temu 142 źrodło rozwiń
Opublikowano Wczoraj wyszła nowa wersja NDepend-a, jeszcze ciepła, cieplutka. 5-tka ma dwie rewolucyjne rzeczy, pierwsza to nowe UI, ładniejsze i bardziej “nowoczesne”, druga – i to jest dla mnie killer to dashboard. Zatem po kolej. Mamy nowe logo, które wygląda całkiem całkiem jak na moje średnio wprawne oko. Mamy wygląd czyli nowe menu, graficzki i inne takie. Wprawdzie nie jest to to co daje Visual Studio, to jednak Patric (autor tego cudownego narzędzia) mówił, że będą dalej nad tym pracować, więc ...
Zanim przejdę do tytułowej biblioteki chciałbym, aby czytelnik odpowiedział na następujące pytanie. Dlaczego tworzenie stron internetowych jest trudne? Jakieś pomysły? Moim, zdaniem największą trudnością jest wspieranie wielu różnych przeglądarek, które z kolei w zależności od wersji wpierają lub nie pewne standardy. Króluje tutaj oczywiście IE, w którym wszystko musi być inaczej, na szczęście powoli to się z...
W kilku wpisach chciałbym przedstawić różnicę między tymi dwoma typami. Osoby piszące aplikacje finansowe z pewnością znają te różnice bo to właśnie w tych typach aplikacji, double powodował bardzo poważne błędy. Przed przeczytaniem wpisu, niezbędne będzie przypomnienie sobie następujących informacji: 1. Przeliczanie systemu binarnego, szczególnie części dziesiętnej. 2. Liczby zmiennoprzecinkowe. Nie będę tego opisywał na blogu, ponieważ są to zagadnienia wyjaśniane już wiele razy – ale pisząc aplika...
Sztuka programowania 4054 dni, 7 godzin temu 293 źrodło rozwiń
Raz na jakiś czas, od dawna, dość regularnie, szczególnie w okresie około-wakacyjnym, dostaję maile z pytaniami od osób zastanawiających się nad własną, szeroko pojętą, przyszłością. Przyszłością w kontekście zostania słodkim, wymiatającym, wypasionym programistą. Nie wiem właściwie skąd przeświadczenie że ja, “complete-stranger”, mogę posiadać odpowiedź na to pytanie:), ale jako że do mnie jest ono właśnie adresowanie, ...
Chcemy zaznaczyć, że klasa możemy być użyta w jakiś sposób, jednocześnie nie definiując żadnych metod, które klasa miałaby implementować. Może się wydawać, że takie coś nie powinno mieć miejsca, bo zawsze chcemy wykonać logikę która została zaimplementowana dzięki kontraktowi zwanemu interfejsem. Przykładami, że jednak czasem tak bywa są INamingContainer w ASP.NET oraz Serializable w Javie.
Sztuka programowania 4047 dni, 10 godzin, 4 minuty temu 241 źrodło rozwiń
Atak Cross-Site Request Forgery (w skrócie CSRF lub XSRF) polega na wykorzystaniu nieświadomego niczego użytkownika, który w danym momencie zalogowany jest do serwisu będącego celem ataku, do wysłania żądania spreparowanego przez hakera. Takie żądanie może na przykład zmieniać dane użytkownika użytego do ataku, na takie, które później będą mogły być wykorzystane przez atakującego do zalogowania się do serwisu. W dzisiejszym poście, chciałbym pokazać jak zabezpieczyć się przed tego typu atakiem w aplikac...
Każdy kod można usprawnić / napisać lepiej. Bez wyjątku. Nie ma kodu idealnego (jak już zresztą kiedyś pisałem). Jednak w pewnym momencie trzeba przestać, tzn. nie można dopieszczać w nieskończoność jednego kawałka kodu zaniedbując wszystko dookoła. Ale nie oznacza to, że powinniśmy akceptować każde poplątane ścierwo jakie wyjdzie spod naszych skrzypiących paluchów i mówić "spoko, jest wystarczająco dobrze".
Sztuka programowania 4419 dni, 8 godzin, 43 minuty temu 255 źrodło rozwiń
Dziś trochę o podstawach C# ale myślę, że wszyscy znajdą coś wartościowego w tym wpisie bo chcę pokazać jak to działa od środka CLR. Na początek przykład boxing’u:staticvoid Main(string[] args) { int value =3; object referencedType = value; } Boxing to nic innego jak utworzenie typu referencyjnego na podstawie value type. Object to typ referencyjny przechowywany na stercie, z kolei integer to zwykły value type przechowywany na stosie. Opisowo, boxing składa się z 3 operacji:Alokacja pamięci na s...
Sztuka programowania 4418 dni, 11 godzin, 47 minut temu 132 źrodło rozwiń
by Shane Pope W 2010 roku poczyniłem post prezentujący być może jedną z mniej znanych funkcji Visual Studio 2010. Jako, że od tamtego czasu minęło sporo czasu a za nami release najnowszej wersji VS postanowiłem odświeżyć tamten wpis co nieco. Klawiatura w życiu programisty jest ważna. To tu nasze ręce spoczywają przez większość dnia, to tu gromadzimy zapasy jedzenie na zimę i to tędy przelewamy naszą wiedzę na papie...eeekran. Myszka jest drugorzędna. Przydaj się tylko, aby zrobić jakąś dodatkową czynno...
I’ve just published a little project of mine on GitHub, called VsDebugFx. It’s a NuGet package which you can install into your .NET project and get more expressiveness during your debugging sessions inside Visual Studio. It’ll let you evaluate expressions that use C# features which are not normally allowed by the IDE, namely: lambda expressions, anonymous types, LINQ queries and implicitly-typed arrays. I don’t want to repeat myself (DRY anyone?), so if you’re interested in knowing more, go check out th...
Na blogu oraz MSDN pisałem niejednokrotnie o testach jednostkowych oraz integracyjnych. Ostatnio jednak zastanawiałem się nad podstawowym problemem – jak zorganizować to od strony struktury katalogowej? Musimy rozważyć następujące problemy:Testy powinny być w każdej chwili dostępnie do odpalenia i weryfikacji.Wykonując prostą refaktoryzację (zmiana nazwy klasy), automatycznie nazwa powinna zaktualizować się w testach.Testy jednostkowe stanowią dobrą dokumentację oraz instrukcję używania zaimplementowanej...
W ramach kontynuacji tematyki związanej z Reactive Extensions (RX)przyjrzyjmy się elementom, które stoją u podstaw ich działania, czyli kolekcjom i wzorcowi Obserwator. W poprzedniej części artykułu poznaliśmy cel przyświecającym twórcom Reactive Extensions (RX) jak i skąd można pobrać wspomniane rozszerzenia. Skoro już mamy zainstalowane Reactive Extensions (Rx), zacznijmy przyglądać się jego możliwością.Jak wcześniej zostało wspomniane, Rx upraszcza programowanie asynchroniczne, pozwala na łatwe filtr...
Programowanie rozproszone 4724 dni, 8 godzin, 6 minut temu 125 źrodło rozwiń
Aby móc korzystać z rozszerzeń RX należy najpierw je pobrać i zainstalować. Przed przeczytaniem tego posta, koniecznie należy zapoznać się z interfejsami IObservable oraz IObserver – prezentowałem je w ostatnim wpisie. Po instalacji dodajemy referencję do System.Reactive: RX dodaje metodę ToObservable konwertującą kolekcję do IObservable, interfejsu który wspiera wzorzec obserwator. Napiszmy przykładowy obserwator:class SampleObserver : IObserver
Programowanie rozproszone 4723 dni, 13 godzin, 35 minut temu 116 źrodło rozwiń