Gdyby było to fizycznie możliwe, chętnie przeprowadziłbym następujący eksperyment. Z odległej przeszłości – na przykład z połowy lat 90. poprzedniego stulecia – sprowadziłbym w obecne czasy dowolnego ponadprzeciętnie uzdolnionego programistę. Jak szybko odnalazłby się we współczesnym koderskim środowisku pracy?… W celu redukcji złożoności problemu poczyńmy daleko idące uproszczenia i pomińmy wszelk...
Istnieją dwie opcje, pierwsza klient prosi o soft i nie interesuje go konkretna technologia/zbiór bibliotek jaki zostanie wykorzystany do wytworzenia oprogramowania. Tutaj mamy dowolność. Wybieramy to co chcemy i jak chcemy i nie musimy się od razy na tym znać – możemy traktować projekt jako środowisko doświadczalne dla pewnych narzędzi i bibliotek, które zawsze chcieliśmy wykorzystać. W tym przypadku nie musimy wiedzieć dokładnie czy istnieje produkt XYZ, który spełni nasze oczekiwania, dowiemy się w tr...
Przyznam szczerze, że dotychczas z komunikacją między różnymi aplikacjami lub ich warstwami spotykałem się głownie w aspekcie usługowo-webowym. Taki scenariusz sprowadza się do takiego a nie innego wykorzystania webservice lub pochodnego ustrojstwa. Co jednak można zastosować jeżeli chcemy aby dwie nasze aplikacje miały możliwość pogadania ze sobą na lokalnej maszynie? Rozwiązań jest sporo albo i jeszcze więcej. Poczynając od SendMessage z Win32 API, współdzielonej pamięci, webservice, TCP, COM, DCOM n...
Programowanie rozproszone 3683 dni, 7 godzin, 28 minut temu 188 źrodło rozwiń
Niedawno w realizowanym po pracy projekcie przyszło mi zaimplementować funkcjonalność sklepowego koszyka który dostępny był by na każdej stronie tworzonego serwisu. Cała trudność w tym, że jednym z wymagań była możliwość zmieniania liczby zamówionych towarów w dowolnym momencie, bez wpływu na aktualnie przeglądaną zawartość...
Czasami chcemy mieć pewność, że zdarzenie nie zostanie podpięte dwa razy do tej samej metody. Przyjrzyjmy się jak to zrobić w C#:private EventHandler _Event; publicevent EventHandler ExampleEvent { add { if (Event ==null||!Event.GetInvocationList().Contains(value)) _Event += value; } remove { _Event -= value; } } Rozwiązaniem jest użycie metody GetInvocationList. Następnie podłączając metody do zdarzenia za pomocą += mamy pewność, że nie będzie duplikatów i metoda n...
Wpisy na temat śledzenia i logowania w .NET pojawiały się już wcześniej na tym blogu (np. „Śledzenie i logowanie zdarzeń (tracing and logging) na platformie .NET (przykłady w oparciu o C#).” i „Śledzimy w .NET dalej (dzisiaj uruchomimy własny podsłuch)”). Mechanizm wykorzystania elementów platformy .NET, jak: TraceSource, TraceListener i innych związanych z nimi jest dość wygodny, tym bardziej, że są dostępne gotowe klasy typu TraceListener zapisujące w plikach logi przy pomocy XML-a lub w których każdy ...
Dzisiaj pokażę jak zainstalować silnik bazodanowy SQL Server. Do instalacji zalecam zupełnie darmową i funkcjonalną wersję 2008 R2 Express. * Instalkę pobieramy bezpośrednio ze strony http://www.microsoft.com/express/Database/ Klikamy pobierz wybierając wersję 32/64 bit w zależności od posiadanego systemu. Zanim jednak przystąpimy do instalacji należy pobrać jeszcze kilka narzędzi. Są nimi:Microsoft .NET Framework 3.5 SP1 – linkMicrosoft Windows Installer 4.5 – linkWindows PowerShell 1.0 – link Do...
Bazy danych i XML 3685 dni, 17 godzin, 34 minuty temu 200 źrodło rozwiń
Autor: Dzisiejszego pięknego i powtórnie zimowego dnia zaszła potrzeba stworzenia kontrolki, która miałaby dwa wzorce zawartości: nagłowek i ciało. Wszystko szło pięknie. Stworzyłem sobie kontenery do wzorców, odpowiednią kontrolke i wszystkie inne potrzebne rzeczy. Gdy jednak przyszło do wykorzystania okazało się, że kontrolki umieszczone wewnątrz wzorców nie mają odwołać w pliku designera, ani nie są dostępne „globalnie” na stronie. Jakby nie patrzeć całkiem normalne zachwoanie tego typu zwierza, do ja...
Zachowania w WCF umożliwiają rozszerzanie funkcjonalności poprzez np. doczepianie niestandardowych modułów. Do dyspozycji mamy 4 typy, różniące się zasięgiem obejmowania: Service, Operation, Endpoint, Contract. Utworzenie zachowania sprowadza się do implementacji odpowiedniego interfejsu, który zawiera m.in. następujące metody:AddBindingParameters – umożliwia przekazanie dodatkowych parametrów. Validate –waliduje (np. czy usługa może zostać uruchomiona). ApplyDispatchBehavior/ApplyClientBehavior – służy ...
Programowanie rozproszone 3687 dni, 3 godziny, 52 minuty temu 49 źrodło rozwiń
Developer dashboard w SharePoint 2010 można włączyć tak: stsadm -o setproperty -pn developer -dashboard -pv ondemand Po wykonaniu tego polecenia pojawia się ikonka w górnym prawym rogu strony: Po kliknięciu pojawia się developer dashboard, gdzie między innymi są informacje o zapytaniach SQL jakie są wykonywane: Developer dashboard ma też swoją reprezentację w modelu obiektowym. Więcej informacji: http://blogs.msdn.com/b/pandrew/archive/2010/03/26/sharepoint-2010-developer-das...
Kolejny artykuł z serii Azure został właśnie opublikowany – tym razem o pojemnikach Azure Blobs.
Programowanie rozproszone 3687 dni, 23 godziny, 55 minut temu 26 źrodło rozwiń
Jakiś czas temu szukałem programu, który pozwoliłby mi sterowanie telefonem z Windows Mobile z poziomu komputera. Chodziło mi o możliwość wysłania sms, maila czy podgląd listy zadań. Szukając na sieci takiego programu ...
Jakiś czas temu opisywałem nowy plugin do Visual Studio 2010 – Image Optimizer. Wspomniałem w nim, że ułatwia on osadzanie obrazów jako string base64 i dzisiaj chciałbym ten temat rozwinąć.
Osoby, które tworzą aplikacje w WPF-ie i/lub Silverlight-cie na pewno spędzają wiele godzin edytując kod XAML. Wsparcie w Visual Studio 2010 względem 2008 poprawiło dla tego typu pracy, ale nadal warto wspomóc się zewnętrznymi dodatkami, które są darmowe 1. Pierwszy dodatek, który polecam to XAML Intellisense Presenter. Dzięki niemu IntelliSense w edytorze XAML zyskuje nowe możliwości takie jak filtrowanie, wyszukiwanie za pomocą notacji Pascala czyli pisze tylko DG, a okienko pokaże nam DataGrid. Aby z...
Jak z pomocą GITa radzić sobie w sytuacji, w które wprowadzając masę zmian, przez przypadek gdzieś w tym gąszczu wpisaliśmy sobie także i crasha. Mały poradnik :)
Czasami zdarzają się sytuacje, że pomimo usilnych prób nie możemy zreprodukować błędu u siebie na maszynie lokalnej. Musimy sprawdzić dlaczego nasza aplikacji źle działa na maszynie produkcyjnej. W tym wpisie postaram się przedstawić jakie narzędzia mamy do dyspozycji jeśli jeśli taka potrzeba zajdzie. Zobaczmy co jest zatem dostępne.Visual Studio Remote Debugging Pierwszą naszą opcją jest Remote debugging dostępny w VisualStudio. Wraz z zainstalowanym VS instalują nam się komponenty, które możemy wykorz...
Tak trochę po cichu ukazała się wczoraj finalna wersja ASP.NET MVC 3!
Czasami występuje potrzeba znalezienia informacji o tym jakie oprogramowanie jest zainstalowane na komputerze. Przykładowo chcemy się dowiedzieć, czy ktoś ma już zainstalowany dany program i gdzie jest zainstalowany. Wiedza ta jest potrzebna, gdy chcemy dodać przykładowo jakiś plik do katalogu z zainstalowanym już programem. Najprostszym przykładem jest pisanie różnego rodzaju pluginów. Problem nie występuje jeśli aplikacją została zainstalowana w katalogu domyślnym...
Autor: Wygłosiłem parę godzin temu zdalną prezentację Poznaj tajniki programowania w Windows Phone 7 - Notyfikacje na portalu virtualstudy.pl. Najpierw omówiłem ogólny model wysyłania powiadomień na telefon, a następnie poszczególne rodzaje notyfikacji. Przy okazji zapoznałem słuchaczy z przydatnymi informacjami na temat kafelków. W drugiej części prezentacji przedstawiłem implementację serwisu do wysyłania notyfikacji i aplikację na WP7, która je odbiera. Można było zobaczyć, jak zachowują się w prakt...
Profilowanie aplikacji przy użyciu dotTrace Przyznam się, że nie miałem w planach poruszania tematu profilowania aplikacji jeszcze przez jakiś czas. Rozpoczęcie masowego importu danych ze strony sejmu do projektu Rankingu Sejmowego zmusiło mnie do zmiany planów. Po przerobieniu przez kilka godzin około 30% danych z ostatniej kadencji Sejmu (około 20 tysięcy plików HTML ważących razem 120 MB) zacząłem zastanawiać się czy dałoby się ten proces trochę przyspieszyć. Do badania wydajności kodu posłużyły mi d...