Details zum E-Book

Ruby. Receptury

Ruby. Receptury

Leonard Richardson, Lucas Carlson

E-book

Zbiór gotowych rozwiązań dla programistów używających języka Ruby

  • Jak przetwarzać pliki XML i HTML?
  • Jak wykorzystywać środowisko Ruby on Rails?
  • W jaki sposób łączyć Ruby z technologią AJAX?

Korzystasz w pracy z języka Ruby i zastanawiasz się, czy niektóre zadania programistyczne można wykonać szybciej? Chcesz poznać zasady programowania obiektowego w Ruby? A może interesuje Cię framework Ruby on Rails? Język Ruby zdobywa coraz większą popularność, jest wykorzystywany do tworzenia aplikacji sieciowych i stał się podstawą środowiska Ruby on Rails. Jednak nawet najlepszy język programowania nie uwalnia programistów od żmudnego realizowania zadań, które nie mają zbyt wiele wspólnego z tworzeniem aplikacji, czyli usuwania błędów, implementowania typowych algorytmów, poszukiwania rozwiązań mniej lub bardziej typowych problemów i wielu innych.

Książka "Ruby. Receptury" znacznie przyspieszy Twoją pracę. Znajdziesz tu kilkaset praktycznych rozwiązań problemów wraz z przejrzystym komentarzem oraz tysiące wierszy proponowanego kodu, który będziesz mógł wykorzystać w swoich projektach. Przeczytasz o strukturach danych, algorytmach, przetwarzaniu plików XML i HTML, tworzeniu interfejsów użytkownika dla aplikacji i połączeniach z bazami danych. Nauczysz się generować i obrabiać pliki graficzne, korzystać z usług sieciowych, wyszukiwać i usuwać błędy w aplikacjach, a także pisać skrypty niezwykle pomocne w administrowaniu systemem operacyjnym Linux.

  • Przetwarzanie danych tekstowych i liczbowych
  • Operacje na tablicach
  • Praca z systemem plików
  • Programowanie obiektowe
  • Przetwarzanie dokumentów XML i HTML oraz plików graficznych
  • Generowanie plików PDF
  • Połączenie z bazami danych
  • Korzystanie z poczty elektronicznej, protokołu telnet i połączeń Torrent
  • Projektowanie aplikacji internetowych za pomocą Ruby on Rails
  • Stosowanie usług sieciowych
  • Optymalizacja aplikacji
  • Tworzenie wersji dystrybucyjnych
  • Automatyzacja zadań z wykorzystaniem języka Rake
  • Budowanie interfejsów użytkownika

Jeśli chcesz rozwiązać problem, skorzystaj z gotowej receptury
-- koło już wynaleziono.

Wprowadzenie (17)

Rozdział 1. Łańcuchy (29)

  • 1.1. Budowanie łańcucha z części (32)
  • 1.2. Zastępowanie zmiennych w tworzonym łańcuchu (34)
  • 1.3. Zastępowanie zmiennych w istniejącym łańcuchu (35)
  • 1.4. Odwracanie kolejności słów lub znaków w łańcuchu (37)
  • 1.5. Reprezentowanie znaków niedrukowalnych (39)
  • 1.6. Konwersja między znakami a kodami (41)
  • 1.7. Konwersja między łańcuchami a symbolami (42)
  • 1.8. Przetwarzanie kolejnych znaków łańcucha (43)
  • 1.9. Przetwarzanie poszczególnych słów łańcucha (45)
  • 1.10. Zmiana wielkości liter w łańcuchu (47)
  • 1.11. Zarządzanie białymi znakami (48)
  • 1.12. Czy można potraktować dany obiekt jak łańcuch? (49)
  • 1.13. Wyodrębnianie części łańcucha (51)
  • 1.14. Obsługa międzynarodowego kodowania (52)
  • 1.15. Zawijanie wierszy tekstu (53)
  • 1.16. Generowanie następnika łańcucha (55)
  • 1.17. Dopasowywanie łańcuchów za pomocą wyrażeń regularnych (58)
  • 1.18. Zastępowanie wielu wzorców w pojedynczym przebiegu (60)
  • 1.19. Weryfikacja poprawności adresów e-mailowych (61)
  • 1.20. Klasyfikacja tekstu za pomocą analizatora bayesowskiego (64)

Rozdział 2. Liczby (67)

  • 2.1. Przekształcanie łańcucha w liczbę (68)
  • 2.2. Porównywanie liczb zmiennopozycyjnych (70)
  • 2.3. Reprezentowanie liczb z dowolną dokładnością (73)
  • 2.4. Reprezentowanie liczb wymiernych (76)
  • 2.5. Generowanie liczb pseudolosowych (77)
  • 2.6. Konwersje między różnymi podstawami liczenia (79)
  • 2.7. Logarytmy (80)
  • 2.8. Średnia, mediana i moda (83)
  • 2.9. Konwersja stopni na radiany i odwrotnie (85)
  • 2.10. Mnożenie macierzy (87)
  • 2.11. Rozwiązywanie układu równań liniowych (91)
  • 2.12. Liczby zespolone (94)
  • 2.13. Symulowanie subklasingu klasy Fixnum (96)
  • 2.14. Arytmetyka liczb w zapisie rzymskim (100)
  • 2.15. Generowanie sekwencji liczb (105)
  • 2.16. Generowanie liczb pierwszych (107)
  • 2.17. Weryfikacja sumy kontrolnej w numerze karty kredytowej (111)

Rozdział 3. Data i czas (113)

  • 3.1. Odczyt dzisiejszej daty (115)
  • 3.2. Dekodowanie daty, dokładne i przybliżone (119)
  • 3.3. Drukowanie dat (122)
  • 3.4. Iterowanie po datach (126)
  • 3.5. Arytmetyka dat (127)
  • 3.6. Obliczanie dystansu między datami (129)
  • 3.7. Konwersja czasu między strefami czasowymi (131)
  • 3.8. Czas letni (134)
  • 3.9. Konwersje między obiektami Time i DateTime (135)
  • 3.10. Jaki to dzień tygodnia? (138)
  • 3.11. Obsługa dat biznesowych (139)
  • 3.12. Periodyczne wykonywanie bloku kodu (140)
  • 3.13. Oczekiwanie przez zadany odcinek czasu (142)
  • 3.14. Przeterminowanie wykonania (145)

Rozdział 4. Tablice (147)

  • 4.1. Iterowanie po elementach tablicy (149)
  • 4.2. Wymiana zawartości bez używania zmiennych pomocniczych (152)
  • 4.3. Eliminowanie zdublowanych wartości (154)
  • 4.4. Odwracanie kolejności elementów w tablicy (155)
  • 4.5. Sortowanie tablicy (156)
  • 4.6. Sortowanie łańcuchów bez rozróżniania wielkości liter (158)
  • 4.7. Zabezpieczanie tablic przed utratą posortowania (159)
  • 4.8. Sumowanie elementów tablicy (164)
  • 4.9. Sortowanie elementów tablicy według częstości występowania (165)
  • 4.10. Tasowanie tablicy (167)
  • 4.11. Znajdowanie N najmniejszych elementów tablicy (168)
  • 4.12. Tworzenie hasza za pomocą iteratora inject (170)
  • 4.13. Ekstrahowanie wybranych elementów z tablicy (172)
  • 4.14. Operacje teoriomnogościowe na tablicach (175)
  • 4.15. Partycjonowanie i klasyfikacja elementów zbioru (177)

Rozdział 5. Hasze (183)

  • 5.1. Wykorzystywanie symboli jako kluczy (186)
  • 5.2. Wartości domyślne w haszach (187)
  • 5.3. Dodawanie elementów do hasza (189)
  • 5.4. Usuwanie elementów z hasza (191)
  • 5.5. Tablice i inne modyfikowalne obiekty w roli kluczy (193)
  • 5.6. Kojarzenie wielu wartości z tym samym kluczem (195)
  • 5.7. Iterowanie po zawartości hasza (196)
  • 5.8. Iterowanie po elementach hasza w kolejności ich wstawiania (200)
  • 5.9. Drukowanie hasza (201)
  • 5.10. Inwersja elementów hasza (203)
  • 5.11. Losowy wybór z listy zdarzeń o różnych prawdopodobieństwach (204)
  • 5.12. Tworzenie histogramu (207)
  • 5.13. Odwzorowanie zawartości dwóch haszów (209)
  • 5.14. Ekstrakcja fragmentów zawartości haszów (210)
  • 5.15. Przeszukiwanie hasza przy użyciu wyrażeń regularnych (211)

Rozdział 6. Pliki i katalogi (213)

  • 6.1. Czy taki plik istnieje? (216)
  • 6.2. Sprawdzanie uprawnień dostępu do plików (218)
  • 6.3. Zmiana uprawnień dostępu do plików (220)
  • 6.4. Sprawdzanie, kiedy plik był ostatnio używany (223)
  • 6.5. Przetwarzanie zawartości katalogu (224)
  • 6.6. Odczytywanie zawartości pliku (227)
  • 6.7. Zapis do pliku (230)
  • 6.8. Zapis do pliku tymczasowego (232)
  • 6.9. Losowy wybór wiersza z pliku (233)
  • 6.10. Porównywanie dwóch plików (234)
  • 6.11. Swobodne nawigowanie po "jednokrotnie odczytywalnych" strumieniach wejściowych (238)
  • 6.12. Wędrówka po drzewie katalogów (240)
  • 6.13. Szeregowanie dostępu do pliku (242)
  • 6.14. Tworzenie wersjonowanych kopii pliku (245)
  • 6.15. Łańcuchy udające pliki (248)
  • 6.16. Przekierowywanie standardowego wejścia i standardowego wyjścia (250)
  • 6.17. Przetwarzanie plików binarnych (252)
  • 6.18. Usuwanie pliku (255)
  • 6.19. Obcinanie pliku (257)
  • 6.20. Znajdowanie plików o określonej własności (258)
  • 6.21. Odczytywanie i zmiana bieżącego katalogu roboczego (260)

Rozdział 7. Bloki kodowe i iteracje (263)

  • 7.1. Tworzenie i wywoływanie bloku kodowego (265)
  • 7.2. Tworzenie metod wykorzystujących bloki kodowe (267)
  • 7.3. Przypisywanie bloku kodowego do zmiennej (269)
  • 7.4. Bloki kodowe jako domknięcia: odwołania do zmiennych zewnętrznych w treści bloku kodowego (272)
  • 7.5. Definiowanie iteratora dla struktury danych (273)
  • 7.6. Zmiana sposobu iterowania po strukturze danych (276)
  • 7.7. Nietypowe metody klasyfikujące i kolekcjonujące (278)
  • 7.8. Zatrzymywanie iteracji (279)
  • 7.9. Iterowanie równoległe (281)
  • 7.10. Kod inicjujący i kończący dla bloku kodowego (285)
  • 7.11. Tworzenie systemów luźno powiązanych przy użyciu odwołań zwrotnych (287)

Rozdział 8. Obiekty i klasy (291)

  • 8.1. Zarządzanie danymi instancyjnymi (294)
  • 8.2. Zarządzanie danymi klasowymi (296)
  • 8.3. Weryfikacja funkcjonalności obiektu (299)
  • 8.4. Tworzenie klasy pochodnej (301)
  • 8.5. Przeciążanie metod (303)
  • 8.6. Weryfikacja i modyfikowanie wartości atrybutów (305)
  • 8.7. Definiowanie wirtualnych atrybutów (307)
  • 8.8. Delegowanie wywołań metod do innego obiektu (308)
  • 8.9. Konwersja i koercja typów obiektów (311)
  • 8.10. Prezentowanie obiektu w postaci czytelnej dla człowieka (315)
  • 8.11. Metody wywoływane ze zmienną liczbą argumentów (317)
  • 8.12. Symulowanie argumentów zawierających słowa kluczowe (319)
  • 8.13. Wywoływanie metod superklasy (321)
  • 8.14. Definiowanie metod abstrakcyjnych (323)
  • 8.15. Zamrażanie obiektów w celu ich ochrony przed modyfikacją (325)
  • 8.16. Tworzenie kopii obiektu (327)
  • 8.17. Deklarowanie stałych (330)
  • 8.18. Implementowanie metod klasowych i metod-singletonów (332)
  • 8.19. Kontrolowanie dostępu - metody prywatne, publiczne i chronione (334)

Rozdział 9. Moduły i przestrzenie nazw (339)

  • 9.1. Symulowanie wielokrotnego dziedziczenia za pomocą modułów-domieszek (339)
  • 9.2. Rozszerzanie wybranych obiektów za pomocą modułów (343)
  • 9.3. Rozszerzanie repertuaru metod klasowych za pomocą modułów (345)
  • 9.4. Moduł Enumerable - zaimplementuj jedną metodę, dostaniesz 22 za darmo (346)
  • 9.5. Unikanie kolizji nazw dzięki ich kwalifikowaniu (348)
  • 9.6. Automatyczne ładowanie bibliotek na żądanie (350)
  • 9.7. Importowanie przestrzeni nazw (352)
  • 9.8. Inicjowanie zmiennych instancyjnych dołączanego modułu (353)
  • 9.9. Automatyczne inicjowanie modułów-domieszek (354)

Rozdział 10. Odzwierciedlenia i metaprogramowanie (357)

  • 10.1. Identyfikacja klasy obiektu i jej superklasy (358)
  • 10.2. Zestaw metod obiektu (359)
  • 10.3. Lista metod unikalnych dla obiektu (363)
  • 10.4. Uzyskiwanie referencji do metody (364)
  • 10.5. Poprawianie błędów w "obcych" klasach (366)
  • 10.6. Śledzenie zmian dokonywanych w danej klasie (368)
  • 10.7. Weryfikacja atrybutów obiektu (370)
  • 10.8. Reagowanie na wywołania niezdefiniowanych metod (372)
  • 10.9. Automatyczne inicjowanie zmiennych instancyjnych (375)
  • 10.10. Oszczędne kodowanie dzięki metaprogramowaniu (377)
  • 10.11. Metaprogramowanie z użyciem ewaluacji łańcuchów (380)
  • 10.12. Ewaluacja kodu we wcześniejszym kontekście (382)
  • 10.13. Anulowanie definicji metody (383)
  • 10.14. Aliasowanie metod (386)
  • 10.15. Programowanie zorientowane aspektowo (389)
  • 10.16. Wywołania kontraktowane (391)

Rozdział 11. XML i HTML (395)

  • 11.1. Sprawdzanie poprawności dokumentu XML (396)
  • 11.2. Ekstrakcja informacji z drzewa dokumentu (398)
  • 11.3. Ekstrakcja informacji w trakcie analizy dokumentu XML (400)
  • 11.4. Nawigowanie po dokumencie za pomocą XPath (401)
  • 11.5. Parsowanie błędnych dokumentów (404)
  • 11.6. Konwertowanie dokumentu XML na hasz (406)
  • 11.7. Walidacja dokumentu XML (409)
  • 11.8. Zastępowanie encji XML (411)
  • 11.9. Tworzenie i modyfikowanie dokumentów XML (414)
  • 11.10. Kompresowanie białych znaków w dokumencie XML (417)
  • 11.11. Autodetekcja standardu kodowania znaków w dokumencie (418)
  • 11.12. Konwersja dokumentu między różnymi standardami kodowania (419)
  • 11.13. Ekstrakcja wszystkich adresów URL z dokumentu HTML (420)
  • 11.14. Transformacja tekstu otwartego na format HTML (423)
  • 11.15. Konwertowanie ściągniętego z internetu dokumentu HTML na tekst (425)
  • 11.16. Prosty czytnik kanałów (428)

Rozdział 12. Formaty plików graficznych i innych (433)

  • 12.1. Tworzenie miniaturek (433)
  • 12.2. Dodawanie tekstu do grafiki (436)
  • 12.3. Konwersja formatów plików graficznych (439)
  • 12.4. Tworzenie wykresów (441)
  • 12.5. Wprowadzanie graficznego kontekstu za pomocą wykresów typu Sparkline (444)
  • 12.6. Silne algorytmy szyfrowania danych (447)
  • 12.7. Przetwarzanie danych rozdzielonych przecinkami (449)
  • 12.8. Przetwarzanie plików tekstowych nie w pełni zgodnych z formatem CSV (451)
  • 12.9. Generowanie i przetwarzanie arkuszy Excela (453)
  • 12.10. Kompresowanie i archiwizowanie plików za pomocą narzędzi Gzip i Tar (455)
  • 12.11. Czytanie i zapisywanie plików ZIP (458)
  • 12.12. Czytanie i zapisywanie plików konfiguracyjnych (460)
  • 12.13. Generowanie plików PDF (461)
  • 12.14. Reprezentowanie danych za pomocą plików muzycznych MIDI (465)

Rozdział 13. Bazy danych i trwałość obiektów (469)

  • 13.1. Serializacja danych za pomocą biblioteki YAML (472)
  • 13.2. Serializacja danych z wykorzystaniem modułu Marshal (475)
  • 13.3. Utrwalanie obiektów z wykorzystaniem biblioteki Madeleine (476)
  • 13.4. Indeksowanie niestrukturalnego tekstu z wykorzystaniem biblioteki SimpleSearch (479)
  • 13.5. Indeksowanie tekstu o określonej strukturze z wykorzystaniem biblioteki Ferret (481)
  • 13.6. Wykorzystywanie baz danych Berkeley DB (484)
  • 13.7. Zarządzanie bazą danych MySQL w systemie Unix (486)
  • 13.8. Zliczanie wierszy zwracanych przez zapytanie (487)
  • 13.9. Bezpośrednia komunikacja z bazą danych MySQL (489)
  • 13.10. Bezpośrednia komunikacja z bazą danych PostgreSQL (491)
  • 13.11. Mapowanie obiektowo-relacyjne z wykorzystaniem biblioteki ActiveRecord (493)
  • 13.12. Mapowanie obiektowo-relacyjne z wykorzystaniem biblioteki Og (497)
  • 13.13. Programowe tworzenie zapytań (501)
  • 13.14. Sprawdzanie poprawności danych z wykorzystaniem biblioteki ActiveRecord (504)
  • 13.15. Zapobieganie atakom typu SQL Injection (507)
  • 13.16. Obsługa transakcji z wykorzystaniem biblioteki ActiveRecord (510)
  • 13.17. Definiowanie haków dotyczących zdarzeń związanych z tabelami (511)
  • 13.18. Oznaczanie tabel bazy danych z wykorzystaniem modułów-domieszek (514)

Rozdział 14. Usługi internetowe (519)

  • 14.1. Pobieranie zawartości strony WWW (520)
  • 14.2. Obsługa żądań HTTPS (522)
  • 14.3. Dostosowywanie nagłówków żądań HTTP (524)
  • 14.4. Wykonywanie zapytań DNS (526)
  • 14.5. Wysyłanie poczty elektronicznej (528)
  • 14.6. Czytanie poczty z serwera IMAP (531)
  • 14.7. Czytanie poczty z wykorzystaniem protokołu POP3 (535)
  • 14.8. Implementacja klienta FTP (538)
  • 14.9. Implementacja klienta telnet (540)
  • 14.10. Implementacja klienta SSH (543)
  • 14.11. Kopiowanie plików do innego komputera (546)
  • 14.12. Implementacja klienta BitTorrent (547)
  • 14.13. Wysyłanie sygnału ping do zdalnego komputera (549)
  • 14.14. Implementacja własnego serwera internetowego (550)
  • 14.15. Przetwarzanie adresów URL (552)
  • 14.16. Pisanie skryptów CGI (555)
  • 14.17. Ustawianie plików cookie i innych nagłówków odpowiedzi HTTP (557)
  • 14.18. Obsługa przesyłania plików na serwer z wykorzystaniem CGI (559)
  • 14.19. Uruchamianie serwletów WEBrick (562)
  • 14.20. Własny klient HTTP (567)

Rozdział 15. Projektowanie aplikacji internetowych: Ruby on Rails (571)

  • 15.1. Prosta aplikacja Rails wyświetlająca informacje o systemie (573)
  • 15.2. Przekazywanie danych ze sterownika do widoku (576)
  • 15.3. Tworzenie układu nagłówka i stopki (578)
  • 15.4. Przekierowania do innych lokalizacji (581)
  • 15.5. Wyświetlanie szablonów za pomocą metody render (582)
  • 15.6. Integracja baz danych z aplikacjami Rails (585)
  • 15.7. Reguły pluralizacji (588)
  • 15.8. Tworzenie systemu logowania (590)
  • 15.9. Zapisywanie haseł użytkowników w bazie danych w postaci skrótów (594)
  • 15.10. Unieszkodliwianie kodu HTML i JavaScript przed wyświetlaniem (595)
  • 15.11. Ustawianie i odczytywanie informacji o sesji (596)
  • 15.12. Ustawianie i odczytywanie plików cookie (599)
  • 15.13. Wyodrębnianie kodu do modułów pomocniczych (601)
  • 15.14. Rozdzielenie widoku na kilka części (602)
  • 15.15. Dodawanie efektów DHTML z wykorzystaniem biblioteki script.aculo.us (605)
  • 15.16. Generowanie formularzy do modyfikowania obiektów modelu (607)
  • 15.17. Tworzenie formularzy Ajax (611)
  • 15.18. Udostępnianie usług sieciowych w witrynie WWW (614)
  • 15.19. Przesyłanie wiadomości pocztowych za pomocą aplikacji Rails (616)
  • 15.20. Automatyczne wysyłanie komunikatów o błędach pocztą elektroniczną (618)
  • 15.21. Tworzenie dokumentacji witryny WWW (620)
  • 15.22. Testy modułowe witryny WWW (621)
  • 15.23. Wykorzystywanie pułapek w aplikacjach internetowych (624)

Rozdział 16. Usługi sieciowe i programowanie rozproszone (627)

  • 16.1. Wyszukiwanie książek w serwisie Amazon (628)
  • 16.2. Wyszukiwanie zdjęć w serwisie Flickr (631)
  • 16.3. Jak napisać klienta XML-RPC? (634)
  • 16.4. Jak napisać klienta SOAP? (636)
  • 16.5. Jak napisać serwer SOAP? (637)
  • 16.6. Wyszukiwanie w internecie z wykorzystaniem usługi sieciowej serwisu Google (638)
  • 16.7. Wykorzystanie pliku WSDL w celu ułatwienia wywołań SOAP (640)
  • 16.8. Płatności kartami kredytowymi (642)
  • 16.9. Odczytywanie kosztów przesyłki w serwisie UPS lub FedEx (644)
  • 16.10. Współdzielenie haszów przez dowolną liczbę komputerów (645)
  • 16.11. Implementacja rozproszonej kolejki (649)
  • 16.12. Tworzenie współdzielonej "tablicy ogłoszeń" (650)
  • 16.13. Zabezpieczanie usług DRb za pomocą list kontroli dostępu (653)
  • 16.14. Automatyczne wykrywanie usług DRb z wykorzystaniem biblioteki Rinda (654)
  • 16.15. Wykorzystanie obiektów pośredniczących (656)
  • 16.16. Zapisywanie danych w rozproszonej pamięci RAM z wykorzystaniem systemu MemCached (659)
  • 16.17. Buforowanie kosztownych obliczeniowo wyników za pomocą systemu MemCached (661)
  • 16.18. Zdalnie sterowana "szafa grająca" (664)

Rozdział 17. Testowanie, debugowanie, optymalizacja i tworzenie dokumentacji (669)

  • 17.1. Uruchamianie kodu wyłącznie w trybie debugowania (670)
  • 17.2. Generowanie wyjątków (672)
  • 17.3. Obsługa wyjątków (673)
  • 17.4. Ponawianie próby wykonania kodu po wystąpieniu wyjątku (676)
  • 17.5. Mechanizmy rejestrowania zdarzeń w aplikacji (677)
  • 17.6. Tworzenie i interpretowanie stosu wywołań (679)
  • 17.7. Jak pisać testy modułowe? (681)
  • 17.8. Uruchamianie testów modułowych (684)
  • 17.9. Testowanie kodu korzystającego z zewnętrznych zasobów (686)
  • 17.10. Wykorzystanie pułapek do kontroli i modyfikacji stanu aplikacji (690)
  • 17.11. Tworzenie dokumentacji aplikacji (692)
  • 17.12. Profilowanie aplikacji (696)
  • 17.13. Pomiar wydajności alternatywnych rozwiązań (699)
  • 17.14. Wykorzystywanie wielu narzędzi analitycznych jednocześnie (701)
  • 17.15. Co wywołuje tę metodę? Graficzny analizator wywołań (702)

Rozdział 18. Tworzenie pakietów oprogramowania i ich dystrybucja (705)

  • 18.1. Wyszukiwanie bibliotek poprzez kierowanie zapytań do repozytoriów gemów (706)
  • 18.2. Instalacja i korzystanie z gemów (709)
  • 18.3. Wymaganie określonej wersji gemu (711)
  • 18.4. Odinstalowywanie gemów (714)
  • 18.5. Czytanie dokumentacji zainstalowanych gemów (715)
  • 18.6. Tworzenie pakietów kodu w formacie gemów (717)
  • 18.7. Dystrybucja gemów (719)
  • 18.8. Instalacja i tworzenie samodzielnych pakietów z wykorzystaniem skryptu setup.rb (722)

Rozdział 19. Automatyzacja zadań z wykorzystaniem języka Rake (725)

  • 19.1. Automatyczne uruchamianie testów modułowych (727)
  • 19.2. Automatyczne generowanie dokumentacji (729)
  • 19.3. Porządkowanie wygenerowanych plików (731)
  • 19.4. Automatyczne tworzenie gemów (733)
  • 19.5. Pobieranie informacji statystycznych dotyczących kodu (734)
  • 19.6. Publikowanie dokumentacji (737)
  • 19.7. Równoległe uruchamianie wielu zadań (738)
  • 19.8. Uniwersalny plik Rakefile (740)

Rozdział 20. Wielozadaniowość i wielowątkowość (747)

  • 20.1. Uruchamianie procesu-demona w systemie Unix (748)
  • 20.2. Tworzenie usług systemu Windows (751)
  • 20.3. Wykonywanie dwóch operacji jednocześnie z wykorzystaniem wątków (754)
  • 20.4. Synchronizacja dostępu do obiektu (756)
  • 20.5. Niszczenie wątków (758)
  • 20.6. Równoległe uruchamianie bloku kodu dla wielu obiektów (760)
  • 20.7. Ograniczanie liczby wątków z wykorzystaniem ich puli (763)
  • 20.8. Sterowanie zewnętrznym procesem za pomocą metody popen (766)
  • 20.9. Przechwytywanie strumienia wyjściowego i informacji o błędach z polecenia powłoki w systemie Unix (767)
  • 20.10. Zarządzanie procesami w innym komputerze (768)
  • 20.11. Unikanie zakleszczeń (770)

Rozdział 21. Interfejs użytkownika (773)

  • 21.1. Pobieranie danych wejściowych wiersz po wierszu (774)
  • 21.2. Pobieranie danych wejściowych znak po znaku (776)
  • 21.3. Przetwarzanie argumentów wiersza polecenia (778)
  • 21.4. Sprawdzenie, czy program działa w trybie interaktywnym (781)
  • 21.5. Konfiguracja i porządkowanie po programie wykorzystującym bibliotekę Curses (782)
  • 21.6. Czyszczenie ekranu (784)
  • 21.7. Określenie rozmiaru terminala (785)
  • 21.8. Zmiana koloru tekstu (787)
  • 21.9. Odczytywanie haseł (790)
  • 21.10. Edycja danych wejściowych z wykorzystaniem biblioteki Readline (791)
  • 21.11. Sterowanie migotaniem diod na klawiaturze (792)
  • 21.12. Tworzenie aplikacji GUI z wykorzystaniem biblioteki Tk (795)
  • 21.13. Tworzenie aplikacji GUI z wykorzystaniem biblioteki wxRuby (798)
  • 21.14. Tworzenie aplikacji GUI z wykorzystaniem biblioteki Ruby/GTK (802)
  • 21.15. Tworzenie aplikacji Mac OS X z wykorzystaniem biblioteki RubyCocoa (805)
  • 21.16. Wykorzystanie AppleScript do pobierania danych wejściowych od użytkownika (812)

Rozdział 22. Rozszerzenia języka Ruby z wykorzystaniem innych języków (815)

  • 22.1. Pisanie rozszerzeń w języku C dla języka Ruby (816)
  • 22.2. Korzystanie z bibliotek języka C z poziomu kodu Ruby (819)
  • 22.3. Wywoływanie bibliotek języka C za pomocą narzędzia SWIG (822)
  • 22.4. Kod w języku C wstawiany w kodzie Ruby (825)
  • 22.5. Korzystanie z bibliotek Javy za pośrednictwem interpretera JRuby (827)

Rozdział 23. Administrowanie systemem (831)

  • 23.1. Pisanie skryptów zarządzających zewnętrznymi programami (832)
  • 23.2. Zarządzanie usługami systemu Windows (833)
  • 23.3. Uruchamianie kodu w imieniu innego użytkownika (835)
  • 23.4. Okresowe uruchamianie zadań bez używania mechanizmu cron lub at (836)
  • 23.5. Usuwanie plików, których nazwy spełniają kryteria określone przez wyrażenie regularne (838)
  • 23.6. Zmiana nazw grupy plików (840)
  • 23.7. Wyszukiwanie plików zdublowanych (842)
  • 23.8. Automatyczne wykonywanie kopii zapasowych (845)
  • 23.9. Ujednolicanie własności i uprawnień w katalogach użytkowników (846)
  • 23.10. Niszczenie wszystkich procesów wybranego użytkownika (849)

Skorowidz (853)

  • Titel: Ruby. Receptury
  • Autor: Lucas Carlson, Leonard Richardson
  • Originaler Titel: Ruby Cookbook
  • Übersetzung: Andrzej Grażyński, Radosław Meryk
  • ISBN: 978-83-246-6171-8, 9788324661718
  • Veröffentlichungsdatum: 2012-11-08
  • Format: E-book
  • Artikelkennung: rubyre
  • Verleger: Helion