Chyby v knize
Školení, která pořádám
Už je to čtvrt roku, co vyšla moje kniha, a je tedy na čase zveřejnit seznam chyb. Knihu jsem před vydáním velmi pečlivě kontroloval, ale kamarádi mi říkali: „Nepřeháněj to, stejně po vydání objevíš chybu na první stránce, na kterou se podíváš.“ To se naštěstí nepotvrdilo, stejně jsem ale časem na pár chyb přišel, na některé další mě upozornili čtenáři. Syntaktických chyb by měla být kniha prostá, ty jsem kontroloval automaticky, takže zbývají logické chyby, které se hledají nejhůř.
Zde je tedy seznam chyb v jednotlivých tipech:
- 263 Za
count($array)
má být - 1
- 302 Nemá být
$this->link =
- 472 Místo
GLOB_DIR
má být GLOB_ONLYDIR
- 515 Proměnná
$structure
nemá být předaná
- 645 Na řádku
($day % 7 == 1 && $day != 1)
nemá být != 1
- 662 Před
elseif ($hours >= 2)
má být ještě elseif ($days == 1) { return "včera"; }
- 676 Místo
kontanty/
má být kontakty/
- 682 Místo
eregI("")
má být preg_match("()i")
- 820 Používá se neexistující a špatně pojmenovaná proměnná
$zprava
- 832 Jde o duplicitu tipu 498
- 939 Za „Pokud je kešování povolené, je možné“ chybí „ho“
- 990 Za „Pro každou verzi je“ chybí „k“
Našli jste v knize také nějakou chybu? Já i ostatní čtenáři budeme vděční, když mě na ni upozorníte např. formou komentáře u tohoto článku.
Diskuse
takze chyba je i v nazvu... 1000 tipu a triku :)
Tomáš Pavlacký:
tak daleko jsem ještě nestihl dojít :-)
Ja by som ani tak netvrdil, ze ide o duplicitu tipov. Jeden ukazuje jeden sposob osetrenia mena, dalsi ukazuje druhy sposob. Rovnake je len to, ze vychadzaju z rovnakeho predpokladu, ze v poli $_FILES je len nazov suboru, nie cesta. Naviac tip 832 upozornuje este aj na to, ze tento udaj ide podvrhnut.
A plánuješ vydat třeba 1001 druhé vydání, až se vyprodají vytištěné knihy. Případně než se vyprodají, bude se vkládat do knihy vložený papír s popisem chyb?
Vkládat papír s popisem chyb je vzhledem k jejich počtu a závažnosti myslím zbytečné. Pokud se někdy bude chystat druhé vydání, tak se na možnost opravy zeptám u vydavatele.
Franta:
Dobrý den,
drobnosti a překlepy v knize:
676 - překlep v poznámce - "/kontaKty/"
682 - v returnu použití Regex (eregI) místo PCRE (dle 339 a dokumentace zastaralé)
711 - ajax je sice ze svého názvu asynchronní, ale lze použít i synchronní variantu (parametr v XMLHttpRequest.open), a bylo by dobré to zmínit
798 - kromě GET a POST by mělo být zmíněno i např. COOKIE
939 - překlep - "Pokud je kešování povolené, je možné HO"
990 - překlep - "Pro každou verzi je K dispozici"
Díky za report, většinu jsem toho zaznamenal.
711 Synchronním AJAXovým požadavkům by bylo vhodné spíš věnovat samostatný tip, protože je lepší se jim zcela vyhnout.
798 GET a POST je uvedeno pouze jako ukázka, není podle mě nutné na tomto místě vyjmenovávat všechno, s čím je potřeba pracovat obezřetně.
939 Jde o chybu vzniklou při jazykové korektuře, sám jsem použil správnou formulaci :-).
Franta:
Ad ajax:
Kdyby prohlížeče používaly thready i na JavaScript, tak by to taky bylo o něčem jinym...
Ostatně, ten samej problém mají makra v MS Office atd. Skoro jako v sw pralese.
Otázka je, co by při synchronním požadavku měl prohlížeč vlastně dělat – nevidím moc jiných možností, než zamrznout stránku.
Franta:
Především by se nemělo zaseknout/kousnout GUI. Což se děje jak u prohlížečů, tak u Office. Thread JS/VB neboli obecně skriptu nebo API by mělo bejt zcela oddělený od zbytku aplikace.
„Nepřeháněj to, stejně po vydání objevíš chybu na první stránce, na kterou se podíváš.“ To se naštěstí >>nepotrvdilo<<<...
LOL
Spidy:
Nevím, jestli je to opravdu chyba, nebo mi jenom něco uniklo, ale nemělo by v příkladu 302 (Jak na deserializaci objektů) být místo "$this->link = $this->connect();" jenom "$this->connect();"?
Jirka:
342 - Nemá být v prvním regulárním výrazu jen jedno zpětné lomítko? Takhle to neošetřuje závorku, ale zakazuje výskyt zpětného lomítka, nebo se pletu a je v tom něco víc?
Jakub Vrána :
Příklad je vždycky lepší si nejprve vyzkoušet. Jedno zpětné lomítko požere PHP řetězec, takže preg_match dostane [^\(].
Stanislav Nechutny:
U tipu cislo 515 v zdrojovem kodu na radku 5 je konstruktoru tridy NotORM predavana promenna $structure, ktera neni pred tim definovana.
Jakub Vrána :
Díky za upozornění, doplnil jsem to do seznamu a opravil ve zdrojácích.
omar:
Toz priste si to po sobe vic zkontroluj kemo!>]
Buriánek Ota:
nějak mi nefungují příklady, protože nemaká .htaccess
zkoušel jsem změnit konfiguraci appache - Allow Override z none na All - ale nic
Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0
Fatal error: Unknown: Failed opening required '../connect.inc.php' (include_path='.;C:\php\pear') in Unknown on line 0
poradíte někdo!?
díky
Mirek:
263b.php:
místo
$randKey = $keys[mt_rand(0, count($array))];
má být
$randKey = $keys[mt_rand(0, count($array)-1)];
Diskuse je zrušena z důvodu spamu.