W 25 odcinku DevTalk wracamy do tematu architektury. Tym razem moim Gościem jest Szymon Kulec: programista, blogger, prelegent i jeden z liderów Warszawskiej Grupy .NET. Na Twitterze: @scooletz. Dyskutujemy o Event Driven Architecture. Z odcinka dowiecie się czym jest EDA, o jakich zdarzeniach mowa i jak z nich korzystać. Do tego: jak ma się do tego CQRS i Event Sourcing, na czym polega eventual consistency oraz jak obsługiwać/przetwarzać zdarzenia? I… oczywiście, wiele więcej :). Zapraszam do słuchania...
Strona głównaUżytkownik
rroszczyk | użytkownik
Architektura 3328 dni, 20 godzin, 13 minut temu 206 źrodło rozwiń
W poprzednim poście skupiłem głównie się na reflected CSS, ale wspomniałem również o stored XSS. Zasada działania ataków typu “Stored xss” jest bardzo prosta – wstrzyknięty kod jest przechowywany w bazie danych. Oznacza to, że potencjalny atak może zostać wykorzystany przeciwko jakiemukolwiek użytkownikowi odwiedzającemu stronę. W przypadku reflected xss sami musieliśmy zadbać o to, aby ktoś odwiedził stronę z spreparowanymi przez nas danymi.
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 3333 dni, 20 godzin, 55 minut temu 188 źrodło rozwiń
Atrybut InternalsVisibleTo służy do definiowania zaprzyjaźnionych bibliotek. “Zaprzyjaźniona” biblioteka to taka, która ma dostęp do klas i metod z modyfikatorem “internal”. Zwykle korzysta się z niego w celu przetestowania wewnętrznych klas. Czasami bywa, że klasy w bibliotece mają modyfikator internal i co za tym idzie, nie ma do nich bezpośrednio dostępu z testów. Za pomocą InternalsVisibleTo można zrobić wyjątek dla jakieś biblioteki, w tym przypadku projektu z testami.
Notyfikacje są obecnie czymś powszechnym w każdym liczącym się mobilnym systemie. Dzięki nim, jesteśmy na bieżąco z mailami, powiadomieniami z Facebooka, czy choćby z wynikiem wyczekiwanego meczu. Windows Phone nie odstaje niczym w tym obszarze od swojej konkurencji, a nawet oferuje kilka dodatkowych, ciekawych opcji. W dzisiejszym tekście przedstawię przykładowe użycie lokalnych notyfikacji typu toast - zarówno w wersji harmonogramowanej (scheduled) jak i normalnej. Notyfikacje innego typu wysyła się w ...
Mobile development 3333 dni, 20 godzin, 55 minut temu 74 źrodło rozwiń
Dzisiaj powracamy do zagadnień związanych z bezpieczeństwem aplikacji webowych. Przez kilka następnych postów będę pisał o XSS. Oprócz SQL Injection, XSS jest jednym z “popularniejszych” ataków przeprowadzanych na aplikacje webowe. O ile zasada działania może wydawać się prymitywna, to wiele stron, nawet tych z czołówki (np. Amazon), były podatne na XSS. Co więcej, tak jak SQL Injection, wykorzystanie XSS może spowodować całkowite przejęcie kontroli nad aplikacją. Nie należy więc traktować luki XSS jako...
W swojej stosunkowo krótkiej karierze programistycznej, zdążyłem już pracować z różnymi technologiami. Naturalnym tego następstwem są oczywiście wszelkiej maści porównania. Czasem np. porównuje Razora z MVC do XAMLa. I choć w teorii bardziej rozbudowana jest ta druga z obu tych technologii, to w praktyce Razor ma kilka konstrukcji, do których tęsknym okiem wyglądają designerzy XAMLa. Jedną z nich jest IF. I choć w teorii można ją częściowo zastąpić choćby za pomocą VisualStates, to w praktyce okazuje się...
Mobile development 3336 dni, 11 godzin, 54 minuty temu 372 źrodło rozwiń
Tworząc nowe zadania (wątki) za pomocą TPL, możemy przekazać parametry AttachedToParent lub DenyChildAttach. Określają one, czy wątek powinien być podłączony do rodzica czy nie. W dzisiejszym wpisie postaram wyjaśnić się, czym one różnią się. Parametry definiują relację wątku z nadrzędnym wątkiem. Jeśli wątek A, tworzy kolejny wątek B, wtedy za pomocą powyższych wartości możemy określić relacje wątku B z A. Spróbujmy zatem wyjaśnić jak ta relacja wpływa na...
Programowanie rozproszone 3336 dni, 11 godzin, 54 minuty temu 67 źrodło rozwiń
W .NET 4.5 pojawiła się metoda Task.Run. Z przyzwyczajenia jednak przez długi czas używałem tylko Task.Factory.StartNew. Obie metody służą do stworzenia nowego wątku i natychmiastowego jego uruchomienia. Sposób wywołania wygląda bardzo podobnie...
Programowanie rozproszone 3336 dni, 11 godzin, 54 minuty temu 283 źrodło rozwiń
Odpowiednie rozbicie historii na taski ma kluczowy czynnik w powodzeniu projektu. Jeśli ta czynność jest źle wykonana – czas realizacji projektu się wydłuża, a w zespole rośnie frustracja bo nikt nie wie gdzie leży problem. Developerzy pracują w pocie czoła, PM skrupulatnie trzyma się metodologii prowadzenia projektu, a mimo to są opóźnienia (które niestety najczę...
Sztuka programowania 3338 dni, 20 godzin, 32 minuty temu 412 źrodło rozwiń
Czasem tworząc aplikację wykorzystującą XAML, chcielibyśmy przekazywać dane pomiędzy poszczególnymi stronami. Niestety technologie Microsoftu nie są do tego dobrze przygotowane. Co prawda możemy zawsze wykorzystać jakiś globalny obiekt kontekstu, ale w praktyce jest to rozwiązanie nieefektywne. Możemy również wykorzystać foldery lokalne/roaming, który opisywałem tutaj, ale w pewnym sensie strzelamy tutaj do muchy z armaty. Czy można to zrobić jakoś prosto i elegancko? Okazuje się, że tak - choć po części...
Mobile development 3345 dni, 1 godzinę, 10 minut temu 202 źrodło rozwiń
BlockingCollection jest specjalną kolekcją danych, przygotowaną do implementacji wzorca producent-konsument. Nakład pracy do implementacji tego wzorca jest minimalny z BlockingCollection. Nie musimy martwić się o synchronizację, sekcję krytyczną czy deadlock. Zacznijmy od razu od przykładu. Producent będzie wyglądać następująco...
Programowanie rozproszone 3345 dni, 1 godzinę, 10 minut temu 342 źrodło rozwiń
O asynchronicznych kontrolerach pisałem już na blogu, zarówno w czystym ASP.NET jak i ASP.NET MVC. Czasami jednak chcemy zaimplementować model na wzór “fire&forget”. Oczywiście do tego, dużo bardziej nadają się systemy kolejkowe typu nServiceBus, ale dla bardzo prostych przypadków wystarczy odpalenie wątku i wykonanie jakieś czasochłonnej operacji. Przez czasochłonną mam na myśli taką, która wykonuje się kilka minut, a nie kilka godzin. Jeśli mamy aż tak skomplikowane operacje, wtedy wykonywanie teg...
Dług technologiczny jest zaciągany wtedy, gdy mając na szali krótszy czas developmentu i jakość kodu – świadomie wybieramy szybsze/tańsze ukończenie projektu kosztem jakości. Warto powiedzieć, że jeśli ta droga nie jest świadoma to nie mamy do czynienia z długiem technologicznym tylko niekompetencją :)
Sztuka programowania 3348 dni, 1 godzinę, 26 minut temu 314 źrodło rozwiń
Domyślnie tworząc aplikacje uniwersalne, możemy korzystać z rozbudowanego modelu zdarzeń. Każde ze zdarzeń, może zostać zaimplementowane w tzw. części code-behind wybranej strony/kontrolki. Nie wszystkim do końca odpowiada jednak ten model. Spore grono programistów jest zwolennikiem architektury MVVM, która promuje wydzielone konstrukcje zwane ViewModelami. Ważnym elementem ViewModel są komendy, które pozwalają na realizację określonych zadań. Niestety nie wszystkie kontrolki Microsoftu są do tego dobrze...
Mobile development 3351 dni, 1 godzinę, 24 minuty temu 60 źrodło rozwiń
Resharper daję naprawdę cenne wskazówki. Nie wszystkie są oczywiste i czasami należy zagłębić się w temat. Jedną z takich wskazówek jest używanie IndexOf wraz z StringComparison.Ordinal. Załóżmy, że mamy następujący kod: string text = "test"; Console.WriteLine(text.IndexOf("est")); Resharper zasugeruje konwersję do: string text = "test"; Console.WriteLine(text.IndexOf("est", StringComparison.Ordinal)); Dlaczego? Jeśli nie przekażemy ustawień regionalnych jawnie, wtedy domyślnie aktualna zost...
Sztuka programowania 3351 dni, 1 godzinę, 24 minuty temu 163 źrodło rozwiń
Estymowanie projektów IT to trudne zadanie. Najczęściej w estymowaniu chodzi o to, by trafić jak najbliżej faktycznej ceny projektu, by popełnić jak najmniejszy błąd. Okrągłe liczby kłamią! Znakomicie widać to podczas wyceny projektów, kiedy projekt jest oszacowany na 10, 50, 100, 200 tysięcy to najprawdopodobniej mamy do czynienia z niedoszacowaną lub przeszacowaną wyceną. Opiszę bł...
W chwili obecnej tworząc aplikacje mobilne, bardzo często korzystamy z Internetu, o czym wspominałem po części w ostatnim wpisie. Siłą rzeczy w chmurze często trzymamy też konfigurację aplikacji/usługi, aczkolwiek nie musi to być regułą. Aplikacje uniwersalne obsługują bowiem tzw kontenery danych (ApplicationDataContainer), które pozwalają na zapisywanie ustawień dla konkretnej instalacji, a także globalnie dla naszego konta Windows Live. W dzisiejszym wpisie, zaprezentuję prosty sposób na wykorzystanie ...
Mobile development 3358 dni, 23 godziny, 42 minuty temu 73 źrodło rozwiń
Dwa wrześniowe odcinki mieliśmy mocno techniczne, więc czas nieco od technikaliów odpocząć. Dzisiaj, w odcinku nr 23, zapraszam Was na luźną rozmowę o… programistach. A rozmawiam z osobami, które znają nas od podszewki :). Ola Pszczoła (http://beetalents.com) na co dzień zajmuje się szeroko pojętym HRem w ujęciu niekorporacyjnym. Niezła charakterystyka, co nie? ;). Na Twitterze obecna pod @olapsz. Paweł Michalak natomiast pracuje w Stack Overflow, gdzie m.in. doradza firmom jak pokazać się programistom d...
Czy czujesz się znudzony swoją pracą, która kojarzy Ci się tylko z monotonnym wykonywaniem tych samych, nudnych obowiązków? Nie "porywa" Cię to co robisz? Ot po prostu idziesz "do roboty" i czekasz na weekend? Stagnacja i marazm? Możliwe, że w mniejszym lub większym stopniu tak jest. (...) Dlatego mam dla Ciebie propozycję.