Autor Zpráva
matak
Profil
nemáte někdo zkušenost s takovým algoritmem? jak zajistit aby uživatel neviděl 2x stejné foto, jak nabízet další fotky v řadě, nabízí se náhodně? (to je asi blbost), nebo podle data přidání? podle idečka? co další den když přijde k počítači jak nabídnout nové? jak nenabízet ty které již hodnotil resp. ty které už viděl?
meris
Profil
Jak nenabízet ty co již viděl:
Musís si evidovat kdo hlasování provedl a vybírat ty u kterých vybraný uživatel nehlasoval.

Další fotky bych nabízel podle data vložení, náhodne v případě, že chceš aby hodnotili všechny fotky, ne jen ty aktuální.

Další den nabízet stejným způsobem, ale omezit na ty které ještě nevybral.
jenikkozak
Profil
matak:
nabízí se náhodně? (to je asi blbost), nebo podle data přidání? podle idečka?
Záleží na tom, jak to chceš.

jak zajistit aby uživatel neviděl 2x stejné foto
co další den když přijde k počítači jak nabídnout nové? jak nenabízet ty které již hodnotil resp. ty které už viděl?
Informaci o zobrazených fotografiích si ukládej do databáze. Pak jen porovnej, jestli už daný uživatel (či daná IP) fotku viděla (hodnotila).
matak
Profil
hm myslím, že jste to nedomyslel

1. jde i o fotky které uživatel již viděl, jak druhý den poznáte, kde skončil? a to se bavíme i o tom, že uživatel není přihlášen, hlasovat může jen přihlášený, ale prohlížet může každý
2. náhodně, jsme u toho jak vybrat co ještě neviděl

takže hlavní problém jak nabídnout to co ještě neviděl, a bavíme s o technickém řešení spíše tam bude problém
matak
Profil
porovnej, ale jak? můžete jen načrtnout řešení, prosím nejsem lama, vím o čem je řeč jen možná to nemáte domyšlené do konce, stačí v odrážkách nastínit váš postup
jenikkozak
Profil
matak:
jen možná to nemáte domyšlené do konce, stačí v odrážkách nastínit váš postup
Spíše to nemáš domyšlené ty. :-)

- vyhledáš v databázi fotku, kterou uživatel neměl ještě zobrazenou (či hodnocenou, nastavení podmínek záleží na tobě);
- když uživatel fotku hodnotí, uložíš do databáze, že uživatel fotku hodnotil;
- dva body stačí
matak
Profil
heh pokračujme, můžete napsat sql dotaz vyhledání takové fotky který přihlédne k tomu, že uživatel už prošel 1000 fotek, že je viděl, to neznamená, že je hodnotil, ale to je detail
Ugo
Profil
samozřejmě není možné to udělat jak chceš, ale to jistě víš. nejspolehlivější bys měl ukládat nějakou hash(ip+client info)+id zobrazené (hlasované) fotky. jenomže takové řešení bude neskutečně pomalé a navíc stejně nebude 100%, být tebou tak zobrazení vůbec neřeším, prostě zobrazuji náhodně a ve velkým počtu fotek se duplicity ztratí.
jenikkozak
Profil
matak:
heh pokračujme, můžete napsat sql dotaz vyhledání takové fotky který přihlédne k tomu, že uživatel už prošel 1000 fotek, že je viděl, to neznamená, že je hodnotil, ale to je detail
Mají se fotky vybírat náhodně z těch, které ještě neměl zobrazené? Pokud měl fotku zobrazenou, ale nehodnotil ji, má se mu zobrazit znovu?
SELECT id FROM seznam_fotek WHERE id NOT IN (SELECT id FROM zobrazeni_fotek WHERE nick='nick_hodnotitele') ORDER BY RAND() LIMIT 1
matak
Profil
ugo ano došel jsem ke stejnému názoru, ale nemám z toho dobrý pocit, ty duplicity opravdu nechci

jenikkozak ano presne tento dotaz mam na mysli, ale bohužel pri vetsim mnozstvi ve WHERE NOT IN to nebude fungovat, mysql se proste dokonce sesype, urcitym zpusobem reseni by byl join, ale to zase znamena ukladat ty vsechny prosle fotky a bude to strasne pomale, krom toho jak evidovat cookie usery, tedy neprihlasene, co takovy google, ten mi zaseka celou tabulku jednou denne milionem zaznamu
Ugo
Profil
select * from fotky as f where not exists (select id from fotky_zobrazeno as fz where f.id=fz.id and hash=USERHASH) ORDER BY RAND() LIMIT 1

if num_rows<1 .. -> select * from fotky ORDER BY RAND() LIMIT 1
jenikkozak
Profil
matak:
co takovy google, ten mi zaseka celou tabulku jednou denne milionem zaznamu
Jaký má smysl ukládat, jaké fotky prošel robot?
Ugo
Profil
na google podobne bys musel mít buď brutální omezení přístupu a nebo si ukládej ještě čas a když je nějaká posloupnost .. moc rychle, tak ho blokni, ale já se stejně přikláním k názoru duplicity neřešit, maximálně nějak jednoduše je omezit například podle počtu zobrazení ... vybírej si pár co maj nejmíň zobrazení
jenikkozak
Profil
matak:
Pokud bys fakt měl tak moc tak moc aktivních uživatelů a tak moc fotek, tak jak jsi uvedl v prvním příspěvku, ukládej u IP (či jakéhokoliv jiného identifikátoru) nejvyšší id fotky, které bylo zobrazeno, a vyber nejmenší id, které je větší než to uložené.
matak
Profil
ano to s tim id jsme se nakonec rozhodli udelat, ale chtel jsem prave vedet jestli nekdo nezna algoritmus tech ostatnich podobnych sluzeb, jestli je rozumne v tomto pripade nabizet fotky tak jak byly nahrany a ma to dalsi negativum se kterym nevim co mam delat

co kdyz nejaka fotka ceka na schvaleni, tak ji vyradit a nekdo se pres to id prezene a az bude schvalena za hodinu tak bohuzel uz tu fotku nikdy neuvidi, takze mam pocit ze je to spis docasne reseni
matak
Profil
jedine co mne napada fotky co cekaji na schvaleni proste pojedou do schvalovaci tabulky a az po schvaleni se presunou do te halvni, ok, vidite nekdo jeste nejaky dalsi zádrhel?
Ugo
Profil
zobrazovat fotky posloupně se mi nelíbí, ale faktem je že to je jediné řešení které je spolehlivé a rychlé. Většinout to ostatní služby to neřeší, fotku ti zobrazí klidně 5x po sobě, ale mají jich tolik že se to prostě nestane. Takhle se totiž stane že se ti budou zobrazovat jednotlivý uživatelé po sobě jelikož fotky budou nahrávat hromadně. S tim schvalováním musíš jedině tak a nebo neschvalovat, nech schvalování na prohlížejících - "je tato fotka nevhodná?" - po 3 kliknutí se ti ukáže v administraci abys to zvážil
matak
Profil
schvalují vybraní prohlížející taková je strategie zatím, já si tuto službu nechci zaplevelit bordelem, kde si tam každý hodí jakoukoli nerelevantní kravinu co ho napadne

a s těmi více uživateli za sebou, hm já vím no, ale zkusím to takto pak se uvidí jeslti se najde jiné řešení,


zatím děkuji za komentáře

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0