dotnetomaniak.pl - Najnowsze artykuły o .NET w dziale Sztuka programowania - Strona 67

Jeżeli szukasz dobrego frameworka do MVVM dla WinRT, to koniecznie zobacz nowy ciekawy framework -StyleMVVM.

Tagi: MVVM, Windows 8, WinRT
Źródło: www.karolszmaj.pl
Dziel się z innymi:
Powiew świeżości MVVM dla Windows 8 – StyleMVVM

Sztuka programowania 4309 dni, 3 godziny, 35 minut temu razor118 292 źrodło rozwiń

Czasami zachodzi potrzeba serializacji obiektów, które powinny mieć  maksymalnie jedną kopie w tym samym AppDomain. Klasycznym przykładem jest System.DBNull, którego deklaracja wygląda następująco:[SerializableAttribute] [ComVisibleAttribute(true)] publicsealedclass DBNull : ISerializable, IConvertible Załóżmy, że mamy klasę, w której jedna z właściwości ma wartość System.DBNull. Oczywiście podczas serializacji i potem deserializacji nie chcemy tworzyć nowej instancji DBNull – jest to sprzeczne z ...

Dziel się z innymi:
Piotr Zieliński  » Blog Archive   » Serializacja obiektów typu singleton\NULL object

Sztuka programowania 4309 dni, 3 godziny, 35 minut temu pzielinski 106 źrodło rozwiń

Załóżmy, że mamy następujący kod:[Serializable] class Person { publicstring Name { get; set; } } Atrybut Serializable mówi, że będzie wspierana serializacja za pomocą IFormatter (np. BinaryFormatter). Jeśli chcemy wspierać ten mechanizm, zawsze powinniśmy tworzyć jawnie backing-field. Kompilator w końcu może wygenerować tak naprawdę dowolną nazwę. Zajrzyjmy do Reflector, aby zobaczyć jak wygląda wewnętrzna struktura:   Wygenerowane pole to:[CompilerGenerated] privatestring

Tagi: serializacja
Dziel się z innymi:
Piotr Zieliński » Code Review: serializacja a właściwości

Sztuka programowania 4311 dni, 16 godzin, 38 minut temu pzielinski 147 źrodło rozwiń

Po odłożeniu kodu na weekend, jego przeglądzie i uwzględnieniu komentarzy, można uznać proces refaktoryzacji za zakończony. Pisząc „proces” mam tu na myśli wykonanie refaktoryzacji o ściśle określonym celu – w tym przypadku było to stworzenie mechanizmu importu, który zastąpi używany obecnie. Nie wchodziły zatem w ten proces...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Podsumowanie.

Sztuka programowania 4311 dni, 16 godzin, 38 minut temu PaSkol 84 źrodło rozwiń

W celu wykonania jakiegoś kodu za pomocą refleksji, należy najpierw zebrać informację o danym polu. Załóżmy, że mamy następującą klasę:class Sample { publicvoid PrintSomething() { Console.WriteLine("Something"); } } W celu wykonania metody za pomocą refleksji można:object sample =new Sample(); MethodInfo info=sample.GetType().GetMethod("PrintSomething"); info.Invoke(sample, null); Generalnie obiekty takie jak MemberInfo czy MethodInfo pożerają mnóstwo pamięci – są one dość ciężk...

Tagi: refleksja
Dziel się z innymi:
Piotr Zieliński » Reflection: optymalizacja MemberInfo

Sztuka programowania 4313 dni, 19 godzin, 31 minut temu pzielinski 127 źrodło rozwiń

Założę się, że wiele osób czytając ten tytuł puknie się w głowę. I owszem w wielu sytuacjach wzorce nie są niezbędne do tworzenia przejrzystych i dobrze rozwijalnych skryptów. Do czasu. Dokładnie do momentu gdy nasz skrypt zaczyna mieć więcej niż kilkadziesiąt linijek.

Dziel się z innymi:
Simple Solutions: Javascript a wzorce projektowe

GC nic nie wie o zasobach niezarządzanych. Nie wie ile pamięci one zajmują oraz oczywiście nie jest w stanie zwolnić takich zasobów. O zarządzaniu taką pamięcią pisałem już wiele razy. Opisywałem również zasadę działania GC. Zwykle jest on odpalany po przekroczeniu pewnego progu zużycia pamięci. Niestety, jak wspomniałem, GC nie wie nic o niezarządzanych zasobach. Co w przypadku gdy wrapper zużywa bardzo mało pamięci a zasoby niezarządzane w nim konsumują bardzo wiele pamięci? Dzięki metodom AddMemoryPre...

Dziel się z innymi:
Piotr Zieliński » Zasoby niezarządzane, optymalizacja GC

Sztuka programowania 4317 dni, 16 godzin, 51 minut temu pzielinski 139 źrodło rozwiń

Jak obiecałem – dziś uzupełnimy dotychczasowy zestaw testów o nowe testy. Co będziemy testować? Jeśli ktoś uważnie śledzi ten cykl zapewne oczekuje, że – zgodnie z wcześniejszymi zapowiedziami – przygotujemy test sprawdzający uruchamianie wszystkich metod biorących udział w przetwarzaniu pliku oraz dostosujemy stare testy sprawdzające powiadamianie o postępie przetwarzania. Tak – takie testy zostaną napisane. Ale najpierw utworzymy testy, których do tej pory nie było. Proszę zauważyć, że ...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 17.

Sztuka programowania 4320 dni, 3 godziny, 17 minut temu PaSkol 59 źrodło rozwiń

Ostatnią z czynności refaktoryzacyjnych będzie przystosowanie dotychczasowej klasy MethodObject do używania powstałych w trakcie refaktoryzacji klas. Jak można sprawdzić w części drugiej, klasa ta posiadała cztery publiczne metody: ImportCSV(), ImportTabSeparated(), ImportFixed(), ImportBinary(). Metody te były następnie wykorzystywane przez interfejs użytkownika do wykonywania odpowiednich importów. Te metody muszą zostać zachowane, zmieni się natomiast ich implementacja. Zmianie ulegnie też...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 19.

Sztuka programowania 4320 dni, 3 godziny, 17 minut temu PaSkol 35 źrodło rozwiń

W dotychczasowym procesie refaktoryzacji udało nam się stworzyć elastyczny mechanizm importu – uzyskaliśmy tym samym podstawową funkcjonalność w zadowalającej postaci. Pora zająć się pozostałymi operacjami, które są niezbędne, aby uzyskać kompletną, pierwotną funkcjonalność refaktoryzowanego kodu. Na implementację oczekują przecież: zdefiniowany na początku interfejs IFileSelector i jego pochodna IFilteredFileSelector. Konieczne jest też zaimplementowanie ...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 18.

Sztuka programowania 4321 dni, 10 godzin, 52 minuty temu PaSkol 43 źrodło rozwiń

Czasami zachodzi potrzeba wykonania krytycznego kodu, który zużywa dużo zasobów. Podobnie jak w CER, nie chcemy wykonywać kodu jeśli wiemy, że nie ma wystarczającej pamięci. W .NET istnieje klasa MemoryFailPoint, która potrafi z góry “zaalokować” określoną pamięć.publicsealedclass MemoryFailPoint : CriticalFinalizerObject, IDisposable { public MemoryFailPoint(Int32 sizeInMegabytes); ~MemoryFailPoint(); publicvoid Dispose(); } MemoryFailPoint sprawdzi czy jest dostępna pamięć. Jeśli jej nie...

Dziel się z innymi:
Piotr Zieliński » MemoryFailPoint: alokowanie dużej ilości pamięci

Sztuka programowania 4322 dni, 10 godzin, 50 minut temu pzielinski 103 źrodło rozwiń

Nadeszła pora, by doprowadzić do współpracy klas odczytujących pliki i klas wyodrębniających z nich dane. Aby ta współpraca była jednak w ogóle możliwa – klasa FileOfValuesReader musi zostać zmodyfikowana, albowiem musi być możliwe „wstrzyknięcie” do niej obiektu implementującego interfejs IValuesExtractor. W rezultacie konstruktor zyska jeszcze jeden, dodatkowy parametr, poprzez który będzie można przekazać odpowiedni interpreter danych. Ponieważ ów interpreter trafia od razu do klasy bazowej ...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 15.

Sztuka programowania 4322 dni, 10 godzin, 50 minut temu PaSkol 45 źrodło rozwiń

W tym wpisie zaprezentuję dwie klasy dziedziczące po FileOfValuesReader i realizujące odczyt z plików tekstowych oraz binarnych. Obie klasy będą współpracować z odpowiadającymi im klasami wyodrębniającymi wartości z odczytanej zawartości. A ponieważ dopełnią one całości mechanizmu importu, to przygotuję także odpowiednie testy, które pozwolą upewnić się, że mechanizm importu nadal działa tak samo. Jako pierwszą zaimplementuję ...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 16.

Sztuka programowania 4323 dni, 3 godziny, 46 minut temu PaSkol 37 źrodło rozwiń

Jedną z ciekawszych cech web developerki jest mnogość dostępnych na tym polu rozwiązań i technologii. Dlaczego uważam, że to dobrze? Poniekąd dlatego, że w ten sposób programista może przezwyciężyć spadek motywacji i nudę związaną z wykonywaniem kolejnego wielkiego projektu w młodym, dynamicznym zespole. Stwarza również pole do popisu i ciągłego rozwoju, pokazuje różne sposoby na zrobienie tego samego lepiej i szybciej. Niestety z punktu widzenia osób odpowiedzialnych za dostarczenie projektu klientowi ...

Tagi: rozważania
Dziel się z innymi:
Simple Solutions: Nowe technologie - tak czy nie?

Jednym z ostatnich rodzajów długów jakie chcę poruszyć to testy. Testy we wszelakiej postaci, od jednostkowych, przez integracyjne, specyfikacji, smoke, white i black box do obrzydliwych ręcznych. Brak testów to najgorsza rzecz jaką możemy zrobić. W każdej normalnej branży (a nie takiej, gdzie większość to pryszczaci kolesie z problemami interpersonalnymi ) czyli takiej o solidnych podstawach ukształtowanych przez lata praktyki, normą są testy. Budowlańcy robią testy wytrzymałości beton...

Źródło: www.benedykt.net
Dziel się z innymi:
Brak testów to brak pewności | @rek online | Arkadiusz Benedykt

Sztuka programowania 4324 dni, 13 godzin, 58 minut temu arek 158 źrodło rozwiń

W poprzedniej części uczyniliśmy spostrzeżenie, że z dotychczasowych klas można wyodrębnić niezależną funkcjonalność – interpretację odczytywanych danych. Obecnie zajmiemy się jej implementacją. Nie będzie ona specjalnie trudna, ponieważ większość kodu już istnieje – zawierają go metody Extract() klas potomnych klasy FileOfValuesReader. Przypomnijmy je sobie wszystkie...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 14.

Sztuka programowania 4325 dni, 1 godzinę, 16 minut temu PaSkol 36 źrodło rozwiń

Monolity – wielkie projekty składające się z setek klas ściśle powiązanych ze sobą. Czasem to nawet nie muszą być przesadnie wielkie te projekty jednak wystarczy, że klasy są ściśle powiązane ze sobą. Co to znaczy ściśle powiązane ze sobą? Jeśli w jednej klasie użyjemy słowa new, żeby stworzyć obiekt innej klasy to właśnie ściśle powiązaliśmy te dwie klasy. Jedna bez drugiej żyć nie może, nie da się jednej z nich przenieść do innej biblioteki bez odpowiednich referencji. Jeśli chcemy zlec...

Źródło: www.benedykt.net
Dziel się z innymi:
Monolity to też dług technologiczny | @rek online | Arkadiusz Benedykt

Sztuka programowania 4326 dni, 16 godzin, 19 minut temu arek 122 źrodło rozwiń

Na dzisiaj przygotowałem dwie proste klasy, w których pokażę, jak nagrywać i odtwarzać dźwięki w aplikacjach typu Metro. Musimy to zrobić trochę inaczej niż do tej pory, ponieważ skorzystamy z nowego API zawartego w pakiecie Windows.Storage. Zacznijmy od klasy odpowiedzialnej za nagrywanie...

Dziel się z innymi:
C# : Nagrywanie i odtwarzanie dźwięku w aplikacjach Metro

Sztuka programowania 4327 dni, 16 godzin, 18 minut temu bari 120 źrodło rozwiń

Przygotowane w poprzedniej części testy uwidoczniły pewne ułomności zaimplementowanych klas – chcąc przetestować funkcjonalność powiadamiania o postępie przetwarzania pliku, konieczne było wykonanie samego importu. To nasuwa wniosek, że powiadamianie o postępie zależy od samego procesu importu. Co więcej, w jednym z testów tej funkcjonalności nie udało się początkowo uzyskać pozytywnego wyniku. To nasuwa kolejny wniosek – powiadamianie o postępie zależy od konkretnego typu importu. To już bardzo daleko i...

Me z .NET tete-a-tete » Nadeszła pora na cykl publikacji: „Historia pewnej refaktoryzacji”. Część 13.

Sztuka programowania 4328 dni, 16 godzin, 48 minut temu PaSkol 37 źrodło rozwiń

W ostatnim poście pisałem jak prawidłowo wykonać finalizację obiektu jeśli mowa o zasobach niezarządzanych, których zwolnienie jest krytyczne. Dzisiaj o obiekcie, który jest bardzo często wykorzystywany w sytuacjach gdzie należy przechowywać wskaźnik do zasobów niezarządzanych. Zacznijmy od jego definicji:[SecurityPermissionAttribute(SecurityAction.InheritanceDemand, UnmanagedCode =true)] publicabstractclass SafeHandle : CriticalFinalizerObject, IDisposable Co to oznacza? Wszystkie rzeczy jakie daje n...

Dziel się z innymi:
Piotr Zieliński » Obiekt SafeHandle

Sztuka programowania 4328 dni, 16 godzin, 48 minut temu pzielinski 105 źrodło rozwiń

1 2... 65 66 67 68 69 70... 73 74

Najaktywniejsi w tym miesiącu