autor: Nowy rok za nami, pora na mały noworoczny prezent. W mojej bibliotece znajduje się kilka książek, które zostały wybrane przez moją drugą połówkę jako „coś co zagraca mieszkanie w którym nie ma miejsca na moje książki” :) Dlatego też przez najbliższe kilka tygodni będę starał się oddać wszystkie te książki, które zostały wybrane/wskazane itp. itd.. Zasady ich oddania są banalnie proste...
Strona głównaUżytkownik
macko | użytkownik
autor: W poprzednich częściach ([RX 1], [RX 2], [RX 3], [RX 4], [RX 5]) artykułu o Reactive Extensions dla .NET pojawiło się już dość sporo teorii, ale raczej mało przykładów, w tym wpisie chciałbym się skupić właśnie na przykładach bazujących na zdobytej uprzednio wiedzy. Zacznijmy od zastanowienia się nad prostymi subskrypcjami. W przykładzie z wpisu pt.: "[RX 3] Reactive Extensions pierwszy kontakt z kodem", zasubskrybowaliśmy obiekt typu IObservable (funkcją Subscribe) i jako parametr przekazane zost...
Programowanie rozproszone 133 dni, 18 godzin, 18 minut temu 79 rozwiń
Tak jak pisałem we wcześniejszych częściach ([RX 1], [RX 2], [RX 3], [RX 4]), Reactive Extensions dla .NET oferują mnóstwo pomocniczych rozszerzeń pozwalających na proste tworzenie obserwowalnych kolekcji. Przyjrzyjmy się tym najbardziej podstawowym. Najprymitywniejsze kolekcje obserwowalne Poniższa tabela przedstawia najprymitywniejsze (lub inaczej najprostsze) kolekcje obserwowalne. Dla każdego przykładu oprócz funkcji generującej obserwowalną kolekcję, podano również odpowiednik w postaci kolekcj...
Odpowiedź na pytanie postawione w tytule pytanie to temat nie na posta, ale na całą (może nawet niejedną) książkę. Poniżej postaram się nakreślić najważniejsze według mnie aspekty tworzenia testów... chociaż na pewno lista ta nie jest kompletna. Aha, no i nie jestem w stanie podać niezawodnej recepty na "dobry test". Zgłębiam temat od dobrych kilku lat i sam ciągle się uczę, więc cudów nie ma - praktyka i identyfikowanie własnych pomyłek jest najlepszym nauczycielem:).
Poprzednia część artykułu poświęconego Reactive Extensions (RX) dla .NET została zakończona prostym przykładem, w którym prostą obserwację kolekcji przeprowadzono nie tylko w ramach wątku bieżącego, ale również na odrębnym wątku. W tym celu wykorzystano jednego z wielu planistów (scheduler'ów) dostępnych w ramach RX. Przyjrzyjmy się im trochę bliżej. Otóż w Reactive Extension dla .NET można w bardzo prosty sposób sterować, na jakim wątku „pracuje” obserwowana kolekcja lub przy pomocy jakiego wątku chcem...
Nie dawno otrzymałem email z pytaniem dotyczącym tworzenia dokumentacji do kodu napisanego w C#: Poszukuje czegoś do zautomatyzowania procesu tworzenia dokumentacji dla kodu pisanego w C# i trafiłem na (..) temat odnośnie Sandcastle. Czy ten dodatek do Visual Studio pozwala tworzyć dokumentacje dla C# i jest kompatybilny z VS 2010? Spróbuję w niniejszym wpisie odpowiedzieć na to pytanie. Na temat tworzenie dokumentacji do oprogramowania pisałem już wcześniej w artykule „Tworzenie dokumentacji”. Wspomni...
Umieszczenie artykułu na dotnetomaniaku może dać znaczący wzrost liczby odwiedzin na blogu (:)). Można jednak pomóc temu procesowi i przyciągnąć do nas jeszcze więcej osób. W poniższym wpisie postaram się pokazać jak to zrobić.Nie śpiesz się
Moment pisania testów jest nierzadko kluczowy dla zmaksymalizowania efektywności całej procedury. Po kilku chwilach zastanowienia da się wyróżnić kilka najważniejszych etapów tworzenia oprogramowania, które z reguły są odpowiednią chwilą do implementacji testu.
autor: Dawno już nie pisałem nic o rozwiązaniach kolaboracyjnych, czas wrócić do kontunuacji serii. Wcześniej popełniłem dwa wpisy o: instalacji SharePoint Foundation 2010 oraz wyborach między SharePoint Foundation i Office 365. Teraz czas na instalacje “DUŻEJ” maszyny, czyli SharePoint Server 2010. W nastepnych postach przyjrzymy się już bliżej pewnych szczególnym aspektom – mając środowisko. WPROWADZENIE Zastanówmy się przez chwile jakie wersje tego środowiska mamy i czym się one różnią (poza ceną ocz...
autor: Platforma .NET, dzięki mechanizmowi refleksji, pozwala na dynamiczne wczytywanie do programu podzespołów (ang. assembly). Pozwala to w łatwy sposób pisać rozszerzane przy pomocy pluginów aplikacje i na wiele innych rzeczy. Ostatnio potrzebowałem wykorzystać ten mechanizm do własnych celów. Aby zwiększyć bezpieczeństwo, postanowiłem ładować podzespoły do odzielnych domen aplikacyjnych. W ten sposób, jeśli po załadowaniu podzespołu i wykonaniu jego kodu pojawi się błąd, główna domena aplik...
autor: Z dzisiejszej ankiety na FanPage'u dotnetomaniaka wynika, że sporo z nas na co dzień tworzy aplikacje ASP.NET (czy to WebForms czy też MVC). Zapewne zatem przyda nam się trochę darmowej wiedzy od Googla, co i jak wpływa na wyniki wyszukiwania i PR. Czy wiesz np. jak robot Google traktuje adresy z '-' a adresy z '_'? Jest jakaś różnica a może nie ma? Czy adresy z '/' na końcu są lepsze od tych bez? Czy dodawanie www do domeny ma jakieś znaczenie? Na te i inne pytania odpowie...
W ramach serii postów dotyczących Reactive Extensions przyjrzeliśmy się już problemom związanych z asynchronicznością oraz przyjrzeliśmy się bliżej kolekcjom i wzorcu obserwatora (IObserver, IObservable). W tym wpisie zobaczymy pierwszy przykład kodu wykorzystującego RX. Jak wspominałem wcześniej, w .NET 4.0 jest wbudowane pewne wsparcie dla IObserver i IObservable. Jednak są to tylko definicje wspomnianych interfejsów, aby wykorzystać pełne możliwości RX, trzeba je zainstalować i dołączyć do projektu, w...
Programowanie rozproszone 169 dni, 7 minut temu 69 rozwiń
W ramach kontynuacji tematyki związanej z Reactive Extensions (RX)przyjrzyjmy się elementom, które stoją u podstaw ich działania, czyli kolekcjom i wzorcowi Obserwator. W poprzedniej części artykułu poznaliśmy cel przyświecającym twórcom Reactive Extensions (RX) jak i skąd można pobrać wspomniane rozszerzenia. Skoro już mamy zainstalowane Reactive Extensions (Rx), zacznijmy przyglądać się jego możliwością.Jak wcześniej zostało wspomniane, Rx upraszcza programowanie asynchroniczne, pozwala na łatwe filtr...
Programowanie rozproszone 170 dni, 2 godziny, 31 minut temu 113 rozwiń
Na tak postawione pytanie aż chciałoby się odpowiedzieć: "testować wszystko, you fool!". Życie uczy jednak, że takie podejście jest bardzo niepraktyczne i na dłuższą metę nie ma sensu. Dążenie do pokrycia 100% kodu mija się z celem i jest po prostu stratą czasu. O powodach pisania testów pisałem na początku tego cyklu. Są jednak miejsca, w których koszt napisania testu jest bardzo duży, a jego wartość - znikoma. Zacznijmy więc od odpowiedzi na trudniejsze pytanie. Czego nie testować?
Jako że nie dawno przedstawiłem na spotkaniu Łódzkiej grupy profesjonalistów IT & .NET prezentację poświęconą „Wprowadzenie do Reactive Extensions (RX) dla .NET” (patrz informacja: Zapraszam na prezentację: "Wstęp do Reactive Extensions dla .NET (RX)" oraz Prezentacja i kod ze spotkania pt.: "Wprowadzenie do Reactive Extensions (RX) dla .NET" [PL]). Postanowiłem czytelnikom bloga „Programowanie i Technologie” również przybliżyć temat Reactive Extensions, więc jeżeli zdarzyło Ci się tworzyć aplikacje...
Programowanie rozproszone 170 dni, 2 godziny, 31 minut temu 131 rozwiń
Często musimy implementować interfejs INotifyPropertyChanged. Szczególnie w przypadku wykorzystania wzorca MVVM oraz WPF. Najczęściej programiści wykorzystują podstawową implementację i przekazują nazwę parametru jako czysty string np:if(PropertyChanged!=null) { PropertyChanged(this,new PropertyChangedEventArgs("propName")); } Wszystko działa bardzo dobrze, dopóki nie zmienimy nazwy właściwości. Przede wszystkim należy wtedy pamiętać o zaktualizowaniu wszystkich wywołań ProperyChanged. Nie możemy po...
autor:Czy mój system jest zdrowy? Pewnego słonecznego poranka, z braku laku uruchomiłem SQL Server Profiler'a. Bez konkretnego celu, postanowiłem przejrzeć rodzaj i ilości zapytań SQL które są generowane podczas jednego wejścia na stronę pewnego systemu z którym pracowałem. Ku mojemu zakoczeniu, web'owa aplikacja okazała się bardzo skuteczna w produkcji dużej liczby zapytań do pobrania małej ilości danych. Trace w Profiler'rze wyglądał jak świąteczna lista życzeń. We wspomnianym przypadku, jednym z pow...
Bazy danych i XML 181 dni, 9 godzin, 24 minuty temu 282 rozwiń
Autor: Nie tak dawno przedstawiłem na spotkaniu Łódzkiej grupy profesjonalistów IT & .NET prezentację poświęconą „Wprowadzenie do Reactive Extensions (RX) dla .NET” (patrz informacja: Zapraszam na prezentację: "Wstęp do Reactive Extensions dla .NET (RX)"). Tych, którzy chcieliby się zapoznać z prezentacją lub kodem źródłowym, który powstał podczas prezentacji, zapraszam do obejrzenia mojej prezentacji umieszczonej na portalu SlideShare....
Programowanie rozproszone 186 dni, 18 godzin, 6 minut temu 216 rozwiń
Kilka dni temu, w zgodzie z tym co wykazała ankieta - Programiści to stworzenia nocne - kodowałem sobie jakieś mało znaczące rzeczy pomiędzy 2 a 3 nad ranem. Jako, że niewiele się o tej porze dzieje, można spokojnie skupić się na programowaniu :). Jakież było moje zdziwienie, gdy o godzinie 2:28 nagle zaczęły spływać raporty błędów z dotnetomaniaka. Sam fakt pojawienia się błędów nie jest jeszcze jakiś niezwykły - wiadomo, od czasu do czasu może pójść coś nie tak. Bardziej interesujący był komunikat kt...
SyntaxWalker służy do rekursywnego odwiedzania wszystkich węzłów drzewa składni. Za pomocą SyntaxWalker można zbadać/odczytać strukturę kodu: using System; using System.Collections.Generic; using System.Linq; using Roslyn.Compilers.CSharp; namespace GettingStartedCS { class SyntaxWalkerTest { private static string source = @" using System; using System.Collections; using System.Linq; using System.Text; ...
Polecamy
Ostatnio na blogu
Podsumowanie #5 - tydzień 2...
Najaktywniejsi
