In my pervious post I described basic multithreading constructs in C#. Now, I would like to compare them to conforming constructs in Java. It might be useful for those of you, who has already created some multithreaded applications in Java, and would like to learn how to do the same in C#.
Sztuka programowania 2526 dni, 2 godziny, 42 minuty temu 203 źrodło rozwiń
Kiedyś już o tym pisałem pobieżnie (kilka lat temu), ale dzisiaj chciałbym pokazać inny przykład wraz ze wszystkimi możliwymi parametrami. Stwórzmy najpierw klasyczny formularz i kontroler: @using (Html.BeginForm()) { @Html.DropDownList("selectedGroup",new SelectList(new []{"All","GroupA","GroupB"})) <input type="submit" value="Refresh"> } Prosty formularz z ComboBox i przyciskiem, który powoduje ponowne załadowanie strony oraz wykonanie metody GetData z nowym parametrem:public ActionResul...
Jedną z charakterystycznych cech aplikacji internetowych jest warstwa prezentacji składająca się m. in. z kodu HTML i stylów CSS. Przygotowanie widoków często bywa żmudne – myślę, że zgodzi się ze mną każdy, kto choć raz musiał się z tym zmierzyć. Na szczęście na przestrzeni czasu powstało wiele dodatków i narzędzi wspomagających ten mozolny i przykry proces. Ostatnio kolega polecił mi dodatek, którego do tej pory nie ...
W starszych wersjach .NET, do dyspozycji był m.in. strumień GZipStream. Do prostych zastosować wystarczał ale zwykle, trzeba było opakowywać go w swoje klasy, aby np. skompresować cały folder. Od .NET 4.5 mamy klasę ZipFile, która dostarcza kilka przydatnych metod. Najpierw należy dodać referencję do System.IO.Compression.FileSystem, a potem wystarczy skorzystać jednej ze statycznych metod...
Odcinek poświęcony interfejsowi oraz podstawom obsługi systemu Project Siena.
Wspomniałem o właściwościach DirectorySearcher.SizeLimit oraz DirectorySearcher.PageSize, których poprawne ustawienie zapewnia, że z bazy danych AD można pobrać więcej obiektów niż ustawiony na serwerze limit. Tym razem chciałbym sprecyzować do czego służą obie właściwości bo moim zdaniem dokumentacja nie jest precyzyjna, co potwierdza zresztą spora liczba pytań w Internecie na ten temat. Otóż SizeLimit określa maksymalną liczbę obiektów jaka może zostać zwrócona w wyniku wy...
Dzisiejszy wpis o książkach, z których miałem okazję korzystać w ciągu ostatnich 12 miesięcy. Niektóre pozycje są warte polecenia, inne mniej, a niektóre w ogóle. Z książkami jest jeden podstawowy problem – bardzo szybko się starzeją...
Czytając jeden z ostatnich postów u Maćka zauważyłem, że w komentarzach pojawiła się krótka wymiana opinii na temat wyboru “właściwego” podejścia w kontekście korzystania z Entity Framework. Sam miałem okazję używać każdego z podejść oferowanych przez EF i z biegiem czasu zacząłem dostrzegać plusy i minusy poszczególnych podejść. W tym poście postanowiłem zebrać moje przemyślenia na ten temat.
Kolejny odcinek poświęcony Sienie - tym razem zobaczycie jak zbudować prostą aplikacje pozwalającą wyświetlać filmy.
Extension Methods – metody rozszerzające, które pozwalają na wykorzystanie raz napisanego kodu w wielu miejscach bez naginania zasady DRY (Don’t Repeat Yourself). Metoda taka musi być statyczna...
Sztuka programowania 2530 dni, 20 godzin, 7 minut temu 235 źrodło rozwiń
Najprościej definiując problem: Czy mamy tylko jeden return z metody, czy też mamy ich kilka w różnych miejscach. Mówię też o metodach, które nie zwracają wartości. Metodę void też można skończyć wcześniej...
Sztuka programowania 2530 dni, 20 godzin, 7 minut temu 228 źrodło rozwiń
W ostatnich odcinkach serii wspominałem o tym jak można w łatwy sposób wyrzucić do konsoli informacje o stanie Naszej aplikacji. Dzisiaj pokazuję jak można formatować te dane, uzyskując większy porządek w danych. Umiętność formatowania danych, czy to pisanych ręcznie czy pochodzących ze zmiennych przydaj...
Sztuka programowania 2531 dni, 17 godzin, 35 minut temu 37 źrodło rozwiń
Dzisiaj chciałbym trochę opowiedzieć o tym jak logować do konsoli całe obiekty, tak byśmy mieli podgląd nie tylko na same zmienne co już prezentowałem w poprzednich artykułach, ale całe złożone elementy. Zaczniemy od prostego kodu z dwoma przyciskami: Kod realizuje następujące zadania:Mamy dwa przycis...
Sztuka programowania 2531 dni, 17 godzin, 35 minut temu 39 źrodło rozwiń
W tej części kursu zajmiemy się pojęciem inicjalizacji i czyszczenia danych. Wielkiej filozofii tutaj nie ma; w NUnit działa to tak:Jeśli chcemy, aby jedna z metod uruchamiała się przed każdym uruchomieniem naszego testu, aby np. inicjalizować dane, nakładamy na nią atrybut [SetUp].Jeśli zechcemy, aby metoda uruchamiała się po każdym uruchomieniu testu w celu np. czyszczenia danych — nakładamy atrybut [TearDown]...
Sztuka programowania 2533 dni, 19 godzin, 49 minut temu 142 źrodło rozwiń
Dystrybucja lokalnych bibliotek jako NuGet'y w oparciu o TFS Build i NuGet Server.
Zobacz cykl artykułów o projekcie Siena - narzędziu pozwalającym budować aplikacje Windows 8 bez żadnych umiejętności programistycznych.
W poprzednim wpisie pokazałem Wam zalety narzędzia MvcSiteMapProvider. Zapowiedziałem też, że to nie koniec wpisów na ten temat… Jako, że nie rzucam słów na wiatr, dziś obiecana kontynuacja. A konkretnie, tak jak można wyczytać w tytule, zajmę się przedstawieniem jak za pomocą narzędzia MvcSiteMapProvider można trochę „zkustomizować” generowaną automatycznie listę służącą jako menu nawigacyjne. Naszym celem będzie, aby nadać tej liście odpowiednie klasy Bootstrap, tak aby wyglądało to jak należy. Zobaczy...
Każdy programista webowy wie doskonale czym jest sitemap’a i dlaczego ważne jest by ją mieć na stronach, które tworzymy. Jeśli jednak nie jesteś programistą tworzącym strony i aplikacje internetowe to śpieszę z wyjaśnieniem – sitemap’a to taki plik XML, znajdujący się zwykle w głównym katalogu aplikacji, który zawiera, jak sama nazwa wskazuje, mapę witryny czyli listę wszystkich podstron. Roboty wyszukiwarek internetowych wykorzystują tę listę do „zrozumienia” struktury witryny i dzięki temu szybciej mog...
.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.
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ą.