An asynchronous operations become very popular in modern programming because by using its developers can take full advantage of multicore processors and perform several operation at the same time. Multithreding exists in ASP.NET since 2.0 version but it was very sophisticated to use it. However starting from .NET 4.5, ASP.NET is fully compatible with all these great features. To demonstrate how to start with the asynchronous operation in ASP.NET 4.5 I`ve created very simple solution which consist of ...
In June 3 – 6, there was Tech Ed North America conference in New Orleans. The videos are available on channel9. I have watched a few very good sessions, and I can recommend you especially 5 of them.
AutoResetEvent\ManualResetEvent może być używany do synchronizacji międzyprocesowej tak samo jak np. mutex. Posiada podobny zestaw metod do tworzenia obiektu z nazwą oraz późniejszego jego otwierania. Aby móc go użyć do synchronizacji międzyprocesowej należy oczywiście nadać obiektowi nazwę – tak samo jak to jest z Mutex. W tym problem, że konstruktory ManualResetEvent czy AutoResetEvent nie przyjmują takich parametrów. Zaglądając jednak do dokumentacji dowiemy się, że:publicsealedclass ManualResetEvent...
Sztuka programowania 4198 dni, 8 godzin, 23 minuty temu 68 źrodło rozwiń
Zakładam, że polecenia update języka T-SQL nie trzeba nikomu przedstawiać. Jest to jedno z jego czterech podstawowych poleceń. Służy do aktualizacji zawartości kolumn tabeli. Zakładam jednak, że niewiele osób wie, iż polecenie to potrafi także aktualizować...
Bazy danych i XML 4200 dni, 9 godzin, 20 minut temu 167 źrodło rozwiń
Zgodnie z nową, unijną polityką prywatności dotyczącą ciasteczek (dyrektywa z lipca 2013 roku), na witrynach internetowych powinna być zawarta informacja o wykorzystywaniu cookies ...
Dzisiaj pierwszy post o tzw. grouping block czyli blokach grupujących. Ich zasada jest prosta – grupują dane z różnych źródeł w sposób zależny już od konkretnego bloku. W tej części zajmiemy się BatchBlock, który przychodzące dane buforuje, a następnie przesuwa je na wyjście w zdefiniowanych porcjach. BatchBlock działa w dwóch trybach: greedy i non-greedy. W przypadku implementacji zachłannej, wszystko co pojawia się na wejściu jest akceptowane i przekazywane na wyjście gdy uzbiera się określona liczba ...
Sztuka programowania 4201 dni, 10 godzin, 4 minuty temu 33 źrodło rozwiń
W ostatnim poście wspomniałem o minimalnej liczbie wątków. Istnieje również górny próg, określający ile maksymalnie może zostać stworzonych wątków. Zbyt niski próg oraz zła architektura może spowodować bardzo trudny w znalezieniu błąd a mianowicie deadlock. Wyobraźmy sobie następującą sekwencję zdarzeń:Wątek T0 (lub główny, nie ma znaczenia) dodaje zadanie do puli.Stworzone zadanie tworzy n nowych zadań.T0 czeka aż wszystkie n zadań zostanie wykonanych (wait). Następnie przyjmijmy, że w tych n wątkach, ...
Sztuka programowania 4201 dni, 10 godzin, 4 minuty temu 122 źrodło rozwiń
Pula wątków to specjalny mechanizm zaimplementowany w CLR, mający na celu ponowne używanie tych samych wątków. W dzisiejszym wpisie chciałbym wyjaśnić co to jest optymalna liczba wątków i jaki ona ma wpływ na wydajność. Rozważmy następujący kod:internalclass Program { publicstaticvoid Main() { for (int i =0; i
Sztuka programowania 4204 dni, 9 godzin, 29 minut temu 169 źrodło rozwiń
Na temat pętli w języku JavaScript pisałem już co nieco w czasie moich przygotowań do egzaminu 70-480, a konkretnie w artykule "Sterowanie przepływem operacji w języku JavaScript". Było to jednak dość ogólne potraktowanie tematu, a dziś chciałbym przyjrzeć się temu bliżej i pokazać jak korzystać z tego elementu języka w sposób jak najbardziej wydajny. W niniejszym poście przyjrzymy się przede wszystkim pętlom "for" oraz "for-in" jako najczęściej stosowane.Pętla for Opisywana pętla służy przede wszystkim...
Tytuł niniejszego wpisu zapożyczyłem z piosenki zespołu „Raz, Dwa, Trzy”. Uważam, że doskonale oddaje sens rozważań, którymi chciałbym się w tym wpisie zająć. Dość dawno temu usłyszałem ciekawą radę, aby nie nazywać spraw problemami, ponieważ słowo to niesie negatywny wydźwięk i podświadomie sprawia, że normalna sprawa rzeczywiście urasta do rangi problemu. Dlatego sprawy, które są zadaniami do zrealizowania nie powinny być problemami do rozwiązania, zadania matematyczne – nie powinny być ...
Dzisiaj bardzo krótka notka, mająca na celu przestrzec przed modyfikacją jakichkolwiek właściwości wątku, który pochodzi z puli. Bardzo łatwo zmienić jego stan poprzez ustawienie nowego priorytetu albo zmianę kultury. Inny przykład to TLS o którym już pisałem na blogu. Dlaczego jest to tak złe?privatevoid Run() { Thread.CurrentThread.Priority = ThreadPriority.Highest; } Musimy zdać sobie sprawę, że takowe wątki wyłącznie wypożyczamy. Ktoś na forum porównał to do wypożyczalni samochodów. Gdy wypożycz...
Sztuka programowania 4207 dni, 16 godzin, 56 minut temu 68 źrodło rozwiń
I have been playing with Node.js recently. Mostly doing some small hobby projects. One of them needed server side badly, some of the cool features were not possible with the client side only web app. I was thinking about using RoR, Asp.Net Mvc or NancyFX all of these frameworks suitable for the task. Then why Node ? Well, the answer is simple, FUN. There is a lot of hype around it. Community is very dynamic, lots of modules and extensions created on the daily basis. As a Passionate Developer, I also wa...
Bawiłem się ostatnio aplikacją (WPF, .NET 4.5, C# 5 async await), która wyświetla na żywo obraz z kamerki i skanuje go w poszukiwaniu pewnych informacji. Chcąc maksymalnie zwiększyć wydajność, doszedłem do implementacji Timera, który sam dostosowuje swój interwał, aby maksymalnie zrównoleglić periodyczne operacje i wykorzystać dostępne procesory.
W dzisiejszym wpisie postaram się przybliżyć bazę MongoDB i sposób korzystania z niej za pomocą C#.
Bazy danych i XML 4209 dni, 23 godziny, 54 minuty temu 321 źrodło rozwiń
Kiedy wprowadza się reguły? Zazwyczaj wówczas, kiedy zjawiska zachodzące w danym środowisku zaczynają wymykać się spod kontroli. Weźmy np. pojazd komunikacji miejskiej. Jeżeli jest on praktycznie pusty, to można z niego wysiadać w tym samym momencie, w którym ktoś chce wsiąść – ta garstka pasażerów wyminie się w drzwiach w sposób intuicyjny. Jeśli jednak liczba wysiadających jak i wsiadających zwiększy się, to konieczna będzie już jakaś regulacja – np. ...
Architektura 4209 dni, 23 godziny, 54 minuty temu 105 źrodło rozwiń
Dzisiaj zajmiemy się kolejnym wzorcem przeznaczonym dla środowiska wielowątkowego. W dokumentacji\artykułach możemy go spotkać pod nazwą “condition pattern”. Załóżmy, że jeden wątek musi sprawdzić pewien warunek aby móc wykonać jakąś pracę. Innymi słowy, mamy współdzielony zestaw zmiennych, modyfikowanych przez różne wątki. Jeden z wątków może wykonać swój kod wyłącznie, gdy te współdzielone zmienne spełnią jakiś warunek. W jaki sposób moglibyśmy podejść do problemu? Najprostszym rozwiązaniem byłaby pęt...
Programowanie rozproszone 4209 dni, 23 godziny, 54 minuty temu 168 źrodło rozwiń
Wprowadzenie Wzorce projektowe mają na celu rozwiązanie najczęściej spotykanych problemów związanych z pisaniem kodu. W przypadku warstwy prezentacji można wykorzystać m. in. następujące rozwiązania: MVC, MVP czy Model-View-ViewModel. Ze względu na mechanizm wiązań (binding), programistom WPF oraz Silverlight, polecany jest wzorzec MVVM – jest to technologia umożliwiająca bardzo łatwą implementację wzorca.K...
Architektura 4213 dni, 16 godzin, 45 minut temu 560 źrodło rozwiń
Czasem na prawdę małe rzeczy potrafią poprawić humor programiście. Takie drobne rozwiązania, które pozwalają na przyspieszenie tworzenia programu… Ostatnio musiałem zrobić instalator aplikacji – wybór padł na WiXa. A tam przy każdym elemencie wchodzącym w skład instalatora trzeba podać GUID.
Na witrynie techdays można obejrzeć wykład Roya Osherove pt. A Second Look at Unit Testing z tegorocznej konferencji Microsoft SWIT 2013 w Kijowie. Z wykładu dowiemy się m.in.:co się zmieniło i co zdezaktualizowało w świecie Test-Driven Development od czasu pierwszej edycji książki Art of Unit Testing (2009), jakie frameworki do izolacji (isolation frameworks) są obecnie na topie,dlaczego nie korzystać z Rhino Mocks, NUnit.Mocks i M...
Sztuka programowania 4213 dni, 16 godzin, 45 minut temu 148 źrodło rozwiń
Kolejna część artykułu o GC – tym razem o zasobach niezarządzanych. Zapraszam do lektury: http://msdn.microsoft.com/pl-pl/library/garbage-collector-cz-3-zasoby-niezarzadzane
Sztuka programowania 4213 dni, 16 godzin, 45 minut temu 122 źrodło rozwiń