Strona głównaUżytkownik

pzielinski | użytkownik

pzielinski
pzielinski
27 178,29
4089 dni, 9 godzin, 56 minut temu
21 lutego, 2010
dotnetomaniak.pl

Zachęcam do kolejnego artykułu, tym razem o wzorcu MVVM: http://msdn.microsoft.com/pl-pl/library/wprowadzenie-do-wzorca-projektowego-model-view-viewmodel-na-przykladzie-aplikacji-wpf.aspxExplore posts in the same categories:Patterns & Practices, WPF

Tagi: MVVM
Dziel się z innymi:
Piotr Zieliński » Artykuł: Wprowadzenie do wzorca projektowego Model-View-ViewModel na przykładzie aplikacji WPF

Architektura 4668 dni, 18 godzin, 52 minuty temu pzielinski 920 źrodło rozwiń

W Visual Studio bardzo łatwo tworzyć Splash Screen- czyli okno powitalne, wyświetlające się w momencie ładowania aplikacji. Każda z większych aplikacji posiada taki gadget (Visual Studio, Office itp.). Zamiast wyświetlać pusty ekran, dużo lepszym rozwiązaniem jest wyświetlenie SplashScreen’u z logiem firmy\aplikacji. W VS można tego dokonać za pomocą kilku kliknięć:Dodajemy obrazek do solucji (Add->Add Existing Item).W oknie właściwości wybieramy BuildAction –> Splash Screen.Gotowe! Można uruchomić aplik...

Tagi: splashscreen
Dziel się z innymi:
Piotr Zieliński » SplashScreen

Windows 4670 dni, 19 godzin, 1 minutę temu pzielinski 291 ź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 4673 dni, 13 godzin, 11 minut temu pzielinski 452 ź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 4677 dni, 10 godzin, 7 minut temu pzielinski 408 źrodło rozwiń

Nieprawidłowa obsługa wyjątków może przynieść więcej problemów niż pożytku.  O obsłudze błędów można byłoby napisać artykuł, jednak w poście chciałbym skupić się wyłącznie na kilku aspektach. 1. Pierwszym problemem jest fakt, że część programistów używa wyjątków do sytuacji po prostu niewyjątkowych. Jak sama nazwa mówi, wyjątek powinien być zastosowany gdzie może zdarzyć się coś niespodziewanego. Spójrzmy więc na poniższy fragment:int number; try { number =int.Parse(text); } catch { numbe...

Dziel się z innymi:
Piotr Zieliński » Obsługa wyjątków–kilka najczęściej popełnianych błędów

Architektura 4679 dni, 21 godzin, 55 minut temu pzielinski 462 źrodło rozwiń

Zapraszam do lektury: http://msdn.microsoft.com/pl-pl/library/prism–nawigacja-na-podstawie-zdefiniowanych-stanow.aspx

Tagi: Prism
Dziel się z innymi:
Piotr Zieliński » Artykuł: Prism – nawigacja na podstawie zdefiniowanych stanów

Narzędzia 4683 dni, 1 godzinę, 40 minut temu pzielinski 105 źrodło rozwiń

Zapraszam do poczytania o komendach i zdarzeniach dostarczonych przez framework PRISM: http://msdn.microsoft.com/pl-pl/library/zdarzenia-i-komendy-w-prism

Tagi: Prism
Dziel się z innymi:
Piotr Zieliński » Artykuł: Prism – Zdarzenia i komendy

Windows 4686 dni, 1 godzinę, 39 minut temu pzielinski 150 ź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 4688 dni, 23 godziny, 47 minut temu pzielinski 202 ź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 4691 dni, 20 godzin, 2 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 4694 dni, 13 godzin, 21 minut 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 4697 dni, 14 godzin, 58 minut temu pzielinski 324 ź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 4701 dni, 10 godzin, 10 minut temu pzielinski 216 ź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 4703 dni, 19 godzin, 32 minuty temu pzielinski 218 ź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 4711 dni, 8 godzin, 37 minut temu pzielinski 373 źrodło rozwiń

W dzisiejszym poście kilka słów i imporcie implementacji. W poprzednich postach, pokazałem jak dokonywać prostych importów. Dzisiaj trochę więcej szczegółów. Dla przypomnienia, aby zaimportować (wstrzyknąć) implementację, w najprostszym przypadku używamy po prostu atrybutu Import:publicclass SampleViewModel { //... [Import] public IMessageBoxService MessageBoxService{get;set;} } Powyższy przykład reprezentuje wstrzyknięcie właściwości. W podobny sposób można wstrzykiwać parametry dla ko...

Tagi: MEF
Dziel się z innymi:
Piotr Zieliński » MEF: import, część III

Inne 4712 dni, 18 godzin, 39 minut temu pzielinski 102 źrodło rozwiń

W ostatnim poście przedstawiłem MEF wraz z prostym przykładem. Dzisiaj przyjrzymy się dokładniej sposobom eksportu. Znamy już podstawowy sposób eksportu klasy:[Export(typeof(IMessageBoxService))] publicclass WpfMessageBoxService:IMessageBoxService { } Oprócz przekazania typu, można także użyć zwykłego string’a. Ze względu jednak na łatwość popełnienia literówki lepszym sposobem jest użycie typeof. Oprócz klas można również eksportować właściwości np.:publicclass Order { [Export("OrderValue")] ...

Tagi: MEF
Dziel się z innymi:
Piotr Zieliński » MEF: eksport, część II

Narzędzia 4718 dni, 19 godzin, 27 minut temu pzielinski 122 źrodło rozwiń

MEF jest kolejnym frameworkiem umożliwiającym tworzenie rozszerzalnych aplikacji. Pomijając marketing serwowany na różnych stronach, jest to po prostu biblioteka umożliwiająca dependency injection. W wersji .NET 4.0 została zintegrowana w .NET Framework i nie musi być instalowana osobno. Na oficjalnej stronie można sporo poczytać o budowie MEF’a jednak w poście chciałbym ograniczyć to do minimum ponieważ dla mnie osobiście, zbyt dokładne intro do tematu po prostu zniechęca mnie do dalszego czytania. Zac...

Tagi: MEF
Dziel się z innymi:
Piotr Zieliński » Managed Extensibility Framework część I

Architektura 4718 dni, 19 godzin, 27 minut temu pzielinski 207 źrodło rozwiń

Spóźniona trochę porada jak wdrażać projekty Azure za pomocą Web Deploy: http://msdn.microsoft.com/pl-pl/library/szybka-aktualizacja-projektu-azure-za-pomoca-web-deploy.aspx

Tagi: Azure
Dziel się z innymi:
Piotr Zieliński » Szybka aktualizacja projektu Azure za pomocą Web Deploy

Inne 4721 dni, 18 godzin, 19 minut temu pzielinski 40 źrodło rozwiń

Od dwóch tygodni pracuję  nad projektem open-source przeznaczonym dla programistów zarówno tych początkujących jak i zaawansowanych. Z pewnością wielu z Was kojarzy projekt Robocode. Robocode umożliwia pisanie algorytmów dla czołgów, które następnie mogą stoczyć bitwę. Zadaniem programistów jest napisanie jak najlepszych algorytmów. Mój projekt przeznaczony jest wyłącznie dla programistów .NET i został oparty na XNA, a co za tym idzie, całość będzie się działa w świecie trójwymiarowym. Kilka ważnych za...

Tagi: nauka
Dziel się z innymi:
Piotr Zieliński » think.Net: Platforma do nauki programowania i algorytmów AI

Inne 4725 dni, 2 godziny, 1 minutę temu pzielinski 305 źrodło rozwiń

Wbudowany mechanizm optymalizacji może czasami przynieść zaskakujące wyniki. Rozważmy poniższy fragment kodu:string var1 ="text"; string var2 ="text"; bool condition =object.ReferenceEquals(var1, var2); Wydawałoby się, że var1 i var2 stanowią dwie osobne referencje. Po uruchomieniu kodu przekonamy się jednak, że zmienna condition będzie miała wartość true. Spowodowane jest to wykonaną optymalizacją, polegającą na tym, że .NET przechowuje zbiór użytych w programie napisów. Deklarując  zmienną przec...

Dziel się z innymi:
Piotr Zieliński  » Blog Archive » Optymalizacja klasy String

Inne 4728 dni, 20 godzin, 10 minut temu pzielinski 252 źrodło rozwiń

1 2... 9 10 11 12 13 14... 19 20