Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:1f7:8dd8:41...–

peter
PHP › Multidimenzionální asociativ…
1. 10. 2014   #194448

Zkus si zapnout error_reporting. Mozna ti to hlasi nejakou chybu.

Pri zbeznem pohledu mne napada, ze nemuzes prirazovat jako do pole hodnotu, pokud dane pole jeste neexistuje.
$user['service'][$service->name] = 0;
Nikde driv ale nemas definovane
$user['service'] = cokoliv // treba array();
takze to vyhlasi error $user['service'] undefined, hadam, a ignoruje to ten kod.

Kdezto druhy kod ma
$var = $user['services']; ,
ktery vytvori $user['services'], ulozi hodnotu null a priradi do promene link na do pole. Dal se to pak uz pretypuje na pole pri prirazeni dalsi hodnoty v kaskade. Mozna by tedy stacilo misto toho cokoliv jen napsat $user['service'];
 

peter
PHP › predani nazvu funkce do class
1. 10. 2014   #194443

:) To sem vytahl z examplu na te strance. Ja to potrebuju pro tem program s xorem v jinem tematu.

peter
PHP › predani nazvu funkce do class
1. 10. 2014   #194441

Koukam, ze to bude nad me sily a nebo , jestli to spravne chapu, tak je to dost na houbec zapis...
http://php.net/…nonymous.php
Nevim, jake parametry budu chtit predat, spousta prikladu je hned s predanim parametru. Treba tohle vypadalo nadejne.
    const PRICE_BUTTER  = 1.00;
    const PRICE_MILK    = 3.00;
    const PRICE_EGGS    = 6.95;
...
$pricePerItem = constant(__CLASS__ . "::PRICE_" . strtoupper($product));
Tak to proste nebude univerzalni, jestli tam mam delat nejake podivne zapisy nebo rozhodovani.

peter
PHP › rychlost funkce
1. 10. 2014   #194439

Nn. Historie je komplikovanejsi. Ucel je zmena usporadani bitu pro lepsi kompresi zipem. Pascalovska verze dosahovala 92-98% (cili zmenseni kolem 6%, coz by se na prvni pohled mohlo zdat bezcenne, kdyz si neuvedomis, ze to jde pouzit opakovane a v tom packalu to bylo i rychle). Ale tu budu muset jeste vystourat, kde ji mam, pac tahle mi to nedela.

peter
PHP › rychlost funkce
1. 10. 2014   #194436

Porad lepsi reseni.
Chci tam pouzit vice funkci pro ten cyklus. Nejen xorEB, ale take treba AB, notEnotB a ruzne dalsi kombinace. na tehle prvni se snazim odladit rychlost. 4s pro 100k mi prijde hodne. Zvlast, kdyz je ambiciozni plan delat tu operaci na 1G souborech :) Tam by mi treba 30-60s prislo pripustne. Ale 4s x 10 x 1000 = 40.000s za prehnane pomale. Zvlast, kdyz v pascalu podobny program pomoci asm prikazu frci kolem minutu na 1G na starem pc.

peter
PHP › predani nazvu funkce do class
1. 10. 2014   #194435

Potrebuji ve funkci v class pouzit vnejsi funkci, ktera muze, ale nemusi byt soucasti class.

Normalne bych napsal neco jako
function spocitej () {...}
function proved($func) {$func();}
proved('spocitej');

Pro class
function spocitej () {...}
function proved($func) {$this->$func();} //$class::$method($stuff);
proved('spocitej');

Ale ted ja prave chci tyhle obe moznosti sloucit do jedne promenne. Neco jako toto
proved('spocitej');
proved('$this->spocitej');
proved('$jmenoclass::spocitej');
proved(spocitej); // javascriptove
proved($this->spocitej); // javascriptove
proved($jmenoclass::spocitej); // javascriptove

peter
PHP › rychlost funkce
1. 10. 2014   #194433

Mam cyklus, ktery nacita soubor a postupne z nej vytahuje bit po bitu a uklada zpet. Kdyz hlavni cast vytahnu do funkce, tak se to cele zpomaly z 1.75s na 4.3s. Co s tim? Proc se to prepsanim na funkci tak drasticky zpomali?
Ta cast se souborem neni podstatna, v $data1 je postupne 38.000 nejakych znaku ziskanych pomoci fread ze souboru o velikosti 100k

...
$data1 = unpack("C*",$data1);	//convert file string to byte(integer) array - coz je rychlejsi nez pres ord()
$data2 = "";
//$fname = 'xor_eb';
for ($i=1;$i<=$len;$i++)
	{
	$x = $data1[$i];
	$y = 0x00;
	for ($j=0;$j<8;$j++)
		{
$b = ($x>>$j) & 0x01;
$f = ($e ^ ~$b) & 0x01;	//xor
$e = $f;
$y |= $f<<$j;		//or
$stat[0] += $b;		// count 1 input
$stat[1] += $f;		// count 1 output
...

-- s funkci --
...
$data1 = unpack("C*",$data1);	//convert file string to byte array
$data2 = "";
for ($i=1;$i<=$len;$i++)
	{
//	$x = ord($data1[$i]);
	$x = $data1[$i];
	$y = 0x00;
	for ($j=0;$j<8;$j++)
		{
		xor_eb($x,$y,$j,$a,$b,$e,$f,$stat);
		}
...
function xor_eb(&$x,&$y,&$j,&$a,&$b,&$e,&$f,&$stat)
{
$b = ($x>>$j) & 0x01;
$f = ($e ^ ~$b) & 0x01;	//xor
$e = $f;
$y |= $f<<$j;		//or
$stat[0] += $b;		// count 1 input
$stat[1] += $f;		// count 1 output
}

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý