Techniki programowania
W kategorii Techniki programowania znajdziecie książki dobrane pod względem merytorycznym zarówno dla amatorów jak i profesjonalistów z dziedziny programowania.
Dowiecie się jak poprawnie napisać i udokumentować własny kod oraz przeczytacie o najskuteczniejszych metodach refaktoryzacji czyli w jaki sposób poprawiać i optymalizować kod napisany przez innych programistów. Poznacie sposoby optymalizacji algorytmów, analizy złożoności, kompresji danych czy elementy algorytmiki grafów. Zaznajomicie się nie tylko z najlepszymi wzorcami w wytwarzaniu oprogramowania ale także nauczycie się rozpoznawać najczęstsze błędy i czyhające na Was pułapki.
Jon Holt
Systems engineering helps in developing and describing complex systems. Written by an internationally-recognized systems engineering expert, this updated edition provides insight into elements to consider when designing a complex system that is robust and successful.The latest edition covers the new approaches of Model-Based Systems Engineering (MBSE) and its deployment techniques using the Trinity approach. You will learn about the system engineering life cycle and processes to implement. Effective systems can be built only when the system is designed with close attention to detail, meaning each aspect of the system is recognized and understood before the system is built. The book explains in great detail, different system models and visualization techniques, with a focus on SysML, to help you visualize a system in the design phase. You will also learn various verification and validation techniques to ensure your system design is ready to be implemented. The book ends with key management processes, systems engineering best practices, and guidelines, with a new section on effective approaches based on the author’s impressive 30 years of experience in the field.By the end of this systems engineering book, you'll be able to apply modern model-based systems engineering techniques to your own systems and projects.
Systemy reaktywne. Wzorce projektowe i ich stosowanie
Roland Kuhn Dr., Brian Hanafee, Jamie Allen
Systemy reaktywne. Wzorce projektowe i ich stosowanie Uznane duże aplikacje internetowe, takie jak portale społecznościowe, systemy bankowe czy handlowe, działają szybko i niezawodnie. Muszą radzić sobie nawet wtedy, gdy ich niektóre części ulegną awarii. Nie mogą zawieść, gdy będzie z nich korzystać większa liczba użytkowników niż zwykle. Naturalnie, muszą być odporne na różne zagrożenia, a oprócz tego skalowalne i łatwe w rozbudowie. Tym i wielu innym wymaganiom odpowiadają systemy responsywne — które bez względu na okoliczności sprawnie przetwarzają dane wprowadzane przez użytkowników. Pomyślne wdrożenie systemu reaktywnego wymaga jednak nieco innego spojrzenia na tworzenie oprogramowania. Jakie cechy wyrózniają system reaktywny? O tym mówi tzw. Manifest reaktywny i jego podstawowe 4 postulaty: responsywność - system musi reagować na interakcje użytkowników, niezawodność - system musi reagować na awarie i być dostępny non stop, elastyczność - system musi reagować na zmieniające się obciążenie, sterowanie za pomocą komunikatów - system musi reagować na wprowadzane dane. Niniejsza książka jest wyczerpującym wprowadzeniem do implementacji systemów reaktywnych. Opisano tu filozofię programowania reaktywnego, zasady projektowania aplikacji, wzorce projektowe i ich zastosowanie. Szczegółowo wyjaśniono, jakie problemy można rozwiązywać w ten sposób, a podane przykłady opatrzono pełnymi kodami źródłowymi. Bazując na postulatach Manifestu reaktywnego, przedstawiono metodykę budowy architektury modułowej, zasady tworzenia komunikatów, które sterują tą architekturą, opisano też potrzebne narzędzia i sposób ich wykorzystania. Nie zabrakło informacji o dobrych praktykach programowania i testowaniu aplikacji. Na pewno do lektury przyda Ci się znajomość podstawowych zagadnień programistycznych i pewne doświadczenie w pracy z systemami rozproszonymi. Najważniejsze zagadnienia w książce: manifest reaktywny i jego postulaty hierarchia modułów i przepływy danych programowanie funkcyjne i reaktywne obsługa awarii wzorce projektowe i ich stosowanie Systemy reaktywne — odpowiedź na wyzwania naszych czasów! Dr Roland Kuhn jest ekspertem w dziedzinie rozproszonych systemów obliczeniowych. Obronił doktorat w instytucie CERN w Szwajcarii. Później pracował dla Niemieckiej Agencji Kosmicznej. Obecnie tworzy systemy reaktywne. Brian Hanafee jest głównym architektem systemów w Wells Fargo Bank. Wcześniej tworzył nowe produkty dla Oracle i pisał oprogramowanie do systemów wizyjnych montowanych w hełmach pilotów samolotów wojskowych. Jamie Allen jest programistą i architektem oprogramowania. Pracuje jako dyrektor techniczny projektu platformy handlowej UCP w Starbucks. Od 2008 r. tworzy w języku Scala reaktywne aplikacje dla klientów na całym świecie.
Szacowanie oprogramowania Kulisy czarnej magii. Dla praktyków
Steve McConnell
Książka ta nie tylko uczy sztuki szacowania, ale zmienia całkowicie sposób myślenia o tworzeniu oprogramowania. Powinna stać na półce każdego zawodowego programisty. Eric Freeman, współautor książki Head First Design Patterns Dziewięć dziesiątych menedżerów oprogramowania nadal uważa, że szacowanie powinno odbywać się metodą przyjąć to, co podpowiada instynkt i pomnożyć przez trzy. Ta wspaniała książka była od dawna potrzebna i dobrze, że się ukazała. Joel Spolsky, autor joelonsoftware.com Wreszcie jest książka pełna jasnych wskazówek, które mówią, jak programiści i menedżerowie mogą skutecznie dokonywać oszacowania. Scott Berkun, autor książki Art of Project Management Szacowanie oprogramowania, często określane mianem czarnej magii ze względu na swoją złożoność i niepewność, nie jest wcale tak trudne i zagadkowe, jak niektórzy uważają. W rzeczywistości generowanie oszacowania jest naturalne gdy już wiadomo, jak to robić. W tej bardzo oczekiwanej książce, jej ceniony autor Steve McConnell odkrywa tajemnice skutecznego szacowania oprogramowania zamieniając wiedzę naukową i zdobyte doświadczenia w praktyczny przewodnik dla specjalistów od programowania. Zamiast niezrozumiałego traktatu i sztywnych technik modelowania jest to przewodnik oferujący zbiór sprawdzonych procedur, zrozumiałe wzory i metody heurystyczne, które pojedynczy programiści i ich zespoły mogą stosować w swoich projektach w celu poprawy skuteczności szacowania.
Sztuka kodowania. Sekrety wielkich programistów
Peter Seibel
Zajrzyj bezkarnie programiście przez ramię! Czym naprawdę jest programowanie? Jak swoją przygodę rozpoczynali wielcy tej branży? Czy istnieje bezbłędny program? Programiści to tajemnicze osoby, które potrafią zmusić komputery do wykonywania karkołomnych zadań, wymyślanych przez zwykłych użytkowników. Spędzają cały dzień przed komputerem, a ich świat to monitor, klawiatura i hektolitry kawy. Czy to prawda? Na to pytanie odpowiada książka, którą trzymasz w rękach. Dzięki niej spojrzysz na ten zawód z zupełnie innego punktu widzenia. Jej autor przeprowadza wywiady z najbardziej rozpoznawalnymi osobami z tej branży. Mówią one o swoich pierwszych krokach w świecie programowania, opowiadają, jak nauczyły się swojego pierwszego języka oraz jak widzą tę gałąź wiedzy w przyszłości. Czym naprawdę jest programowanie? Rzemiosłem, sztuką, a może nauką? Te pytania stawia autor we wprowadzeniu i ma nadzieję, że wypowiedzi jego gości choć trochę zbliżą go do znalezienia odpowiedzi. Ta unikalna książka pozwoli Ci poznać bliżej wybitne osoby, od lat związane z informatyką. Anegdoty, ciekawe opowieści, wiele przykładów to tylko niektóre z proponowanych przez nią atrakcji. Zagłębiając się w kolejne wypowiedzi, przekonasz się, jak często przypadek decyduje o sukcesie lub porażce. W trakcie lektury będziesz mieć okazję zapoznać się z wypowiedziami takich sław, jak: Jamie Zawinski — wybitny programista Lisp, pracujący przy pierwszych wersjach przeglądarki Netscape Brad Fitzpatrick — najmłodsza osoba w gronie, programista "od zawsze" Douglas Crockford — starszy architekt JavaScript w Yahoo!; pomysłodawca formatu JSON Brendan Eich — twórca języka JavaScript Joshua Bloch — szef Java Architect w Google; w trakcie pracy w Sun Microsystem był kierownikiem zespołu projektującego i implementującego Java Collections Framework Joe Armstrong — autor języka programowania Erlang Simon Peyton Jones — rozpoczął projekt, którego efektem było powstanie języka Haskell Peter Norvig — dyrektor działu badań w Google, wcześniej pracujący dla NASA Guy Steele — znawca języków; Cobol, Fortran, PDP-10, Java, Haskell to tylko niektóre z jego repertuaru Dan Ingalls — współtwórca języka Smalltalk L. Peter Deutsch — programista od końca lat pięćdziesiątych; zaczynał w wieku jedenastu lat Ken Thompson — współtwórca systemu UNIX Fran Allen — przez czterdzieści pięć lat pracował dla firmy IBM; instruktor języka Fortran Bernie Cosell — współautor oprogramowania wykorzystywanego w pierwszych węzłach sieci ARPANET Donald Knuth — autor jedynego najprawdopodobniej bezbłędnego programu — TeX Poznaj tajemny świat programistów, hakerów i wybitnych specjalistów!
Tablice informatyczne. Wzorce projektowe
Daniel Krasnokucki
Wzorce projektowe bez tajemnic! Odkryj najlepsze z używanych obecnie wzorców projektowych Dowiedz się, jaki wzorzec zastosować w konkretnym przypadku Naucz się właściwie wykorzystywać dany wzorzec w praktyce Wzorce projektowe ułatwiają tworzenie dobrego oprogramowania, umożliwiają unikanie typowych błędów i stanowią sprawdzone rozwiązania problemów informatycznych, z którymi ktoś kiedyś miał już do czynienia. Korzysta się z nich w celu zapewnienia wysokiej jakości wynikowego kodu i elastyczności rozwiązania programistycznego oraz skrócenia czasu jego tworzenia. Jeśli nie chcesz wymyślać koła na nowo i nie masz zamiaru podejmować beznadziejnego trudu zrobienia tego lepiej niż tysiące osób przed Tobą, wzorce projektowe są właśnie dla Ciebie! Stosuj je w codziennej pracy, korzystając z praktycznej ściągi, zawierającej najpotrzebniejsze informacje o najbardziej przydatnych wzorcach, dzięki którym Twoje programy będą spełniały branżowe standardy! Wzorce konstrukcyjne, strukturalne i operacyjne Zależności występujące między wzorcami Przeznaczenie i implementacja poszczególnych wzorców Zastosowanie wzorców projektowych w praktyce Tablice informatyczne — cała wiedza pod ręką!
TDD. Programowanie w Javie sterowane testami
Viktor Farcic, Alex Garcia
Programowanie sterowane testami (ang. test-driven development — TDD) nie jest nową metodyką. Jej praktyczne zastosowanie pozwala na rozwiązanie wielu problemów związanych z procesami rozwijania i wdrażania oprogramowania. Mimo ogromnych zalet, programowanie sterowane testami nie jest zbyt popularne wśród programistów. Wynika to z tego, że techniki TDD nie są łatwe do opanowania. Choć teoretyczne podstawy wydają się logiczne i zrozumiałe, nabranie wprawy w stosowaniu TDD wymaga długiej praktyki. Książka, którą trzymasz w ręce, została napisana przez programistów dla programistów. Jej celem jest przekazanie podstaw TDD i omówienie najważniejszych praktyk związanych z tą metodyką, a przede wszystkim — nauczenie praktycznego stosowania TDD w pracy. Autorzy nie ukrywają, że nabranie biegłości w takim programowaniu wymaga sporo wysiłku, jednak korzyści płynące z metodyki TDD są znaczne: skrócenie czasu wprowadzania produktów na rynek, łatwiejsza refaktoryzacja, a także wyższa jakość tworzonych projektów. Z tą książką dogłębnie zrozumiesz metodykę TDD i uzyskasz wystarczającą pewność siebie, by z powodzeniem stosować to podejście w trakcie programowania aplikacji w Javie. Dzięki tej książce: Nauczysz się podstaw metodyki TDD Poznasz potrzebne narzędzia, platformy i środowiska wraz ze szczegółami ich konfiguracji Wykonywasz praktyczne ćwiczenia i stopniowo wdrożysz się w TDD Poznasz proces „czerwone, zielone, refaktoryzacja” Dowiesz się, jak pisać testy jednostkowe wykonywane w izolacji od reszty kodu Dowiesz się, jak tworzyć prosty i łatwy w konserwacji kod, nauczysz się refaktoryzować już istniejący Nauczysz się pracować z atrapami, stosować programowanie sterowane zachowaniami, a także udostępniać połowicznie ukończone funkcje w środowisku produkcyjnym za pomocą przełączników funkcji Programowanie sterowane testami to metodyka dla prawdziwych profesjonalistów!
TDD. Techniki programowania sterowanego testami
Dariusz Woźniak
Odnieś sukces dzięki TDD! Poznaj filozofię programowania sterowanego testami Dowiedz się, jak wdrożyć metodę TDD w praktyce Naucz się stosować właściwe narzędzia i techniki Metoda Test-Driven Development pozwala na pisanie lepszej jakości, bardziej elastycznego i łatwiejszego w utrzymaniu kodu, na którym można w pełni polegać. Większa wydajność pracy programistów, którzy o wiele lepiej rozumieją potrzeby biznesowe stawiane tworzonym przez nich aplikacjom, znaczne przyspieszenie powtarzalnych testów - to tylko niektóre zalety TDD. Nic dziwnego, że świat zachwycił się tą techniką, a jej znajomość należy do podstawowych wymagań, które muszą spełnić inżynierowie pragnący rozwijać swoją karierę w branży IT. Jeśli chcesz poznać metodę TDD i nauczyć się tworzyć zgodne z nią testy jednostkowe, trafiłeś na właściwą książkę! W prosty sposób przedstawi Ci ona cykl Red-Green-Refactor, zaprezentuje zalety poprawnie zaimplementowanej techniki TDD, zwróci uwagę na trudności związane z wdrażaniem tej techniki i podpowie, jak sobie z nimi poradzić. Nauczysz się z niej pisać testy jednostkowe zgodnie z dobrymi praktykami oraz sprawdzać zależności i tworzyć atrapy obiektów. Dowiesz się, jak stosować TDD w przypadku już istniejącego kodu, a także jak mierzyć pokrycie kodu testami. Poznasz również podstawowe informacje na temat ciągłej integracji i jej znaczenia dla techniki TDD. Podstawowe informacje o testach i metodzie TDD Tworzenie dobrych testów jednostkowych Praktyczne zastosowanie biblioteki NUnit Atrapy i ich klasyfikacja Zastosowanie TDD do istniejącego kodu Pokrycie kodu testami i ciągła integracja Najważniejsze biblioteki wspierające TDD Poznaj w praktyce najbardziej przebojową metodę tworzenia oprogramowania!
TDD w praktyce. Niezawodny kod w języku Python
Harry Percival
„Ta książka to znacznie więcej niż tylko wprowadzenie do programowania sterowanego testami w Pythonie. To jest pełny kurs przedstawiający najlepsze praktyki, od początku do końca na przykładzie nowoczesnego programowania aplikacji sieciowej w Pythonie.” — Kenneth Reitz, członek Python Software Foundation Twórz niezawodne aplikacje w języku Python! Każdy programista marzy o pracy z przejrzystym kodem, który został w całości pokryty testami. Niestety, rzeczywistość bywa często daleka od ideału. A może da się go jednak osiągnąć? Odpowiedzią na to pytanie jest TDD (ang. Test-Driven Development), czyli wytwarzanie oprogramowania sterowane testami. Jak zacząć stosować tę technikę? Na to i wiele innych pytań odpowiada ta książka. Zacznij w praktyce realizować koncepcje płynące z TDD w połączeniu z językiem Python. Na początku dowiedz się, jak skonfigurować Django za pomocą testu funkcjonalnego, oraz skorzystaj z modułu unittest. Zdobądź też bezcenną wiedzę na temat testowania widoków, szablonów i adresów URL oraz naucz się testować układy strony i style. Sprawdź, jak zapewnić ciągłą integrację z wykorzystaniem systemu Jenkins oraz najlepszych praktyk w tworzeniu testowalnego kodu. Książka ta jest doskonałą lekturą dla wszystkich programistów tworzących aplikacje internetowe w języku Python. Twój kod może być naprawdę łatwy w utrzymaniu! Poznaj sposób pracy wykorzystujący podejście TDD, między innymi cykl test jednostkowy i tworzenie kodu, a później refaktoryzacja. Używaj testów jednostkowych dla klas i funkcji oraz testów funkcjonalnych pozwalających na symulowanie działań podejmowanych przez użytkownika w przeglądarce internetowej. Dowiedz się kiedy i jak używać obiektów imitacji, a także poznaj wady i zalety testów odizolowanych i zintegrowanych. Przetestuj i automatyzuj wdrożenie za pomocą serwera prowizorycznego. Zastosuj testy względem przygotowanych przez firmy trzecie wtyczek, które integrujesz z witryną. Używaj środowiska ciągłej integracji w celu automatycznego wykonywania testów. Poznaj techniki TDD w połączeniu z Pythonem!