dotnetomaniak.pl

dotnetomaniak.pl - Najnowsze artykuły o .NET w dziale Sztuka programowania - Strona 28

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

Dziel się z innymi:
Piotr Zieliński » Wątki z puli–optymalna liczba wątków.

Sztuka programowania 1349 dni, 11 godzin, 27 minut temu pzielinski 125 rozwiń

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...

Dziel się z innymi:
Piotr Zieliński » Code Review: wątki z puli oraz modyfikacja ich stanu

Sztuka programowania 1352 dni, 18 godzin, 54 minuty temu pzielinski 68 rozwiń

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...

Tagi: TDD
Dziel się z innymi:
A Second Look at Unit Testing | DariuszWozniak.NET

Sztuka programowania 1358 dni, 18 godzin, 43 minuty temu dariuszwozniak 145 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

Dziel się z innymi:
Piotr Zieliński » Artykuł– Garbage Collector, cz. III

Sztuka programowania 1358 dni, 18 godzin, 43 minuty temu pzielinski 116 rozwiń

W części drugiej kursu przyjrzymy się rodzajom testów w świecie Test-Driven Development i poznamy różnice między testami jednostkowymi, a integracyjnymi.

Tagi: TDD
Dziel się z innymi:
Kurs TDD część 2: Testy jednostkowe, a testy integracyjne | DariuszWozniak.NET

Sztuka programowania 1359 dni, 17 godzin, 23 minuty temu dariuszwozniak 654 rozwiń

Reguły, zasady – przemyślenia na ich temat ostatnio opanowały mój umysł, więc naturalną konsekwencją jego stanu są kolejne moje wpisy. I czuję, że to jeszcze nie koniec. Na blogu ostatnio jest bardziej filozoficznie, ale tak bywa, kiedy dokonuje się retrospekcji. Dziś co nieco o regule nazywania warunków (wywodzącej się z reguły wydzielania metody). Chodzi w niej o to, aby wyrażenia logiczne występujące w kodzie...

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » To wciąż zasada, czy już przesada?

Sztuka programowania 1360 dni, 23 godziny, 3 minuty temu PaSkol 191 rozwiń

W ostatnim wpisie pokazałem dostępne bloki buforujące. Dzisiaj zajmiemy się prostym przykładem, który jest bardziej praktyczny  od tego przedstawionego w poprzednim poście. Załóżmy, że piszemy system, który składa się z kilku wątków przetwarzających. Każdy z nich pełni rolę konsumenta – przetwarza dane. Chcemy to tak zoptymalizować, aby nowe dane były wysyłane wyłącznie do jak najmniej zajętych węzłów. Oczywiście temat jest bardziej skomplikowany niż może wydawać się, ale dzisiaj pokażemy jak można do te...

Dziel się z innymi:
Piotr Zieliński » TPL Dataflows – część IV (przykład z BufferBlock)

Sztuka programowania 1361 dni, 10 godzin, 23 minuty temu pzielinski 28 rozwiń

Dzisiaj wracamy do tematu TPL Dataflows. W ostatniej części zajęliśmy się m.in. BroadcastBlock, który jest jednym z bloków buforujących. Dla przypomnienia przykład:class Program { privatestaticvoid Main(string[] args) { BroadcastBlock

Dziel się z innymi:
Piotr Zieliński » TPL Dataflows – część III (bloki buforujące)

Sztuka programowania 1364 dni, 11 godzin, 2 minuty temu pzielinski 76 rozwiń

Informatyka z racji swojego sformalizowania kocha się w regułach. Nie można się praktycznie ruszyć, by w jakąś nie wdepnąć. Zaczynam się powoli zastanawiać, czy nie mamy tutaj do czynienia ze zjawiskiem podobnym do eksplozji klas – eksplozją reguł. Bezsprzecznie do tego stanu rzeczy przyczyniają się także blogi. Widywałem na blogach wpisy, w których ...

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » Owszem, reguły trzeba stosować, ale nie dajmy się im zwariować.

Sztuka programowania 1366 dni, 5 godzin, 36 minut temu PaSkol 218 rozwiń

ReaderWriterLockSlim jest klasą, która ma zastąpić ReadWriterLock, znanego ze starych wersji framework’a. Ale zacznijmy od początku… Dlaczego zwykły lock nie zawsze jest wystarczający? ReaderWriterLockSlim pracuje w trzech trybach:mutual lock – inaczej writer lock. Wyłącznie jedna taka blokada może zostać nadana. Jest to typowy lock i należy z niego korzystać, gdy modyfikujemy dane. shared (reader) lock – wiele wątków może mieć dostęp do tych samych danych. Można nadać wiele shared lock, pod warunkiem, ...

Piotr Zieliński » ReaderWriterLockSlim – synchronizacja danych

Sztuka programowania 1367 dni, 11 godzin, 58 minut temu pzielinski 75 rozwiń

Komentarze z reguły są złe, zamiast nich należy pisać czytelny kod (czyli kod, który czytany wyjaśnia swoje działanie). Są złe bo się dewaluują, tj. po jakimś czasie nie korespondują z kodem, opisują go w nieprawdziwy sposób, bo kod się zmienił. Jest to prawda, której obecnie nie trzeba chyba już nikomu tłumaczyć, przynajmniej tym, którzy trzymają rękę na programistycznym pulsie. Czy zatem rezygnując z komentarzy oraz pisząc czytelny kod pozbyliśmy się całego ich zła? Niekoniecznie, ono czeka cierpliwie...

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » Chociaż pozbyłeś się komentarzy ich zło się w kodzie wciąż może zdarzyć.

Sztuka programowania 1367 dni, 23 godziny, 58 minut temu PaSkol 199 rozwiń

Klasa Monitor to chyba najpopularniejszy, najłatwiejszy i często najlepszy sposób synchronizacji danych w .NET. Większość programistów używa słowa kluczowego lock zamiast bezpośrednio Monitor.Enter. W większości przypadków jest to poprawne i zdecydowanie najbardziej przejrzyste. Dzisiaj chciałbym przyjrzeć się kilku sposobom konstrukcji Monitor.Enter\MonitorExit. Pierwszy, zdecydowanie najgorszy to:Monitor.Enter(_sync); // sekcja krytyczna tutaj Monitor.Exit(_sync); W powyższym kodzie brakuje obsługi...

Piotr Zieliński » Code Review: Monitor.Enter – kilka wzorców

Sztuka programowania 1370 dni, 11 godzin, 44 minuty temu pzielinski 142 rozwiń

Jakiś czas temu zapowiadałem drugą część artykułu o GC. Tym razem będzie o różnych trybach GC i kiedy z jakiego należy korzystać, tak, aby aplikacja zachowywała się płynnie oraz sprawiała wrażenie, że działa w czasie rzeczywistym. Zapraszam do lektury!

Dziel się z innymi:
Piotr Zieliński » Artykuł– Garbage Collector, cz. I

Sztuka programowania 1373 dni, 12 godzin, 44 minuty temu pzielinski 109 rozwiń

Pewnie każdy na swojej ścieżce programistycznej spotkał się z klasą abstrakcyjną. Wrzucamy tam kod, który zdaje się być domyślną implementacją pewnej grupy klas i szkoda nam kopiować tego zachowania do każdej z nich osobna. Skoro wszystkie zachowują się podobny sposób, czasem tylko dodając coś od siebie, to warto wykorzystać dziedziczenie i napisać mniej (DRY).

Dziel się z innymi:
jstadnicki: Testowanie klas abstrakcyjnych

Sztuka programowania 1376 dni, 11 godzin, 23 minuty temu http://pawlos.blogspot.com/ 224 rozwiń

Biblioteka TPL istnieje już od jakiegoś czasu i raczej jest znana dla większości programistów. W .NET 4.5 Microsoft poszedł jednak o kilka kroków do przodu i dostarczył tzw. TPL DataFlows. Jest on oparty oczywiście na bibliotece TPL, dostarcza jednak kilka bardzo ciekawych klas, przydatnych do modelowania współbieżnego. Czasami algorytmy składają się z kilku “bloków”, które należy ze sobą synchronizować. TPL DataFlows służy do modelowania przepływu między różnymi wątkami. We wczesnych wersjach .NET byliś...

Dziel się z innymi:
Piotr Zieliński » TPL Dataflows–wprowadzenie (część I)

Sztuka programowania 1379 dni, 3 godziny, 8 minut temu pzielinski 166 rozwiń

Pisząc testy jednostkowe dość często spodziewamy się identycznego zachowania w różnych testowanych scenariuszach. “Gdy zajdzie X, ma wydarzyć się A, B i C”. Z kolei “gdy zajdzie Y, ma wydarzyć się A, B i D”. W takich przypadkach, wykorzystując standardowe biblioteki do unit testów, mamy do wyboru kilka rozwiązań: wspólna klasa bazowa współdzielone metody “asercji” w ramach jednej klasy copy/paste testów pomiędzy klasami … pewnie jeszcze coś i...

Dziel się z innymi:
"Test reuse" w MSpec | Maciej Aniserowicz o programowaniu

Sztuka programowania 1380 dni, 9 godzin, 1 minutę temu http://pawlos.blogspot.com/ 100 rozwiń

Serialziacja jest dobrze znanym tematem. Jakiś czas temu pisałem, jak oddelegować serializację jednego obiektu do drugiego. Pokazałem to na przykładzie wzorca singleton – w tamtym przypadku chcieliśmy oddelegować serializację do IObjectReference, który zwracał po prostu zawsze tą samą instancję. Dziś trochę inny scenariusz. Załóżmy, że w plikach, zawsze chcemy trzymać czas w UTC a nie w konkretnej strefie. Ponadto nie mamy dostępu ani do kodu źródłowego DateTime ani nie chcemy korzystać z DateTimeOffset...

Tagi: serializacja
Dziel się z innymi:
Piotr Zieliński » Serializacja–typy Surrogate

Sztuka programowania 1382 dni, 12 godzin, 59 minut temu pzielinski 150 rozwiń

Kilka wpisów wcześniej pisałem, dlaczego należy unikać funkcji Suspend. Dzisiaj przyszła kolej na metodę Abort, która również jest sygnałem, że zaprojektowana architektura jest po prostu zła. Aby zrozumieć, dlaczego Abort jest tak niebezpieczny, należy poznać najpierw zasadę jego działania. Wywołując Abort, wyrzucany jest tzw. asynchroniczny wyjątek ThreadAbortException. Dlaczego asynchroniczny? Ponieważ może on zostać wstrzyknięty w “dowolne” miejsce w kodzie. Istnieją pewne zasady, kiedy dokładnie może...

Tagi: Thread.Abort
Dziel się z innymi:
Piotr Zieliński » Code Review: Dlaczego nie należy korzystać z Thread.Abort

Sztuka programowania 1385 dni, 6 godzin, 13 minut temu pzielinski 134 rozwiń

W Visual Studio wersji Ultimate są narzędzia do analizowania architektury. Jednak są ludzie, którzy zamiast wydawać pieniądze na ultimate-a wolą iść do salonu i kupić sobie auto albo dwa. Jak jednak poradzić sobie bez diagramu warstw? Wystarczy pooglądać usingi. Single Responsibility Principle mówi, że klasa powinna robić jedną rzecz, mieć jedną odpowiedzialność. Jeśli ma jedną odpowiedzialność to nie powinna raczej grzebać we wszystkich warstwach. Wątpliwe jest aby klasa, która ma jedną ...

Źródło: www.benedykt.net
Dziel się z innymi:
using - papierek lakmusowy Twojej architektury | arek online | Arkadiusz Benedykt

Sztuka programowania 1388 dni, 12 godzin, 30 minut temu http://pawlos.blogspot.com/ 273 rozwiń

Na wstępnie od razu chciałbym dodać, że dla większości aplikacji, dalsze rozważania w tym poście nie mają sensu i należy to traktować jako ciekawostkę. Dla części systemów może to jednak być ważne a mianowicie dla oprogramowania działającego w “czasie rzeczywistym”, wymagającego low-latency. Dzisiejszy wpis może powstał trochę zbyt wcześnie ale wkrótce powinna pojawić się druga część mojego artykułu o GC, który będzie dotyczył różnych trybów kolekcji. Jednym z tych trybów jest wykonywanie kolekcji w spo...

Dziel się z innymi:
Piotr Zieliński » Powiadomienia o kolekcjach GC.

Sztuka programowania 1388 dni, 12 godzin, 30 minut temu pzielinski 128 rozwiń

1 2... 26 27 28 29 30 31... 36 37
Szkolenia SecurITum

marzec

03.
Wroc#
Wrocław

kwiecień

03.
4developers
Warszawa

maj

17.
InfoShare
Gdańsk
Zobacz wszystkie

.NET Developer Days 2015

W tym roku ponownie jak w poprzednim jesteśmy jednym z patronów medialnych konferencji .NET Developer Days. W tym roku jednym z prelegentów będzie Scott Hanselman.  czytaj więcej
2015-07-22

Najaktywniejsi

1

macko (32 816,53)

2

http://pawlos.blo... (31 520,45)

3

pzielinski (27 178,29)

4

gordon_shumway (21 178,87)

5

paduda (20 336,33)

6

psz750 (13 018,14)

7

rroszczyk (10 383,88)

8

Damian (9 011,08)

9

danielplawgo (7 235,99)

10

arek (6 727,86)

11

burczu (6 214,22)

12

PaSkol (5 393,84)

13

lukaszgasior (4 097,38)

14

jj09 (3 418,06)

15

jedmac (3 283,38)

16

http://jakub-flor... (3 224,66)

17

CaMeL (2 954,87)

18

mnikolajuk (2 596,93)

19

lkurzyniec (2 539,28)

20

spetz (2 533,07)