Literatura#
Czy w dobie upowszechnienia Internetu warto kupować książki? Nie jestem i nigdy nie byłem mólem książkowym, praktycznie wszystko co przeczytałem było wypożyczone. Sytuacja zmieniła się, kiedy zacząłem przygodę z pisaniem stron WWW. Dlatego odpowiem twierdząco: tak, warto kupować książki, dobre książki, szczególnie w wersji drukowanej.
Książka drukowana ma to do siebie, że nie świeci nam po oczach, jak żenującej jakości ekrany LCD. Można ją spakować i zabrać wszędzie, czytać w pociągu lub autobusie, bez obawy, że akurat spodoba się jakiemuś "łysemu dresiarzowi". Wielogodzinne maratony przed ekranem monitora męczą, dlatego w pogotowiu powinna być zawsze alternatywna literatura.
W dziale tym przedstawię opis literatury, która prześlizgnęła się przez moje ręce. Jeśli jesteś początkującym wybieraj książki jak najmłodsze, opisujące zawsze najnowsze i aktualne technologie. Zapobiegnie to niepotrzebnemu mętlikowi w głowie i stracie czasu. Ze względu na konieczność stosowania przestarzałych rozwiązań osoby bardziej doświadczone mogą sięgnąć po starsze tytuły.
Najlepsze materiały branżowe zazwyczaj publikowane są przez wydawnictwo O'Reilly (warto brać pod uwagę także Packt Publishing). Niestety, tylko niewielka część tłumaczona i wydawana jest na naszym rodzimym rynku. Jeśli ktoś nie ma problemów z technicznym angielskim powinien kupować oryginalne wersje - tłumaczenia nie zawsze w pełni oddają przesłanie pierwotnej wersji i bardzo często zawierają różnego rodzaju błędy (stylistyczne jaki i merytoryczne).
W Polsce dużym zbiorem materiałów informatycznych dysponuje internetowa księgarnia Helion, z której sam bardzo często korzystam. Warto śledzić losowe promocje książek, których cena może spaść nawet o 50% pierwotnej wartości (dzięki specjalnemu kuponowi rabatowemu). Są jeszcze inne okolicznościowe promocje, typu "dwa za jedną", "taniej w zestawie", "darmowa dostawa", "dzień programisty", itd. Przed zakupem najlepiej zaznajomić się ze wstępnymi opisami i recenzjami dostępnymi w Sieci, a przede wszystkim samodzielnie przeanalizować spis treści, co pozwoli uniknąć (w zależności od zaawansowania czytelnika) nietrafionych inwestycji.
Ceny książek są bardzo różne, zależne od wielu czynników (głównie ilości stron i jakości papieru). Gromadzenie dobrej literatury (nowej) dla młodej osoby może być dużym obciążeniem. W razie czego warto zasugerować rodzinie i znajomym, że książka nigdy nie będzie złym prezentem, np. z okazji urodzin. Można także odwiedzić pobliskie biblioteki uczelniane lub publiczne, które przeważnie posiadają odpowiednią literaturę techniczną. Czasami nawet na Allegro można kupić dobrą pozycję dosłownie za grosze. Brak funduszy nigdy nie powinien stwarzać ograniczenia w celu rozwijania swoich umiejętności, zawsze należy szukać odpowiedniego rozwiązania.
Wersje elektroniczne (online)#
Nie odpowiadam za legalności umieszczonych tutaj odsyłaczy do książek elektronicznych. Z uwagi na wysiłek poniesiony przy ich tworzeniu zawsze zachęcam do przeprowadzania zakupów z legalnego źródła lub przekazywania drobnych wpłat na rzecz ich autorów.
W zasobach WWW istnieje sporo darmowych, upublicznionych książek w formie elektronicznej. W niektórych sytuacjach sprawdzają się one lepiej niż papierowy odpowiednik (np. przy szybkim wyszukiwaniu). Część z nich to w zasadzie repozytoria Git i jest uzupełniana/poprawiana na bieżąco. Zanim zdecydujesz się na wersję papierową sprawdź najpierw, czy nie istnieje jej darmowy, elektroniczny odpowiednik. Pobieżna analiza treści pozwala lepiej oszacować opłacalności danego zakupu.
Przede wszystkim warto zwrócić uwagę na:
- "Understanding ECMAScript 6" Nicholas C. Zakas (GitHub)
- "Speaking JavaScript: An In-Depth Guide for Programmers" Dr. Axel Rauschmayer (speakingjs.com)
- "Exploring ES6" Dr. Axel Rauschmayer (exploringjs.com)
- "Exploring ES2016 and ES2017" Dr. Axel Rauschmayer (exploringjs.com)
- "Exploring ES2018 and ES2019" Dr. Axel Rauschmayer (exploringjs.com)
- "JavaScript for impatient programmers" Dr. Axel Rauschmayer (exploringjs.com)
- "You Don't Know JS" Kyle Simpson (GitHub) - całość składa się z 6 części
- "Eloquent JavaScript" Marijn Haverbeke (third edition, second edition, first edition, first edition PL) - zerknij do mojej recenzji.
- "JavaScript: The Definitive Guide" David Flanagan (6th Edition, 4th Edition)
- "Learning JavaScript Design Patterns" Addy Osmani (addyosmani.com)
- "Programming JavaScript Applications" Eric Elliott (chimera.labs.oreilly.com)
Wersje drukowane#
Liczba wykonanych recenzji: 24.
Tworzenie stron WWW - Kurs - Radosław Sokół#
Jest to pierwszy tytuł w mojej biblioteczce, który porusza tematy związane z tworzeniem stron WWW. Książka wydana w 2003 roku, zakupiona przypadkiem już w czasach mojego technikum. Niestety, sięgnąłem po nią dopiero na studiach, czyli ok. 2006/2007 roku. W tym czasie przedstawione zagadnienia były już mocno przestarzałe.
Materiał jest zbitką informacji o HTML, w lekkim stopniu CSS i minimalnym JS. Problematyczne było dla mnie przemieszanie formatowania wyglądu za pomocą przestarzałych znaczników HTML-a oraz CSS, bez wskazania, które rozwiązanie jest poprawne. Dla początkujących osób może to wprowadzać niepotrzebny bałagan.
Dzięki książce napisałem swoją pierwszą statyczną stronę opartą na tabelkach (metoda przestarzała). Jest stosunkowo cienka (ok. 320 stron, ale sporo zdjęć) i na dzień dzisiejszy kompletnie nieopłacalna w zakupie. To, co mnie zainteresowało i stosowałem przez bardzo długi czas, to plik compose.exe
, który służy do scalania kilku plików w jeden. Rozwiązanie w minimalnym zakresie pozwalało na tworzenie treści w sposób dynamiczny. Dla wygodniejszego rozwijania tego serwisu obmyśliłem swój własny szablon strony i schemat hurtowego łączenia plików za pomocą compose
, co przy niewielkiej wiedzy z zakresu tworzenia stron WWW w owym czasie było dla mnie ogromnym progresem (szczegóły).
Ogólnie rzecz biorąc książka ta stanowi dla mnie raczej wartość sentymentalną, aniżeli skarbnicę dydaktyczną. W chwili kiedy po nią sięgnąłem istniały już ciekawsze pozycje i pełnowartościowe kursy online. Niemniej jednak był to właśnie ten moment rozpoczynający moją przygodę z technologiami webowymi, który trwa po dziś dzień.
HTML5 - Przewodnik encyklopedyczny - Adam Freeman#
Polskie tłumaczenie dostępne dopiero w 2013 roku (oryginał pochodzi z 2011) nabyte przeze mnie w grudniu tego samego roku. Obszerny materiał mieszczący się na blisko 850 stronach, całość oprawiona w twardej okładce. Mi udało się upolować 50% rabat, dlatego cena nie była aż tak odczuwalna (pierwotnie 129 zł).
Pomimo swojego tytułu książka dotyka znacznie szerszego obszaru niż sam język HTML5. Są to również CSS, DOM, Ajax oraz kilka dodatkowych funkcji (rysowanie na płótnie, przeciągnij i upuść, geolokalizacja, magazynowanie danych oraz aplikacje offline). Ocenę zawartości najlepiej przeanalizować samodzielnie na podstawie aktualnego spisu treści bezpośrednio z księgarni Helion. Jak wskazuje sam tytuł należy spodziewać się encyklopedycznego wykazu poleceń. Opisy są zwięzłe i konkretne, bez zbędnego lania wody. Przykłady są ciekawe, aczkolwiek w dokumentach HTML5 można by usunąć wiele zbędnych linijek kodu (na początku), przez co materiał nabrałaby bardziej kompaktowego charakteru.
Jeśli chodzi o zawartość merytoryczną jest dobra, choć im dalej w las tym więcej ogólników. Cały opis DOM bazuje na starszym standardzie, który połowicznie został zaimplementowany przez przeglądarki. Tekst tworzony był pod kątem HTML-a, co nie do końca pozwala zrozumieć wszystkie meandry obiektów DOM. Lepiej po prostu zapoznać się z moim kursem DOM. Te same uwagi dotyczą pozostałych obszarów, z których najdokładniej opisany został HTML5. Tak czy inaczej występują drobne błędy merytoryczne, z tym że pojawiają się sporadycznie, częściej mamy do czynienia po prostu z pobieżnym wyjaśnieniem jakiejś kwestii.
W książce występuje także sporo innych błędów, które zaliczyłbym do kategorii pomyłek tłumacza. Dotyczy to zarówno zwykłej treści, podpisów tabel czy ich zawartości oraz samych przykładów. W tym ostatnim przypadku należy ostrożnie podchodzić do testowania kodu, bo można sobie zszargać nieco nerwów. Dobrym pomysłem byłoby zebranie tych wszystkich potknięć i przekazanie ich wydawnictwu, może dzięki temu kolejne przedruki będą lepszej jakości.
Książka może być naprawdę interesująca dla osób początkujących lub dopiero wkraczających w fazę średniozaawansowaną. Osoby z długim stażem i solidną wiedzą będą po prostu odczuwać nudę i niedosyt przez większą jej część, zależnie od poziomu zaawansowania. Dla takich osób pozostają już tylko specyfikacje, ewentualnie literatura, która poświęcona jest jedynie pojedynczemu mechanizmowi webowemu. Nie oznacza to wcale, że podręcznik jest zbyteczny - wręcz przeciwnie - mi osobiście posłuży jako podręczny wykaz niektórych poleceń lub przypominacz wybiórczych rozwiązań WWW.
Podsumowując, jeśli chodzi o język HTML5 to książka jest godna polecenia, na chwilę obecną ciężko znaleźć na polskim rynku inną pozycję, która opisywałaby najnowszy wariant HTML-a równie dokładnie i przystępnie.
CSS - Kaskadowe arkusze stylów - Przewodnik encyklopedyczny (Wydanie III) - Eric A. Meyer#
Postanowiłem solidnie zabrać się za CSS (miałem braki głównie w pozycjonowaniu elementów). Pierwszy wybór padł na przewodnik encyklopedyczny Meyera - jeden z autorytetów jeśli chodzi o CSS. Książka wydana w 2008 roku kupiona na przełomie 2011/2012.
Materiał obejmuje zagadnienia związane z arkuszami stylów w wersji 2 oraz 2.1 - specyfikacja uzyskała rekomendacje W3C dopiero 7 czerwca 2011 roku. Oczywiście nowsze przeglądarki bez większych problemów obsługiwały CSS 2.1 dużo wcześniej, w chwili obecnej trwa wdrażanie najnowszego CSS3.
Pomimo szumnego larum nad nowymi standardami zdecydowałem najpierw przyswoić obecne, dobrze zaimplementowane technologie. Książka Meyera jest idealną pozycją, porusza praktycznie każdą kwestię związaną z CSS2 i CSS 2.1. Jest dosyć obszerna (ok. 520 stron), pisana zwięzłym, powiedziałbym nawet, że akademickim językiem. Przykłady są krótkie, ale treściwe - na lanie wody nie ma miejsca. Otrzymujemy 14 rozdziałów, które poruszają osobne zagadnienia np. selektory, struktura oraz kaskada, tabele, listy, pływanie oraz pozycjonowanie, media nieekranowe.
Uprzedzam, że nie jest to pozycja na temat technik budowania layoutów stron - raczej jest ona odwzorowaniem specyfikacji CSS w bardziej przyswajalnej formie. Osobiście wole mieć pod ręką książę niż przeczesywać długie dokumenty z W3C. Niektóre rozdziały są trudne (np. zagadnienia związane z elementami wewnętrznymi), ale warto poświęcić trochę czasu na opanowanie materiału - późniejsze tworzenie stron stanie się o wiele łatwiejsze.
Polecam książkę każdemu, kto ma zamiar tworzyć lekkie i schludne layouty - bez solidnej wiedzy o CSS się nie obejdzie. Muszę przyznać, że nie bardzo lubiłem dłubać z wyglądem witryny. Dopiero po lekturze owej pozycji zaciekawiło mnie to na tyle, że zacząłem rozglądać się za literaturą obrazującą techniki tworzenia ciekawych i funkcjonalnych interfejsów WWW.
Podręcznik CSS - Eric Meyer o tworzeniu nowoczesnych układów stron WWW - Smashing Magazine - Eric A. Meyer#
Wreszcie coś aktualnego (wydanie z 2011 roku, zakupione na początku roku 2012). Kolejna pozycja autorstwa pana Meyera (guru w dziedzinie CSS). Książka zawiera prezentacje wielu najlepszych technik CSS (ok. 100) wykorzystywanych przy projektowaniu stron WWW. Tematyka głównie dotyczy arkuszy stylów w wersji 2.1, minimalnie zahacza o nowości z CSS3. Opisy są krótkie i klarowne, bez zbędnego lania wody. Całość mieści się na blisko 272 stronach, aż chciałoby się otrzymać drugie tyle.
Książka składa się z 7 rozdziałów. Każdy z nich jest niezależny od pozostałych, tzn. można otworzyć książkę na dowolnej stronie i przeczytać to, co się na niej znajduje, bez obawy, że stracimy coś ważnego ze stron poprzednich. W pierwszej części przedstawiono krótki przegląd najprzydatniejszych narzędzi (np. Firebug, Web Developer, Dragonfly, style resetujące) i podstawowych technik, wliczając niektóre najmniej znane selektory CSS. Widząc po raz kolejny prezentację selektorów zacząłem się niepokoić, ale w tym podręczniku, oprócz suchej składni, otrzymamy także kilka ciekawych przykładów praktycznego wykorzystania. W drugiej części opisano różne rzeczy, jakie można zrobić przy użyciu CSS, tzn. ciekawe efekty (complexspiral, menu CSS, nieregularne kształty, sprajty), różne sposoby osiągnięcia tego samego celu, układy (dwukolumnowe, trzykolumnowe, clearfix, liquid bleach, płynne siatki). W części trzeciej opisano najnowsze techniki (stylizacja tabel, tworzenie map i wykresów z tabel) oraz kilka nowości z CSS3 (zapytania o media, nowe selektory, kolory RGBA, kolory HSLA, cienie, wiele obrazów w tle, przekształcenia).
To co mi najbardziej się spodobało, to kolorowe wydanie - tak powinien wyglądać każdy podręcznik CSS. Odbiór treść od razu staje się bardziej przystępny. Niestety, druk kolorowy zwiększa cenę podręcznika - wymaga stosowania grubszego papieru, książka jest cięższa, autorzy starają się przez to tworzyć jak najbardziej kompaktowe opisy i przykłady. Dlatego kolorowe wydania zawsze zawierają mniejszą ilość stron (cena takiego podręcznika mającego 1000 stron byłaby horrendalna).
Podsumowując, jest to idealna pozycja dla osób, które opanowały podstawy stosowania CSS i szukają praktycznych wskazówek, jak optymalnie wykorzystać nabytą wiedzę. Opisywane techniki kształtowały się na przestrzeni kilku lat, teraz otrzymujemy wszystko zebrane i zaprezentowane w jednym miejscu - polecam.
The Smashing Book #2 - Edycja polska - praca zbiorowa#
Kolejna kolorowa pozycja wydana w 2012 roku, w moje ręce trafiła w marcu tego samego roku. Na blisko 360 stronach zawarto materiał bardzo zróżnicowany. Samo wydanie jest ciekawe, dość gruby papier, przez co książka jest cięższa od pozostałych pozycji w mojej kolekcji, czuć w ręce, że trzyma się coś konkretnego. Autorami są osoby rozwijające i stale udzielające się na znanym portalu poświęconym głównie webdesignowi smashingmagazine.com.
Treść podzielono na 10 bardzo zróżnicowanych rozdziałów. Poruszana tematyka to m.in. zasady projektowania grafiki, szkice, szablony i prototypy, projektowanie dla urządzeń przenośnych, poprawne stosowanie HTML, CSS i JS, typografia, reguły projektowania gier, psychologia w projektowaniu aplikacji internetowych, wzorce na stronach e-commerce oraz poradnik jak wydać książkę.
Po lekturze mam mieszane uczucia. Zróżnicowanie materiału sprawia, że żaden nie został opisany dokładnie, wszystko co tu przeczytamy jest bardzo podstawowe. Nie trudno zauważyć, że część autorów wywodzi się ze środowiska filozoficzno-psychologicznego, otrzymujemy masę przypisów prowadzących do różnych wyników badań. Sama treść bardzo często wypełniona jest wieloma przesyconymi zwrotami, niektóre rozdziały bardzo nudzą, ciężko doczytać do końca.
To co mi osobiście się spodobało to kilka interesujących cytatów na końcu każdego rozdziału. Jeśli chodzi o wartość merytoryczną ciekawe były rozdziały poświęcone tworzeniu aplikacji mobilnych, reguły projektowania gier, psychologia w zachowaniu użytkownika, wzorce e-commerce oraz etap tworzenia i wydawania książki. Pomimo całej tej psychologicznej otoczki, owe rozdziały zdołały mnie zaciekawić, chociaż treść była bardzo podstawowa. Trochę mało, spodziewałem się więcej po tak rozpoznawalnej marce jaką jest smashingmagazine.
W jednym z rozdziałów natknąłem się na takie oto stwierdzenie: "Ludzie lubią mieć przekonanie, że się rozwijają i zdobywają nowe wiadomości lub opanowują jakąś umiejętność". Po zakończeniu lektury czuję się jakbym niewiele umiał (na tle autorów), a otrzymana wiedza nie poszerzyła moich horyzontów w oczekiwanym stopniu. Jedyne co naprawdę do mnie dotarło to fakt, że bardzo dużą role w całym tworzeniu czegokolwiek odgrywa psychologia. Jest bardzo wiele badań dotyczących zachowań człowieka, które sprawdzają się przy projektowaniu stron, interfejsów itd. Większość osób, które osiągnęły sukces w tym segmencie wywodzi się ze środowisk psychologicznych, gdzie owe zachowania zgłębiali na etapie studiów. Trochę mnie to martwi, bo sięga się do trików ludzkiego organizmu, żeby przyciągnąć jak największe grono odbiorców (czyli nie owijając w bawełnę "omamić masę"), zamiast starać się stworzyć produkt dobry i zarazem przydatny, no ale tak wygląda dzisiejszy świat. Mając tego świadomość przynajmniej sami możemy uodpornić się na tego typu zagrania.
Dla mnie największym plusem omawianego zakupu jest uświadomienie sobie, że webdesign nie jest i raczej nie będzie w kręgu moich zainteresowań. Osobiście wolę mierzyć się z kodem i rozwiązywaniem problemów niż z analizą ludzkich zachowań. Książka "JavaScript - Wzorce", mimo że wydana na słabej jakości papierze, bez kolorów, na mniejszej liczbie stron, bardziej przykuła moją uwagę.
Kuloodporne strony internetowe - Jak poprawić elastyczność z wykorzystaniem XHTML-a i CSS - Dan Cederhlom#
Pierwsza moja książka prezentująca techniki budowania stron z wykorzystaniem XHTML-a oraz CSS. Wydana w 2006 roku, zakupiona przeze mnie jako wypełniacz z encyklopedią Meyera opisywaną wcześniej (przełom 2011/2012). Jak widać pozycja nie najnowsza, ale cena też niezbyt wygórowana.
Na 280 stronach Dan stara się wytłumaczyć czytelnikowi dlaczego stosowanie tabelek do układania elementów jest problematyczne, w zamian radzi stosować CSS. Prezentacja odbywa się według schematu: przykład (z życia wzięty) oraz omówienie jego lepszej alternatywy. Szkoda, że jest tylko 9 rozdziałów, poruszających takie zagadnienia jak tworzenie elastycznego tekstu, nawigacji, tabel, płynnych układów stron.
Wszystkie prezentowane rozwiązania przyczyniają się do zwiększenia tytułowej kuloodporności tworzonych witryn. Kuloodporność polega na przygotowaniu projektu na wszelkie niespodziewane okoliczności. Oczywiście nie ma jednego idealnego rozwiązania, ale znając wiele technik radzenia sobie z problemami możemy zwiększyć integralność całej witryny internetowej i przygotować ją dla jak największej rzeszy odbiorców, z zachowaniem jednocześnie interesującego wyglądu.
Pozycja warta rozważenia dla początkujących adeptów sztuki webmasterskiej. Opisywane zagadnienia wyrobią dobre nawyki w przyszłości, cena nie jest wygórowana, dlatego można odżałować kilka złotówek. Osoby bardziej doświadczone powinny rozejrzeć się za czymś bardziej wyrafinowanym.
CSS i Ajax - Strony WWW zgodne ze standardami sieciowymi W3C - praca zbiorowa#
Gratisowa pozycja dodana przy zamawianiu innych książek (dlatego lubię księgarnie Helion). Wydanie z 2008 roku trafiło w moje ręce na początku 2012.
Na 304 stronach autorzy starają się wytłumaczyć znaczenie i wykorzystanie standardów sieciowych we współczesnym tworzeniu stron WWW oraz towarzyszącym im aplikacjom. Skupiono się na prawidłowym tworzeniu UI (User Interface) za pomocą takich technologii jak (X)HTML, CSS oraz JavaScript. Materiał zahacza również o tematykę programowania po stronie serwera. Oprócz suchych opisów dostajemy także wskazówki ułatwiające wdrażanie standardów w działających przedsiębiorstwach. Ostatnie dwa rozdziały opisują proces budowy oraz przebudowy konkretnych projektów - strony piosenkarki Tori Amos oraz serwisu AOL.
Po lekturze całości mam mieszane odczucia. Prezentowane aspekty poprawnego stosowania języków są podstawowe, wiele nowych informacji nie wyniosłem. Także opis rozmów osób prowadzących przebudowę AOL jest bardzo obszerny i mnie osobiście nieco zanudził. Na 300 stronach można było zebrać bardziej treściwe informacje.
Podsumowując, książka może być uzupełnieniem dla osób początkujących. Większość informacji w niej zawartych można znaleźć w aktualnych kursach lub stronach opisujących technologie WWW.
Responsive Web Design - Projektowanie elastycznych witryn w HTML5 i CSS3 - Ben Frain#
Polski przekład wydany w 2013 roku (oryginał pochodzi z 2012 roku), który nabyłem tego samego roku, w dodatku z 50-procentowym rabatem. Treść mieści się na 296 stronach, z czego dużą część stanowią sporych rozmiarów zdjęcia, niestety druk czarno-biały.
Jest to jedna z ważniejszych pozycji dotycząca tworzenia layoutów, którą nabyłem w ostatnim czasie (jeśli nie najważniejsza). Na bazie jednego projektu autor wyjaśnia zasady tworzenia elastycznych witryn budowanych z wykorzystaniem HTML5 i CSS3. Dzięki temu relatywnie małym kosztem można stworzyć projekty, które będą dynamicznie dostosowywać się do wielkości dowolnego ekranu (np. smartfona, tabletu, notebooka czy standardowego monitora). Technika ta określana jest skrótem RWD # (Responsive Web Design) i wytycza szlaki, jakim webdeweloperzy będą podążać przez następnych kilka lat.
Z rozdziału na rozdział dostajemy masę ciekawych informacji na temat HTML5 oraz CSS3, oto najważniejsze z nich: główne zmiany w HTML5, nowe elementy semantyczne HTML5 i ich prawidłowe stosowanie, poprawianie dostępności za pomocą WAI-ARIA, zagnieżdżanie multimediów, tryb offline, nowe kontrolki w formularzach, przedrostki CSS, układ wielokolumnowy, nowe selektory CSS3, własna typografia, nowe formaty barw (RGBA I HSL/HSLA), cieniowanie, gradienty, wiele teł na raz, przejścia, transformacje i animacje. Wszystko to wyjaśniono w bardzo prosty i czytelny sposób, co stanowi o dużej wartości prezentowanej książki.
Warto jeszcze wspomnieć o kilku omawianych narzędziach, jak np. skrypcie do automatycznego skalowania obrazów (w PHP), sposobach naprawiania starszych przeglądarek (głównie przez użycie Modernizr), i innych, o których na chwilę obecną zapomniałem.
Oczywiście nie obyło się bez drobnych wady. Gdzieniegdzie zdjęcia umieszczane są kilka stron dalej względem opisujących ich treści, co utrudnia analizę. Trafiają się też błędy w tekście, i dotyczy to nawet prezentowanych przykładów, dlatego należy podchodzić do nich z dużo dozą ostrożności i przede wszystkim z cierpliwością. Mimo tego wartość merytoryczna jest ogromna, szczególnie dla osób, które - w dobie mobilnego boomu - wciąż budują sztywne układy i chcieliby nauczyć się czegoś nowego, przyszłościowego i bardziej elastycznego (sam zaliczyłbym się do tego grona). Jeśli nie spotkałeś się jeszcze z metodologią RWD książka ta będzie inwestycją, a nie tylko kolejnym wydatkiem, dlatego jak najbardziej polecam.
Wydajne witryny internetowe - Przyspieszenie działania serwisów WWW - Steve Souders#
Książka prezentuje rozległą, a po części tajemniczą sztukę zwiększania wydajności stron internetowych. Autor jest jednym z największych autorytetów jeśli chodzi o poprawę wydajności witryn WWW. Książka wydana w 2008 roku, nabyta przeze mnie na początku roku 2012. Wydawać by się mogło, że opisywane zagadnienia straciły na aktualności, nic bardziej mylnego. 160 stron zawiera wiedzę, którą każdy szanujący się twórca strona WWW powinien posiadać.
Pomimo niewielkiej liczby stron, książka zawiera zaskakująco dużą porcję technik optymalizacyjnych. Całość składa się z 14 rozdziałów. Każdy z nich zawiera szczegółowo opisaną technikę zwiększającą wydajność, z zachowaniem kolejności ważności. Nie wszystkie reguły będą miały zastosowanie na każdej witrynie, a nie każda witryna powinna stosować reguły w takim sam sposób. Na wstępie dowiemy się podstaw odnośnie wydajności interfejsu (czasu udzielania odpowiedzi) oraz krótkiej charakterystyki protokołu HTTP (kompresja, warunkowe żądania GET, nagłówek Expires, funkcja Keep-Alive). Pozostałe rozdziały to już prezentacja konkretnych zagadnień (np. zmniejszanie liczby żądań HTTP, używanie CDN, nagłówki Expires, kompresja gzip, umiejscowienie stylów CSS i skryptów JS itd.). Poruszane kwestie weryfikowane są z dziesięcioma najpopularniejszymi stronami w USA (np. Google, Amazon, AOL, Yahoo). Podsumowaniem całości jest ostatni, 15 rozdział, w którym kompleksowo przeanalizowano wspomniane 10 serwisów pod względem stosowania omawianych technik. Bardzo dobry pomysł, na żywych przykładach widzimy, które zespoły programistów znają się na rzeczy.
Przedstawiona przez autora książki metodologia, sposoby weryfikacji danych są bardzo istotne i trafne. Jest to pierwsza pozycja w moim zbiorze, w której oprócz suchych fragmentów kodu otrzymujemy także adresy z żywymi przykładami umieszczonym na stronie Steve'a. Co ważniejsze, pomimo upływu lat linki wciąż są aktualne. Autor wykonał naprawdę kawał dobrej roboty, na jego przykładzie powinni wzorować się inni.
Na temat optymalizacji witryn można znaleźć bardzo wiele materiałów online. Istnieją specjalne dodatki do przeglądarek (np. Page Speed, YSlow), które na żywo prezentują wąskie gardła każdej strony oraz krótkie opisy pomagające wyeliminować problem. Pomimo tego, książkę polecam każdemu, w szczególności osobom, które zaczynają przygodę z technikami WWW. Cena jest niewielka (ok. 30 zł), a treść merytoryczna ogromna. Optymalizacja nie ominie nikogo, na pewnym szczeblu zaawansowania każdy będzie musiał się z nią zmierzyć, im wcześniej poznamy istotę problemu, tym szybciej zostanie on wyeliminowany.
Jeszcze wydajniejsze witryny internetowe - Przyspieszenie działania serwisów WWW - Steve Souders#
Kolejna książka poświęcona przyspieszaniu działania stron internetowych. Wydana w roku 2010, w moich rękach znalazła się w marcu roku 2012. Na 240 stronach dostajemy kolejną porcję świetnego materiału, który oprócz Steve'a współtworzyli: Dion Almaer, Douglas Crockford, Ben Galbraith, Tony Gentilcore, Dylan Schiemann, Stoyan Stefanov, Nicole Sullivan, Nicholas C. Zakas. Są to znane nazwiska w społeczności twórców WWW, prezentowany przez nie materiał jest na najwyższym poziomie.
Przed zakupem myślałem, że pozycja będzie tylko lekkim uzupełnieniem poprzedniej części opisanej wyżej. Miło się rozczarowałem, materiał zawiera opis nowych technik umożliwiających przyspieszenie działania witryn internetowych następnej generacji (określanych mianem Web 2.0). Bardzo dużo miejsca poświęcono optymalizacji JavaScriptu. Są to zagadnienia związane z technologią Ajax, tworzenia responsywnych aplikacji WWW (timery, wątki Web Workers, Gears, zużycie pamięci), wczytywania skryptów bez blokowania innych zasobów (XHR Eval, XHR Injection, skrypt w IFrame, skrypt DOM, skrypt odroczony). Świetnie opisano techniki łączenia skryptów asynchronicznych (wywołania zwrotne ustalone, window onload, timery, script onload, degradacja znacznika skryptu), pozycjonowanie skryptów osadzonych oraz łączenie ich ze skryptami zewnętrznymi (z zachowaniem kolejności wykonania).
Nicholas C. Zakas zaprezentował techniki pisania wydajnego kodu JavaScript (zarządzanie zasięgiem, wydajny dostęp do danych, sterowanie przepływem, pętle, łańcuchy znakowe, timery). Jest to tylko fragment materiału, który rozwinięty został w osobnej publikacji "Wydajny JavaScript".
Kolejne rozdziały poruszają takie zagadnienia jak skalowanie przy użyciu Comet, radzenia sobie z brakiem obsługi gzip, optymalizacja grafiki (wreszcie ktoś opisał wszystko solidnie), rozdzielania zasobów na wiele domen, wcześniejszego wysyłania dokumentów (funkcja flush), uwag na temat oszczędnego stosowania elementów IFrame oraz optymalnego wykorzystania selektorów CSS. Ostatni rozdział charakteryzuje krótko narzędzia pracy, które autor uważa za niezbędne (analiza sieci np. Http Watch, Firebug, Fiddler, analiza stron np. Firebug, Web Inspector, analiza wydajności np. YSlow, AOL Pagetest, VRTA oraz pozostałe, przydatne aplikacjie np. Hammerhead, Smush.it czy Cuzillion).
Podobnie jak w poprzedniej książce, także i tutaj przykłady są bardzo starannie wykonane i zaprezentowane. Dostajemy aktualne adresy stron, na których możemy sami przeprowadzić i zweryfikować testy. Autor w czasie badań i podsumowań brał pod uwagę wszystkie popularne przeglądarki w owym czasie (IE6-8, Firefox 2 oraz 3, Opera 9.x oraz 10.x, Google Chrome 1 oraz 2, Safari 3 oraz 4). Oczywiście w chwili obecnej wydajność przeglądarek uległa dużej poprawie, niektóre dziwne zachowania pomiędzy browserami mogły zostać wyeliminowane w kolejnych wersjach. Pomimo tego, dzięki prezentowanym przykładom będziemy wiedzieć, w których miejscach zwracać uwagę na wydajność tworzonego przez siebie produktu - gdzie w pierwszej kolejności szukać optymalizacji.
Muszę przyznać, że po lekturze wielu książek, Steve'a jako autora uważam za najlepszego. Pomimo niewielkiej liczby stron, materiał jest zawsze bardzo konkretny i trafny, przykłady prezentowane są na najwyższym poziomie. Kolejna odsłona nie jest wyjątkiem, dlatego każda osoba pisząca strony WWW powinna mieć ową pozycję w swoim zbiorze wartościowych książek - polecam i czekam na więcej.
JavaScript - Podręcznik tworzenia interaktywnych stron internetowych (Wydanie II) - Dave Thau#
Byłem już po intensywnej lekturze internetowego kursu JS ze strony W3School. Postanowiłem jednak zaopatrzyć się w jakąś książkę typowo dla początkujących. I taka jest też omawiana pozycja (wydanie z roku 2007, ok. 590 stron, sporo zdjęć).
Zawiera krótki opis podstaw języka, w dalszej kolejności przedstawione zostało wykorzystanie głównych poleceń/możliwości. Prezentacja odbywa się według schematu: przykład praktyczny (opis) oraz omówienie jego realizacji. Są to np. detekcja typu przeglądarki, efekty rollover, manewrowanie oknami, obsługa formularzy, zdarzenia zależne od czasu, obsługa ramek, obsługa cookie, model AJAX, XML, debugowanie skryptów.
Z racji posiadanej już wiedzy, po przeczytaniu książki wiedziałem niewiele więcej. Poszerzyłem trochę horyzonty na temat AJAX-a, szczególnie przypadek współpracy z PHP - co mi się bardzo przydało w pracy. Zakup uważam za nieopłacalny, dla początkujących wystarczy aktualny kurs online, dla zaawansowanych zbyt uboga pozycja.
JavaScript - Zaawansowane programowanie - praca zbiorowa#
Książka napisana przez programistów dla programistów. Wydana w 2001 roku, polski przekład powstał 2003 roku. Jest bardzo obszerna (ok. 1220 stron), porusza praktycznie każdy aspekt związany z językiem JS dostępny w roku wydania. Przykłady są krótkie, zwarte, całość nastawiona raczej na encyklopedyczny zbiór poleceń.
Swój egzemplarz nabyłem w 2010 roku w okazjonalnej cenie - przez Allegro. Pomimo przestarzałości uznałem, że warto mieć pod ręką takiego "klocka", dysponujemy opisem starego rdzenia języka, który ze względu na kompatybilność wsteczną będzie obsługiwany zawsze. Z drugiej strony, po lekturze, można zorientować się w jakim stopniu cała technologia brnie do przodu, zmiany na przełomie tych 10 lat są niewiarygodne.
Przyznam się, że całości nigdy nie przeczytałem, ale zdarza mi się w wolnej chwili sięgnąć po książkę i przeanalizować wybiórczo pojedynczy rozdział. Opłacalność zakupu zależy od ceny napotkanego egzemplarza, potrzeb oraz doświadczenia kupującego.
JavaScript - Programowanie obiektowe - Stoyan Stefanov#
Pierwsza pozycja na polskim rynku (wydanie z 2010 roku), która przede wszystkim nastawiona jest na naukę programowania obiektowego. Na 336 stronach mamy zebrane to co najlepsze i najważniejsze dla języka JavaScript.
Na wstępie przedstawiono rys historyczny, później omówiono podstawy języka, czyli zmienne, operatory, typy danych, tablice, pętle. W dalszych częściach szczegółowo omówiono funkcje (wbudowane, własne, zasięgi zmiennych, domknięcia) oraz obiekty. Ostatnie rozdziały dotyczą prototypów, dziedziczenia, środowiska przeglądarki (DOM oraz BOM), zdarzeń, AJAX-a, wzorców kodowania i projektowych.
Powiem tak, jest to pierwsza książka, którą mogę polecić z czystym sumieniem, nie żałuje nawet jednej złotówki przeznaczonej na zakup. Na niewielkiej liczbie stron mamy to co najważniejsze, całą esencję języka, aż chciałoby się czytać więcej i więcej. Dzięki tej pozycji zrozumiałem niuanse w czasie korzystania z funkcji i obiektów, dzięki niej przesiadłem się całkowicie na pisanie obiektowe.
Pomimo zaawansowanej tematyki poruszanej przez autora tej książki, dzięki przejrzystemu językowi i klarownemu układowi stanowi ona świetną lekturę również dla początkujących programistów. Jeśli szukasz czegoś aktualnego i w dobrej cenie niczego lepszego nie znajdziesz. Polecam!
Książka została fatalnie przetłumaczona, zawiera wiele błędów w przykładach (nazwy angielskie przeplatają się z polskimi). Uczulam na ten fakt, żeby początkujący się nie zniechęcili, ponieważ wartość merytoryczna jest dobra, niestety osoba odpowiedzialna za tłumaczenie się nie popisała. Z drugiej strony wyłapywanie błędów będzie dla nowicjuszy sprawdzianem ich spostrzegawczość i zdolności przyswajania nowego materiału.
JavaScript - Mocne strony - Douglas Crockford#
Pozycja wydana w 2009 roku przez jednego z największych autorytetów JavaScriptu. Na zaledwie 160 stronach autor stara się opisać to co najważniejsze w języku. Nie jest to kompendium wiedzy, gdzie znajdziesz wszystkie zawiłości. W zamian za to otrzymujesz opis tego co w języku najpiękniejsze, czyli jego mocne strony (literały, funkcje, obiekty, dziedziczenie prototypowe). Przykłady są krótkie, nie ma ich wiele, ale pozwalają spojrzeć na JavaScript jak na pełnoprawny język programowania o dużej sile ekspresji i elastyczności. Dodatkowo otrzymujemy wskazówki, których części warto unikać oraz opisy kilku dziwnych zachowań samego interpretera.
Tematyka książki obejmuje takie zagadnienia jak: gramatyka, obiekty, funkcje, dziedziczenie, tablice, wyrażenia regularne, wykaz i opis metod. Uzupełnieniem są wskazówki dotyczące stylu kodowania, najpiękniejszych/kłopotliwych/nietrafionych cech języka oraz opis narzędzia JSLint i standardu wymiany danych JSON. Bardzo ciekawie przedstawiona została składnia JS za pomocą diagramów szynowych.
Książka z pewnością nie jest dla początkujących. Raczej kierowana jest dla osób obytych z JavaScriptem, którzy chcą usystematyzować swoją wiedzę. Skierowana jest także do programistów piszących w klasycznych językach (takich jak C czy Java), którzy mają trudności z odnalezieniem się w tak dziwnym tworze za jaki uważają JS.
Nie jest to lekka książka, jest niewielka, ale zawiera pokaźną ilość materiału. Jednokrotne jej przeczytanie może okazać się niewystarczające (sam podchodziłem do niej kilka razy w początkowej fazie nauki JS-a). Nie wiem czy to wina samego tłumaczenia (miejscami masło maślane), czy może męczących przykładów, gdzie autor bardzo często stosuje własne metody zdefiniowane kilka/kilkanaście stron wcześniej, ale taka forma (szczególnie przy wyjaśnianiu funkcji i dziedziczenia) jest po prostu "niestrawna". Ze względu na osobę autora, w drodze wyjątku, książkę polecam, ale tylko po uważnym zapoznaniu się z przytaczanymi tutaj mankamentami.
Wydajny JavaScript - Nicholas C. Zakas#
Jedna z moich najlepszych inwestycji jeśli chodzi o książki. Pozycja wydana w 2010 roku. W całości poświęcona została zagadnieniom związanym z wydajnością. Tematyka obejmuje kwestie samego rdzenia języka jak i współpracy z pozostałymi komponentami przeglądarki. Jeśli coś gdzieś działa wolno, blokuje interfejs już wiesz gdzie w pierwszej kolejności szukać porady. Na 230 stronach umieszczono wiele cennych wskazówek optymalizacyjnych, do których dotarcie w Internecie zajęłoby wiele czasu.
Opis zaczyna się już od wskazówek na temat ładowania skryptów i ich uruchamiania. Następnie poruszono zagadnienia dostępu do danych, wydajnej współpracy z modelem DOM, sterowania przepływem, wyrażeń regularnych, nieblokujących interfejsów użytkownika. Ponadto w bardzo interesujący sposób przedstawiono kilka formatów (i sposobów) przesyłania danych przy użyciu Ajaksa. Ostatnie rozdziały obejmują praktyki dobrego programowania, wdrażania aplikacji za pomocą specjalnych narzędzi (np. Apache Ant), kilka sposobów debugowania kodu w różnych przeglądarkach.
Książkę polecam każdemu, kto ma już opanowany język w stopniu co najmniej średnim i chciałby zwiększyć wydajność tworzonego przez siebie kodu. Niestety, w przypadku JavaScriptu jest to istotny problem, to programiści zmuszeni są do szukania wydajności tam, gdzie w innych językach programowania całą robotę odwala kompilator. Wraz z rozwojem przeglądarek z części opisywanych porad zostaniemy odciążeni, jednak dalej pozostaną takie aspekty, gdzie wiedza i doświadczenie będzie procentowało szybszymi programami.
Z niecierpliwością czekam na kolejne książki poruszające podobną tematykę, nie jest ich wiele a każda jest na wagę złota (dosłownie).
JavaScript - Wzorce - Stoyan Stefanov#
Kolejna książka dotycząca JavaScriptu, wydana w 2012 roku (zakupiłem ją na początku kwietnia tego samego roku). Niecałe 200 stron zawiera ogromny zasób wiedzy, w zasadzie jest to zbiór najlepszych praktyk zebranych i opisanych przez autora w jednym miejscu.
Cały materiał poświęcony został wzorcom, czyli schematom (lub szablonom) opisującym i rozwiązującym typowe problemy. Wzorce pomagają podzielić problem na bloki i skupić się na jego unikatowych aspektach. Pozwalają także zapewnić lepszą komunikację, oferując jednolite i powszechnie stosowane słownictwo. Stoyan przedstawił dwie grupy wzorców: wzorce kodowania oraz wzorce projektowe.
Wzorce kodowania zajmują większą część treści, są specyficzne dla języka JavaScript. Obrazują dobre praktyki wynikające z unikatowych cech języka. Zwrócono uwagę przede wszystkim na tworzenie kodu łatwego w konserwacji, minimalizacji liczby zmiennych globalnych, unikania problematycznych cech języka, wykorzystania literałów i konstruktorów, tworzenia i wykorzystania funkcji, tworzenia obiektów, dziedziczenia, stosowania DOM w przeglądarce. Bardzo solidny i konkretny materiał, w którym opisano najlepsze praktyki stosowane przez topowych programistów JS-a.
W kolejnej części zaprezentowano wzorce projektowe. Są to szablony zdefiniowane po raz pierwszy w książce tzw. gangu czterech pod tytułem "Design Patterns: Elements of Reusable Object-Oriented Software", która opublikowana została po raz pierwszy w 1994 roku. Powiązanie ich z JavaScriptem jest ciekawe, ogólnie wzorce nie są uzależnione od języka programowania, ale tworzone były z perspektywy języków o silnej kontroli typów np. C++ czy Java. Czasami nie ma sensu stosować ich co do joty w języku dynamicznym jakim jest JavaScript, niektóre z tych wzorców to obejścia pewnych problemów generowanych przez języki ze statycznie definiowanymi typami i dziedziczeniem bazującym na klasach. W JavaScripcie zazwyczaj mamy prostsze alternatywy realizujące owe zadania. W książce umieszczono opisy następujących wzorców: singleton, fabryka, iterator, dekorator, strategia, fasada, pośrednik, mediator i obserwator.
Pozycja prezentuje wzorce opracowane dla standardu ECMAScript w wersji 3 (1999 rok). Przedstawiono także kilka poleceń z wersji 5. Pojawia się również pojęcie antywzorca, czyli kodu, który błędem składniowym nie jest, ale jego stosowanie jest niezalecane. Każdy przykład przechodzi kontrolę jakości wykonanym za pomocą narzędzia JSLint (oprócz niektórych antywzorców).
Niniejsza książka nie jest przeznaczona dla początkujących. Jej docelowymi odbiorcami powinni być profesjonalni programiści, którzy chcą zwiększyć swoje umiejętności w posługiwaniu się językiem JavaScript. Jest to obowiązkowa pozycja dla osób, które chcą pisać lepszy, bardziej przejrzysty i wydajniejszy kod, dlatego polecam ją każdemu. Szkoda, że tak późno została przetłumaczona (oryginalne wydanie pochodzi z 2010 roku). Miejmy nadzieję, że autor znajdzie siły i zbierze do kupy podobny materiał dla ECMAScript 5.
JavaScript - Zasady programowania obiektowego - Nicholas C. Zakas#
Książka z 2014 roku nabyta przeze mnie pod koniec marca 2015 roku. Niewiele stron (raptem 128) w mniejszym formacie (zbliżonym do B5). Cały materiał skupia się na obiektowej naturze języka, który skompletowano celem ułatwienia programistom pracującym w językach bazujących na klasach (np. C++ czy Java) przejść na JavaScript, czyli język pozbawiony klas (czasy sprzed ECMAScript 6).
Sześć rozdziałów (tj. typy proste i referencje, funkcje, obiekty, konstruktory i prototypy, dziedziczenie oraz wzorce tworzenia obiektów) w rzetelny, a przede wszystkim przystępny sposób, wyjaśniają wszystkie najistotniejsze aspekty obiektowości JavaScriptu. Warto chociażby wspomnieć o takich niuansach jak: różnica między typami prostymi a referencyjnymi, literały i konstruktory, sposoby identyfikacji różnych typów danych, dereferencja obiektów, deklaracja funkcji a wyrażenie funkcyjne, arność funkcji, przeciążanie funkcji, podnoszenie funkcji, wartość this
, iteracja po właściwościach obiektów, dziedziczenie obiektów i wszystko co z nim związane (z przytoczeniem wewnętrznych - niedostępnych wprost - poleceń języka).
Nie zapomniano również o tych nowościach z ECMAScript 5, które mają zastosowanie w obiektach. Są to m.in. metody Object.create()
, Object.keys()
, Object.defineProperty()
, Object.defineProperties()
, Object.getOwnPropertyDescriptor()
, Object.getOwnPropertyNames()
, Object.getPrototypeOf()
i cała reszta. Świetnie wyjaśniono zagadnienia związane z właściwościami danych oraz właściwościami funkcji dostępowych, ich atrybuty oraz kontrola za pomocą deskryptora właściwości, zapobieganie modyfikacji obiektu nowymi metodami Object.preventExtensible()
, Object.seal()
czy Object.freeze()
i detekcja tych stanów metodami Object.isExtensible()
, Object.isSealed()
oraz Object.isFrozen()
.
Całość domykają wskazówki związane z najpopularniejszymi wzorcami tworzenia kodu, do których zaliczamy wzorzec modułu (wariant z obiektem i konstruktorem), wzorzec modułu z ujawnieniem, domieszki (z obejściem problemu przy kopiowaniu właściwości funkcji dostępowych) oraz zabezpieczanie zasięgu w konstruktorach (tj. przy braku użycia słowa kluczowego new
).
Książkę jak najbardziej polecam, w zasadzie wszystko co wychodzi spod pióra Zakasa można brać w ciemno. Mimo że większość przytoczonego tutaj materiału nie był mi obca, to forma jego prezentacji na tle pozostałych pozycji okazała się na tyle kusząca, że wylądowała w mojej biblioteczce i, co najważniejsze, wcale nie obrasta kurzem. Z niecierpliwością czekam na podobny materiał poświęcony ECMAScript 6.
JavaScript dla programistów PHP - Stoyan Stefanov#
Polskie tłumaczenie dostępne w 2014 roku (oryginał pochodzi z 2013) nabyte przeze mnie pod koniec marca 2015 roku. Niewiele stron (raptem 168) w mniejszym formacie (zbliżonym do B5). Książka skupia się na rdzeniu ECMAScript, i zgodnie z tytułem, zawiera sporo nawiązań do języka PHP.
Siedem rozdziałów (tj. wprowadzenie, składnia języka JavaScript, funkcje, programowanie obiektowe, wbudowane interfejsy programistyczne, ECMASCript 5 oraz wzorce w języku JavaScript) ma zwięzły i rzeczowy charakter. Treść obejmuje typowe zagadnienia, z którymi codzienny programista JavaScriptu styka się na co dzień. Dodatkowo pojawia się też wiele interesujący niuansów i wskazówek (np. błędne traktowanie operatorów typeof
i void
jak funkcji, dziwactwa w automatycznym rzutowaniu typów, prawidłowe umieszczanie znaków ()
dla funkcji natychmiastowych i jego przyczyny), o których nie należy zapominać. Wyjątkowo dobrze wyjaśniono kwestię domknięć, zakresu widoczności i przenoszenia zmiennych, a także łańcucha zasięgów w funkcjach, podparte analizami za pomocą narzędzi deweloperskich (w przeglądarkach Chrome i Safari). Jeśli chodzi o nowości ECMASCript 5 to w zasadzie wymieniono większość (z pominięciem opisów dla właściwości danych i funkcji dostępowych).
Mnie osobiście najbardziej spodobało się umiejętne dawkowanie informacji o PHP. Oprócz wskazywania różnic i umieszczania analogicznie działających fragmentów kodu w obu językach, dostajemy także informację o tym, w której wersji języka PHP dane polecenia w ogóle się pojawiły (np. literały czy domknięcia). Taka forma prezentacji może być przydatna nie tylko dla programistów PHP, którzy w krótkim czasie planują poskromić JavaScript, ale i dla programistów JS-a, którzy od czasu do czasu muszą popracować po stronie serwera.
Cóż więcej mogę dodać? Jest to kolejna udana książka Stoyana, którą z czystym sumieniem polecam.
Zrozumieć JavaScript - Wprowadzenie do programowania - Marijn Haverbeke#
Książka z 2015 roku (drugie wydanie) nabyta przeze mnie w połowie września tego samego roku. Jest dość obszerna (ok. 480 stron), gdzie zawarto sporo materiału dotyczącego nie tylko JavaScriptu, ale i ogólnie pojętego programowania. Już na wstępie warto podkreślić, że jej autorem jest twórca znanej biblioteki CodeMirror, z której korzystam w moim Testerze kodu WWW v2.
Materiał składa się z krótkiego wprowadzenia oraz z trzech głównych części podzielonych na kolejne rozdziały. Każdy rozdział kończy się podsumowaniem z dodatkowymi ćwiczeniami do samodzielnego wykonania. Dla nowicjuszy na końcu książki umieszczono krótkie podpowiedzi dla możliwych rozwiązań. Niektóre z rozdziałów poprzedzono ciekawymi cytatami znanych osób (głównie tych związanych z programowaniem). Na końcu każdej cześć znajduje się jakieś większe zadanie projektowe, np. symulacja elektronicznego życia, własny język programowania, program do tworzenia rysunków czy serwis WWW do wymiany informacji.
Pierwsza część stanowi wprowadzenie do JavaScriptu. Zawiera opisy takich elementów składowych języka jak: wartości, typy i operatory, struktury programu (zmienne, pętle, instrukcje warunkowe), funkcje (parametry, zagnieżdżenia, stos wywołań, domknięcia, rekurencja), obiekty i tablice (metody, prototypy, konstruktory, dziedziczenie), błędy i ich obsługa (tryb ścisły, debugowanie, wyjątki, aseracje), wyrażenia regularne czy moduły.
Część druga koncentruje się na wykorzystaniu JavaScriptu w przeglądarkach internetowych. Poruszane tematy to m.in. budowa Sieci, zgodność i wojny przęglądarkowe, bezpieczeństwo (piaskownica), przewodnik po DOM (struktura dokumentu, drzewa, opisy właściwości i metod, manipulowanie stylami), obsługa zdarzeń (procedury obsługi, obiekty zdarzeń, propagacja, zdarzenia klawiatury i myszy, zegary), rysowanie na kanwie, protokół HTTP (przeznaczenie, obiekt XMLHttpRequest, żądania synchroniczne i asynchroniczne, obietnice, szyfrowanie), formularze (opisy poszczególnych kontrolek).
W ostatniej części skupiono się na ciekawszym aspekcie wykorzystania JS-a jakim jest platforma Node.js. Dowiadujemy się tutaj jej najważniejszych cech, tj. zalet i wad wynikających z asynchroniczności, instalowania modułów, tworzenia serwera HTTP, użycia strumieni, czy w końcu obsługi błędów. Ostatnie kilka stron, moim zdaniem najciekawszych, poświęcono wydajności i optymalizacji JavaScriptu. Na przykładzie generowanego grafu wyjaśniono mechanizmy rządzące językiem (interpretacja, kompilacja etapowa, gorący kod, fizyka w kodzie, profilowanie, rozwijanie funkcji, odśmiecanie, typy dynamiczne).
Jeśli chodzi o całokształt to mam mieszane odczucia. Rozpiętość materiału jest szeroka, ale wszystko to opisano tak ogólnikowo, że z żadnego zagadnienia nie wyniesiemy niczego konkretniejszego. W dodatku da się tutaj wyczuć lekką chaotyczność i brak lekkości pióra, w niektórych miejscach treść jest zbyt rozwlekła, pewne analogie są nieco "dziwaczne", tak że konsumowanie kolejnych stron (w porównaniu z niektórymi recenzowanymi do tej pory tytułami) wymaga większego wysiłku. Nie wiem czy to kwestia tłumaczenia czy może przyjętej konwencji, ale książki nie poleciłbym osobom początkującym (materiał trudny w odbiorze), jak i zaawansowanym (materiał zbyt ogólny i w przeważającej części nudny). Co prawda jest w niej kilka rzeczy, które osobiście mnie zainteresowały (np. własny kod do kolorowania składni, własny język programowania i jego interpreter na bazie JS-a, opisy wyrażeń regularnych, czy cały rozdział trzeci), ale wszystko to można by zawrzeć na mniejszej liczbie stron w sposób bardziej kompaktowy. Z uwagi na wiedzę i szacunek dla autora tej książki nie przekreślam jej całkowicie, ale wszystkim osobom zainteresowanym jej zakupem polecam uprzednie zaznajomienie się z jej darmową wersją elektroniczną.
Projekty - Tworzenie stron WWW z wykorzystaniem Ajaksa - Larry Ullman#
Kolejna gratisowa pozycja dołączona do innych zamawianych książek w wydawnictwie Helion. Data wydania to 2008 rok, książkę otrzymałem w marcu roku 2012. Całość zajmuje raptem 176 stron.
Pierwszy raz czytam książkę branżową wydaną w tak odmienny sposób. Spory rozmiar czcionki, zamiast teoretycznych rozważań i długich opisów wykorzystano dużo zdjęć w połączeniu z krótkim, zwięzłym komentarzem kodu. Całość czyta się bardzo szybko, dwie godziny i po sprawie.
Co do zawartości merytorycznej - jest tylko jeden przykład, którym jest strona zarządzająca pracownikami firmy (w sposób podobny do książki adresowej). Zadania stawiane przed witryną to umożliwienie pobierania informacji o pracownikach konkretnego działu, dodawanie nowych pracowników oraz przeszukiwanie bazy. Książka obrazuje krok po kroku jak wykonać taką stronę w klasycznym ujęciu (PHP) oraz unowocześnienie poprzez zastosowanie Ajaksa. Dodatkowo, do przechowywania danych zastosowano bazę danych MySQL.
Materiał zawarty w pozycji jest bardzo podstawowy. Nie nauczymy się z niego dobrze (X)HTML-a, PHP, Ajaksa czy bazy danych. Jeden przykład nie wystarczy żeby zgłębić asynchroniczny JS i poznać jego prawdziwe możliwości. Samo stosowanie JavaScriptu jest elementarne (nieoptymalne), podejrzewam, że w kodzie po stronie serwera jest podobnie (nie mam kompetencji oceniać tego aspektu).
Podsumowując, książka nieopłacalna w zakupie, istnieją o wiele ciekawsze i bogatsze pozycje dotyczące Ajaksa. Prawdę powiedziawszy, to co przeczytałem, można by śmiało umieścić w jednym artykule na blogu.
jQuery - Od nowicjusza do wojownika Ninja - Earle Castledine, Craig Sharkie#
Polskie tłumaczenie dostępne dopiero w 2012 roku (oryginał pochodzi z 2010) nabyte przeze mnie w czerwcu tego samego roku. Na 336 stronach zgromadzono sporo materiału dotyczącego jQuery.
Pierwsza moja pozycja poświęcona jednej z najpopularniejszych bibliotek JavaScriptu. Książka składa się z 9 rozdziałów i trzech dodatków. Nie opisano w niej wszystkich możliwych opcji jQuery, raczej zaprezentowano w sensowny sposób przegląd najważniejszych zagadnień. Opisy poruszają kwestie importu biblioteki, selektorowego wyboru elementów, manipulacji i poruszaniu się po drzewie DOM, animacji, przewijania, pokazu slajdów, menu, kart, dymków, paneli, ajaxa, formularzy, widżetów, okien dialogowych oraz kilku zaawansowanych technik samej biblioteki.
Materiał jest prosty i przystępny nawet dla najbardziej początkujących. Pozwala szybko zorientować się w możliwościach biblioteki, jej filozofii oraz przeznaczeniu. Bardzo fajnie zaprezentowano przykłady: mamy pomysł, potem proces implementacji oraz alternatywy w postaci gotowych wtyczek. Przykłady zostały bardzo dobrze dobrane, dotyczą technik, które najczęściej wykorzystywane są przy projektowaniu stron WWW.
Oczywiście dla osób już obytych z biblioteką jQuery pozycja może być (a raczej będzie) zbyt uboga - lepiej bezpośrednio analizować dokumentację techniczną ze strony projektu. Dla wszystkich, którzy dopiero zaczynają przygodę z jQuery prezentowana książka będzie właściwa. Nie jest to wybitna pozycja z opisem każdego możliwego polecenia, ale ze względu na interesujące (aktualne) przykłady warta rozważenia. Dobrze czasami odpocząć od ekranu monitora.
HTML5 - Programowanie aplikacji - Zachary Kessin#
Wydanie z 2012 roku nabyte przeze mnie w czerwcu tego samego roku. Niewiele stron (raptem 168) w mniejszym formacie (zbliżonym do B5).
Materiał w całości porusza zagadnienia związane z tworzeniem aplikacji wprost w przeglądarce przy zastosowanie najnowszego języka HTML5. Nie jest to podręcznik przedstawiający od deski do deski nowości HTML5. Jest to raczej przewodnik, którego celem jest ukazanie i wprowadzenie do najnowszych technik i możliwości aktualnych przeglądarek internetowych. Większość prezentowanego kodu tworzona była z wykorzystaniem specjalnych bibliotek, które ułatwiają tworzenie aplikacji. Całość składa się z 10 rozdziałów, z których każdy porusza odmienną tematykę.
W rozdziale poświęconym JavaScriptowi zwrócono szczególną uwagę na te aspekty języka, które są pomijane przez początkujących, a bez których optymalne tworzenie kodu nie jest możliwe. Są to wywołania zwrotne, funkcje jako podstawowe obiekty, domknięcia, programowanie funkcyjne, rozszerzanie obiektów.
Kolejny rozdział omawia zagadnienia związane z testowaniem aplikacji JS. Skupiono się głównie na testach jednostkowych (pakiet QUnit) lub integracji (pakiet Selenium). Mało jest materiałów poświęconych testowaniu kodu JavaScript, dlatego każda notka jest mile widziana.
Pozostałe rozdziały prezentują nowinki z HTML-a 5. Będą to opisy takich interfejsów jak WebStorage, IndexedDB, praca z plikami binarnymi (obiekty blob), obiekt FileReader, obiekt FormData, przeciąganie i upuszczanie, FileSystem, praca w trybie offline, WebWorkers, WebSockets. Ostatni rozdział ukazuje kilka innych aspektów, np. znaczniki dla aplikacji (progress, metter), ułatwianie dostępu WAI-RIA, mikrodane, nowe typy kontrolek formularzy, tagi audio i video, elementy canvas oraz SVG, geolokacja oraz kilka usprawnień z CSS3.
W dodatku na końcu książki umieszczono najlepsze narzędzia programistyczne polecane przez autora. Są to m.in. JSLint, JSMin, JSBeautifier, Emacs JS2 mode, Aptana, YSlow, FireRainbow, Speed Tracer, CoffeScript, ClojureScript, Rhino, Node.js.
Początkowo miałem mieszane uczucia odnośnie książki. Mały format oraz niewielka ilość stron nie gwarantuje dużej dawki informacji. Ponadto stosowanie bibliotek (praktycznie w każdym nowym API) nie pozwala poznać technologii w pierwotnej (należytej) formie. Jednak po zakończeniu lektury postanowiłem na chłodno przeczytać całość jeszcze raz. Dzięki temu stwierdzam, że moja obecna wiedza jest większa, niż jeszcze kilka dni temu. To dobry objaw i rekomendacja dla książki, która faktycznie czegoś uczy.
Podsumowując, książkę polecam osobom początkującym, które słyszały coś o nowościach HTML5, ale jeszcze nie miały okazji ich stosować. Jest to idealna pozycja do wstępnego zapoznania się z nowinkami, w nudnawe, pochmurne wieczory. Dla osób szukających konkretów i kompleksowych opisów działania polecam jednak dokumentacje i specyfikacje, w których znajdziemy każdy kruczek danego interfejsu. Prawdę powiedziawszy HTML5 wprowadza bardzo wiele nowości na wielu płaszczyznach (znaczniki, interfejsy dla JavaScriptu), których dokładne opisanie w jednej książce może okazać się bardzo trudne. Należy oczekiwać wielu mniejszych publikacji, które poruszać będą specyficzne zagadnienia osobno.
Wyrażenia regularne - Wprowadzenie - Michael Fitzgerald#
Polskie tłumaczenie dostępne w 2013 roku (oryginał pochodzi z 2012) nabyte przeze mnie w listopadzie tego samego roku. Niewiele stron (raptem 168) w mniejszym formacie (zbliżonym do B5).
Pierwsza książka w moim zbiorze, która w całości poświęcona jest wyrażeniom regularnym. Pozycja składa się z 10 rozdziałów omawiających m.in. następujące zagadnienia: proste techniki dopasowań, granice, alternatywy, grupy i odniesienia, klasy znaków, dopasowania Unicode, kwantyfikatory, przewidywania oraz dodawanie znaczników HTML5 do dokumentu.
Materiał jest prosty i przystępny nawet dla najbardziej początkujących. Pozwala szybko zorientować się w mechanizmach rządzących wyrażeniami regularnymi. Przykłady uruchamiane są w różnych narzędziach (np. aplikacjach TextMate, Notepad++, Oxygen, RegexPal, RegExr, Rubular, Reggy, sed, grep, vim czy języku Perl). Dodatkowo otrzymujemy nieco informacji technicznych i historycznych na temat wszystkich narzędzi oraz niektórych bibliotek. Muszę przyznać, że taka forma prezentacji przypadła mi do gustu, za jednym zamachem uczymy się obsługi całej gamy narzędzi.
Wyrażenia regularne są rozległym zagadnieniem, powstało wiele różnych implementacji, które nie zawsze są ze sobą zgodne. Omawiana książka jest tylko wprowadzeniem do tematu, aczkolwiek bardzo dobrym, dlatego książkę polecam każdemu (szczególnie osobom początkującym). Od wyrażeń regularnych się nie ucieknie, są niezwykle pomocne w codziennej pracy dlatego ich naukę należy rozpocząć jak najszybciej. Dobrym pomysłem będzie zakup kolejnej książki już z samymi przykładami praktycznymi (im więcej tym lepiej), chociaż sam na chwilę obecną nie zaopatrzyłem się jeszcze w nic konkretnego.
Git - Rozproszony system kontroli wersji - Włodzimierz Gajda#
Polska publikacja dostępna w 2013 roku i nabyta przeze mnie w maju tego samego roku. Dość obfity materiał (ok. 324 stron), ale sporą część zajmują ilustracje i ćwiczenia z rozwiązaniami.
Pierwsza książka w moim zbiorze, która w całości poświęcona jest systemowi kontroli wersji Git. Pozycja składa się z 32 rozdziałów omawiających m.in. następujące zagadnienia: instalacja Gita, tworzenie repozytoriów, tworzenie rewizji, identyfikowanie rewizji, stany plików, przywracanie plików, ignorowanie plików, tworzenie i usuwanie gałęzi, łączenie gałęzi, synchronizacja repozytoriów, konflikty, pliki tekstowe i binarne czy praca z serwisami github.com oraz bitbucket.org.
Całość w pierwszej kolejności kierowana jest dla osób początkujących, którzy nie mieli styczności z Gitem lub znają go pobieżnie, a ich jedyna aktywność ogranicza się do odświętnego wykonania drobnych korekt w repozytoriach umieszczonych online. Dzięki książce nauczysz się pracować lokalnie ze skopiowanymi repozytoriami (oryginalnymi jak i własnymi forkami), poznasz techniki scalania gałęzi i synchronizowania projektów. Jeśli wspomniane czynności nie kryją przed tobą żadnych tajemnic to powinieneś zaopatrzyć się w bardziej wyspecjalizowaną lekturą lub, w zależności od potrzeb, bezpośrednio zaglądać do dokumentacji Gita.
Na dzień dzisiejszy system kontroli wersji Git to w zasadzie standard przy tworzeniu, rozwijaniu i synchronizacji oprogramowania komputerowego między programistami. Pierwotnie powstał w 2005 roku na potrzeby jądra systemu Linux, ale szybko zyskał na popularności (głównie za sprawą serwisu github.com) i obecnie używany jest przez szereg innych projektów open source, np. jQuery czy Node.js. Prędzej czy później każdy zetknie się z jakimś systemem kontroli wersji, i z dużym prawdopodobieństwem można założyć, że będzie to właśnie Git. Jego przyswojenie (przynajmniej w podstawowym zakresie) staje się nieodzownym elementem programowania i z pewnością zaprocentuje w przyszłości. Przyznam się szczerze, że na poważnie tematem zainteresowałem się dopiero w 2016 roku, chociaż książkę zakupiłem 3 lata wcześniej. Z czystym sumieniem polecam ją wszystkim osobom początkującym, dla których początkowe studiowanie oryginalnej dokumentacji Gita stanowi zbyt wysokie progi. Sam od niej zaczynałem i uważam ją za udaną inwestycję. W przypadku programowania na naukę nigdy nie jest za późno, byle zdrowia i motywacji nie zabrakło, czego sobie i Wam życzę.