Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00239 006590 13598999 na godz. na dobę w sumie
Ruby. Praktyczne skrypty, które rozwiążą trudne problemy - książka
Ruby. Praktyczne skrypty, które rozwiążą trudne problemy - książka
Autor: Liczba stron: 232
Wydawca: Helion Język publikacji: polski
ISBN: 83-246-2254-3 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> ruby - programowanie
Porównaj ceny (książka, ebook, audiobook).

Poznaj przyjemność pracy z językiem Ruby!

Ruby to obiektowy język programowania, przeznaczony do użytku ogólnego, udostępniający bogaty zestaw narzędzi służących do pisania skryptów. Jedną z największych zalet tego języka jest fakt, że wyjątkowo dobrze nadaje się on do tworzenia efektywnych programów proceduralnych. Dzięki tej książce nauczysz się wykorzystywać niezwykłe właściwości języka Ruby, aby zautomatyzować większość zadań i wykonywać swoją pracę bez trudu i z przyjemnością.

Książka 'Ruby. Praktyczne skrypty, które rozwiążą trudne problemy' zawiera 58 niezwykle przydatnych skryptów, które pozwalają szybko rozwiązać często spotykane problemy, między innymi z administrowaniem systemem, manipulowaniem rysunkami i zarządzaniem witryną. Przy każdym skrypcie znajdziesz kod, omówienie jego działania i wskazówki opisujące, jak dostosować rozwiązanie do własnych potrzeb. Z podręcznika dowiesz się, jak posługiwać się skryptami do automatyzacji zadań (takich jak archiwizowanie czy wypakowywanie plików), a także na czym polega szyfrowanie plików oraz przetwarzanie wiadomości RSS. Nauczysz się tworzyć zaawansowane roboty sieciowe, skrypty z obszaru zabezpieczeń oraz kompletne biblioteki i aplikacje.

Skorzystaj z praktycznych skryptów w języku Ruby i oszczędzaj czas, aby pracować szybko i wydajnie.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Ruby. Praktyczne skrypty, które rozwi¹¿¹ trudne problemy Autor: Steve Pugh T³umaczenie: Tomasz Walczak, Marek Kowalcze ISBN: 978-83-246-2254-2 Tytu³ orygina³u: Wicked Cool Ruby Scripts: Useful Scripts that Solve Difficult Problems Format: 170x230, stron: 232 Poznaj przyjemnoœæ pracy z jêzykiem Ruby! • Jak manipulowaæ ³añcuchami znaków? • Jak edytowaæ zbiory zdjêæ i wydobywaæ informacje z fotografii? • Jak zmieniaæ uprawnienia i modyfikowaæ konta u¿ytkowników? Ruby to obiektowy jêzyk programowania, przeznaczony do u¿ytku ogólnego, udostêpniaj¹cy bogaty zestaw narzêdzi s³u¿¹cych do pisania skryptów. Jedn¹ z najwiêkszych zalet tego jêzyka jest fakt, ¿e wyj¹tkowo dobrze nadaje siê on do tworzenia efektywnych programów proceduralnych. Dziêki tej ksi¹¿ce nauczysz siê wykorzystywaæ niezwyk³e w³aœciwoœci jêzyka Ruby, aby zautomatyzowaæ wiêkszoœæ zadañ i wykonywaæ swoj¹ pracê bez trudu i z przyjemnoœci¹. Ksi¹¿ka „Ruby. Praktyczne skrypty, które rozwi¹¿¹ trudne problemy” zawiera 58 niezwykle przydatnych skryptów, które pozwalaj¹ szybko rozwi¹zaæ czêsto spotykane problemy, miêdzy innymi z administrowaniem systemem, manipulowaniem rysunkami i zarz¹dzaniem witryn¹. Przy ka¿dym skrypcie znajdziesz kod, omówienie jego dzia³ania i wskazówki opisuj¹ce, jak dostosowaæ rozwi¹zanie do w³asnych potrzeb. Z podrêcznika dowiesz siê, jak pos³ugiwaæ siê skryptami do automatyzacji zadañ (takich jak archiwizowanie czy wypakowywanie plików), a tak¿e na czym polega szyfrowanie plików oraz przetwarzanie wiadomoœci RSS. Nauczysz siê tworzyæ zaawansowane roboty sieciowe, skrypty z obszaru zabezpieczeñ oraz kompletne biblioteki i aplikacje. • Skrypty do zarz¹dzania witrynami • Pisanie skryptów sieciowych • Administrowanie systemami Linux i Unix • Walidacja rozwi¹zañ symbolicznych • Narzêdzia do manipulowania zdjêciami • Tworzenie galerii fotografii • Narzêdzia do przetwarzania ³añcuchów znaków • Serwery i wydobywanie danych • Argumenty i dokumentacja • Algorytmy sortowania Skorzystaj z praktycznych skryptów w jêzyku Ruby i oszczêdzaj czas, aby pracowaæ szybko i wydajnie Spis treści PRZEDMOWA ........................................................................................... 15 PODZIĘKOWANIA ................................................................................... 17 WPROWADZENIE ..................................................................................... 19 Odjazdowe skrypty w języku Ruby ........................................................................................20 Musisz znać podstawy języka Ruby ........................................................................................20 Dokumentacja ........................................................................................................................20 Struktura książki i zastosowane podejście .............................................................................21 Witryna WWW ......................................................................................................................23 1. NARZĘDZIA DO UŻYTKU OGÓLNEGO .................................................... 25 1. Wyszukiwanie zmodyfikowanych plików ...........................................................................25 Kod ...............................................................................................................................26 Uruchamianie kodu ......................................................................................................27 Dane wyjściowe ...........................................................................................................27 Jak działa ten skrypt? ....................................................................................................28 Modyfikowanie skryptu ................................................................................................29 2. Szyfrowanie pliku ...............................................................................................................30 Kod ...............................................................................................................................30 Uruchamianie kodu ......................................................................................................30 Dane wyjściowe ...........................................................................................................31 Jak działa ten skrypt? ....................................................................................................31 Modyfikowanie skryptu ................................................................................................32 3. Odszyfrowywanie pliku ......................................................................................................32 Kod ...............................................................................................................................32 Uruchamianie kodu ......................................................................................................33 Wyniki ..........................................................................................................................33 Jak działa ten skrypt? ....................................................................................................33 4. Dzielenie plików ................................................................................................................ 34 Kod .............................................................................................................................. 34 Uruchamianie kodu ..................................................................................................... 35 Dane wyjściowe .......................................................................................................... 35 Jak działa ten skrypt? ................................................................................................... 36 Modyfikowanie skryptu ............................................................................................... 36 5. Scalanie plików .................................................................................................................. 36 Kod .............................................................................................................................. 37 Uruchamianie kodu ..................................................................................................... 37 Dane wyjściowe .......................................................................................................... 37 Jak działa ten skrypt? ................................................................................................... 38 Modyfikowanie skryptu ............................................................................................... 38 6. Przeglądarka procesów w systemie Windows .................................................................. 38 Kod .............................................................................................................................. 39 Uruchamianie kodu ..................................................................................................... 39 Dane wyjściowe .......................................................................................................... 39 Jak działa ten skrypt? ................................................................................................... 40 Modyfikowanie skryptu ............................................................................................... 40 7. Narzędzie do kompresji plików ........................................................................................ 41 Kod .............................................................................................................................. 41 Uruchamianie kodu ..................................................................................................... 42 Dane wyjściowe .......................................................................................................... 42 Jak działa ten skrypt? ................................................................................................... 42 8. Rozpakowywanie plików ................................................................................................... 43 Kod .............................................................................................................................. 43 Uruchamianie kodu ..................................................................................................... 44 Dane wyjściowe .......................................................................................................... 44 Jak działa ten skrypt? ................................................................................................... 44 9. Kalkulator raty kredytu hipotecznego ............................................................................... 45 Kod .............................................................................................................................. 45 Uruchamianie kodu ..................................................................................................... 45 Dane wyjściowe .......................................................................................................... 45 Jak działa ten skrypt? ................................................................................................... 46 Modyfikowanie skryptu ............................................................................................... 46 2. SKRYPTY DO ZARZĄDZANIA WITRYNAMI ............................................. 47 10. Weryfikator odnośników do stron w sieci ...................................................................... 48 Kod .............................................................................................................................. 48 Uruchamianie kodu ..................................................................................................... 49 Dane wyjściowe .......................................................................................................... 49 Jak działa ten skrypt? ................................................................................................... 49 Modyfikowanie skryptu ............................................................................................... 50 6 S p i s t r e ś c i 11. Kontroler osieroconych plików ........................................................................................51 Kod ...............................................................................................................................51 Uruchamianie skryptu ..................................................................................................52 Dane wyjściowe ...........................................................................................................52 Jak działa ten skrypt? ....................................................................................................53 12. Generator formularzy ......................................................................................................53 Kod ...............................................................................................................................54 Uruchamianie kodu ......................................................................................................55 Dane wyjściowe ...........................................................................................................55 Jak działa ten skrypt? ....................................................................................................56 Modyfikowanie skryptu ................................................................................................57 13. Parser kanałów RSS ..........................................................................................................57 Kod ...............................................................................................................................57 Uruchamianie kodu ......................................................................................................58 Dane wyjściowe ...........................................................................................................58 Jak działa ten skrypt? ....................................................................................................59 Modyfikowanie skryptu ................................................................................................60 14. Grep dla giełdy papierów wartościowych ........................................................................60 Kod ...............................................................................................................................60 Uruchamianie kodu ......................................................................................................61 Dane wyjściowe ...........................................................................................................61 Jak działa ten skrypt? ....................................................................................................62 Modyfikowanie skryptu ................................................................................................62 15. Generowanie adresów IP .................................................................................................63 Kod ...............................................................................................................................63 Uruchamianie kodu ......................................................................................................64 Dane wyjściowe ...........................................................................................................64 Jak działa ten skrypt? ....................................................................................................65 16. Kalkulator masek podsieci ................................................................................................66 Kod ...............................................................................................................................66 Uruchamianie kodu ......................................................................................................66 Dane wyjściowe ...........................................................................................................66 Jak działa ten skrypt? ....................................................................................................67 Modyfikowanie skryptu ................................................................................................67 3. ADMINISTROWANIE SYSTEMAMI LINUX I UNIX ................................... 69 17. Poprawianie nieodpowiednich nazw plików ....................................................................69 Kod ...............................................................................................................................70 Uruchamianie kodu ......................................................................................................71 Dane wyjściowe ...........................................................................................................71 Jak działa ten skrypt? ....................................................................................................71 Modyfikowanie skryptu ................................................................................................72 S p i s t r e ś c i 7 18. Dodawanie kont użytkowników ..................................................................................... 72 Kod .............................................................................................................................. 72 Uruchamianie kodu ..................................................................................................... 73 Dane wyjściowe .......................................................................................................... 74 Jak działa ten skrypt? ................................................................................................... 74 Modyfikowanie skryptu ............................................................................................... 75 19. Modyfikowanie kont użytkowników ............................................................................... 75 Kod .............................................................................................................................. 75 Uruchamianie kodu ..................................................................................................... 77 Dane wyjściowe .......................................................................................................... 77 Jak działa ten skrypt? ................................................................................................... 78 Modyfikowanie skryptu ............................................................................................... 78 20. Usuwanie zablokowanych procesów .............................................................................. 78 Kod .............................................................................................................................. 79 Uruchamianie kodu ..................................................................................................... 79 Dane wyjściowe .......................................................................................................... 79 Jak działa ten skrypt? ................................................................................................... 80 21. Walidacja dowiązań symbolicznych ................................................................................. 81 Kod .............................................................................................................................. 82 Uruchamianie kodu ..................................................................................................... 82 Dane wyjściowe .......................................................................................................... 82 Jak działa ten skrypt? ................................................................................................... 82 Modyfikowanie skryptu ............................................................................................... 83 4. NARZĘDZIA DO MANIPULOWANIA ZDJĘCIAMI .................................... 85 22. Masowe edytowanie ........................................................................................................ 86 Kod .............................................................................................................................. 86 Uruchamianie kodu ..................................................................................................... 86 Dane wyjściowe .......................................................................................................... 86 Jak działa ten skrypt? ................................................................................................... 87 23. Pobieranie informacji o zdjęciach .................................................................................... 87 Kod .............................................................................................................................. 88 Uruchamianie kodu ..................................................................................................... 88 Dane wyjściowe .......................................................................................................... 88 Jak działa ten skrypt? ................................................................................................... 89 Modyfikowanie skryptu ............................................................................................... 90 24. Tworzenie miniatur ......................................................................................................... 90 Kod .............................................................................................................................. 90 Uruchamianie kodu ..................................................................................................... 91 Dane wyjściowe .......................................................................................................... 91 Jak działa ten skrypt? ................................................................................................... 91 Modyfikowanie skryptu ............................................................................................... 92 8 S p i s t r e ś c i 25. Zmienianie wielkości zdjęć ...............................................................................................92 Kod ...............................................................................................................................92 Uruchamianie kodu ......................................................................................................93 Dane wyjściowe ...........................................................................................................93 Jak działa ten skrypt? ....................................................................................................93 Modyfikowanie skryptu ................................................................................................94 26. Dodawanie znaków wodnych do zdjęć ...........................................................................94 Kod ...............................................................................................................................95 Uruchamianie kodu ......................................................................................................95 Dane wyjściowe ...........................................................................................................96 Jak działa ten skrypt? ....................................................................................................96 27. Przekształcanie zdjęć na czarno-białe ..............................................................................97 Kod ...............................................................................................................................97 Uruchamianie kodu ......................................................................................................98 Dane wyjściowe ...........................................................................................................98 Jak działa ten skrypt? ....................................................................................................98 28. Tworzenie galerii fotografii ..............................................................................................98 Kod ...............................................................................................................................99 Uruchamianie kodu ....................................................................................................100 Dane wyjściowe .........................................................................................................100 Jak działa ten skrypt? ..................................................................................................100 Modyfikowanie skryptu ..............................................................................................102 5. GRY I NARZĘDZIA WSPOMAGAJĄCE UCZENIE SIĘ ............................... 103 29. Rozwiązywanie łamigłówek Sudoku ..............................................................................103 Kod .............................................................................................................................104 Uruchamianie kodu ....................................................................................................105 Dane wyjściowe .........................................................................................................105 Jak działa ten skrypt? ..................................................................................................106 30. Fiszki ..............................................................................................................................107 Kod .............................................................................................................................107 Uruchamianie kodu ....................................................................................................108 Dane wyjściowe .........................................................................................................108 Jak działa ten skrypt? ..................................................................................................108 Modyfikowanie skryptu ..............................................................................................109 31. Gra w zgadywanie numerów .........................................................................................109 Kod .............................................................................................................................109 Uruchamianie kodu ....................................................................................................110 Dane wyjściowe .........................................................................................................110 Jak działa ten skrypt? ..................................................................................................111 32. Kamień, papier, nożyce ..................................................................................................111 Kod .............................................................................................................................111 Uruchamianie kodu ....................................................................................................112 S p i s t r e ś c i 9 Dane wyjściowe ........................................................................................................ 112 Jak działa ten skrypt? ................................................................................................. 113 Modyfikowanie skryptu ............................................................................................. 113 33. Rozsypanka wyrazowa .................................................................................................. 113 Kod ............................................................................................................................ 114 Uruchamianie kodu ................................................................................................... 114 Dane wyjściowe ........................................................................................................ 115 Jak działa ten skrypt? ................................................................................................. 115 34. Szubienica ...................................................................................................................... 116 Kod ............................................................................................................................ 116 Uruchamianie kodu ................................................................................................... 117 Dane wyjściowe ........................................................................................................ 117 Jak działa ten skrypt? ................................................................................................. 118 35. Świnia — gra w kości .................................................................................................... 118 Kod ............................................................................................................................ 119 Uruchamianie kodu ................................................................................................... 120 Dane wyjściowe ........................................................................................................ 120 Jak działa ten skrypt? ................................................................................................. 122 Modyfikowanie skryptu ............................................................................................. 123 6. NARZĘDZIA DO PRZETWARZANIA ŁAŃCUCHÓW ZNAKÓW .............. 125 36. Generator dokumentów PDF ....................................................................................... 125 Kod ............................................................................................................................ 126 Uruchamianie kodu ................................................................................................... 127 Dane wyjściowe ........................................................................................................ 127 Jak działa ten skrypt? ................................................................................................. 127 37. Zliczanie wystąpień słów ............................................................................................... 129 Kod ............................................................................................................................ 129 Uruchamianie kodu ................................................................................................... 130 Dane wyjściowe ........................................................................................................ 130 Jak działa ten skrypt? ................................................................................................. 130 Modyfikowanie skryptu ............................................................................................. 131 38. Parser plików CSV ......................................................................................................... 131 Kod ............................................................................................................................ 132 Uruchamianie kodu ................................................................................................... 133 Dane wyjściowe ........................................................................................................ 133 Jak działa ten skrypt? ................................................................................................. 133 Modyfikowanie skryptu ............................................................................................. 134 39. Przekształcanie plików CSV na XML ............................................................................ 134 Kod ............................................................................................................................ 135 Uruchamianie kodu ................................................................................................... 135 Dane wyjściowe ........................................................................................................ 135 Jak działa ten skrypt? ................................................................................................. 136 Modyfikowanie skryptu ............................................................................................. 137 10 S p i s t r e ś c i 40. Program grep napisany w języku Ruby ..........................................................................137 Kod .............................................................................................................................137 Uruchamianie kodu ....................................................................................................138 Dane wyjściowe .........................................................................................................138 Jak działa ten skrypt? ..................................................................................................138 Modyfikowanie skryptu ..............................................................................................139 41. Sprawdzanie siły hasła ....................................................................................................139 Kod .............................................................................................................................139 Uruchamianie kodu ....................................................................................................140 Dane wyjściowe .........................................................................................................140 Jak działa ten skrypt? ..................................................................................................140 Modyfikowanie skryptu ..............................................................................................142 7. SERWERY I WYDOBYWANIE DANYCH ................................................... 143 42. Definicje .........................................................................................................................143 Kod .............................................................................................................................144 Uruchamianie kodu ....................................................................................................144 Dane wyjściowe .........................................................................................................145 Jak działa ten skrypt? ..................................................................................................145 Modyfikowanie skryptu ..............................................................................................146 43. Automatyczne wysyłanie SMS-ów .................................................................................146 Kod .............................................................................................................................146 Uruchamianie kodu ....................................................................................................147 Dane wyjściowe .........................................................................................................147 Jak działa ten skrypt? ..................................................................................................147 44. Wydobywanie odnośników ............................................................................................148 Kod .............................................................................................................................148 Uruchamianie kodu ....................................................................................................149 Dane wyjściowe .........................................................................................................149 Jak działa ten skrypt? ..................................................................................................150 Modyfikowanie skryptu ..............................................................................................151 45. Wydobywanie rysunków ................................................................................................151 Kod .............................................................................................................................151 Uruchamianie kodu ....................................................................................................152 Dane wyjściowe .........................................................................................................152 Jak działa ten skrypt? ..................................................................................................152 Modyfikowanie skryptu ..............................................................................................153 46. Narzędzie do wydobywania danych ze stron WWW ....................................................153 Kod .............................................................................................................................153 Uruchamianie kodu ....................................................................................................154 Dane wyjściowe .........................................................................................................154 Jak działa ten skrypt? ..................................................................................................155 S p i s t r e ś c i 11 47. Szyfrowanie po stronie klienta ...................................................................................... 155 Kod ............................................................................................................................ 155 Uruchamianie kodu ................................................................................................... 156 Dane wyjściowe ........................................................................................................ 156 Jak działa ten skrypt? ................................................................................................. 156 48. Szyfrowanie po stronie serwera .................................................................................... 157 Kod ............................................................................................................................ 157 Uruchamianie kodu ................................................................................................... 158 Dane wyjściowe ........................................................................................................ 159 Jak działa ten skrypt? ................................................................................................. 159 8. ARGUMENTY I DOKUMENTACJA .......................................................... 161 49. Bezpieczeństwo plików ................................................................................................. 162 Kod ............................................................................................................................ 162 Uruchamianie kodu ................................................................................................... 164 Dane wyjściowe ........................................................................................................ 164 Jak działa ten skrypt? ................................................................................................. 165 50. Wydobywanie danych ze stron WWW ......................................................................... 166 Kod ............................................................................................................................ 166 Uruchamianie kodu ................................................................................................... 168 Dane wyjściowe ........................................................................................................ 169 Jak działa ten skrypt? ................................................................................................. 169 51. Narzędzia do zarządzania zdjęciami .............................................................................. 170 Kod ............................................................................................................................ 170 Uruchamianie kodu ................................................................................................... 175 Dane wyjściowe ........................................................................................................ 175 Jak działa ten skrypt? ................................................................................................. 176 Wnioski ................................................................................................................................ 176 9. ALGORYTMY SORTOWANIA .................................................................. 177 52. Sortowanie bąbelkowe .................................................................................................. 178 Kod ............................................................................................................................ 178 Uruchamianie kodu ................................................................................................... 179 Dane wyjściowe ........................................................................................................ 179 Jak działa ten skrypt? ................................................................................................. 179 53. Sortowanie przez wybieranie ........................................................................................ 180 Kod ............................................................................................................................ 181 Uruchamianie kodu ................................................................................................... 181 Dane wyjściowe ........................................................................................................ 181 Jak działa ten skrypt? ................................................................................................. 182 54. Sortowanie Shella .......................................................................................................... 182 Kod ............................................................................................................................ 182 Uruchamianie kodu ................................................................................................... 183 12 S p i s t r e ś c i Dane wyjściowe .........................................................................................................183 Jak działa ten skrypt? ..................................................................................................184 55. Sortowanie przez scalanie ..............................................................................................184 Kod .............................................................................................................................184 Uruchamianie kodu ....................................................................................................186 Dane wyjściowe .........................................................................................................186 Jak działa ten skrypt? ..................................................................................................186 56. Sortowanie stogowe ......................................................................................................186 Kod .............................................................................................................................187 Uruchamianie kodu ....................................................................................................188 Dane wyjściowe .........................................................................................................188 Jak działa ten skrypt? ..................................................................................................188 57. Sortowanie szybkie ........................................................................................................189 Kod .............................................................................................................................189 Uruchamianie kodu ....................................................................................................190 Dane wyjściowe .........................................................................................................190 Jak działa ten skrypt? ..................................................................................................190 58. Sortowanie przez wycinanie ..........................................................................................191 Kod .............................................................................................................................191 Uruchamianie kodu ....................................................................................................193 Dane wyjściowe .........................................................................................................193 Jak działa ten skrypt? ..................................................................................................193 Komentarz na temat wydajności ..........................................................................................194 10. TWORZENIE W JĘZYKU RUBY MODUŁU PLATFORMY METASPLOIT 3.1 .............................................. 197 Wprowadzenie do platformy Metasploit .............................................................................198 Instalowanie .........................................................................................................................198 Pisanie modułu .....................................................................................................................199 Budowanie exploita ..............................................................................................................201 Obserwowanie ataku w czasie rzeczywistym ......................................................................202 Omówienie modułu powłoki platformy Metasploit .............................................................205 Określanie długości danych użytkowych ..............................................................................207 POSŁOWIE .............................................................................................. 219 SKOROWIDZ .......................................................................................... 221 S p i s t r e ś c i 13 7 Serwery i wydobywanie danych MOCNĄ STRONĄ JĘZYKA RUBY JEST MOŻLIWOŚĆ UŻYCIA GO DO ZAUTOMA- TYZOWANIA INTERAKCJI Z ZASOBAMI SIECI WWW. TEN ROZDZIAŁ ZAWIERA KRÓTKIE OMÓWIENIE PROCESU PRZETWARZANIA STRON WWW I KOŃCZY SIĘ ZBIOREM DZIAłających po stronie klienta oraz serwera skryptów, które służą do bezpiecznego przekazywania i uruchamiania poleceń. Interakcja z siecią WWW i wydobywanie z niej informacji (czyli tak zwany data mining) są ważne z uwagi na bogactwo dostępnych w niej materiałów. Zamiast wydobywać złoto, użytkownicy szukają różnych sposo- bów na pobranie ważnych danych i przekształcenie ich na znaczące informacje. 42. Definicje define.rb Ten skrypt kieruje zapytanie do witryny http://www.dictionary.com/ i pobiera pierwszą definicję słowa wskazanego przez użytkownika. Podobnie jak w przy- padku innych programów komunikujących się z siecią WWW istnieje ryzyko, że skrypt przestanie działać, jeśli projektanci witryny wprowadzą w niej zmiany. Zadanie programu polega na wydobywaniu określonych danych. Użyłem witryny Dictionary.com tylko jako środka do zaprezentowania tego mechanizmu, jednak omawiany przykład to pomysłowe rozwiązanie. Kod require open-uri unless ARGV[0] puts Musisz podać definiowane słowo. puts Sposób użycia: ruby define.rb definiowane słowo exit end word = ARGV[0].strip url = http://dictionary.reference.com/browse/#{word} begin open(url) do |source| source.each_line do |x| if x =~ /No results found/ puts \nDefinicji nie znaleziono - sprawdź pisownię. exit end if x =~ /(1\.) \/td td (.*) \/td/ puts \n#{$1} #{$2} exit end end puts Niestety, nie można znaleźć definicji. end rescue = e puts Wystąpił błąd – spróbuj ponownie. puts e end Uruchamianie kodu Uruchom skrypt przez wpisanie następującej instrukcji: ruby define.rb definiowane_słowo Chciałem znaleźć definicję słowa Ruby. Niestety, pierwsze zwrócone obja- śnienie nie brzmiało najbardziej odjazdowy języka programowania. 144 R o z d z i ał 7 Dane wyjściowe Skrypt wyświetla definicję podanego słowa. Jeśli nie można jej znaleźć, program prosi użytkownika o sprawdzenie pisowni. Możliwe, że podany wyraz w ogóle nie istnieje. 1.a red variety of corundum, used as a gem. Jak działa ten skrypt? Ponownie wykorzystałem tu fantastyczną bibliotekę open-uri . Do komunikacji skryptu z siecią WWW można używać wielu przydatnych narzędzi tego typu. Ja lubię open-uri, ponieważ ukrywa więcej szczegółów procesu łączenia się z siecią niż inne biblioteki. Po dołączeniu biblioteki program sprawdza błędy. Mam nadzieję, że przyzwyczaiłeś się już do używanego bloku kodu. W pierwszej zmiennej (word) . Następnie skrypt zapisuje słowo, którego definicję użytkownik chce znaleźć program przypisuje do zmiennej url zapisany na stałe adres URL serwisu Dictio- . Budowa używanej nary.com z dołączonym wyrazem podanym jako argument witryny sprawia, że dołączenie słowa do adresu powoduje automatyczne zwró- cenie definicji. W dalszej części skryptu znajduje się instrukcja begin/rescue, potrzebna z uwagi na zmienną naturę żądań sieciowych. Odpowiedzi na żądania HTTP często zawierają komunikaty o błędach. Ich właściwa obsługa to klucz do prawidłowego działania tego skryptu. Po dodaniu siatki zabezpieczającej w postaci bloku begin/ (cid:180)rescue można wysłać do serwisu Dictionary.com prośbę o podanie definicji. Kiedy korzystasz z biblioteki open-uri, wystarczy, że wpiszesz instrukcję open() z adresem URL, a skrypt zwróci odpowiednią stronę WWW . Pobieranie stron za pomocą tej metody jest tak proste, że zawsze kiedy jej używam, na mojej twarzy gości uśmiech. Po metodzie open następuje blok, który przetwarza kod źródłowy zwrócony przez serwer sieciowy. Ponieważ chcemy pobrać specyficzny wiersz (definicję słowa), w następnym bloku skrypt dzieli kod źródłowy na wiersze. Jeśli serwis Dictionary.com nie znajdzie danego słowa, wyświetli komunikat No results found. Gdy skrypt w czasie analizowania kodu źródłowego wykryje podany wyraz, ale już nie jego definicję, wyświetli wskazówkę w postaci prośby o sprawdzenie pisowni . Jeżeli jednak definicja jest dostępna, słowa, a następnie zakończy działanie skrypt stara się wyodrębnić ją z kodu źródłowego. Do pobrania jej tekstu służy wyrażenie regularne. Ważną częścią użytego w skrypcie wyrażenia regularnego jest cyfra 1. Witryna Dictionary.com używa jej jako wskaźnika pierwszej definicji, którą program ma pobrać. Użycie w wyrażeniu regularnym nawiasów umożliwia skryptowi pogrupo- . wanie określonych fragmentów dowolnego wiersza, które pasują do wyrażenia Te grupy są zapisywane w zmiennych o nazwach od $1 do $n. Wiersz pod wyra- żeniem regularnym wyświetla definicję. Jeśli program nie znajdzie w kodzie źródłowym ani definicji, ani tekstu No results found, zwróci inny komunikat, który S e r we r y i w y d o b y w a ni e da n yc h 145 informuje użytkownika o tym, że nie można znaleźć wyjaśnienia słowa . Jeśli w czasie przetwarzania definicji pojawią się problemy, program uruchomi blok rescue i poinformuje, jaki błąd wystąpił. Modyfikowanie skryptu Jednym ze sposobów na zmodyfikowanie skryptu jest dodanie obsługi pośred- nika między użytkownikiem a żądaniem do serwera sieciowego. Jeśli korzystasz z takiego pośrednika, musisz zastosować to rozwiązanie. Jeżeli interesuje Cię ruch w sieci generowany przez skrypt w języku Ruby, pośrednik pomoże Ci uzyskać dodatkowe informacje. Aby dowiedzieć się, jak je uzyskać, zajrzyj do doku- mentacji biblioteki open-uri. Potrzebna składnia wygląda następująco: open(url, :proxy = http://127.0.0.1:8080 ). Zwykle nie korzystam z pośrednika przy przeglądaniu sieci WWW, jednak jeśli w trakcie tworzenia stron wykryję błędy, często pomocne jest przyjrzenie się ruchowi w sieci. Do diagnozowania problemów używam bezpłatnego sieciowego pośrednika Paros (http://www.parosproxy.org/). Narzędzie to należy zainstalować lokalnie na własnej maszynie, a następnie można obserwować zgłaszane żądania sieciowe i odbierane odpowiedzi. Dzięki wykorzystaniu przy programowaniu narzędzia Paros zaoszczędziłem sobie wielu godzin diagnozowania. Jestem bardzo przywią- zany do tego pośrednika, jednak istnieje też wiele innych podobnych programów, dlatego warto poszukać czegoś dla siebie. 43. Automatyczne wysyłanie SMS-ów sms.rb Ten skrypt wysyła wiadomość SMS pod podany numer telefonu komórkowego. Ostrzegam przed nadużywaniem tej funkcji, jednak musisz wypróbować ten pro- gram1. Skrypt ma automatyzować korzystanie z witryny, która służy do wysyłania wiadomości SMS. Zamiast pobierać statyczną zawartość strony, skrypt ten auto- matyzuje wypełnianie i przesyłanie formularza. Kod require win32ole ie = WIN32OLE.new( InternetExplorer.Application ) ie.navigate( http://toolbar.google.com/send/sms/index.php ) ie.visible = true sleep 1 until ie.readyState() == 4 ie.document.all[ mobile_user_id ].value = 5712013623 1 Serwis użyty w tym skrypcie zakończył działalność, jednak za pomocą tej samej techniki możesz przesyłać wiadomości w innych bramkach SMS — przyp. tłum. 146 R o z d z i ał 7 ie.document.all[ carrier ].value = TMOBILE ie.document.all[ subject ].value = ***Ruby rządzi*** ie.document.all.tags( textarea ).each do |i| i.value = Dzięki za dobrą robotę, Matz! end ie.document.all.send_button.click Uruchamianie kodu Aby uruchomić ten skrypt, wpisz następujące polecenie: ruby sms.rb Dane wyjściowe Ten skrypt nie generuje żadnych danych, jednak jeśli udanie zakończy działanie, telefon o podanym numerze powiadomi Cię o odebraniu wiadomości. W przy- kładzie użyłem fikcyjnych danych, jednak możesz je zmienić, aby wypróbować program. Jak działa ten skrypt? Jeśli korzystasz z komputera z systemem Windows i nigdy nie używałeś biblioteki win32ole, powinieneś poświęcić trochę czasu na jej opanowanie, ponieważ auto- matyzowanie wykonywania zadań w tym systemie jest ciekawe i daje dużo satysfak- cji. Możesz nie tylko manipulować przeglądarką Internet Explorer, co ilustruje ten skrypt, ale też dowolnym produktem z pakietu Microsoft Office i innymi aplikacjami systemu Windows. UWAGA Dostępnych jest też kilka bibliotek przeznaczonych do automatyzacji witryn. Narzę- dzia te są niezwykle przydatne do testów regresji i jakości aplikacji sieciowych. Jedną z popularnych bibliotek tego typu jest Watir. Szczegółowe informacje na jej temat znajdziesz na stronie http://wtr.rubyforge.org/. Skrypt tworzy nowy obiekt typu win32ole na podstawie argumentu w postaci . Uchwyt ten informuje bibliotekę win32ole, którą uchwytu przeglądarki IE aplikację ma kontrolować. Przy użyciu wbudowanej w przeglądarkę IE metody navigate skrypt przechodzi pod określony adres URL — http://toolbar.google.com/ send/sms/index.php . Następny wiersz ustawia atrybut okna przeglądarki. Jeśli nie chcesz widzieć, jak skrypt wykonuje swe zadania, możesz użyć w tym wierszu wartości false, a okno przeglądarki będzie działać w tle. Wtedy jego obecność będziesz mógł wykryć tylko na liście zadań. Ponieważ lubię widzieć działanie programu, ustawiłem wspomniany atrybut na true. Aplikacja Internet Explorer pojawi się i zniknie w krótkim czasie, dlatego bacznie przyglądaj się ekranowi. S e r we r y i w y d o b y w a ni e da n yc h 147 Następnie skrypt uruchamia pętlę, która warunkowo wczytuje stronę. Jak pewnie wiesz, strony witryn nie pojawiają się natychmiast. Aby skrypt nie prze- słał informacji przedwcześnie, należy „uśpić” program na sekundę, a następnie sprawdzić, czy kod readyState ma właściwą wartość (4) . Przedwczesne działania nigdy nie są korzystne, a w tym przypadku spowodują, że skrypt przestanie działać. Po zakończeniu wczytywania dokumentu przez przeglądarkę IE skrypt może wypełnić odpowiednie pola. Program wykrywa odpowiednie pola na podstawie nazw atrybutów. Jeśli zaj- rzysz do kodu źródłowego witryny, znajdziesz obiekty o nazwach mobile_user_id, carrier, subject i tak dalej. Te informacje służą do określenia, gdzie skrypt ma . Większość kodu HTML z omawianej zapisać poszczególne dane wejściowe witryny jest zgodna ze standardami, jednak z nieznanych przyczyn wartość atrybutu name obszaru tekstowego nie znajduje się w cudzysłowach. Oznacza to, że nie można użyć wcześniej zastosowanej metody, aby uzyskać dostęp do tego obszaru. Jednak ponieważ w kodzie źródłowym znajduje się tylko jeden obszar tekstowy, wystarczy go znaleźć i zapisać w nim odpowiednie dane. Nie jest to wymyślna technika, ale nieco różni się od zastosowanego wcześniej podejścia Po dodaniu informacji trzeba tylko wirtualnie kliknąć przycisk do wysyłania formularza. Programiści firmy Google prawidłowo nazywają przyciski, dlatego wystarczy pobrać odpowiednią nazwę i użyć jej w metodzie click . I to już wszystko — język Ruby jest fantastyczny! . 44. Wydobywanie odnośników linkScrape.rb Wydobywanie odnośników ze stron WWW ma wiele zastosowań. Można to zro- bić — podobnie jak w przypadku innych zadań — na wiele sposobów. W roz- dziale 2. zobaczyłeś skrypt do sprawdzania poprawności odnośników w witrynie. Z uwagi na konieczność walidacji odsyłaczy program ten wymagał większej liczby wierszy kodu niż skrypt, który musi tylko wydobyć wszystkie odnośniki. Nie zamierzam tworzyć tu robota sieciowego, jednak opiszę kilka jego podstawowych komponentów. Pierwszy z nich to mechanizm wydobywania odnośników. Kod require mechanize unless ARGV[0] puts Musisz podać adres witryny. puts Sposób użycia: ruby linkScrape.rb przetwarzany adres URL exit end agent = WWW::Mechanize.new agent.set_proxy( localhost ,8080) 148 R o z d z i ał 7 begin page = agent.get(ARGV[0].strip) page.links.each do |l| if l.href.split( )[0] == / puts #{ARGV[0]}#{l.href} else puts l.href end end rescue = e puts Wystąpił błąd. puts e retry end Uruchamianie kodu W celu uruchomienia skryptu wpisz następujące polecenie: ruby linkScrape.rb http://przetwarzany_adres_url.com/ Dane wyjściowe Skrypt wyświetla listę wszystkich odnośników znalezionych na stronie o poda- nym adresie URL. Ja wydobyłem odsyłacze ze strony http://www.nostarch.com/ main_menu.htm. index.htm catalog.htm wheretobuy.htm about.htm jobs.htm media.htm http://www.nostarch.com/blog/ http://ww6.aitsafe.com/cf/ review.cfm?userid=8948354 abs_bsd2.htm openbsd.htm freebsdserver.htm debian.htm howlinuxworks.htm appliance.htm lcbk2.htm lme.htm nongeeks.htm lps.htm interactive.htm gimp.htm inkscape.htm js2.htm eblender.htm oophp.htm wpdr.htm webbots.htm google.htm growingsoftware.htm rootkits.htm hacking2.htm voip.htm firewalls.htm securityvisualization.htm silence.htm stcb4.htm scsi2.htm cisco.htm cablemodem.htm S e r we r y i w y d o b y w a ni e da n yc h 149 mug.htm ubuntu_3.htm imap.htm pf.htm postfix.htm webmin.htm endingspam.htm cluster.htm nagios.htm nagios_2e.htm pgp.htm packet.htm tcpip.htm assembly.htm debugging.htm qt4.htm vb2005.htm vsdotnet.htm codecraft.htm hownotc.htm idapro.htm mugperl.htm gnome.htm plg.htm ruby.htm vbexpress.htm wcj.htm wcps.htm wcphp.htm wcruby.htm wcss.htm greatcode.htm greatcode2.htm wpc.htm xbox.htm insidemachine.htm nero7.htm wireless.htm creative.htm ebaypg.htm ebapsg.htm geekgoddess.htm wikipedia.htm indtb.htm sayno.htm networkknowhow.htm sharing.htm apple2.htm newmac.htm cult_mac.htm ipod.htm art_of_raw.htm firstlego.htm flego.htm legotrains.htm sato.htm nxt.htm nxtonekit.htm zoo.htm legobuilder.htm nxtig.htm vlego.htm mg_databases.htm mg_statistics.htm eli.htm index.htm Jak działa ten skrypt? Porównaj kod tego programu ze skryptem 10. — „Weryfikator odnośników do stron w sieci”. Widać dużą różnicę, prawda? Zawsze warto przemyśleć problem i starać się rozwiązać go w najprostszy możliwy sposób. Niektóre z najbardziej eleganc- kich rozwiązań w ogóle nie są skomplikowane. Przedstawiony skrypt jedynie wydobywa odnośniki ze strony bez sprawdzania ich poprawności i wykonywania innych zadań. Biblioteka mechanize to następne narzędzie często używane do . Skrypt po standardowej instrukcji do obsługi błędów interakcji z internetem tworzy nowy obiekt agent typu mechanize . Aby dostosować ten obiekt do potrzeb programisty, program ustawia atrybut pośrednika na lokalny program Paros, 150 R o z d z i ał 7 którego używam. Jeśli nie chcesz korzystać z narzędzia tego rodzaju, usuń ten wiersz kodu. Następnie skrypt używa metody get obiektu agent do pobrania zawartości . Ciekawą cechą biblioteki mechanize jest automatyczne kategoryzowanie strony pobranych informacji. Wyszukiwanie specyficznych elementów strony za pomocą tej biblioteki znacznie ułatwia życie programistom języka Ruby. W zmiennej page znajduje się tablica links. Dzięki bibliotece mechanize odno- śniki są już przetworzone. Podobnie jak przy korzystaniu z każdej innej tablicy można użyć metody each do przejścia po wszystkich elementach tablicy links. Pamiętaj, że elementy link zawierają nie tylko adres URL każdego odnośnika, ale też inne atrybuty zdefiniowane w kodzie źródłowym. Tu potrzebny jest tylko atrybut href, aby skrypt mógł wyświetlić go w konsoli . Jeśli chcesz wydobyć informacje z dużej witryny, powinieneś zapisać dane w pliku, ale wybór podejścia należy do Ciebie. Po wyświetleniu odnośników skrypt kończy działanie. Modyfikowanie skryptu Istnieje kilka innych ciekawych narzędzi sieciowych, które przetwarzają strony w podobny sposób. Są to na przykład Hpricot (http://wiki.github.com/why/hpricot/) i Rubyful Soup (http://www.crummy.com/software/RubyfulSoup/). Wypróbuj je, aby znaleźć narzędzie dostosowane do własnych potrzeb. 45. Wydobywanie rysunków imageScrape.rb Ten skrypt wydobywa każdy rysunek ze strony o adresie URL podanym przez użytkownika. Pobierane pliki graficzne obejmują obrazki znajdujące się na ser- werze danej strony, a także rysunki dołączane z innych serwerów sieciowych. Kod require open-uri require pathname unless ARGV[0] puts Musisz podać adres URL, aby wydobyć rysunki. puts Sposób użycia: ruby imageScrape.rb przetwarzany adres URL exit end url = ARGV[0].strip begin open(url, User-Agent = Mozilla/4.0 (compatible; MSIE 5.5; Windows (cid:180)98) ) do |source| source.each_line do |x| if x =~ / img src= (.+.[jpeg|gif]) \s+/ name = $1.split( ).first S e r we r y i w y d o b y w a ni e da n yc h 151 name = url + name if Pathname.new(name).absolute? copy = name.split( / ).last File.open(copy, wb ) do |f| f.write(open(name).read) end end end end rescue = e puts Wystąpił błąd – spróbuj ponownie. puts e Uruchamianie kodu Uruchom skrypt przez wpisanie poniższej instrukcji: ruby imageScrape.rb http://przetwarzany_adres_url.com/ Dane wyjściowe Ten skrypt pobiera wszystkie rysunki znalezione na stronie o podanym adresie URL. Ja włączyłem przetwarzanie strony http://www.ruby-lang.org/ i pobrałem dwa obrazki: logo.gif (logo języka Ruby) i download.gif (rysunek-odnośnik, który pozwala pobrać język Ruby). Jak działa ten skrypt? Pierwszy etap wydobywania rysunków polega na pobraniu całej strony. Przy użyciu metody open biblioteki open-uri można wygodnie zapisać kod źródłowy strony w zmiennej source . Jak sobie pewnie przypominasz z czasów pisania kodu w języku HTML, rysunki w dokumentach sieciowych są zagnieżdżane za pomocą znaczników img src=plik.jpg . W tym skrypcie użyłem wyrażenia regu- larnego, które analizuje każdy wiersz kodu źródłowego i wyszukuje podobne zna- czniki . Dzięki danym zwróconym przez wyrażenie regularne program może określić lokalizację znalezionych obrazków. Po ustaleniu lokalizacji rysunku trzeba określić, czy obrazek pochodzi z ze- wnętrznej, czy z przetwarzanej witryny. W kodzie HTML rysunki z lokalnego serwera sieciowego są zwykle poprzedzone ukośnikiem (ich adres ma postać ścieżki bezwzględnej). W kodzie ścieżkę do obrazka zawiera zmienna name. Jeśli jest to ścieżka bezwzględna, skrypt dołącza ją do adresu URL strony, aby utworzyć kompletny adres rysunku. Sprawdzanie rodzaju ścieżki odbywa się przy użyciu metody absolute? i ma miejsce przy tworzeniu nowego obiektu typu Pathname . Choć ścieżka do rysunku może się zmienić, jego nazwa jest
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Ruby. Praktyczne skrypty, które rozwiążą trudne problemy
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: