dotnetomaniak.pl - Najnowsze artykuły o .NET w dziale Inne - Strona 69

Aby pisać kod, który jest wydajny i optymalny należy dobrze zrozumieć jak działa Garbage Collector (GC). W dzisiejszym poście przedstawię ogólne zasady działania GC na przykładzie algorytmu mark and sweep. Zaznaczam, że implementacja w .NET różni się i jest dużo bardziej wyrafinowana – ale o tym w następnych postach. Chcę najpierw przedstawić algorytm mark and sweep ponieważ da to czytelnikowi ogólny obraz zagadnienia związanego ze zwalnianiem pamięci w językach zarządzanych. Garbage Collector oczywiści...

Dziel się z innymi:
Piotr Zieliński » Garbage Collector – część I (algorytm mark and sweep).

Inne 3305 dni, 11 godzin temu pzielinski 322 źrodło rozwiń

Co byście powiedzieli na taki kod?publicclass Person { publicstring FirstName; publicstring LastName; publicstring GetFullName() { returnstring.Format("{0} {1}", FirstName, LastName); } } Na pierwszy rzut oka może nic poważnego. Jednak jeśli chcemy pisać kod zgodny z praktykami C#, powinniśmy zwrócić uwagę na następujące kwestie:Enkapsulacja, FirstName,LastName powinni być ukryte i ewentualnie wyeksponowane za pomocą setterow\getterów.GetFullName jest dobrym sposobem dla Javy (a w...

Dziel się z innymi:
Piotr Zieliński » Code Review: pola w C#

Inne 3307 dni, 6 godzin, 16 minut temu pzielinski 381 źrodło rozwiń

Rozważmy następujący kod:IEnumerable

Tagi: Code review, Linq
Dziel się z innymi:
Piotr Zieliński » Code review: Pułapka z LINQ

Inne 3316 dni, 3 godziny, 12 minut temu pzielinski 451 źrodło rozwiń

W postach oznaczonych “Code review” zamierzam przedstawiam dobre i złe praktyki pisania kodu. Posty przeważnie będą składały się z fragmentu kodu i opisu co jest w nim źle. Dziś spójrzmy na:StreamReader streamReader =new StreamReader(File.Open(path, FileMode.Open)); string header = streamReader.ReadLine(); string dataPoints = streamReader.ReadLine(); string[] dataPointArray = dataPoints.Split(newchar[]{';’});streamReader.Close(); Co w tym jest jest nie tak? W przypadku gdy np. ReadLine wyrzuci wyjątek, ...

Tagi: Code review
Dziel się z innymi:
Piotr Zieliński » Code review: słowo kluczowe using

Inne 3320 dni, 8 minut temu pzielinski 408 źrodło rozwiń

Co raz więcej programistów interesują się językiem Ruby. Jest to wysokopoziomowy język dynamiczny. Dużą rolę odegrał framework Ruby on Rails, dzięki czemu język nabył swoją popularność. Ten artykuł pomoże początkującym (i nie tylko) programistom zapoznać się z tym językiem, który przy napisaniu stosownie małego kawałku kodu pozwala na zrealizowanie prostej funkcjonalności. W tym artykule dowiesz się o :instalacji środowiska, implementacji prostej aplikacji.

Tagi: ruby
Dziel się z innymi:
Ruby on Rails pod Windows

Inne 3321 dni, 41 minut temu dit2006 149 źrodło rozwiń

Czy na pewno code review to strata czasu? Cóż może być nudniejsze i bardziej kosztowne niż przeglądanie cudzego kodu źródłowego? Chyba już tylko poprawnianie w nim błędów. Jeszcze kilka lat temu koncepcja przeglądania mojego kodu przez kolegów z zespołu była dla mnie totalną abstrakcją. Aczkolwiek, z czasem zrozumiałem, że w tym szaleństwie jest metoda. W kilku punktach chciałbym przedstawić benefity, które może wprowadzić Code Review do Twojego ekosystemu projektowego drogi Czytelniku. Edukacja M...

Dziel się z innymi:
Code review, lubię to!

Inne 3330 dni, 14 godzin, 57 minut temu paduda 338 źrodło rozwiń

Klasa Barrier umożliwia synchronizacje kilku wątków. Mechanizm bardzo znany np. z Ady pozwala dopuścić wykonanie kodu wyłącznie jeśli inne wątki na to się zgadzają. Załóżmy, że mamy 4 wątki robiące równoległe jakieś obliczenia. Po ich zakończeniu chcemy scalić wynik ale musimy poczekać aż wszystkie zadania zostaną ukończone. W C# 4.0 można wykorzystać tzw. taski, ale w tym artykule skupimy się na Barrier, która służy to dużo bardziej skomplikowanych zadań. Przypuśćmy, że nasz algorytm składa się z kilku...

Tagi: Barrier
Dziel się z innymi:
Piotr Zieliński  » Rendezvous w C#–klasa Barrier

Inne 3331 dni, 13 godzin, 49 minut temu pzielinski 202 źrodło rozwiń

Macie czasem tak, że podczas długiej sesji z debuggerem, wiedząc, że jakiś breakpoint nie wskoczy prędko przełączacie się z VS aby później zorientować się, że breakpoint już dawno czekan na waszą reakcję a wy po prostu nie zauważyliście tego małego migoczącego znaku VS w pasku? O właśnie o ten mrygacz chodzi :) Jeśli tak to ten post jest dla was - jeśli nie poczytajcie jak wkurzyć kolegów :) Okazuje się, że VS prócz standardowych opcji, które możemy ustawić w Tools->Options posiada kilka dodatkowyc...

Dziel się z innymi:
Dźwiękowy brekpoint

Inne 3331 dni, 13 godzin, 49 minut temu macko 114 źrodło rozwiń

Na wstępie skrótowo wytłumaczę, co rozumiem pod pojęciami zawartymi w tytule. Programowanie imperatywne polega na tym, że kod programu składa się z instrukcji (czyli rozkazów). Najbardziej typowe instrukcje to przypisania, wywołania procedur / metod, instrukcje warunkowe czy pętle. W programowaniu imperatywnym zmieniający się stan programu jest czymś naturalnym, a niedeterministyczne działanie procedur i metod - czymś często występującym.     Zupełnie innym podejściem jest programowanie deklaratywne. W ...

Tagi:
Dziel się z innymi:
Kamil Durkiewicz: Programowanie deklaratywne vs programowanie imperatywne

Inne 3333 dni, 14 godzin, 42 minuty temu http://durkiewicz.blogspot.... 481 źrodło rozwiń

Wiele osób z pewnością kojarzy pliki PDB, przynajmniej z nazwy. Myślę, jednak, że w praktyce mało kto zdaje sobie sprawę co one zawierają i kiedy mogą się przydać programiście. W poście zatem chciałbym przybliżyć praktyczne korzyści z używania Program Database Files. Z pewnością PDB kojarzy się z debuggowaniem i niestety z czymś niepotrzebnym w środowisku produkcyjnym – co jak się okaże jest nieprawdą! Zacznijmy od wprowadzenia teoretycznego, PDB dla .NET  zawiera:Nazwy plików z kodem źródłowym.Nazwy lo...

Tagi: pdb
Dziel się z innymi:
Piotr Zieliński » Kiedy używać plików PDB?

Inne 3334 dni, 10 godzin, 4 minuty temu pzielinski 363 źrodło rozwiń

W C# 3.0 wprowadzono nowy typ inicjalizacji pól klas, przykład:class SampleClass { publicint X { get; set; } publicint Y { get; set; } } SampleClass sampleClass =null; try { sampleClass =new SampleClass {X =5, Y =10}; } catch (Exception) { } int y = sampleClass.Y; Przed c# 3.0 programiści zwykle używali następującej konstrukcji:SampleClass sampleClass =null; try { sampleClass=new SampleClass(); sampleClass.X =5; sampleClass.Y =10; } catch (Exception) { } int y = samp...

Dziel się z innymi:
Piotr Zieliński » Inicjalizacja właściwości obiektu

Inne 3337 dni, 3 godziny, 23 minuty temu pzielinski 242 źrodło rozwiń

Dzisiaj prosta i częsta sprawa – obsługa zdarzeń.  Zdefiniujmy fikcyjne zdarzenie:class SampleClass { publicevent EventHandler EventHappened; } Następnie mamy jakąś metodę, która po wykonaniu własnej logiki, wywołuje zdarzenie. Jak powinno to zostać prawidłowo wykonane? Zacznijmy od niepoprawnego podejścia:class SampleClass { publicevent EventHandler EventHappened; privatevoid Method() { EventHappened(this,new EventArgs()); } } Metoda spowoduje wyjątek jeśli żadne z...

Tagi: events
Dziel się z innymi:
Piotr Zieliński » Obsługa zdarzeń – dwa podejścia

Inne 3340 dni, 5 godzin temu pzielinski 322 źrodło rozwiń

autor: Nowy rok za nami, pora na mały noworoczny prezent. W mojej bibliotece znajduje się kilka książek, które zostały wybrane przez moją drugą połówkę jako „coś co zagraca mieszkanie w którym nie ma miejsca na moje książki” :) Dlatego też przez najbliższe kilka tygodni będę starał się oddać wszystkie te książki, które zostały wybrane/wskazane itp. itd.. Zasady ich oddania są banalnie proste...

Źródło: blog.gutek.pl
Dziel się z innymi:
SharePoint 2003/2007 – książki do oddania

Inne 3340 dni, 14 godzin, 7 minut temu macko 181 źrodło rozwiń

Chciałbyś przetestować Rails? Nie chcesz instalować u siebie całego środowiska, a może utworzyłeś pierwszą aplikację ‘Hello world’ w Rails nie nie wiesz gdzie ją przetestować?

Dziel się z innymi:
Testowy hosting  ROR « ksciana's Weblog

Inne 3340 dni, 14 godzin, 7 minut temu http://ksciana.wordpress.com/ 118 źrodło rozwiń

Używając LINQ należy pamiętać o takiej właściwości tego języka zapytań jak opóźnione wywoływanie (Diferred Execution). Polega to na tym, iż zapytanie jest wywoływanie dopiero wtedy, gdy jest to rzeczywiście potrzebne. Najczęściej dzieje się podczas wowoływania metody, która sprawdza całą kolekcje, którą przeszukujemy, takimi metodami są np. Count() ToList() Każda z tych metod, aby zwrócic wynik musi sprawdzić całą kolek...

Tagi: Linq
Dziel się z innymi:
LINQ i opóźnione wywołanie « Netmajor's Tech Blog

Inne 3342 dni, 10 godzin, 12 minut temu Paweł Łukasik 237 źrodło rozwiń

Na początku stwórzmy strukturę z konstruktorem przyjmującym dwa parametry:publicstruct SampleStruct { public SampleStruct(int x, int y) { _x = x; _y = y; } privateint _x, _y; } Czy powyższy kod jest prawidłowy? Tak, skompiluje się i będzie działał bez problemów. Zdefiniujmy więc domyślny konstruktor:publicstruct SampleStruct { public SampleStruct() { _x = _y =0; } public SampleStruct(int x, int y) { _x = x; _y = y; ...

Tagi: struktury
Dziel się z innymi:
Piotr Zieliński » Dlaczego struktury nie mogą posiadać konstruktora bez parametrów?

Inne 3344 dni, 12 minut temu pzielinski 216 źrodło rozwiń

Tak jak pisałem we wcześniejszych częściach ([RX 1], [RX 2], [RX 3], [RX 4]), Reactive Extensions dla .NET oferują mnóstwo pomocniczych rozszerzeń pozwalających na proste tworzenie obserwowalnych kolekcji. Przyjrzyjmy się tym najbardziej podstawowym. Najprymitywniejsze kolekcje obserwowalne Poniższa tabela przedstawia najprymitywniejsze (lub inaczej najprostsze) kolekcje obserwowalne. Dla każdego przykładu oprócz funkcji generującej obserwowalną kolekcję, podano również odpowiednik w postaci kolekcj...

Tagi: IObservable, Rx
Dziel się z innymi:
[RX 5] Tworzymy obserwowalne kolekcje w Reactive Extensions [PL] | Maciej Zbrzezny: Programowanie i Technologie

Inne 3345 dni, 8 godzin, 22 minuty temu Paweł Łukasik 101 źrodło rozwiń

W zeszłym poście pisałem o strukturach w c#. Jednym z ważnych efektów ubocznych jest boxing oraz unboxing. Jak wiemy z poprzedniego wpisu struktury przechowywane są na stosie a klasy na stercie. Boxing to niż innego jak wrapping struktury (lub jakiekolwiek innego typu wartościowego) w obiekt przechowywany na stercie. Na przykład:int value=0; object boxedValue=value; // boxing Zmienna value przechowywana jest na stosie, z kolei boxedValue na stercie (pamiętajmy o nagłówku oraz GC). Należy zwrócić szcz...

Tagi: boxing, unboxing
Dziel się z innymi:
Piotr Zieliński » Boxing i unboxing.

Inne 3346 dni, 9 godzin, 34 minuty temu pzielinski 218 źrodło rozwiń

Przeglądając kod wielu projektów, zarówno komercyjnych jak i open source, można spotkać całą masę konwencji nazewniczych stosowanych do klas i metod testujących. Dzisiaj przedstawię kilka moich zasad w tej materii wraz z uzasadnieniem. Wychodzę z założenia, że bardziej niż konwencja, standard czy "przyjęta dobra praktyka" liczy się czytelność pisanego kodu i łatwość powrotu do niego nawet po kilku miesiącach od napisania. Dlatego też w swoich projektach nie mam zdefiniowanej jedynego słusznego schematu n...

Dziel się z innymi:
Maciej Aniserowicz | [UT-6.1] Jak nazywam testy

Inne 3352 dni, 22 godziny, 48 minut temu Paweł Łukasik 235 źrodło rozwiń

Znajomość różnić między klasą a strukturą w c# jest bardzo ważna ze względu na kwestie wydajnościowe. Sposób wykorzystania może czasami wydawać się bardzo podobny, jednak to co dzieje się w tle jest kompletnie różne. W przypadku C++, struktury i klasy były bardzo podobne i reprezentowane były w pamięci w taki sam sposób. Różnica polegała na tym, że pola klas domyślnie były prywatne, a struktur publiczne. Przede wszystkim struktura jest wartością (value type) a klasa typem referencyjnym. Value Type jest ...

Tagi: klasy, struktury
Dziel się z innymi:
Piotr Zieliński » Klasy i struktury w C#

Inne 3353 dni, 22 godziny, 38 minut temu pzielinski 373 źrodło rozwiń

1 2... 67 68 69 70 71 72... 113 114

Najaktywniejsi

1
(32 895,6)
2
(32 816,53)
3
(27 178,29)
4
(21 178,88)
5
(20 336,33)
6
(13 018,14)
7
(10 531,65)
8
(9 775,28)
9
(8 728,31)
10
(6 837,96)
11
(6 214,22)
12
(5 393,84)
13
(4 157,41)
14
(4 026,73)
15
(3 908,07)
16
(3 599,64)
17
(3 448,35)
18
(3 318,39)
19
(3 224,66)
20
(3 221,45)