| | |
Autor | Správa |
---|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal camo: 25.08.2010 15:16 | |
|
Mám takéto zadanie:
Citácia: 2.) v tejto časti, je Vašou úlohou optimalizovať výkon triedy Catalog, navrhnite a implementujte podľa Vás najefektívnejší spôsob optimalizácie popíšte v skratke čo je cieľom optimalizácie, a prečo ste sa rozhodli pre Vaše riešenie
Trieda Catalog je hotová, ale nechápem, čo a myslí pod tou optimalizáciou. Nevie niekto čo asi odo mňa chcú???
Týka sa to rýchlosti, alebo mám pridať nejaké funkcie??
Totiž skúsim kontaktovať aj zadávateľa, ale je už po pracovnej dobe a do zajtra to má byť hotové, tak neviem...
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
predpokladam, ze si za to plateny, takze by si mal vediet, co od teba chcu... nabuduce to pojde rovno do kosa!
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 25.08.2010 15:36 | |
|
Nie som, týka sa to výberového procesu a toto je všetko čo som k tomu dostal.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
my ti mame poradit a ty to potom odovzdas ako vlastne riesenie? trosku blbe nie? neber to pls osobne, ale ked nevies, co je to optimalizacia a ako ju aplikovat, tak sa zbytocne namahas...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 25.08.2010 15:48 | |
|
No dobre, tak sa teda zbytočne namáham a teda mi aspoň poraď, kde sa o tom niečo dozviem, aby som sa nenamáhal zbytočne nabudúce.
EDIT:
Tak som našiel toto: http://interval.cz/clanky/usetrete-az-8 ... o-prenosu/
Ale mám s tým jeden problém. Nemôžem použiť ob_start("ob_gzhandler")
Vypisuje mi to, že používam nepovolené kódovanie. Pritom by tá funkcia mala zabepečovať práve to, aby to browser dokázal rozbaliť.
Tak zatiaľ som to dal bez toho gzipu.
Bude to mať nejaký význam z hľadiska optimalizácie??
PS: Myslím si, že moje úsilie je adekvátne a o žiadne hotové riešenia tu nikoho nežiadam... resp. každú otázku na tomto fóre je možné chápať ako snahu o zneužitie cudzích vedomostí...
EDIT2
Há tak som zistil, že to vplyv mať nebude. Je mi to na prd. ako som zistil ob_gzhandler mi nefungoval, preto, že mi server gzipuje automaticky a ja som to gzipoval dva krát, čo bolo aj pre FF priveľa.
Len nechápem zmysel tejto komunikácie...
Kde by som sa len dozvedel niečo o optimalizovaní, keď už ani google, ani kniha a ani na fóre mi nikto nič nepovie...
|
|
Registrovaný: 18.05.10 Prihlásený: 11.04.12 Príspevky: 12 Témy: 5 |
to Stenley:
si sice moderator, ale otazka to bola v pohode.
forum je o pomahani, ak vies porad, ak nie zbytocne nespamuj.
a k tejto tvojej vete:
stenley píše: my ti mame poradit a ty to potom odovzdas ako vlastne riesenie? trosku blbe nie? neber to pls osobne, ale ked nevies, co je to optimalizacia a ako ju aplikovat, tak sa zbytocne namahas...
o tom su rady, clovek sa uci kazdym dnom a ked nieco neviem cita a pyta sa urobi si vlastny zaver a spravi potom vlastne riesenie. je to standardne a vsade.
je tu x ludi co robi projekty, webaplikacie alebo v praci ma robotu a nevie si poradit a tu sa spyta (a v praci je za to plateny)
camo nvm ci si na nieco prisiel, ale uz mas po funuse, tak snad si to zmakol.
GL (good luck)
//mne ucel fora vysvetlovat nemusis, som tu dost dlho na to, aby som to vedel... takisto o spamovani by som na tvojom mieste radsej pomlcal... moja reakcia bola preto taka, lebo ma zarazilo, ze sa hlasi do nejakeho vyberoveho konania, a pritom nema ponatia o zakladnych veciach... je tu jedno pravidla, ktore sa tyka vypracovavania domacich uloh a toto ma velmi podobny charakter... (stenley)
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 26.08.2010 20:25 | |
|
mozno by pomohlo keby Camo najprv napisal co je trieda Catalog , naco sluzi, ako pracuje ...
|
|
Registrovaný: 18.05.10 Prihlásený: 11.04.12 Príspevky: 12 Témy: 5 |
to ano
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 26.08.2010 23:21 | |
|
Stenley:
A čo mi uniklo ohľadom tej mojej dilemy, že vlastne každá otázka na tomto fóre je potenciálne zneužitie cudzích vedomostí. To že pravidlá tu sú neznamená, že nie sú zlé. A ako som napísal, ja tu od nikoho nežiadam hotové riešenia...
//dolezita je forma, akou otazku podas - ak toto budes ovladat, nebudes mat problem (stenley)
To all:
Keďže už to nespadá pod zákony tohoto fóra, dám vám sem to zadanie, ak sa na to bude chcieť niekomu pozrieť:
Takže mám txt súbor:
Kód: -TV, audio, video --LCD televízory ---JVC ---LG ---Panasonic ---Philips ---Samsung ---Sony --LED televízory --Plazmové televízory --Satelitná technika --Domáce kiná --Hifi systémy --Prehrávače ---Blu-ray prehrávače ---DVD prehrávače ---DVD prenosné prehrávače -Veľké spotrebiče --Práčky --Sušičky --Chladničky ---voľne stojace ---vstavané ---prenosné --Sporáky -Malé spotrebiče --Vysávače ---podlahové ---stojanové ---parné ---ručné --Žehličky --Fritézy --Rýchlovarné kanvice K tomu som mal urobit triedu, ktorá z toho spraví klikatelné menu s dorazom na tzv. hygienu kódu, preto tam bude kopa bielych znakov. Tvar URL si nevšímajte to bola požiadavka, alebo som ja niečo nepochopil. Vyrobil som toto(dufam že sa to bude dať u vás čítať s tými komentármi): Kód: <?php class Catalog { public function render() { $source=file('sourcedata.txt'); $priznakLevel=0; // urcuje uroven polozky v strukture menu $anchor=''; // format atr. href v tagu <a> echo "<ul>\n"; foreach($source as $item) { $item=trim($item); // zdroj obsahuje zalomenia riadkov \n ktore treba odstranit if(preg_match("/^-(?!-)/",$item)) // zistuje sa ci sa jedna o polozku prvej urovne { if($priznakLevel==2) echo "\t</ul></li>\n"; // ak je pred polozkou jeden vnoreny zoznam <ul> z predoslej polozky treba ho ukoncit if($priznakLevel==3) echo "\t\t</ul></li>\n\t</ul></li>\n"; // ak su pred polozkou dva vnorene zozonamy <ul> treba ich ukoncit $cleanItem=str_replace('-','',$item); // odstranenie znaku - $anchor="/".$cleanItem; // vytvorenie atr. href pre taf <a> echo "<li><a href=\"$anchor\">$cleanItem</a>\n"; $priznakLevel=1; // oznacenie urovne pre potrebu dalsieho cyklu v suvislosti s ukoncovanim vnorenych zoznamov continue; // odpada kontrola nasledujucich podmienok } if(preg_match("/^--(?!-)/",$item)) // zistuje sa ci sa jedna o polozku druhej urovne { if($priznakLevel==1) echo "\t<ul>\n"; // ak sa jedna o zaciatok vnoreneho zoznamu tj. este nebola nastavene prem. $priznakLev=2 prechadzame z urovne 1 na 2 if($priznakLevel==3) echo "\t\t</ul></li>\n"; $cleanItem=str_replace('--','',$item); $anchorLev2=$anchor."/".$cleanItem; // $anchorLev2 je pouzita preto, aby sa neprepisala premenna $anchor z ktorej vychadzame pri polozkach 2. urovne echo "\t<li><a href=\"$anchorLev2\">$cleanItem</a>\n"; $priznakLevel=2; // pre potreby dlasie cyklu v suvislosti s ukoncovanim vnorenych zoznamov continue; } if(preg_match("/^---(?!-)/",$item)) // zistuje ci sa jedna o polozku 3. urovne { if($priznakLevel==2) echo "\t\t<ul>\n"; // ak sa jenda o zaciatok vnoreneho zoznamu prechod z urovne 2 na 3 $cleanItem=str_replace('---','',$item); $anchorLev3=$anchorLev2."/".$cleanItem; echo "\t\t<li><a href=\"$anchorLev3\">$cleanItem</a></li>\n"; $priznakLevel=3; } } if($priznakLevel==1) echo "</ul>\n"; // ukoncovanie podla aktualnej urovne if($priznakLevel==2) echo "\t</ul></li>\n</ul>\n"; // - " - if($priznakLevel==3) echo "\t\t</ul></li>\n</ul></li>\n</ul>\n"; // - " - } } ?> No a oni v druhej úlohe chceli, aby som zvýšil výkon triedy. Dali k tomu takú indíciu, ako že aby som implementoval rozhranie(to už bolo nad môj pochop): Kód: <?php
interface ICatalog { /** * Loads config data. * @param string path to config file */ public function load($cfg);
/** * Renders html menu. */ public function render();
}
?>
Vie mi niekto povedať, čo tým mysleli??
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
si si istý, že tým mysleli "zvýšiť výkon implementovaním rozhrania"? neviem o tom, že by pri použití interface-u došlo k nárastu výkonu optimalizácia nemusí vždy znamenať len "zvýšenie rýchlosti" interface je len akoby "šablóna" triedy
inak ešte k tomu kódu - toto je CELÁ trieda?
_________________ C#, PHP, ... |
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 26.08.2010 23:52 | |
|
Citácia: si si istý, že tým mysleli "zvýšiť výkon implementovaním rozhrania"?
Asi si nepochopil...
Ja som si práve nebol istý. Ja som sa tu pýtal či neviete, čo tým mysleli, nie že SI JA NIEČO MYSLÍM! Podľa môjho skromného názoru(na rozdiel od toho tvojho)by sa na také veci nemusela používať trieda. Takže tvoje úškrny mi akurát tak lezú na nervy... NAČO REAGUJEŠ?!?! Aby si ukázal aký si ty múdry? To moc múdre neni a ak to bude pokračovať tak ten ban zariskujem a vysvetlím to podrobnejšie...
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
reagoval som na toto:
Citácia: No a oni v druhej úlohe chceli, aby som zvýšil výkon triedy. Dali k tomu takú indíciu, ako že aby som implementoval rozhranie
z tohto mi vyplýva, že buď ti to takto povedali alebo si to tak pochopil ty. Zaujímalo ma, či ti to už priblížili (interface si v prvom príspevku nespomínal). Nemám v úmysle sa hádať a ak si to tak z môjho príspevku pochopil, tak sa ti ospravedlňujem. Narozdiel od iných nemám problém diskutovať...
to, či na toto treba alebo netreba používať triedu... v tomto s tebou súhlasím, na rozparsovanie jedného txt súboru v php je to asi zbytočné. Pokiaľ je tebou uvedený príklad celé znenie triedy tak je to samozrejme oničom a rýchlejšie by bolo v porovnaní s tým urobiť len obyčajnú funkciu.
+ reagujem preto, aby som vyjadril svoj názor a prípadne aj pomohol. Ak to nie je vítané, stačí povedať, nabudúce keď uvidím že si založil tému ty, nechám to tak. Nepotrebujem sa tu s nikým doťahovať.
_________________ C#, PHP, ... |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
ako tak pozeram na metodu render(), tak by bolo najlepsie, keby si ju prerobil a spravil poriadne, lebo toto mi ako citatelny kod, navyse s dorazom na prehladnost a univerzalnost, nepripada... napr. co spravi tvoj kod, ked pribudne dalsia uroven v menu? treba obcas rozmyslat aj algoritmicky, a nie sa bezhlavo hnat do programovania za kazdu cenu, vysledkom coho je vacsinou jeden velky bordel, podobne ako v tvojom pripade...
naznacili ti, ake metody mas zhruba pouzit, ale ty nie, ty to strcis do jednej, aby sa pre isotu nedala pouzit na iny subor, v ktorom moze byt ulozena ina struktura menu - aj o tom je optimalizacia, univerzalnost, znovupouzitelnost, ktore tvojmu kodu nie len ze chybaju, ale ty si ich tam naschval nezahrnul...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 27.08.2010 8:30 | |
|
no tiez sa priklanam k stenley-mu , ten kod je dost neprehladny a neuniverzalny. tiez interface definuje dalsiu povinnu metodu "load($cfg)" ktoru nemas vo svojom kode. tvoja trieda by mala byt implementaciou predpisaneho interface. samozrejme ja osobne by som do triedy zapracoval dalsie privatne metody ktore by riesili ciastkove ulohy. napr : Kód: class Catalog implements ICatalog {
public function load($cfg) { ... tu by som riesil nacitanie suboru s definiciou menu }
public function render() { ... tu by som riesil vyskladavanie html codu }
private function gelLevel($riadok) { return strcspn($riadok,"-"); -- vrati pocet znakov "-" cize urci level } ...
}
toto brat iba ako vseobecny pohlad , na presnu spravnost syntaxe nepozerat !
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 27.08.2010 11:53 | |
|
Takto vy kritici:
Toto čo tu je, je úloha číslo jedna. Tam nič viac mať nechceli.
Úloha dva bola optimalizovať a tam som samozrejme pridal voliteľný parameter ktorý umožní Stenleymu aj Coldakovi načítať iný súbor.
Inak mi prosím vás skúste niekto vysvetliť, že čo je na tej funkcii neprehľadné???
No a pekne sa z toho vyvliekol coldak: ,,toto brat iba ako vseobecny pohlad , na presnu spravnost syntaxe nepozerat !,,
Priznávam, ak funkcia strcspn() robí to čo myslím, tak to je lepšie riešenie.
Ale skôr to ma asi byť strspn()...
No ale neviem pochopiť načo je tam funkcia load()(podľa coldaka) dobrá. Načo je tam proste definícia tejto metódy, ktorá urobí to, čo musí urobiť vždy, teda podľa mňa by mala byť súčasťou metódy render().
Predpokladám že getLevel() je volaná z metódy render(). Tak?? Však ako inak, keď je privat.
Aby vaše zhrozenie bolo dokonalé, tak vám ukážem ako som úlohu2 poňal ja:
Kód: <?php /* ** Priznavam, ze vasu myslienku implementacie rozhrania som nepochopil. Navrhol som vlastne zdokonalenie triedy Catalog: V povodnej triede Catalog bola vymenena funkcia preg_match za retazcovu funkciu strpos Kontrola 3. urovne bola presunuta na zaciatok pretoze funkcia strpos by nerozoznala pocet "-" v retazci a aj 3.uroven by pokladla za prvu prip. druhu uroven Kod by mal byt rychlejsi, ale stratil na prehladnosti Pridany volitelny parameter $source metode Arender ** */ class ACatalog { public function Arender($source) { $source=file($source); $priznakLevel=0; // urcuje uroven polozky v strukture menu $anchor=''; // format atr. href v tagu <a> echo "<ul>\n"; foreach($source as $item) { $item=trim($item); // zdroj obsahuje zalomenia riadkov \n ktore treba odstranit if(strpos($item,'---')===0) // zistuje ci sa jedna o polozku 3. urovne (0==false preto ===) { if($priznakLevel==2) echo "\t\t<ul>\n"; // ak sa jenda o zaciatok vnoreneho zoznamu tj. prechod z urovne 2 na 3 $cleanItem=str_replace('---','',$item); $anchorLev3=$anchorLev2."/".$cleanItem; echo "\t\t<li><a href=\"$anchorLev3\">$cleanItem</a></li>\n"; $priznakLevel=3; // pre potreby dalsieho cyklu v suvislosti s ukoncovanim vnorenych zoznamov continue; // odpada kontrola ostatnych podmienok } if(strpos($item,'--')===0) // zistuje sa ci sa jedna o polozku druhej urovne { if($priznakLevel==1) echo "\t<ul>\n"; // ak sa jedna o zaciatok vnoreneho zoznamu tj. este nebola nastavene prem. $priznakLev=2 tj. prechadzame z urovne 1 na 2 if($priznakLevel==3) echo "\t\t</ul></li>\n"; // prechadzame z urovne 3. na 2. $cleanItem=str_replace('--','',$item); $anchorLev2=$anchor."/".$cleanItem; // $anchorLev2 je pouzita preto, aby sa neprepisala premenna $anchor z ktorej vychadzame pri polozkach 2. urovne echo "\t<li><a href=\"$anchorLev2\">$cleanItem</a>\n"; $priznakLevel=2; continue; } if(strpos($item,'-')===0) // zistuje sa ci sa jedna o polozku prvej urovne { if($priznakLevel==2) echo "\t</ul></li>\n"; // ak je pred polozkou jeden vnoreny zoznam <ul> z predoslej polozky treba ho ukoncit if($priznakLevel==3) echo "\t\t</ul></li>\n\t</ul></li>\n"; // ak su pred polozkou dva vnorene zozonamy <ul> treba ich ukoncit $cleanItem=str_replace('-','',$item); // odstranenie znaku - $anchor="/".$cleanItem; // vytvorenie atr. href pre taf <a> echo "<li><a href=\"$anchor\">$cleanItem</a>\n"; $priznakLevel=1; // oznacenie urovne pre potrebu dalsieho cyklu v suvislosti s ukoncovanim vnorenych zoznamov }
} if($priznakLevel==1) echo "</ul>\n"; // ukoncovanie podla aktualnej urovne if($priznakLevel==2) echo "\t</ul></li>\n</ul>\n"; // - " - if($priznakLevel==3) echo "\t\t</ul></li>\n</ul></li>\n</ul>\n"; // - " - } } ?>
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 27.08.2010 12:20 | |
|
camo píše: No a pekne sa z toho vyvliekol coldak: ,,toto brat iba ako vseobecny pohlad , na presnu spravnost syntaxe nepozerat !,,
Coldak: ta veta znamena len tolko ze ak som urobil niekde nejaku sytnaxovu chybu tak aby sa do mna niekto nenavazal. priklad by mal byt spravny podla manualov PHP, ale chyba sa mohla vystkytnu. islo len o naznacenie ako by si mal spravne pouzivat OOP.
No ale neviem pochopiť načo je tam funkcia load()(podľa coldaka) dobrá. Načo je tam proste definícia tejto metódy, ktorá urobí to, čo musí urobiť vždy, teda podľa mňa by mala byť súčasťou metódy render().
Coldak: funkcia load($cfg) ma zabezpecit nacitanie dat do nejakej tvojej internej struktury ktora este nebude priamo HTML. preco ? no lebo nikde v zadani som nevidel ze menu musi byt iba pomocou UL,LI. ak by potrebovali generovanie pomocou JS, tak si iba odvodia novu triedu od tvojej a overidnu tvoju funkciu render() svojou v ktorej to urobia po novom no nebudu musiet zase riesit loadovanie a parsovanie suboru nakolko tu funkcionalitu zdedia od tvojej povodnej triedy. Skus sa trochu povenovat OOP.
Predpokladám že getLevel() je volaná z metódy render(). Tak?? Však ako inak, keď je privat.
Coldak: ano, ale moze byt volana aj z load() alebo inej internej funkcie, ale treba davat pozor na staticke funkcie a premenne
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 27.08.2010 12:26 | |
|
Walter:
V pohode, nabudúce menej toho výsmechu a nič podobné sa neudeje... a môžeme diskutovať.
Ja som to zadanie dostal cez email a nebolo tam skoro nič, len to čo som už opísal + ten ich základ toho interface...
Coldak:
Ja som toho názoru, že www stránky sa majú optimalizovat na rýchlosť a teda, čím viac funkcii a čím viac parsovania a vyhodnocovania, tým horšie. Preto asi OOP má v PHP svojich odporcov, nie???
No a to s tým JS to už bolo proti všetkým pravidlám prístupnosti. Čo chudáci surfery na mobilných telefónoch a paranoici?
Veď za toto by ma v sekcii HTML ukameňovali. Tak ako to teda mám chápať???
Ja proste akosi OOP a www stránky nejako neviem spojiť dokopi. Ešte keď má firma svoj server len pre seba, ale nie ak sa delím o priestor s niekoľkými tisícami daľších domén... Či ako???
//edituj si prispevky! (stenley)
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 27.08.2010 12:53 | |
|
camo píše: Coldak:Ja som toho názoru, že www stránky sa majú optimalizovat na rýchlosť a teda, čím viac funkcii a čím viac parsovania a vyhodnocovania, tým horšie. Preto asi OOP má v PHP svojich odporcov, nie??? No a to s tým JS to už bolo proti všetkým pravidlám prístupnosti. Čo chudáci surfery na mobilných telefónoch a paranoici? Veď za toto by ma v sekcii HTML ukameňovali. Tak ako to teda mám chápať??? Ja proste akosi OOP a www stránky nejako neviem spojiť dokopi. Ešte keď má firma svoj server len pre seba, ale nie ak sa delím sa priestor s niekoľkými tisícami daľších domén... Či ako???
Camo, nik netvrdi ze je zle ak je stranka rychla. ale existuju aj velke projekty ktore si vyzaduju dost casto upgrade, tvoj programovaci pristup by mozno generoval rychlejsie tie stranky no robit zmeny v tak nakodovanej stranke je narocnejsie. to zistis ak sa niekedy dostanes k nejakemu naozaj rozsiahlemu projektu. OOP umoznuje aj efektivnejsie paralelne programovanie kde viac developerov koduje rozne casti projektu a staci im dohodnut si vyhovujuce interfaces. cize jeden moze robit na vizualnej stranke a dalsi na datovej. vdaka pouzitiu interfaces maju zarucene ze ten co robi vizualnu cast dostane k dispozicii implementacie tried ktore mu v jeho casti projektu budu fungovat bez dodatocnej upravy.
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 27.08.2010 13:07 | |
|
No však keď sa dohodnem s niekým, ako to bude pracovať, tak v pohode. Samozrejme že obsah sa má oddeliť od formy, ale v tom problém môjho prístupu nevidím. Veď tá trieda nieje pevnou súčasťou stránky. ak tam chceš mať niečo iné zavoláš iný render() To menu predsa nemá nič čo by definovalo jeho vizuálnu stránku, či jeho umiestnenie, to je vec CSS. Môžeš si z neho spraviť rozbalovacie aj vysúvacie a všetko na dvoch miestach. Trochu v metóde render, trochu v CSS. Ani v zložitejších projektoch nepredpokladám jednoduchšie riešenie.
Ako to podla teba môj prístup obmedzuje?? Možno sa opakujem, ale asi mi to ešte nedochádza.
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 27.08.2010 13:25 | |
|
camo píše: No však keď sa dohodnem s niekým, ako to bude pracovať, tak v pohode. Samozrejme že obsah sa má oddeliť od formy, ale v tom problém môjho prístupu nevidím. Veď tá trieda nieje pevnou súčasťou stránky. ak tam chceš mať niečo iné zavoláš iný render() To menu predsa nemá nič čo by definovalo jeho vizuálnu stránku, či jeho umiestnenie, to je vec CSS. Môžeš si z neho spraviť rozbalovacie aj vysúvacie a všetko na dvoch miestach. Trochu v metóde render, trochu v CSS. Ani v zložitejších projektoch nepredpokladám jednoduchšie riešenie. Ako to podla teba môj prístup obmedzuje?? Možno sa opakujem, ale asi mi to ešte nedochádza.
v tvojom pripade kazda nova trieda bude musiet odznova riesit parsovanie suboru pokial budes pisat novy renderer lebo parsovanie suboru je sucastou renderera.
dalsia vyhoda oddelenia loadera a renderera je vtom ze ak sa zmeni format suboru alebo nebodaj zdroj dat pre menu ako taky tak sa iba vytvori nova trieda odvodena od povodnej a overidne sa iba funkcia load() , funkcia render sa zdedi v povodnom stave.
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 27.08.2010 14:00 | |
|
Nejako sa v tom tvojom (značne teoretickom modeli) motám. Toto predsa nieje operačný systém, ale stránka... Ty predpokladáš toľko úrovní dedenia, že to podla mňa nieje reálne vo www využiteľné. Alebo nechápem?
Ach jo...
Má ešte niekto nejaké zaujímavé pripomienky...
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
camo, pri stránkach aké sa tu najčastejšie prezentujú na fóre je oop viacmenej zbytočné.. problém nastáva pri rôznych portáloch a rozsiahlych stránkach, tam sa bez oop nepohneš a to sa ti tu snažili vysvetliť. optimalizácia triedy nespočíva len v optimalizácii rýchlosti, ale aj prehľadnosti, znovupoužiteľnosti... väčšina odporcov oop pri php v živote nepracovala na rozsiahlych projektoch
_________________ C#, PHP, ... |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 27.08.2010 14:11 | |
|
presne ako povedal walter
apropo mam dojem ze v tej ulohe co si dostal islo aj o poreverenie tvojich znalosti ohladne OOP kedze tam boo jasne pozadovane pouzitie triedy
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 27.08.2010 14:22 | |
|
Ja si myslím, že ani stredne veľký portál OOP nepotrebuje.
Asi nemám predstavu, čo taký portál vo vašom prevedení robí...
coldak:
Čo vlastne robí tvoja metóda load().
To načíta do premennej a volá miesto každého (môjho)echo, metódu render(). Lebo to by na výkone moc nepridalo myslím...
Render() by sa volal z load(), alebo z index.php.
A čo by vlastne robil ten render(). Vyechoval by predanú premennú, alebo čo aby to malo nejaký hlbší zmysel okrem prehľadnosti kódu.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
coldak píše: apropo mam dojem ze v tej ulohe co si dostal islo aj o poreverenie tvojich znalosti ohladne OOP kedze tam boo jasne pozadovane pouzitie triedy
cize sa opat dostavame k tomu, co som pisal v uvode: je to zbytocna namaha, ked clovek nema dostatok vedomosti a skusenosti... najskor treba problematiku nastudovat a potom sa jej venovat prakticky podobny priklad je, ked zaciatocnik, ktory ledva ovlada zaklady, chce naprogramovat eshop alebo cms...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 27.08.2010 14:31 | |
|
camo píše: Ja si myslím, že ani stredne veľký portál OOP nepotrebuje. Asi nemám predstavu, čo taký portál vo vašom prevedení robí...
coldak: Čo vlastne robí tvoja metóda load(). To načíta do premennej a volá miesto každého (môjho)echo, metódu render(). Lebo to by na výkone moc nepridalo myslím... Render() by sa volal z load(), alebo z index.php. A čo by vlastne robil ten render(). Vyechoval by predanú premennú, alebo čo aby to malo nejaký hlbší zmysel okrem prehľadnosti kódu.
funkcia load() by mala rozparsovat zdroj dat , v tvojom pripade textovy subor do nejakej inej struktury, napriklad viacrozmerne pole:
Kód: array("TV, audio, video", array("LCD televízory", array("JVC", "LG", "Panasonic", "Philips", "Samsung", "Sony" ) ), array("LED televízory" ) , array("Plazmové televízory" ) ,
)
funkcia render() by potom z toho pola vygenerovala html content v tvojom pripade MENU.
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 27.08.2010 14:44 | |
|
No veď to(viac rozmerné pole) je medzikrok, ktorý tam je úplne navyšše a okrem toho to generovanie viacrozmerného poľa určite bude vyzerať z pohľadu prehľadnosti kódu zversky. A v druhom kroku ho zase budeš prechádzať čo je druhý nadbytočný krok.
Ja skúsim tú moju triedu nejako vylepšiť a potom vám to dám zhodnotiť... Napadá ma že by sa dala veľmi legantne použiť tá tvoja funkcia strspn().
Jedno volanie a vráti level aj položku bez toho zverského poľa...
Veď povedz prečo to pole tam musí byť???
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
rekurzia ti nieco hovori?
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 Bydlisko: Lehota pod ... | Napísal autor témy camo: 27.08.2010 19:14 | |
|
ale prečo tam má byť vykonaná dva krát. Prvý krát, keď je pole generované, druhý krát, keď sa z neho načítajú dáta.
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 28.08.2010 12:00 | |
|
camo píše: ale prečo tam má byť vykonaná dva krát. Prvý krát, keď je pole generované, druhý krát, keď sa z neho načítajú dáta.
preco nezbuzerujes aj tvorcov prehliadacov preco si najprv z html vytvaraju DOM a az ten potom redneruju ?:) ved vytvaranie DOMu je podla teba zbytocny medzikrok a ked uz budes rozbehnuty, tak napis aj do php naco vytvarali connector do MySql co vracia nejake pole ked je to zbytocne a ty si to radsej nacitas priamo z ich datasuborov aby to bolo supis brutal rychlejsie
|
|
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|