Jakiś czas temu (nawet nie wiedziałem, że to już tyle czasu minęło!) .NET zaoferował nam możliwość korzystania z inicjalizatorów obiektu, zamiast stosowania klasycznej inicjalizacji...
Sztuka programowania 3266 dni, 12 godzin, 3 minuty temu 282 źrodło rozwiń
Debugging is a lot like police forensics. You’re chasing the villain (bug) by analyzing eye-witness accounts (users’ reports), inspecting the crime scene (source code), and combing through often the most helpful resource: CCTV recordings (application logs), if only their quality allows. I got upset lately, looking for the needle in a stack of log spam: People who argue that it's "useful" to keep DEBUG level logging in produc...
Sztuka programowania 3266 dni, 12 godzin, 3 minuty temu 207 źrodło rozwiń
Synchronizacja i przechowywanie sesji może być bardzo niekorzystne dla wydajności aplikacji webowej. Wyobraźmy sobie, że użytkownik wywołuje kontroler kilkukrotnie w ramach tej samej sesji. ASP.NET MVC musi zadbać o to, aby sesja zawsze miała prawidłową wartość. Niestety jest to osiągane poprzez kolejkowanie zapytaniach w ramach tej samej sesji. Jeśli zatem wywołujemy dwukrotnie metodę A, nie zostanie to wykonane współbieżnie. Dobrą stroną takiego mechanizmu jest fakt, że zapis i odczyt sesji jest bezpie...
Ostatnimi czasy dwa razy w swoich postach poruszałem temat narzędzia Bootstrap. Wspomniałem tam między innymi, że możliwe jest skonfigurowanie własnych zmiennych LESS, które możemy później używać we własnych tematach... Stwierdziłem więc, że skoro jestem już przy narzędziach takich jak Bootstrap, to warto również poruszyć ten temat i zrobić małe wprowadzenie do LESS. Jako, że temat jest dość obszerny, postanowiłem że napiszę dwa wpisy na ten temat i w kolejnym postaram się dokładniej przybliżyć możliwośc...
FileTable to kolejny mechanizm dostępny w SQL Server mający na celu ułatwić przechowywanie dużej ilości danych np. plików. W starych bazach danych, często przechowywano pliki osobno na serwerze, a baza danych zawierała wyłącznie wskaźniki do tych plików. Podejście powodowało problemy, w przypadku synchronizacji danych tzn. plików dostępnych na dysku a ich identyfikatorami w bazie. Zwykle nie było innego wyjścia, ponieważ przechowywanie dużej ilości danych w bazach (plików graficznych) nie było zbyt optym...
Bazy danych i XML 3269 dni, 21 godzin, 47 minut temu 197 źrodło rozwiń
Powiedzmy, że potrzebujemy wyciągnąć PostCode użytkownika (a po drodze mamy jeszcze Address): string postCode = person.Address.PostCode.ToString(); Nie mamy pewności czy person nie jest nullem, a następnie czy person.Address nie jest nullem, a następnie person.Address.PostCode … . Aby się zabezpieczyć przed NullReferenceException musimy napisać trochę dodatkowego kodu, jak np: ...
Od jakiegoś czasu nosiłem się z zamiarem rozpoczęcia na tym blogu jakiegoś cyklu wpisów – od czasu kiedy popełniłem serię wpisów przygotowujących do egzaminu MCSD: 70-480 minęło już trochę czasu… Zastanawiałem się trochę nad tematem i ostatecznie postanowiłem, że będzie to implementacja różnych wzorców projektowych w C#. Wiem, wiem… Temat wzorców jest dość podstawowy, jednak moim zdaniem fajnie będzie zebrać je wszystkie w jednym miejscu, a przy okazji uporządkować sobie trochę wiedzę na ich temat. Posta...
Sztuka programowania 3274 dni, 9 godzin, 13 minut temu 434 źrodło rozwiń
Domyślnie ASP.NET MVC blokuje metody zwracające JSON, które wywołuje się za pomocą HTTP GET. Przykład:public ActionResult GetData() { return Json(new []{new Person("Piotr","Zielinski")}); } Wykonanie zakończy się wyjątkiem: This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet. Z tego względu, programiści często wywołują Json z parametrem AllowGet:publi...
Każdy programista wie, że jego kod świadczy o nim, jego wiedzy, doświadczeniu, zdeterminowaniu i otwartości na nowości. W poprzednim odcinku pokazywałem narzędzie, które analizuję stronę w momencie kiedy chcemy - jasno musimy oznaczyć początek-koniec, a efekt końcowy to dużo wykresów, literek I zestawień. ...
Microsoft stworzył narzędzie o nazwie modern.IE, które jest w stanie przetestować naszą stronę internetową i powiedzieć Nam co mamy w niej poprawić. Wykorzystując modern.IE możemy zobaczyć podgląd (zrzut ekranu) z różnych urządzeń i przeglądarek internetowych Naszej strony… bez posiadania tych urządzeń i prz...
2nd part of the serie about applied TDD with examples on commit by commit basis, with commentary about decision making process.. String Calculator TDD Kata.
Sztuka programowania 3274 dni, 9 godzin, 13 minut temu 97 źrodło rozwiń
Internet Explorer w wersji 11 doczekał się narzędzia do badania responsywności aplikacji z uwzględnieniem tego jaki kod jest wykonywany i na jakim wątku. W tym celu stworzyłem trochę złośliwy kod, który liczy w pętli funkcje matematyczne: Po uruchomieniu aplikacji udajemy sie do narzędzi dla program...
Funkcjonalność to nie wszystko, w działającym systemie liczy się też wydajność systemu, na którą składają się wszystkie jego części. W przeglądarce Internet Explorer dostajemy funkcje, która pozwala liczyć czas wykonania poszczególnych sekwencji kodu i sprawdzać, co poszło nie tak. Zacznijmy od razu od prz...
Dzisiaj przybliżymy sobie możliwość jaką daje nam console.trace - funkcja powstała po to byśmy mogli prześledzić ścieżkę wykonywania aplikacji bez śledzenia jej krok po kroku. Poniżej przykładowy kawałek kodu: W kodzie mamy 4 funkcje i dwa przyciski. Oba przyciski dochodzą do wykonania funkcji last(...
W ramach śledzenia kodu Naszej aplikacji mamy możliwość wprowadzenia liczników do kodu I sprawdzenia ile razy wykonał się dany element. Liczniki są z góry zdefiniowanym elementem konsoli dlatego mamy do niego słowo kluczowe console.count – poniżej przykład kodu z jego użyciem: W kodzie funkcja consol...
Poprzedni artykuł dotyczył pokazywania obiektów w konsoli Internet Explorera. Tym razem chciałbym pokazać jak takie obiekty można pogrupować. Zaczniemy od razu od przykładu: Wynik przebiegu takiego programu po wciśnięciu przycisku wygląda tak: Patrząc na to trudno rozdzielić dane z jednego przebieg...
There are a lot of discussions in the Internet about the sense of testing the code with private accessors. In my opinion all of the discussions coming from the wrong understanding of the topic. What is unit testing? It is a testing of units, not classes, not methods exposed by some API. The term private is supposed to be private to the consumer, not to unit tests. Let's have a look at it closer..
Sztuka programowania 3275 dni, 10 godzin, 20 minut temu 116 źrodło rozwiń
Gdy zaczynałam swoją przygodę z programowaniem w Windows Phone (jakoś w maju zeszłego roku) okazało się, że to nie jest po prostu kolejny rodzaj projektu w Visual Studio. A szkoda, bo samo rozpoczęcie pracy, czy przeglądnięcie kodu, który zastałam w nowej pracy, wymagało wielu instalacji. Jasne, że wiele z nich dotyczyło konkretnych bibliotek użytych w projekcie, jednak kilka ruchów było niezbędnych, by w ogóle zacząć pracę z platformą. Postanowiłam opisać dla potomności te moje pierwsze kroki, a nuż kto...
Mobile development 3277 dni, 59 minut temu 293 źrodło rozwiń
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 3277 dni, 59 minut temu 205 ź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...