La strada per 1.1

Aperto da emanuele, Domenica - 03 Maggio 2015 - 00:41

0 Utenti e 2 Visitatori stanno visualizzando questa discussione.

emanuele

Ieri ho scritto un post veloce facendo il riassunto di cosa è stato introdotto in 1.1 da quanto si è iniziato a lavorarci.
Intanto che aspetto che finisca una build per vedere se ho fatto qualche casino, lo posto anche qui. 8)

1) PHP 5.3 e closure (sì, lo so che a molti non interessa :P)
2) Statistiche dei like da Joker™
3) Convertito i test automatici a PHPUnit ed aggiunto Selenuim (il testing dovrebbe interessarvi invece! :P)
4) Autenticazione a due fattori (Two-Factor authentication, non ho idea di come sia correntemente chiamata in italiano)
5) Iniziata la generalizzazione delle menzioni (che significa dare la possibilità di espandere oltre messaggi/like/buddy rendendo il sistema flessibile in modo da accomodare idealmente qualunque cosa)
6) Introduzione dei "moduli" per una migliore organizzazione ed estensione del codice
7) Un autoloader (<= meno da scrivere! :P)
8) Gestione automatica delle email respinte grazie a Targen
9) Aggiunta una classe Request per evitare di chiamare direttamente le variabili superglobal
10) Convertito tutti gli accessi in lettura al file system a classi SPL
11) Introdotto un sistema migliore (quantomeno più organizzato) di notifiche che punta a unificare tutti i tipi di notifiche disponibili (mentions/alerts, emails, digest, esterni, etc.) in un solo sistema
12) Unificazione di tutti i file di installazione ed upgrade in un'unica classe php (in teoria più facile da mantenere ed estendere).

Più naturalmente una serie di altre cose "minori" che ho perso per strada.

Mi rendo conto che a parte due/tre punti, la maggior parte saranno oscuri ai più e di poco interesse, ma sono tutte cose piuttosto importanti, che continuano l'opera di creazione delle fondamenta di un sistema ragionevolmente moderno e facilmente gestibile.

Va beh, per oggi la mia dose di marketing l'ho fatta, ora vado a dormire. ;D

P.S.
A chi indovina da dove la mia mente ha preso l'oggetto, un regalo a sorpresa. ^-^

radu81

Devo dire che state facendo un gran bel lavoro su Elkarte e sono proprio contento di aver convertito. Ho fatto decine di prove prima della conversione e avevo diversi dubbi prima di cambiare software, soprattutto con un software così giovane, ma dopo 5 mesi dal passaggio mi ritengo più che soddisfatto  ;)

Citazione1) PHP 5.3 e closure (sì, lo so che a molti non interessa :P
E' vero non interessa, ma so di sicuro che in molti provider di hosting stanno aggiornando a php 5.5. Ora sto usando php 5.6 e tutto funziona senza problemi  :P

Citazione2) Statistiche dei like da Joker™
ottimo, mi ricordo di averlo chiesto sul forum Elkarte

Citazione3) Convertito i test automatici a PHPUnit ed aggiunto Selenuim (il testing dovrebbe interessarvi invece! :P)
non so cosa sia, ma sono disposto a fare tutti i test possibili

Citazione4) Autenticazione a due fattori (Two-Factor authentication, non ho idea di come sia correntemente chiamata in italiano)
doppia autenticazione  ???
Per cosa? solo per admin immagino... o sbaglio? Anche in Joomla c'è una funzione simile che non è altro che un file htaccess che richiede una autenticazione prima di accedere al pannello di admin. E' la stessa cosa?

Citazione5) Iniziata la generalizzazione delle menzioni (che significa dare la possibilità di espandere oltre messaggi/like/buddy rendendo il sistema flessibile in modo da accomodare idealmente qualunque cosa)
ma non è la stessa cosa del punto 11) ?

Citazione6) Introduzione dei "moduli" per una migliore organizzazione ed estensione del codice
Cosa intendi per moduli? La stessa cosa di Joomla? Se è la stessa cosa li vedrei meglio come "blocchi" più che moduli

Citazione7) Un autoloader (<= meno da scrivere! :P)
cos'è?  ???

Citazione8) Gestione automatica delle email respinte grazie a Targen
mi ricordo di averlo chiesto, sono più che contento vederlo anche nel core di Elkarte :)

9)  10)
non so cosa sia

Citazione11) Introdotto un sistema migliore (quantomeno più organizzato) di notifiche che punta a unificare tutti i tipi di notifiche disponibili (mentions/alerts, emails, digest, esterni, etc.) in un solo sistema
Mi piace! Mi ricordo che si era parlato tempo fa su elkarte.net e anche di recente... Un po' come accade in XF
Le attuali notifiche in Elk 1.0.x sono piaciute molto ai miei utenti, immagino che queste modifiche saranno più che gradite.

Citazione12) Unificazione di tutti i file di installazione ed upgrade in un'unica classe php (in teoria più facile da mantenere ed estendere).
cose per gente come Emanuele o Spuds, non ho la minima idea di cosa sia :D

CitazioneMi rendo conto che a parte due/tre punti, la maggior parte saranno oscuri ai più e di poco interesse, ma sono tutte cose piuttosto importanti, che continuano l'opera di creazione delle fondamenta di un sistema ragionevolmente moderno e facilmente gestibile.
Non è detto che sono di poco interesse, avere una base solida è importante per voi sviluppatori. Ma è meglio che non entro in questo campo visto che le ultime righe di codice le ho scritte 15 anni fa in Turbo Pascal o meglio 10 anni fa in Vbasic :)

CitazioneA chi indovina da dove la mia mente ha preso l'oggetto, un regalo a sorpresa
ROADMAP! voglio il premio :D

p.s. dopo aver scritto questo post mi rendo conto quanto sia comoda la combinazione CTRL+Enter in Elk ;)

radu81

So che si era parlato sul forum ufficiale Elkarte per quanto riguarda i due addon di Spuds: ILA e Fancybox... Si parlava di un eventuale integrazione nel core per la versione 1.1 o 1.2. Si sa qualcosa?

ILA ha bisogno di qualche miglioria, per ora la stiamo usando in pochi perché è poco intuitiva, bisogna scrivere a mano il codice bbc per posizionare le immagini

emanuele

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
Devo dire che state facendo un gran bel lavoro su Elkarte e sono proprio contento di aver convertito. Ho fatto decine di prove prima della conversione e avevo diversi dubbi prima di cambiare software, soprattutto con un software così giovane, ma dopo 5 mesi dal passaggio mi ritengo più che soddisfatto  ;)
Sono contento! :D

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
Citazione1) PHP 5.3 e closure (sì, lo so che a molti non interessa :P
E' vero non interessa, ma so di sicuro che in molti provider di hosting stanno aggiornando a php 5.5. Ora sto usando php 5.6 e tutto funziona senza problemi  :P
Piccolo OT: in effetti, moltissimi provider stanno facendo il "balzo lungo", passando da 5.1/5.2 direttamente a 5.5 o 5.6, fino all'anno scorso non ero così convinto che sarebbe andata così, ma mi sa che con il ritmo che han preso quelli di php i provider hanno iniziato a pensare di "stare al passo".
Va beh, meno problemi in futuro. :P

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
Citazione3) Convertito i test automatici a PHPUnit ed aggiunto Selenuim (il testing dovrebbe interessarvi invece! :P)
non so cosa sia, ma sono disposto a fare tutti i test possibili
Grazie per la disponibilità! :D
In verità, qui parlavo di test automatici. Ogni volta che viene proposto del codice da integrare, un sistema automatico esegue tutta una serie di test che verificano che almeno alcune (per ora purtroppo molto poche) funzionalità non siano state compromesse.
Ad esempio:
https://travis-ci.org/elkarte/Elkarte/pull_requests
e poi più in dettaglio:
https://travis-ci.org/elkarte/Elkarte/jobs/61914768
che poi, se tutto va bene non c'è molto da vedere, ma se si fanno errori:
https://travis-ci.org/emanuele45/Dialogo/builds/61910027
e lo specifico di cosa è andato storto:
https://travis-ci.org/emanuele45/Dialogo/jobs/61910028
così si corregge ancora prima di integrare.

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
Citazione4) Autenticazione a due fattori (Two-Factor authentication, non ho idea di come sia correntemente chiamata in italiano)
doppia autenticazione  ???
Per cosa? solo per admin immagino... o sbaglio? Anche in Joomla c'è una funzione simile che non è altro che un file htaccess che richiede una autenticazione prima di accedere al pannello di admin. E' la stessa cosa?
No, non proprio.
Un esempio più simile (anche se ancora leggermente diverso) è quando accedi ad un account di gmail, se l'hai impostato, ti manda un sms con un codice che tu devi inserire.
Questa è una cosa simile, che passa attraverso l'app Google Authenticator.
In tutta onestà, non ho ancora indagato di preciso tutti i dettagli per varie ragioni, comunque l'idea è che Elk genera un codice che viene "mandato" (molto spannometricamente) all'app e tu lo re-inserisci in Elk per effettuare il login.

Di default è disattivato, può essere attivato dall'admin.
Non ho guardato se c'è controllo granulare a livello di gruppi o altro, sull'argomento son piuttosto impreparato. Sorry. :-[

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
Citazione5) Iniziata la generalizzazione delle menzioni (che significa dare la possibilità di espandere oltre messaggi/like/buddy rendendo il sistema flessibile in modo da accomodare idealmente qualunque cosa)
ma non è la stessa cosa del punto 11) ?
Sì e no.
Sì, come spiegazione in pratica son la stessa cosa.
No, le due cose sono "simili", ma non uguali. In verità credo di aver anche fatto confusione descrivendoli, quindi... LOL

A dire il vero, sto lottando con la semantica anche mentre scrivo codice e non so più come salvarmi...
Ci sono due aspetti:
1) la "menzione",
2) la notifica.
Per come li ho in mente, una "menzione/alert" è il meccanismo che riconosce un evento e genera una notifica.
La "notifica" è l'atto di inviare un "messaggio" all'utente che una "menzione/alert" è avvenuto.
E' una distinzione moooolto sottile e più che altro tecnica.
Mettendolo in contesto: una @mention è l'alert/menzione, questo manda una notifica che può essere la riga nella pagina, una mail immediata, o una riga in una mail giornaliera, oppure una push notification in un più o meno remoto futuro.

Non preoccuparti, ho le idee confuse anch'io. xD

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
Citazione6) Introduzione dei "moduli" per una migliore organizzazione ed estensione del codice
Cosa intendi per moduli? La stessa cosa di Joomla? Se è la stessa cosa li vedrei meglio come "blocchi" più che moduli
Non credo.
Per come li ho intesi i moduli sono... dei "pezzi" di codice che si innestano esclusivamente sfruttando sistemi di estensione del "core" (ad esempio hook o eventi) e che interagiscono con essi.
Per fare un paio di esempi pratici:
1) il codice degli @mention in 1.0 è completamente integrato nel codice "normale" che gestisce il salvataggio del post. In 1.1 questo codice è stato estrapolato e messo in un altro file che si "aggancia" al codice che crea il messaggio e fa il suo lavoro;
2) i draft stessa code: in 1.0 il codice è sperso in mezzo a quello di salvataggio dei post, ora è isolato.
Quali sono i vantaggi?
1) Se la funzione è disabilitata il codice di fatto è come se non esistesse. Meno "bloat".
2) Avendo funzionalità isolate è più facile gestire il codice e ci sono meno rischi di interferenza tra diverse funzionalità.
3) Maggiore facilità di estensione ed aggiunta di nuove funzionalità. Non c'è più da preoccuparsi "cosa rompo se aggiungo questo qui?", perché diventa una cosa a sé stante e sostanzialmente indipendente dal resto.
Certo, ci sono lati negativi come il rischio di qualche query in più qua e là, ma... onestamente al giorno d'oggi non è più come 10 anni fa quando una query in meno cambiava la vita.

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
Citazione7) Un autoloader (<= meno da scrivere! :P)
cos'è?  ???
Fidarsi no? :P
In php devi richiamare esplicitamente ogni file che contiene la funzione che ti serve:
require_once('/percorso/al/file.php');
con l'introduzione delle classi, però, hanno aggiunto la possibilità di "catturare" il fatto che non è stato incluso un certo file con quella classe che ti serve e così di dare la possibilità di includere il file "al volo".
Esempio:
<?php

require_once('/percorso/al/file/MiaClasse.php');
$obj = new MiaClasse();


con l'autoloader:
<?php

$obj 
= new MiaClasse();


perché da un'altra parte ci sarà scritto: "se qualcuno vuole istanziare la classe 'MiaClasse', richiama il file '/percorso/al/file/MiaClass.php'".
Molto spannometricamente. :P

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
Mi piace! Mi ricordo che si era parlato tempo fa su elkarte.net e anche di recente... Un po' come accade in XF
Le attuali notifiche in Elk 1.0.x sono piaciute molto ai miei utenti, immagino che queste modifiche saranno più che gradite.
In verità, per ora, il tutto è "solamente" sul lato tecnico. Nel senso che al momento, l'unico guadagno per admin ed utente finale è un maggior controllo sulla scelta di come ricevere le notifiche.
Dal lato "sviluppo", invece, avere una modalità più robusta significa sviluppare più rapidamente, sia nuove modalità per "notificare" l'utente, sia nuove tipologie di notifiche (come ad esempio il fatto che sei stato quotato).

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
cose per gente come Emanuele o Spuds, non ho la minima idea di cosa sia :D
Yep!!
Facendola semplice: nello sviluppo di SMF, per aggiungere qualcosa al database devi modificare 4 file (in 2.1 perché è stato tolto il supporto a SQLite, mentre in 2.0 erano 6): un file d'installazione ed uno di upgrade per MySQL, un file d'installazione ed uno di upgrade per PostgreSQL.
In ElkArte d'ora in più saranno due: un file d'installazione ed uno di upgrade. Ma continuiamo a supportare sia MySQL sia PostgreSQL.
Ciò significa anche che, se domani dovessimo decidere di supportare... SQLite i file da modificare continuerebbero ad essere 2 e basta. :D

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
Non è detto che sono di poco interesse, avere una base solida è importante per voi sviluppatori.
Idubbiamente.
Infatti la mia personale roadmap prevede che fino ad Elk 3.0 saremo a limare (con la scure LOL) il "backend" in modo da costruire un sistema di facile sviluppo/utilizzo. Da lì in avanti, poi, allora ci si potrà divertire! ;D
Piccola divagazione, in piccolo è quello che sto facendo con OpenImporter: OI è nato dal convert.php di SMFiana memoria, riorganizzato da TE e poi smembrato da me ed in fase di ricostruzione.

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
Ma è meglio che non entro in questo campo visto che le ultime righe di codice le ho scritte 15 anni fa in Turbo Pascal o meglio 10 anni fa in Vbasic :)
Io ho iniziato con VB!!

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
CitazioneA chi indovina da dove la mia mente ha preso l'oggetto, un regalo a sorpresa
ROADMAP! voglio il premio :D
Nope, non poteva essere così facile! :P
In verità stavo guardando lo scaffale e mi è caduto l'occhio su La Strada Per Dune. xD
Okay, non aveva assolutamente senso, ma tant'è. :P

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:37
p.s. dopo aver scritto questo post mi rendo conto quanto sia comoda la combinazione CTRL+Enter in Elk ;)
O:-)

emanuele

Citazione di: radu81 il Sabato - 09 Maggio 2015 - 22:59
So che si era parlato sul forum ufficiale Elkarte per quanto riguarda i due addon di Spuds: ILA e Fancybox... Si parlava di un eventuale integrazione nel core per la versione 1.1 o 1.2. Si sa qualcosa?
Quello che si sa è quello che c'è sul forum, penso che Spuds sia "combattuto" sull'includere ILA o meno, appunto per via dei piccoli problemi che ci sono.
Fancybox c'è il solito dilemma tra l'aggiungere qualche kb di javascript e mettere un prodotto già pronto, ma con più di quello che serve, oppure scrivere qualcosa di più compatto, ma che però richiederà più supporto.

* emanuele è per i kb in più e lasciare lo sviluppo di js a chiunque trovi bello quel linguaggio. xD

Flavio93Zena

Contrario a js, su Opera per telefono non va ;) Siccome Elk è responsive non avrebbe senso xD

emanuele

Vorrei mettere da parte per un momento il fatto che "responsive" non significa capacità di gestire interazioni complesse, ma mi risulta difficile.
Avere un desgin responsive ed aver bisogno di javascript per creare funzionalità sono due cose estremamente diverse e non sempre intercambiabili.

Per quanto riguarda Opera Mini, beh, il loro approccio è sicuramente interessante, ma, in tutta onestà, sta a loro migliorare la loro "creatura" per poter supportare quello che non funziona, non sta al web castrare sé stesso perché loro non sono in grado di supportare cose che il resto del mondo utilizza. E' già successo una volta, si chiamava Internet Explorer 4/5/6. E ti assicuro che non è stato bello, per niente.

Negli ultimi anni, tra l'altro, anch'io ho cambiato idea in maniera piuttosto "pesante" per quanto riguarda javascript: fino ad un paio d'anni fa per me il web doveva funzionare *senza* js, ora mi rendo anch'io conto che talebanismi di varia natura sono inutili, ci sono situazioni in cui javascript è un vantaggio non da poco nel gestire le situazioni, e ci sono casi in cui non è possibile fare altro che usare javascript. Quindi son ben propenso ad utilizzarlo.
Ovvio che, se il sistema funziona anche senza è certamente cosa buona.

Flavio93Zena

Io sono ancora alla tua vecchia idea, di certo potrai comprendermi visto che l'hai avuta prima di me ;D :)
Però la spiegazione non è male in effetti.

emanuele


Discussioni simili (3)