Najczęściej programiści korzystają z klasy Dictionary ale warto rozważyć dwie inne kolekcje. ListDictionary przechowuje dane na liście jednokierunkowej. Dla słowników z kilkoma kluczami zwykle jest to szybsze niż standardowy hash table, wykorzystywany w Dictionary. Szybciej jest po prostu przejść przez 10 elementów, niż liczyć skomplikowaną funkcję haszującą.
Strona głównaUżytkownik
psz750 | użytkownik
.NET zawiera klasy przeznaczone do leniwej inicjalizacji i zwykle nie trzeba samemu implementować tego wzorca. Jeśli jakiś obiekt, chcemy inicjalizować dopiero w momencie, gdy jest on potrzebny to można skorzystać ze wspomnianych typów.
Ostatnio w sieci ukazało się wiele przykładów jak posprzątać kod w kontrolerach mvc. Sam podjąłem próbę walki z ciągle powtarzającym się kodem. Rozdmuchany kontroler z akcjami wypchanymi kodem wszelakiej maści, od walidacji po wywołania serwisów, repozytoriów, łapanie wyjątków i jak do tego jeszcze zaplącze się jakaś cząstka logiki biznesowej nie przyniesie nam nic dobrego.
Sztuka programowania 3889 dni, 4 godziny, 53 minuty temu 315 źrodło rozwiń
Post ten dotyczy tematu efektywnego pobierania danych z Active Directory. Załóżmy, że chcemy pobrać listę użytkowników przy czym interesują nas tylko niektóre właściwości, które ich opisują. Pokarzę trzy niewiele różniące się z pozoru sposoby odczytania potrzebnych nam danych. Pozornie ponieważ te trzy podejścia znacząco różnią się wydajnością.
Simple.Data jest bardzo fajne, ale czasem… niewystarczające. Na przykład na chwilę obecną nie są wspierane podzapytania. Wtedy z pomocą przychodzi biblioteka Simple.Data.RawSql dająca możliwość wysyłania “gołego” SQLa przez Simple.Data.
Bazy danych i XML 3892 dni, 12 godzin, 57 minut temu 115 źrodło rozwiń
Filtry w ASP.NET MVC potrafią znaczącą polepszyć czytelność kodu, jeśli dana logika musi być wykonywana dla wielu akcji. Stanowią one tak naprawdę programowanie aspektowe, które jest całkowicie odmienne od powszechnie znanego programowania obiektowego. Ze względu na to, że programiści nie są przyzwyczajeni do tego modelu, należy uważać jak wykorzystuje się filtry. Klasyczne zastosowanie aspektów czy filtrów to caching, logging czy autoryzacja. Problemy te nalezą do grupy tzw. cross-cutting concerns, czy...
Dzisiaj nie technicznie jednak temat bardzo ważny bo przecież połowę życia spędzamy w pracy. Tak połowę. Czas to najcenniejszy zasób jaki mamy (najcenniejszy asset jeśli pracujesz w korpo). Doba dla wszystkich ma tyle samo godzin, minut i sekund. Nikt na ziemi nie dostał go mniej lub więcej, wszyscy dokładnie tyle samo, jak w komunie.
O projekcie Fody po raz pierwszy, usłyszałem dość dawno temu, ale dopiero ostatnia prezentacja Tomka na Wroc.NET uświadomiła mi jak fajny jest to projekt. Ja sam będę miał przyjemność prezentować Fody’ego w nadchodzącym tygodniu (na spotkaniu KGD.NET) a dzisiaj wstęp na blogu. Czym jest fody? Krótko mówiąc to framework, który umożliwia odpalanie własnych tkaczy modyfikujących kod już po kompilacji. Dzięki temu cały tzw. pluming code, możemy wyciągnąć z naszego kodu źródłowego do osobnych modułów.
Kilka wpisów wcześniej pisałem o atrybucie OutputCache. Dla prostych zastosowań sprawdza się dość dobrze, ale bardzo szybko można dostrzec jego ograniczenia i błędy. Przedstawmy najpierw kilka niedogodności związanych z OutputCache.
CSRF jest dzisiaj bardzo dobrze znanym atakiem, ale niestety wciąż wiele aplikacji internetowych pozostaje niezabezpieczonych. W poście nie będę opisywał szczegółowo CSRF ponieważ w Internecie jest już od dawna mnóstwo informacji o tym. Chciałbym jednak pokazać jak dzięki ASP.NET MVC możemy w łatwy sposób uchronić się przed atakiem. W MVC standardowy formularz tworzymy w następujący sposób:@using (Html.BeginForm("Manage", "Account")) { } Następnie mamy w kontrolerze akcję implementującą obsług...
W poprzednim wpisie Czas UTC a DateTime.Kind byłem zbyt mało stanowczy lub nie wyczerpałem tematu Maciek w komentarzu podzielił się linkiem i skomentował krótko – DateTime.Now praktycznie nigdy nie ma sensu Autor podlikowanego posta (The case against DateTime.Now) proponuje aby DateTime.Now i DateTimeKind.Local zostały w następnej wersji .NET oznaczone jako [Obsolete]. Postaram się streścić ten ar...
Ostatnio pierwszy raz w życiu miałem okazję ustawiać nagłówki HTTP odnośnie cachowania. Pogłębiłem trochę temat i okazało się, że trzeba myśleć nie w kategoriach czasu lokalnego, tylko czasu uniwersalnego. Na nasze: zamiast DateTime.Now trzeba używać DateTime.UtcNow. Wstęp: Przechowujesz datę i czas? Może warto w UTC? DateTime ma właściwość Kind typu DateTimeKind: public enum D...
Są momenty, w których jedyne co wypada zrobić do dać sobie samemu blachę z wykrzyknieniem: “kRRRRetynie!”. Tak miałem ostatnio, gdy po wdrożeniu kolejnej wersji systemu dostałem od klienta komunikat: “e ziom, nie działa!”. Po inwestygacji logów przyczyna okazała się dość prozaiczna: owszem, deploy poszedł, wszystko się udało, ale “użytkownik końcowy” nie zrobił (bo i skąd miał wiedzieć że trzeba to zrobić?) full-refresh, aby przeglądarka zaciągnęła now...
Temat czytelności kodu jest bardzo dyskusyjny. Mam na myśli to, że jest tutaj wiele “zależy”. Funkcję, którą dziś opisuję, popełniłem kilka dni temu, nie myśląć specjalnie o tym, że będą ją tutaj omawiał. Spójrz najpierw na oryginalny kod poniżej krytycznym okiem, a później zapraszam do mojej analizy “dlaczego tak, a nie inaczej”.
Sztuka programowania 3901 dni, 14 godzin, 27 minut temu 467 źrodło rozwiń
Spodobała mi się sama nazwa „Onion Architecture” jak i to co pod tą nazwą przedstawił Jeffrey Palermo. Niby zasady znane od dawna, a jednak zostały one umiejętnie pokazane na nowo. Niestety na sieci ciężko znaleźć szkielet przykładowej aplikacji, która spełniała by podstawowe założenia. W związku z tym na szybko zmontowałem takowy.
Architektura 3902 dni, 15 godzin, 30 minut temu 358 źrodło rozwiń
O problemach życia ze sprzętem z wysokim DPI pisał Scott Hanselman już jakiś czas temu (Living a High-DPI desktop lifestyle can be painful). Ja, dotychczas nie miałem z tym problemów jako, że nie posiadałem takowego. Od jakiegoś czasu pracuję jednak na MacBook Pro Retina, który z rozdzielczością 2560×1600 wystawia mnie na wszystkie te problemy, o których w swoim poście pisał Scott. Dziwne to było na początku, ale po chwili przyzwyczajenia jakoś one szczególnie mi nie przeszkadzają. Ot kolejne problemiki ...
CultureInfo zawiera informacje regionalne, przydatne, jeśli chcemy dostosować naszą aplikację do różnym krajów. Używamy tej klasy m.in. do określenia formatowania liczb, dat czy po prostu języka w jakim wyświetlamy tekst. Jeśli korzystamy z domyślnych ustawień regionalnych, wtedy poniższy kod wyświetli prawidłową wartość...
Cztery lata temu, popełniłem post „Zapomnijcie o windows forms”. Po czterech latach i wielu innych technologiach po drodze wracam do tematu. Ostatnio miałem okazję napisać mała aplikację w WPF, to był raczej test, a nie aplikacja dla klienta, jednak nie zmienia to faktu, że musiałem przysiąść i to napisać :) Nie wiem czy to tylko mnie tyczy, czy są też inni ludzie którzy podobnie myślą, ale osobiście nie zobaczyłem, żadnych pozytywnych zmian w tej technologii mimo upływu 48 miesięcy.
Każda strona zawiera wiele plików CSS oraz skryptów JS. Zwykle w celu przejrzystości i łatwiejszego utrzymania aplikacji, skrypty są rozdzielane na różne części logiczne. Podobnie jak w klasycznym programowaniu C#, w JS również korzystamy z komentarzy i formatowania kodu.. Ma to jednak pewien efekt uboczny dla wydajności. Każda spacja czy komentarz to dodatkowy tekst, który trzeba przesłać klientowi (przeglądarce). Najbardziej optymalną sytuacją byłoby usunięcie wszelkich spacji, komentarzy, które nie ...
Zarówno ASP.NET jak i ASP.NET MVC dostarczają bardzo prosty w użyciu mechanizm buforowania. Nie będę zajmował się tutaj Web Forms, a pokażę wyłącznie jak z tego korzystać w MVC. Buforowanie oczywiście służy do szybszego wyświetlania stron. Zamiast za każdym razem, wywoływać akcję w kontrolerze, wykonuje się ją raz a potem wynik przechowuje się w pamięci.