La parte di registrazione è terminata, l'ho riscritta usando molte più accortezze ed ho reso opzionale tutto, anche il nome. Avere dei nomi come X o Pippo o peggio ancora insulti, non mi serve a nulla.
Tutte le info extra che ho nel vecchio sito andranno poi rimosse (telefono, genere, ecc.) perchè sono informazioni che non servono più, eventualmente le reintrodurrò all'attivazione della 2FA ma in quel caso è anche più corretto richiederle.
Ho messo la riscrittura con doppio campo anche per la mail perchè non ci crederete ma arrivano parecchie mail scritte male, la gente non verifica nemmeno se mancano delle lettere (tipo gmail.co) e poi scrive arrabbiata che ho è arrivata la mail. Alcuni hanno scritto a 10 secondi di distanza dalla registrazione, immagino avessero già pronta la mail per chiedere spiegazioni, senza poi nemmeno far sapere che era tutto a posto appena confermato.
Quindi doppia digitazione mail e password, poi se vogliono fare copia/incolla perchè sono più bravi pazienza, io il mio contributo l'ho messo.
Sul versante validazioni ci sono molte più regole per evitare errori e dovrei aver previsto tutto ciò che permettono gli RFC ufficiali (5321 e 5322 se ricordo bene).
Ho aggiunto alla fine la verifiche sui domini usa e getta, realizzata dopo aver introdotto la pagina di amministrazione (già non esisteva nemmeno quella...) e i vari router url dedicati.
Per chi non lo sapesse, esistono liste di domini accertati come disposable (usa e getta) che servono per scrivere mail farlocche utili solo ad attivare l'account. Se il dominio rientra in uno di quelli, non è permesso inserirlo (e rimuoverò poi anche tutti quelli passati presenti nel sito attuale).
La lista di quei domini ora è arrivata a circa 130 mila voci, quindi non sono proprio pochi. Ma avere un utente che fa numero a me non interessa, piuttosto meglio anonimo.
Ho completato anche la parte di gestione alias/nomi gmail/googlemail, fatta qualche giorno fa ma mai controllata.
Come si vede dallo screenshot, hanno fatto la comparsa le due voci di ricerca e accando all'avatar ci sarà il tasto che porta alla pagina dedicata alle ricerche. In quella pagina ci saranno per ora 4 tipologie: macchine, software, file, testi. Devo ancora entrare nel dettaglio, ma l'idea è separare le ricerche per evitare di accentrare troppi filtri in una sola, almeno quelle diverse come file e testi, poi da lì sarà sempre possibile ottenere anche la lista in formato romset classica.
Prossimo step: gestione url e ricerca romset Mame.
Sarà un processo lungo, devo ripensare gli input e cercherò di sfruttare i filtri dinamici per alleggerire la pagina.
Oltretutto, non sto più usando jquery (evito librerie vecchie e pesanti), al suo posto sto usando un mix di template Twig e variabili in cache. Dovrebbe essere tutto quanto molto rapido nel render degli oggetti... almeno questo è l'obiettivo!
Benvenuto Ospite,
per utilizzare il Forum ed avere accesso a tutte le sezioni e poter aprire un tuo Topic, rispondere nelle varie discussioni, mandare o ricevere Messaggi Privati devi seguire pochi passaggi:
Leggi il nostro Regolamento -> PREMI QUI <-
Segui il link su come Iscriversi -> PREMI QUI <-
Ricordati di aggiornare l'Avatar usando una immagine che ti distingua nel Forum
per utilizzare il Forum ed avere accesso a tutte le sezioni e poter aprire un tuo Topic, rispondere nelle varie discussioni, mandare o ricevere Messaggi Privati devi seguire pochi passaggi:
Leggi il nostro Regolamento -> PREMI QUI <-
Segui il link su come Iscriversi -> PREMI QUI <-
Ricordati di aggiornare l'Avatar usando una immagine che ti distingua nel Forum
Sito web Arcade Database
Moderatore: Moderatore ADB
-
motoschifo
- Progetto Arcade Database
- Messaggi: 3358
- Iscritto il: 12/07/2013, 20:29
- Medaglie: 2
- Città: Parma
- Località: Parma
- Grazie Inviati: 37 volte
- Grazie Ricevuti: 43 volte
- Contatta:
Re: Sito web Arcade Database
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 Web ›ArcadeDatabase
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 Web ›ArcadeDatabase
-
motoschifo
- Progetto Arcade Database
- Messaggi: 3358
- Iscritto il: 12/07/2013, 20:29
- Medaglie: 2
- Città: Parma
- Località: Parma
- Grazie Inviati: 37 volte
- Grazie Ricevuti: 43 volte
- Contatta:
Re: Sito web Arcade Database
Pensavo di aver finito la pagina di registrazione, invece mi mancavano altre cosette che ho sistemato (separazione validazione/inserimento utente).
Poi mi sono fatto prendere la mano dalla formattazione di numeri e date, così ho esposto la selezione lingua un po' meglio, anzi è diventata la prima voce e al click viene aggiornata dinamicamente.
La gestiono ha richiesto parecchia attenzione, e vale anche per utenti non registrati, quindi l'ordine di importanza è questo:
1) forzatura interna (test)
2) da parametro lang=xx o language=xx, nel formato completo regionale o semplice (it_IT oppure it)
3) da url, es. /en/login, /it/login, /en-US/login
4) dall'utente, se connesso (profilo)
5) dal browser (anche qui formato regionale o compatto, con lista ordinata e peso delle voci)
6) se non risulta nulla, default inglese en_US (condizione rara perchè almeno il browser ha una lingua predefinita)
Per il tema invece sono previsti questi step:
1) forzatura interna (test)
2) da cookies (scelta fatta in precedenza)
3) dall'utente (che poi li salva nei cookies)
4) da browser
5) se non risulta nulla, tema automatico (quindi sistema operativo)
Ho fatto tradurre all'AI alcune lingue e non ho visto grossi problemi, ovvio che poi un giro manuale dovrà essere fatto ma in generale potrò attivare le varie lingue senza troppo sforzo.
Manca la selezione popup da avatar ma per oggi mi fermo qui.
Ieri ho anche implementato parzialmente i job schedulati di sistema e dell'utente, una novità rispetto al vecchio sito e molto importanti. In pratica funzioni speciali come export liste innescheranno la partenza di un job in background e al termine ci sarà l'avviso con popup o mail, in base alla richiesta dell'utente. Questo consentirà di gestire una coda e quindi di evitare troppe funzioni tutte insieme. Se oggi in 20 esportano un xml partono 20 export che fanno sedere il server, domani partirà un lavoro solo e 19 resteranno in coda. Questo permetterà di avere il server meno impegnato e più rapido nelle risposte.
Poi mi sono fatto prendere la mano dalla formattazione di numeri e date, così ho esposto la selezione lingua un po' meglio, anzi è diventata la prima voce e al click viene aggiornata dinamicamente.
La gestiono ha richiesto parecchia attenzione, e vale anche per utenti non registrati, quindi l'ordine di importanza è questo:
1) forzatura interna (test)
2) da parametro lang=xx o language=xx, nel formato completo regionale o semplice (it_IT oppure it)
3) da url, es. /en/login, /it/login, /en-US/login
4) dall'utente, se connesso (profilo)
5) dal browser (anche qui formato regionale o compatto, con lista ordinata e peso delle voci)
6) se non risulta nulla, default inglese en_US (condizione rara perchè almeno il browser ha una lingua predefinita)
Per il tema invece sono previsti questi step:
1) forzatura interna (test)
2) da cookies (scelta fatta in precedenza)
3) dall'utente (che poi li salva nei cookies)
4) da browser
5) se non risulta nulla, tema automatico (quindi sistema operativo)
Ho fatto tradurre all'AI alcune lingue e non ho visto grossi problemi, ovvio che poi un giro manuale dovrà essere fatto ma in generale potrò attivare le varie lingue senza troppo sforzo.
Manca la selezione popup da avatar ma per oggi mi fermo qui.
Ieri ho anche implementato parzialmente i job schedulati di sistema e dell'utente, una novità rispetto al vecchio sito e molto importanti. In pratica funzioni speciali come export liste innescheranno la partenza di un job in background e al termine ci sarà l'avviso con popup o mail, in base alla richiesta dell'utente. Questo consentirà di gestire una coda e quindi di evitare troppe funzioni tutte insieme. Se oggi in 20 esportano un xml partono 20 export che fanno sedere il server, domani partirà un lavoro solo e 19 resteranno in coda. Questo permetterà di avere il server meno impegnato e più rapido nelle risposte.
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 Web ›ArcadeDatabase
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 Web ›ArcadeDatabase
-
motoschifo
- Progetto Arcade Database
- Messaggi: 3358
- Iscritto il: 12/07/2013, 20:29
- Medaglie: 2
- Città: Parma
- Località: Parma
- Grazie Inviati: 37 volte
- Grazie Ricevuti: 43 volte
- Contatta:
Re: Sito web Arcade Database
Dopo altri giorni di lavoro sono finalmente arrivato ad un punto stabile per quanto riguarda le lingue.
Infatti mi ero accorto di un problema all'aumentare del numero di pagine/lingue che mi avrebbe complicato non poco la stesura di aggiornamenti, così ho rivisto le funzioni e raggruppato meglio i nomi per evitare conflitti.
Adesso ho fatto una prova con 10 pagine in 30 lingue e non ho rilevato alcun problema di prestazioni o di allineamento traduzioni, quindi direi che manterrò questa gestione.
Ho provato anche lingue con differente orientamento, come l'arabo, e varianti regionali (en_US / en_GB) e vengono gestite alla perfezione. Ovviamente in questo caso ci sono delle accortezze da usare, banalmente margin-left e margin-right non funzionano più perchè andrebbero invertiti. Ma basta saperlo per tempo e si corregge rapidamente.
Allego qualche screen, comunque direi che al rilascio inizierò con ita/eng e poi settimanalmente aggiungerò lingue fino a quando riuscirò ad avere traduzioni decenti con Google/AI. Da qui, pubblicherò su github per chiedere aiuto a qualche traduttore appassionato di retrogame, se mai vorrà contribuire.
Sta diventando un progettino molto interessante, e siamo appena agli inizi
Infatti mi ero accorto di un problema all'aumentare del numero di pagine/lingue che mi avrebbe complicato non poco la stesura di aggiornamenti, così ho rivisto le funzioni e raggruppato meglio i nomi per evitare conflitti.
Adesso ho fatto una prova con 10 pagine in 30 lingue e non ho rilevato alcun problema di prestazioni o di allineamento traduzioni, quindi direi che manterrò questa gestione.
Ho provato anche lingue con differente orientamento, come l'arabo, e varianti regionali (en_US / en_GB) e vengono gestite alla perfezione. Ovviamente in questo caso ci sono delle accortezze da usare, banalmente margin-left e margin-right non funzionano più perchè andrebbero invertiti. Ma basta saperlo per tempo e si corregge rapidamente.
Allego qualche screen, comunque direi che al rilascio inizierò con ita/eng e poi settimanalmente aggiungerò lingue fino a quando riuscirò ad avere traduzioni decenti con Google/AI. Da qui, pubblicherò su github per chiedere aiuto a qualche traduttore appassionato di retrogame, se mai vorrà contribuire.
Sta diventando un progettino molto interessante, e siamo appena agli inizi

Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 Web ›ArcadeDatabase
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 Web ›ArcadeDatabase
-
motoschifo
- Progetto Arcade Database
- Messaggi: 3358
- Iscritto il: 12/07/2013, 20:29
- Medaglie: 2
- Città: Parma
- Località: Parma
- Grazie Inviati: 37 volte
- Grazie Ricevuti: 43 volte
- Contatta:
Re: Sito web Arcade Database
Da ieri sera ad oggi ho esplorato invece la parte più interessante, quella della ricerca.
Premesso che il codice javascript vecchio è stato "buttato", mi ero scritto circa 20 mila righe js + jquery che col tempo erano diventate poco gestibili, sono quindi partito da zero (vanilla js senza jquery ne altre librerie).
Quindi ho affrontato il problema delle chiamate ajax, dei submit, del numero di pagina, infinity scrolli, action abilitate lato client/server, aggiornamento parametri, url, ecc.
Per ciascuno di questi aspetti, dopo una breve indagine, ho realizzato un piccolo pezzettino che nei prossimi giorni renderò strutturale per gestire tutte le funzioni che dovranno arrivare.
In dettaglio, la pagina viene generata lato server con i componenti minimali (layout standard con sidebar, avatar, menu, ecc.) e ci sarà un tasto "Cerca". In futuro arriveranno anche Esporta, Condividi, Opzioni, ecc. ma per ora basta quello. Il tasto ha un'azione (quelle che prima mettevo come ?ajax=funzione) che sarà gestita completamente in automatico, per esempio il tasto di ricerca gestisce l'azione/funzione server "Ricerca".
Alla pressione del pulsante o del tasto invio, ci sarà un primo submit della form con tutti i parametri impostati. Quei parametri saranno riportati nell'url, che quindi rispecchierà esattamente i filtri di ricerca.
Condividere un link sarà banale: copia e incolla.
Ecco un esempio di quando inserisco come ricerca la parola "metal": /search/machines?text=metal
Una volta eseguito il form submit, lato server sarà effettuata la ricerca e saranno forniti i dettagli da aggiornare pronti per il render, ovvero già in html formattato. Sarà quindi sempre il server a gestire questo aspetto, almeno inizialmente. Una volta ricevuta la pagina, eventuali azioni speciali potrebbero modificare questi blocchi (es. aggiungo il gioco tra i preferiti) e sarà a quel punto il client a modificare parzialmente gli oggetti (il minimo indispensabile, direi aggiungere/togliere classi html non di più).
Scorrendo con il mouse la lista, arrivati verso la fine partirà una seconda ricerca che caricherà la seconda pagina, e così via fino a quando ci saranno pagine disponibili.
Gli elementi già caricati non saranno toccati da modifiche, un eventuale menu aperto rimarrà aperto.
I filtri a video, se vengono cambiati, non rispecchieranno ne l'url ne la ricerca, ma occorrerà premere nuovamente il pulsante Cerca (o invio).
In questo modo il comportamento è coerente e prevedibile, non genera artefatti (tipo caricare blocchi parziali) e l'utente può usare quel link in sicurezza. Alcuni siti ad esempio se cambi un parametro e poi carichi la terza pagina, usano quel filtro anche se hanno già caricato due pagine, quindi il risultato diventa incoerente.
L'url però gestisce anche le lingue, quindi potrebbe arrivare con parametri come "?lang=it", ¨?language=fr", "/en-gb/search/machines", ecc. In questo caso il backend dirotta la pagina verso la versione neutra (es. /search/machines) e mantiene tutti i parametri impostati. Quindi la condivisione del link in altra lingua non modifica la lingua che ho scelto sul mio pc, cosa che ad esempio il sito di oggi fa. Per le api si applica un discorso diverso, la lingua dovrà essere sempre passata come parametro o come url (anche questo problema risolto rispetto ad oggi).
Questo sistema, all'apparenza semplice, se approfondito e gestito per siti ad alto traffico e multilingua è decisamente complesso. Il fatto di aver messo le basi per questi componenti mi mette al riparo da chiamate continue al server, spesso inutili, o da incongruenze nella lettura dei parametri.
Metto lo screen ma si tratta di un test con nome/titolo del gioco, giusto per capire se il sistema regge sotto stress. Però mi ricorda molto i primi esperimenti del sito che avevo fatto poco più di 10 anni fa (vedi allegato).
La cosa inizia a farsi molto interessante.
Premesso che il codice javascript vecchio è stato "buttato", mi ero scritto circa 20 mila righe js + jquery che col tempo erano diventate poco gestibili, sono quindi partito da zero (vanilla js senza jquery ne altre librerie).
Quindi ho affrontato il problema delle chiamate ajax, dei submit, del numero di pagina, infinity scrolli, action abilitate lato client/server, aggiornamento parametri, url, ecc.
Per ciascuno di questi aspetti, dopo una breve indagine, ho realizzato un piccolo pezzettino che nei prossimi giorni renderò strutturale per gestire tutte le funzioni che dovranno arrivare.
In dettaglio, la pagina viene generata lato server con i componenti minimali (layout standard con sidebar, avatar, menu, ecc.) e ci sarà un tasto "Cerca". In futuro arriveranno anche Esporta, Condividi, Opzioni, ecc. ma per ora basta quello. Il tasto ha un'azione (quelle che prima mettevo come ?ajax=funzione) che sarà gestita completamente in automatico, per esempio il tasto di ricerca gestisce l'azione/funzione server "Ricerca".
Alla pressione del pulsante o del tasto invio, ci sarà un primo submit della form con tutti i parametri impostati. Quei parametri saranno riportati nell'url, che quindi rispecchierà esattamente i filtri di ricerca.
Condividere un link sarà banale: copia e incolla.
Ecco un esempio di quando inserisco come ricerca la parola "metal": /search/machines?text=metal
Una volta eseguito il form submit, lato server sarà effettuata la ricerca e saranno forniti i dettagli da aggiornare pronti per il render, ovvero già in html formattato. Sarà quindi sempre il server a gestire questo aspetto, almeno inizialmente. Una volta ricevuta la pagina, eventuali azioni speciali potrebbero modificare questi blocchi (es. aggiungo il gioco tra i preferiti) e sarà a quel punto il client a modificare parzialmente gli oggetti (il minimo indispensabile, direi aggiungere/togliere classi html non di più).
Scorrendo con il mouse la lista, arrivati verso la fine partirà una seconda ricerca che caricherà la seconda pagina, e così via fino a quando ci saranno pagine disponibili.
Gli elementi già caricati non saranno toccati da modifiche, un eventuale menu aperto rimarrà aperto.
I filtri a video, se vengono cambiati, non rispecchieranno ne l'url ne la ricerca, ma occorrerà premere nuovamente il pulsante Cerca (o invio).
In questo modo il comportamento è coerente e prevedibile, non genera artefatti (tipo caricare blocchi parziali) e l'utente può usare quel link in sicurezza. Alcuni siti ad esempio se cambi un parametro e poi carichi la terza pagina, usano quel filtro anche se hanno già caricato due pagine, quindi il risultato diventa incoerente.
L'url però gestisce anche le lingue, quindi potrebbe arrivare con parametri come "?lang=it", ¨?language=fr", "/en-gb/search/machines", ecc. In questo caso il backend dirotta la pagina verso la versione neutra (es. /search/machines) e mantiene tutti i parametri impostati. Quindi la condivisione del link in altra lingua non modifica la lingua che ho scelto sul mio pc, cosa che ad esempio il sito di oggi fa. Per le api si applica un discorso diverso, la lingua dovrà essere sempre passata come parametro o come url (anche questo problema risolto rispetto ad oggi).
Questo sistema, all'apparenza semplice, se approfondito e gestito per siti ad alto traffico e multilingua è decisamente complesso. Il fatto di aver messo le basi per questi componenti mi mette al riparo da chiamate continue al server, spesso inutili, o da incongruenze nella lettura dei parametri.
Metto lo screen ma si tratta di un test con nome/titolo del gioco, giusto per capire se il sistema regge sotto stress. Però mi ricorda molto i primi esperimenti del sito che avevo fatto poco più di 10 anni fa (vedi allegato).
La cosa inizia a farsi molto interessante.
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 Web ›ArcadeDatabase
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 Web ›ArcadeDatabase
-
motoschifo
- Progetto Arcade Database
- Messaggi: 3358
- Iscritto il: 12/07/2013, 20:29
- Medaglie: 2
- Città: Parma
- Località: Parma
- Grazie Inviati: 37 volte
- Grazie Ricevuti: 43 volte
- Contatta:
Re: Sito web Arcade Database
Piccolo aggiornamento sulle lingue, giusto per completezza.
Dopo essermi letto ogni possibile documento per gestire al meglio le lingue di tutto il mondo, ho deciso di migliorare ulteriormente l'attuale gestione introducendo la modifica dei font per una dozzina di lingue: in quei casi, il font di default cambia perchè curve e ideogrammi sono resi meglio e la distribuzione dei caratteri è più uniforme in testi lunghi.
Avrei potuto ignorare queste cose, ma le differenze in effetti erano apprezzabili (in meglio).
Ho anche scoperto che le icone che indicano una direzionalità vanno invertite di verso nelle lingue che si leggono da destra a sinistra, tutte le altre no. Cercherò di ricordarmelo quando sceglierò le icone giuste.
Dopo essermi letto ogni possibile documento per gestire al meglio le lingue di tutto il mondo, ho deciso di migliorare ulteriormente l'attuale gestione introducendo la modifica dei font per una dozzina di lingue: in quei casi, il font di default cambia perchè curve e ideogrammi sono resi meglio e la distribuzione dei caratteri è più uniforme in testi lunghi.
Avrei potuto ignorare queste cose, ma le differenze in effetti erano apprezzabili (in meglio).
Ho anche scoperto che le icone che indicano una direzionalità vanno invertite di verso nelle lingue che si leggono da destra a sinistra, tutte le altre no. Cercherò di ricordarmelo quando sceglierò le icone giuste.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 Web ›ArcadeDatabase
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 Web ›ArcadeDatabase