Wpisem tym chciałbym rozpocząć serię wpisów, w których będę publikował od czasu do czasu zbiory ciekawych artykułów, darmowe e-booki oraz inne strony, które powinen poznać każdy programista!
Prezentowane materiały mają charakter edukacyjny, traktują o tematach zarówno dla zaawansowanych, jak i początkujących. Materiały, które mają stanowić inspirację, uczyć dobrych praktyk programistycznych oraz pomagać ciągle się rozwijać.
Jako, iż podstawowym językiem programisty jest język angielski to materiały tutaj zamieszczone będą w większości właśnie w tym języku. Dla obeznanych z językiem nie ma to żadnego znaczenia, jednak dla tych słabszych i wciąż się uczących (w tym mnie) materiały te będą stanowiły doskonałą lekcję :D Lets go!
Essential Skills for Agile Development
Pierwszą prezentowaną tutaj książką jest „Essential Skills for Agile Development”, napisana przez Ka Iok Tong. Omawia ona technikę zwinnego programowania zwaną również Agile Development (niestety na przykładzie Javy, lecz myślę, że to nie stanowi większego problemu – inżynieria oprogramowania jest dla większości języków taka sama).
Zawartość książki wygląda bardzo obiecująco. Omawiane są tutaj przykłady refaktoryzacji kodu, wykonywanie unit testów czy tworzenia oprogramowania z wykorzystaniem techniki TDD (Test driven development). Wszystko to wypełnione mnóstwem praktycznych przykładów.
Spis treści:
- Removing duplicate code.
- Turning comments into code.
- Removing code smells.
- Keeping code fit.
- Take care to inherit.
- Handling inappropriate references.
- Separate database, user interface and domain logic.
- Managing software projects with user stories.
- OO design with CRC cards.
- Acceptance test.
- How to acceptance test a user interface.
- Unit test.
- Test driven development.
- Team development with CVS.
- Essential skills for communications.
- Pair programming.
Essential Skills for Agile Development by Tong Ka Iok
(pdf, 2.19 MB)
Sztuka wojenna Sun Zi
Opracowanie to jest zbiorem wojennych reguł i zasadach, które właściwie wykorzystane mogą pomóc wygrać każdą wojnę i bitwę.
Dlaczego umieszczam tutaj link do tego opracowania? Jest to bowiem zbiór uniwersalnych reguł, które równie dobrze można stosować w „potyczkach” z każdym innym problemem, jak nauka programowania. Ponadto uczy cierpliwości i wytrwałości w dążeniu do realizowania własnych pomysłów i zadań, co również jest niezwykle ważne w życiu programisty.
W oparciu o opracowanie „Sztuka wojenna” zostało napisanych wiele innych książek, w tym np. „SQL. Sztuka programowania” Stéphane Faroult, Peter Robson. Autorzy tutaj porównują zarządzanie bazą danych do pola bitwy, co wychodzi im raz lepiej, raz gorzej. Niemniej jednak książka warta przeczytania!
Sztuka wojenna Sun Zi
(pdf, 704 KB)
CanvasDemos.com
Ogromny zbiór nowoczesnych aplikacji i gier internetowych napisanych w technologii Canvas! Jeśli więc jesteś developerem JavaScript i HTML5/CSS3, interesujesz się nowymi technologiami i budujesz gry/aplikacje (lub dopiero chcesz zacząć) przy pomocy Canvas to koniecznie powinieneś odwiedzić tą stronę.
Znajdziesz tutaj bowiem ogrom inspiracji i będziesz mógł przyjrzeć się temu, jak inni wykorzystują tą technologię (a naprawdę jest na co patrzeć).
Ponadto w serwisie agregator najlepszych z Sieci tutoriali, jak tworzyć te proste, jak i zaawansowane efekty z wykorzystaniem Canvas! Polecam.
Wzorce projektowe – teoria, UML, przykłady
Patterns of Enterprise Application Architecture
Większości pewnie dobrze znany, całkiem spory katalog wzorców projektowych opracowany przez Martin Fowlera.
Katalog podzielony na kategorie wzorców, zawierający wykresy UML oraz krótkie omówienia wzorców.
http://martinfowler.com/eaaCatalog/
PHP Design Patterns Reference and Examples
Kolejny katalog wzorców projektowych z wieloma obszernymi przykładami napisanymi w języku PHP. W katalogu tym główny nacisk położony został na kod, a pominięto wykresy UML i wszelkie informacje teoretyczne (poza kilkoma słowami wstępu do każdego wzorca).
http://www.fluffycat.com/PHP-Design-Patterns/
phpPatterns.com
Cały serwis poświęcony wzorcom projektowym dla języka PHP. Znajdują się tutaj obszerne opisy z dokładnym zastosowaniem każdego wzorca, dobrymi radami, własnymi uwagami, etc. Jedyne czego brakuje to wykresy UML, które umożliwiają szybkie zapoznanie się z wybranym wzorcem. Niemniej jednak po wykresy można zasięgnąć do katalogu P of EAA (Patterns of Enterprise Application Architecture).
http://www.phppatterns.com/docs/?idx=design
SourceMaking.com
Strona, z której osobiście się uczyłem wzorców projektowych. Zawiera pełne opisy każdego z wzorców, szczegóły dotyczące zastosowania i wykorzystania w praktycznych projektach, ładne schematy i rysunki ozdabiające i ułatwiające naukę, a ponadto przykładowe źródła w wielu językach (w tym także PHP).
http://sourcemaking.com/design_patterns
Jakby tego było mało, na stronie tej znajduje się katalog metod refaktoringu. Również i tutaj większość sposobów jest dokładnie opisana i opatrzona kodem źródłowym (niestety już nie jest to PHP, aczkolwiek inżynieria oprogramowania dla większości języków się nie zmienia i istotna jest sama idea).
http://sourcemaking.com/refactoring
Wikipedia.org – Wzorce projektowe
Także dla osób nie znających języka angielskiego znajdzie się dobre źródło nauki wzorców projektowych – Wikipedia.
Znajdują się tutaj 33 wzorce, wraz z opisami w języku polskim. Nie są to zbyt wspaniałe opisy – często bez żadnych wykresów i schematów, opatrzone niewielką ilością tekstu (kilka zdań wstępu). Ponadto przykładowe źródła są napisane z wykorzystaniem różnych języku, co powoduje tylko mętlik w głowie.
http://pl.wikipedia.org/wiki/Kategoria:Wzorce_projektowe
Również anglojęzyczna Wikipedia posiada co nieco informacji o wzorcach projektowych (na pewno więcej niż polskie wydanie):
http://en.wikipedia.org/wiki/Design_pattern_(computer_science)
PHP 5 Power Programming
Trochę starawa książka, bowiem z 2005 roku. Jak na tak aktywnie rozwijającą się dziedzinę wiedzy, jaką jest informatyka, 5 lat stanowią multum czasu.
Niemniej jednak książka zawiera kilka ciekawych rozdziałów, tj. wykorzystanie pakietów PEAR i PECL, pisanie skryptów w PHP pod Shell’a, opisuje użycie i składnię phpDocumentor’a, omawia kilka wzorców projektowych.
Taka wiedza nieprędko się jednak przeterminuje, dlatego zamieszczam link znaleziony w Sieci do darmowej książki – „PHP 5 Power Programming” napisanej przez Andi Gutmans, Stig Sather Bakken oraz Derick Rethans.
Sporo przydatnej wiedzy za darmo, myślę więc, iż warto skorzystać.
PHP 5 Power Programming by Andi Gutmans, Stig Sather Bakken and Derick Rethans
(pdf, 704 KB)
Nigdy wcześniej nie „wpadłem” na canvasdemos.com, nie ukrywam, że bardzo mi się przyda. Dzięki wielkie za tego linka, który już leży u mnie w zakładkach :)