dotnetomaniak.pl

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

W poprzednim wpisie opisałem extension methods, dzisiaj czas na kolejny element moim zdaniem bardzo ważny do zrozumienia działania linq mianowicie słowo kluczowe yield. Dla przypomnienia Linq jest połączeniem 5 elementów:extension methodsyieldFunc, Predicate, Actionwyrażenia lambdaIQueryable i Expression Trees Zasadę działania słowa kluczowego yield najlepiej zobrazuje przykład. Załóżmy, że mamy metodę, która generuje ...

Tagi: .Net, C# .NET, Linq
Źródło: rafal-haly.pl
Dziel się z innymi:
Linq inside (yield) » Rafał Hały

Sztuka programowania 1369 dni, 14 godzin, 1 minutę temu graf85 160 rozwiń

W zdecydowanej większości przypadków jestem przeciwnikiem singleton’a i uważam to za anty-wzorzec. Dużo lepiej użyć IoC i przekazywać wszędzie w konstruktorach tą samą instancję. Istnieją jednak przypadki, w których użycie singleton’a nie jest brzydkie. Ostatnio miałem klasę, która potrzebowała pewnych danych – kolekcję prostych struktur. Każda struktura zawiera string i pole bool. Ze względu, że ta kolekcja musi być wykorzystana w kilku klasach, zdecydowałem się na przeniesienie jej do osobnej klasy (s...

Tagi: Singleton
Dziel się z innymi:
Piotr Zieliński » Singleton oraz WeakReference

Sztuka programowania 1369 dni, 14 godzin, 1 minutę temu pzielinski 237 rozwiń

Od ponad 3 lat używam TDD z lepszymi i gorszymi wynikami, zawsze koniec końców okazuje się, że kod napisany w TDD (nie TAD czyli nie dopisując testy post factum ale w prawdziwym TDD czyli pisząc testy NAJPIERW) sprawia najmniej problemów i jest najłatwiejszy do utrzymania i do modyfikacji. Czyli wydaje się, że TDD to świetne narzędzie, dlaczego zatem tak mało osób stosuję tą metodykę? Poniżej postaram się zebrać co popularniejsze wymówki. Jeśli macie swoje to proszę dopisywać. 1) Pisanie ...

Tagi: TDD, wymówki
Źródło: www.benedykt.net
Dziel się z innymi:
popularne wymówki aby nie używać TDD czyli obalamy mity | arek online

Sztuka programowania 1369 dni, 14 godzin, 1 minutę temu arek 322 rozwiń

Dzisiejszy wpis dotyczy wszystkich klas, jednak zostanie on zaprezentowany na przykładzie ViewModel znanego z MVVM. W moim projekcie używam MVVM i dlatego jest to dla mnie naturalne. W poście zaprezentuje bardzo sztuczne przykłady, dlatego proszę nie skupiać się na nazewnictwie czy na zaprezentowanej funkcjonalności. Przedstawiony problem jest jednak bardzo częsty w realnych projektach i sam mam\miałem  z nim do czynienia w codziennej pracy. Powiedzmy, że napisaliśmy ViewModel prezentujący jakąś część ...

Tagi: IoC
Dziel się z innymi:
Piotr Zieliński » Code Review: IoC oraz zbyt wiele parametrów w konstruktorze

Sztuka programowania 1371 dni, 9 godzin, 13 minut temu pzielinski 275 rozwiń

sie10Kategorie: .Net, C# przez graf Blogowania chciałem rozpocząć od cyklu wpisów o Linq. Każdy dobry programista C# powinien umieć się posługiwać Linq, nie każdy niestety wie jak to właściwie działa. Linq wprowadza wspólny interfejs do pracy z kolekcjami niezależnie od źródła danych. Linq jest połączeniem 4 elementów:extension methodsyieldFunc, Predicate, Actionwyrażenia lambda W tym poście omówię extension methods czyli metody rozszerzające. Extension methods jak sama nazwa wskazuje ...

Tagi: C#, Linq
Źródło: rafal-haly.pl
Dziel się z innymi:
Linq inside (Extension methods) » Rafał Hały

Sztuka programowania 1371 dni, 9 godzin, 13 minut temu graf85 132 rozwiń

Dzisiaj będzie gadka motywacyjna o pisaniu testów więc jeśli jeszcze nie piszesz, może to Ciebie w końcu przekona. We wpisie Testowanie własnego ControllerFactory w MVC pisałem jak to zmarnowałem 6h na napisanie praktycznie jednego testu do kawałka kodu, który można napisać w 15 minut i przez dodatkowe 15 minut prze-klikać w kilku różnych przypadkach. Gdzie tu logika, gdzie tu sens. Pisząc CustomControllerFactory nie pisze się go z byle powodu, pisze się, ponieważ są potrzebne bardzo spec...

Tagi: TDD
Źródło: www.benedykt.net
Dziel się z innymi:
Dlaczego warto pisać testy jednostkowe | arek online | Arkadiusz Benedykt

Sztuka programowania 1373 dni, 13 godzin, 10 minut temu arek 169 rozwiń

Pierwszym etapem przy wdrażaniu się w nowy projekt jest poznanie jego funkcjonalności. Nie będziemy w stanie zrozumieć kodu, nie wiedząc do czego dana aplikacja służy. Jeżeli nieuchronnie zbliża się deadline i nie możemy poznać projektu w całości, skupmy się na jednej funkcjonalności. Ludzie, jakkolwiek nie pisaliby kiepsko, to zwykli pisać konwencyjnie. To znaczy, że opanowanie jednego modułu, otworzy nam drzwi do zrozumienia kolejnych modułów. Wyjaśnijmy to na przykładzie systemu TravelCRM, który pr...

Źródło: tuxedodevs.net
Dziel się z innymi:
Sztuka tranzycji, czyli jak skutecznie wskoczyć w istniejący projekt | Tuxedodevs.net

Sztuka programowania 1374 dni, 12 godzin, 7 minut temu tuxedoDEVS 216 rozwiń

Często można usłyszeć, że przypisania są zawsze bezpieczne w wielowątkowości i powinniśmy martwić się np. inkrementacją. Jest to prawda dla Int32 ale dla long już nie zawsze. Przykład:internalclass Program { privatestaticlong _x =0; privatestaticvoid Main(string[] args) { Task.Factory.StartNew(Task1); Task.Factory.StartNew(Task2); Thread.Sleep(5000); } privatestaticvoid Task2() { while (true) { Console.WriteLine(_x); } } privat...

Dziel się z innymi:
Piotr Zieliński » Code review: synchronizacja danych, przypisanie

Sztuka programowania 1374 dni, 12 godzin, 7 minut temu pzielinski 135 rozwiń

Odkrywam kawałek tajemnicy dla osób, które zamierzają tworzyć strony internetowe używane przez tysiące…. jednym z wąskich gardeł jest Baza Danych… sic! Nie będę się tu wdawał w kwestie budowania architektury, dobrej I złej. Bardziej chciałbym naświetlić pewien problem I możliwe rozwiązanie. Bazy danych w .NET Framework w większości (zakładam, że 99% przypadków), są obsługiwane przez mechanizm ADO.NET, a ten bazuje na ConnectionString do źródła danych, który jest zdefiniowany według wzoru zgodnego z bazą...

Źródło: marcinborecki.pl
Dziel się z innymi:
Entity Framework i wstrzykiwanie otwartego połączenia–czyli wyjaśniamy czym jest Connection Polling I jak sobie z nim radzić | Marcin Borecki - Making a difference everyday

Sztuka programowania 1376 dni, 12 godzin, 52 minuty temu mborecki 193 rozwiń

W poprzednich wpisach omawialiśmy wewnętrzną implementację async\await. Dziś kolejne przykłady pokazujące, czego należy unikać aby optymalizować nasz kod. Jak wiemy, użycie await generuje masę kodu i niesie ze sobą alokację dodatkowych obiektów – maszyna stanów, wątki, wrappery itp. W zasadzie sama alokacja w .NET nie jest jakiś wielkim problemem i jest znacząco szybsza niż w językach niezarządzanych. Niestety, pomimo wielu optymalizacji dokonywanych przez GC, późniejsze ich zwolnienie jest czasochłonn...

Dziel się z innymi:
Piotr Zieliński » Async\Await–wydajność, część IV (buforowanie)

Sztuka programowania 1377 dni, 14 godzin, 2 minuty temu pzielinski 68 rozwiń

In the project, I am working with, there is a simple feature that imports data from external source. Import is only interested in new records. This condition is fulfilled with ‘DateTime’ comparision. Looks simple, Unfortunately I have encountered a nice ‘bug’.

Tagi: C#
Źródło: www.mfranc.com
Dziel się z innymi:
[EN] Why Something > null is false - C# and Lifted Operators | Passionate Programmer

Sztuka programowania 1378 dni, 8 godzin, 31 minut temu michalfranc 90 rozwiń

Zacznijmy od synchronicznego kodu:internalclass Program { privatestaticvoid Main(string[] args) { ShortMethod1(); ShortMethod2(); ShortMethod3(); } privatestaticvoid ShortMethod1() { Console.WriteLine("1"); } privatestaticvoid ShortMethod2() { Console.WriteLine("2"); } privatestaticvoid ShortMethod3() { Console.WriteLine("3"); } } Mamy powyżej przykład 3 metod, które wykonują bardzo proste operacje. Nie są one zbyt skompl...

Dziel się z innymi:
Piotr Zieliński » Async\Await–wydajność, część III (grupuj operacje)

Sztuka programowania 1380 dni, 12 godzin, 17 minut temu pzielinski 78 rozwiń

Pytanie “przechowywać, czy nie przechowywać” pojawia się praktycznie przy okazji każdego projektu, w którym trzeba przesłać coś więcej niż proste formy do i od użytkownika. Szkoły są dwie (plus hybryda, o czym za chwilę), jednak wybór, która w danym wypadku jest najlepsza zależy w dużej mierze od specyfiki samej aplikacji oraz rozwiązań technicznych użytych w projekcie.

Źródło: jdubrownik.com
Dziel się z innymi:
NHibernate, Fluent NHibernate i FILESTREAM, czyli przechowywanie plików w bazie danych trochę inaczej

Sztuka programowania 1382 dni, 22 godziny, 12 minut temu jdubrownik 184 rozwiń

Zanim przejdziemy do pokazania przykładów jak optymalizować async\await najpierw trzeba zrozumieć implementację wewnętrzną w .NET. Bez tego ciężko będzie cokolwiek optymalizować. Na początku async\await wydawał mi się również czymś niezwykłym, a jak zacząłem zagłębiać się w kod IL, okazało się, że to bardzo prosty mechanizm i mógłby być napisany przez każdego z nas. Kod korzystający z async\await wygląda na synchroniczny. Pod spodem jednak są zwykłe callback’i – dokładnie tak jakby było to napisane w po...

Tagi: async, await
Dziel się z innymi:
Piotr Zieliński » Async\Await–wydajność, część II (implementacja wewnętrzna)

Sztuka programowania 1383 dni, 6 godzin, 39 minut temu pzielinski 122 rozwiń

W kolejnych kilku wpisach, zajmiemy się async\await ale od strony wydajnościowej. Jeśli ktoś nie wie do czego te słowa kluczowe służą, zachęcam przeczytać np. mój artykuł o programowaniu asynchronicznym w .NET 4.5. Sposób korzystania z async\await jest bardzo prosty. Do tego stopnia, że programowanie asynchroniczne wygląda w zasadzie tak jak synchroniczne podejście. W kodzie nie ma callback’ow a przepływ logiki wygląda na sekwencyjny. Niestety, trzeba być świadomym jakie pułapki czekają na programistów...

Tagi: async, await
Dziel się z innymi:
Piotr Zieliński » Async\Await–wydajność, część I

Sztuka programowania 1386 dni, 11 godzin, 6 minut temu pzielinski 250 rozwiń

Dzisiaj na szybko wrócimy z powrotem do tematu TPL Data Flows. Jakiś czas temu pisałem o różnych blokach w TPL DataFlows. Nie opisałem jednak TransformManyBlock.  TransformManyBlock jest analogiczny do TransformBlock z tym, że na wyjściu jest kolekcja więc możliwe jest zwrócenie kilku wartości. TransformBlock służył wyłącznie do przetworzenia parametru i zwrócenia pojedynczego wyniku. Ktoś może zapytać, czy to nie to samo co przekazanie jako typu generycznego IEnumerable do TransformBlock – też wtedy na...

Dziel się z innymi:
Piotr Zieliński » TPL Dataflows – część IX (TransformManyBlock)

Sztuka programowania 1388 dni, 2 godziny, 3 minuty temu pzielinski 45 rozwiń

W sprawie wydajności wyjątków można znaleźć wiele opinii, często sprzecznych ze sobą. W dzisiejszym wpisie przedstawię kilka programików, mających na celu, wyjaśnienie jaki wpływ mają wyjątki oraz ich łapanie na wydajność aplikacji. Zacznijmy od przykładów a potem przejdziemy do analizy wyników. Kod z wyrzucaniem wyjątków: internalclass Program { privatestaticvoid Main(string[] args) { constint n =20000; Stopwatch stopwatch = Stopwatch.StartNew(); for (int i =0; i < n;="" i+...

Dziel się z innymi:
Piotr Zieliński  » Wydajność: jak to jest z wyjątkami?

Sztuka programowania 1391 dni, 13 godzin, 47 minut temu pzielinski 278 rozwiń

And how are you defining your variables?

Tagi: C#, dynamic, var
Dziel się z innymi:
[EN] Playing with .NET types definition

Sztuka programowania 1392 dni, 13 godzin, 12 minut temu dzapart 206 rozwiń

Często spotykam następujące konstrukcje:class RiskInfo { publicint Condition{get;set;} publicdouble Score{get;set;} } Innymi słowy, kontener na kilka prostych zmiennych. Jeśli ktoś nie zna zasady działania Garbage Collector, gorąco zachęcam do przeczytania np. mojego cyklu artykułów o GC. Usunięcie obiektu z pamięci to nie prosta sprawa i naprawdę wiele musi zostać wykonanych operacji w tle. Z tego względu, jeśli klasa jest mała i posiada wiele instancji, wtedy dużo lepiej skonwertować ją do s...

Dziel się z innymi:
Piotr Zieliński » Code review: struktura danych

Sztuka programowania 1395 dni, 7 godzin, 49 minut temu pzielinski 234 rozwiń

W tej części omówię jak wykonać kilka prostych technik, tj. jak:zgrupować testy za pomocą atrybutu [TestCase],testować wyjątki,testować zdarzenia. Na tapetę idzie przykład dzielenia; chcemy napisać funkcjonalność i testy mając na uwadze, że:metoda Divide należy do klasy Calculator,metoda Divide przyjmuje dwa parametry wejściowe — obydwa typu int; zwracanym ...

Tagi: C#, NUnit, TDD
Dziel się z innymi:
Kurs TDD część 5: Nasz drugi test jednostkowy | DariuszWozniak.NET

Sztuka programowania 1396 dni, 8 godzin, 47 minut temu dariuszwozniak 162 rozwiń

1 2... 26 27 28 29 30 31... 38 39
Szkolenia SecurITum

maj

23.
CodeEurope
Wrocław
25.
CodeEurope
Warszawa
Zobacz wszystkie

Najaktywniejsi

1

macko (32 816,53)

2

http://pawlos.blo... (31 626,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 385,97)

8

Damian (9 041,08)

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 578,06)

15

jedmac (3 318,39)

16

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

17

CaMeL (2 954,87)

18

spetz (2 923,27)

19

mnikolajuk (2 596,93)

20

lkurzyniec (2 592,74)