Ruby kompendium

Click here to load reader

  • date post

    27-Mar-2016
  • Category

    Documents

  • view

    238
  • download

    8

Embed Size (px)

description

Ruby kompendium

Transcript of Ruby kompendium

  • E N C Y K L O P E D I E Z O N E R P R E S S

    RUBYRUBY

    H a l F u l t o nH a l F u l t o n

    kompendium znalost pro zatenky i profesionlykompendium znalost pro zatenky i profesionly

    Foto: Ji Heller

  • Tato kniha, mimo jin, skvle vysvtluje metaprogramovn, jeden z nejzajmavjch aspekt Ruby. Prvnm vydnm tto knihy bylo inspirovno mnoho ranch mylenek k Rails. Dky tto knize se do-stvte na horskou drhu mezi Jak to mu pout a To je tak skvl!. Jakmile na tuto drhu jed-nou nastoupte, nen u dn cesty zpt.

    David Heinemeier Hansson,Tvrce Ruby on Rails,Spolenk 37signals

    Druh vydn tto knihy je vzruujc udlost pro vechny programtory v Ruby a pro milovnky skvl technick literatury obecn. Hal Fulton pin poutav a jasn styl s drazem na dokonal a zkostliv pesn vysvtlen Ruby. Zeteln ctte ptomnost uitele, kter m obrovsk mnostv znalost, a jen vm chce opravdu pomoci, abyste je mli tak.

    David Alan Black, Autor Ruby for Rails

    Je to vynikajc zdroj informac o tom, jak Ruby funguje. I j, jako lovk, kter s Ruby pracuje po nkolik let, jsem zde nael plno novch trik a technik. Tuto knihu je mon nejenom st od zatku do konce, ale tak ji pouvat jako referenn pruku, ke kter mete kdykoliv shnout a nauit se nco novho.

    Chet Hendrickson, Prkopnk agilnho softwaru

    asto pouvm prvn vydn tto knihy o Ruby, abych zjistil podrobnosti o tomto programovacm jazyku, protoe pokrv mnoho tmat, kter nemohu najt nikde jinde. Nov vydn je jet komplex-nj a bude jet hodnotnj.

    Ron Jeffries, Autor a enk

    Ruby je bjen jazyk, ale nkdy prost potebujete jen nco udlat. Halova kniha vm poskytne een a pou vs, pro je tohle een sprvn Ruby.

    Martin Fowler, Chief Scientist, ThoughtWorks,Autor Patterns of Enterprise Application Architecture

  • Ruby kompendium znalost pro zatenky i profesionly

    Hal Fulton

  • THE RUBY WAY, SECOND EDITIONHal Fulton

    Authorized translation from English language edition, entitled RUBY WAY, SECOND EDITION, THE: SOLUTION AND TECHNIQUES IN RUBY PROGRAMMING, 2nd Edition, 0672328844 by FULTON, HAL, published by Pearson Education, Inc, publishing as Addison Wesley Professional, Copyright 2007. All rights reserved. No part of this book may be repro-duced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, INC. CZECH language edition by ZONER SOFTWARE S.R.O., Copyright 2009.

    Autorizovan peklad anglickho vydn nazvanho RUBY WAY, SECOND EDITION, THE: SOLUTION AND TECHNI-QUES IN RUBY PROGRAMMING, druh vydn, 0672328844, autor FULTON, HAL, vydal Pearson Education, Inc, ve vydavatelstv Addison Wesley Professional, Copyright 2007. Vechna prva vyhrazena. dn st tto publikace nesm bt reprodukovna nebo pedvna dnou formou nebo zpsobem, elektronicky ani mechanicky, vetn fotokopi, naten ani dnmi jinmi systmy pro ukldn bez vslovnho svolen Pearson Education, INC. esk vydn ZONER SOFTWARE S.R.O., Copyright 2009.

    Ruby kompendium znalost pro zatenky i profesionlyAutor: Hal Fulton

    Copyright ZONER software, s.r.o. Vydn prvn v roce 2009. Vechna prva vyhrazena.

    Zoner PressKatalogov slo: ZR724

    ZONER software, s.r.o.Nov sady 18, 602 00 Brno

    Peklad: Ji KoutnOdpovdn redaktor: Miroslav KueraOdborn korektura: Miroslav Kuera a Dalibor rmekfredaktor: Ing. Pavel KristinDTP: Miroslav Kuera

    Zdrojov soubory ke knize: http://www.zonerpress.cz/download/ruby-kompendium.zip

    Informace, kter jsou v tto knize zveejnny, mohou byt chrnny jako patent. Jmna produkt byla uvedena bez zruky jejich volnho pouit. Pi tvorb text a vyobrazen bylo sice postupovno s maximln p, ale pesto nelze zcela vylouit monost vskytu chyb. Vydavatel a autoi nepebraj prvn odpovdnost ani dnou jinou zruku za pouit chybnch daj a z toho vyplvajcch dsledk. Vechna prva vyhrazena. dn st tto publikace nesm bt reprodukovna ani dis-tribuovna dnm zpsobem ani prostedkem, ani reprodukovna v databzi i na jinm zznamovm prostedku i v jinm systmu bez vslovnho svolen vydavatele, s vjimkou zveejnn krtkch st textu pro poteby recenz.

    Veker dotazy tkajc se distribuce smujte na:

    Zoner Press ZONER software, s.r.o. Nov sady 18, 602 00 Brno

    tel.: 532 190 883, fax: 543 257 245 e-mail: knihy@zoner.cz http://www.zonerpress.cz

    ISBN 978-80-7413-018-2

  • Mm rodim, bez kterch bych tu nebyl

  • 6Obsah Pedmluva 23

    Pedmluva k druhmu vydn 23

    Pedmluva k prvnmu vydn 23

    Podkovn 25

    Podkovn pro druh vydn 25

    Podkovn pro prvn vydn 26

    O autorovi 27

    vod 28

    O druhm vydn 28

    Jak pracovat s touto knihou 31

    Zdrojov kdy ke staen 32

    Poznmka redakce k eskmu vydn 33

    Sdlte nm svj nzor 33

    Co je "cesta Ruby"? 34

    Kapitola 1 Ruby ve zkratce 39

    1.1 vod do objektov orientace 40

    1.1.1 Co je objekt? 40

    1.1.2 Ddinost 41

    1.1.3 Polymorfismus 43

    1.1.4 Jet nkolik pojm 44

    1.2 Zkladn syntaxe a smantika Ruby 45

    1.2.1 Klov slova a identifiktory 46

    1.2.2 Komente a vestavn dokumentace 46

    1.2.3 Konstanty, promnn a typy 47

    1.2.4 Opertory a priorita 49

    1.2.5 Ukzkov program 50

    1.2.6 Cykly a vtven 53

    1.2.7 Vjimky 57

    1.3 OOP v Ruby 59

    1.3.1 Objekty 60

    1.3.2 Zabudovan tdy 60

    1.3.3 Moduly a mixiny 62

    1.3.4 Vytven td 62

  • 7 1.3.5 Metody a atributy 67

    1.4 Dynamick aspekty Ruby 68

    1.4.1 Programovn v dob bhu programu 69

    1.4.2 Reflexe 70

    1.4.3 Chybjc metody 72

    1.4.4 Svoz odpadk (garbage collection) 72

    1.5 Trnink intuice: co si zapamatovat 73

    1.5.1 Zleitosti syntaxe 73

    1.5.2 Perspektiva pi programovn 75

    1.5.3 Pkaz case v Ruby 78

    1.5.4 Rubyismy a idiomy 81

    1.5.5 Vrazy a dal rozmanit zleitosti 86

    1.6 Hantrka Ruby a slang 88

    1.7 Zvr 91

    Kapitola 2 Prce s etzci 93

    2.1 Reprezentace bnch etzc 94

    2.2 Reprezentace etzc s alternativn notac 94

    2.3 Vcedkov etzce (here-documents) 95

    2.4 Zjitn dlky etzce 97

    2.5 Zpracovn etzce po dcch 97

    2.6 Zpracovn etzce po bajtech 97

    2.7 Provdn specializovanho porovnvn etzc 98

    2.8 Rozdlen etzce na znaky 100

    2.9 Formtovn etzce 101

    2.10 etzce jako IO objekty 102

    2.11 Mal a velk psmena 102

    2.12 Zpstupovn a piazovn podetzc 103

    2.13 Nahrazovn v etzcch 105

    2.14 Prohledvn etzce 106

    2.15 Konverze mezi znaky a ASCII kdy 107

    2.16 Implicitn a explicitn konverze 108

    2.17 Pipojen poloky do etzce 110

    2.18 Odstrann pebytench znak pro nov dek a dalch znak 110

    2.19 Odstrann przdnch znak z etzce 111

    2.20 Opakovn etzc 112

  • 8 2.21 Vkldn vraz do etzc 112

    2.22 Odloen vyhodnocen pi vkldn vrazu 113

    2.23 Analza dat oddlench rkou 113

    2.24 Konverze etzc na sla (dekadick a jin) 114

    2.25 Kdovn a dekdovn textu rot13 116

    2.26 ifrovn etzc 117

    2.27 Komprimace etzc 117

    2.28 Potn znak v etzci 118

    2.29 Obrcen etzce 119

    2.30 Odstraovn duplicitnch znak 119

    2.31 Odstraovn znak 119

    2.32 Tisk specilnch znak 120

    2.33 Generovn po sob jdoucch etzc 120

    2.34 Vpoet 32bitovho CRC 121

    2.35 Vpoet hae etzce pomoc MD5 121

    2.36 Vpoet Levenshteinovy vzdlenosti mezi dvma etzci 122

    2.37 Kdovn a dekdovn etzc base64 124

    2.38 Kdovn a dekdovn etzce (uuencode/uudecode) 125

    2.39 Konverze znak Tab na mezery a naopak 125

    2.40 Zalomen dk textu 126

    2.41 Zvr 127

    Kapitola 3 Prce s regulrnmi vrazy 129

    3.1 Syntaxe regulrnch vraz 129

    3.2 Kompilovn regulrnch vraz 131

    3.3 Oeten specilnch znak 132

    3.4 Pouvn kotev (anchors) 133

    3.5 Pouvn kvantifiktor 134

    3.6 Pozitivn a negativn vyhlen 136

    3.7 Pstup ke zptnm referencm 137

    3.8 Pouvn td znak 140

    3.9 Rozen regulrn vrazy 141

    3.10 Zachytvn znaku pro nov dek pomoc teky 142

    3.11 Pouit modifiktoru na st regulrnho vrazu 143

    3.12 Pouit vloench podvraz 143

    3.13 Ruby a Oniguruma 144

  • 9 3.13.1 Testovn ptomnosti Onigurumy 144

    3.13.2 Pidn Onigurumy 145

    3.13.3 Nkolik novch funkcionalit enginu Oniguruma 146

    3.13.4 Pozitivn a negativn zptn vyhlen 146

    3.13.5 Vce o kvantifiktorech 147

    3.13.6 Pojmenovan vsledky porovnn 148

    3.13.7 Rekurze v regulrnch vrazech 149

    3.14 Nkolik ukzkovch regulrnch vraz 150

    3.14.1 Porovnn IP adresy 150

    3.14.2 Porovnn pru atribut=hodnota 151

    3.14.3 Porovnn mskch slic 152

    3.14.4 Porovnn selnch konstant 153

    3.14.5 Porovnn etzce datum/as 153

    3.14.6 Detekce duplicitnch slov v textu 154

    3.14.7 Porovnn slov psanch velkmi psmeny 154

    3.14.8 Porovnn sel verz 155

    3.14.9 Nkolik dalch vzor 155

    3.15 Zvr 156

    Kapitola 4 Internacionalizace v Ruby 157

    4.1 Pozad a terminologie 158

    4.2 Kdovn ve svt po e ASCII 161

    4.2.1 Knihovna jcode a $KCODE 162

    4.2.2 Bn operace s etzci a regulrnmi vrazy 163

    4.2.3 Detekce kdovn znak 167

    4.2.4 Normalizace etzc Unicode 167

    4.2.5 Problmy s azenm etzc 169

    4.2.6 Konverze mezi kdovnmi 172

    4.3 Pouvn katalog zprv 174

    4.3.1 Pozad a terminologie 175

    4.3.2 Zanme s katalogy zprv 175

    4.3.3 Lokalizace jednoduch aplikace 176

    4.3.4 Dal poznmky 180

    4.4 Zvr 181

  • 10

    Kapitola 5 Vykonvn selnch vpot 183

    5.1 Reprezentace sel v Ruby 183

    5.2 Zkladn operace s sly 184

    5.3 Zaokrouhlovn