Programowanie w jezyku Ruby Mikrouslugi i konteneryzacja.pdf

(1596 KB) Pobierz
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym
powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi
bądź towarowymi ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje
były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie,
ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz
Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody
wynikłe z wykorzystania informacji zawartych w książce.
Redaktor prowadzący: Małgorzata Kulik
Projekt okładki: Studio Gravite / Olsztyn
Obarek, Pokoński, Pazdrijowski, Zaprucki
Grafika na okładce została wykorzystana za zgodą Shutterstock.com
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail:
helion@helion.pl
WWW:
http://helion.pl
(księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/prumik
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
ISBN: 978-83-283-5241-4
Copyright © Helion 2019
Printed in Poland.
Kup książkę
Poleć książkę
Oceń książkę
Księgarnia internetowa
Lubię to! » Nasza społeczność
Spis treści
Wstęp ....................................................................................................................11
Rozdział 1. Ruby ......................................................................................................17
Interpreter ....................................................................................................................................... 17
Rozwój ...................................................................................................................................... 18
rvm ............................................................................................................................................ 18
Clojures ............................................................................................................................................ 20
Blok ........................................................................................................................................... 20
Lambda ..................................................................................................................................... 21
Proc ........................................................................................................................................... 21
Różnice między blokami a Proc ............................................................................................ 22
Różnice między Proc a lambdą ............................................................................................. 23
yield ........................................................................................................................................... 24
ObjectSpace ..................................................................................................................................... 25
each_object ............................................................................................................................... 25
finalizer ..................................................................................................................................... 26
Drzewo klas .............................................................................................................................. 26
Statystyka obiektów ................................................................................................................ 27
Metody obiektów .................................................................................................................... 28
Bezpieczeństwo ............................................................................................................................... 29
Poziomy $SAFE ....................................................................................................................... 29
Przykłady .................................................................................................................................. 29
Analiza wydajności ......................................................................................................................... 30
Wydajność mierzona bibliotekami Benchmark i MiniTest .............................................. 30
Profilowanie z ruby-prof ........................................................................................................ 34
Zarządzanie pamięcią ..................................................................................................................... 36
Retencja obiektów ................................................................................................................... 36
Biblioteka get_process_mem ................................................................................................. 37
Wypełnienie pamięci .............................................................................................................. 37
Kup książkę
Poleć książkę
6
Programowanie w języku Ruby. Mikrousługi i konteneryzacja
Abstrakcyjny model pamięci ..................................................................................................39
Odśmiecanie .............................................................................................................................40
Wizualizacja stosu ...................................................................................................................43
Współbieżność .................................................................................................................................47
Biblioteka ..................................................................................................................................47
Wątki .........................................................................................................................................48
Procesy ......................................................................................................................................50
Fibers .........................................................................................................................................52
Wielowątkowość a interpretery .............................................................................................54
Komunikacja między procesami ...........................................................................................54
Przykład ....................................................................................................................................59
Rozszerzenia ....................................................................................................................................65
Konstrukcja ..............................................................................................................................66
Przykład praktyczny ................................................................................................................67
Osadzanie interpretera ............................................................................................................72
Paradygmaty ....................................................................................................................................72
Programowanie strukturalne .........................................................................................................73
Założenia ...................................................................................................................................73
Stan początkowy ......................................................................................................................75
Plik 2d.rb ...................................................................................................................................75
Plik 3d.rb ...................................................................................................................................79
Plik main.rb ..............................................................................................................................82
Programowanie obiektowe ............................................................................................................84
Blockchain ................................................................................................................................84
Metaprogramowanie ......................................................................................................................91
Korzyści .....................................................................................................................................91
Przykład ....................................................................................................................................91
Rozdział 2. Rails ......................................................................................................95
Platforma .......................................................................................................................................... 95
Rozwój ....................................................................................................................................... 97
Konwencja ponad konfigurację ............................................................................................. 98
Instalacja ................................................................................................................................... 98
Minimalistyczne aplikacje w Rails ................................................................................................ 99
Najmniejsza aplikacja ............................................................................................................ 100
Drugi przykład ....................................................................................................................... 100
Trzeci przykład ...................................................................................................................... 102
Rack i middleware ......................................................................................................................... 103
Rack ......................................................................................................................................... 103
Rails ......................................................................................................................................... 104
Kup książkę
Poleć książkę
Spis treści
7
RabbitMQ .......................................................................................................................................106
Tryby pracy .............................................................................................................................107
Komunikacja jednokierunkowa ...........................................................................................107
Komunikacja dwukierunkowa .............................................................................................107
Komunikacja mieszana .........................................................................................................110
Powszechne błędy ..........................................................................................................................110
ActionController::RoutingError ..........................................................................................110
NoMethodError: Undefined Method '[]' for Nil:NilClass ................................................111
ActionController::InvalidAuthenticityToken ....................................................................111
Net::ReadTimeout ..................................................................................................................112
ActiveRecord::RecordNotUnique: PG::UniqueViolation ................................................112
NoMethodError: Undefined Method 'id' for nil:NilClass ................................................113
ActionController::ParameterMissing ..................................................................................113
ActionView::Template::Error: Undefined Local Variable or Method ............................113
ActionController::UnknownFormat ...................................................................................113
Praktyka a konwencje ...................................................................................................................113
Za dużo logiki w kontrolerach .............................................................................................114
Za dużo logiki w widokach ...................................................................................................114
Za dużo logiki w modelach ...................................................................................................114
Pozostały kod ..........................................................................................................................114
Za dużo bibliotek ....................................................................................................................115
Brak automatycznych testów ................................................................................................115
Tryb API .........................................................................................................................................115
Middleware .............................................................................................................................115
Nowa aplikacja .......................................................................................................................116
find_in_batches ......................................................................................................................116
Rozdział 3. Zapewnienie jakości .............................................................................119
Wprowadzenie ...............................................................................................................................119
Teoria i praktyka ....................................................................................................................119
Metodyki .........................................................................................................................................120
Definicja błędu .......................................................................................................................120
Definicja niezawodności .......................................................................................................121
Przyczyny błędów ..................................................................................................................121
TDD .........................................................................................................................................122
TIP ............................................................................................................................................123
Eksploracja ..............................................................................................................................123
Wykrywanie defektów ..................................................................................................................124
Bierne wykrywanie defektów ................................................................................................124
Czynne wykrywanie defektów ..............................................................................................124
Kup książkę
Poleć książkę
Zgłoś jeśli naruszono regulamin