If you have read about the new features in 4.0 then probably you stumbled on a SpinWait structure and a MSDN article and the example code it provides. I'm going to show you what I think it's wrong with it.
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...
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 ...
Architektura 3850 dni, 3 godziny, 8 minut temu 322 źrodło rozwiń
Pisane przez nas "biblioteki wielokrotnego użytku" mogą (a nawet: powinny być?) konfigurowalne. Konfiguracja musi być oczywiście rozprowadzana wraz z aplikacją korzystającą z takich bibliotek, więc obowiązkiem programisty aplikacji jest dołączenie do *config odpowiednich wpisów.
Od wersji SQL Server 2005 w języku T-SQL dostępne jest polecenie output. Możemy dołączyć je do instrukcji insert, update, delete lub merge w celu uzyskania informacji o rekordach przetworzonych w wyniku ich działania. Informacje te udostępniane są przez dwa zbiory danych: inserted oraz deleted – ich struktura odpowiada tabeli, na której wykonywana jest dana operacja.
Bazy danych i XML 3852 dni, 23 godziny, 15 minut temu 106 źrodło rozwiń
Powiedzmy że chcemy przechować następujące informacje o użytkowniku:imięnazwiskodata ostatniej wizytywiekstatus członkostwa Na początek utwórzmy sobie nowy pusty projekt: Aby skorzystać z dobrodziejstw personalizacji należy wykonać kilka zmian w pliku Web.config W sekcji
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...
W WinForms w kilku prostych krokach można dodać kolekcję obiektów, tak aby DataGridView wygenerował za nas kolumny odpowiedniego typu i z odpowiednim nagłówkiem. W całości wykonuje to poniższa funkcja Init(). Jest ona wywoływana z konstruktora świeżo dodanej formatki Form1, która zawiera tylko dataGridView1.
Opublikowano Bardzo ciekawy wywiad z jednym z najbardziej zasłużonych dla środowiska .net-owego człowieka – z Andersem Hejlsberg-iem. To w dużej mierze dzięki niemu c# i .net jest tam gdzie dzisiaj jest.
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...
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...
Architektura 3857 dni, 25 minut temu 329 źrodło 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...
Dziś przytrafiła mi się bardzo nie miła niespodzianka podczas pracy. Kiedy na zakończenie dnia chciałem pchnąć zmiany do tfs za pomocą komendy git tfs rcheckin po uprzednim ściągnięciu wszystkiego za pomocą git tfs pull i rebase, nagle z niewiadomych przyczyn rcheckin zwrócił mi kod błędu 1 i wszedł w interaktywny rebase. Za nic nie wiedziałem co jest nie tak – brak też informacji o jaki pliki chodzi (albo ja ślepy tego nie zauważyłem). Tak czy siak, skończyło się na tym, że za pomocą: git tfs ch...
Tematyka uruchamiania i debugowania aplikacji Windows 8 na zdalnym urządzeniu nie jest nowa. Niemniej jednak postanowiłem zrobić małe podsumowanie na ten temat przy okazji ukazania się finalnej wersji Windows 8. How to Create Windows 8 Bootable USB Device from ISO Image using WinUSB Maker. Mając bootowalne USB, ustawiamy w BIOS-ie kolejność bootowania, tak by pierwszym urządzeniem był nasz pendrive (przez USB podłączamy wcześniej klawiaturę). Minimalna rozdzielczość dla aplikacji Metro w Windows 8 to ...
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.
Sztuka programowania 3859 dni, 14 godzin, 1 minutę temu 101 źrodło rozwiń
Lematyzacja - pojęcie to a oznacza sprowadzenie grupy wyrazów stanowiących odmianę danego zwrotu do wspólnej postaci, umożliwiającej traktowanie ich wszystkich jako te samo słowo. W artykule omówię sposoby lematyzacji słów z języka angielskiego oraz przedstawię przykładową implementację algorytmu.
Sztuka programowania 3860 dni, 16 godzin temu 326 źrodło rozwiń
Od jakiegoś czasu dostępny jest dokument opublikowany przez Microsoft Patterns & Practices nad którym pracowała cała rzesza community w tym i nasz Szymon Pobiega – wielkie więc gratulacje! :) może ja ślepy albo głuchy ale dowiedziałem się o tym dopiero teraz :) Tak czy siak, cały dokument jest dostępny niestety jedynie w formacie stron HTML na stronach MSDN – nie ma żadnego docx, pdf czy innego formatu o ile mi wiadomo.
Architektura 3860 dni, 16 godzin temu 105 źrodło rozwiń
Stop me if you know this one. You find a library/framework that does something useful to you. You start using it and then realise it doesn’t work the way you want it in certain scenario or has a missing feature. What do you do then?Abandon the library and look for alternative that is more “feature rich”? Ask the author to support your scenario/submit a pull request with the feature? Those two, from my experience, a...
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...
Architektura 3861 dni, 1 godzinę, 22 minuty temu 118 źrodło 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
Sztuka programowania 3862 dni, 1 godzinę, 19 minut temu 111 źrodło rozwiń