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...
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 ...
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 ...
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ą...
W C# istnieje mało znana składnia do inicjalizacji zagnieżdzonych obiektów (nested object initializer syntax). Na czym polega cała zabawa? Spójrzmy na kod, za pomocą którego inicjalizujemy zagnieżdżony obiekt: Rectangle rectangle = new Rectangle { P1 = { X = 0, Y = 1 }, P2 = { X = 2, Y = 3 } };
W kilku postach mam zamiar opisać bibliotekę nServiceBus. Nie chodzi mi jednak o opis samego API, a zastanowienie się, kiedy warto z takiej architektury skorzystać. Większość programistów wciąż projektuje systemy na zasadzie klient-serwer. W wielu przypadkach jest to wystarczające rozwiązanie. Nie zawsze musimy tworzyć skalowalne rozwiązania. NoSQL, hadoop, chmura mają zastosowanie ale w wielu przypadkach jest to po prostu niepotrzebne. Nie każdy tworzy oprogramowanie, wykorzystywane przez miliony użytko...
Po długiej przerwie cykl, wraz ze mną, wraca do życia. W poprzednim odcinku padło stwierdzenie, że rozwiązaniem problemu wielu skomplikowanych zależności jest kontener. I że najlepszy jest własny. O ile drugie stwierdzenie na pewno jest durne i bezsensowne, to z pierwszym też można polemizować. A może tak bez kontenera? Użycie kontenera jest jedną z opcji zarządzania zależnośc...
Hey all I would like to invite you to second edition of dotnetconfPL. If you hear about it first time then check out last edition. As you may guess this conference is in Polish, we were inspired by global edition, so we decided to do it in Polish. At this year we have few more licences to raffle during our event, six resharper and three ncrunch. Thank for all sponsors! This edition has seven technical oriented talks and one soft oriented talk, we tried, and we want to exp...
Słowo dynamic jest często nadużywane prowadząc do trudno czytelnego kodu. Innym problemem jest wydajność – programiści często nie wiedzą jaki overhead za sobą ponosi każde użycie dynamic. Zacznijmy eksperymentowanie z IL:staticvoid Main(string[] args) { dynamic text ="Hello world"; } Wygenerowany IL:// Method begins at RVA 0x2050 // Code size 8 (0x8).maxstack 1 .entrypoint .locals init ( [0] object text ) IL0000: nop IL0001: ldstr "Hello world" IL0006: stloc.0 IL0007: ret Nic nadzwyczajn...
Nieraz zdarza się, że musimy samodzielnie napisać jakąś klasę implementującą interfejs IDisposable. Wszyscy na pewno znają wzorzec implementowania Dispose. Osobiście proponuję inną implementację.
In Scrum, every Sprint (iteration) begins with a Sprint Planning Meeting. This meeting has one basic goal, creating a list of user stories which will be delivered in the next sprint. Of course, requirements may also be presented as features, scenarios, etc. I always use user stories, but these rules can also be applied to different types of requirements. Looking from my experience, it is the most difficult event to conduct in the whole Scrum Cycle. Product Owner and Development Team have to work togethe...
Tyle się mówi o rozwoju programistów. Ba, sam o tym często gadam. Że to dobre, że trzeba, żeby nie stać w miejscu a iść do przodu… Ale powiedzcie mi: jak ma się rozwijać programista w typowym programistycznym polskim (i pewnie nie tylko) dev-kołhozie? Przychodzi do roboty, siada do projektu, po 8h wstaje i wychodzi. Niby normalka, ale… niekoniecznie. Moim zdaniem kluczowe jest pytanie: do jakiego projektu ten pr...
This post is part of the series: iOS for C# Developer. C# developers works with Visual Studio. Recently, some are trying to switch to SublimeText. However, I will assume that you, as C# Developer are familiar with VS. To write iOS applications, you need Xcode. I haven’t heard about nobody who created an working app in a different editor (more advanced than Hello World)...
Nie jestem specjalistą od WCF – właściwie to nawet nie za bardzo lubiłem tę technologię. Było w niej dużo konfigurowania i XMLi, a ja jednak wolę pisać kod. Serwis w WCF Popełniłem kiedyś Serwis, który potem trzeba było utrzymywać. Wszystko było dobrze dopóki inne .NETowe końcówki się z nim łączyły. Dodaje się referencję poprzez „Add service reference” — generują się wszystkie potrzebne klasy — można od...
This post is part of the series: iOS for C# Developer. Previous parts: part 1 (Classes and creating objects), part 2 (strings). The most typical scenario to use multithreading is to maintain responsive UI when we do some resource-consuming computation.C# Let’s consider simple button click action in C#...
This post is part of the series: iOS for C# Developer. String operations in Objective-C are very verbose in comparison to C#.
Dziś kolejny wpis na temat mikro-optymalizacji. Oczywiście dla większości aplikacji biznesowych taka różnica w wydajności nie ma kluczowego znaczenia. Myślę jednak, że jest to ciekawe z punktu widzenia IL i jak naprawdę działa język c#. Jeśli ktoś z kolei piszę np. grę albo aplikację czasu rzeczywistego, wtedy ma to już znaczenie, co robimy w każdej sekundzie. Zacznijmy od razu od wniosku: foreach w niektórych przypadkach jest znacząco wolniejszy od klasycznego for. Nie powinno to dziwić – w końcu iter...
Niejednokrotnie musimy przeczytać jakieś dane “skądś”, i nie mam na myśli bazy danych. Czy to zewnętrzny system przysyła excela, czy na dysku ląduje plik tekstowy, czy jeszcze coś innego. Takie pliki musimy przetworzyć, więc prawdopodobnie utworzymy klasę “XFileProcessor” albo “XFileParser”, czy coś w ten deseń. To jest akurat idealny scenariusz do pisania testów: dostajemy input i znamy oczekiwany output. Klient przysyła plik wejściowy i mówi, ja...