bbPress silně nedoporučuje deset z deseti psychologů
Upozornění: tento článek je subjektivní názor, nikoliv nutně „objektivní“ fakta.
Okénko: bbPress, open-source PHP aplikace pro diskusní fóra. Vytvořena v dílnách společnosti Automattic, společnosti, která se proslavila oblíbeným blogovacím systémem WordPress.
Víte, proč práce v šablonách programu bbPress trvá tak dlouho? Protože celou tu dobu vlastně v duchu píšete článek Proč je bbPress na hovno.
Přejdu k věci, přeskočím malicherné, přesto iritující pitomosti, jako například rádoby-avšak-kontra-užitečný coding standard: mezery mezi závorkami a jejich obsahem (PHP).
Tím největším problém je toto. Nevím jestli bbPress dělají stejní
lidé jako WordPress, přinejmenším to dělá stejná firma a kód má stejný
(doktorský) rukopis. To se obecně ví, a člověk potom nemá od aplikace
přílišná očekávání. Když ale firma vysloví něco jako (nechce se mi
hledat originál) „Kdybychom dělali WordPress znovu, byl by v mnoha ohledech
jako bbPress“… může si člověk své mínění o programu o něco
zkladnit. Naivně a chybně. No dobře, bbPress není tak pomalý jako
WordPress, ale v mnoha ohledech je to stále stejný shit. Když se podíváte
zblízka, najdete na bbPressu… hádejte co… pozůstatky architektury
archaického chrámu chatrče jménem b2/cafelog.
To jsem k věci moc nepřešel, zkusím to ještě jednou: přejdu k věci teď! Architektura nás nezajímá, když přizpůsobujeme program lehounce k obrazu svému, povětšinou se není třeba vymanit z šablony. Teda, pochopitelně, v ideálním případě. Jak opět obecně známo, WordPress příliš nerespektuje dělení programu na šablonu a jádro (pro lepší pochopitelnost: jádro se vyznačuje tím, že neobsahuje značkovací kód). Jablko nepadlo daleko od stromu. Chvílemi by člověk řekl, že ještě více zdegenerovalo.
Co dál, co hůř, bbPress od svého prvorozeného bratra odkoukal ještě jednu vlastnost. Je to jedna z nejnesnesitelnějších charakterových vad. Naprosto kokotské používání globálních proměnných. Příklad. Řekněme, že chceme vypsat 10 nejčerstvějších diskusních vláken. Jak by to udělal relativně zdravý člověk? Bez velkého přemýšlení, co nejprostěji, ale zase ne idiotsky?
<?php
$threads = get_threads('orderby=freshness&order=desc&exclude=sticky&count=10');
foreach ($threads as $t) { ?>
<tr>
<td><a href="<?php echo $t->url ?>#r<?php echo $t->last_reply->id ?>"><?php echo $t->name ?></a></td>
<td><?php echo $t->replies_count ?></td>
<td><?php echo $t->last_reply->author_name ?><br /><?php echo date('j.n. Y - G:i', $t->last_reply->dt) ?></td>
</tr>
<?php
}
Jak to udělají… ti… ti… oni? Nějak takto:
<?php foreach ( $topics as $topic ) : ?>
<tr>
<td><a href="<?php topic_link(); ?>"><?php topic_title(); ?></a></td>
<td><?php topic_posts(); ?></td>
<td><?php bb_topic_last_poster(); ?></td>
<td><a href="<?php topic_last_post_link(); ?>"><?php topic_time(); ?></a></td>
</tr>
<?php endforeach;
}
Oni opravdu používají podmínky a cykly s dvojtečkovou syntaxí… jak já to nesnáším!
Možná se ptáte: a kde je načítání topiců? Kde se naplní
proměnná $topics
? No, to ví jen pár zasvěcených. (Hledá se
to docela těžko.) On to jednoduše bbPress načte za vás, on totiž ví, že
toto je úvodní stránka a tady to bude třeba. Když to budete potřebovat
načíst jinde? Když to budete chtít načíst jinak? Zabere vám to chvíli.
Nakonec se dopracujete až k SQL dotazu. Zrovna v tomto případě není
žádná mezivrstva.
Možná se ptáte: proč má jedna ta funkce prefix
bb_
? Možná jste si ani nevšimli. Proč? Na to není
odpověď. Některé funkce mají prefix bb_, protože by jménem
kolidovali se stejnými funkcemi WordPressu (kdybyste chtěli dát bratry
dohromady). Někdy není důvod.
Možná se ptáte: a co když budu chtít hodnoty returnovat? Během
chvíle, po prolítnutí kódu jadrných souborů zjistíte, že všechny ty
funkce mají souputníky prefixované ještě řetězcem get_
.
A během o něco delší chvíle praxe zjistíte, že všechny
vlastně ne. Proč tohle všechno? – K čemu funkce, které vypisují
hodnotu? Mám teorii. Je to pro uživatele. Kdyby náhodou zapomněli na
kouzelné slovíčko echo
.
Není to celé tak trochu na blití? Chvíle ticha… Tak zhruba tímto se teď živím. Lidi tomu všemu většinou nerozumí, tak si přivolají odborníka, který ví, jak jednat s bláznem. I když – nevím jestli blázen je to správné přirovnání. Podle některých je totiž mysl bláznů silně logická. Jen je třeba odhalit princip… rozluskout a porozumět. Přiznám se, logiku v souborech WordPressu hledám marně už několik let.
Komentáře (9)
k formuláři
RSS kanál komentářů
26.7. 2008 — 6:55
Až tak úplně do vnitřností nevidím, ale pro odkaz href=„http://buzzmag.cz/komunita/“ rel=„nofollow“>http://buzzmag.cz/komunita/ jsme nahodili bbPress. Proč? Snadní integrace s WordPressem. Trochu nás pozlobil hosting, že odesílal maily s heslem až po 48 hodinách, do šablon jsme zatím až tak moc nešťourali, ale… Co je na wp i bb geniální je, že nemusíš být porgramátor a postavíš s tím s pluginama HODNĚ. Dokud nepotřebuješ něco extra, potom potřebuješ toho doborníka… btw nemohli bychom se nějak dohodnout na wp pluginu? ;)
26.7. 2008 — 8:31
2Pavel Neuman: tvůj názor by se měl tesat do kamene!
Věta „o je na wp i bb geniální je, že nemusíš být porgramátor“ je zcela geniální a odpovídá přesně na otázku v článku „proč je to tak udělané?“.
Je to tak opravdu proto, že neprogramátoři prostě takto přemýšlejí. Stačí ukázat neprogramátorovi ten objektový kód a naprosto to nepochopí. Nějaké foreach, nějaké šipčičky, co to je? Ale když se mu ukáže to druhé, tak je mu to zcela jasné! Dokáže to upravit i sám. Kde chce link, tam vrzne topic_link(); a nezkoumá to. Nějaké echo by ho jen rušilo.
Programátor je hloubavý, hned hledá, kde se naplní $topics. Neprogramátorovi je to jedno. Kouzlo, ono to tam je! Nenapadne ho, že je milion případů, kdy to bude na obtíž..
Neprogramátor nechápe tyhle produkty jako zprasené, on je chápe jako geniální. Všechno se děje samo a pokud to chce přiohnout, stačí zaprasit tzv. „šablony“ a je to.
26.7. 2008 — 8:47
Je krásné, že WP je udělaný tak, aby ho mohl používat neprogramátor. Bohužel, je zároveň dělaný tak, že ho programátor použít nemůže. Brutálněji řečeno: S aplikacemi tzv. „pro blbý“ mohou pracovat jen blbí.
26.7. 2008 — 15:11
[1] Pavel Neuman: Když už jsme u toho, jak jste tam řešili lokalizaci bbPressu?
Ad plugin: záleží na podrobnostech, kahi@kahi.cz, díky (příští pracovní týden tady nejsem)
[2] Martin: Jo, rozumím a souhlasím. Ovšem user-friendly šablonovací kód nebrání v existenci odpovídající pg-friendly variantě. Tzn. oba způsoby by mohly fungovat zároveň. A když už padne rozhodnutí, že žádný pg-friendly způsob nebude, je tak těžké stanovit pro funkce nějou pojmenovávací konvenci? (A taky si myslím, že když už se funkce jmenuje
topic_link
, měla by zvracet link a ne url. :-))27.7. 2008 — 3:00
(offtopic vzdech)
Tak nic…
já si myslel, že si zase přečtu něco, k čemu bych mohl něco říct… ach jak matoucí bývají občas názvy článků :)
27.7. 2008 — 4:46
[5] Peyraq: Prosímtě, ty bys měl číst odbornou literaturu a ne bláboly člověka, který ! I sledování House, M.D. je poučnější… Vlastně nechápu proč se sem lidi vracejí. Suckuje to tu čím dál víc… (no offence!)
27.7. 2008 — 11:54
Bože, tak to příteli nepoužívej, když ti to vadí. vezmi na to drupal / punbb nebo cokoli jiného.
Největší výhodu WP a BB, tj. použitelnost a modifikovatelnost pro NEprogramátory, vše, proč jsou oba systémy tak oblíbené, shazuješ.
Nejsou špatné systémy, nejsou špatní lidé… Špatný může být pouze úhel pohledu na věc (v tomto případě ten tvůj)…
27.7. 2008 — 23:57
Ahoj, jako neprogramátor bych rád potvrdil vaši domněnku, že s WP mohu i já udělat hodně. Naopak, když otevřu šablony Gallery2, nejsem schopen udělat nic.
5.8. 2008 — 0:07
Docela mě překvapuje obhajoba WordPressu a bbPresu ze strany uživatelů. Kdyby to bylo skutečně tak snadné, tak nejsou po celém světě hordy napráskaných fór s dotazy, jak udělat kdejakou drobnost.
Přidat komentář