Dzisiaj kolejna nowa funkcjonalność w c#. Zacznijmy od przykładu:publicclass Point { publicdouble Dist => Math.Sqrt(X * X + Y * Y); publicdouble X; publicdouble Y; } X oraz Y to zwykłe pola (tak nie powinno się ich definiować jako publiczne ale to tylko przykład). Następnie Dist to dziwny twór… Wiemy, że mamy tam wyrażenie lambda, które wywołuje Math.Sqrt i robi obliczenia. Zobaczymy jak możemy z tego skorzystać w kodzie:Point point =new Point(); point.X =5; point.Y =6; double dist = point...
Omawiana w poprzednim poście zależność w najprostszej postaci charakteryzuje się pewnym nieprzyjemnym problemem (nie mówiąc o samym fakcie konieczności korzystania z takiej abstrakcji), który postaram się przedstawić na przykładzie.
Sztuka programowania 3822 dni, 10 godzin, 53 minuty temu 343 źrodło rozwiń
W nowej wersji c# zdecydowano się zezwolić na konstruktory bezparametrowe w strukturach danych. Kiedyś pisałem dlaczego, nie można było ich definiować w poprzednich wersjach języka. Chodziło po prostu o wydajność, szczególnie podczas alokacji tablic danych. Dodam, że w CLR zawsze było dozwolone posiadanie konstruktorów bezparametrowych i wyłącznie c# na to nie zezwalał. W C# 6.0 możliwe już jest napisanie własnego konstruktora bez parametrów, ale wciąż należy pamiętać o możliwych problemach wydajnościow...
The second edition of dotNetConfPL was pretty successful. I am very pleased with all sessions, and speakers performance. All sessions went smooth, but one. Barbara Fusinska could not run screenshare on Google Hangouts. Her session was recorded later and is already available. The only way to inform other about the problems during the conference was through JabbR or displaying Blue Screen of Death instead of her session. Adding something on website would...
I would like to present a solution that will make it easier to work with any application logs and convenient way to help monitor the work of program. This solution is based on ILogCollector interface.
Sztuka programowania 3822 dni, 10 godzin, 53 minuty temu 217 źrodło rozwiń
Dzisiejszym wpisem chciałbym rozpocząć cykl kilku tematów poświęconych omówieniu Azure Service Bus – jednego ze składników Microsoft Azure umożliwiającego wymianę informacji w systemach rozproszonych. Azure Service Bus pozwala na komunikację w dwóch trybach: relayed messaging oraz brokered messaging. Tryb relayed polega na synchronicznej wymianie wiadomości, podczas której nadawca i odbiorca muszą być dostępni on-line (analogicznie ...
How to make your 'debugging life' easier with DebuggerDisplay attribute
Sztuka programowania 3823 dni, 19 godzin, 33 minuty temu 161 źrodło rozwiń
Pamiętam jak dawnymi czasami każde exception przyprawiało mnie o gęsią skórkę. Szukałem sposobu jak tu je wyeliminować (choć już wtedy wiedziałem, że niektórych źródeł nie wyeliminuje nigdy). Dziś z perspektywy czasu wiem jaki byłem głupi. Czasami exception to rzecz, o której wprost marzymy. A jak to z marzeniami bywa rzadko się one spełniają. Kilka “ciekawszych” problemów z którymi się zetknąłem:1. Backup bazy danych działa wybiórczo Wdrażając oprogramowanie u klienta liczyłem tylko na jedno ni...
Sztuka programowania 3825 dni, 14 godzin, 49 minut temu 398 źrodło rozwiń
23/10/20141 Commentdevtalk, jakub gutkowski, javascript, news, podcastprocentpro Od kiedy zacząłem świadomie organizować swój czas, zajęcia i – przede wszystkim – myśli (o czym można poczytać pod tagiem GTD), żaden mój pomysł się nie “marnuje”. Nic magicznie nie “znika”. Wszystko co wymyślę – ląduje w OneNote. Moja głowa okazuje się dość sprawnie działającym, póki co, narzędziem, bo listę “todo kiedyś” mam wypchaną pomysłami. A zaleta trzymania wszystkiego w ON jest taka, że co jakiś czas do pomysłów ...
Założenie: Chcemy mieć możliwie wysoką zgodność z SOLID + Depedency Injection Problem: Piszemy implementację, która zawiera jakieś zasoby i musi je zwalniać (czyli implementacja IDisposable) Omawiane zasoby są bardzo obciążające i nie chcemy je jak najszybciej zwalniać Nie chcemy mieć interfejsu dziedziczącego po IDisposable, bo najczęściej jest to Leaky Abstraction
Sztuka programowania 3825 dni, 14 godzin, 49 minut temu 293 źrodło rozwiń
Zacznijmy dziś od operatora nameof. Zwraca on po prostu nazwę przekazanej metody:staticvoid Main(string[] args) { string writeLine= nameof(Console.WriteLine); string testFunction = nameof(TestFunction); Console.WriteLine(writeLine); Console.WriteLine(testFunction); } privatestaticstring TestFunction(int a,double b) { returnnull; } Chyba nie ma tutaj nic nadzwyczajnego. Po prostu zwracana jest nazwa w formie string: Po co nam to? Na przykład, aby zaimplementować OnPropertyChanged:publicc...
Nowa wersja języka wprowadzi również ulepszenia w obsłudze wyjątków. Często tworzymy jeden wyjątek typu OperationFailedException, a w nim enum, który określa dlaczego operacja nie powiodła się tzn.: publicclass OperationFailedException : Exception { public OperationFailedException(int statusCode) { StatusCode = statusCode; } publicint StatusCode { get; set; } } Co jeśli chcemy napisać obsługę wyjątków, ale wyłącznie tych ze statusem 5? Dzisiaj możemy łapać wszystkie wyjątki i sprawdzać ...
Najpierw zobaczymy, jak mogła wyglądać inicjalizacja słownika przed wersją 6.0... Składnia trochę ciężka w czytaniu. W C# 6.0 możliwe będzie... Moim zdaniem dużo lepiej to wygląda. Drobna zmiana, a zwiększa czytelność kodu. Kolejna natomiast zmiana nie podoba mi się i na szczęście została wycofana. Chciano wprowadzić nowy sposób uzyskiwania dostępu do pól. Klasycznie można odczytać wartość za pomocą...
Co zrobić koniecznie chcemy tworzyć kod CSS inline, a jednocześnie potrzebujemy ostylować elementy dla zdarzenia hover? W tym momencie przychodzi nam z pomocą język Javascript. Opiszę prostą bibliotekę, którą napisałem w tym celu.
Ostatnio miałem trochę czasu i zrobiłem porządki w biblioteczce, która zawiera parę Utilsów/Helperów przydatnych podczas kodzenia w WPF. Jak ktoś pracuje w WPF, to zapraszam do przejrzenia – może coś się przyda.
Simple backend system based on the Command Design Pattern where each command has own independent scope.
Architektura 3830 dni, 19 godzin, 25 minut temu 313 źrodło rozwiń
Z poprzedniego posta “DI: profesjonalne kontenery” wiemy, że wykorzystujemy kontener. Wiemy też, że użycie własnej implementacji to głupota. Pomyśleliśmy również jakimi kryteriami się kierować wybierając kontener do naszego projektu. Tak jak napisałem: ja używam Autofac. I właśnie ta biblioteka wyląduje w przedstawianym demo. Pierwsze co robię to: Install-Package Autofac Mając na pokładzie Autofaca mogę z nie...
Sztuka programowania 3832 dni, 13 godzin, 58 minut temu 364 źrodło rozwiń
Czas zacząć pisać o nowym c#. Najpierw pobierzmy wersję CTP z: http://www.visualstudio.com/en-us/downloads/visual-studio-14-ctp-vs.aspx Oczywiście to preview, więc odradzam instalowanie tego w pracy, chyba, że na VM. Lepiej nie ryzykować re-instalacją wszystkiego od nowa. Często w kodzie można spotkać następujący wzorzec:class Person { privatereadonlystring _firstName; privatereadonlystring _lastName; public Person(string firstName,string lastName) { _firstName = firstName; _last...
Some guidelines about creation and naming projects in Visual Studio
Sztuka programowania 3833 dni, 18 godzin, 5 minut temu 174 źrodło rozwiń
How to compile/build/debug your MVC Views (*.cshtml files)