Author: Jarosław Porwoł
1
Videocourse

Programowanie asynchroniczne i równoległe w C#. Kurs video. Poziom podstawowy

Jarosław Porwoł

Obierz kurs na programowanie skalowalne Słowem kluczem w dzisiejszym świecie jest czas. A właściwie nieustanny niedoczas — dlatego oczekujemy, że wszystko, a z pewnością komputery, telefony i inne urządzenia elektroniczne, będzie pracować szybciej, sprawniej i wydajniej. Stąd standardem stały się procesory posiadające wiele rdzeni — co oczywiście pozytywnie wpływa na ich wydajność, gdy pracuje się na kilku programach równocześnie. Niestety, prędkość działania pojedynczego rdzenia nie rośnie tak szybko, jakbyśmy sobie tego życzyli, więc poszczególne aplikacje, dostępne za pośrednictwem urządzenia i operujące na pojedynczym rdzeniu, wcale nie pracują sprawniej. Podobnie rzecz ma się z oprogramowaniem dostępnym online — o ile staje się modne, szybko pada ofiarą własnej popularności i zawiesza się, kiedy wielu użytkowników chce z niego równocześnie skorzystać. Jak można temu zaradzić? Pisząc lepszy, bardziej skalowalny kod. Od dłuższego czasu jest to możliwe w aplikacjach tworzonych w środowisku .NET. Od niedawna Microsoft udostępnia wiele udogodnień, które sprawiają, że pisanie takiego kodu jest dziś prostsze, przyjemniejsze i łatwiejsze do zrozumienia. Tworzenie kodu asynchronicznego, znajomość sposobów synchronizacji między wątkami, umiejętność optymalizacji obliczeń przez wykorzystanie obliczeń równoległych — to umiejętności wymagane w codziennej pracy, właściwie niezależnie od dziedziny biznesu, w której operuje programista. Co Cię czeka podczas naszego profesjonalnego szkolenia? W trakcie niniejszego kursu video: nauczysz się programowania asynchronicznego; przyjrzysz się mechanizmom pozwalającym dokonywać równoległych obliczeń na wielu wątkach; dowiesz się, jak synchronizować dostęp do zasobów. Co więcej... poznasz sposoby na korzystanie z wbudowanych i zoptymalizowanych kolekcji wielowątkowych. Uczestnik szkolenia Programowanie asynchroniczne i równoległe w C#. Kurs video. Poziom podstawowy zdobędzie wiedzę i umiejętności na poziomie podstawowym. Oznacza to, że będzie w stanie pisać proste rozwiązania asynchroniczne i wielowątkowe i opanuje teorię dotyczącą problemów, które z dużym prawdopodobieństwem napotka na swojej drodze, a tym samym znajdzie inspiracje do tego, jak można je rozwiązywać. By usprawnić działanie aplikacji... Ambicją niemal każdego programisty jest to, by napisana przez niego aplikacja stała się popularna — by była użyteczna, rozwiązywała prawdziwe problemy i by użytkownicy chcieli z niej korzystać. Niestety, im popularniejsze staje się dane oprogramowanie, tym częściej się zawiesza... Kto jest winien? Oczywiście — programista, który nie potrafił napisać odpowiednio sprawnego kodu! Dlatego podczas pracy nad kolejnym projektem warto zawczasu pomyśleć o kodzie skalowalnym, czyli takim, w którym poszczególne operacje będą mogły być wykonywane równolegle. Rzecz jasna nigdy nie będzie to dotyczyło aplikacji jako całości — programista musi wiedzieć, które obliczenia na sobie bazują, a które są od siebie niezależne. Trzeba precyzyjnie określić, które części programu mogą korzystać z tych samych zasobów, inaczej będą się one wzajemnie blokować i aplikacja się zawiesi. Dziś prawie każdy programista .NET (i nie tylko!) spotyka się na co dzień z zagadnieniami asynchroniczności i równoległości obliczeń. Wiedza ta powoli staje się obowiązkowa na rynku pracy; podczas rozmów kwalifikacyjnych często pojawiają się pytania o tematy poruszane w tym kursie — zainwestowany w niego czas z pewnością nie będzie stracony! Sześć rozdziałów, czterdzieści pięć lekcji Trwających w sumie niemal sześć godzin — tak proponowany przez nas kurs wygląda od strony organizacyjnej. Jeśli chodzi o poruszane w nim zagadnienia, zaczniemy od teorii dotyczącej zagadnienia SynchronizationContext — dowiemy się, co to jest. Następnie przejdziemy do zajęć praktycznych, czyli tego, jak uruchamiać obliczenia w nowym wątku, jak korzystać z tasków (Task Parallel Library) oraz puli wątków. W dalszej kolejności będziemy synchronizować dostęp do interfejsu użytkownika (WinForms, WPF), zapoznamy się z pętlą zdarzeń i uruchomimy kod asynchroniczny (Async/await). Dowiemy się, jak pracować ze starszymi modelami asynchronicznymi (BeginExecute/End/Execute). Będziemy asynchronicznie pracować z bazą danych (Entity Framework, ADO.NET) i synchronizować kolejność wykonywanych działań. Poznamy sposoby na długo trwające zadania. Nauczymy się, co to jest deadlock, będziemy pisać kod obliczający zadania równoległe, synchronizować zasoby między wątkami i procesami, przyspieszymy też synchronizację aplikacji wielowątkowych. Na koniec dowiemy się, jakie kolekcje wbudowane można wykorzystać do prostszej pracy z kodem równoległym.

2
Videocourse

Test Driven Development. Kurs video. Sztuka pisania niezawodnego kodu

Jarosław Porwoł

Teoretycznie najważniejszym zadaniem developera jest pisanie kodu. W rzeczywistości jednak znaczną część czasu programisty zajmuje nie tyle wprowadzanie zmian w systemie, ile poprawianie działania elementów już istniejących. Błędy i niedopatrzenia często przekradają się do kodu produkcyjnego. Pół biedy, jeśli ich korygowanie zabiera koderowi jedynie cenny czas. Gorzej, gdy powoduje straty finansowe albo sprzętowe. Dlatego dostarczenie wysokiej jakości oprogramowania powinno być celem przyświecającym działaniu każdego programisty, niezależnie od doświadczenia, technologii czy branży, w jakiej pracuje. Jednak testowanie kodu na piechotę, linijka po linijce, jest żmudne, czasochłonne i nieefektywne. Błędy o wiele sprawniej wychwytuje się dzięki testowaniu automatycznemu. Zastosowanie odpowiedniej techniki pozwala na częste i powtarzalne sprawdzanie działania pisanego kodu, co ułatwia zapewnienie wymaganego poziomu jakości. Testowanie automatyczne może być wdrożone w zasadzie dla każdego rodzaju oprogramowania — od prostych aplikacji użytkowych po złożone systemy wspierające wielkie firmy. Także język oraz framework użyte do tworzenia kodu nie mają właściwie znaczenia, ponieważ podstawowe idee i sposoby pracy testowej są uniwersalne. Co Cię czeka podczas naszego profesjonalnego szkolenia? W trakcie pracy z tym kursem video poznasz: Zasady tworzenia oprogramowania zgodne z techniką TDD — Test Driven Development. Proces wytwórczy obowiązujący dla Behavior Driven Development. Sposób pisania kodu testowanego. Metodę poprawnego konstruowania testów. Co więcej... Dowiesz się, jak korzystać z narzędzi wspomagających testowanie. Test Driven Development. Kurs video. Sztuka pisania niezawodnego kodu pomoże Ci odnaleźć się w kodzie testowym i zmienić podejście do pisania funkcji. Tematy poruszone w ramach szkolenia zostały ułożone tak, by pokazać przejście od bardzo prostego przypadku do przypadków bardziej skomplikowanych — za każdym razem z uwzględnieniem podstawowego podejścia TDD. Uruchom szkolenie i ruszaj w drogę ku testom! Zasadniczą część kursu poświęcono praktyce Test Driven Development. Zanim jednak dowiesz się, czym jest TDD, uświadomimy sobie wspólnie, jakie zagrożenia niesie ze sobą dostarczanie klientom oprogramowania wątpliwej jakości. Podczas pracy z kursem nauczysz się pisać testy dla własnego kodu. Poznasz cykl pracy w Test Driven Development i opanujesz sposoby korzystania z mocków do symulacji elementów systemu. Przygotujesz się do sprawdzania sytuacji wyjątkowych, a następnie zorientujesz się, czym są i jak przeprowadza się testy Data Driven. Wreszcie, na koniec kursu, poznasz podstawy szerokiego zagadnienia, jakim jest Behavior Driven Development. Przez TDD do BDD Test Driven Development jest techniką tworzenia oprogramowania zaliczaną do metodyk zwinnych. Polega na wielokrotnym powtarzaniu kilku kroków. Najpierw pisany jest automatyczny test sprawdzający tworzoną funkcję, która następnie zostaje wdrożona i przetestowana. W kolejnym kroku następuje refaktoryzacja kodu, przeprowadzana po to, aby spełniał on założone standardy. Kluczowe w podejściu TDD jest to, że najpierw pisze się test, a dopiero potem wdraża kod, który ma zostać sprawdzony w ramach tego testu. Behavior Driven Development (BDD) wyewoluował z TDD i stanowi rozszerzenie tej metodyki. Skupia się na tym, od czego należy zacząć testowanie, co testować, a czego nie, ile funkcji można sprawdzić za jednym razem, jak nazywać testy oraz jak dotrzeć do przyczyny ewentualnego ich niepowodzenia. BDD kładzie duży nacisk na biznesową przydatność procesu testowania kodu.