IT NEWS PC REVUE PC FORUMInternet time: @628
Obsah fóra
Pravidlá  •  Kontakt  •  Prihlásenie  •  Registrácia

Stavte na víťaza

Servery Cisco UCS prekonali 45 rekordov za dva roky www.ucsservery.sk

Ste správcom siete?

Zlepšite svoje vedomosti v oblasti správy sietí na našich kurzoch! www.gopas.sk

Potrebujete hotovosť ?

Jednoduché, výhodné a rýchle pôžičky od spoločnosti Profi Credit! www.proficredit.sk

Hry - obchod ProGamingShop.sk

Obrovský výber hier na PC a konzoly za neskutočne nízke ceny. Skladom. www.progamingshop.sk

PZP Genertel online

Garancia najnižšej ceny pre autá nad 70 kw a do 2250 kg! Iba do stredy 15.2. www.genertel.sk

Ako optimalizovat vykon triedy

Zaslať odpoveď
AutorSpráva
Blackshadow
Užívateľ
Užívateľ

Založený: 09.09.2007
Príspevky: 3156
Bydlisko: Nové Zámky

PríspevokZaslal: Po 30.08.10 23:57Odpovedať s citátomNávrat hore

camo napísal:
Myslím, že na to existuje nejaká funkcia ,ale netuším ktorá...

Ty citas tie odkazy vobec, ktore sem davas ?
http://georgik.sinusgear.com/tag/php/

kód:
Veď je to tak jednoduché zístiť, koľko vaša aplikácia spotrebuje pamäte:
echo memory_get_usage() . "\n";


atd..

Dalej si vies zmerat cas...

Zmerias cas na zaciatku dokumentu, potom tvojou triedou daj spracovat nieco v cykle, napriklad 100 krat za sebou a potom znova odmeraj cas a odcitaj ich..

Uvidis vysledok - rozdiel dvoch casov..

Potom nieco zmen v tej triede, napriklad file() a fopen() a zas to spusti.. Uvidis rozdiel..

_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Zobraziť informácie o autoroviOdoslať súkromnú správuZobraziť autorove WWW stránky
camo
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 05.09.2009
Príspevky: 1185
Bydlisko: Lehota pod Vtáčnikom

PríspevokZaslal: Ut 31.08.10 16:08Odpovedať s citátomNávrat hore

No tak som to zlátal. Je to o niečo lepšie?
kód:

<?php
class catalog
{

var $Gsource;
var $Glevel;

public function loadSource($param)
   {
     $this->Gsource=file($param);
   }

public function renderMenu()
   {
    $this->Glevel=0;
    foreach($this->Gsource as $item)
           {
            $item=trim($item);
            $this->renderItem($item);
           }
    $item='**END**';
    $this->renderItem($item);
   }

private function renderItem($item)
   {
    $lev=strspn($item,'-');
    if($lev > $this->Glevel)
      {
       echo "\n<ul>\n\t<li>$item";
       $this->Glevel=$lev;
      }
    else if($lev == $this->Glevel)
           {
            echo "</li>\n\t<li>$item";   //  level netreba nastovat lebo ==
           }
    else if($lev < $this->Glevel)
           {
            $levCk=$lev;    // $levCk - pre potreby tohoto cyklu
            do {                                // ukoncuje otvorene urovne
                echo "</li>\n</ul>\n</li>";
                $levCk++;
               }
            while($levCk < $this->Glevel);
            if($item!='**END**') echo "\n\t<li>$item";
            $this->Glevel=$lev;
           }
   }
}
?>
Zobraziť informácie o autoroviOdoslať súkromnú správuSkypeZobraziť autorove WWW stránky
stenley
Moderátor
Moderátor

Založený: 27.07.2007
Príspevky: 3715
Bydlisko: Bratislava
Vek: 26

PríspevokZaslal: Ut 31.08.10 17:04Odpovedať s citátomNávrat hore

no vidis, ze sa to da, oproti prvemu pokusu je to ovela prehladnejsie a s mensim objemom kodu, ale stale je tam co doladovat... inak, renderItem() ti zle uzatvara urovne, ak sa skoci napr. z tretej na prvu...

_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Zobraziť informácie o autoroviOdoslať súkromnú správuICQJabber
Blackshadow
Užívateľ
Užívateľ

Založený: 09.09.2007
Príspevky: 3156
Bydlisko: Nové Zámky

PríspevokZaslal: Ut 31.08.10 17:14Odpovedať s citátomNávrat hore

No a hlavne tam pomlcky zostavaju

_________________
"It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď
Zobraziť informácie o autoroviOdoslať súkromnú správuZobraziť autorove WWW stránky
coldak
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2008
Príspevky: 927

PríspevokZaslal: Ut 31.08.10 18:14Odpovedať s citátomNávrat hore

a naco je tam trim?
kód:
$item=trim($item);
Zobraziť informácie o autoroviOdoslať súkromnú správu
camo
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 05.09.2009
Príspevky: 1185
Bydlisko: Lehota pod Vtáčnikom

PríspevokZaslal: Ut 31.08.10 18:49Odpovedať s citátomNávrat hore

Stenley:
S tým uzatváraním úrovní som sa teda dobre potrápil. Ale u mňa, keď som si dal na <ul> border tak bolo všetko OK. Tak som trochu zmetený...
A čo by sa tam malo ešte doladiť?

Coldak:
Chcel som, aby ten kód nejako vyzeral aj v prehliadačoch, a aj keď sa to nezdá, môže to byť ešte horšie...

Blackshadow:
Tentokrát to bol úmysel, lebo sa to tak lepšie číta a kontroluje...
Zobraziť informácie o autoroviOdoslať súkromnú správuSkypeZobraziť autorove WWW stránky
coldak
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2008
Príspevky: 927

PríspevokZaslal: Ut 31.08.10 20:14Odpovedať s citátomNávrat hore

camo napísal:
Stenley:
S tým uzatváraním úrovní som sa teda dobre potrápil. Ale u mňa, keď som si dal na <ul> border tak bolo všetko OK. Tak som trochu zmetený...
A čo by sa tam malo ešte doladiť?

toto je vysledny html kod. si si isty ze je kosher ?
kód:
<ul>
   <li>-TV, audio, video
<ul>
   <li>--LCD televízory
<ul>
   <li>---JVC</li>
   <li>---LG</li>
</ul>
</li>
   <li>--LED televízory</li>
   <li>--Prehrávače
<ul>
   <li>---Bluray prehrávače</li>
   <li>---DVD prehrávače</li>
</ul>
</li></li>
</ul>
</li>
   <li>-Veľké spotrebiče
<ul>
   <li>--Práčky</li>
   <li>--Sušičky</li>
   <li>--Chladničky
<ul>
   <li>---voľne stojace</li>
   <li>---vstavané</li>
</ul>
</li>
   <li>--Sporáky</li>
</ul>
</li></li>
</ul>
</li>


camo napísal:
Coldak:
Chcel som, aby ten kód nejako vyzeral aj v prehliadačoch, a aj keď sa to nezdá, môže to byť ešte horšie...

chcel si odstranit znak "\n" z nacitaneho obsahu?
precital si si poriadne syntax prikazu "file" ?
http://sk.php.net/manual/en/function.file.php
naco asi tak sluzi flag "FILE_IGNORE_NEW_LINES"? manual tvrdi : "Do not add newline at the end of each array element"
Zobraziť informácie o autoroviOdoslať súkromnú správu
stenley
Moderátor
Moderátor

Založený: 27.07.2007
Príspevky: 3715
Bydlisko: Bratislava
Vek: 26

PríspevokZaslal: Ut 31.08.10 21:55Odpovedať s citátomNávrat hore

camo napísal:
Stenley:
S tým uzatváraním úrovní som sa teda dobre potrápil. Ale u mňa, keď som si dal na <ul> border tak bolo všetko OK. Tak som trochu zmetený...
A čo by sa tam malo ešte doladiť?

Zjednodusit kod a odstranit problemy so spravnym uzatvaranim urovni by si velmi jednoducho mohol vyriesit pomocou rekurzivnej metody...

_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Zobraziť informácie o autoroviOdoslať súkromnú správuICQJabber
camo
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 05.09.2009
Príspevky: 1185
Bydlisko: Lehota pod Vtáčnikom

PríspevokZaslal: Ut 31.08.10 22:33Odpovedať s citátomNávrat hore

stenley:
No jó no rekurzia....
... je keď fcia volá sama seba... chcel som to tak urobiť, ale nevedel som ako.... Ak by si fakt nemal čo robiť tak a bol by si tak šľachetný a udatný , tak by som to rád videl, lebo si to neviem predstaviť. Pošlem 1kg čokolády podľa vlastného výberu, lebo by som sa to potreboval naučiť...

coldak:
Ty si sa zrejme ani nenarodil, teba rodičia kúpili v obchode s počítačmi nie???

Mám doma jeden taký script na výpis adresára, kde mám rekurziu, ale na to menu som to nevedel namontovať:

kód:
<ul>
<?php
$what=".";
adresar($what);

function adresar($what)
                {
                 $blacklistADR=array('..','.');
                 $open=opendir($what."/");
                 while($item=readdir($open))
                                    {
                                     if(is_dir($item) and in_array($item,$blacklistADR)) continue;
                                     if(is_dir($item))
                                       {
                                        echo "<li><span class=\"red\">$item /adresar/</span><ul>\n";
                                        echo adresar($what."/".$item);
                                       }
                                     else echo "<li><a href=\"".$what."/".$item."\">$item</a></li>\n";
                                    }
                  echo "</ul>";
                 }
?>
</ul>
Zobraziť informácie o autoroviOdoslať súkromnú správuSkypeZobraziť autorove WWW stránky
coldak
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2008
Príspevky: 927

PríspevokZaslal: Ut 31.08.10 22:50Odpovedať s citátomNávrat hore

camo: nemohli ma kupit, lebo ja som na nezaplatenie, ale obcas som na zaplakanie
aby si nepovedal, ze som nebodaj z utulku(cize pes), tak som si dal trochu namahy a par hodin som studoval PHP aby som ti mohol poslat nejaky example.
kód:
<?php
  interface ICatalog {
     public function load($conf);
     public function render();
  }
 
  class TCatalog implements ICatalog {
     private $data=array();
     private $stack = array();
     
    static public function cast(TCatalog $object) {
        return $object;
    }
   
     private function getLevel($txt) {
        return strspn($txt,"-");
     }
     
     private function addNode($sublevel,$line) {
        $subarr = array($line);
        $this->stack[$sublevel]= &$subarr;
        array_push($this->data,&$subarr);
     }

    private function addSubNode($sublevel,$line) {
        $subarr = array($line);
        $this->stack[$sublevel]= &$subarr;
        array_push($this->stack[$sublevel-1],&$subarr);
     }
     
     public function load($conf){
        $level=1;
        $handle = fopen($conf, "r");
         while (!feof($handle)) {
           $line = &fgets($handle);
           $sublevel = $this->getLevel($line);
           $line = trim(ltrim($line,"-"));
           if ($level==$sublevel) {
              $this->addNode($sublevel,$line);
           }
           if ($level<$sublevel) {
              $this->addSubNode($sublevel,$line);
           }
         }
        fclose($handle);
     }
     
     protected function prn($arr,$level) {
        $cnt = &count($arr);
        $level++;
        echo str_repeat("  ", $level)."<UL>\n";
        for ($i=1;$i<$cnt;$i++) {
           echo str_repeat("   ", $level)."<LI>".$arr[$i][0]."</LI>\n";
           if (count(&$arr[$i])>1) {
              $this->prn(&$arr[$i],$level);
           }
        }
        echo str_repeat("  ", $level)."</UL>\n";
     }
     
     public function render(){
        $this->prn($this->data,0);
     }
  }
 
  $catalog = new TCatalog();
  $catalog->load("menu.txt");
  echo "<html>\n<body>\n";
  $catalog->render();
  echo "</body>\n</html>\n";
  echo memory_get_peak_usage();
?>

kedze v PHP mam asi dvojdnove skusenosti tak budem rad ak mi manici v PHP napisu co by sa dalo urobit lepsie. dik
Zobraziť informácie o autoroviOdoslať súkromnú správu
stenley
Moderátor
Moderátor

Založený: 27.07.2007
Príspevky: 3715
Bydlisko: Bratislava
Vek: 26

PríspevokZaslal: St 01.09.10 9:24Odpovedať s citátomNávrat hore

camo napísal:
stenley:
No jó no rekurzia....
... je keď fcia volá sama seba... chcel som to tak urobiť, ale nevedel som ako.... Ak by si fakt nemal čo robiť tak a bol by si tak šľachetný a udatný , tak by som to rád videl, lebo si to neviem predstaviť. Pošlem 1kg čokolády podľa vlastného výberu, lebo by som sa to potreboval naučiť...


tu mas rekurzivnu metodu, co som napisal pred par dnami, ktora ti korektne vygeneruje cely zoznam.

Mensi popis: $content vzdy obsahuje pole poloziek jednej urovne v danej vetve (napr. TV, audio, video a Veľké spotrebiče). V cykle sa postupne cez ne prechadza a kontroluje, ci dana polozka obsahuje dalsi vnoreny zoznam. Ak ano (to je ta podmienka if), metoda zavola samu seba s tym, ze ako svoj parameter uvedie pole poloziek vnoreneho zoznamu najvyssej urovne. Jednoduche, nie?
kód:
private function _genMenu($content)
{
   if(empty($content)) {
      return;   
   }
   
   echo '<ul>';
   foreach($content as $key => $value) {
      $level = $this->_getLevel($key);
         
      echo '<li>'.substr(trim($value), $level);
         
      if($this->_hasChild($key, $level)) {
         $this->_genMenu($this->_getChildren($key, $level));   
      }
         
      echo '</li>';
   }
   echo '</ul>';
}


PS: cokoladu mi posielat nemusis

>coldak: tvoj kod u mna vygeneruje len druhu polovicu stromu a hlasi zopar chyb s referenciami.

_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Zobraziť informácie o autoroviOdoslať súkromnú správuICQJabber
camo
Zablokovaný užívateľ
Zablokovaný užívateľ

Založený: 05.09.2009
Príspevky: 1185
Bydlisko: Lehota pod Vtáčnikom

PríspevokZaslal: St 01.09.10 10:05Odpovedať s citátomNávrat hore

Díky moc, ten zvyšok okolo toho skúsim domyslieť sám, to hádam zvládnem....

PS: Nieje tá coldakova metóda s použitím fopen problematická?! Myslím na súperenie dvoch stránok o prístup k súboru. Tak som to nejako čítal v knihe, ale v manuály som nič také nevidel....


Naposledy upravil camo dňa St 01.09.10 10:21, celkom upravené 1 krát.
Zobraziť informácie o autoroviOdoslať súkromnú správuSkypeZobraziť autorove WWW stránky
coldak
Skúsený užívateľ
Skúsený užívateľ

Založený: 29.10.2008
Príspevky: 927

PríspevokZaslal: St 01.09.10 10:06Odpovedať s citátomNávrat hore

stenley sorac, este na poslednu chvilku som robil nejake pokusy a vymazal som inicializacny prvok pola takze spravne by malo byt
kód:
class TCatalog implements ICatalog {
     private $data=array("root");
     private $stack = array();

edit: ako nastavim php aby mi hlasilo aj chyby referencii ?

edit2: uz som si to nastavil, tie warnings su otom ze cez referenciu na objekt si ho modifikujem, ale to je zamer.
Zobraziť informácie o autoroviOdoslať súkromnú správu
stenley
Moderátor
Moderátor

Založený: 27.07.2007
Príspevky: 3715
Bydlisko: Bratislava
Vek: 26

PríspevokZaslal: St 01.09.10 10:59Odpovedať s citátomNávrat hore

>camo: zvysok je uz malina, najvacsi "problem" je prave to generovanie spravneho vnorenia zoznamov... kedze len citas zo suboru a nijak ho nemodifikujes, tak by nemal byt problem s pristupom k jeho obsahu...

>coldak: je to deprecated, takze by som to uz radsej nepouzival, aj ked sa to da zmenit v php.ini...

_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Zobraziť informácie o autoroviOdoslať súkromnú správuICQJabber
Zobraziť príspevky z predchádzajúcich:    
Zaslať odpoveď
Nemôžete pridávať nové témy do tohto fóra.
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.
Nemôžete hlasovať v tomto fóre.

Powered by phpBB 2.x.x © 2005 - 2012 PCforum, webhosting by WebSupport, edited by JanoF