Differenze tra le versioni di "Tutorial:Progettare applet efficienti"

Da GeoGebra Manual.
(Creata pagina con 'When designing a GeoGebra applet you should make sure it will work nicely on all devices. This article gives you some advice how to ensure your applets will display correctly ...')
 
 
(19 versioni intermedie di 4 utenti non mostrate)
Riga 1: Riga 1:
When designing a GeoGebra applet you should make sure it will work nicely on all devices. This article gives you some advice how to ensure your applets will display correctly and perform better.
+
Quando si progetta un'applet di GeoGebra è importante assicurarsi che funzioni bene su qualsiasi supporto. Questo articolo offre qualche consiglio che può aiutarvi a creare applet performanti e visualizzate correttamente.
  
Most important point: test as you go in HTML5, don’t author in Java and then test at the end (obviously if you identify something that seems slower than expected, please let the developers know and they will check it out). At the moment, HTML5 is generally slower than Java running on the same hardware.
+
''Punto fondamentale'': testate direttamente l'applet online, non createla offline verificando solo alla fine la compatibilità con la versione online (naturalmente se ad esempio notate una particolare lentezza nell'esecuzione, comunicatelo agli sviluppatori, in modo che possano fare le relative verifiche).  
  
==General advice==
+
==Consigli di carattere generale==
* Any user interface elements that are not needed should be hidden
+
* Evitare quando possibile i comandi che causano il caricamento del motore del CAS, come ad esempio <code>Semplifica( )</code>, <code>Fattorizza( )</code>, <code>Sviluppa( )</code>, <code>Asintoto( )</code>, oppure <code>f==g</code> per confrontare due funzioni. Il comando <code>Polinomio( )</code> è spesso una valida alternativa a <code>Semplifica( )</code> o <code>Sviluppa( )</code>.
* Only use fancy styling (hatching, background image) if necessary
+
* Nascondere tutti gli elementi dell'interfaccia utente che non sono necessari
* Do not place texts inside the applet unless necessary -- note that on GeoGebra you may place instructions for using the worksheet above and below the applet
+
* Utilizzare stili particolari (tratteggi, immagini di sfondo) solo se necessario
* Avoid showing unnecessary labels of objects
+
* Non posizionare testo nell'applet, se non strettamente necessario -- tenete conto del fatto che sulla ''Piattaforma dei materiali'' di GeoGebra è possibile inserire le istruzioni relative all'utilizzo del foglio di lavoro sia sopra che sotto l'applet
* Grid and axes should be hidden if not needed
+
* Evitare la visualizzazione di etichette degli oggetti non necessarie
* If a computed value is used multiple times, it should be assigned to a variable and that variable name should be used
+
* Nascondere griglia e assi se non sono necessari
 +
* Se un determinato valore calcolato è utilizzato più volte nell'applet, conviene assegnarlo a una variabile e utilizzare al suo posto il nome della variabile
  
* Algebra View:  
+
* Vista Algebra:  
** If you only need algebraic descriptions of a few objects, create dynamic texts and hide the Algebra View
+
** Se sono necessarie le descrizioni algebriche di qualche oggetto, creare dei testi dinamici e nascondere la ''vista Algebra''
** You may also reduce the time needed to draw Algebra View updates, by collapsing some of the categories (eg switch Algebra to sort by type and hide all lists) or  marking objects as auxiliary
+
** Per ridurre ulteriormente il tempo necessario all'aggiornamento dei valori visualizzati nella ''vista Algebra'', comprimere le categorie degli oggetti (ad esempio impostare la ''vista Algebra'' ordinata ''per tipo di oggetto'' e comprimere tutte le liste) oppure contrassegnare gli oggetti come ausiliari
  
==Scripting tips==
+
==Consigli per lo scripting==
* SetValue[a,c+b] will be '''much''' faster than a=c+b (to avoid the whole construction being rebuilt) but ggbApplet.setValue() will be even faster as it will need less parsing.
+
* Se possibile evitare di utilizzare scripting (chiedere nel [https://help.geogebra.org Forum] per ulteriori informazioni e aiuto)
* SetValue[a, If[x<3,4,5]] is better than If[x<3,SetValue[a,4],SetValue[a,5]]
+
* In caso sia assolutamente necessario utilizzare degli script, JavaScript è più veloce di GeoGebraScript (ggbApplet.evalCommand() è comunque un comando GeoGebraScript)
 +
* <code><nowiki>ImpValore(a, c + b)</nowiki></code> è '''molto''' più veloce di <code><nowiki>a = c + b</nowiki></code> (in questo modo si evita il ricalcolo di tutta la costruzione) ma <code>ggbApplet.setValue()</code> è comunque l'assegnazione più veloce, perché necessita di minore analisi interna.
 +
* <code><nowiki>ImpValore(a, Se(b < 3, 4, 5))</nowiki></code> è più efficiente di <code><nowiki>Se(b < 3,ImpValore(a, 4), ImpValore(a, 5))</nowiki></code>
  
==Lists==
+
==Animazioni==
The Sequence[ ] and Zip[] commands are currently quite slow in some cases. The team is working on some ideas to speed this up, in the meantime it’s worth trying out the spreadsheet for building sequences, and using “Conditon to Show Object” to simulate Sequence[ ]
+
Nelle animazioni multi-fase, conviene costruire oggetti distinti gestiti da slider distinti, invece di un singolo oggetto finale gestito da un solo slider.
  
==Animations==
+
Ecco un esempio efficiente per la soluzione di EDO (utilizzando uno slider a velocità variabile) che è decisamente più veloce rispetto all'utilizzo di script o eventi del tipo ''All'aggiornamento'': http://www.geogebra.org/student/m23587
If you have a multi-step animation, build it as separate objects driven by separate sliders, not as one big object driven by one slider
 
 
 
Here’s an example of an efficent way to solve ODEs (by using a variable slider speed) which is much quicker than using scripts/on update events.
 
http://www.geogebra.org/student/m23587
 
  
 
==LaTeX==
 
==LaTeX==
 +
L'ideale è utilizzare i comandi [[comando TabellaTesto|TabellaTesto]] e [[comando LaTeX|LaTeX]]: è comunque possibile utilizzare la sintassi nativa LaTeX se necessario.
  
Best to use the [[TableText Command]] & [[FormulaText Command]] but basic LaTeX also works well in HTML5:
 
http://www.geogebra.org/student/m33487?mobile=true
 
 
==Images==
 
Make sure you’re not using hi-res images when a smaller one would do (especially in Sequence commands)
 
  
[[en:Tutorial:Responsive_Applets]]
+
==Immagini==
 +
*Non utilizzare immagini ad alta risoluzione quando non è necessario (specialmente nel comando <code>Successione( )</code>). Sono disponibili vari software tipo http://www.irfanview.com/ per abbassare la risoluzione delle immagini
 +
*https://jakearchibald.github.io/svgomg/ riduce le dimensioni dei file SVG in modo molto efficace
 +
*https://tinypng.com/ riduce le dimensioni dei file PNG in modo molto efficace (tipicamente dell'80-90%)

Versione attuale delle 09:20, 19 mar 2020

Quando si progetta un'applet di GeoGebra è importante assicurarsi che funzioni bene su qualsiasi supporto. Questo articolo offre qualche consiglio che può aiutarvi a creare applet performanti e visualizzate correttamente.

Punto fondamentale: testate direttamente l'applet online, non createla offline verificando solo alla fine la compatibilità con la versione online (naturalmente se ad esempio notate una particolare lentezza nell'esecuzione, comunicatelo agli sviluppatori, in modo che possano fare le relative verifiche).

Consigli di carattere generale

  • Evitare quando possibile i comandi che causano il caricamento del motore del CAS, come ad esempio Semplifica( ), Fattorizza( ), Sviluppa( ), Asintoto( ), oppure f==g per confrontare due funzioni. Il comando Polinomio( ) è spesso una valida alternativa a Semplifica( ) o Sviluppa( ).
  • Nascondere tutti gli elementi dell'interfaccia utente che non sono necessari
  • Utilizzare stili particolari (tratteggi, immagini di sfondo) solo se necessario
  • Non posizionare testo nell'applet, se non strettamente necessario -- tenete conto del fatto che sulla Piattaforma dei materiali di GeoGebra è possibile inserire le istruzioni relative all'utilizzo del foglio di lavoro sia sopra che sotto l'applet
  • Evitare la visualizzazione di etichette degli oggetti non necessarie
  • Nascondere griglia e assi se non sono necessari
  • Se un determinato valore calcolato è utilizzato più volte nell'applet, conviene assegnarlo a una variabile e utilizzare al suo posto il nome della variabile
  • Vista Algebra:
    • Se sono necessarie le descrizioni algebriche di qualche oggetto, creare dei testi dinamici e nascondere la vista Algebra
    • Per ridurre ulteriormente il tempo necessario all'aggiornamento dei valori visualizzati nella vista Algebra, comprimere le categorie degli oggetti (ad esempio impostare la vista Algebra ordinata per tipo di oggetto e comprimere tutte le liste) oppure contrassegnare gli oggetti come ausiliari

Consigli per lo scripting

  • Se possibile evitare di utilizzare scripting (chiedere nel Forum per ulteriori informazioni e aiuto)
  • In caso sia assolutamente necessario utilizzare degli script, JavaScript è più veloce di GeoGebraScript (ggbApplet.evalCommand() è comunque un comando GeoGebraScript)
  • ImpValore(a, c + b) è molto più veloce di a = c + b (in questo modo si evita il ricalcolo di tutta la costruzione) ma ggbApplet.setValue() è comunque l'assegnazione più veloce, perché necessita di minore analisi interna.
  • ImpValore(a, Se(b < 3, 4, 5)) è più efficiente di Se(b < 3,ImpValore(a, 4), ImpValore(a, 5))

Animazioni

Nelle animazioni multi-fase, conviene costruire oggetti distinti gestiti da slider distinti, invece di un singolo oggetto finale gestito da un solo slider.

Ecco un esempio efficiente per la soluzione di EDO (utilizzando uno slider a velocità variabile) che è decisamente più veloce rispetto all'utilizzo di script o eventi del tipo All'aggiornamento: http://www.geogebra.org/student/m23587

LaTeX

L'ideale è utilizzare i comandi TabellaTesto e LaTeX: è comunque possibile utilizzare la sintassi nativa LaTeX se necessario.


Immagini

© 2024 International GeoGebra Institute