Ruby. Receptury - ebook
Ruby. Receptury - ebook
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.
Spis treści
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)
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-246-6171-8 |
Rozmiar pliku: | 6,7 MB |