Wątek zablokowany 2014-08-26 17:49 przez dzek69.

Jakie książki z dziedziny webmastering warto przeczytać?

0

Powiem w sposób, który większość może rozśmieszyć - chciałbym być mistrzem tworzenia stron internetowych.

Wiem, że to lata praktyki, godziny siedzenia nad kodem, ale od czegoś trzeba zacząć. Tutaj pytanie do was, jakie lektury pomogą mi rozpocząć tę podróż?

Chciałbym móc stworzyć własny atrakcyjny serwis, który będzie przyciągał swoja atrakcyjnością i bezpieczeństwem, gdzie będzie można pograć w jakąś grę lub w inny sposób mile spędzić czas.

Z tego co zdążyłem się dowiedzieć, będę musiał poznać takie zagadnienia:

html
xhtml
css
php
mysql
javascript + jQuery
AJAX
flash
bezpieczeństwo

  • może Wy znacie jeszcze jakieś technologie, które warto/należy poznać by być wartościowym twórcą tego typu stron internetowych?

Będę wdzięczny za wymienienie pozycji, które są świetne w wyżej wymienionych tematach, które cenicie i polecacie.

0

Klasyka, ale ciągle bardzo aktualna:

Jefrey Zeldman - Projektowanie stron www. Standardy sieciowe.

Ściągnij ją sobie, duża część książki to tło historyczne, ale reszta to konkretny kawał wiedzy.

Na początek flash sobie odpuść...

A mistrzem nigdy nikt nie będzie, tak to już jest w tej branży, że cały czas dowiadujesz się czegoś nowego(:

1

@Nequrian:
To, co mówisz nie jest ani dziwne, ani śmieszne. To bardzo dobre podejście i szkoda, że tak mało osób je posiada. Tzn. wielu coś tam pieprzy, że chcieliby być najlepsi, ale myślą, że przeczytanie 2 książek i 5 tutoriali wystarczy.

Tak się składa, że też tak sobie kiedyś powiedziałem i wciąż tak mówię. Czytam dość... sporo. Wszystkie wymienione przeze mnie niżej książki przeczytałem, chyba że wyraźnie zaznaczyłem, że jest inaczej (bodajże 2 nie przeczytałem). Wszystkie polecam -- nie wymieniam czegoś, co przetrawiłem, ale było kiepskie.

html
xhtml

Wbrew pozorom ciężko o dobrą książkę z dziedziny samego (X)HTML-a. To dlatego, że dobrze napisany kod HTML to tylko struktura. Nie da się w dobrym HTML-u zakodować wyglądu strony, bo HTML nie powinien zawierać informacji o wyglądzie. Za to odpowiedzialny jest CSS. Nazywamy to rozdzieleniem warstw.

Ponieważ warstwa struktury to ważna podstawa, ale wciąż tylko podstawa -- sama w sobie dająca mało efektowne efekty -- książek o czystym HTML-u praktycznie nie ma. Na szczęście ich nie trzeba. Są źródła w necie, jest specyfikacja W3C (na w3.org), powinno wystarczyć. Trzeba tylko dużo czytać. Warto szukać informacji o "semantycznym HTML-u", a jako bonus o "mikroformatach".

Polecić tu jednak mogę dwie pozycje. Pierwsza to książka, którą wspomniał @GhostDog: Projektowanie stron www. Standardy sieciowe (Jeffrey Zeldman). Książka-legenda, od której zaczął się ruch standardów sieciowych. Niedawno wyszło jej nowe wydanie, w Polsce jeszcze niedostępne. Dodam jednak, że mnie osobiście książka jakoś nie zmasakrowała, bo przeczytałem ją dość późno, gdy już wszystko wiedziałem. Tak czy siak zawiera ona informacje o całej idei standardów sieciowych i o wspomnianym rozdzieleniu warstw.

Inna książka, która z kolei łączy XHTML z CSS, to Kuloodporne strony internetowe (Dan Cederholm). W książce jest opisana seria problemów: jak zakodować menu? Jak zakodować zaokrągloną ramkę? Następnie przedstawione jest typowe, nie najlepsze rozwiązanie, wytykane są jego błędy i przedstawiane jest rozwiązanie właściwe -- elastyczne i niezniszczalne. Wszystko robione na bardzo ładnym HTML-u.

Oprócz tego polecam książki o CSS.

css

Tu króluje niepodzielnie Eric Meyer, legenda CSS. Napisał dwie książki: Sztuka projektowania stron WWW oraz CSS według Erica Meyera. Kolejna odsłona -- ja tę pierwszą przejrzałem tylko pobieżnie. Obie książki przedstawiają, podobnie jak pozycja Dana Cederholma, serię typowych problemów: zakoduj zakładki nawigacyjne, layout dwukolumnowy, galerię. Wszystko w kodzie bardzo wysokiej jakości. Ja kupiłem od razu tę drugą, bo pierwsza była niedostępna przez jakiś czas. Potem się pojawiła, ale uznałem, że już za dużo umiem by mi się przydała i tylko przejrzałem egzemplarz od znajomego. Widziałem jednak, że to to samo co "Kolejna odsłona", tylko inne -- ciut łatwiejsze -- projekty. Warto kupić obie.

Eric Meyer napisał jeszcze dwie inne książki o zupełnie innym podejściu. Pierwsza to CSS. Kaskadowe arkusze stylów. Przewodnik encyklopedyczny. Jeśli miałbyś problemy ze znalezieniem informacji o CSS w Internecie, tj. co robi jaka własność, to powinieneś koniecznie ją kupić. Tak naprawdę, jeśli nie rozumiałbyś jeszcze jak działają selektory i kaskada w CSS, to polecam zacząć właśnie od tej książki! Nawet przed tymi dla HTML-a i przed innymi pozycjami Meyera! Ta książka po prostu daje Ci teorię na temat CSS. Nie ma w niej praktycznych projektów, ale jeśli nie masz pewnych solidnych podstaw, to nie ma sensu siadać do książek z praktycznymi projektami, gdzie nie jest wytłumaczone, co robi każda użyta właściwość CSS. W "Przewodniku encyklopedycznym" jest wszystko.

Jeśli zaś nie mógłbyś go z jakichś przyczyn nabyć, to -- na Boga! -- kup chociaż CSS. Leksykon kieszonkowy! Nie zastąpi "Przewodnika", ale kosztuje paręnaście złotych i ja go sobie kupiłem, żeby najważniejsze rzeczy zawsze mieć pod ręką (przydaje się np. na konferencjach, czy coś).

php
mysql
Tu w zasadzie mogę polecić jedną książkę. Choć ona sama nie wystarczy.

Książka jest jednak raczej pozycją obowiązkową. Ceniona, świetnie się sprzedaje, ciągle wypuszczają nowe wydania. PHP. Zaawansowane programowanie. Vademecum profesjonalisty (George Schlossnagle). Sporo rzeczy i to na poziomie. Wszystko Ci się na początku nie przyda, bo zahaczają tam nawet o pisanie własnych rozszerzeń do PHP ;), ale bez obaw -- to tylko jeden rozdział (no dobra: cztery rozdziały... z dwudziestu trzech). Pozostałe opisują również bardziej podstawowe rzeczy, ale na "profesjonalnym" poziomie. Jest trochę o stylu kodowania, o zapewnianiu wydajności, testowaniu, buforowaniu etc. Bazy danych też tam gdzieś się w tle przewijają.

Jeśli nigdy nie programowałeś, to na pewno będziesz potrzebował jeszcze innych źródeł dla początkujących. Ja tu wymieniam to, co jest w zasadzie najlepsze na rynku. Ale dla bardziej zaawansowanych programistów.

Z tymi bazami to mam problem z poleceniem czegokolwiek, bo... nie kupowałem z tej dziedziny zbyt wielu książek (miałem jeszcze jedną, ale to był stary shit, którego nie mogę polecić). Po prostu na studiach tak wałkowaliśmy ten temat, że uważałem go za w miarę ogarnięty. Aktualnie jednak czaję się na jakąś dobrą książkę z tej dziedziny, ale jeszcze jej nie wyczaiłem. Jakby ktoś miał pomysły, to chętnie posłucham ;).

javascript + jQuery

Tu nie ma nawet o czym mówić. JavaScript -- mocne strony (Douglas Crockford). Pozycją OBOWIĄZKOWA dla każdego JavaScriptera. A jak ktoś ją przeczyta i powie, że mało praktycznych przykładów, które może wkleić na swoją kReJzI sTr0nk3, to go osobiście ukatrupię :D. Książka uczy wykorzystania potęgi JavaScriptu. Każdy szanujący się programista JavaScript MUSI opanować ten materiał. Bardzo niewielu tych, co korzystają z JS-u go opanowało. No i mamy tragedię ;).

Co do jQuery to nie przeczytałem jeszcze żadnej książki na ten temat. Spędziłem mnóstwo czasu nad analizowaniem kodu samej biblioteki, pisałem własne rozszerzenia. Korzystałem z jej fragmentów, analizowałem silnik selektorów (który niedawno zmienili), bo pisałem własny. Uczyłem się więc bezpośrednio z kodów źródłowych i z dokumentacji, która jest całkiem niezła. Czekam jednak na dobrą książkę o jQuery. Napaliłem się na jQuery Enlightenment (Cody Lidley), która podobno jest świetna. Nie ma jej jeszcze w Polsce, niestety.

AJAX

Również i tutaj nie mam problemów ze wskazaniem przykładów. Jeden to Kuloodporny Ajax (Jeremy Keith). Keith jest postacią bardzo znaną w światku. Książka jest niewielka, a zawiera nawet mini-wprowadzenie do JavaScriptu. Najważniejsze jest jedna kto, że pokazuje techniki ajaxowe bardzo wysokiej jakości (dba nawet o osoby niewidome!). Przez całą książkę przewija się zasada nieinwazyjnego JavaScriptu (ang. unobtrusive JavaScript), która jest cholernie ważna i którą trzeba wkuć na blachę. Sporo konkretnych przykładów, więc od razu wiadomo, o co chodzi.

Inna pozycja to Ajax dla zaawansowanych. Architektura i najlepsze rozwiązania (Shawn M. Lauriat). Ona już jest grubsza, może warto czytać ją w drugiej kolejności. Przykłady typowo techniczne, bardziej hardcorowe. Ale poziom raczej wysoki. Na końcu praktycznie piszesz... grę multiplayer w Ajaxie. Chyba wystarczy, co? ;)

flash

Tu mam braki. We Flashowym Action Scripcie napisałem ledwie parę małych tysięcy linii kodu. Praktycznie nie zajmuję się tą technologią -- jedynie jeśli chodzi o tzw. sIFR, czy sytuacje awaryjne. Stąd niczego polecał nie będę. Jak widzisz, nie tak łatwo opanować WSZYSTKO, mimo że staram się od paru lat! (przyznam się jednak, że Flash mnie po prostu jakoś mniej jara i to raczej nie mój rynek)

bezpieczeństwo

To też miałem mocno wałkowane na studiach, ale po nich przeczytałem jedną super pozycję. O tyle fajną, że zorientowaną typowo na branżę aplikacji webowych, a konkretnie -- na technologię Ajax. Bezpieczeństwo aplikacji tworzonych w technologii Ajax (Billy Hoffman, Bryan Sullivan). Świetnie się czyta. Sporo fajnych anegdot, a jednocześnie konkretnych rzeczy. O, cholera! Właśnie sobie przypomniałem, że mimo iż książka od paru miesięcy leży na półce, jeszcze nie przeczytałem rozdziału analizującego robaki napisane w JavaScripcie! A nie przeczytałem go tylko dlatego, że chciałem sobie taką perełkę zostawić na jakąś długą i nudną podróż pociągiem, czy coś. Naprawdę dobra książka, pokazuje scenariusze ataku i szczegółowo omawia praktycznie pełen zakres bezpieczeństwa aplikacji Ajaxowych. A ponieważ w skład Ajax wchodzi zarówno JavaScript, jak i coś po stronie serwera (PHP choćby), to książka ma spore pokrycie


Tyle jeśli chodzi o technologie. IMO, jeśli chciałbyś być dobrym programistą -- również w takich językach jak JavaScript, PHP, czy ActionScript -- to musiałbyś jeszcze przeczytać parę książek o jakości kodu. Np. ostatnie 5 książek, jakie przeczytałem, nie dotyczyło żadnego konkretnego języka. Wybacz jednak, że już skapituluję i o nich nie napiszę. Ten post jest długawy nawet jak na mnie. Ale skoro masz takie podejście, to uznałem, że warto Cię naprowadzić na dobre pozycje.

Zaznaczam jednak, że wybrałem książki na poziomie. Niekoniecznie dla newbies. Jeśli przeczytasz "JavaScript -- Mocne strony", to potem spokojnie możesz się rzucić na "Kuloodporny Ajax". Ale jeśli nigdy nie programowałeś, a kupisz od razu "PHP. Zaawansowane programowanie", to raczej nie nadążysz ;). No ale tutoriale i inne źródła dla początkujących zawsze są dostępne w necie.

0

bswierczynski jesteś wielki :)

Bardzo Ci dziękuję za poświęcony czas i podzielenie się swoją wiedzą ze mną. Czytanie Twoje postu sprawiło mi ogromną przyjemność, delektowałem się każdym zdaniem :).

Wszystkie pozycje, które wymieniłeś dorzucę do koszyka (jeśli ich tam jeszcze nie ma), stworzyłem sobie koszyk w księgarni i wrzucam tam pozycje, które są zachwalane przez ludzi mądrzejszych ode mnie :).

Bardzo Ci dziękuję i chętnie dowiedziałbym się jakie pozycje czytałeś ostatnio, których już nie wymieniłeś :).

Dziękuję Ci za wskazanie mi początku długiem drogi, która rozpocznie moją podróż w świecie technologii internetowych, podróż która będzie ciężka i wyczerpująca, ale również taka w której każdy sukces będzie nagrodą i motywacją by kontynuować tę wędrówkę.

Również dziękuję Tobie Ghost :).

0

@Nequrian:
Obawiam się, że wywołałeś wilka z lasu :D. Jestem amatorskim (niespełnionym!) copywriterem i dość szybko generuję tekst, więc przygotuj się na najgorsze...

Trochę przesadziłeś z tymi podziękowaniami, choć z drugiej strony milsze to niż inne często spotykane zachowanie: ktoś pisze w danym topicu dopóki ma problem, a gdy po 10 postach mu się w końcu pomoże, to nawet dwóch słów nie napisze (niekoniecznie podziękowań -- nie napisze nawet, czy podane rozwiązanie w końcu zadziałało!).

OK, najpierw jeszcze powiem, w jakim trybie kupuję sobie książki. Od razu zaznaczam, że nie musi on być dobry dla początkującego programisty. Ja może stary nie jestem, ale lekcje programowania brałem już w podstawówce i jednak gdzieś od tej (ponad?!) dekady cały czas coś klepię. W drugiej połowie szczególnie intensywnie, a od paru lat komercyjnie. Więc noobem nie jestem, choć z drugiej strony... z dopiero co uzyskanym "-nasto" letnim doświadczeniem (z czego większość to -- co prawda intensywna -- jednak niekomercyjna nauka) jestem dopiero programistycznym nastolatkiem!

Teraz robię tak, że gdy zaczynam korzystać z jakiejś technologii, to muszę się jej przede wszystkim nauczyć. Gdy jakiś język ma być moim głównym na najbliższych parę miesięcy, szukam wszelkich źródeł na jego temat. Skupiam się, by opanować i zrozumieć go naprawdę dogłębnie. Staram się dotrzeć do najlepszych programistów tego języka. Szczególnie tych, co (dobrze) gadają na konferencjach. Przykładowo, ostatnio poświęciłem się głównie JavaScriptowi. Być może najbardziej poważanym koderem jest Douglas Crockford. Na jego stronie domowej możesz znaleźć sporo fajnych artykułów. Na YouTube i gdzieś na stronach Yahoo! możesz znaleźć prowadzone przez niego

wykłady (bardzo fajne). No i książka: "JavaScript -- mocne strony". Używasz jQuery? Znajdź jego twórcę. Jest nim John Resig. Znajdź jego blog. Poszukaj jego wykładów. Ajax?

To spojrzyj w te książki, o których mówiłem.

Niestety, o dobre książki nie jest tak łatwo. Warto spytać bardziej doświadczonych pochłaniaczy książek, czy napisać na forum takim jak to. Ja Empik odwiedzam tak z raz na tydzień (mam blisko :P) i patrzę, co też nowego pojawiło się na półkach. Niestety sporo z tego to chłam. Otwieram książkę o Ajaxie i widzę skrypty JavaScript najeżone funkcjami i zmiennymi globalnymi. Otwieram książkę do PHP i widzę już na pierwszy rzut oka kompletnie niepoprawny HTML z layoutem opartym na tabelach (made in 1995). Ktoś niedoświadczony weźmie tę książkę, natomiast dla mnie to sygnały, że autorzy nie przywiązują wagi do tego, by cały używany przez nich kod był w miarę dobry. Nie zrozum mnie źle: nie wymagam, żeby HTML w książce do PHP był ultra-semantyczny i hiperlekki, ale pewne minimum dobrego stylu wypada zachować. Trzeba tu jednak uważać, bo nawet ludzie świetnie się znający na standardach czasem walną coś brzydkiego. O ile mnie pamięć nie myli, Crockford walnął na samym początku swojej książki taki mały szablonik HTML do wstawiania skryptów, napisany totalnie na odwal i niepoprawnie. Aż polski tłumacz w przypisie to skomentował (z drugiej strony fakt, że tłumacz to zauważył dobrze świadczył o tłumaczeniu).

W każdym razie jako że umiem już jako-tako programować, staram się zawsze opanować na "dobrym" lub "bardzo dobrym" poziomie technologię, z którą przychodzi mi pracować.

Bywa jednak tak, że mam w tym pewien zastój. Tzn. po opanowaniu danej technologii dość długo przy niej pracuje i nie dochodzi mi nic nowego. Czasem wybieram wtedy inną technologię, którą zawsze chciałem opanować, albo przypominam sobie taką, której już trochę zapomniałem. Ale ostatnio nie mogłem znaleźć satysfakcjonującej mnie książki z tych dziedzin, więc postanowiłem podszlifować moje ogólne umiejętności programistyczne. Czyli podnieść jakość mojego kodu we wszystkich językach programowania.

W tym wypadku, jeśli chcesz kupić DUŻO książek, to możesz zacząć od pozycji Pragmatyczny programista. Od czeladnika do mistrza (Andrew Hunt, David Thomas). To jedna z dwóch "legendarnych" pozycji, które tu wymienię. Książka ta uczy dobrych praktyk, czasami bardzo ogólnych. Zdarza mi się niemal cytować ją na forum. Parę dni temu ktoś tu założył temat, że jakaś funkcja w JS zwraca mu zły wynik. Jedna z zasad "Pragmatycznego programisty"? "To nie SELECT jest zepsute". SELECT to oczywiście przykładowa nazwa polecenia czy funkcji wbudowanej w język lub bibliotekę używaną przez tysiące programistów. Chodzi o to, że prawie na pewno ona działa OK, a błędu musisz szukać w Twoim kodzie.

Albo inna rzecz z książki, rzadko spotykana. "Pociski smugowe". Ludzie znają często pojęcie prototypów, ale raczej nie pocisków smugowych. Prototyp to kod, który realizuje pewną część funkcjonalności aplikacji, ale jest napisany na odpieprz. Taka makieta czasem się przydaje. Jeśli się sprawdzi, wywalasz go do kosza i piszesz to porządnie (bogatszy o wiedzę uzyskaną w trakcie pisania prototypu). Pociski smugowe działają inaczej. Chodzi w nich o to, że implementujesz jakąś małą funkcję aplikacji -- np. najmniejszy modulik. Ale implementujesz go od początku do końca, w dodatku porządnie. Możesz on dowolnie ewoluować, bo to niewielki fragment systemu. Gdy będzie już tak dobrze napisany i zaprojektowany, jak sobie życzysz, to nie wywalasz go -- tylko dopisujesz kolejne moduły, używając tamtego za wzór. Po tym pierwszym masz też już zwykle gotową architekturę aplikacji, moduły pomocnicze etc.

Inna zasada: używaj systemu kontroli wersji. Nawet do projektów, które robisz sam. Nigdy tego nie stosowałem, ale książka jest tak świetna, że uwierzyłem jej na słowo. Od teraz wszystkie projekty robię na moim małym, prywatnym SVN-ie (przechowywanym na zdalnym serwerze). Dzięki temu nie muszę latać z pendrivem gdy siadam do innego kompa, nie muszę też -- co czasem robiłem, a co jest żałosne! -- wysyłać sobie kolejnej wersji projektu na GMail. No i jak coś spieprzę i nie mogę znaleźć gdzie, to robię po prostu Revert, a system kontroli wersji odwraca zmiany, które dokonałem od ostatniego zapisania repozytorium.

Książka jest tak dobra, jak o niej piszą. Nie ma w niej dużo kodu. Są proste, doskonałe zasady. Są eksperymenty myślowe. Są ciekawe ćwiczenia wraz z rozwiązaniami. Gdy kupisz ją w miarę szybko, to będziesz od razu robił dobrze wiele rzeczy, które nawet doświadczeni programiści robią często źle.

Druga legendarna książka to Wzorce projektowe (Eric Gamma i trzech innych panów; i tak każdy na nich mówi "Banda czterech"). Do jej zrozumienia potrzeba pewnej wiedzy o programowaniu obiektowym -- musisz najpierw ogarnąć klasy: dziedziczenie, enkapsulację, polimorfizm i inne takie rzeczy. Książka jest chyba najbardziej znanym i być może jednym z najpełniejszych zbiorów tzw. wzorców projektowych. Wzorzec projektowy to dość uniwersalny kawałek kodu rozwiązujący pewną klasę problemów. Nie jest to jednak algorytm. Bardziej schemat postępowania, schemat klas (a czasem po prostu użycie jakiejś metody). To taki idiom, który każdy dobry programista powinien znać. Każdy wzorzec ma swoją
nazwę, więc łatwo się o nim rozmawia. Nie wiem, czy obecnie w ogóle wiesz, co to jest klasa, więc nie będę tu przytaczał przykładowych wzorców. Powiem jedynie, że spotkać je można praktycznie w każdej większej szanującej się aplikacji. Książka Bandy Czterech to najlepsze drukowane (a może nie tylko drukowane?) źródło informacji o wzorcach, jakie znam.

Trzecia książka, również rozpowszechniana przez WNT, nie uchodzi za legendarną... jeszcze. A moim zdaniem nie ustępuje dwóm poprzednim! To Refaktoryzacja. Ulepszanie struktury istniejącego kodu (Fowler Martin i inni). Opisuje mnóstwo przypadków złego kodu i mówi, jak sobie z tym radzić. Refaktoryzacja to właśnie ulepszanie istniejącego kodu. Częstą przypadłością kodu jest to, że z czasem staje się coraz gorszy. Coraz bardziej zaśmiecony. Zmieniają się warunki, wymagania, założenia. Do istniejącej hierarchii kodu doklejane są nowe gałęzie. Całość staje się czasem mało sensowna, bo gdy zaczynałeś pisać kod, to projekt systemu wyglądał zupełnie inaczej. Refaktoryzacja polega na tym, by często i gęsto zmieniać strukturę kodu, który napisałeś wcześniej. Tak, by był ładniejszy i logiczniejszy.

Podam tu przykład jednej refaktoryzacji wspomnianej w książce. Masz takie coś:

public float podajCenęCałkowitą() {
  return this.liczbaSztuk * this.cenaJednostkowa
  + Math.min(this.liczbaSztuk * this.cenaJednostkowa * 0.1, 100)
  - Math.min(this.liczbaSztuk * 0.02, 0.15) * this.liczbaSztuk * this.cenaJednostkowa;
}

Co robi ta funkcja? Nazwa sugeruje, że podaje cenę całkowitą. OK, ale jak to jest obliczane? Wyrażenie obliczające jest strasznie skomplikowane! OK, co bardziej ogarnięty programista doczepi do kodu komentarz (kawałek od "/" do "/" -- ignorowany przez program, przeznaczony dla innych programistów):

public float podajCenęCałkowitą() {
  /* cena całkowita = cena towaru + koszt dostawy - rabat
   */
  return this.liczbaSztuk * this.cenaJednostkowa
  + Math.min(this.liczbaSztuk * this.cenaJednostkowa * 0.1, 100)
  - Math.min(this.liczbaSztuk * 0.02, 0.15) * this.liczbaSztuk * this.cenaJednostkowa;
}

OK, ale to jeszcze nie jest refaktoryzacja. Po jej przeprowadzeniu, komentarz okazuje się zbędny i sposób obliczania ceny widać od razu z samego kodu! Wystarczy zastosować refaktoryzację zwaną Wydzieleniem zmiennej tymczasowej (x3):

public float dajCenęCałkowitą() {
  float cenaTowaru = this.liczbaSztuk * this.cenaJednostkowa;
  float kosztDostawy = Math.min(cenaTowaru * 0.1, 100);
  float rabat = Math.min(this.liczbaSztuk * 0.02, 0.15) * cenaTowaru;
  return cenaTowaru + kosztDostawy - rabat;
}

W ostatniej (nie licząc klamry) linijce funkcji masz teraz bezpośrednio napisany wzór na cenę całkowitą, a wcześniej kod został podzielony na mniejsze i łatwiejsze do ogarnięcia kawałki. W książce znajduje się sporo takich refaktoryzacji. Oraz opisane są tzw. "brzydkie zapachy". Widzisz w swoim kodzie coś, co pachnie zachem X? To zastosuj refaktoryzację Y (która dalej jest szczegółowo opisana). Tej książki też nie polecam na sam początek, trzeba znać się już jakoś na programowaniu obiektowym. Ale jest rewelacyjna.

Czwarta "ogólna" ksiązka to JUnit. Pragmatyczne testy jednostkowe w Javie (Andy Hunt, Dave Thomas). Hę? Jak to "ogólna", skoro w tytule jest nazwa języka programowania Java i javowego szkieletu testowego JUnit? Ano tak to, że istnieje takie coś jak architektura XUnit. JUnit był pierwszy i był dla Javy. Ale mamy PHPUnit dla PHP. JSUnit dla JavaScriptu. I tak dalej. Wszystkie XUnity są zrobione na podstawie tej samej architektury.

A do czego służą? Do automatycznych testów oprogramowania. Niewielu nie-profesjonalnych programistów z nich korzysta, a szkoda. Zwykle, gdy napiszą program, to po prostu sobie klikają i np. wykonują 10 specyficznych kliknięć (kliknij na Nowy klient, wypełnij to i to pole, ..., kliknij na Dodaj...) aż znajdą błąd. Wtedy siadają do kodu i poprawiają go. Próbują odtworzyć problem klikając ponownie 10x i okazuje się, że ich poprawka niczego nie dała. To znowu coś zmieniają, znowu klikają 10x i tak dalej.

XUnit umożliwia pisanie automatycznych testów (choć sprawdzasz w nim mniejsze bloki kodu niż te wywoływane po paru kliknięciach!). Potem możesz te testy odpalić jednym kliknięciem i dostajesz albo tekst "OK", albo "!!! FAILURES !!!" wraz z listą wykrytych nieprawidłowości. Od razu widzisz, która funkcja działa nie tak, jak sobie założyłeś (i jak sprawdzasz w teście). Testy to podstawa np. refaktoryzacji. Książka niewielka i co prawda opisuje starszą wersję JUnita, ale całkiem fajna i poczytna. Uczy pisania dobrych testów.

Wreszcie (!!) przeczytałem ostatnio książkę Algorytmy, struktury danych i techniki programowania (Piotr Wróblewski). Bo uważam, że raz na ruski rok warto sobie przypomnieć, jak się pisało algorytmy sortowania (i te bardziej skomplikowane też). Ja akurat ostatnio za często ich w pracy nie piszę, ale nigdy nie wiadomo. A programista nie może się przerażać, gdy każą mu napisac jakiś bardziej złożony algorytm. Jeśli nie miałeś studiów informatycznych, to tym bardziej Ci się to przyda, bo nam to na studiach wbijano dość ostro do głowy (w przeciwieństwie do dobrych praktyk opisanych w innych przedstawionych przeze mnie książkach!). Nie wiem jednak, czy to faktycznie dobra książka o standardowych algorytmach, czy zaledwie przeciętna. Poprzednie czytałem na studiach.

Dobra, chyba już starczy, bo forum się wysypie.

0

Uwielbiam czytać Twoje długie wypowiedzi :). Zawsze jak czytam książki to rozkoszuję się każdym zdaniem, zwłaszcza jeśli dotyczy to książek o programowaniu. Ja jestem na trzecim roku studiów kierunku informatyka, teraz akurat byłem zabiegany pod koniec sesji, dlatego dopiero teraz odpisuję ;-). Moim zdaniem powinienieś założyć jakiś blog dotyczący Twoich zmagań programistycznych napisany tym samym stylem jak na tym forum. Świetnie by się to czytało ;-).

Mam już książkę pragmatycznego programisty i w wolnym czasie z przyjemnością będę ją czytał, skoro jest tak przez Ciebie zachwalana. Problem ogólnie mam taki, że w tym semestrze mamy dużo zadań z grafiki komputerowej, bo jakimś cudem trafiłem na tę specjalizację ;P.

0

@bswierczynski, nie myślałeś czasem żeby zacząć pisać książki? Styl masz, zapędy na pewno też, wiedzy również nie brakuje. Skoro lubisz pisać (co widać po forum, nawet ja i quetzalcoatl w dawnych dobrych czasach tak długich postów nie produkowaliśmy) to jest to niezły sposób na ugruntowanie wiedzy, wyrobienie sobie marki (zawsze jakiś dorobek) i zarobienie paru groszy. Myślę też, że trochę ludzi mogłoby na tym nawet skorzystać, większość literatury na rynku to zwyczajne śmieci.

0

@Nequirian
@deus.
[Zwykle nie odpowiadam, gdy słodzi mi pojedyncza osoba, której akurat trochę pomogłem, ale dwie to już mały tłum, więc... ;)]

Dzięki. Wasze opinie mówią mi, że jestem na dobrej drodze. Rzeczywiście chodzi mi po głowie coś podobnego do tego, o czym wspomnieliście. Czyli strona dla (pragmatycznych) programistów i/lub książka. Obu tych rzeczy w Polsce ciut brakuje. porneL pisze ostatnio niewiele, a riddle już dawno na dobre porzucił swój bardzo fajny blog. Zresztą te strony nie zawierały niektórych rzeczy, które warto moim zdaniem poruszyć.

Muszę przyznać, że tłumaczenie czegoś innym osobom i naprowadzanie ich na (mam nadzieję) dobrą drogę sprawia mi pewną przyjemność. Żeby to jednak robić na naprawdę wysokim poziomie, muszę się odpowiednio przypakować. Moja działalność na tym forum to jedno z przygotowań. Zarówno jeśli chodzi o pisanie odpowiedzi, jak i zobaczenie, jakie problemy mają dzisiaj programiści.

W tych sprawach się jednak nie spieszę. Mam plan, który realizuję krok po kroku. Nie chcę zakładać kolejnej strony prowadzonej przez programistę. Z książkami to wszyscy wiemy jak jest: każdemu się wydaje, że jest dobry i że "kiedyś może mógłby napisać książkę".

Co do samego pisania to rzeczywiście staram się pisać (i czytać) raczej dużo, ale te posty na forum są jednak pisane na chybcika i nie jest to w żadnym razie jakość blogowa, o książkowej nie wspominając (nie chcę zwalać 90% roboty na edytora... chcę zejść chociaż do 85%).

Wydaje mi się, że gdy chce się dotrzeć do wielu osób, to sposób przekazywania informacji jest tak samo ważny jak wiedza merytoryczna. Napisanie czegoś bardzo prosto i przejrzyście jest IMO trudniejsze od pisania w stylu "jaki to jestem mądry". To tak jak z dobrym kodem -- wygląda stosunkowo niepozornie i wydaje się prosty, a tak naprawdę realizuje złożone czynności.

W każdym razie póki co nie wiem nawet do jakich drzwi zapukać, gdybym miał pisać książkę. Ale w tym momencie chyba nie ma co o tym gadać... wszystko w swoim czasie. Póki co piszę tutaj. Być może dzięki temu, gdy już założę jakąś stronę o pompatycznie brzmiącej nazwie (choć pod tym względem trudno mi będzie przebić Perfection-or-Vanity!) i oznajmię jej opublikowania tu na forum, to nie zostanie to potraktowane jako spam czy autoreklama kolejnego script-kiddie, który "założył se h4x0rskiego blogasa", na którego i tak nikt nie wejdzie.

0

Ten temat pasuje gdzieś podpiąć i może umieszczać w nim recenzje książek? No chyba, że już jest coś takiego, a ja jestem za leniwy żeby poszukać. Było by miejsce na niezależne recenzje...

@bswierczynski czytałeś może Czysty Kod - R.C.Martin?

Ja właśnie zacząłem, nie bardzo mam czas, ale czytam po trochę do "poduszki".
Jak dla mnie momentami ciężka w odbiorze (autorz bierze na celownik listingi z rzeczywistych projektów), ale poza tym mocno otwiera oczy, choć za dużo nie mogę napisać, jestem na 60str.

Pozdrawiam

0

@GhostDog:
Nie czytałem jeszcze "Czystego kodu", ale śledziłem tę książkę jeszcze przed jej premierą. Mało brakowało, a bym ją zamówił na stronie wydawnictwa Helion (zakup przedpremierowy był nawet tańszy), ale coś się skisiło i zamówienie nie zostało zapisane w bazie. I jakoś tak wyszło, że zrezygnowałem z zakupu którejś z rzędu książki ogólnie o programowaniu i uznałem, że pora na coś o konkretnym języku. Kupiłem więc i czytam obecnie Thinking in Java, znaną wszystkim książkę do Javy, której nigdy nie przeczytałem.

"Czysty kod" miałem w łapie dosłownie wczoraj :). Byłem w Empiku i kartkowałem. Z tego co na szybko zobaczyłem i co Ty mówisz wynika, że jednak książka ta jest czymś wyraźnie innym niż "Refaktoryzacja" (Martin Fowler), którą niedawno przeczytałem. Jeśli szukasz prostych, całościowych przykładów, to bardzo polecam "Refaktoryzację" -- jest tak tego od groma. Ale tam z kolei nie piszą o tym jak pisać komentarze (choć wspominają, że czasem konieczność umieszczenia komentarza jest... sygnałem alarmowym), czy jak robić testy jednostkowe (mimo iż wielokrotnie podkreślają, że sprawna refaktoryzacja ich właściwie wymaga). To, że "Czysty kod" zawiera z kolei listingi z prawdziwego kodu produkcyjnego dla mnie akurat będą plusem, bo w "Refaktoryzacji" czegoś takiego nie ma.

Prawie na pewno kupię "Czysty kod", choć nie wiem kiedy. Staram się nie czytać dwóch książek naraz. Wolę wczuć się w jedną, bo wtedy mogę jakby pełniej pojąć sposób myślenia autora książki. Jego styl programowania. Kupuję wyłącznie książki dobrych programistów, a z takimi fajnie jest zsynchronizować fale mózgowe, czytając kilkaset stron ich kodu i objaśnień.

Ostatnio kolega zaoferował mi za darmo kurs szybkiego czytania. Powiedział, że po nim będę czytał przynajmniej 4x szybciej i mimo iż w trakcie kursu średni poziom rozumienia tekstu chwilowo mi spadnie, to potem pójdzie ostro w górę i ostatecznie będzie nawet większy niż przed kursem. Całość kursu zamknie się w tygodniu i po nim będę mógł przeczytać książkę w kilka godzin. Odpowiedziałem kumplowi, że ja wcale nie chcę czytać szybciej, bo zwyczajnie lubię proces czytania dobrej książki (zarówno literatury fachowej jak i i beletrystyki). Lubię się tym cieszyć dłużej niż kilka godzin. Ponieważ "Thinking in Java" dopiero zacząłem, "Czysty kod" będzie musiał poczekać. Z tego co ustaliłem to mogę Ci tylko pogratulować zakupu, bo książka "zapowiada się" bardzo dobrze.

0

To, że "Czysty kod" zawiera z kolei listingi z prawdziwego kodu produkcyjnego dla mnie akurat będą plusem

Ja nie twierdzę, że to minus książki. Trzeba nad nimi stanąć i się długo zastanowić (czasami), to jest dobre, zresztą sam autor zadaje pytanie odnośnie tych że listingów. Kursy szybkiego czytania to na pewno nie do książek o programowaniu. Zwłaszcza typu "Czysty kod". Mi pewnie z miesiąc zejdzie nad tą książką...
Jeśli chodzi o komentarze, to autor generalnie jest ich przeciwnikiem. Wg niego kod ma być sam dla siebie najlepszym komentarzem, jeśli wymaga komentarza, za nim się go użyje, zawsze należy zastanowić się nad zmianą kody na bardziej przejrzysty i jego uniknąć (śmiecenia kodu).

A ja Tobie gratuluje wybranie najlepszej wg mnie książki do Java. Dla przykładu, 2 tomy książek do Java SE wyd. Core już dawno sprzedałem, ta zostanie u mnie na półce dla potomków;)

0

@GhostDog:
Nad Core się też zastanawiałem, bo też ich nie czytałem, ale wyszło mi, że "Thinking in Java" ma... osobowość, a tamte z Core są takie bardziej bezpłciowe (opinia może być niesprawiedliwa, bo Core'ów przecież nie czytałem). Ja lubię książki z wyraźnym, spójnym charakterem, z ideą. Nie musi to być tak wyraźne jak w przypadku Symfonii C++, ale lepsze to niż te suche żółte książki Marciniaka do Pascala (skądinąd z panem Marciniakiem miałem miałem na pierwszym roku wykłady i na żywo jest "trochę" ciekawszą osobowością, szczególnie na nieformalnych spotkaniach w małym gronie).

Z "Thinking in Java" jeszcze zobaczymy. Póki co jest OK. Zabawne, ale na początku jakoś tak zauważałem to, że autor w tekście używa nieraz dość skomplikowanych konstrukcji składniowych, przez co tekst jest trochę cięższy niż mógłby być. Zastanawiam się jednak, czy to nie jest wina recenzji na 4programmers.net i czy w ogóle bym to zauważył, gdyby o tym nie wspominała. Pewne wątpliwości co do tego, czy książka mi się przyda mam z jedynie z takiego powodu, że nie jestem w Javie takim znów noobem. W ogóle nie jestem już noobem. A książka to niby dobre wprowadzenie. Zobaczymy więc, czy książka będzie wystarczająco szczegółowa.

Dosłownie przed samym zakupem obdzwoniłem kilku moich znajomych koderów Javy i też mówili, że ją mają i że polecają, więc raczej będzie OK. Na razie nie chcę oceniać, bo ledwo co przerobiłem instrukcje warunkowe, pętle i konstruktory ;). Ale od razu widzę, że Bruce Eckel "czuję" Javę i próbuje przekazać idee, jakie za nią stoją.

0
GhostDog napisał(a)

Ten temat pasuje gdzieś podpiąć i może umieszczać w nim recenzje książek? No chyba, że już jest coś takiego, a ja jestem za leniwy żeby poszukać. Było by miejsce na niezależne recenzje..

Przykleiłem, bo temat jest faktycznie niezły, bswierczynski się naprodukował znów. A do recenzji książek kiedyś był specjalny dział na wiki: Recenzje. Ale tutaj możemy książki polecać, niekoniecznie recenzować ;-)

Wracając do tematu książek o webmasteringu:
Matthew Linderman, Jason Fried, "Przyjazne witryny WWW", Helion 2005, ISBN 83-7361-934-8 (tytuł oryginału: "Defective design for the Web").

Książka poświęcona użyteczności stron internetowych - w postaci prostych zaleceń i wskazywania błędów na rzeczywistych witrynach wskazuje problemy, które mogą być źródłem frustracji użytkownika odwiedzającego stronę. Naprawdę fajna, można zauważyć, że jednak mimo iż nasza strona działa i wygląda dobrze, to czasem może być wkurzająca dla zwykłego odwiedzającego.

Z tej samej tematyki:
Steve Krug, "Nie każ mi myśleć: o życiowym podejściu do funkcjonalności stron internetowych", Wyd. 2, Helion 2006, ISBN 83-246-0283-6 (tytuł oryginału: "Don't Make Me Think: A Common Sense Approach to Web Usability").

Podstawowe pojęcia z dziedziny użyteczności i przede wszystkim - jak przeprowadzać testy. Nawet jak testów w sposób opisany w książce się nie robi, to zawsze można je zasymulować ;-)

0

Jeśli chodzi o tworzenie stron to ja dorzucę: Magia Interfejsu. Praktyczne metody projektowania aplikacji internetowych Robert Hoekman jr (Helion 2010)

Książka cieniutka, różnie oceniana. Jak dla mnie bardzo dobra, większość zaleceń autora co do interakcyjności witryn w polskim internecie ze świeczką szukać, a są naprawdę ciekawe. Poza tym świetnie się czyta.

Może się kiedyś skuszę na Przyjazne witryny WWW.

Wrócę jeszcze do książek Core do Java, tom pierwszy jeszcze ujdzie, ale odradzam Techniki Zaawansowane, w większości przepisany manual, nic więcej.

0

Chciałbym się podpisać pod postem, który napisał @Ktos. Czytałem obie wymienione przez niego książki -- obie są bardzo dobre. W moim oryginalnym poście nie uwzględniłem pozycji odnoszących się do użyteczności (ang. usability), a ta jest bardzo ważna. Bardziej jednak zajmują się nią projektanci, a nie programiści. Moim zdaniem dobry programista tez powinien rozumieć ten temat, choćby na wszelki wypadek, więc ogarnięcie tych książek uważam za ważne.

"Nie każ mi myśleć!" to legendarna pozycja w dziedzinie usability. Raczej nie ma opcji, żeby komuś się nie spodobała. Zwięzła, niedroga, błyskotliwa, z odrobiną humoru. Merytorycznie bardzo dobra. Przyda się zarówno programistom, jak i PM-om i designerom. Mówi o pewnych kwestiach dotyczących projektowania interfejsu (np. budowanie wizualnej hierarchii), jak również o tym, jak należy i jak nie należy pisać tekstu. Szczególnie spodobała mi się porada dotycząca sposobu na sprawdzenie, czy tekst marketingowy jest OK, czy może trzeba go zmienić. Krug sugeruje, by przeczytać go sobie na głos. Jeśli już po chwili w tle słychać takie "bla-bla-bla", to znaczy, że to tylko marketingowa papka i trzeba ją wywalić i napisać coś konkretnego :). Książka ma na pewno duszę, tj. uczy pewnego podejścia. Uczy jak sprawić, by wszystko było dla użytkownika zwyczajnie... proste. Logiczne. Łatwe w użyciu. Jeśli ktoś szuka pierwszej książki dotyczącej usability, to to będzie dobry wybór.

Co do "Przyjazne witryny www", to mam o niej również jak najlepsze zdanie. Książka podzielona jest na listę prostych, jasnych zaleceń. Rób tak, nie rób tak. Za każdym razem poparte jest to przykładami z rzeczywistych witryn -- często podany jest zarówno przykład pozytywny, jak i negatywny (plus krótka historyjka, do czego ten drugi prowadzi). Warto wspomnieć o autorach tej książki. Są to panowie z 37signals -- niewielkiej, ale bardzo znanej firmy produkującej aplikacje webowe. Chłopaki świetnie prosperują, a ich aplikacje znane są z prostoty i bardzo wysokiej użyteczności. Właśnie tym biją konkurencję na głowę, więc warto poczytać, jak to robią.

Skoro rozmawiamy o usability, to nie mogę pominąć światowego guru w tej dziedzinie, Jakoba Nielsena. Nie mam teraz czasu by opisać konkretne pozycje. W sumie każda z nich jest bardzo... konkretna. Sporo statystyk, porównań, wskazówek. Niestety Nielsen pisze co prawda lekko (jak nakazuje użyteczność), ale sucho (szczególnie w porównaniu do Kruga). Jego książek nie czyta się więc jednym tchem, tak jak "Nie każ mi myśleć". Zawierają jednak więcej informacji, w dodatku popartych dowodami. Jeśli ktoś już wejdzie w świat usability, to są one pozycjami obowiązkowymi.

0

Java ee 6 tworzenie aplikacji w NetBeans 7 też jest dobra. Mimo że lekko przestarzała ale dobra.

edit by @dzek69: za reklamowanie bloga poprzez odkopywanie kilkuletnich tematów będzie kara - usuwam linka. żebyś chociaż napisał to w temacie sprzed paru dni, bo taki był...

1 użytkowników online, w tym zalogowanych: 0, gości: 1