Używając Message Inspector możemy modyfikować wiadomości przychodzące i wychodzące zarówno po stronie serwera jak i klienta. Wystarczy zaimplementować dwa interfejsy: IClientMessageInspector oraz IDispatchMessageInspector. Ich definicja wygląda następująco:publicinterface IClientMessageInspector { void AfterReceiveReply(ref Message reply, object correlationState); object BeforeSendRequest(ref Message request, IClientChannel channel); } publicinterface IDispatchMessageInspector { object AfterR...
Programowanie rozproszone 5008 dni, 2 godziny, 46 minut temu 48 źrodło rozwiń
Witam w drugiej części wpisu, poświęconej tworzeniu stron w oparciu o technologię ASP.NET MVC 2. Żeby nie przedłużać, przedstawię plan działań na dziś, a wygląda on następująco: Dodanie klasy rozszerzającej nasz model Osoby Dodanie metody Create Dodanie metody Edit Dodanie metody Delete Po zrealizowaniu powyższych czynności, nasza aplikacja będzie prezentować już jakiś sensownych poziom:) Dziś trochę przyśpieszymy tempo więc będzie trochę mniej prowadzenia za rękę, bo poprzedni wpis powinien dać już ...
Rozważmy architekturę w której na początku ładujemy dane do cache a następnie na poszczególnych stronach wyświetlamy dane zbuforowane. Przyspieszy to oczywiście znacząco działanie aplikacji. Jednym z podejść jest załadowanie danych w momencie startu aplikacji (plik global). Rozwiązanie dobre jednak metoda Application_Start jest wywoływana tak naprawdę w momencie otrzymania pierwszego zapytania – czyli w sytuacji gdy pierwszy użytkownik naszego serwisu próbuje otworzyć stronę. Taki użytkownik doświadczy n...
Czy zastanawialiście się kiedyś jak dodawać parametry doSqlCommand? Klasa ta zawiera pole Parameters typy SqlParameterCollection, na którym możemy wykonać między innymi metodę AddWithValue(string, object). W internecie jak i w dokumentacji w nazwach parametrów na początku jest zawsze użyty znak “@”. Przy okazji jednego z projektów musiałem odpowiedzieć sobie na pytanie: Czy muszę zadbać o “@” przy nazwie parametru? Nie zastanawiając się długo postanowiłem, zgodnie duchem empiryzmu, sprawdzić co się stani...
Bazy danych i XML 5011 dni, 18 godzin, 24 minuty temu 146 źrodło rozwiń
W jednym z poprzednich artykułów pokazałem jak zintegrować platformę Azure z PHP. Czas na Jave!: http://msdn.microsoft.com/pl-pl/library/java-oraz-platforma-azure?id=rss
Programowanie rozproszone 5012 dni, 6 godzin, 24 minuty temu 39 źrodło rozwiń
Kilka dni temu opublikowany został najnowszy numer (02/2011) magazynu SDJournal. Spośród wszystkich artykułów chciałbym szczególnie polecić jeden, którego tematyka jest mi ostatni czasy bardzo bliska. Mam tu na myśli artykuł NHibernate vs Entity Framework. Frameworki ORM dla platformy .NET autorstwa Agnieszki Polak oraz Przemysława Krysztowiaka...
Jakiś czas temu był na tym blogu wpis dotyczący GridView i TemplateField, czyli sposobu wygodniejszą wizualizację i edycję danych tabelarycznych. W ten sposób łatwo można zamienić skomplikowane numeryczne identyfikatory (pochodzące z kluczy obcych) na dropdown-listy przedstawiające dane z innych tabel. Jednak co się stanie, gdy nasza kolumna z identyfikatorami dopuszcza wartości puste (NULL)? Otóż pojawi się wtedy „błąd serwera w aplikacji ....”. Zobaczmy jak sobie można z tym poradzić.Załóżmy, że pierwo...
W ramach przygotowania do dalszej pracy podjąłem zamiar zwiększenia jakości tworzonego kodu. Narzędzi zwiększających produktywność programisty jest oczywiście wiele. Osobom znającym już jednak podstawy, na początek, polecam zapoznanie się z programem FxCop. Jest to darmowe narzędzie od Microsoftu służące do przeprowadzania statycznej analizy kodu (oczywiście osoby dysponujące wersjami Visual Studio innymi niż Express nie...
Po przerwie związanej ze świętami, mam nadzieję, że blog wróci do dawnej formy… W bazach danych wykorzystuje się zwykle jako wartości kluczy głównych i obcych liczby całkowite – INT. Drugim podejściem (mniej popularnym) jest wykorzystanie globalnych identyfikatorów GUID. Jaka jest tak naprawdę różnica? Skupmy się na zaletach i wadach każdego z nich. Zaczynamy od typów całkowitych (int). Zalety: -bardzo mały rozmiar (tylko 4 bajty), -naturalna postać – każdy kolejny wiersz to sekwencja ...
Bazy danych i XML 5013 dni, 21 godzin, 47 minut temu 138 źrodło rozwiń
Jakiś czas temu pisałem na temat jak DataSet’a przenieść do MsSQL'a (z wykorzystaniem SQLServer Management Objects i SqlBulkCopy). W takim przypadku, gdy kolumna w tabeli w DataSet'cie ma ustawioną właściwość AutoIncrement, to należy w kolumnie w SQL serwerze ustawić Identity na true, oraz IdentityIncrement i IdentitySeed na odpowiednie im wartości (AutoIncrementStep i AutoIncrementSeed) pochodzącej ze źródłowej kolumny z tabeli z DataSet'a. Niestety w takim przypadku, podczas późniejszego ładowania dany...
Bazy danych i XML 5015 dni, 1 godzinę, 47 minut temu 76 źrodło rozwiń
Autor: Kilka dni temu w poście Statystyka… zapowiedziałem, iż postaram się zaproponować kawałki kodu, które umożliwią włączenie statystyk dla zapytań LINQ to SQL. Zadanie okazało się trochę trudniejsze niż myślałem, ale udało się coś osiągnąć. Zobaczmy jak.Rozwiązanie Naïve Pierwsze co przychodzi na myśl to proste rozszerzenie obiektu DataContext o nasze metody. Mniej więcej tak: publicstaticclassDataContextExt { publicstatic T WithStatistics
Bazy danych i XML 5015 dni, 1 godzinę, 47 minut temu 44 źrodło rozwiń
Nie… w tym wpisie nie będzie o statystyce odwiedzin bloga i innych podobnych rzeczach, o których można dziś na wielu blogach (u mnie o tym będzie może następny wpis :)). Będzie o klasie o której pewnie niewielu z was wcześniej wiedziało. Do wczoraj nie wiedziałem także i ja. Poznajcie – SqlStatistics. Klasa jest internal sealed tak więc czemu o niej cokolwiek piszę? A no ponieważ do samej klasy dostać się nie możemy natomiast do danych przez nią zbieranych już tak. Śledząc jej zależności Reflector’em zau...
Bazy danych i XML 5017 dni, 4 godziny, 50 minut temu 97 źrodło rozwiń
ASP.NET dostarcza wygodnego i prostego mechanizmu do obsługi profili użytkowników. Do profilu użytkownika można łatwo dodać kolejne dane – w tym celu wystarczy odpowiednio zmodyfikować web.config, np. w następujący sposób....
Dziś kolejne, mam nadzieję, ciekawe zastosowanie warunkowego breakpointu. Zanim jednak przejdziemy do omawiania nakreślmy naszą sytuację wyjściową. Załóżmy, że mamy kawałek kodu aplikacji, który jest dość często wykorzystywany z różnych miejsc. privatevoid Calculate(paramsint[] coefficients) { //do sth with coeffs Array.ForEach(coefficients, Console.WriteLine); } To co on robi nie jest ważne. Istotne jest, że chcielibyśmy postawić w niej breakpoint’a i zobaczyć jak się zachowuje w pewnych syt...
Przy pisaniu którejś z kolei aplikacji na pewno natkniemy się na problem nadania unikalnej nazwy jakiemuś plikowi. Czasami jest to podyktowane tym, że nie obchodzi nas jaka będzie nazwa takiego pliku, bo ścieżka do niego będzie przechowywana np. w bazie danych, lub nie chcemy aby plik o identycznej nazwie znalazł się jeszcze raz w tym samym katalogu, co oczywiście zaowocuje błędem. Poniżej przedstawiam jak wygenerować taką unikalną nazwę pliku/katalogu. Niektóre z poniższych przykładów nadawają się równi...
Niecały tydzień temu napisałem posta o LINQ to XML. Wtedy jednak zająłem się tylko tym czym jest XML, co to jest LINQ oraz jak wygląda przetwarzanie dokumentów XML przy pomocy przestrzeni nazw System.Xml. Dzisiaj jako kontynuacja wpisu pokażę już konkretne zapytania XLINQ oraz jak ogólnie wygląda przestrzeń nazw System.Xml.Linq...
Bazy danych i XML 5019 dni, 14 godzin, 57 minut temu 85 źrodło rozwiń
Dzisiaj kolejny odcinek z serii "krótki kod prowadzącego". W tym odcinku zajmę się obiektem FormCollection (NameValueCollection). Obiekt ten jest dobrze znany każdemu programiście piszącemu w ASP.NET MVC. FormCollection jest to kolekcja przechowująca dane formularza przekazywanego do serwera podczas POSTa. Ot zwykły obiekt typu "kolekcja". Niestety przymiotnik "zwykły" po jakimś czas zaczął mi doskwierać. "Zwykłość" tego obiektu objawia się bowiem brakiem możliwości potraktowania g...
autor: Na temat Open XML już dłuższy czas nie pisałem. Dzisiaj chciałbym wrócić do tematu i napisać jak można ustawić odstępy między liniami w paragrafie w pliku Word'a (DOCX).
Kiedy piszemy aplikacje, prędzej czy później nadejdzie czas kiedy będziemy musieli korzystać z przetwarzania dokumentów XML. Nie ważne czy będziemy je tworzyć czy przetwarzać już istniejące. Dokument XML jest niczym innym jak zwykłym plikiem tekstowym lub strumieniem w pamięci. A więc bez problemu możemy napisać klasę lub klasy parsujące tekst XML i go odpowiednio przerabiać. Jednak samodzielne pisanie takiej klasy mija się z celem, zwłaszcza kiedy mamy do przetworzenia na przykład jeden plik. Oczywiście...
Bazy danych i XML 5019 dni, 14 godzin, 57 minut temu 105 źrodło rozwiń
Od 2011 roku wchodzą w życie nowe przepisy dotyczące dni ustawowo wolnych od pracy. Do tej pory jeżeli jakieś święto wypadło w sobotę lub niedzielę to można było wybrać sobie inny wolny dzień zamiast utraconego święta. Od 2011 jeżeli święto wypadnie w weekend to ten dodatkowy dzień wolny przepada. W zamian dostajemy wolne w święto Trzech Króli (6 stycznia). W tym poście opisałem co jest potrzebne aby obliczyć wszystkie dni wolne od pracy.