Starší komentáře ke článku: Strukturovaná diskuse pod články - praxe
Zpět na článek | Úvodní stránka Interval.cz
Datum vložení: 18.8.2005 7:46:17
osobně tedy vůbec nemám rád strukturovanou diskuzi, radši když jsou všechny příspěvky stejné a návaznost se určuje třeba ve stylu duskusí na pixy.cz předsazením čísla příspěvku nebo nějak podobně ve stylu diskusních serverů, asi takto --> nick_toho_komu_odpovidam (popřípadě předmět) blabka bla ... obsah příspěvku... všechny ty stromy s křížky a mínusy ve stylu exploderu mně spíš otravují, než aby mně usnadnily používání té diskuse, ale je to subjektivní názor
Datum vložení: 18.8.2005 8:18:52
Už první článek byl zajímavý. Já osobně řeším diskuzi přesměrovanou zvlášť na jinou stránku. Tam se příspěvky řadí pod sebe (přidej komentář). To není příliš šťastané a tak mě tento způsob zaujal. Kde je však odkaz na ukázku, abychom se mohli přesvědčit, jak to funguje, než zkusíme použít doporučený zdrojový kód?
Datum vložení: 18.8.2005 11:42:10
[i]Kde je však odkaz na ukázku, abychom se mohli přesvědčit, jak to funguje, než zkusíme použít doporučený zdrojový kód?[/i] No, nejlepší ukázka je asi když to ukážu přímo na svém weblogu - http://webzine.petrheller.info/?article=jablotron-maximobil-ma-konkurenci-ge-23318 . Díky OOP je hračka to zakomponovat do již existující systému a v praxi to vypadá imho lépe než prosté řazení pod sebe.
Datum vložení: 18.8.2005 16:22:06
Tak jsem to zkoušel napsáním příspěvku. Funguje prima! Diskuze vypadá dobře. Díky.
Datum vložení: 18.8.2005 8:40:00
Zajímalo by mě proč autor kombinuje v kódu angličtinu a češtinu: $this->Indentation a $this->zanor($por[$poc[$akt]+$i]); no je to zlozvyk více programátorů, zajimalo by mě co je k tomu vede. Jeste jsem si všiml tohoto kódu: $query=MySQL_Query("SELECT id, parent_id, text, jmeno FROM prispevky WHERE article_id='$_GET[id]' ORDER BY date"); pěkný vstupní bod pro script injection. Když tak už použijte aspoň ... article_id=" . ((int)$_GET['id']) . " ORDER ...
Datum vložení: 18.8.2005 10:15:47
Mně pro změnu přijde dost brutální to používání globálních proměnných uvnitř objektu, hmmm...
Datum vložení: 18.8.2005 12:07:54
[i]no je to zlozvyk více programátorů, zajimalo by mě co je k tomu vede.[/i] Tak na to Vám bohužel neodpovím ;) [i]pěkný vstupní bod pro script injection. [/i] Tato třída je spíše pro ilustraci a správně jste si všiml toho, že si ji každý musí upravit podle svých potřeb. Článek je už tak složitý a nechtěl jsem do něj přidělávat ještě další věci.
Datum vložení: 18.8.2005 17:51:08
Nehnevajte sa na mňa, ale ten kód je úplny bordel. Globálne premenné a objekty? Fuj. Nedeklarované atribúty triedy. Fuj. Nezmyselné miešanie češtiny a angličtiny. Fuj. Pre mňa nepochopitelné kódovacie štandardy. Linkujem teda opäť svoje riešenie, ktoré je sakramentsky elegantnejšie a robí presne to isté: http://www.sitepoint.com/forums/showthread.php?t=215857
Datum vložení: 18.8.2005 18:49:03
No a co takhle příště nečekat, až někdo jiný něco napíše a poskytne ostatním, abyste mu to mohl pomluvit, ale místo toho sám napsat článek a zveřejnit ho zde? ;-)
Datum vložení: 18.8.2005 19:47:34
Ja som svoje knowhow bezplatne poskytol na fórach Sitepointu. Určite to nie je také jednoduché na pochopenie ako článok, ale fakt som nečakal, že sa tu o tak banálnom algoritme rozpúta skoro seriál. Na druhej strane je kvalita tohto "seriálu", tak slabá, že mi jednoducho nedalo a musel som na to upozorniť. No a keby to chcel niekto silou mocou objektovo tak ako ja, tak nech kradne odtiaľto: http://johno.jsmf.net/knowhow/Tree/
Datum vložení: 18.8.2005 21:04:57
[i]fakt som nečakal, že sa tu o tak banálnom algoritme rozpúta skoro seriál. [/i] Kdyby připadal ten algoritmus stejně banální všem, už by okolo nás chodili roboti s umělou inteligencí;) [i]No a keby to chcel niekto silou mocou objektovo tak ako ja, tak nech kradne odtiaľto:[/i] Hm, zajímavé... ten kod je jistě mnohem efektivnější, rychlejší a přehlednější ;) A chybí Vám tam komentáře - to je skutečně velký prohřešek proti zažitým standartům v programování ;) Podle Vás psát o věcech, které jsou banální, je chyba? Kdyby tomu tak bylo, tak vězte, že dnešní kod by jste nám neukázal a všichni bychom ještě skákali po stromech :)
Datum vložení: 18.8.2005 21:19:52
Nevravím, že písať o tom bola chyba. Chybný je podľa mňa spôsob vysvetľovania. Je to príliš zamotané, rozvláčne a tento kód teda určite nie dopomocou k vysvetleniu. Čo sa týka môjho kódu, tak tu nechcem rozpútavať flamewar, ale komentáre takého typu, ako to bolo predvedené vo Vašej implementácii ja osobne považujem skôr za "bad smell". Zásady, ktorými sa riadim ja hovoria, že kód sa musí vysvetlovať sám, už len tým čítaním. Navyše v mojom kóde je jednoduchá ukážka použitia a tak nevidím nejakú akútnu potrebu to ešte explicitne dokumentovať. Ďalšiu kritiku na môj kód prosím smerujte na fórum na to určené. http://www.martincohen.info/forum/viewtopic.php?p=6398
Datum vložení: 18.8.2005 22:16:22
[i]Je to príliš zamotané, rozvláčne[/i] Samotné algoritmy se bohužel lehce nevysvětlují, to zná jistě většina studentů informatiky na vysokých školách ;) [i]komentáre takého typu, ako to bolo predvedené vo Vašej implementácii ja osobne považujem skôr za "bad smell".[/i] V kódu mám již jen krátké poznámky odkazující na jednotlivé části článku ;)
Datum vložení: 18.8.2005 22:52:14
[i]Samotné algoritmy se bohužel lehce nevysvětlují, to zná jistě většina studentů informatiky na vysokých školách[/i] Zdá sa Vám ten algoritmus fakt tak zložitý? Čo toto? Postupne prechádzame všetky uzly stromu lineárne ako sme ich dostali vo vstupnom poli. Pri každom uzle potom postupujeme takto: Zistíme či máme záznam v poli $all[$id] kde $id je identifikátor aktuálneho uzla. Teraz potrebujeme uložiť dve veci. Prvou je aktuálny uzol. Uložíme ho napríklad do $all[$id]['node'] a ako druhú vec vytvoríme priestor pre jeho potomkov $all[$id]['children'] = array(); Pravá mágia začína teraz. Predstavme si situáciu, že máme dva uzly. Jeden "Otec" má id rovné 1 a druhý "Syn" má id rovné. Keby sme ponechali algoritmus takto, tak máme v poli $all dve položky. $all[1] a $all[2]. My však potrebujeme nejako dostať do $all[1]['children'] odkaz na $all[2]. No a to je tá celá mágia. Už to stačí iba zapísať do kódu: $all[$parentId]['children'][$id] = &$all[$id]; Keby funkcia vracala celé pole $all, tak by to bolo trochu zbytočné. Stačí keď vrátime $all[$rootId] kde $rootId je identifikátor uzla, ktorý bude v našom prípade 1. Koreň stromu (najvyšší uzol, bez prechodcu) je totiž uzol "Otec". Vykresliť takýto strom je záležitosťou jednej rekurzívnej funkcie, ktorú ponechávam ako domácu úlohu pre čitateľa. Neviem či to niekto pochopí z môjho vysvetlenia, ale to nech posúdia iní.
Datum vložení: 18.8.2005 23:19:14
Pánové, nepřipadáte si poněkud dětinští? Jestli se chcete trumfovat v porozumění algoritmům a schopnosti je vykládat, pište o tom články, čtenáři si sami udělají o vašich schopnostech vlastní obrázek, ale nehádejte se zbytečně v diskusích, prosím ;-)
Datum vložení: 18.8.2005 23:20:39
[i]Zdá sa Vám ten algoritmus fakt tak zložitý? [/i] Co je složité je relativní. Pro Vás možná ne, pro mě také ne, ale přesto si myslím, že existuje mnoho programátorů, kterým složitý přijde. A znám i pár programátorů, kterým neříká nic ani pojem rekurze a přesto se jako programátoři prezentují ;) Jiste ze existuje kratsi popis - ze vstupniho pole vytvorime pole nasledniku a to rekurentne prochazime do hloubky, cimz vzdy jiste ziskame veskere nasledniky prvku, z nejz rekurzi spustime. A to je vlastne vse. Případně stačilo jen napsat, že uvedený problém je jen klasická parent_id struktura, takže nic složitého a ušetřil by jste si práci ;) Nevím, jestli by takový článek někomu pomohl ;) To nechť posoudí jiní ;)
Datum vložení: 18.8.2005 23:28:10
Ten článok ako aj implementácia je podľa mňa prerastená a to je vlastne to, čo som tu chcel povedať. Jedinou pravdou je to, že keby ma to dneska nevytočilo tak by som si tie skripty nechal asi pre seba.
Datum vložení: 19.8.2005 0:35:10
[i]...keby ma to dneska nevytočilo tak by som si tie skripty nechal asi pre seba...[/i] Líbí se mi upřímnost, s níž se hrdě hlásíte ke své sobeckosti, to se v dnešním politicky hyperkorektním světě málokdy vidí ;-)
Datum vložení: 19.8.2005 9:39:36
Myslel som to skôr tak, že by som to neprekódoval a sem nenapísal. Tie kódy boli verejné už od decembra 2004.
Datum vložení: 19.8.2005 13:10:41
Som celkom alergicky na to, ked sa novacikovia ucia nespravnym postupom (vid. publikacie p. Koska, ci clanky p. Ruzicku). Web je potom preplneny neefektivnym ci zastaralym kodom, co ovplyvnuje celkovu kvalitu tuzemskej produkcie. Radsej nech je zdrojovy kod od profesionala bez komentarov, ako nespravne spatlany amaterom s mnozstvom balastu. Dobry zdrojovy kod je jednoduchsie doplnit o komentare, pripadne ho vysvetlit, ako zly cely prepisat. Samozrejme, ani jedno z tychto nie je idealne a vydavatel by sa mal postarat o vyvazenie. Interval.cz je ten ktory sa vydal touto cestou a je na nom, aby bol schopny zarucit kvalitu a spolahlivost clankov, a donekonecna nebranil kazdeho laickeho grafomana. Je to urcite nelahka cesta a tuto poziciu panovi Malkovi nezavidim. Myslim si ale, ze obrana Intervalu by nemala byt smerom k ludom, ktori kritizuju (a ich kritika ma svoje opodstatnenie), ale skor smerom k autorom.
Datum vložení: 19.8.2005 21:50:21
[i]Som celkom alergicky na to, ked sa novacikovia ucia nespravnym postupom (vid. publikacie p. Koska, ci clanky p. Ruzicku). Web je potom preplneny neefektivnym ci zastaralym kodom. ... Interval.cz je ten ktory sa vydal touto cestou a je na nom, aby bol schopny zarucit kvalitu a spolahlivost clankov, a donekonecna nebranil kazdeho laickeho grafomana. [/i] Až budou na Interval.cz psát samozvaní géniové jako jste Vy a pan Suchal, nebude potřeba, aby do Intervalu.cz psali grafomani jako já, p. Kosek či p. Růžička ;) Vy si svoje kódy bohužel křečkujete pro sebe a jen kritizujete práci těch, kdo se snaží něco dělat. Těším se, až si budu moci za pár dní přečíst nějaký článek od Vás. Jinak bych se Vás chtěl, jakožto skutečně velkých odborníků na světové úrovni, kteří kvalitu tuzemské produkce jako jediní zvyšují (narozdíl od nás laických grafomanů, kteří dělají opak), zeptat, v čem je můj algoritmus neefektivní a horší než ten Váš? Naopak si troufnu říci, že je rychlejší a mnohem jednodušší ;) A už prosím skutečně stručně, protože celý odstavec věnovat kritice Intervalu.cz v zastávání svých autorů, to skutečně nepovažuji za nijak přínosné ohledně diskusních algoritmů a jediné, čeho tím docílíte, je drobný úsměv na tváři čtenářů ;)
Datum vložení: 21.8.2005 17:47:58
Pane Heller, abych byl k věci, když se vrátím ke svému komentáři výše ohledně používání globálních proměnných uvnitř objektu - skutečně si myslíte, že je dobré psát třídy takovýmto způsobem? Mně to přijde, že jste to zabalil do třídy jen proto, aby jste mermomocí použil "class". Používání objektů má svoje pravidla, která je vidět neznáte - pak řeknete "Díky OOP je hračka"... no, a neznalý člověk si pak myslí, že to co jste stvořil má něco společného s OOP a bude podobné věci produkovat dál. Předělávat či rozšiřovat po někom web s takovouhle filozofií je něco naprosto strašidelného..., proto je dobře, že je tu možnost Vás vyplísnit, protože pak čtenář vidí, že tudy tedy rozhodně ne. Nikdo není bez chyb a nemá cenu kvůli kritice hned dupat nožičkama :), vždyť je to přínosné. Ad samozvaní nepíšící géniové: když půjdu do restaurace, objednám si oběd a nebude mi chutnat, tak to neznamená, že si vezmu zástěru a začnu v dané restauraci vařit. Prostě řeknu, že mi to nechutná.
Datum vložení: 21.8.2005 19:16:04
Mým cílem, bylo popsat algoritmus pro tvorbu diskusí pod články, až budu chtít napsat článek o OOP, tak napíšu o OOP. Třídu jsem použil jen proto, že mi to připadalo snazší na zakomponování do již existujcího webu. Když se Vám ta třída nelíbí, použijte jen samotné "jádro" a dejte si to ho třeba do funkce nebo si vytvořte lepší třídu. [i]Nikdo není bez chyb a nemá cenu kvůli kritice hned dupat nožičkama :)[/i] Nožičkama dupají hlavně pokročilí čtenáři, kteří asi nepochopili smysl článků ;) [i]vždyť je to přínosné.[/i] co je přínosného na kritice toho, že článek je psán do podrobností? Měl jsem jen napsat "Řešte si parent_id strukturu jak chcete" ? K čemu zatěžovat čtenáře ještě pokročilým objektovým programováním - tento příklad je aspon jednoduchý. K tomu, že kritizujete to, že jsem neošetřil parametr Get[id], to chápu, k tomu, že kritizujete to, že jsou v kodu globální proměnné, to taky chápu. Jak říkám, šlo mi jen o algoritmus. To, že kritizujete snad nejefektivnější možný algoritmus pomocí matice následníků, tomu už nerozumím...
Datum vložení: 21.8.2005 20:19:22
nekritizuju algoritmus, to jste si mě spletl s někým jiným :) o OOP raději nepište ;), nic ve zlém. nebylo nutné zatěžovat čtenáře pokročilým objektovým programováním, ta kritika a jiné implementace od "objektářů" se tu objevila proto, že jste použil objekt "obzvlášť zavrženíhodným způsobem", kdybyste zůstal jen u funkcí, tak by se maximálně objevil někdo, kdo by napsal "šlo by to řešit objektově, tak a tak" (ačkoliv to v tomhle případě vůbec není nutné) uvědomte si to, že je-li váš článek určen začátečníkům, mnoho z nich si prostě copy pastnou váš kód někam do "projektu" a později budou váš kód zkoumat a budou ho napodobovat (i v nesouvisejících věcech, budou se snažit odkoukat postup). a pokud odkoukají to, co je zde k vidění, budou se z toho pak dost dlouho zotavovat. PHP to samozřejmě zkousne, ono to funguje... a to je na tom "pro učení se" to nejhorší :))
Datum vložení: 21.8.2005 20:53:47
Vidím, že se nedokážete chovat jako rozumní lidé. [i]S okamžitou platností končím tento pro téma nepřínosný flame.[/i] Jakýkoli další příspěvek, od kohokoli, jednoduše vymažu ;-)
Datum vložení: 21.8.2005 20:19:38
Ja som sa géniom nenazval nikde. Napísal som prečo je to zlé a dokonca ako by som to robil ja. Nechcem za to peniaze. Kde s tým máte problém? Čo sa týka porovnania rýchlosti môjho a Vášho algoritmu, tak tam by som opatrnejší. Viem, že pri zložitosti sa väčšinou nehrá na konštanty, ale mne to pole stačí prejsť raz, Vy ho, pokiaľ sa nemýlim, prechádzate päť krát. Nerobil som žiadne testy, ale obávam sa, že to Vaše nemá byť prečo rýchlejšie ani teoreticky. Taktiež porovnanie jednoduchosti algoritmu je povážlivé, aké sú kritériá? Dĺžka kódu? Rozumne nazvané premenné? Komentáre?
Datum vložení: 19.8.2005 13:27:54
zdravim - mam uz delsi dobu "neco podobneho". Muj algoritmus tezi ze znalosti urovne ve stromu. To je udaj, ktery zname vzdy, protoze vime na ktery prispevek se reaguje a tudiz je znama i jeho uroven ve strome. Data z db vyberu setridena podle urovne a data vlozeni prispevku a pak je vlozim do objektu reprezentujiciho strom. Z nej je mozno data vypsat bud cela nebo jen jednotlive vetve. Umi si zacenzurovat i zneviditelnit prispevky resp. vetve. Vystup z objektu je "optimalizovan" pro pouziti s knihovnou smarty, provozovan na serveru s php4. Kod je celkem okomentovany a pomerne sebeilustrujici. Na konci knihovny je kratky priklad. link http://www.novaci.cz/diskuse.class.phps Pokud kod pouzijete, byl bych rad, kdybyste na svych strankach umistili link na http://www.auto.cz
Datum vložení: 28.8.2005 9:38:46
Stromová struktura je zastaralá. Osobně jsem vymyslel a implementoval 2 roky dozadu mnohem lepší řešení, které je ovšem poněkud složitější na implementaci, nejedná se o relaci komentářů 1:1, ale 1:n, kdy jeden komentář reaguje i na více předchozích. Viz tento příklad: http://hulan.cz/blog/item/nejlepsi-programovaci-jazyk-je-c#comment12149 A následně velice sofistikovaný JavaScript zajišťuje zobrazení rodičů/potomků, po kliknutí na "zobraz komentář v kontextu", včetně barevného odlišení. I rozsáhlé diskuse o desítkách komentářů jsou tak skvěle čitelné (na rozdíl od struktury třeba na Interval.cz).
Datum vložení: 28.8.2005 11:03:54
[i]Osobně jsem vymyslel a implementoval 2 roky dozadu mnohem lepší řešení...[/i] S lítostí Tě musím informovat, že se Ti podařilo objevit kolo. Systém, který zde popisuješ, je používán všemi českými diskusními servery (CyberSpace, News, Nyx, Hofyland) už od konce devadesátých let. A silně pochybuji, že byli prvními, kdo ho vymyslel a implementoval ;-)
Datum vložení: 28.8.2005 14:05:41
URL by nebylo? V praxi jsem toto řešení zatím viděl jen na svém webu ;-)
Datum vložení: 6.9.2005 17:10:30
Nevím jestli jsem sám, ale mě osobně se zdá pro diskuzi vhodnější strom. Právě pro ty rozsáhlé diskuze. Pokud jeden komentář reaguje na několik jiných komentářů a na tento komentář reaguje zase několik dalších, které navíc reagují i na jiné komentáře, tak se v tom docela ztrácím. Takže bych neřekl lepší (ani horší), ale jiné.
Datum vložení: 31.12.2005 3:46:07
Na forum staci jednopruchodova stavba stromu, tento clanek je hromada nesmyslu. Zdrojak si vezmte na http://www.ceskynabytek.cz/forumcode/class.Forum.php.txt
Datum vložení: 27.3.2006 1:30:37
Nevím jestli jsem se nepřehlédl, ale nenašel jsem pro jakou verzi PHP je to psané. Bude to fungovat i pod PHP4, nebo to musí běžet díky těm objektům v PHP5?
Datum vložení: 27.3.2006 8:58:07
Uvedená ukázka bude v pohodě fungovat v PHP4 stejně jako v PHP5.
Datum vložení: 27.3.2006 22:53:25
Děkuji, v tom případě si to přečtu, páč mám k dispozici 4ku.
Datum vložení: 28.3.2006 14:21:19
V $Discussion_sort->Order[$i] během cyklu for nic není.
Datum vložení: 10.4.2006 12:53:03
moje chyba, uz to mam :o)
Datum vložení: 4.7.2006 14:24:12
Viete mi prosim niekto poradit niaky vhodny php skript na tento clanok? Chcel by som niaku jednoduchu diskusiu, kde by mohli odpovedat aj na vlozene komentare a mat to rozlozene ako napr. v tychto komentaroch na intervale. Prosim prosim dobry ludia pomozte. :-) Dakujem dopredu za akukolvek odpoved.
Datum vložení: 19.8.2007 12:35:55
Asi jediný důvod proč jsem to četl byl ten, že jsem se chtěl dozvědět jak udělat takové ty hezké grafické stromečky ve výpisu diskuze (abych to nemusel vymýšlet) a to jsem se tady nedozvěděl. Za to jsem našel naprosto šílenou implementaci něčeho jinak relativne triviálního (a v diskuzi naopak několik velice hezkých implementací). Po přečtení tohoto článku http://www.sitepoint.com/article/hierarchical-data-database jsem došel k závěru, že nic lepšího už se asi vymyslet nedá, jen ta pěkná grafická prezentace pořád schází...
Datum vložení: 19.8.2007 17:43:25
Grafickou prezentaci samozřejmě najdete v oblasti, do které patří - v CSS a XHTML (případně JavaScriptu). Hledejte například na http://css.interval.cz/menu/ ;-)
Datum vložení: 18.10.2007 5:34:01
Nechci nejak rypat, ale ten kod je velmi spatne napsany, pokud pominu pouzivani "cenglish", tak by si autor mel davat pozor alespon na SQL Injection, coz je podle me dost dulezita vec. A taky, proboha, proc v objektech pouzivate globalni definice promennych? Autor by si mel neco nastudovat o OOP nez ho zacne pouzivat.
Datum vložení: 4.8.2008 22:53:28
z pohledu uzivatelskych rozhranni si troufam tvrdit, ze strukturovana diskuze je vzdy lepsi nez nestrukturovana .. http://members.lycos.co.uk/lansky10/
Datum vložení: 6.9.2008 1:42:53
Ehm hustá konvrzace mezi Vámi profíky, avšak pro mě je článek jako pro "laika" velmi přínosným. Takže za něj děkuji a Vaše diskuze mi taktéž rozšíří obzory.....takže ještě jednou jak článek tak diskuzi hodnotím velmi pozitivně! -:)