dotnetomaniak.pl

dotnetomaniak.pl - Artykuły z tagiem C#

Zanim przejdę do wyjaśniania po co został wprowadzony atrybut StructLayout, najpierw wyjaśnię jak pola w strukturach danych są rozmieszczane w pamięci. Weźmy na przykład taką strukturę:struct SampleStruct { publicbyte OneByte; publicint FourBytes; publicbyte OneByte1; } Ile pamięci powinno zostać zaalokowanej dla powyższej struktury? Może wydawać się, że 6 ponieważ Integer zajmuje 4 a Byte 1. Ze względu na optymalizacje nie jest to takie proste i oczywiste. Na moim komputerze jest to 12. Proc...

Tagi: C#, StructLayout
Dziel się z innymi:
Piotr Zieliński  » StructLayout – wprowadzenie

Inne 1774 dni, 6 godzin, 8 minut temu pzielinski 97 rozwiń

Tydzień temu w pierwszym poście poświęconym synchronizacji, przedstawiłem Wam trzy kluczowe zagadnienia związane z tym tematem. I choć lock, Monitor oraz Mutex pozwalają nam rozwiązać naprawdę dużą liczbą problemów dotyczących wielowątkowości, to warto wiedzieć, że jest to tylko część programistycznego orężu w jaki wyposażył nas Microsoft. Dziś chciałbym Wam przedstawić cztery kolejne klasy, które powinny uzupełnić temat rozpoczęty tydzień temu i zasadniczo wyczerpać kwestię synchronizacji. Bez zbędnego ...

Dziel się z innymi:
Wielowątkowość w C# - synchronizacja wątków cz. 2 (Semafor, AutoResetEvent i ManualResetEvent, Interlocked) - Alt Control Delete

Architektura 1774 dni, 6 godzin, 8 minut temu Yuras 228 rozwiń

Jak wiemy, każdy obiekt, zarówno reference jak i value, pochodzi pośrednio\bezpośrednio od klasy object. Nie chce omawiać szczegółów ale jedną z protected metod dostarczonych przez object jest właśnie MemberwiseClone. Do czego ona służy? W skrócie: do wykonania tzw. płytkiej kopii (shallow copy). MemberwiseClone kopiuje obiekt pole po polu. Niestety jest to płytka kopia więc jak jakiś obiekt zawiera referencje do innych obiektów wtedy jedynie adres zostanie sklonowany a nie całe drzewo obiektów. Z typam...

Dziel się z innymi:
Piotr Zieliński  » Metoda MemberwiseClone

Inne 1777 dni, 2 godziny, 15 minut temu pzielinski 101 rozwiń

W poprzednim poście podałem krótki fragment kodu, który można było zoptymalizować. Wspomniałem o parametrze StringComparison, który zwykle sprawia problemy w zrozumieniu. W dzisiejszym wpisie postaram się wyjaśnić różnicę między poszczególnymi porównaniami. Dla przypomnienia istnieją następujące wartości StringComparison: 1. Ordinal  – domyślna wartość. Znaki zamieniane są na wartości numeryczne  i wtedy porównywane. Zdecydowanie najszybsza metoda jeśli chodzi o wydajność. 2. OrdinalIgnoreCase – tak ja...

Tagi: C#
Dziel się z innymi:
Piotr Zieliński » Porównywanie string’ów część II – ustawienia regionalne, StringComparison

Inne 1780 dni, 5 godzin, 35 minut temu pzielinski 102 rozwiń

Kilka dni temu zainicjowałem cykl postów związanych z wielowątkowością. Rozpocząłem dość standardowo, bo od wyjaśnienia istoty tego zagadnienia i przedstawienia prostych wątków. Wiedza zawarta w tamtym wpisie, powinna w wielu przypadkach okazać się wystarczająca - szczególnie jeśli w naszej aplikacji mamy tylko jeden wątek dodatkowy, który stworzony jest tylko po to by odciążyć wątek główny. Takie proste rozwiązanie nie będzie jednak zawsze do końca wystarczające. Problemy pojawią się w sytuacji gdy wąt...

Tagi: C#, wątki
Dziel się z innymi:
Wielowątkowość w C# - synchronizacja wątków cz. 1 (lock, Monitor, Mutex) - Alt Control Delete

Architektura 1781 dni, 3 godziny, 25 minut temu Yuras 174 rozwiń

Kod:if(anyText.ToLower()=="tekst") { Console.WriteLine("Zmienne takie same"); } Kod ma na celu sprawdzenie czy jakaś zmienna jest równa danemu strumieniowi znaków. Nie chcemy brać pod uwagę wielkości liter więc dlatego używamy funkcji ToLower. Zatem if zwróci true gdy anyText jest równy “tekst” lub “TEKST” itp. Rozwiązanie ma jedną wadę – tworzony jest nowy, tymczasowy string po wywołaniu metody ToLower. W powyższym przykładzie będziemy mieli zatem 3 obiekty: anyText, obiekt dla “tekst” oraz obie...

Tagi: C#, Code review
Dziel się z innymi:
Piotr Zieliński » Code review: porównywanie string’ów

Inne 1783 dni, 5 godzin, 35 minut temu pzielinski 201 rozwiń

Implementując w danej klasie kilka interfejsów możemy spotkać się z sytuacją, w której różne interfejsy będą posiadały składowe o tych samych nazwach. A co jeżeli metoda jednego z interfejsów ma inne przeznaczenie niż metoda innego i ich kod powinien być różny? Rozwiązaniem tego problemu jest jawna implementacja interfejsów.

Tagi: .Net, C#, interface
Dziel się z innymi:
Jawna implementacja interfejsów jako rozwiązanie konfliktu nazw « Developer notes

Sztuka programowania 1783 dni, 17 godzin, 1 minutę temu psz750 100 rozwiń

Nie wiem jak Was, ale mnie osobiście irytuje zdarzenie w którym na górnej belce aplikacji pojawia się napis , a sam program wygląda jakby się gdzieś po drodze pogubił... Generalnie taki stan rzeczy może być spowodowany wieloma różnymi aspektami, choć zasadniczo w tym przypadku najczęściej można wskazać dwie przyczyny. Trzeba niestety tu otwarcie przyznać, że w głównej mierze są one spowodowane źle napisanym kodem przez programistów tychże aplikacji. Po pierwsze, w każdym programie może po prostu pójść c...

Tagi: C#, Thread
Dziel się z innymi:
Wielowątkowość w C# - wprowadzenie - Alt Control Delete

Architektura 1785 dni, 4 godziny, 22 minuty temu Yuras 115 rozwiń

Kolejna cześć artykułu z cyklu “Dobre i złe praktyki”: http://msdn.microsoft.com/pl-pl/library/dobre-i-zle-praktyki-w-c-sharp–czesc-4.aspx

Dziel się z innymi:
Piotr Zieliński  » Dobre i złe praktyki w C# – część IV (programowanie współbieżne)

Sztuka programowania 1786 dni, 4 godziny, 19 minut temu pzielinski 106 rozwiń

Klasa Parallel stanowi doskonałe dopełnienie do task’ów.  Dostarcza trzy statyczne metody:Invoke – współbieżne uruchomienie kilku zadań. For – współbieżna pętla FOR. ForEach – współbieżna pętla foreach. Klasa stanowi helper, ponieważ wszystkie powyższe operacje można wykonać za pomocą obiektów Task lub Thread. Implementacja jednak własnej pętli współbieżnej jest zawsze trudniejsza niż użycie po prostu gotowej metody. Zacznijmy od Invoke, przykład:staticvoid Main(string[] args) { Parallel.Invoke(Me...

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

Inne 1787 dni, 6 godzin, 53 minuty temu pzielinski 98 rozwiń

Kolejna część artykułu z cyklu dobre i złe praktyki. Zapraszam do lektury: http://msdn.microsoft.com/pl-pl/library/dobre-i-zle-praktyki-w-c-sharp–czesc-3.aspx

Tagi: C#
Dziel się z innymi:
Piotr Zieliński » Dobre i złe praktyki w C# – część III (programowanie współbieżne)

Sztuka programowania 1787 dni, 6 godzin, 53 minuty temu pzielinski 170 rozwiń

W tym wpisie zajmę się omówieniem polecenia yield, udostępnionego w wersji 2.0 języka C#. Do czego służy ta instrukcja? Dzięki niej możemy tworzyć tzw. leniwe kolekcje, do których poszczególne elementy dodawane są dopiero w momencie zgłoszenia na nie zapotrzebowania. Żeby zaprezentować działanie polecenia yield, najpierw zobaczmy standardowy sposób tworzenia kolekcji.

Tagi: .Net, C#, yield
Dziel się z innymi:
Instrukcja yield return – tworzenie leniwych kolekcji danych « Developer notes

Inne 1790 dni, 18 godzin, 27 minut temu psz750 349 rozwiń

Od kilku dni można rejestrować się na darmowe egzaminy z Visual Studio 2012. Oczywiście są to egzaminy w wersji beta. Nie zmienia to jednak faktu, że w przypadku ich zdania otrzymamy pełnoprawny certyfikat. Można wybierać wśród następujących egzaminów....

Dziel się z innymi:
Darmowe certyfikaty Microsoftu

Sztuka programowania 1794 dni, 6 godzin, 22 minuty temu http://janosz.myopenid.com/ 894 rozwiń

Lock free data structures are very handy for concurrent programs especially that the number of cores increases. The benefits of such data structures is that they never acquire a lock, instead they do a form of a spin lock, where a local copy of the data must be stored and exchanged or updated by an processors atomic operation (like "compare and swap" or "fetch and add") only when the global value and the local copy match, otherwise we repeat the whole procedure. Almost every lock free data structure foll...

Tagi: C#
Dziel się z innymi:
[EN] Lock Free Work Stealing Queue | Passion of Programming in .NET

Inne 1794 dni, 6 godzin, 22 minuty temu http://badamczewski.blogspo... 69 rozwiń

W ostatnim poście napisałem kiedy warto korzystać z strong-name. Jeśli ktoś uważnie prześledził screen’y dołączone do postu, być może dostrzegł, że jest tam opcja taka jak “Delayed Signing”. Do czego to służy? Sprawa jest bardzo prosta. Delayed signing po prostu nie używa klucza prywatnego. Taka biblioteka nie zawiera więc poprawnego podpisu cyfrowego a w miejsce jego zawiera same zera. Klucz publiczny z kolei jest wstawiany do biblioteki z tym, że nie jest liczony jej hash. Integralność zatem jest nie...

Dziel się z innymi:
Piotr Zieliński » Czym jest “Delayed signing”?

Inne 1794 dni, 20 godzin, 40 minut temu pzielinski 125 rozwiń

Niniejsze rozważania zacznę od następującej anegdoty, która doskonale oddaje ich sedno. Pewna mała dziewczynka przyglądała się mamie przygotowującej pieczeń: - Mamo, dlaczego gdy robisz pieczeń, to zawsze odcinasz końcówki mięsa i wkładasz je po bokach brytfanny? - Bo tak się piecze kochanie. - Ale dlaczego tak się piecze? - Końcówki obcina się, aby mięso lepiej się upiekło. - Mamo, ale przecież i bez tego mięso by się upiekło. - Córeczko, twoja babcia tak piekła, ciocia tak piecze i ...

Źródło: paskol.robi.to
Dziel się z innymi:
Me z .NET tete-a-tete » Zawsze jest warto poddać ocenie, co jest konwencją co … przyzwyczajeniem

Sztuka programowania 1795 dni, 12 godzin, 49 minut temu PaSkol 162 rozwiń

Zapewne każdy zna podstawowe gesty ekranów dotykowych. Wiemy też, że każdy telefon z Windows Phone 7 musi spełniać kilka podstawowych wymagań w tej dziedzinie (np. obsługa co najmniej 4 punktów dotyku). Co więcej, w SDK (dokładnie w XNA Framework) znajdziemy wbudowana obsługę pewnych gestów (np. Tap, FreeDrag, DoubleTap, Vertical/HorizontalDrag, Pinch itd). Ale jeśli to dla nas za mało to zakłwsze możemy “zejść” na niższy poziom API i tworzyć własne gesty.

WP XNA 8: Większa kontrola nad gestami (Raw gestures) | Wojciech Poniatowski [PL]

Mobile development 1796 dni, 13 godzin, 24 minuty temu poniat 45 rozwiń

Windows Phone jako jedyna platforma umożliwia tworzenie aplikacji z tzw. Trial‘em. Wiem, ktoś może powiedzieć, że przecież w AppStore czy Android Market też są aplikacje płatne i darmowe. Czym więc różni się Windows Phone? Tym, że możemy stworzyć jedną aplikację, która będzie jednocześnie wersją Trial i pełną, a Windows Phone Marketplace automatycznie zadba o procedurę kupna i podniesienia wersji z darmowej na pełną. W tym poście opiszę moje podejście do tego tematu.

WP XNA 13: Trial | Wojciech Poniatowski [PL]

Mobile development 1796 dni, 13 godzin, 24 minuty temu poniat 71 rozwiń

W dzisiejszym temacie poruszę pewien problem na jaki można natknąć się podczas używania kolekcji obiektów typu wartościowego. Aby pokazać o co dokładnie chodzi zacznijmy od zdefiniowania przykładowej klasy opisującej prostokąt.

Tagi: .Net, C#, indeksator
Dziel się z innymi:
Indeksatory a kolekcje obiektów typu wartościowego « Developer notes

Sztuka programowania 1797 dni, 23 godziny, 27 minut temu psz750 311 rozwiń

Dziś podstawy języka c#. Wszyscy znają modyfikatory public, protected, private i chętnie z nich korzystają. Modyfikator protected internal jest zdecydowanie mniej popularny a scenariusze użycia jeszcze rzadziej są prawidłowo identyfikowane. Jak sama nazwa mówi protected internal składa się z dwóch poziomów dostępności. W obrębie tego samego assembly zachowuje się jak czysty internal i mamy dostęp do pola tak jakby było one public. Załóżmy, że projekt składa się z dwóch bibliotek. W bibliotece numer A d...

Dziel się z innymi:
Piotr Zieliński  » Modyfikator protected internal

Sztuka programowania 1801 dni, 16 godzin, 14 minut temu pzielinski 218 rozwiń

1 2... 34 35 36 37 38 39... 60 61
Szkolenia SecurITum

wrzesień

14.
devConf
Kraków
20.

październik

Zobacz wszystkie

Najaktywniejsi

1

macko (32 816,53)

2

http://pawlos.blo... (31 664,47)

3

pzielinski (27 178,29)

4

gordon_shumway (21 178,87)

5

paduda (20 336,33)

6

psz750 (13 018,14)

7

rroszczyk (10 386,25)

8

Damian (9 096,1)

9

danielplawgo (7 235,99)

10

arek (6 807,95)

11

burczu (6 214,22)

12

PaSkol (5 393,84)

13

lukaszgasior (4 097,38)

14

jj09 (3 643,06)

15

jedmac (3 318,39)

16

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

17

spetz (3 148,28)

18

CaMeL (2 954,87)

19

lkurzyniec (2 669,92)

20

mnikolajuk (2 596,93)