Jednym z ostatnich rodzajów długów jakie chcę poruszyć to testy. Testy we wszelakiej postaci, od jednostkowych, przez integracyjne, specyfikacji, smoke, white i black box do obrzydliwych ręcznych. Brak testów to najgorsza rzecz jaką możemy zrobić. W każdej normalnej branży (a nie takiej, gdzie większość to pryszczaci kolesie z problemami interpersonalnymi ) czyli takiej o solidnych podstawach ukształtowanych przez lata praktyki, normą są testy. Budowlańcy robią testy wytrzymałości beton...
Sztuka programowania 4248 dni, 20 godzin, 24 minuty temu 158 źrodło rozwiń
Zapraszam na kolejny post na temat "podstawowych podstaw" języka JavaScript. Tak jak w temacie, zajmiemy się słowem kluczowym "this". Oczywiście przypominam, że wpis ten należy do większego cyklu, dotyczącego moich przygotowań do egzaminu MCSD 70-480: Programming in HTML5 with JavaScript and CSS3 i moich notatek na ten temat.
Wszyscy w zawodzie zaczynaliśmy podobnie: nie wiedząc nic. Każdy z nas jest teraz na innym poziomie: jedni nadal nie wiedzą nic, inni mało, jeszcze inni dużo… ale nikt nie wie wszystkiego. Z biegiem lat kształtujemy sobie opinie na sposoby tworzenia oprogramowania – w końcu pochłania to sporą część naszego życia.
Witam ponownie i zapraszam na kolejny odcinek cyklu "przygotowania do MCSD 70-480". Zgodnie z tytułem, w dzisiejszym wpisie zajmiemy się kwestią obiektów i metod w JavaScript oraz ogólnie tematem programowania obiektowego w tym języku. Tym oto sposobem zamkniemy omawianie pierwszego z czterech głównych tematów jakie należy opanować przed egzaminem - mowa o "Implement and Manipulate Document Structures and Objects" stanowiącym 24% wszystkich pytań podczas testu.
W poprzedniej części uczyniliśmy spostrzeżenie, że z dotychczasowych klas można wyodrębnić niezależną funkcjonalność – interpretację odczytywanych danych. Obecnie zajmiemy się jej implementacją. Nie będzie ona specjalnie trudna, ponieważ większość kodu już istnieje – zawierają go metody Extract() klas potomnych klasy FileOfValuesReader. Przypomnijmy je sobie wszystkie...
Sztuka programowania 4249 dni, 7 godzin, 43 minuty temu 36 źrodło rozwiń
Monolity – wielkie projekty składające się z setek klas ściśle powiązanych ze sobą. Czasem to nawet nie muszą być przesadnie wielkie te projekty jednak wystarczy, że klasy są ściśle powiązane ze sobą. Co to znaczy ściśle powiązane ze sobą? Jeśli w jednej klasie użyjemy słowa new, żeby stworzyć obiekt innej klasy to właśnie ściśle powiązaliśmy te dwie klasy. Jedna bez drugiej żyć nie może, nie da się jednej z nich przenieść do innej biblioteki bez odpowiednich referencji. Jeśli chcemy zlec...
Sztuka programowania 4250 dni, 22 godziny, 45 minut temu 122 źrodło rozwiń
Testy jednostkowe “czasu” nie są tematem łatwym. Rozsiane po całej aplikacji wywołania DateTime.Now (które i tak powinny być odwołaniami do DateTime.UtcNow) nie upraszczają tej kwestii. Problem ten można rozwiązać na kilka sposobów...
Na dzisiaj przygotowałem dwie proste klasy, w których pokażę, jak nagrywać i odtwarzać dźwięki w aplikacjach typu Metro. Musimy to zrobić trochę inaczej niż do tej pory, ponieważ skorzystamy z nowego API zawartego w pakiecie Windows.Storage. Zacznijmy od klasy odpowiedzialnej za nagrywanie...
Sztuka programowania 4251 dni, 22 godziny, 45 minut temu 120 źrodło rozwiń
Witajcie w pierwszym odcinku Coding News – nowej, cotygodniowej serii, w której omawiam najciekawsze wydarzenia i znaleziska minionego tygodnia.
W dzisiejszym wpisie, tak jak obiecałem w ostatnio, zajmiemy się omówieniem tematyki związanej z możliwościami API geolokacyjnego wprowadzonego wraz z pojawieniem się HTML5. Poznamy więc metody określania pozycji użytkownika, a także sposoby na śledzenie jego przemieszczania się. Dowiemy się także, jakie błędy mogą wystąpić podczas pobierania pozycji i jak je obsłużyć. Pokażę również, jak można pokazać pobrane współrzędne jako punkt na mapie w google maps.
Przygotowane w poprzedniej części testy uwidoczniły pewne ułomności zaimplementowanych klas – chcąc przetestować funkcjonalność powiadamiania o postępie przetwarzania pliku, konieczne było wykonanie samego importu. To nasuwa wniosek, że powiadamianie o postępie zależy od samego procesu importu. Co więcej, w jednym z testów tej funkcjonalności nie udało się początkowo uzyskać pozytywnego wyniku. To nasuwa kolejny wniosek – powiadamianie o postępie zależy od konkretnego typu importu. To już bardzo daleko i...
Sztuka programowania 4252 dni, 23 godziny, 14 minut temu 37 źrodło rozwiń
W ostatnim poście pisałem jak prawidłowo wykonać finalizację obiektu jeśli mowa o zasobach niezarządzanych, których zwolnienie jest krytyczne. Dzisiaj o obiekcie, który jest bardzo często wykorzystywany w sytuacjach gdzie należy przechowywać wskaźnik do zasobów niezarządzanych. Zacznijmy od jego definicji:[SecurityPermissionAttribute(SecurityAction.InheritanceDemand, UnmanagedCode =true)] publicabstractclass SafeHandle : CriticalFinalizerObject, IDisposable Co to oznacza? Wszystkie rzeczy jakie daje n...
Sztuka programowania 4252 dni, 23 godziny, 14 minut temu 105 źrodło rozwiń
Dzisiaj na tapetę weźmiemy dość podstawową kwestię - zajmiemy się mianowicie zakresem (ang. scope) widoczności zmiennych w języku JavaScript. Tym sposobem przechodzimy do kolejnego elementu wiedzy potrzebnej aby zdać egzamin MCSD 70-480
Funkcja Array.Sort sortuje tablicę elementów. Niestety algorytm jest niestabilny co nie zawsze jest dobrym rozwiązaniem. Rozważmy poniższy kod:publicclass Person { publicint Age { get; set; } publicstring Name { get; set; } } internalclass Program { publicstaticvoid Main() { var persons =new[] { new Person { Age =1, Name ="a" }, new Person { Age =2, Name ="b" }, new Person { Age =3, Name ="c" }, new Person { Age =2, Name ="e" }, new Person { Age =1,...
Sztuka programowania 4253 dni, 10 godzin, 20 minut temu 136 źrodło rozwiń
Font Awesome to zestaw wektorowych ikon w postaci fontów. Około 250 popularnych, darmowych, w pełni skalowalnych ikon kontrolowanych z poziomu CSS. W paczce instalacyjnej dostępnej pod tym adresem dostarczone są podstawowe pliki z definicjami klas CSS, SASS, LESS oraz ikony w postaci fontów w formatach .eot, .svg, .ttf,, .woff i .otf.
Pora po raz kolejny napisać testy dla uzyskanego kodu. Zapewne niektórzy zaczynają być znużeni tą ciągłą potrzebą pisania testów. Cóż – jest to jedyny sposób na zapewnienie odpowiedniej jakości kodu. A pisząc „odpowiedniej” mam na myśli jedynie jego poprawność. Na pocieszenie uchylę rąbka tajemnicy – nasz kod jest coraz lepszy, coraz bardziej elastyczny, a to przekłada się także na pisanie testów. W poprzednich testach udało się wykorzystać jedynie dane użyte w testach wcześniejszych. Obecnie uda się ...
Sztuka programowania 4253 dni, 10 godzin, 20 minut temu 39 źrodło rozwiń
Zgodnie z zapowiedzią z poprzedniego wpisu, dziś zaznajomimy się z funkcjonalnością "cache'owania" aplikacji - w HTML5 wprowadzone zostało do tego celu specjalne API, które w znaczny sposób ułatwia sprawę. Cache'owanie aplikacji pozwala na przetrzymywanie elementów strony www na komputerze użytkownika (oczywiście po pierwszych odwiedzinach strony). Dzięki temu możliwe jest:przeglądanie strony w trybie offlineprzyspieszenie ładowania strony - elementy które się nie zmieniły od ostatnich odwiedzin nie mus...
“Ciągły rozwój” jest, zdawałoby się, charakterystyczną cechą dla naszego zawodu. Nie tylko naszego oczywiście, ale my, programiści, szczególnie lubimy myśleć o sobie jako o tych, którzy nigdy nie stoją w miejscu i ciągle poznają nowe/lepsze techniki, rozwiązania, praktyki. Warto jednak zatrzymać się czasem na chwilę i zastanowić: czy ja sam nie odstaję od tego au...
W poprzedniej części cyklu utworzyliśmy klasę realizującą wzorzec metody szablonowej. Obecnie będziemy tworzyć klasy potomne, implementujące konkretne typy importu. Warto zauważyć, że w toku dotychczasowych rozważań – czego właściwie nie podkreśliłem – zarysował się ciekawy schemat. Wszystkie pliki tekstowe (o wartościach rozdzielonych separatorem czy o ustalonej długości) są obsługiwane tak samo – inaczej są jedynie interpretowane ich zawartości. Można skorzystać z tej obserwacji i wykorzystać ją ...
Sztuka programowania 4254 dni, 7 minut temu 51 źrodło rozwiń
W dzisiejszym poście przechodzimy do następnego celu egzaminu MCSD 70-480. W najbliższych trzech postach zajmiemy się dostępnymi API dostępnymi w HTML5. Będą to kolejno: HTML5 Web Storage, czyli temat niniejszego posta; a także HTML5 AppCache API, oraz Geolocation API.