ups, do nadpisu by to chtelo pridat jeste 'snizeni vykonu'
Příspěvky odeslané z IP adresy 2001:718:2601:258:4dbc:38...–
Vsiml jsem si za posl. 2 dny, ze se FB seka. Firefox 58-59. Schvalne jsem si pustil seznam procesu (ctrl+shif+esc) a provedl par experimentu.
* ctrl+n - otevreni noveho okna narazove ukouslo 10% vykonu
* facebook - pri nabihani stranky sezral dokonce 50-60% vykonu
* Pri spusteni FF to tusim narazove bere 20% vykonu a strasne pomalu se spousti. Jakoze, kdyz na pozadi treba instaluji updaty nejake hry, tak to nabiha jako snek. A pritom na vykresleni par obrazku a bileho obdelniku nevidim nic tak sloziteho. Dokonce by si to mohl ulozit cele okno jako obrazek :) Nebo nekolik obrazku, pokud ma nekdo rad zalozky.
Mate nekdo podobnou zkusenost?
#9 Kit
Spis jsou jine. Nektere jsou i vic neprijemne, jako kompletni zniceni partition nebo uplne zablokovani sitove karty. U win bys udelal preinstalovani ovladace, u linuxu neslo nic, ani modprobe, nic. Slo to povolit docasne jakymisi asi tremi prikazy, ale po restartu jsem byl zas bez sitove karty. Dodelanost linuxu hodnotim take na 10% a za 20 let se nic nezmenilo :) U Win jsou nektere veci lepsi, uzivatelsky administracne privetivejsi. Nicmene, zda se, ze W10 je jeste nema. V tuto chvili je ten rozdil skutecne minimalni. Dokud neupgraduji w10 do stavu aspon XP :)
Znam. Taky mi to delalo u notebooku. Do ted jsem neprisel na to, co s tim. Mozna se to nejak samo spravilo, uz.
Kazdopane, aktualizovani se da hodne omezit. Jen to neni pruhledne, tak snadne najit.
Myslim si, ze to souvisi s tim, ze mam firemni licenci a on se odmita aktualizovat mimo firemni sit. Ale mozna to pindalo i v praci, uz nevim.
U win7, asi 5 pc (z 50) to bylo podobne. Tam to dokonce bylo v takovem stavu, ze on stahl aktualizace, 20, asi 10 min, spustil instalaci, asi 10 min. Pak vyhlasil, ze to nenainstaluje a spustil bod obnovy, 30 min. A po 50 min se cely kolotoc opakoval, dokud jsem konkretni aktualizace nezakazal :) U nekterych pc pomohlo nainstalovat aktualizace v jinem poradi, zakazovat a povolovat. Hloupe je, ze jeden z tech pc byl ciste preinstalovany. Vsechny jsme je preinstalovali a bylo to ok.
Takze muzu rici, ze tohle chovani pochazi uz z win7. A tak nejlepsi volbou by byli XP jako stabilni system. Nic potom uz neni spolehlive. W10 maji pouzivat rozdilove aktualizace a nemusi se restartovat tak casto. S vyhledem do budoucna bych sel do w10. Ale zatim je povazuji za dodelane jen na 10%, takze vicemene peklo na zemi :)
for i:=1 to m do; -- strednik za do je totez jako napsat
for i:=1 to m do begin end;
Kdyz chces neco provadet opakovane, musis to dat dovnitr toho cyklu
for i:=1 to m do
begin
... prikazy ...
end;
Pokud je tam jeden prikaz, lze to napsat bez begin end.
for i:=1 to m do
begin
prikaz();
end;
for i:=1 to m do
prikaz();
for i:=1 to m do prikaz();
Dva cykly v sobe se daji zapsat take bez begin end nebo s nim. Podle toho, co se ti hodi. Osobne radeji pouzivam begin end.
for i:=1 to m do
for j:=1 to n do
begin
... prikazy ...
end;
for i:=1 to m do
begin
... prikazy ...
for j:=1 to n do
begin
... prikazy ...
end;
... prikazy ...
end;
Cili, ta uplne nejmensi verze, ktera by mela fungovat je
for i:=1 to m do
for j:=1 to n do
a[i,j] := random(99) + 1;
W7 - W10 je nestabilni system a ma problemy s aktualizacemi. Obcas je treba oba systemy po aktualizacich restartovat, nefunguje inet. W7 nekdy i vicekrat.
W7 nema jiz podporu MS, takze vetsi aktualizace nebudou. Muze behat sviznejsi na starsim hw.
W10 se da pouzivat, ale je treba cekat necekane problemy. Posledni dobou caste problemy s ovladaci, podobne W8. Aktualizace proti W7 jsou mnohem pohodovejsi zalezitost.
W10 64 nepodporuji nektere programy, na ktere jsi treba zvykly.
Osobne W8-W10 hodnotim jako system hotovy na 10%. Postupne to dodelavaji a delaji obri aktualizace. uvidime, co z toho vyleze. Zatim jsou s tim jenom problemy.
Kdybych si mel vybrat, tak chci W10. Pokud je cpu 64, tak 64.
Hw intel min 5, lepe 7 nebo 9 (Intel Core i5 = ok).
4G ram jsou dost malo na hry, ale na vse ostatni to staci.
160G hdd je dost na hrane, W10 + office + dalsi veci mi ted zabiraji 40G. Ale je to ssd, coz je 30x lepsi nez rotacni hdd. Hry ssd muzou celkem rychle odrovnat.
10 usb muze byt vyhodne, ale obvykle staci 6.
Jo, asi zkousis nejaky nesmysl.
Pres js se da odesilat pres httprequest (jquery). Nebo muzes pouzit skryty iframe (display:none) a menit u nej src. Nebo muzes u tagu script menit src.
Jak to delas, bych to nedelal. Radeji bych odesilal formular ze stranky. Pro zacatecnika lepsi nez se drbat s javascriptem, ktery mnohdy neni uplne kompatibilni.
google = javascript httprequest example get post
function escapeHtml($str) {return htmlspecialchars($str);}
function escapeUrl($str) {return urlencode($str);}
$odkaz = "index.php?a=" . escapeUrl("str");
echo '<a rel="nofollow" href="'.escapeHtml($odkaz).'">odkaz</a>'
Mas divne dotazy. Zkusim ti objasnit, jak to funguje, jak se to obvykle dela, bez vetsiho zabezpeceni.
- Ty si pohlidas v php kodu, treba pomoci session, zda je uzivatel prihlasen, overis si jeho loginy ze session, pripadne nejake session id. (To je jeden include radek na externi php soubor, ktery ho pri spatnem loginu presmeruje na logovaci stranku, treba. Takze nic sloziteho, pokud ten kod uz pouzivas jinde.)
- Pak mu dovolis normalne spustit smazani. Je jedno, zda pres get, ale lepe pres post.
- Neni problem, paranoidne zkontrolovat prava pred kazdym sql dotazem, resp. tvoji funkci. A tez se dela odpojeni po ukonceni sql dotazu, ihned. Preberes data pres fetch a odpojis. Po te data treba zobrazujes nebo zpracovavas dal.
Samozrejme, ted jde spustit treba 10x smazat. To se da vyresit presmerovanim na jinou stranku pomoci header.
Cili, ten mazaci kod budes mit treba smaz.php, form action=smaz.php. A smaz.php ho pres header vrati na puvodni stranku, treba index.php. Tu stranku si muzes taky odeslat formularem, odkazem.
K presmerovani pripojis do adresy treba parametr, ktery uzivateli vypise chybu nebo, ze akce probehla v poradku.
Pokud se jedna o hackera a spusti ti tam neco 10x, tak s tim mnoho nenadelas. Ale 10x nesmaze radek z db, protoze radky maji sve autoincrement id, obvykle, a takove tam existuje jen 1x. Jenom ti hacker trochu zatizi server.
Samozrejme se da vyuzit toho, ze se uzivatel neodhlasil, odesel od pc a spustit tam nejake dalsi kody. Ale s tim ty mnoho neudelas, session je platne, nemuzes vedet, ze tam uz nesedi puvodni uzivatel.
Mno, co se tyce sql. K sql se pripojujes z php kodu na sveho univerzalniho uzivatele, treba fix_www / heslo. Ten je univerzalni pro kazdeho uzivatele webu. Ty tedy hlidanim prav v php musis zabezpecit, aby se tedy nespustil zadny sql dotaz, pokud uzivatele radne neoveris.
Tady je moznost, pokud to hosting umozni, udelat si nad databazi vic uzivatelu. A pak se muzes k sql pripojovat ruznymi uzivateli s ruznymi sql pravy. Ale to se obvykle neda, obvykle mas 1 usera (free db hostingy). Ale ta moznost je, na localhostu nebo lepsim hostingu.
Muzes pak nastavit prava treba fix_quest, ktery si smi prohlizet treba jen nektere tabulky a at posila jake chce prikaxy pres php, tak sql ho nepusti k tem ostatnim. Takze, pokud to jde a vis, co delas, rozhodne doporucuji. Jenze, stale to zavisi na tom, jak dobre poresis prava pres php, aby te quest nzziskal nekde admin prava. Dobre reseni je obvykle pracne. Tys zadal jednoduche, bohuzel.
Bud pouzijes join, viz Kit a nebo cely ten kod budes muset prekopat, abys ho mel spravne.
google = mysql query select left join example
-> http://www.mysqltutorial.org/…in.aspx
priklad propojeni tabulek customers a orders
SELECT
c.customerNumber,
c.customerName,
orderNumber,
o.status
FROM
customers c
LEFT JOIN orders o ON c.customerNumber = o.customerNumber;
Ta druha moznost je horsi. Tam je treba zmenit cely kod.
'Skúšal som túto časť kódu $ponuka_get = ... Dávať aj do cyklov while, ale bezúspešne, výsledok stále rovnaký.'
Njn. Takze zpet k zakladum.
$query = "SELECT * FROM `rezervacie` WHERE `userid`>='".$_SESSION['uid']."'"; // nemas osetreny vstup do sql dotazu
$resource = mysqli_query($connect, $query) or die(mysqli_error($connect));
// nemas tam vubec kontrolu, zda je resource objekt, cili neni ===false
while(($row = mysqli_fetch_assoc($resource))!==null) // nemas kontrolu zda neni $row null
{
$id = $row['destinationid'];
}
Co to ted udela?
- Do promenne $query ulozis zapis sql dotazu jako string. Doporucuji pouzivat pomocnou pormennou.
- $query predas funkci mysqli_query
- ta vrati false / mysqli_result_object (true)
- z tohoto specialniho objektu lze ziskat data jen pres mysqli_fetch_assoc neb jinou fetch funkci
Super, takze mas cyklus, ktery z resource ziskava $id. V tom cyklu to $id nijak nepouzivas. Po skonceni cyklu zustane v $id pouze posledni hodnota. Takze do toho cyklu musis pridat nejaky dalsi kod, ktery to $id nejak pouzije. Treba aspon echo $id;
// Pr. 1 - echo pod cyklem, pod zavorkami { ... } echo $id;
$id = 1;
$id = 4;
$id = 2;
echo $id; // Vypise 2.
// Pr. 2 - echo uvnitr cyklu, uvnitr zavorek { ... echo $id; }
$id = 1;
echo $id; // Vypise 1.
$id = 4;
echo $id; // Vypise 4.
$id = 2;
echo $id; // Vypise 2.
Pokud to id ches pouzit pro dalsi sql dotaz, tak klidne muzes. Ale pak vse, kolem toho dotazu musi byt uvnitr prvniho while. A to plati i pro vypis.
function sql($query) // connect potrebujes pouze v pripade, kdy pouzivat 2 a vice connectu
{
return mysqli_query($query) or die(mysqli_error());
}
echo '<pre>';
$query1 = "SELECT * FROM `rezervacie` WHERE `userid`>='%s'";
$query2 = "SELECT * FROM `ponuky` WHERE `id`='%s'";
$q1 = sprintf($query1,$_SESSION['uid']); // A1
$r1 = sql($query); // A2
while(($row1 = mysqli_fetch_assoc($r1))!==null) // A3
{
$id1 = $row['destinationid'];
var_dump($row1); // A4
$q1 = sprintf($query2,$id1); // B1
$r2 = sql($query); // B2
while(($row2 = mysqli_fetch_assoc($r2))!==null) // B3
{
var_dump($row2); // B4
}
}
echo '</pre>';
A1 - A4 je v podstate stejne jako B1-B4. Ale B je uvnitr cyklu pro A. Kdezto ty to mas pekne pod sebou, takze se vypise pouze jedina hodnota, radek.
Pozn. To sprintf neresi tvuj problem s bezpecnosti, pouze jsem si chtel zjednodusit praci a mit ty sql dotazy pohromade.
Nova stranka se neblokuje, pokud to ma uzivatel pro dany web povolene.
Blokovani se moc obejit neda, protoze to zneuzivaji pro reklamy, tezby kryptomen a ruzne viry.
sledujserialy.sk/serialy/
Resi neco podobne, kliknutim na prehravani na video. Muzes zkusit zkouknout jejich kod.
Nastesti adblocky, ktere jeste zlocinci nestihly odkoupit dokazi takove stranky zablokovat.
Ta webka tam ma jakesi js nacitani stranek a nejspis tezi i kryptomeny. Se nejaky cas ceka. Pak teprve jde dalsimi kliky video spustit.
Mozna by slo udelat, ze si pres httprequest nactes stranku a pak obcah vepises do noveho okna.
//obsah = ... htttprequest ...
win = window.open('','_blank');
doc = win.document;
doc.write(obsah)
Napis dotaz, zkusime vysvetlit. Treba, kdyz ti ukol nefunguje. Ale pocita se s vlastni iniciativou. Vetsina lidi moc nechce reagovat, kdyz sem das zadani a vyreste to cele za mne :)
Tys mne nepochopil. Showmodal funguje spravne. Pokud mas chybu v php a generujes s nim html, tak to nejlepe uvidis ve www prohlizeci, webova / javascriptova konzola nebo zdrojovy kod stranky. Tam vidis html kod, ktery generujes phpckem. To, co popisujes, s tim textem, to mas na pastebin jako fff. To funguje spravne.
Ten php kod mas samozrejme spatne, uvozovky, treba. Mi slo spis o to, aby sis to nasel sam a vvedel, jak takove chyby najit.
Zkus pockat na dalsi update. I ve FF ted delaji ruzne cary mary a funguji nektere veci jen v nekterych verzich. Treba, ja byl donucem downgradovat z 59 na 58 :)
Razeni, treba v js vypada takto
function cmp(a,b) {return a-b;}
sort(arr);
// if (cmp(arr[i],arr[j])>0) {neco proved}
sort je nejaky serazovaci algoritmus, ktery porovnava 2 hodnoty a pak s nimi neco provede. K porovnani si vola funkci cmp.
Serazovaci alg. muze vypadat treba nejak takhle
// pro 4 cisla
if (cmp(arr[n][i+0],arr[n][i+1])>0) {swap(n,i+0,i+1);}
if (cmp(arr[n][i+2],arr[n][i+3])>0) {swap(n,i+2,i+3);}
if (cmp(arr[n][i+0],arr[n][i+2])>0) {swap(n,i+0,i+2);}
if (cmp(arr[n][i+1],arr[n][i+3])>0) {swap(n,i+1,i+3);}
if (cmp(arr[n][i+1],arr[n][i+2])>0) {swap(n,i+1,i+2);}
// pro n cisel - kod z wiki
insertionSort(A)
pro i od 1 do počtu prvků opakuj:
hodnota = A[i];
j = i-1;
pokud j >= 0 a zároveň A[j] > hodnota opakuj:
A[j+1] = A[j];
A[j] = hodnota;
j--;
Muzes si vygenerovat prevodni tabulky.
- 0-15 ... 0-F nebo
- totez + 0-15 shiftnute vlevo o 4. Takze, pak to staci jen z andovat. A nebo
- kompletne pro vsechny 0-255 (php/pascal chr/ord)
Jo, a pak teda nastava problem tez pohodlne editace. Kdyz se do TD zapise INPUT, tak se nedaji kopirovat cele radky nebo 5 bunek najednou z 12, treba. To jeste nejak vymyslim, ale kdyby mel nekdo napad, tim lepe :)
U klasicke tabulky, oznaceni nekolika TD a vlozeni do excelu, to jde. Pekne to rozdeli na sloupecky. Takze to same bych udelal pri vlozeni do inputu. Ale zas, kdyz kliknutim na bunku vytvorim INPUT v ni, tak nemuze oznacovat tabulku jako TD. To jsou takove dost protichudne veci :) Excel to ma asi jednodussi s tim, ze kazda bunka se chova jako input. jenze input v html, kdyz se v nem oznacuje text, tak oznacovani nemuze pretect. Nelze tak oznacit 2 inputy, text v nich. To je proste neresitelny problem. Teda, nez neco vymyslim :)
Mam tabulku, kterou bych potreboval, aby mohlo editovat vice uzivatelu. V tabulce jsou citliva data, takze kolega nechce pouzit Office 365.
Jak to teda udelat nejlepe a pohodlne? Idealne, aby to fungovalo jako v excelu. Snadne kopirovani bunek, radku a tak?
Zatim mam vymyslene jen casti samostatne.
- PHP, kteremu poslu request, on prida, smaze, updatuje radek v csv. + to loguje + kopiruje soubor jako zalohu, historii. Otevre csv, zmeni, zavre csv.
- html, ktere zobrazi csv jako tabulku a kliknutim na policko se zmeni na input.
No, ale to je editace po policku a ted bych musel pro kazde policko odesilat request na cely radek. A kdyz bude chtit vice uzivatelu editovat? Kdyz nekdo neco zmeni, tak by se jinym musel nacist cely csv nebo by museli ziskat aspon seznam zmen. Jenze, co kdyz edituji zrovna stejny radek? A co kdyz ten radek predchozi uzivatel smazal? Mam jim to smazat pri editaci? :)
V podstate, principialne by to mohlo fungovat jako takovy chat. Ze bych si pri odeslani stahl zrovna i seznam novych zmen. Proti chatu se to prave komplikuje tim, ze radky. Muj radek 12 neni 12, pokud mi mezitim nekdo smazal radek 5 a 8, treba. Takze edituji radek 10.
Nebo to muzu jeste blokovat zamkem. Ale obcas pracuji 2 lide ve stejne budove na jinych mistech se stejnou tabulkou naraz. Takze zamcenim by ten druhy nemohl editovat.
Nejake napady? Nebo dalsi problematicke situace?
S tim ti neporadim. Spis nekdo jiny. Zas tolik o xml nevim. Tam bys mel asi parsovat xml jinym zpusobem. Najit zbozi a jeho kategorie. Ten kod, ktery jsi dal na zacatku vybere vsechny tagy <kategorie> z celeho xml nezavisle na tom, zda patri ke zbozi nebo ne. Ty bys tam mel mit se zbozim neco jako
$zbozi = $children->zbozi;
$cat_str = $zbozi->kategorie;
Ale nejsem si jisty, zda to jde takhle napsat.
mne napadlo pres svatky, ze to porovnani pro parent id by slo udelat jako string a neni treba pak nic vyhledavat. Jakoze nejdriv to explodujes a pak implodujes. Zhruba neco takove. Je to spis myslenka, nezkousel jsem to.
arr = explode(' / ', str);
parent = ''
cyklus (i = 0..count(arr))
{
name = arr[i];
cyklus (j = 0..count(out))
{
if (out[name]==name && out[parent]==parent)
{break}
}
if (j<count(out))
{out[] = array('name'=name,'parent'=parent)}
parent .= arr[i].' ';
}
s = v * t
v = 30 km/h
t = ?
s = 6.3 km
6.3 = 30 * t [h]
Na geometrie nevidim, neslysim :) Tudle jsem chvili psal do jakehosi math fora a dali mi ban, za to, ze prozrazuji skolni ulohy a ze si na mne jedna ucitelka zasedla, ze tam pry strasne skodim :) Pritom ona se k tazatelum obvykle chovala dost nevlidne. Ale kdyz uz neco resila, tak to bylo samozrejme na jednicku, to zas jo.
Jeste je jeden zajimavy pripad, ktery jsem nezminil. Kdy ten objekt A (naboj) je vetsi nez B (meteor).
Takze by bylo mozna dobre provest jeste opacnou kontrolu. Zamenit tam A a B.
A[ B ] - B je v A, souradnice Bxy, Ax1<Bx1<Ax2
B[ A ] - A je v B, Ax1>Bx1>Ax2
Ted ti nereknu, jak jsem to nekde resil, ale tusim to jde napsat nejak zjednodusene. Ale je treba zacit tim, ze si napises uplne vsechny podminky pro vsechny pripady. Cili, nakreslis si 2 ctverecky, jeden mensi, udelas prekryti, vsechny strany, rohy. Pak velikosti otocis a udelas totez. Jake podminky plati pro x1, x2, y1, y2 pro A i B.
// id, lvl, name
id - je id rodice, nadrazene kategoie.
Kdyz id==i pro cyklus vypisovani pole $out[$i], tak je to hlavni kategorie, lvl=0.
kdyz id!=i, tak je to podkategorie, lvl=1,2,3.... Id je tudiz odkaz na nadrazenou kategorii, $out[$id][2] je nazev nadrazene kategorie.
Nebo muzes pouzit zapis pomoci textovych klicu, indexu...
array(count($out), $i, $arr[$i]); // zmenis na
array('id' => count($out), 'lvl' => $i, 'name' => $arr[$i]);
$out[$id][2] // zmenis na
$out[$id]['name']
id, name potrebujes pak pro databazi. Mozna i lvl. S lvl se to da zkomplikovat tak, ze muzes mit stejny nazev kategorie, ale s jinym lvl
obleceni / spodni pradlo / plavky / zeny
obleceni / kalhoty / zeny
Kdezto ten muj kousek kodu tohle neresi. On by v $out nasel 'zeny' maji nadrazenou kategorii 'plavky' a kalhoty i plavky by byli pod plavkami. Takze, krome nalezeno bys musel zkontrolovat jeste
if ($nalezeno===false && $out[$nalezeno]['lvl']==$i-1) // level nebo lepe...
if ($nalezeno===false && $out[$nalezeno]['name']==$arr[$i]) // name a nebo jeste lepe oboje lvl i name
A uplne nejlepe vsechny name vsech nadrazenych kategorii, proc?
hracky / drevene / modre
zidle / drevene / modre
Tady by ti zas 'modre' 'drevene' 'zidle' zaradil pod 'hracky' :)
Jenze, nastava tu trochu problem, zda chces do db pridat nove kategorie nebo kompletne prepsat celou db. Pridani by bylo malinko slozitejsi. Musel by sis vytahnout z db nejvetsi id kategorie a pak pri zapise k nemu pricitat $i pri prochazeni pole $out. jinak si prepises v db nejakou kategorii, ktera tam uz je.
A dalsi problem, pokud v db uz je stejne nazvana kategorie.
juraj175 - Kdyz to nejde spustit, si tam na zacatek pridej error_reporting a melo by to vypsat chyby, proc. Jsem doufal, ze se v tom kodu vyznas, kdyz je v podstate stejny, jako tvuj.
@ini_set('error_reporting', E_ALL);
@ini_set("display_errors", "on");
error_reporting(E_ALL);
Ok, ale problem je malinko slozitejsi. Tak, musis ukladat i level, uroven kategorie.
$out[] = array(count($out), $i, $arr[$i]); // id, level, name
Ted vznika rozpor, zda pouzit in_array nebo spis array_search. Pres array_search ziskas key, kde to je v $outu; $nalezeno = $out[$key]. Pokud to nenajde, pridas to nakonec. Pokud to najde, tak $key = $id rodice, parent, nadrazene kategorie.
if ($nalezeno===false)
{
array(count($out), $i, $arr[$i]); // id, lvl, name - id = nova polozka pole
}
else
{
array($out[$nalezeno][0], $i, $arr[$i]); // id, lvl, name - id = id nalezene kategorie
}
A s timhle to uz muzes nasoukat do sql.
Level ukladat nemusis, v podstate. Ale muzes, pro kontrolu a mozna ti to pomuze s nekterymi sql dotazy.
??? Neni mi uplne jasne, co chces docilit. Nic z toho, co zminujes nepouzivam. Formular mailem se da poslat treba takhle
<form name="doposty" action="mailto:mracek@xko.cz" method="get" enctype="text/plain">
<table cellspacing="0" align="center">
<tbody valign="top">
<tr> <th align="right"><label>Nadpis:</label></th>
<td><input name="Subject" value="Mail z www" readonly="readonly" type="text"></td></tr>
<tr> <th><label>Zpráva:</label></th>
<td><textarea name="Body" cols="40" rows="7"></textarea></td></tr>
</tbody></table>
<p align="center"><input value="Přesunout do mailu" type="submit"> (Outlooku)</p>
</form>
Kdyz to chces pres php, tak jen zmenis action a pridas kolonku 'to' propadne 'from' (jmeno si muzes zvolit, ale v php musi byt stejne vcetne velikosti pismen. Nebo oboje ci jedno z toho vyplnis primo v php)
<form action="mailto:mracek@xko.cz" method="post" enctype="text/plain">
<form action="soubor.php" method="post" enctype="text/plain">
komu: <input name="to" value="" type="text">
od koho: <input name="from" value="" type="text">
A v php mas pak kod
http://php.net/…ion.mail.php
--- tohle je example ---
<?php
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
--- a jeho uprava ---
<?php
$from = $_POST['from']; // $from = 'webmaster@example.com'
$to = $_POST['to'];
$subject = $_POST['Subject'];
$message = $_POST['Body'];
$headers = 'From: ' . $from . "\r\n" .
'Reply-To: ' . $from . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
Nebo si to muzes ulozit do souboru nebo databaze, pak misto mail pouzijes fwrite, opet viz priklady. Tady bych ti poradil zadat do
google = php guest book example fwrite (navstevni kniha)
php.net/fwrite
mail($to, $subject, $message, $headers);
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// the content of 'data.txt' is now 123 and not 23!
?>
--- uprava ---
<?php
$str = implode(';', array($from, $to, $message) . "\n";
$fp = fopen('data.txt', 'w'); // otevrit
fwrite($fp, $str); // zapsat
fclose($fp); // zavrit
// the content of 'data.txt' is now 123 and not 23!
?>
google = php guest book example database
google = php guest book example wordpress
S databazi je to slozitejsi, tam je vic druhu, zadnou konkretni jsi nezminil. Nevim, co minis tim wordpressem a tak, jak si to predstavujes. Wordpress funguje tak, ze ma na disku soubor s databazi. Ta obsahuje tabulkyy, ktere vypadaji jako tabulka z excelu. Mas tam zahlavi a udaje. Wordpres dela jen to, ze pouzije sql prikaz, ktery data z tech tabulek vytahne nebo do nich zapise. Je to podobne jako se souborem, ale s sql prikazy se lepe pracuje, sami resi ulohy jako vyhledat, ulozit, kam, jak. U souboru by sis to musel naprogramovat, funkci pro vyhledani, treba vsechny komentare pro stranku id=12345. Ok. No, jenze potiz je, ze wordpress ma vlastni tabulky a ten program s nimi pracuje. Pokud si chces sam neco pridavat, pak si nejspis budes muset vytvorit valstni tabulku. Nebo najit plugin, ktery umi pracovat s wordpressovymi tabulkami bez toho, aby data v nich poskodil. Nebo plugin, co si sam prida vlastni tabulku a pak s ni pracuje.
Jinymi slovy, musel bys vedet, co presne jsou zac udaje, ktere posilas a mail, aby se ti dalo poradit, jaky konkretni plugin by mohl pro wordpress splnovat tve pozadavky. Nebo tam mozna uz je neco pripravene. S wp nepracuji, takze nevim. Ale je tu fura lidi, co ho zna.
No, a v cem je jako problem. Co ti to dela, nedela. Nejaky funkcni example? Jakoze mluvis o necem jinem nez odpovida xml kodu.
Drogerie
Kuchyně
Mytí nádobí
Ruční mytí nádobí
<kategorie>Drogerie / Praní / Prací prostředky / Speciály</kategorie>
Jakoze explode ti bude fungovat, ale v kodu mas mezery. Ale nejsem si ted uplne jisty, co to udela, kdyz tam lomitko nebude, jestli bys tam nemel mit jeste podminku na strpos().
$kategoriep = explode("/", $catname);
$kategoriep = explode(" / ", $catname);
Tam se da pouzit foreach a pak se to da napsat trochu jinak
for($i=0;$i<count($kategoriep);$i++){
foreach($kategoriep as $key=>$value){
if(!in_array($kategoriep[$i],$output)){
if(!in_array($value,$output)){
A ted zbyva zjistit, co presne chces docilit. Chces udelat seznam vsech stringu, co se muzou vyskytovat v $category->kategorie? Nebo tam chces resit i level? S levelem by to mohlo vypadat takhle:
if (!isset($output[$key])) {$output[$key] = array();}
if(!in_array($value,$output[$key])){
$output[$key][] = $kategoriep[$i];
A mimochodem, tohle bych prejmenoval
foreach($xml->children() as $category) { $catname = $category->kategorie;
foreach($xml->children() as $product) { $catname = $product->kategorie;
Hm, jak to popisujes, tak by mi to nevyhovovalo. Radeji delam slovnik podle sebe a umisteni na strance nez spolehat na automaticky preklad. Auto preklad muze byt ok, ale ve vyznamu umisteni v kontextu uz je to treba jine, divne, matouci, nesouvisejici. A tak radeji, at je to anglicky nez tam mit nejaky cesky jiny vyznam.
Zkus pouzit span / font-size/line-height, padding, background.
A kdyz po smajlikovi pises dal, tak, kam dava pismenka?
Jako, myslim, on, ze to treba napise.
Jo, to mi prave taky. Treba to bliz vysvetli, kde se roblem nachazi.
google = js detect chrome browser
isChromium = window.chrome// is Google Chrome on IOS
winNav = window.navigator,
isIOSChrome = winNav.userAgent.match("CriOS");
// ------
isChrome: /Google Inc/.test(navigator.vendor),
isChromeIOS: /CriOS/.test(navigator.userAgent),
isChromiumBased: !!window.chrome && !/Edge/.test(navigator.userAgent),
google = js chrome detect active microphone
// initialization
if( localStorage.getItem("voice_access") === null ){
// just assume it is prompt
localStorage.setItem("voice_access", "prompt");
}
// Then somewhere
navigator.getUserMedia({audio: true}, function(e){
// http://stackoverflow.com/…3581/1008999
//
// In chrome, If your app is running from SSL (https://),
// this permission will be persistent.
// That is, users won't have to grant/deny access every time.
localStorage.setItem("voice_access", "granted");
}, function(err){
if(err.name == "PermissionDismissedError"){
localStorage.setItem("voice_access", "prompt");
}
if(err.name == "PermissionDeniedError"){
localStorage.setItem("voice_access", "denied");
}
});
Mozna na jine strance.
https://forums.asp.net/t/2104615.aspx?…
Mozna, muzes zkusit pridat navod, jak zapnout mikrofone. Spousta uzivatelu to nevi. Treba je nutne povolit mf u win, pak v chrome a pak jeste tvym tlacitkem. Mozna by slo neco nahrat, zjistit, ze je to jen sum a vypsat uzivateli, ze jestli neco nahraval, pak nejspis nema povoleny mikrofon a dat mu link, jak povolit mikrofon.
Jinak, jestli tam pouzivas javascript, tak ten si umi zkontrolovat kompatibilitu treba tak, ze testnes existenci funkce. Treba pouzivas
// webcam.capture();
if (!webcam.capture) {alert('error');}
if (typeof webcam.capture == 'undefined') {alert('error');}
#14 MilanL
Jake leve menu? Tam preci zadne neni.
http://redata.cz/?…
Schvalne jsem to zkusil nechat updatnout zas na 59 verzi. Opet to zacalo spatne vykreslovat :)
Stahl jsem si 58, preinstaloval a ted se tabulka vykresluje ok. Fakt, dekuji Firefox za problemy!
Vcera se mi provedli update win a FF a FF se cely rozbil. Spatne mi vykresluje text i pozadi. Ale jen na nekterych strankach a ne vsechno.
W10, 32 bit, FF 59.
Napr.
file:///C:/pp/js-zas3/zas3.htm
Mam tam program, ktery nacte z CSV data a pak je zobrazi jako tabulku. Tabulka je neviditelna. Text i pozadi je bile.
Kdyz se ale text oznaci, tak tam je. Jen neni videt.
Dela to, ikdyz smazu css.
Dela to, ikdyz kliknu Zobrazit - zakazat styly.
A v Edge je vse ok.
Zkousel jsem zakazat i hw akceleraci, ale nic se nestalo.
Zkousel jsem nekolik restartu win, FF. Take nic.
Zkousel jsem win updaty, jestli treba neco jeste neoinstaluje a take nic.
V pondeli vse fungovalo jeste spravne!
Ted premyslim, jestli nezkusim downgade FF na 58. Tim by se aspon overilo, jestli za to muzou ms updaty nebo FF.
Prevod 3x 8-bit cisel na 2x 12-bit. Cele to das do cyklu s i+=3, j+=2
# hi<<8 + lo
r[j] = p[i]<<4 + p[i+1]>>4;
r[j+1] = (p[i+1] & 0x0F)<<8 + p[i+2];
# i, i+1, i+2 => a, b
Mozna bych mohl jeste objasnit. Canvas je tabulka pixelu, souradnice x,y + barva rgb. Kreslit tam muzes jen pixely. Jsou funkce, treba create_text, ktera kresli pixely pomoci fontu a pismenek. A pak jine, ktere kresli ramecky a kolecka. Ale vzdycky muzes pouzit vlastni reseni a pixel po pixelu vykreslit treba cislo 0.
c.create_text(70,100, text='score:',font='Arial 30')
Odpoved uz znas. Do canvasu text uz pixelujes pres create_text. Print s objektem canvas nema nic spolecne. Nechapu, jak te mohlo napadnout ho pouzit?
Pro objekty je lepsi pouzivat aspon 3-5 pismen. c je spatne, canvas. (Nevim, ze by nekdo pouzival jinou zkratku, treba cnv.)
Musis postupovat logicky pri hledani chyb. Neco ti to tam vypisuje. Mas tam furu echo. Co kdybys mezi kazdy radek pridal echo 1; echo 2; ... A pak se mrkl ve www prohlizeci na zdrojovy kod? Zjistis, ze je to treba mezi echo 13; a echo 14;.
Osobne bych misto echo pouzil $str.= '...''; a echo az na konci. Protoze se $str muzes delat psi kusy jako echo '<pre>'.htmlspecialchars($str).'</pre>'; a vypsat si html kod.
No, a kdyz se podivas na obrazek, tak jednou je to s mezerami a podruhe se svislitky | a navic to konci >. Takze pujde o nejaky zapomenuty vypis bud s implode nebo vypis primo zdroje, pokud tam ukladas se svislitky. A nebo tam mas spatne uvozovky. treba nevis, ze se do html vypisuje pres htmlspacialchars. A ze v html se nektere uvozovky zapisuji jako "e;.
1) $row=explode("|",$radky[$i]);
2) echo ' '.$radky[$i].'><label><br><hr><input type="checkbox" name="index[]" value="'.$i.'">Vyber pro smazání záznamu</label><br>'."";
:) Tak ho tam dej a sprav styly, aby to fungovalo. Zjisti ti z css, co meni styly pro ten img. Mozna by stacilo pridat dalsi tridu/class k tomu divu. A nebo to nastav u toho obrazku. Pres tridu nebo natvrdo pres style="".
Total commander ma moznost porovnat 2 soubory. To same dela ve win prikaz FC. Na linuxu diff, ktery podle mne dava hezci vystup. Lze najit diff.exe i pro win (balicek UnxUtils.zip). Pokud zalohujes, tak snadno najdes zmeny.
Firefox > Nastroje > Vyvoj webu > Editor stylu
Zkusil jsem dat do posledniho css na konec a ten hnedy pruh zmizel. Ale nevim, zda je to ok. Nekde mas neco spatne, protoze to pretece pres tag html. A to ikdyz jsem html tagu dal border. Zkus pak validator na html kod, css kod.
div {border:1px solid #f00; padding:0; margin:0 !important; }
https://validator.w3.org/
https://jigsaw.w3.org/css-validator/
Najdi si dokumentaci k formatu, v jakem to poskytuje CS a v jakem ostatni hry. Najdi rozdil.
Kdyz je tam array, muzes zkusit tam pouzit
$str = implode(';', $array); // ulozi do $str; nebo
var_dump($array); // vypise na obrazovku, abys videl, ktery prvek z array tam chces mit, potom
$str = $array[3] // pro ctvrty, cislovano od 0 nebo
$str = $array['nazev'] // pokud prvky nejsou cislovane, viz, co vypise $array
Dokumentace:
Example #1 implode() example
<?php
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
echo $comma_separated; // lastname,email,phone
// Empty string when using an empty array:
var_dump(implode('hello', array())); // string(0) ""
?>
http://php.net/manual/en/language.types.array.php
// var_dump ti vypise pak neso takoveho. Pripadne pred to muzes dat
echo '<pre>';
array(4) {
["foo"]=> // index pojmenovany nazvem 'foo'
string(3) "bar"
["bar"]=>
string(3) "foo"
[100]=> // index pojmenovany cislem 100
int(-100)
[-100]=>
int(100)
}
CS vraci binarni soubor, seznam polozek je asi tento
https://developer.valvesoftware.com/…rver_queries#…
Mozna je tam array, protoze tam bezi vice serveru.
Nebo mozna hledas tohle:
$form->addEmail('email', 'Email:') ->setDefaultValue('user@example.com');
$form->addText('name', 'Name:');
$form->addInteger('age', 'Age:');
$form->setDefaults([ 'name' => 'John', 'age' => '33' ]);
https://doc.nette.org/en/2.4/forms
Musis to napsat jako pro deti zakladni skoly, jinak je velmi obtizne pochopit tvuj dotaz?
protected function createComponentEditorConfiColorForm() {
$form = new Form;
$form->addHidden('img_color_id');
$form->addHidden('product_image_group_id' /*,
$this->confiRepository->getColProductCategories($configure_id)*/);
...
Tady potrebujes pridat dalsi polozku do formulare?
$form->addHidden('img_color_id') - A z ceho ziskavas 'img_color_id'?
Tak na tom samem miste pridej do toho dalsi promennou. Ten kod jsi neuvedl. Asi nejaka globalni promenna neco jako $this->data->img_color_id = 123
A jo :) Ve FF, IE, Edge mi to funguje pres file:///C:/x/gal/gal.htm spravne. Abych nemusel cekat, zmensil jsem pocet obrazku na pic-3 a upravil cas figure
figure {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
/*animation*/
animation: slideShow 12s linear infinite 0s;
-o-animation: slideShow 12s linear infinite 0s;
-moz-animation: slideShow 12s linear infinite 0s;
-webkit-animation: slideShow 12s linear infinite 0s;
}
...
.pic-3 {
...
Kit ti rika, abys k uzivateli pridal 2 dalsi sloupecky INT a pocital to, jak potrebujes. Tu tabulku budes mit zvlast. Je to rychlejsi nez pokazde prohledavat celou tu tabulku.
A samozrejme to jde udelat i z te tabulky.
x = SELECT id WHERE uzivatel=Franta AND prihlaseni=true ORDER BY datum DESC LIMIT 1
SELECT COUNT(id) WHERE uzivatel=Franta AND prihlaseni=false AND datum>x
A asi by to slo napsat do jednoho selectu
Super. Trochu jsem se s tim pra, ale dava to v podstate to, co potrebuji
$command = "UnxUtils\\usr\\local\\wbin\\diff.exe -U0 $file1_name $file2_name"; // win diff (UnxUtils.zip) - seznam zmen smazano, pridano
$output = array();
$status = 0;
exec($command, $output, $status);
var_dump('command',$command);
var_dump('output',$output);
var_dump('status',$status);
array(8) {
[0]=>
string(62) "--- ./data_old/zas_20170526091704.csv Mon Feb 26 15:12:22 2018"
[1]=>
string(43) "+++ ./data/zas.csv Wed May 17 14:18:26 2017"
[2]=>
string(13) "@@ -12 +12 @@"
[3]=>
string(49) "-1;peter test zmena;Gia/b;;;;free;;;;501;;;;;;;;;"
[4]=>
string(60) "+1;sw120 - Cisco Catalyst 4506;Gia/b;;;;free;;;;501;;;;;;;;;"
[5]=>
string(13) "@@ -22 +22 @@"
[6]=>
string(78) "-1;sw120 - Cisco Catalyst 4506;Gic/d;;;;free;;;peter-test-zmena2;501;;;;;;;;;"
[7]=>
string(61) "+1;sw120 - Cisco Catalyst 4506;Gic/d;;;;free;;;;501;;;;;;;;;"
}
Hm, tak jsem nasel navod, jak to povolit, bash na win10. Ale pinda o riziku, tak takove veci v praci delat nebudu :)
https://www.howtogeek.com/…-windows-10/
Nastaveni > Win update zmenit na
Nastaveni > Pro vyvojare
A tam je treba povolit Vyvojarsky rezim. A pak mozna nejake dalsi kroky.
Slo by to resit i javascriptem. Jestli nepotrebujes nutne editaci databaze vice nez jednim uzivatelem. Nebo skryt odpovedi.
<div id=xxx></div>
<input type=button value=Next onclick="APP.func.next();">
<script>
var APP;
APP = {};
APP.func = {};
APP.db = [
['h2so4','kyselina sirova'],
['hXXso4','kyselina jina']
];
APP.selected = null;
APP.func.next = function (m)
{
var m,n;
if (APP.selected===null)
{
m = Math.floor(Math.random() * APP.db.length);
APP.selected = m;
n = 0;
}
else {
m = APP.selected;
APP.selected = null;
n = 1;
}
//alert([m,n])
document.getElementById('xxx').innerHTML = (n==0 ? "Otazka" : "Odpoved na otazku") + " " + (m+1) + ". " + APP.db[m][n];
}
APP.func.next();
</script>
Potreboval bych porovnat obsah 2 csv souboru. Stacilo by mi vest tabulku, pocet zmen, smazanych radku, pridanych radku. V lepsim pripade i cisla radku z obou souboru. Tohle by mohl splnovat linux prikaz
"diff -u original novy"
Potreboval bych neco se stejnym vypisem i pro win10, kvuli testovani a ladeni. Nedavno byl clanek, ze win10 podporuje linuxovy bash. Ale nikde jsem nenasel postup, step-by-step, jak to pustit, pripadne nejaky program v tom.
Druha moznost mne napadla, pouzit cygwin. To uz jsem snad kdysi zkousel s uspechem :)
Treti moznost je php kod. Nechtelo se mi zatim nic vymyslet a nemam informace, jak ten diff vlastne funguje. Co jsem koukal googlem, tak jsem narazil i na 11k porovnavace kodu.
Ja v podstate potrebuji jen vytvorit 2 veci.
- Tabulku, kam napisi, kolik radku bylo smazano, pridano, pripadne zmeneno. Ale zmena muze byt resena smazat radek + pridat novy. Na tom nezalezi.
- A pak potrebuji, kdyz si nekdo klikne podrobnosti, aby mu to zobrazilo zmeny do jedne velke tabulky, kde budou treba cervene a zelene radky (smazane, pridane)
V podstate by to mohlo byt klidne i javascriptove reseni. Mam v js udelany export tabulky do csv.
1. Php kod si zpracuj do promennych pred htm. Dole pak pouzijes jenom echo $promenna. Coz je pak prehlednejsi a tez rychlejsi na zobrazeni.
2. v kodu nemas povolene error_reporting, takze ti to asi nepise zadnou chybu. Tezko hadat.
3. pro jmeno stranky pouzivas velka mapa pismena, ale reg. vyraz ti je odboura
stranka=CasteOtazky
preg_match('/^[a-z0-9]+$/', $stranka)
= string zacina ^ znaky [a-z0-9], ktere se opakuji az do jeho konce $ v poctu 1 az nekonecno
Pokud je ve stringu cokoliv jineho nez a-z0-9 nastava podminka
else { echo('Neplatný parametr'); ...
Velke pismeno je neco jineho. Pokud chces i velka pismena, uved to ve vyctu znaku [a-zA-Z0-9]
Jo, a mozna jsem spojil, co jsem spojit nemel. Mozna stacilo spojit jen to tvoje. Nejak mi to ted nemysli.
Kazdopadne, u spojovani bacha. Zalezi na poradi. Kdyz nenajde shodu s moznosti 1, tak zkusi moznost 2. Kdyz ale najde shodu s 1, tak druhou uz nedela. Takze se muzes snadno napalit treba pri hledani
slovo = praotec
vyraz = otec|praotec
Najde otec a tim konci. Spravne mel byt vyraz opacne
vyraz = praotec|otec
Opsano zhora:
re.compile(r''' ()(\w+)[\W]?\(P[^\w\)]*([^\)]*) #1
| [^P:]\s(\w+)[^\)\w] () () #2
''', re.X)
Tak tohle je dost trapne :) Reg. vyraz je string/predpis pro dalsi program. Kazdy znak toho vyrazu ma vyznam. Kazdy!!! I mezera nebo odrazkovani. Cili, napad dobry, ale realizace chybna. Musi to byt v jendom radku za sebou a mozna jeste ozavorkovane. Nevim, do pythonu nedelam. Kdyz vemu to od gna
>>> re.findall(r'(\w+)(\(P: (\w+)\))?', s)
[('clovek', '(P: mozog)', 'mozog'), ('clovek', '', '')]
>>> re.findall(r'(\w+)\(P: (\w+)\)|(\w+)', s)
[('clovek', 'mozog', ''), ('', '', 'clovek')]
>>> re.findall(r'(\w+)(\(P: (\w+)\))?|(\w+)\(P: (\w+)\)|(\w+)', s)
>>> re.findall(r'((\w+)(\(P: (\w+)\))?)|((\w+)\(P: (\w+)\)|(\w+))', s)
Pokud si to chces skladat, pak to musis spojovat jako stringy. V js treba
patt = '(\w+)(\(P: (\w+)\))?'; // 'P: ' ale v js neexistuje
patt += '|(\w+)\(P: (\w+)\)|(\w+)';
reg = new RegExp(patt,'gi');
// a v PY to mozna nepujde, kdyz pred tim musis mit 'r', r'string'
Pekny. Kdyz tam mas ten label, tak se to da zapsat jeste takto:
<input type="checkbox" name="index[]" value="'.$i.'"><label>Vyber pro smazání záznamu</label>
<label><input type="checkbox" name="index[]" value="'.$i.'">Vyber pro smazání záznamu</label>
Rozdil je v tom, ze na druhem radku se da kliknout na text a zaskrtne ti i ten checkbox. V prvnim pripade se musis trefovat do maleho ctverecku checkboxu.
A to meta tam mas uplne zbytecne, to patri nahoru do tagu head. Priklad struktury html stranky:
https://www.jakpsatweb.cz/html/html5-strukturni.html
https://www.tvorba-webu.cz/…truktura.php
http://owebu.org/…l_ukazky.php - tady si klikni na HTML5 / '[+] Ukázka kódu html5'
http://www.jakdelatweby.cz/…truktura.php - tady je to taky celkem pekne, az na to neodsazovani! :)
Pouziti uvozovek, viz Milan, jeden z prikladu nahore.
copy "%userprofile%\Desktop\Muj soubor"
Co kdyby ses vykaslal na php a nejdriv si ten formular udelal v html? A kdyz pak klikne odeslat a var_dump($_POST); zobrazi spravne data, tak ma smysl to propojovat na soubory.
Na radku 96 mas hadam toto:
for($i = 0; $i != count($radky); ++$i) {
'Undefined variable: radky' - obvykle znamena, ze $ radky neexistuje.
$radky ziskas asi o 10 radku niz (a nebo o dalsich asi 15 niz) pres
$radky = file('./../data.txt');
Obavam se, ze ti unikaji souvislosti. Zkus vzdycky mrknout na online dokumentaci k funkci a nejake priklady tam Napr php.net/f_open
function zpracujRadek($i,$row)
{
return '<tr><td>'.implode('</td><td>',explode('|',$row)).'</td></tr>';
}
$str = '<table>';
$path = "./../data.txt"
$fp = fopen($path, "r") or die("soubor nenalezen!");
$i = 0;
while(!feof($fp))
{
$row = fgets($myfile);
$str .= zpracujRadek($i,$row);
$i++;
}
$str .= '</table>';
echo $str;
To $i potom potrebujes prave pro ten input, ktery pridas do funkce zpracujRadek, plus ty dalsi veci, co tam delas. Ty totiz potrebujes pro ten checkbox jednoznacny identifikator. Ty mas ted na strance, v html, treba 50 checkboxu, ktere se jmenuji id=checkBox nebo take name=''. A jak poznas, ktery znich je zaskrtnuty? Proto tam id nesmis mit. Name=checkBoxy[]. Value, tam prijde to $i. Kdyz to pak odesles pres post, tak to vyrobi php pole
$_POST['checkBoxy'] = array(3,7); // vypises si treba takto: var_dump($_POST['checkBoxy'])
A s tim pak muzes v php pracovat.
'pozicovat border' - jj, co to znamena?
Viz weroro, je mozne nastavit border top, left, right, bottom.
Kdyz obklopis skupinu tagu, tak tak je muzes cele orameckovat.
Kdyz das tagu (divu) uvnitr ramecek, a position, muzes ho pozicovat, kde chces. Mozna s pouzitim z-index.
Muzes text podtrhavat pres underline, coz by se taky dalo chapat jako ramecek.
Muzes kolem tagu vztycit margin a padding, coz taky v podstate meni polohu ramecku.
To bude chtit mozna obrazky. css3 ma prizpusobovani obrazku i moznost zmenit css pro ruznou witdh obrazovky. Zas tolik to neovladam, google :)
Mirko196 - 'kto by mi pomhol' - Se zeptej, ne? Ale programovat za tebe ukoly spis nikdo nebude chtit.
Mimocchdem, kdyz das do google = image css example, tak to urcite najde priklad na obrazek pres css.
background-image?
https://www.jakpsatweb.cz/…kground.html
4) a+b>c, a+c>b, b+c>a, viz MilanL
Tam se jedna o sestrojitelnost trojuhelniku. Pokud to seradis, bod zadani 3, tak pokedu dve nejmensi strany jsou vetsi nez treti, je to trojuhelnik. Takze staci po serazeni a + b > c.
Kdyz to neplati, tak dostanes jen tohle /---------\ nebo =------=, cili, ty strany jsou tak kratke, ze se neprotnou.
Pole. google.com = c++ pole
#include <iostream>
#include <string>
using namespace std;
int main(void) // nejaka zakladni funkce c++, pro c asi bez ni, ja delam spis s php :)
{
const int delkaPole = 10;
int pole[delkaPole];
for (int i = 0; i < delkaPole; i++) // naplneni
pole[i] = i + 1;
for (int i = 0; i < delkaPole; i++) // vypis hodnot
cout << pole[i] << ' ';
return 0;
}
Jj, s tim bubble sortem mi to taky neni jasne. Pro 3 prvky je sort vzdy 2-3 tahy a tak to maji vsechny sorty.
// js~php zapis, neni to c++
function swap (&a,&b) {tmp = a; a = b; b = tmp;}
if (a<=b) { if (b<=c) { return; } else { if (a<=c) { swap(b,c); return; }; swap(b,c); swap(a,b); return; } } else { if (b>c) { swap(a,c); return; } else { if (a<c) {swap(a,b); swap(b,c); return;}; swap(a,b); return;} }
Ale bublani je mozna prehlednejsi, jenze tam mas konstantne 3 tahy, ify.
// js~php zapis, neni to c++
function swap (&a,&b) {tmp = a; a = b; b = tmp;}
if (a>b) {swap(a,b);}
if (b>c) {swap(b,c);}
if (a>b) {swap(a,b);}
'Jelikož v novém systému se již kategorie dělají trošku jinak to stejné produkty a obrázky'
Asi ocekavas jakysi zpusob telepatie, kde to budeme vedet, jak pracoval stary system a jak pracuje novy.
Ale mohl bys prijit treba s vlastni upravou a rici, co ti tam nefunguje, ikdyz si myslis, ze to mas podle kodu spravne.
Jeste mam dalsi pokusy
/fpf/cz/utility/convert/index.php
/fpf/cz/wp-login.php
/checkout
/join_form
Davam sem vypis error 404 stranek, co tu hledaji hackeri. Snazil jsem se to vycistit, neznam ani, co vsechno tu mame nainstalovane, ale myslim si, ze vetsina tech erroru jsou realne pokusy o hackovani. Web nam nebezi ani na php, ani cgi ani wordpress a ani tam snad nemame fck :)
Zajimave je, ze treba /wp-login.php zkouseli asi 9,772 krat (asi za mesic) :)
Jestli se nekdo zabyvate zabezpecenim / zrychlenim webu, tak by mohlo byt zajimave spoustu tech stranek presmerovat. Aby zbytecne system nevyhledaval stranku, ktera tam stejne neni.
/.well-known/apple-app-site-association 23
/.well-known/assetlinks.json 15
/.well-known/dnt-policy.txt 5
//admin 4
//index.php 4
//login.action 5
//plus/download.php 3
//plus/mytag_js.php 3
//sloth_webmaster.php 2
//www.googleadservices.com/pagead/conversion.js 16
//www.googletagmanager.com/ns.html 26
/Abbrevsprl.php 2
/admin 3
/admin/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp 18
/admin/fckeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx 17
/admin/FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php 25
/admin/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php 20
/admin/fckeditor/editor/filemanager/connectors/asp/connector.asp 18
/admin/fckeditor/editor/filemanager/connectors/asp/upload.asp 19
/admin/fckeditor/editor/filemanager/connectors/aspx/connector.aspx 17
/admin/fckeditor/editor/filemanager/connectors/aspx/upload.aspx 18
/admin/FCKeditor/editor/filemanager/connectors/php/connector.php 22
/admin/fckeditor/editor/filemanager/connectors/php/connector.php 20
/admin/fckeditor/editor/filemanager/connectors/php/upload.php 21
/admin/FCKeditor/editor/filemanager/connectors/php/upload.php 20
/admin/fckeditor/editor/filemanager/upload/asp/upload.asp 18
/admin/fckeditor/editor/filemanager/upload/aspx/upload.aspx 19
/admin/FCKeditor/editor/filemanager/upload/php/upload.php 24
/admin/fckeditor/editor/filemanager/upload/php/upload.php 20
/admin/scripts/setup.php 6
/administrator/administrator.php 2
/administrator/components/com_xcloner-backupandrestore/index2.php 3
/administrator/index.php 19
/ads.txt 24
/album.cgi 5
/apple-app-site-association 25
/apple-touch-icon.png 1,172
/apple-touch-icon120x120.png 3
/apple-touch-icon-120x120.png 256
/apple-touch-icon-120x120-precomposed.png 258
/apple-touch-icon152x152.png 3
/apple-touch-icon-152x152.png 29
/apple-touch-icon-152x152-precomposed.png 29
/apple-touch-icon76x76.png 3
/apple-touch-icon-76x76.png 23
/apple-touch-icon-76x76-precomposed.png 23
/apple-touch-icon-precomposed.png 794
/apps/guestbook 5
/aska.cgi 5
/authenticating.php 2
/autodiscover/autodiscover.xml 16,226
/bbs.cgi 5
/blog/ 9
/blog/robots.txt 10
/browserconfig.xml 153
/C/Users/hol70/AppData/Roaming/Microsoft/Word/%20vol.63,%20issue%201 2
/cache/cachee.php 2
/Carmen/en/results 22
/CGI/guestbook 5
/ckeditor/ckfinder/core/connector/asp/connector.asp 17
/ckeditor/ckfinder/core/connector/aspx/connector.aspx 17
/ckeditor/ckfinder/core/connector/php/connector.php 18
/components/com_mailto/views/sent/metadata.xml 19
/configurationbak.php.suspected 2
/core 3
/dbadmin/scripts/setup.php 6
/default.asp 5
/docs/sekce1.htm 2
/editor/editor/filemanager/connectors/aspx/connector.aspx 2
/en/sekce2.htm 4
/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp 20
/fckeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx 20
/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php 23
/FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php 21
/fckeditor/editor/filemanager/connectors/asp/connector.asp 20
/fckeditor/editor/filemanager/connectors/asp/upload.asp 20
/FCKeditor/editor/filemanager/connectors/aspx/connector.aspx 22
/fckeditor/editor/filemanager/connectors/aspx/connector.aspx 20
/fckeditor/editor/filemanager/connectors/aspx/upload.aspx 20
/FCKeditor/editor/filemanager/connectors/php/connector.php 21
/fckeditor/editor/filemanager/connectors/php/connector.php 20
/fckeditor/editor/filemanager/connectors/php/upload.php 21
/FCKeditor/editor/filemanager/connectors/php/upload.php 20
/fckeditor/editor/filemanager/upload/asp/upload.asp 20
/fckeditor/editor/filemanager/upload/aspx/upload.aspx 20
/fckeditor/editor/filemanager/upload/php/upload.php 21
/FCKeditor/editor/filemanager/upload/php/upload.php 20
/fpf/cz///www.googletagmanager.com/ns.html 5
/fpf/cz/'+img+' 47
/fpf/cz/portal 3
/fpf/cz/sekce.php 8
/fpf/cz/wp-login.php 35
/fpf/ustavy/ustav-informatiky/soubory/sylaby.doc 2
/fpf/wp-login.php 7
/ftt2/signup.php 2
/fvp/cz/%2Ffvp%2Ffavicon.ico 5
/fvp/cz///www.googletagmanager.com/ns.html 7
/fvp/cz/apple-touch-icon.png 6
/fvp/cz/apple-touch-icon-precomposed.png 4
/fvp/cz/uo/projekty/inovace/materialy/docs/sbornik_prispevku_konference_uo_zari2013-1' 3
/fvp/wp-login.php 6
/g_book.cgi 5
/gaestebuch.php 5
/gastenboek.php 5
/gb.php 5
/guestbook 5
/guestbook.html 5
/guestbook.php 10
/Guestbook.php 5
/help.txt 47
/home.php 5
/htaccess.txt 18
/https://www.slu.cz/ 13
/checkout 15
/images/1ndex.php 2
/images/404.php 2
/images/google-assist.php 2
/images/powered_by.png 18
/images/stories/0day.php 3
/images/xxx.php 2
/includes/fckeditor/editor/filemanager/browser/default/connectors/asp/connector.asp 19
/includes/fckeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx 18
/includes/fckeditor/editor/filemanager/browser/default/connectors/php/connector.php 23
/includes/fckeditor/editor/filemanager/connectors/asp/connector.asp 19
/includes/fckeditor/editor/filemanager/connectors/asp/upload.asp 20
/includes/fckeditor/editor/filemanager/connectors/aspx/connector.aspx 19
/includes/fckeditor/editor/filemanager/connectors/aspx/upload.aspx 20
/includes/fckeditor/editor/filemanager/connectors/php/connector.php 19
/includes/FCKeditor/editor/filemanager/connectors/php/connector.php 19
/includes/FCKeditor/editor/filemanager/connectors/php/upload.php 20
/includes/fckeditor/editor/filemanager/connectors/php/upload.php 20
/includes/fckeditor/editor/filemanager/upload/asp/upload.asp 20
/includes/fckeditor/editor/filemanager/upload/aspx/upload.aspx 20
/includes/FCKeditor/editor/filemanager/upload/php/upload.php 20
/includes/fckeditor/editor/filemanager/upload/php/upload.php 19
/includes/u2p.php 3
/index.php 29
/index.php/component/users/ 7
/jax_guestbook.php 5
/join_form 163
/kcfinder/browse.php 17
/key/ASWD56425CSA 4
/kontakt/ 2
/license.txt 142
/light.cgi 5
/log.php 2
/maill.php 2
/market//js/mage/cookies.js 2
/math/cz/.well-known/autoconfig/mail/config-v1.1.xml 2
/math/cz/Index/vybrizeni.php 21
/math/cz/index1.php 21
/math/cz/modules/mod_simplefileuploadv1.3/elements/udd.php
/math/cz/RealAnalysis/ 47
/media/tmp.php 2
/modules.php 5
/myadmin/scripts/setup.php 6
/mysql/scripts/setup.php 6
/mysqladmin/scripts/setup.php 6
/oblast 15
/oblast/1 17
/oblast/10 16
/oblast/15 16
/oblast/2 17
/oblast/3 18
/oblast/4 17
/oblast/5 17
/oblast/6 17
/oblast/7 16
/oblast/8 16
/oblast/9 17
/oblast/Karvin%C3%A1 16
/oblast/Opava 16
/page/dokumenty 16
/page/kontakty 16
/phpMyAdmin/scripts/setup.php 6
/phpmyadmin/scripts/setup.php 6
/plus/mytag_js.php 2
/pma/scripts/setup.php 6
/PMA/scripts/setup.php 6
/portal 3
/readme.htm 47
/readme.html 50
/readme.txt 47
/scarbook.php 5
/search_form 94
/seo-joy.cgi 5
/sign/in 16
/sign/register 16
/sitemap.xml 24
/slu/cz/czv/oblast/1 2
/slu/cz/czv/oblast/4 2
/sql/scripts/setup.php 6
/sqlbak.php 2
/style/contenttypes-sprite.png 27
/su/fvp/en/useful-information/docs/converter-abiword-19724.html_files/0.png 5
/tmp.php 4
/wordpress/ 9
/wp/ 9
/wp-admin/css/colors-classic.css 47
/wp-admin/images/wp-logo-2x.png 47
/wp-admin/js/media-upload.dev.js 47
/wp-content/plugins/akismet/akismet.js 47
/wp-content/plugins/myshe.php 2
/wp-content/plugins/wp-footers.php 2
/wp-content/themes/classic/rtl.css 47
/wp-content/themes/twentyeleven/readme.txt 47
/wp-content/themes/twentyten/images/wordpress.png 47
/wp-content/themes/twentyten/style.css 47
/wp-includes/css/buttons.css 47
/wp-includes/js/scriptaculous/wp-scriptaculous.js 47
/wp-includes/js/tinymce/langs/wp-langs-en.js 47
/wp-includes/js/tinymce/wp-tinymce.js 47
/wp-login.php 9,772
/wp-main.php 2
/wsdl.php 2
/www.googletagmanager.com/ns.html 2
/xmlrpc.php 50
/xmlsrpc.php 2
/yybbs.cgi 5
klavesa = 0;
while (klavesa!=27 || klavesa!=13) // 27 = esc, 13 = enter
{
klavesa = ctiklavesu();
necoProvadej();
}
---
klavesa = 0;
while (klavesa!=27) // 27 = esc, 13 = enter
{
klavesa = ctiklavesu();
if (klavesa==13) {provedejNeco2(); break;} // zastav klavesou 13, ale pred ukoncenim neco udelej
necoProvadej();
}
KIIV
(např. při pocet = 3 se vypíše 1 2 , 22 a 32 ).
(např. při pocet = 3 se vypíše 1^2 , 2^2 a 3^2 ).
Pochopil jsi to spravne.
Marty
Ucitel bude mit jiste pochopeni, kdyz se omluvis a odevzdas mu to pozdeji. Pripadne, ze ti da o stupen horsi znamku. Nebo, ze se nechas z toho prezkouset.
int i_start = 0 // zacni 0
int i_end = 3 // opakuj, dokud je i < end; i<3
int i_inc = 1 // na konci zvys i o inc, 1 / i+=i_inc nebo i++
for (int i=start ; i < end ; i+=i_inc)
{
System.out.println("Knock");
}
System.out.println("Penny!");
---
int i_start = 0 // zacni 0
int i_end = 3 // opakuj, dokud je i < end; i<3
int i_inc = 1 // na konci zvys i o inc, 1 / i+=i_inc nebo i++
int i = i_start;
while (i < i_end) // podminka
{
System.out.print(i + " ");
i += i_inc;
}
--- nekonecny cyklus ---
for (int i=0 ; i < 99 ; )
{
System.out.println("Knock");
}
for ( ; true ; ) // for ( ; ; )
{
System.out.println("Knock");
}
while (true)
{
System.out.print(i + " ");
}
--- preruseni cyklu / break ---
i = 0;
while (true)
{
System.out.print(i + " ");
if (i>=10) {break;} // preruseni, kdyz je i=10 nebo vetsi; podobne pro for
i++;
}
int i_start = 0 // zacni 0
int i_end = 3 // opakuj, dokud je i < end; i<3
int i_inc = 1 // na konci zvys i o inc, 1 / i+=i_inc nebo i++
i = i_start;
while (true)
{
System.out.print(i + " ");
if (i>=i_end) {break;} // preruseni, kdyz je i=10 nebo vetsi
i += i_inc;
}
Co to vlastne cyklus je? Provadi opakovani nejakeho programu, treba:
zaklepej(); zaklepej(); zaklepej(); ... potrebujes to udelat 50x
for (i=0;i<50;i++) {zaklepej();}
Nekonecne cykly se pouzivaji treba pro poslouchani portu, kdy cekas na nejaky signal, abys spustil nejakou akci. Napriklad cekas, az uzivatel posle zpravu na chat, abys ji rozeslal i vsem ostatnim v mistnosti. Takze mas cyklus/program, ktery bezi donekonecna a ceka, az prijde zprava.
Muzes pouzit vic cyklu v sobe, treba, kdyz skenujes obrazek pixel po pixelu, souradnice x,y, tak mas 2 cykly s i, j.
Muzes podminky resit uplne jinak, nemusis pouzivat i++.
klavesa = 0;
while (klavesa!=27) // 27 = esc
{
klavesa = ctiklavesu();
necoProvadej();
}
// opakuje, dokud nezmacknes Esc klavesu na lavesnici
Ted, kdyz to ctu znova, napada mne, jestli neresis treba toto:
kliknem na matematika tak dostanem url adresu localhost/mvc/matematika
kliknem na rovnice tak dostanem url adresu localhost/mvc/matematika/rovnice
- v normalnim menu by se to resilo pomoci slozek a index.html / htm / php (url = matematika/rovnice/ == matematika/rovnice/index.php)
- v cms je treba localhost/index.php?page=123, tam je v odkazu url = localhost/mvc/matematika/rovnice a .htaccess mod rewrite to nejspis prepisuje na localhost/index.php?search=matematika/rovnice a search pak vraci index.php?page=123.
Nevyhoda je, ze to treba fakt dobre nastavit, vyloucit z rewritovani slozky s js, css, img a pod. Pak by ses divil, proc se ti nezobrazuje obrazek a ono to je treba tim, ze ti z localhost/img/paja.jpg udela localhost/index.php?search=img/paja.jpg a tu slozku v sql databazi nemas, treba. Nebo si to pohlidat v php a vyloucit ty slozky, to pak staci jednodussi mod rewrite.
cili google = index mod rewrite htaccess
'Skúšal som to už nejak jak som si myslel žeby to mohlo byť, ale nezobrazovalo mi v header obrázky...neviem prečo.'
Kdyz chces, aby jsme ti v kodu nasli chybu, tak ten kod musime videt. Ty mas ted nejaky kod, ktery funguje a pak mas druhy kod, svou upravu, ktera zlobi. Takze je potrebujeme porovnat. Idealne, pokud je to nejaky ne-html kod (php), tak k tomu prilozit i pro oba pripady html vystup. Pises, ze se ti nezobrazuji obrazky, tak mozna by se hodila i cesta k obrazkum, podivat se, jak vypada realna cesta, a jak je to v html v prohlizeci.
Druha moznost je, napsat ti rovnou reseni, ale... MVC tu asi nikdo nepouziva, nezna, museli bychom to nastudovat a nenabizis odmenu.
Co se tyce nahrani slozky, existuji ruzne uschovky, kde je mozne nahrat treba zip soubor. Nepovazuji zipy za bezpecne, muze se tam zkryvat vir, ale asi neni jina moznost.
Nebo mas s necim problem, s cim, co jsi pro reseni udelal a ten nefunkcni kod a funkcni kod, zdrojovy xml predtim a nyni mas?
Ten kod mi prijde jako trosku smes. Ja bych si napsal zvlast cast, ktera to parsuje a zvlast cast, ktera to dava do db.
Se mi to jevi zatim tak, ze se nam pokousis zadat praci. Takze inzerat, nabidka prace? Odmena?
Posli odkaz na jejich funkcni kod, tvuj funkcni/nefunkcni kod.
Stranka s navodem je super, ale ja za tebe nebudu studovat tutorialy. Porovnam proste rozdil v kodu. Pokud nemas funkcni kod, tak je zbytecne tam doplnovat nejaky odkaz.
Jestli spravne chapu ten puvodni kod, tak hleda nejdelsi slovo. Nic vic.
Prvni cast kodu hleda slovo, znaky <> ' ' (ruzne od mezery).
Druha cas potom porovnava delku slova s max velikosti.
Druha cast by mela slova ukladat do pole. Muzes si tam poznacit jako 'delku nejkratsiho slova'. Kdyz tu delku prekroci tve slovo, tak spustit kod, ktery slovo prida do pole a soucasne odstrani nejmensi slovo z pole, opravi promennou 'delku nejkratsiho slova'.
Nebo muzes proste slova ukladat do pole, pole seradit podle delky, nejdelsi nahore. A vybrat prvnich 10 slov.
To je 25 min? Ehm, sorry :) Posli radeji odkazy na kod.
Tak, ono by se to dalo preformatovat do sql tvaru a pak vlozit jako kus sql kodu. Kdyz by se pominula nebezpecnost takoveho jednani :)
Run delej jako float cislo na procenta (0.0000 az 1.0000). Nebo integer, ale pak tam musis mit maximalni hodnotu, abys mohl pocitat.
Ze se neco zastavilo se da dost tezko vycist. Server bud data posila nebo ne. A kdyz je posila, muze posilat stejna cisla a presto se program nezastavil. Tak je treba zvolit takovy system pocitani, aby se cisla menila.
V JS bych pouzil casove razitko. To je dost presne integer cislo. A bud server vrati nove casove razitko nebo je neco spatne. Ale, jak uz jsem psal, spatne muze byt cokoliv a presto server dal pracuje.
Treba spousta lidi je spatna v premysleni, libi se jim zive vyhledavani a klidne nechaji sql hledat vsechna slova zacinajici jednim pismenem. Nebo proste je jinak spatne sql dotaz. Sveho casu podobny problem mela ceska posta, ze to hledalo v urcitem nastaveni dlouho. Az tak, ze se server musel restartovat. Netusim, jak to meli a kde presne :)
Tady v praci jsem zazil podobnou vec, vyhledavani vsech knih, kdyz das treba seznam 10 jmen autoru. Tak problem sql dotaz, uz pri 3 lidech to bylo kolem 10s a kaskadne to narustalo. Jsem to prozkoumal, prepsal dotaz a ted 20 lidi neni problem za par ms. Je jedno jestli AND (vsichni) nebo OR podminka (aspon 1). Chci rici, ze ten program treba 5 minut pracoval, ale fungoval. Server byl nastaveny tak, ze procesy omezoval, takze by ti dal v odpovedi nove casove razitko. Ale ty bys vysledek stale jeste nemel.
Ja prave id do css nerad cpu. Proste, idkyz ma objekt id, tak mu pridelim class, kdyz chci styly. Id mam vyhradne pro js. V js se snazim zas vyhybat classum jako objekty. Vdycky mam jako prvni nejaky id objekt az pak je pod nim neco s class. Treba #list_clanky, .clanek, .clanek_nadpis
V excelu, data z listu 1 je treba =List1!A1:A30. Jak se to pouziva do mssql netusim. Bys musel ukazat ty priklady a priklad treba 2-3 jmen, zdrojovy text, ktery pres tu funkci posilas.
Kdybych to delal v PHP, tak si excelovy soubor ulozim jako csv a pak to zpracuji jako csv a pridam do textu sql prikazu.
Si projdi na obou systemech, jake maji inzertni pluginy a ktery se ti bude libit vic, ne? Na inzeraty by mel byt spis spesl system.
Ale v podstate by postacili komentare z wordpress. Jenze to pak nema ty kategorie a razeni podle oblast, mesta, statu, typu inzeratu koupim, prodam, ... To by prave mohl resit nejaky plugin.
Jj, id je pro unikatni prvek, obvykle pro js. Obcas tam pridavam do nazvu js, abych vedel, ze se pouziva v js. Class pouzivam jen pro css. Vyjimecne v js pouzivam vybirani i podle class. Nekdy se to hodi. Ale snazim se, aby nad tim byl prvek s id.
Urcite, kdyz funkci pouzivas opakovane, treba pro ten autorefresh, tak je dobre ji dat zvlast do funkce, viz Doomista, treba getData. Pripadne ji pojmenovat vic inteligentne nebo uzavrit do objektu.
chat = {};
chat.dataFromUrl = function (url) {...}
chat.refresh = function() {chat.dataFromUrl('text.php'); chat.dataFromUrl('lide.php'); chat.dataFromUrl('mistnosti.php');}
chat.refresh_time = 10000;
var auto_refresh = setInterval( chat.refresh, chat.refresh_time);
To auto_refresh je tam dulezite pro clearInterval, kdybys to chtel prerusit. Coz je treba v pripade, ze chces zmenit refresh time nebo u chatovani odesles zpravu (tehdy potrebujes, aby odpocet zacal od zacatku).
Schvalujeme, proved to :)