Prawdziwy problem i jego rozwiązanie, czyli Azure DevOps tips! Dzisiaj będzie o wizualizacji statusu deploymentu z poziomu Taska -czyli jak łatwo sprawdzić, na jakim środowisku jest zaimplementowana zmiana
A little while ago I blogged here and I set it up to be a "continues..." style post. I haven't had the energy to continue it in that context, and this fact was putting me off concluding the post. I then realised: the thing that matters isn't some overarching narrative structure, but that I get my ideas down. So: I'm aborting any attempt at making this post a continuation, and just focusing on the content! There's been a lot of confusion over when to use Task[
Programowanie rozproszone 1914 dni, 2 godziny, 40 minut temu 116 źrodło rozwiń
Generalized async return types — it is a new C#7 feature that allows using not only Task as a return type of async methods but also other types (classes or structures) that satisfy some specific requirements. At the same time, async/await is a way to call a set of "continuation" functions inside some context which is an essence of another design pattern — Monad. So,...
Sztuka programowania 1942 dni, 2 godziny, 51 minut temu 182 źrodło rozwiń
Cześć, pod ostatnim postem, użytkownik DD zwrócił mi uwagę by zamiast w każdej iteracji pętli, wykonywać await na handlerze, można je wszystkie odpalić za pomocą metody Task.WhenAll(). W tym wpisie chciałbym omówić różnicę między tymi dwoma podejściami, opisać za i przeciw a także samemu sprawdzić, w praktyce co okazuję się szybsze i mniej zawodne.Różnice Metoda Task.WhenAll() przyjmuje jako...
Sztuka programowania 2208 dni, 1 godzinę, 21 minut temu 233 źrodło rozwiń
Programowanie asynchroniczne na dobre zagościło na platformie .NET. Proces transformacji wszystkich bibliotek nie był najszybszy, ale większość liczących się graczy na rynku komponentów przygotowało już wersje asynchroniczne. Z przyrostkiem Async czy bez, metody zwracające Task albo Task stały się naszą codziennością, zwiększając przepustowość aplikacji i zmniejszając jałowy czas czekania na zwrócenie danych przez bazę (albo dowolne inne IO). Zatem skoro cała asynchroniczność miała przynieść takie zyski...
Programowanie rozproszone 2326 dni, 2 godziny, 20 minut temu 142 źrodło rozwiń
C# and .NET przeszły ostatnio przez dużo zmian. Taski, async-await, ValueTask i ostatni IValueTaskSource - spójrzmy razem na historię asynchroniczności w C# oraz na to, co możemy zrobić .NET Core 2.1
Sztuka programowania 2373 dni, 3 godziny, 21 minut temu 265 źrodło rozwiń
Piotr Szymura software engineer, open source contributor, crypto/blockchain enthusiast, try hard guitarist, starcraft fan FollowWrocław Email Twitter LinkedIn GitHub Stackoverflow Wrapping callback hell with TaskCompletionSource Ever wanted to turn callback style async code to awaitable form? You might use TaskCompletionSource for it.classProgram{staticvoidMain(string[]args){Run();Console.ReadLine();}staticasyncTaskRun(){CallbackStyle...
Architektura 2471 dni, 21 godzin, 45 minut temu 72 źrodło rozwiń
Rozbieżność między planowanym, a faktycznym czasem realizacji jest przyczyną opóźnień projektów IT. Aktualne statystyki mówią, że ~80% projektów przekracza pierwotnie planowany czas realizacji lub budżet. Nagrałem wideo o tym, jak zmniejszyć ryzyko niedoszacowanych (lub przeszacowanych) zadań w twoim projekcie. Poruszałem już ten temat na moim blogu, wersję tekstową możesz...
Często z pozoru trudny problem, po rozbiciu na mniejsze kawałki staje się prostszy do rozwiązania. W teorii nie powinno to mieć znaczenia. Równie dobrze nierozbite zadania powinno zająć tyle samo czasu i być tak samo skomplikowane jak te podzielone na małe fragmenty. Czas realizacji ani poziom trudności nie uległ zmianie. O co więc tak naprawdę chodzi?
Przyjęło się, że gdy podzielimy problem na mniejsze fragmenty będzie on prostszy w realizacji. Z logicznego punktu widzenia nie powinno mieć to znaczenia – dekompozycja projektu na małe kawałki nie zmniejsza poziomu skomplikowania, ani nie redukuje zakresu – to tylko logiczny podział. Więc jak to jest z rozmiarem zadania? „Czy rozmiar ma znaczenie? ;)”
Zobacz jak podchodzić do wyceny zadań w projektach IT by zakładany czas pokrywał się z rzeczywistością.
W poprzednich częściach poruszałem kwestię braku zarządzania buforami czasu w zadaniach, marnowaniem marginesów czasowych oraz złej definicji projektu, która również przyczynia się do opóźnień. Przed przeczytaniem tej części polecam ci rzucić okiem na część pierwszą o buforach bezpieczeństwa w łańcuchu krytycznym oraz część drugą, kontynuacje opisu łańc...
Luźny wpis, w którym poruszę temat raportowania stanu projektu. Zachęcam do przeczytania wszystkich, którzy takie raporty piszą, a przede wszystkim tych, którzy je czytają :). Odpowiem dlaczego pytanie „ile procent projektu mamy ukończone?” może zakłamywać rzeczywistość i dawać złudne poczucie bezpieczeństwa. Pokażę również bardziej skuteczną metodę raportowania stanu projektu. Gdy stawiałem pi...
W tym wpisie poruszę temat tego jak bufory „bezpieczeństwa” (cudzysłów nie jest przypadkowy) w taskach wpływają na przedłużenia projektu. Opiszę również jak „kary” za nie wykonywanie zadań w terminie przez developerów przyczyniają się do opóźnień. Zrozumienie istoty problemu jest pierwszym krokiem do ich eliminacji i zwi...
Sztuka programowania 3225 dni, 23 godziny, 47 minut temu 304 źrodło rozwiń
Temat prosty, jednak nie dla wszystkich jasny. Postanowiłem napisać ten post po tym gdy po zapytaniu się wielu osób: „czym różni się cel od zakresu?” usłyszałem losowy ciąg wyrazów zawierający głównie dwa wyrazy – „cel” i „zakres” ;) Rozumienie tych pojęć jest szczególnie istotne w projektach IT bez względu na to czy jesteś programistą, PM czy klientem. Dlaczego? Odpowiem w kolejnych linijkac...
W tym wpisie poruszę temat umiejętności miękkich u developerów. Według mnie ten aspekt jest często zaniedbywany w rozwoju kariery, a bez niego nie można określić się kompletnym programistą. Opiszę 6 wybranych cech, które definiują „dobrego” developera. Nie było prosto ubrać w słowa cechy, które miałem w głowie – więc jako nazwy nagłówków dałem wspólny mianownik moich myśli, które szerzej opisałem w akapitach.
W poprzednim wpisie rozpocząłem serię artykułów pod tytułem „najczęstsze błędy podczas układania tasków w projekcie IT”. Aktualnie czytasz część drugą, zachęcam cię do przeczytania również części pierwszej ponieważ artykuły tworzą ciąg przyczynowo-skutkowy. Link do poprzedniej części znajdziesz tutaj.5. brak odpowiedniej konwersji task
Sztuka programowania 3302 dni, 21 godzin, 44 minuty temu 188 źrodło rozwiń
Working with Tasks is a modern way of writing asynchronous code in an easy and flexible manner. It is quite straightforward to start using them, so usually developers do not investigate thoroughly the topic. Unfortunately this often leads to unpleasant surprises - especially when it comes to exception handling. Having this in mind let's take a look how to handle exceptions in Task and what can happen if we do it wrong.
An asynchronous operations become very popular in modern programming because by using its developers can take full advantage of multicore processors and perform several operation at the same time. Multithreding exists in ASP.NET since 2.0 version but it was very sophisticated to use it. However starting from .NET 4.5, ASP.NET is fully compatible with all these great features. To demonstrate how to start with the asynchronous operation in ASP.NET 4.5 I`ve created very simple solution which consist of ...
Case: Dwa dni temu w ramach jednego z projektów w Billennium przyszedł do mnie kolega z pytaniem o możliwość wyświetlenia dat w szczegółach zadań w TFS. Zadania zostały zaimportowane przeze mnie z MS Projecta i faktycznie daty rozpoczęcia i zakończenia domyślnie nie pokazywały się nigdzie na formularzu zadania ani na liście zadań(screeny poniżej). Na szczęście z pomocą TFS Power Toolsów udało mi się sprawnie temat ogarnąć i poniżej prezentuję rozwiązanie.