dotnetomaniak.pl

Strona głównaUżytkownik

pzielinski | użytkownik

pzielinski
pzielinski
15 980,87
21 godzin, 2 minuty temu
21 lutego, 2010
dotnetomaniak.pl

W .NET istnieje wiele sposobów synchronizacji pracy wątków. O dużej części z nich pisałem już na blogu (z ciekawszych np. klasa Barrier ). Najpopularniejszym i najłatwiejszym sposobem jest użycie słowa kluczowego lock. W wielu przypadkach jest to najlepszy i najbezpieczniejszy wybór. SpinLock to zupełnie inne podejście. W przypadku lock, wątek jest usypiany i budzony gdy przyjdzie na niego kolej. Ma to kilka poważnych wad. Wiążą się one z szeregowaniem oraz zmianą kontekstu. Zmiana kontekstu jest dość c...

Dziel się z innymi:
Piotr Zieliński » Synchronizacja za pomocą SpinLock

Inne 2 godziny, 3 minuty temu pzielinski 123 rozwiń

W .NET 4.0 wprowadzoną klasę Tuple służącą do owijania kilku wartości w jeden obiekt. Tuple to nic innego jak obiekt zawierający w sobie jakieś dane w postaci właściwości. Do dyspozycji jest 8 statycznych  metod służących do stworzenia Tuple:Create(T1)Create(T1,T2)Create(T1,T2,T3)Create(T1,T2,T3,T4)Create(T1,T2,T3,T4,T5)Create(T1,T2,T3,T4,T5,T6)Create(T1,T2,T3,T4,T5,T6,T7)Create(T1,T2,T3,T4,T5,T6,T7,T8) Ponadto istnieje możliwość stworzenia tuple za pomocą jednego z konstruktorów:Tuple

Tagi: C#, Tuple
Dziel się z innymi:
Piotr Zieliński » Klasa Tuple

Inne 2 godziny, 3 minuty temu pzielinski 196 rozwiń

Dziś znów powrót do podstaw inżynierii oprogramowania. Przedstawianie podstawowej zasady może wydawać się śmieszne ale mimo wszystko programista dobrze jak wie, że taka zasada ma swoją nazwę i naprawdę powinno się tego przestrzegać.  Za pewne wiele programistów nie zna nazw tych reguł ale i tak postępuje zgodnie z nimi. Post ma jednak uświadomić, że takie praktyki są dobrze udokumentowane i są na naprawdę dobrym zwyczajem a nie tylko intuicją doświadczonego programisty. Wzorzec dotyczy konstrukcji metod...

Tagi: CQS
Dziel się z innymi:
Piotr Zieliński » Zasada Command-query separation (CQS)

Architektura 2 godziny, 3 minuty temu pzielinski 214 rozwiń

W dzisiejszym poście o dwóch nowościach. Pierwsza z nich to ulepszona kompatybilność. W VS 11 można otwierać solucje utworzone w Visual Studio 2010 bez znanego “Upgrade”. Oznacza to, że można jednocześnie na tym samym projekcie pracować zarówno w VS 11 jak i VS 2010. Projekt otworzony w VS 11 nie powoduje zmiany  formatu i później wciąż może być otwierany w VS 2010. Moim zdaniem znaczącą ułatwia to migrację. Niestety projekt utworzony od nowa w VS 11 nie może być już otwarty w 2010 ale wydaje się to natu...

Tagi: C#, Visual Studio
Dziel się z innymi:
Piotr Zieliński » Visual Studio 11 – kompatybilność wstecz oraz Solution Explorer

Narzędzia 2 dni, 10 godzin, 5 minut temu pzielinski 144 rozwiń

W ostatnim poście o nowościach w VS 11 pisałem o szarych ikonach, co w większości osobom nie przypadło do gustu. Z tego co obserwuję, zdecydowana większość jest rozczarowana nowymi ikonami. Dzisiaj jednak chciałbym zaprezentować praktyczniejszą funkcję – nowy QuickLaunch. Na początek PrintScren: Chodzi mi oczywiście o QuickLaunch znajdujący się w prawym górnym rogu. Wpisując jakiś tekst, zostanie przeszukanych kilka typów informacji jak:Otwarte dokumenty (przeszukuje po ich nazwie).Item’y w menu – bar...

Tagi: C#, Visual Studio
Dziel się z innymi:
Piotr Zieliński » Visual Studio 11– QuickLaunch

Narzędzia 3 dni, 5 godzin, 43 minuty temu pzielinski 197 rozwiń

W wielu publikacjach service locator podawany jest jako wzorzec projektowy, doskonale nadający się do implementacji inversion of control. W poście jednak chciałbym przedstawić drugą szkołę, która uważa, że ten wzorzec jest “brzydki” i powoduje ogromne zamieszanie. Przede wszystkim odpowiedzmy sobie kiedy używamy podejścia IoC? W aplikacjach tymczasowych? Prototypach? Raczej nie… Początkowy czas na napisanie aplikacji IoC może okazać się dłuższy a korzyści nadchodzą dopiero po kilku miesiącach implementa...

Dziel się z innymi:
Piotr Zieliński » Service Locator jako anti-pattern

Architektura 6 dni, 19 godzin, 17 minut temu pzielinski 208 rozwiń

Co poniższy kod zwróci na ekranie? Spodziewać się można 0,1,2. Jednak na ekranie ujrzymy 5,5,5. Dlaczego?

Tagi: C#, Lambda
Dziel się z innymi:
Piotr Zieliński » Wyrażenia lambda i niespodziewany rezultat

Inne 9 dni, 21 godzin, 30 minut temu pzielinski 217 rozwiń

Zamierzam napisać kilka krótkich postów o nowych funkcjonalnościach w Visual Studio 11. Na dobry początek zacznijmy po prostu od screenu: Co od razu rzuca się w oczy? Czarno białe ikony. Dla porównania zobaczymy jak wygląda “stary” Visual Studio: Na pierwszy rzut oka to poprzednia wersja wygląda dużo nowocześniej ze względu na kolorowe, bardziej 3d ikonki. Dlaczego Microsoft zdecydował się na taki krok? Z tego co wiem, doszli do wniosku, że środowisko programistyczne nie powinno być zabawką i nie m...

Tagi: C#, Visual Studio
Dziel się z innymi:
Piotr Zieliński » Visual Studio 11 – pierwsze spojrzenie

Narzędzia 11 dni, 2 godziny, 1 minutę temu pzielinski 224 rozwiń

W c# 5.0 dodano dwa nowe atrybuty: CallerMemberName oraz CallerFilePath. Można je stosować do domyślnych parametrów metod:staticprivatevoid Print([CallerMemberName]string methodName =null, [CallerFilePath]string fileName =null) { Console.WriteLine(methodName); Console.WriteLine(fileName); } Wywołanie powyższej metody bez podania argumentów spowoduje przekazaniem nazwy metody, która wywołała Print oraz ścieżki pliku w którym znajduje się ta metoda:Print(); Jeśli Print został wywołany w metodzie ...

Tagi: atrybuty, C#
Dziel się z innymi:
Piotr Zieliński » C# 5.0: Atrybuty CallerMemberName, CallerFilePath oraz implementacja interfejsu INotifyPropertyChanged

Inne 11 dni, 2 godziny, 1 minutę temu pzielinski 139 rozwiń

Często widzę następujący kod. Oczywiście jeśli mamy pewność, że zawsze jest klucz nie ma z tym problemu. Czasami jednak takiej pewności nie ma i należy zwrócić NULL albo stworzyć dany element w słowniku. Wtedy zaczynają się problemy bo najczęściej jest to dokonywane za pomocą:

Tagi: C#, data-access
Dziel się z innymi:
Piotr Zieliński » Code review: bezpieczny dostęp do danych

Inne 14 dni, 4 godziny, 9 minut temu pzielinski 183 rozwiń

Pytanie brzmi: czy metody statyczne są wydajniejsze niż ich “zwykłe” odpowiedniki (instance methods)? Odpowiedź brzmi tak, ponieważ:Wywołanie jakiejkolwiek niestatycznej metody na klasie powoduje przekazanie parametru “this” – a to wymaga dodatkowego czasu.Same wywołanie jest bardziej czasochłonne dla zwykłych metod. W klasach statycznych nie ma dziedziczenia i wirtualnych metod. W niestatycznych metodach, kompilator musi dokonać kilka  dodatkowych operacji. Każda metoda niestatyczna jest wywoływana za p...

Tagi: C#, static
Dziel się z innymi:
Piotr Zieliński » Statyczne metody – wydajność

Inne 16 dni, 20 godzin, 38 minut temu pzielinski 230 rozwiń

O wzorcu projektowym singleton napisałem już kiedyś sporawy post. Klasy statyczne są prostym mechanizmem i mogą przypominać singleton. Tak jak w singleton, w klasach statycznych mamy do dyspozycji wyłącznie jedną instancję obiektu. Również nie ma możliwości ręcznego stworzenia instancji obiektów. Czym się zatem te twory różnią? 1. Singleton może implementować interfejs lub dziedziczyć po bazowej klasie. Jest to poważna zaleta w stosunku do klasy statycznej. Dzięki temu można np.:class XnaRenderer: IRend...

Tagi: C#
Dziel się z innymi:
Piotr Zieliński » Singleton a klasy statyczne

Inne 19 dni, 4 godziny, 4 minuty temu pzielinski 225 rozwiń

Rozważmy następujący. Co jest największym problemem tego kodu? Wszystkie przykłady wymyślam na bieżąco dlatego oprócz głównego problemu, który chce zaprezentować w poście, istnieje kilka pobocznych.

Tagi: C#
Dziel się z innymi:
Piotr Zieliński » Code review: lista danych

Inne 21 dni, 1 godzinę, 57 minut temu pzielinski 267 rozwiń

W c# słowo kluczowe nie służy wyłącznie do alokacji zasobów. W klasach istnieje koncepcja wirtualnych metod, które deklaruje się za pomocą słowa virtual. Są to podstawy polimorfizmu więc w tym poście nie będę opisywał już słówka virtual a wyłącznie new, które używa się również w połączeniu z metodą. Metoda oznaczona new po prostu przykrywa metodę bazową. Najlepiej wyjaśnić to na przykładzie 2 klas:class Cat:Animal { publicvoid Print() { Console.WriteLine("Cat"); } } class Animal { pub...

Dziel się z innymi:
Piotr Zieliński » Method hiding w c# – kiedy używać?

Inne 24 dni, 11 godzin, 18 minut temu pzielinski 251 rozwiń

Immutable objects to obiekty w inżynierii oprogramowania, które pozostają niezmienne po ich inicjalizacji. Wszystkie typy numeryczne, struktury oraz inne value type są immutable. Istnieją również klasy, które zachowują się jak typy niezmienne. Spróbujmy opisać kilka ważnych cech tych obiektów, które mają dla nas specjalne znaczenie:Obiekty niezmienne (immutable) są thread-safe – przystosowane są do dostępu współbieżnego. Skoro obiekt już skonstruowany nie może zostać zmodyfikowany to nie musimy się kompl...

Dziel się z innymi:
Piotr Zieliński » Obiekty niezmienne – immutable objects

Inne 27 dni, 11 godzin, 4 minuty temu pzielinski 187 rozwiń

Dzisiaj pokażę, jak od strony programistycznej wygląda AppDomain. Zwykle tworzymy aplikację host, która trzyma referencje do kilku AppDomain. Stwórzmy najpierw aplikację konsolową wyświetlającą po prostu tekst:namespace ConsoleApplication3 { class Program { staticvoid Main(string[] args) { while (true) { Console.WriteLine(AppDomain.CurrentDomain.FriendlyName); System.Threading.Thread.Sleep(2000); } } }...

Tagi: AppDomain
Dziel się z innymi:
Piotr Zieliński » AppDomain–część II

Architektura 29 dni, 21 godzin, 4 minuty temu pzielinski 112 rozwiń

W .NET istnieje twór zwany AppDomain. W systemie operacyjnym mamy kilka podobnych pojęć takich jak proces czy wątek. AppDomain w dużej mierze przypomina proces – służy do izolowania aplikacji bezpośrednio niezwiązanych ze sobą. Dwa różne procesy mają przede wszystkim różną przestrzeń pamięciową. Adres zmiennej w procesie A, odnosi się już do innego obszaru w procesie B – alokacja zaczyna się w różnych miejscach.  Z tego względu uruchomienie nowego procesu jest czasochłonną operacją i wiąże się z alokacją...

Tagi: AppDomain
Dziel się z innymi:
Piotr Zieliński » Co to jest AppDomain?

Architektura 32 dni, 22 godziny, 21 minut temu pzielinski 236 rozwiń

.NET 4.5 przynosi wiele zmian. Szczególnie ciekawym jest nowe podejście do programowania asynchronicznego, znacząco ułatwiające prace programisty z callback’ami itp. W zasadzie nie ma już callback’ow – kod asynchroniczny niewiele różni się od synchronicznego. Zachęcam do przeczytania mojego nowego artykułu: http://msdn.microsoft.com/pl-pl/library/programowanie-asynchroniczne-w-net-4-5.aspxExplore posts in the same categories:C#, Wielowątkowość This entry was posted ...

Dziel się z innymi:
Piotr Zieliński » Programowanie asynchroniczne w .NET 4.5

Programowanie rozproszone 36 dni, 17 godzin, 45 minut temu pzielinski 285 rozwiń

Słowo var zostało wprowadzone w .NET 3.5, prawdopodobnie ze względu na LINQ i anonimowe typy. Jedni programiści za wszelką cenę unikają tego słowa kluczowego a drudzy zapomnieli o typach i zawsze korzystają var bo w końcu to nowy feature… Nawet Resharper sugeruje aby zawsze używać var ponieważ skraca to składnie. Istnieje też spora trzecia grupa do której m.in. ja należę i postaram się pokazać kilka przykładów. Moja zasada jest prosta – używam var tylko jeśli w momencie deklaracji można wywnioskować typ...

Tagi: C#, var
Dziel się z innymi:
Piotr Zieliński » Kiedy używam var?

Inne 38 dni, 6 godzin, 50 minut temu pzielinski 352 rozwiń

W kilku miejscach spotkałem się z błędną definicją CopyTo oraz Clone.  W przeciwieństwie do niektórych opinii, obydwie metody wykonują shallow copy. Jak wiemy w c# mamy reference oraz value types. Podczas płytkiego kopiowania, typy value po prostu klonowane są bit po bicie. W przypadku typów referencyjnych, wyłącznie adres jest kopiowany, nie wartość. Zatem po skopiowaniu typu referencyjnego będziemy mieli dwa wskaźniki, wskazujące na te same dane. Przykład:SampleClass[] array =new SampleClass[] {sampleC...

Tagi: array, C#
Dziel się z innymi:
Piotr Zieliński » Array.CopyTo vs. Array.Clone

Inne 39 dni, 23 godziny, 37 minut temu pzielinski 155 rozwiń

1 2 3 4 5... 11 12
Code of duty 2

Podsumowanie #5 - tydzień 2...

Kolejne podsumowanie tygodnia w polskiej blogosferze. Tym razem sporo wpisów o wzorcach projektowych i dobrych rozwiązaniach do stosowania w kodzie. Zapraszam do lektury.  czytaj więcej
2012-05-20

Najaktywniejsi

1

macko (32 502,49)

2

gordon_shumway (21 208,87)

3

http://pawlos.blo... (20 871,58)

4

paduda (20 280,32)

5

pzielinski (15 980,87)

6

Damian (9 051,08)

7

danielplawgo (7 235,99)

8

CaMeL (3 054,87)

9

http://jakub-flor... (3 049,65)

10

lukaszgasior (2 938,35)

11

arek (2 489,46)

12

mnikolajuk (2 428,92)

13

netmajor (2 157,79)

14

fones (2 090,35)

15

premium-hands-net (1 665,19)

16

poniat (1 580,2)

17

ada_man (1 530,6)

18

https://me.yahoo.... (1 499,21)

19

tmalesza (1 495,26)

20

lkurzyniec (1 474,29)