Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - exkalibr

Stran: 1 ... 17 18 [19] 20 21 ... 25
271
Vývoj / Re:Dotaz na yield (PHP)
« kdy: 20. 10. 2019, 10:54:02 »
Yak to teda správně napsat?

Kód: [Vybrat]
function yieldEmails($emails){
$start_time = microtime(true);
foreach ($emails as $i => $em):
         $em = emailReplace(strtolower(trim($em)));
         $line = createLineWithTabs($i,$em,$psw1,$users_encoded_id_str_length);
         $line = getLineWithTabs($line, $offset);
         yield array( $line, $offset);
endforeach;
}

Kód: [Vybrat]
function yieldEmails($emails){
$start_time = microtime(true);
foreach ($emails as $i => $em):
         $em = emailReplace(strtolower(trim($em)));
         // complete_line is used to sort
         $line = createLineWithTabs($i,$em,$psw1,$users_encoded_id_str_length);
         $line = getLineWithTabs($line, $offset);
         $line = array( $line, $offset);
         yield $line;
endforeach;
}

To dává tu stejnou chybu, že
Parse error: syntax error, unexpected '$line' (T_VARIABLE)

272
Vývoj / Re:Dotaz na yield (PHP)
« kdy: 20. 10. 2019, 10:33:32 »
No ono to jde na číst i pomocí file_get_contents, mě spíš asi šlo o to si to vyzkoušet a otestovat jak dlouho ta funkce bude trvat. O kolik se prodlouží její čas a jestl se prodlouží... Jak říkám je to vlastně jen takový test, takže ta část, která mě zajímá je právě ta co jsem zmínil.

Načítání souboru jsem tu opravdu řešit nechtěl. Teď přemýšlím jak uspořádat to pole s elementy typu array( emails, offset)

273
Vývoj / Re:Dotaz na yield (PHP)
« kdy: 20. 10. 2019, 09:47:23 »
Koukám ale že jsem dostal chybu:
Parse error: syntax error, unexpected 'array'

copak to nemůže fungovat?
yield array( $line, $offset);

274
Vývoj / Re:Dotaz na yield (PHP)
« kdy: 20. 10. 2019, 09:34:36 »
Měl jsem spíš ten příklad s while.

Není to můj případ. To pole indexes je ale jen dočasné pole, které slouží na uspořádání prvků podle emailů. Přitom ale informace email, offset musí držet společně v jednom uskupení. Mohl bych tedy změnit strukturu na

pole [ 0 => array(email, offset), 1 => array(email, offset), atd ].

Ale pro tento případ nevím jak to dále udělat (poté co dokončím generování), abych to pole uspořádal. Potřebuju na to napsat vlastní funkci usort, nebo mám na to použít array_multisort? Co se na takovou situaci hodí?

275
Vývoj / Dotaz na yield (PHP)
« kdy: 19. 10. 2019, 23:12:56 »
Přečetl jsem si článek nazvaný "How to Read Big Files with PHP (Without Killing Your Server)", kde se píše, že yield se dá použit na streamování, aby funkce nežrali tolik paměti.

Mám takovýto kód:
Kód: [Vybrat]
$emails = file("adresy.txt");
foreach ($emails as $i => $em):
   $em = emailReplace(strtolower(trim($em)));
   $line = createLineWithTabs($i,$em,$psw1,$users_encoded_id_str_length);
   $line = getLineWithTabs($line, $offset);
   $indexes[$line] = $offset;
endforeach;
ksort($indexes);

Zajímá mě, jestli by se z toho kódu mezi file() a ksort() dala udělat funkce která bude yieldovat výstup do toho $indexes.

V ukázkovém ködu jsem totiž našel něco podobného:
Kód: [Vybrat]
$lines[] = trim(fgets($handle));
bylo nahrazeno za
Kód: [Vybrat]
yield trim(fgets($handle));

Takže bych chtěl udělat něco takového:
Kód: [Vybrat]
function yieldEmails(&$emails){...}
indexes = yieldEmails($emails);
A výsledkem by bylo to, že indexes bude obsahovat ty emaily namísto klíčů, a offsety namísto hodnot.

Dá se to udělat? A jestli jo, jak na to?

Pozn. Tato funkce je zatím jen dočasná a používám ji na provizorní sestavení souboru s uživatelskými emaily a hesly. Prostě to připravuje data abych mohl odladit zbytek programu, ale chtěl bych se to na tom naučit jestli to jde.

276
o jakých knihovnách je řeč?

277
Problém je v tom, že co je optimální nyní, nemusí být optimální zítra. Vývoj technologií a přístupy se furt mění. To na co dnes pohlížíte jako na optimální řešení, zítra být optimální nemusí. Jestliže to co nazýváte optimální je pomíjivé, pak to není nejoptimálnější (tj. absolutně dokonalé). Já ale míním ten nejoptimálnější stav, to jest více než sám můžete znát. Je to pomyslný stav, pomyslný pojem asi tak jako v elektronice a elektrice se můžeme bavit o supravodivých materiálech a supravodivosti - to jest taky stav, kterého běžně nedostahujete za normálních okolností, kromě těch nasimulovaných někde v laboratořích nebo speciálních vědeckých podmínkách. A žádný nejsupravodivější materiál taky vlastně neexistuje, protože by to musel být materiál, který nemusíte uměle ochlazovat :D.

278
Mám pocit, že většinou budu provádět zápis do jednoho souboru (append) v rozsahu ~250, ~500, ~1000 bajtů, takže to zarovnávání řešit nemusím.

Ještě dotaz. Potřeboval bych do souboru zapsat rejstřík s idečkama (část první) a k tomu kompatibilní rejstřík s číslama řádků v jiném souboru (část druhá).

S tím se váže otázka na používání funkcí chr a ord. Když bych do souboru chtěl zapsat uživatelská idečka a je třeba to udělat binárně a bezpečně tj. zkopírovat dva bajty s daným id, jak to správně udělat? Já znám jen ty dvě funkce chr a ord mám obavy o to, že tyhle věci budou náročné na výkon. A neměl bych taky řešit endianness (česky endianita?) správnost přečtení z binárního souboru?

279
František Ryšánek:
Díky za rozsáhlý popis.

280
@Kit:
Pro mě není slovo optimální dostačující. Je optimální a ještě víc optimální. Optimální může být pro vysokoúrovňového programátora, tzn. dostačující, ale pro perfekcionistu nízkoúrovňového programátora je nutné použít superlativum nejoptimálnější, protože to znamená dokonalý stav, kterého každý pedant touží dosáhnout.

Slovo read-ahead se má číst [red ~hed] nebo [ríd ~hed]?

281
... nejoptimálnější...
?

Čemu nerozumíš ve slovu "nejoptimálnější"?

282
@Kit: Po jak velkých blocích je nejoptimálnější načítat data ze souboru? Dejmetomu, že mám texťák s emaily a id-éčkama uživatelů, na začátku je hlavička s rejstříkama cca 2KB. Je nějaký rozdíl v rychlosti či odezvě v tom jestli napoprvé načtu 2kB, 4kB nebo 8kB? Opakuji, že jde jen o první načtení hlavičky, z toho zjistím přesné umístění bloku, ve kterém hledat email po přihlášení; Takový blok by pak měl mít prakticky mezi 50-250 znaky. Takže i kdyby měl soubor 4MB, během přihlašování načtu jen hlavičku a pak ten hledaný blok.

283
Lin
dík za tvou přechozí pomoc. Psal, si ale že se už do diskuse nebudeš zapojovat, tak nechápu co tu furt rozebíráš - tvoje pocity mě nezajímají. Stálo mě to dost energie a nemám náladu číst, že je to k ničemu. Fakta a grafy jsem zveřejnil a algorytmy taky. Nezajímá tě to? Tak sem už nepiš. Děkuji.

284
Jenom bych upřesnil, že neustále píšete, že selhávají funkce flock() a file_put_contents() atd., ale ve skutečnosti selhává váš kód. Ty funkce fungují správně, chyby jsou ve vašem kódu.

Nic jiného netvrdím. Záleží přece na tom jakým způsobem ty funkce použijete a to jsem psal, že já hledám funkci, která umožňuje přístup k souboru více uživateli, načíst soubor, změnit soubor, zapsat soubor. V mých testech není ta změna.

285
Jenom bych upřesnil, že neustále píšete, že selhávají funkce flock() a file_put_contents() atd., ale ve skutečnosti selhává váš kód. Ty funkce fungují správně, chyby jsou ve vašem kódu.
Přesně tak. Já jsem myslel, že teď když si Exkalibr ten test doladil, že ho spustil celý znovu a všechny výsledky v grafu jsou SPOLEHLIVÉ zápisy dat, ale vypadá to, že se pořád plácáme v dolaďování testovacího scriptu. Jakýkoliv graf v tuhle chvíli ztrácí smysl. Jediná správná věc je všechno zahodit, napsat znovu test pečlivě (slovy pečlivě) a odprezentovat jediný graf s jasným sdělením. Takhle to vypadá, že cílem bylo pochlubit se uměním vytvářet grafy a testovací script posloužil jen jako generátor náhodných dat.

Blbost. Tady už není co dolaďovat napsal jsem snad jasně, že T10 je dokončený a bez chyb. Není co dolaďovat. K ostatním testům se vracet nebudu, nelze je opravit, když obsahují chyby. Jediné v čem se plácáme dokonala je tvá nechápavost. Psal jsem to už několikrát a nebaví mě to opakovat, že ten graf odráží rychlosti čtení a zápisu a chyby v tom nehrají roli. Když došlo k údajnému selhání fwrite, soubor byl přece načten a zkopírován pomocí copy(). Takže ty časy jsou spolehlivé a věruhodné. Nechápu co to tu furt plácáš.

Stran: 1 ... 17 18 [19] 20 21 ... 25