Autor Zpráva
weroro
Profil
Zdravím, je to teraz nejaká úprava alebo chyba u mňa? Pri písaní odpovedí ma neupozorní, že niekto medzi tým reagoval. Zvyklo to prebliknúť na modro.
Kubo2
Profil
weroro:
Mňa to takisto neupozorní, ak medzitým, čo píšem, niekto iný prispeje. Pozorujem to už nejaký čas, a plánoval som s tým tiež vyrukovať :-) Vyzerá to na nejakú globálnu chybu (v rozsahu diskusie).
Bubák
Profil
Já dneska modré probliknutí viděl.
Tori
Profil
Mně se občas upozornění zobrazuje, ale většinou až minimálně minutu po uložení cizího příspěvku. Jestli se ale nepletu, tak se nové příspěvky donačtou, když kliknu na Ukázat náhled (což dělám u většiny víceodstavcových příspěvků).
Taurus
Profil
Mám to podobně jako Tori. Buď to neproblikne nebo pozdě. Odjakživa, ale nikdy mi to extra nevadilo...
Str4wberry
Profil
Takhle se ta kontrola volá. (V proměnné d je datum načtení stránky.)

var ted = new Date().getTime();

// v noci poroste interval rychleji
var doba = 1 - Math.pow(Math.cos(((ted - 14400000) % 86400000) / 86400000 * Math.PI), 4);

var dif = (ted - d) / 60000;
var cas = 5 - doba * 4 + Math.pow(Math.max(dif, 0) / (5 + doba * 55), 2) * 5;
if(cas > 720) return;
timeoutID = setTimeout(function()
{
  kontrola();
}, Math.max(cas, 0.25) * 60000);
Taurus
Profil
To je, jako bys mi odpověděl acrdca6dcf4a5eff. :-)) Hele, asi jsem rád, že... to tu máte tak... pěkný.
Joker
Profil
Str4wberry:
Ani jsem nevěděl, jak složitý vzorec je potřeba na výpočet toho, za jak dlouho se má stránka zeptat na nové příspěvky :)

Taurus:
No, tak schválně, jestli já se v tom vyznám :)
Triviální je dif, to je čas od načtení stránky v minutách.
((ted - 14400000) % 86400000) / 86400000 jaká část dne uběhla před čtyřmi hodinami (když před 4 hodinami bylo 6h, uběhla čtvrtina dne = 0.25).
Ty zbývající operace slouží k tomu, aby číslo doba mělo během dne tento průběh (minimum je ve čtyři ráno, maximum ve čtyři odpoledne).
Je to vlastně korekce podle denní doby.

Proměnná cas udává každých kolik minut se bude dělat kontrola, nejkratší interval je omezen na čtvrt minuty, ale podle aktuálního vzorce cas nikdy nevyjde kratší než minuta.
Na intervalech v řádu sekund a minut bude doba skoro konstanta, takže cas bude záviset primárně na tom, kolik uplynulo od posledního načtení stránky.
Bude to nějaký „základní čas“: 5 - doba * 4 plus číslo závislé na době od posledního načtení stránky, Math.pow(Math.max(dif, 0) / (5 + doba * 55), 2) * 5 -pokud doba ~ konstanta- je parabola, čili čím déle od posledního načtení stránky, tím rychleji bude čas růst.
Nejkratší čas bude ve čtyři odpoledne: 1 minuta plus (doba od posledního načtení stránky v hodinách, umocněná na druhou a vynásobená 5) minut.
Korekce pomocí doba jednak prodlužuje ten základní čas (až na 5 minut ve čtyři ráno) a jednak zrychluje i tempo prodlužování intervalu (dělí dif menším číslem, takže zrychluje pohyb po parabole- od dif/60 ve čtyři odpoledne až na dif/5 ve čtyři ráno).

Při načtení stránky před čtvrtou odpoledne prvních několik kontrol bude zhruba každou minutu, po necelé půlhodině od načtení bude interval 2 minuty, po hodině 6 minut, po dvou hodinách 21 minut, atd.
Při načtení stránky před čtvrtou ráno by se odpovědi poprvé kontrolovaly 5 minut po načtení stránky, podruhé 15 minut od načtení, potřetí 35 minut od načtení, počtvrté hodinu a čtvrt po načtení, pak už to asi ovlivní korekce pomocí doba.

Str4wberry:
Z výše uvedeného mě napadá, proč mi někdy upozorňování na nové odpovědi nefunguje :-)
Když otevřu vlákno třeba ve dvanáct a ve čtyři se k němu vrátím a napíšu odpověď, interval kontroly nových odpovědí je v té době skoro hodina a půl. Když si otevřu vlákno v době nízké aktivity na diskusi a nechám ho být, v době, kdy přijdou lidi a začnou odpovídat, už mám tak dlouhý interval kontroly, že napíšu celý příspěvek aniž bych si těch odpovědí všiml.

Vyplývá z toho, že když mám dlouho otevřené vlákno v prohlížeči a pak chci začít psát příspěvek, není od věci nejdřív obnovit stránku :)
Str4wberry
Profil
Osobně většinou používám náhled. Ten totiž kontrolu vyvolá okamžitě.

Když se tato funkce zaváděla, navrhoval jsem v případě nových odpovědí zastavit odeslání, ale Chamurappimu se to, tuším, nelíbilo.
Taurus
Profil
Joker:
Geniální odpověď, děkuju. Chování předpokládám vzhledem k zátěže diskuze. Jste holt šikovní. :-) Nenapadlo mě, že asi nejde "dát vědět" všem potencionálním přispěvovatelům vlákna, že někdo připsal zprávu, ale funguje to formou dotazování po intervalech "nenapsal někdo náhodou?" Připomíná mi to mou státnicovou otázku procesy a plánování.
Joker
Profil
Str4wberry:
Se zastavením odeslání jsem u jedné aktivnější diskuse měl problém, že v některých vláknech když se rozjela debata, bylo těžké vůbec posílat příspěvky.
„Odeslat“ → „Jsou nové příspěvky“ → návrat zpět → než stihnu znovu odeslat, přibyl zase nějaký příspěvek, a tak dále.
Chamurappi
Profil
Reaguji na Jokera:
Tento algoritmus vznikl trošku živelně, sám na něj teď koukám s údivem :-)

když mám dlouho otevřené vlákno v prohlížeči a pak chci začít psát příspěvek, není od věci nejdřív obnovit stránku :)
Asi bych měl nějak zohledňovat dobu, kdy člověk začal psát příspěvek. Nebo aspoň jednorázově provést kontrolu v okamžiku započetí psaní do déle otevřeného vlákna.


Reaguji na Str4wberryho:
Když se tato funkce zaváděla, navrhoval jsem v případě nových odpovědí zastavit odeslání, ale Chamurappimu se to, tuším, nelíbilo.
Na což jsem již změnil názor. Bylo by fajn, kdyby si člověk mohl v profilu zapnout, že chce přerušovat odeslání, pokud mu něco přibylo pod nosem.
Joker
Profil
Chamurappi:
Tento algoritmus vznikl trošku živelně, sám na něj teď koukám s údivem :-)
Je úchvatný :-) I když podstatně jednodušší výpočet by asi byl taky dostačující.
Ale interval kontroly v řádu desítek minut a víc se mi zdá prakticky zbytečný.
Nešlo by dát strop třeba 10-15 minut?

Nebo aspoň jednorázově provést kontrolu v okamžiku započetí psaní do déle otevřeného vlákna.
Nebo na fokus okna, pokud od poslední kontroly uplynul dlouhý čas.
abc
Profil
Chamurappi:
Bylo by fajn, kdyby si člověk mohl v profilu zapnout, že chce přerušovat odeslání, pokud mu něco přibylo pod nosem.
Ano, rozhodně. Jistě by potom nevznikalo tolik duplicitních odpovědí a bylo by případně možné doplnit/reagovat na příspěvek již zaslaný
lionel messi
Profil
Reagujem na Chamurappiho:
Bylo by fajn, kdyby si člověk mohl v profilu zapnout, že chce přerušovat odeslání, pokud mu něco přibylo pod nosem.
Tak to by bolo úplne perfektné, stalo sa mi už niekoľkokrát, že som písal príspevok a po odoslaní som zistil, že 1-2 minúty predo mnou niekto reagoval v úplne rovnakom duchu.
weroro
Profil
lionel messi:
po odoslaní som zistil, že 1-2 minúty predo mnou niekto reagoval v úplne rovnakom duchu.
Presne preto som založil toto vlákno.

Ono to môže mať ale aj pozitívny dopad. Ak zakladajúci užívateľ položí otázku a na základe tejto "nedokonalosti" zareaguje niekoľko užívateľov s rovnakou odpoveďou bude mať istou, že je to odpoveď správna, bude to mať potvrdené.

Chamurappi:
Bylo by fajn, kdyby si člověk mohl v profilu zapnout, že chce přerušovat odeslání, pokud mu něco přibylo pod nosem.
Nie som síce hlúpi, ale rád si overujem moje závery, preto sa opýtam. Jednalo by sa o funkciu, ktorá by fungovala, tak že ak je zapnutá a ja kliknem na "Poslat zprávu" a medzi tým niekto pridal príspevok, sa moja správa neodošle ale upozorní ma resp. mi zobrazí dané nové príspevky aby som mal možnosť sa rozhodnúť, či to chcem skutočne odoslať?
Ak áno, to by bolo perfektné a som za prípadnú realizáciu.
Str4wberry
Profil
Reakce na Chamurappiho:
a což jsem již změnil názor. Bylo by fajn, kdyby si člověk mohl v profilu zapnout, že chce přerušovat odeslání, pokud mu něco přibylo pod nosem.
Aha. Nastavování v profilu mi přijde asi jako zbytečný luxus. Myslím, že pro drtivou většinu lidí je vyhovující automatická kontrola a pozastavení odeslání.

Můžeme to udělat tak, že po upozornění na nové příspěvky a zastavení odeslání už bude tlačítko rovnou odesílat. To by snad eliminovalo teoretický problém s nemožností přispět do hodně aktivního vlákna. Případně zkusit vymyslet zjištění stavu, že se uživatel blíží k odeslání (focus odesílacího tlačítka, najetí myší směrem k němu).
Joker
Profil
Str4wberry:
Aha. Nastavování v profilu mi přijde asi jako zbytečný luxus. Myslím, že pro drtivou většinu lidí je vyhovující automatická kontrola a pozastavení odeslání.
Taky bych to nedělal nastavitelné (ať neskončíme u milionu nastavení, která nikdo nepoužívá).

Nebo co to udělat ještě jednodušší?
Zrušit přímé odeslání zprávy a nechat jen náhled.
Každá zpráva by se odesílala přes: Editor → Kontrola → Odeslání.
Kontrola by ověřila nové příspěvky, Odeslání by už odeslalo zprávu bez ohledu na nové příspěvky.

Zároveň by to možná omezilo některé spammery.
Kubo2
Profil
Joker:
Zrušit přímé odeslání zprávy a nechat jen náhled.
Podľa mojej mienky by to bolo dosť obmedzujúce. Častokrát píšem príspevok s tým, že si neprezerám jeho náhľad, pretože ma to značne zdržuje. S ohľadom na tých spammerov, možno by bolo dobré nechať tam to opatrenie natrvalo pre neregistrovaných používateľov, a pre registrovaných povedzme po dosiahnutie nejakého medzníka (napríklad 80 až 120 zaslaných príspevkov na konte, z ktorých by maximálne 4-5 percent mohlo skončiť v kontajneri).
Tori
Profil
Joker:
Nebo co to udělat ještě jednodušší? Zrušit přímé odeslání zprávy a nechat jen náhled.
vs.
Chamurappi:
Bylo by fajn, kdyby si člověk mohl v profilu zapnout, že chce přerušovat odeslání, pokud mu něco přibylo pod nosem.

Kompromisní návrh: co kdyby se přidala tahle předvolba přímo do JS, který odesílá příspěvek? S tím, že by si to případní zájemci sami povolili přes HTML dodatek. (Tj. až bude nasazen naostro současný sandbox.)
Petr ZZZ
Profil
Reaguji na Kuba2:
„...z ktorých by maximálne 4-5 percent mohlo skončiť v kontajneri“
Nemyslím si, že by bylo moudré motivovat pravidelné diskutéry, aby se snažili zásadně nepsat příspěvky, u kterých lze čekat, že skončí v kontejneru („doplň prosím kontakt“, „mmm“ atp.).
Bubák
Profil
[#18] Joker
Nebo co to udělat ještě jednodušší?
Zrušit přímé odeslání zprávy a nechat jen náhled.

Co tak jen prohodit mezi sebou tlačítka Poslat zprávu a Ukázat náhled, ale tlačítka Poslat zprávu a Upravit zprávu ponechat, jak jsou.
Nevýhodou je, že někteří uživatelé mohou dostat kvůli změně vražedné choutky.

Každá zpráva by se odesílala přes: Editor → Kontrola → Odeslání.
Co paranoidní uživatelé bez JS? Nebo žádní takoví nejsou?
Chamurappi
Profil
Reaguji na Str4wberryho:
Myslím, že pro drtivou většinu lidí je vyhovující automatická kontrola a pozastavení odeslání.
Zároveň drtivá většina lidí očekává, že se kliknutím na „Poslat zprávu“ opravdu pošle zpráva.
Když si třeba představím situaci z druhé Planety opic, kde na konci postřelený Taylor z posledních sil padne na spoušť atomovky… kdyby na něj místo konce světa vyskočila hláška „Došlo ke změně: opice zastřelily další lidi“, asi by mu to trochu zkazilo náladu. Je to prostě neočekávaná překážka, projevující se jen zřídka. Proto by měla být buď volitelná, nebo předvídatelná, nebo nepříliš překážející.

Volitelnou ji tedy asi dělat nechceme, předvídatelnost by se zajišťovala špatně. Ideálním kompromisem by mohlo být, že dám uživateli časově omezenou nabídku na přerušení odeslání. Třeba sedm sekund. Když nic neudělá, zpráva se pošle.

Případně zkusit vymyslet zjištění stavu, že se uživatel blíží k odeslání
AJAX chvíli trvá, mohlo by se poměrně často stávat, že si člověk všimne hlášky o změně souběžně s okamžikem, kdy zmáčkne odesílací tlačítko.

Když jsem před pár měsíci zmiňoval, že bychom tuto vlastnost mohli zavést, představoval jsem si ji tak, že server nějak specificky odpoví na odeslání příspěvku, ale teď vidím i druhou možnost implementace — že si při odeslání zavolám bb_nzp.php, počkám na odpověď, a dozvím-li se, že nedošlo ke změně, vyvolám odeslání. Druhá možnost nevyžaduje žádný zásah do PHP. Ale první možnost by se mi líbila víc, v drtivé většině případů by druhý HTTP požadavek zbytečně zdržoval.


Reaguji na Bubáka:
Nevýhodou je, že někteří uživatelé mohou dostat kvůli změně vražedné choutky.
Byl bych nejspíš mezi nimi :-)

Co paranoidní uživatelé bez JS? Nebo žádní takoví nejsou?
Ti nedostávají ani náhled. Nenapadá mě snadné ekvivalentní řešení pro uživatele bez JS. (Moc jich tu nemáme.)
Amunak
Profil
Chamurappi:
Ideálním kompromisem by mohlo být, že dám uživateli časově omezenou nabídku na přerušení odeslání. Třeba sedm sekund. Když nic neudělá, zpráva se pošle.
Tím ovšem na uživatele kladeš nečekaný a stresující časový limit, který může být horší, než kdyby se na vstup čekalo :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0