Nomi colorati vs performance

Aperto da Flavio93Zena, Domenica - 28 Giugno 2015 - 16:45

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Flavio93Zena

La domanda è molto semplice... Se io mettessi link colorati col colore della membergroup (admin rosso, global mod in blu etc) ai nomi degli utenti in *qualsiasi* posto del forum... Ammazzerebbe il server oppure no?
Il problema sorge dal fatto che ho installato questo schifo (http://custom.simplemachines.org/mods/index.php?mod=111) da un pezzo, ma crea diversi problemi con il validator (sì so che fa schifo pure quello) e la cosa mi annoia. A parte il fatto che la mod è un casino assurdo (UGH: http://custom.simplemachines.org/mods/index.php?action=parse;mod=111;attach=180484;smf_version=2.0) e che l'ho reportata stanotte perchè NON ha l'uninstaller :o (messo a posto, ma solo per me, la mod buggata è sempre scaricabile).

Ora ho provato per esempio nel profilo (anche se ci sono millemila posti in cui dovrei farlo!!!) a cambiare da $context['member']['name'] a $context['member']['link'] ed effettivamente viene effettuato in automatico.
Seconda domanda... Non esiste una via più semplice per sostituirli tutti? :( Chiaramente prima dovrei disinstallare quella M di mod, perchè cambia 'name' in 'colored_name'.

Grazie in anticipo >_<

emanuele

beh, la via più breve potrebbe essere di semplicemente sostituire name con link in loadMemberContext (che è poi la via che ho seguito nel mio addon per elkarte che da agli utenti l'opzione di customizzarsi il nome... anzi, là sono andato ancora più "extreme" dato che ho cambiato direttamente il valore nel database con il markup html), ma questo causerebbe problemi laddove il nome è già usato in url (che infatti ho dovuto correggere).

La domanda sulle performance è talmente inutile che il solo battere la tastiera per rispondere sta consumando più risorse. Rendiamoci conto che non siamo più nel 2005, quando gli shared host davano php con 8 (dico OTTO) MB di RAM a disposizione e che ogni server era stipato con una quantità spropositata di siti ed il server stesso era un catorcio. Al giorno d'oggi php ha come minimo 128 MB di RAM sempre a disposizione, i server sono delle bestie di potenza da far paura e per 5 euro al mese puoi avere in mano la potenza che 10 anni fa era disponibile per l'intero server.

Flavio93Zena

Questa è una delle risposte per le quali sono stato curioso come non so cosa ;D stavo già per bumpare xD

Allora, code-wise. Load.php
Codice (trova) Seleziona

// What a monstrous array...
$memberContext[$user] = array(
'username' => $profile['member_name'],
'name' => $profile['real_name'],


Codice (sostituisci con) Seleziona

// What a monstrous array...
$memberContext[$user] = array(
'username' => $profile['member_name'],
'name' => $profile['link'],

O sbaglio tutto? (Non lo escludo, lol) ;D

Riguardo alla domanda della performance... Il motivo è semplice in realtà. Su sm.org avevo letto che se per esempio uno metteva tanto BBCode in Board Index poteva rallentare tutto... Ecco mi domandavo se "spammare" link colorati potesse fare la stessa cosa. Siccome non ero sicuro al 100% ho preferito chiedere, anche perchè è una mod enorme e la modifica è grossa, per cui sbagliare non lo prendo nemmeno in considerazione ;D

emanuele

#3
Citazione di: Flavio93Zena il Lunedì - 29 Giugno 2015 - 14:56
Allora, code-wise. Load.php
Codice (trova) Seleziona

// What a monstrous array...
$memberContext[$user] = array(
'username' => $profile['member_name'],
'name' => $profile['real_name'],


Codice (sostituisci con) Seleziona

// What a monstrous array...
$memberContext[$user] = array(
'username' => $profile['member_name'],
'name' => $profile['link'],

O sbaglio tutto? (Non lo escludo, lol) ;D
No, $profile['link'] non esiste.
Qualche riga sotto a 'name' c'è 'link', dovrai copiare il contenuto di questa in 'name'.
Ricorda che questo può causare problemi.

Il bbcode è una cosa, l'avere link colorati in base ai gruppi è un'altra.

Comunque, su sm.org sparano c@xx@te a raffica, non per questo bisogna proprio sempre credergli.
Anch'io avevo il dubbio fino a qualche tempo fa, poi ho semplicemente usato la testa e pensato: in BI, mal che vada, mediamente ci saranno 30 descrizioni, la pagina media di un topic contiene 25 post. Quale abominevole differenza può esserci tra il renderizzare 30 descrizioni di board in BBCode ed il renderizzare 25 post di un topic qualunque? Esattamente: nessuna.
Ma non solo, possiamo anche rincarare la dose: il BI è 1 (una) pagina. Punto, fine, stop. Ogni pagina di un topic, in realtà, genera mediamente altre... 25 pagine (una per ogni messaggio). Il che vuol dire, che per esempio, un crawler leggera il BI una volta, ma ogni pagina di ogni topic la rileggerà fino ad un massimo di 26 volte (1 volta la pagina, più 25 volte per ogni messaggio in quella pagina). Ora, in un forum, normalmente, esistono parecchi topic, parecchie migliaia possibilmente, il che ancora significa che per ogni volta che viene aperto il BI, verranno aperte 10000 altre pagine che *già ora* richiedono il parsing dei messaggi da bbc ad html, quindi l'impatto delle descrizioni delle board in bbc è totalmente irrisorio nell'economia del forum.
Ulteriore punto (di cui probabilmente solo io mi rendo conto) è che se hai i messaggi recenti in infocenter, anche se il corpo del messaggio non è visualizzato (come nel 99.99% dei casi), guess what? Il messaggio viene comunque passato attraverso parse_bbc, quindi "sprechi" cicli di CPU per il nulla più totale.
In 10+ anni di SMF qualcuno se n'è lamentato? Non mi pare proprio.

Flavio93Zena

#4
Citazione di: emanuele il Lunedì - 29 Giugno 2015 - 15:26
No, $profile['link'] non esiste.
Qualche riga sotto a 'name' c'è 'link', dovrai copiare il contenuto di questa in 'name'.
Eff... Non l'ho visto perchè la mod ha modificato tutto...

Citazione di: emanuele il Lunedì - 29 Giugno 2015 - 15:26
Ricorda che questo può causare problemi.
Tipo? :) EDIT: primo problema - rompeva la memberlist nel campo mail. Risolto mettendo real_name al posto di name.

Citazione di: emanuele il Lunedì - 29 Giugno 2015 - 15:26
Comunque, su sm.org sparano c@xx@te a raffica, non per questo bisogna proprio sempre credergli.
Ho notato... Ogni volta che me ne esco con un qualcosa preso da là mi smonti clamorosamente ._. ;D Almeno imparo qualcosa!

Citazione di: emanuele il Lunedì - 29 Giugno 2015 - 15:26
[snip]
Grazie della spiegazione tecnica :) Mi fa piacere riuscire finalmente a seguirti abbastanza spesso.

EDIT 2
P.S.: Ho aggiornamenti. Funziona solo perchè ho la mod SimpleColorizer... Diversamente non funziona assolutamente (cioè i link ai nomi dei profili vengono trattati come normalissimi a:link e hanno il colore base dei link, non quello della membergroup) E per favore guarda la sezione staff. Davvero.
Tuttavia la mod mi spara parecchi errori nel validator (sì so che fa schifo pure quello ma gli errori sono reali) perchè "duplica" la dichiarazione del colore in diversi punti :(

emanuele

Citazione di: Flavio93Zena il Lunedì - 29 Giugno 2015 - 17:17
P.S.: Ho aggiornamenti. Funziona solo perchè ho la mod SimpleColorizer... Diversamente non funziona assolutamente (cioè i link ai nomi dei profili vengono trattati come normalissimi a:link e hanno il colore base dei link, non quello della membergroup)
Beh, io mi son basato su quello che hai detto te, non ho mica verificato se c'era o meno il colore. :P

Citazione di: Flavio93Zena il Lunedì - 29 Giugno 2015 - 17:17
Tuttavia la mod mi spara parecchi errori nel validator (sì so che fa schifo pure quello ma gli errori sono reali) perchè "duplica" la dichiarazione del colore in diversi punti :(
Beh, non è nemmeno un problema "tanto" tragico, la modifica che ho suggerito io potrebbe causarne di più seri (ad esempio link dentro a link).
Al momento l'unico modo che mi viene in mente per eliminarlo non è elegantissimo, quindi... boh, ci penserò su.

Flavio93Zena

Citazione di: emanuele il Lunedì - 29 Giugno 2015 - 21:58
Citazione di: Flavio93Zena il Lunedì - 29 Giugno 2015 - 17:17
P.S.: Ho aggiornamenti. Funziona solo perchè ho la mod SimpleColorizer... Diversamente non funziona assolutamente (cioè i link ai nomi dei profili vengono trattati come normalissimi a:link e hanno il colore base dei link, non quello della membergroup)
Beh, io mi son basato su quello che hai detto te, non ho mica verificato se c'era o meno il colore. :P
Difatti non ti ho detto niente, me ne sono accorto io stesso proprio quando te l'ho detto >_< se la disinstallo mi cala ad un solo errore di validator (da 13 o più TUTTI relativi al colore tranne quel singolo che è a parte).

Citazione di: emanuele il Lunedì - 29 Giugno 2015 - 21:58
Citazione di: Flavio93Zena il Lunedì - 29 Giugno 2015 - 17:17
Tuttavia la mod mi spara parecchi errori nel validator (sì so che fa schifo pure quello ma gli errori sono reali) perchè "duplica" la dichiarazione del colore in diversi punti :(
Beh, non è nemmeno un problema "tanto" tragico, la modifica che ho suggerito io potrebbe causarne di più seri (ad esempio link dentro a link).
Al momento l'unico modo che mi viene in mente per eliminarlo non è elegantissimo, quindi... boh, ci penserò su.
Il fatto è che la tua modifica non frega nulla al forum.. Nel senso che se c'è la mod (SimpleColorizer, sorry non avevo messo il link prima) i link funzionano colorati, diversamente no. Peraltro se cambio in load.php devo modificare la mail della memberlist (anche se è molto facile per cui non è affatto un problema).
Ho guardato un po' il codice e non ho la più pallida idea di come togliere l'errore dal validator... Se non ce l'hai nemmeno tu siamo a posto ;D

emanuele

No, non ho detto che non lo so, ho detto che non mi piace come lo farei.

Flavio93Zena

Intendevo quello, mettendo sullo stesso piano il tuo non mi piace con un "non so se non in un modo brutto" :) Fammi sapere se ti viene in mente, intanto vado a rompere le scatole con il cookiechoices ;D

emanuele

bah, non mi viene in mente altro...
Codice (find) Seleziona
if (($user_colors = sc_loadColors($user_ids)) !== false)
foreach ($user_colors as $user_id => $user_color)
$buffer = preg_replace(str_replace('{$user_id}', $user_id, $regex[1]), '$1 style="color: ' . $user_color . ';"', $buffer);


Codice (replace with) Seleziona
if (($user_colors = sc_loadColors($user_ids)) !== false)
{
$style_from = array();
$style_to = array();
foreach ($user_colors as $user_id => $user_color)
{
$buffer = preg_replace(str_replace('{$user_id}', $user_id, $regex[1]), '$1 style="color: ' . $user_color . ';"', $buffer);
$style_from[] = 'style="color: ' . $user_color . '" style="color: ' . $user_color . '"';
$style_to[] = 'style="color: ' . $user_color . '"';
}
$buffer = str_replace($style_from, $style_to, $buffer);
}

Flavio93Zena

Lol ora ho capito che intendevi col fatto che non ti piacesse ;D Tuttavia non vedo cambiamenti da prima, sempre errori nell'xhtml...
Idea molto probabilmente stupida... Ma non sarebbe possibile dire al codice esistente qualcosa del tipo  if $style[] = 'style="color: ' . $user_color . '" style="color: ' . $user_color . '"'; die else colora i nomi?

P.S.: ho php 5.4 al momento, perchè a volte ritorna deprecated con preg_replace e altre no...? :|

emanuele

Ho mancato i punti e virgola:
$style_from[] = 'style="color: ' . $user_color . ';" style="color: ' . $user_color . ';"';
$style_to[] = 'style="color: ' . $user_color . ';"';

così dovrebbe andare...forse.

Flavio93Zena

:D E ha rivelato diverse altre cose nel validator, ma almeno sulla board index e in diverse altre parti è finalmente VERDE :D (no errori, passed)
Grazie!!! Anche se non è elegantissimo come codice in effetti funziona :P
*incrocia le dita sperando che continui a funzionare xD*

Discussioni simili (3)