The Best Practices Book Version: 2.6
|
|
- Ruggero Forte
- 8 anni fa
- Visualizzazioni
Transcript
1 The Best Practices Book Version:. generated on September, 0
2 The Best Practices Book (.) This work is licensed under the Attribution-Share Alike.0 Unported license ( licenses/by-sa/.0/). You are free to share (to copy, distribute and transmit the work), and to remix (to adapt the work) under the following conditions: Attribution: You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Share Alike: If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. For any reuse or distribution, you must make clear to others the license terms of this work. The information in this book is distributed on an as is basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor SensioLabs shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. If you find typos or errors, feel free to report them by creating a ticket on the Symfony ticketing system ( Based on tickets and users feedback, this book is continuously updated.
3 Contents at a Glance Best Practice Symfony Framework... Creare il progetto... Configurazione...0 Organizzare la logica di business... Controllori...0 Template... Form... Internationalizzazione... Sicurezza... Risorse pubbliche... Test... generated on September, 0 Contents at a Glance iii
4 Chapter Best Practice Symfony Framework Symfony è conosciuto per essere un framework molto flessibile ed è infatti utilizzato in diversi ambiti come ad esempio piccoli siti web, applicazioni enterprise con miliardi di richieste e anche come base per altri framework. Da quando è stato pubblicato nel luglio 0, la comunità ha imparato molto su ciò che Symfony è in grado di fare e su quale sia il modo migliore per farlo. Le diverse risorse create dalla comunità, da articoli di blog a presentazioni a conferenze, hanno creato una serie di raccomandazioni e pratiche ufficiose per lo sviluppo di applicazioni Symfony. Purtroppo molte di queste raccomandazioni sono sbagliate e oltre a complicare lo sviluppo delle stesse applicazioni non sono allineate con la filosofia originale e pragmatica dei creatori di Symfony. Di che parla questa guida? Lo scopo di questa guida è quello di risolvere il problema sopra menzionato stabilendo una serie di buone pratiche ufficiali per lo sviluppo di applicazioni web con il framework Symfony. Queste pratiche sono quelle che meglio si adattano alla filosofia immaginata dal creatore originale del framework Fabien Potencier. Best practice è un termine che vuol dire "una procedura ben definita, nota per produrre risultati quasi ottimali". Ciò è esattamente quello che questa guida di propone di fornire. Anche se non tutti saranno d'accordo con ogni raccomandazione, c'è una ferma convinzione che saranno tutte d'aiuto per costruire grandi applicazioni con minore complessità. Questa guida è particolarmente indicata per: Siti web e applicazioni web sviluppato con il framework Symfony. Per altre situazioni, questa guida potrebbe essere un buon punto di partenza, che si potre estendere per soddisfare le proprie esigenze specifiche: Bundle condivisi pubblicamente con la comunità di Symfony; Sviluppatori esperti o squadre che hanno creato i propri standard;. generated on September, 0 Chapter : Best Practice Symfony Framework
5 Alcune applicazioni complesse, con requisiti altamente personalizzati; Bundle che potrebbero essere condivisi internamente in un'azienda. Si sa che le vecchie abitudini sono dure a morire e qualcuno potrebbe meravigliarsi o non essere d'accordo con alcune di queste regole. Nonostante ciò, crediamo che seguendo questi consigli potrete sviluppare le applicazioni più velocemente, con una minore complessità e con la stessa o perfino una migliore qualità. Inoltre le raccomandazioni saranno continuamente aggiornate e migliorate. In ogni caso, considerare che le raccomandazioni sono *opzionali e che ogni sviluppatore può decidere se adottarle oppure no. Se si preferisce continuare a sviluppare utilizzando altre pratiche e metodologie, si può continuare a farlo. Symfony è abbastanza flessibile da adattarsi a ogni necessità e questo non cambierà mai. A chi è rivolto il libro? (Suggerimento: non è un tutorial) Questa guida è pensata per qualsiasi sviluppatore Symfony, sia esperto che principiante. Non essendo un tutorial passo passo, però, è necessaria una conoscenza basilare di Symfony, per seguire la guida al meglio. Per chi è proprio agli inizi, benvenuto nella comunità! Meglio iniziare con il tutorial la guida rapida. Inoltre è stato deciso di mantenere questa guida più piccola possibile, per essere molto facile da leggere. Non ci si soffermerà su spiegazioni che si possono trovare nella documentazione ufficiale di Symfony, come discussioni sulla dependency injection o sui front controller. Ci si soffermerà unicamente a spiegare come fare ciò che già si conosce. L'applicazione Insieme a questa guida ci sarà un'applicazione di esempio, sviluppata seguendo le best practice. L'applicazione è un semplice blog, che consentirà di concentrarsi sui concetti di Symfony, senza sconfinare in particolarità proprie dell'applicazione. Invece di sviluppare l'applicazione passo passo, ci saranno pezzi di codice all'interno dei singoli capitoli. Fare riferimento all'ultimo capitolo di questa guida per maggiori dettagli sull'applicazione e le istruzioni per installarla. Non aggiornare un'applicazione esistente Dopo aver letto questo manuale, qualcuno potrebbe pensare di rifattorizzare la sua applicazione Symfon. La raccomandazione è chiara e netta: meglio non rifattorizzare applicazioni esistenti per aderire a queste best practice. Le ragioni per non farlo sono diverse: Le applicazioni esistenti non sono sbagliate, seguono semplicemente un insieme diverso di linee guida; Una rifattorizzazione totale espone a possibili errori nell'applicazione; L'ammontare di lavoro speso potrebbe essere dedicato con più profitto a migliorare i test o ad aggiungere funzionalità che forniscano valore reale agli utenti finali. generated on September, 0 Chapter : Best Practice Symfony Framework
6 Chapter Creare il progetto Installazione di Symfony In passato, i progetti Symfony erano creati con Composer, il gestore di dipendenze per applicazioni PHP. Tuttavia, la raccomandazione attuale è di usare l'installatore di Symfony, che deve essere installato prima della creazione del primo progetto. Usare l'installatore di Symfony per creare nuovi progetti basati su Symfony. Leggere il capitolo dell'installazione del libro di Symfony per sapere come installare e usare l'installatore di Symfony. Creare un'applicazione Blog Ora che è tutto pronto, si può creare un nuovo progetto, basato su Symfony. Nella console dei comandi, andare nella cartelle in cui si hanno i permessi per creare file ed eseguire i comandi seguenti: Listing - # Linux, Mac OS X $ cd progetti/ $ symfony new blog # Windows c:\> cd progetti/ c:\progetti\> php symfony.phar new blog Questo comando crea una nuova cartella chiamata blog, con dentro un nuovo progetto, basato sulla versione stabile più recente di Symfony al momento disponibile. Inoltre, l'installatore verifica se il sistema soddisfa i requisiti tecnici per eseguire le applicazioni Symfony. In caso contrario, si vedrà una lista di modifiche necessarie per soddisfare tali requisiti.. generated on September, 0 Chapter : Creare il progetto
7 Per ragioni di sicurezza, tutte le versioni di Symfony sono firmate digitalmente. Se si vuole verificare l'integrità di una versione di Symfony, dare un'occhiata al repository dei checksum pubblici e seguire questi passi. Strutturare l'applicazione Dopo aver creato l'applicazione, spostandosi nella cartella blog/, si vedrà il seguente insieme di file e cartelle, generato automaticamente: Listing - 0 blog/ app/ console cache/ config/ logs/ Resources/ src/ AppBundle/ vendor/ web/ Questa gerarchia di file e cartelle è la struttura proposta da Symfony per organizzare un'applicazione. Lo scopo di ciascuna cartella è il seguente: app/cache/ contiene tutti i file di cache generati dall'applicazione; app/config/ contiene la configurazione definita per ciascun ambiente; app/logs/ contiene tutti i file di log generati dall'applicazione; app/resources/ contiene tutti i file template e di traduzione dell'applicazione; src/appbundle/ contiene codice specifico per Symfony (controllori e rotte), codice di dominio (p.e. le classi Doctrine) e tutta la logica di business; vendor/ in questa cartella Composer installa tutte le dipendenze dell'applicazione; non si dovrebbe mai modificare il suo contenuto; web/ contiene il front controller e tutti le risorse per il web, come i fogli di stile, i file JavaScript e le immagini. I bundle dell'applicazione Quando è stato rilasciato Symfony.0, la maggior parte degli sviluppatori ha adottato, in modo naturale, lo stesso approccio usato in symfony.x, suddividendo l'applicazione in moduli logici. Proprio per questo, molte applicazioni Symfony separano i bundle dal punto di vista logico: UserBundle, ProductBundle, InvoiceBundle, eccetera. Tuttavia, i bundle sono stati concepiti come moduli software da riutilizzare in maniera autonoma. Se UserBundle non può essere riusato "così com'è" in un'altra applicazione Symfony, allora non è più un. generated on September, 0 Chapter : Creare il progetto
8 bundle. Inoltre, InvoiceBundle dipende da ProductBundle, quindi non esiste alcun vantaggio ad avere due bundle separati. Creare solamente un bundle, chiamato AppBundle, per la logica dell'applicazione Implementando solamente il bundle AppBundle in un progetto, si renderà il codice più conciso e facile da capire. A partire da Symfony., la documentazione ufficiale di Symfony mostra gli esempi con il bundle AppBundle. Non è necessario aggiungere il prefisso dell'azienda (vendor) ad AppBundle (p.e. AcmeAppBundle), dato che questo bundle, specifico dell'applicazione, non verrà mai condiviso con terzi. Detto questo, la struttura di cartelle raccomandata di un'applicazione Symfony è la seguente: Listing - 0 blog/ app/ console cache/ config/ logs/ Resources/ src/ AppBundle/ vendor/ web/ app.php app_dev.php Se l'installazione di Symfony non dispone di un AppBundle già generato, lo si può generare a mano, con questo comando: Listing - $ php app/console generate:bundle --namespace=appbundle --dir=src --format=annotation --no-interaction Estendere la struttura delle cartelle Se un progetto o un'infrastruttura richiedono alcune modifiche alla struttura predefinita delle cartelle, è possibile ridefinire la posizione delle cartelle principali: cache/, logs/ e web/. Symfony, inoltre, userà una struttura di cartelle leggermente diversa, quando sarà rilasciato: Listing - 0 blog-symfony/ app/ config/ Resources/ bin/ console src/ var/ cache/ logs/ generated on September, 0 Chapter : Creare il progetto
9 vendor/ web/ Le modifiche sono piuttosto superficiali ma, per ora, si consiglia di utilizzare la struttura di cartelle di Symfony. generated on September, 0 Chapter : Creare il progetto
10 Chapter Configurazione La configurazione di un'applicazione, normalmente, coinvolge diverse parti (ad es. infrastruttura tecnologica e sicurezza) e diversi ambienti (sviluppo, produzione). Proprio per questo, Symfony raccomanda di suddividere la configurazione in tre parti. Configurazione relativa all'infrastruttura Definire le opzioni della configurazione relativa all'infrastruttura tecnologica nel file app/config/ parameters.yml. Il file parameters.yml segue questa regola e definisce le opzioni relative alla base dati e al server di posta: Listing - 0 # app/config/parameters.yml parameters: database_driver: pdo_mysql database_host:.0.0. database_port: ~ database_name: symfony database_user: root database_password: ~ mailer_transport: smtp mailer_host:.0.0. mailer_user: ~ mailer_password: ~ #... Queste opzioni non sono definite nel file app/config/config.yml, perché non hanno niente a che fare con il comportamento dell'applicazione. In altre parole, l'applicazione non si deve preoccupare di sapere dov'è posizionata la base dati o come vi accede. L'unica cosa che gli importa sapere è che la base dati sia configurata correttamente. generated on September, 0 Chapter : Configurazione 0
11 Parametri canonici Definire tutti i parametri dell'applicazione nel file ` app/config/parameters.dist.yml``. Dalla versione., Symfony include un file di configurazione chiamato parameters.dist.yml, che contiene tutti i parametri di configurazione che devono essere definiti affinché l'applicazione funzioni correttamente. Ogni volta che viene definito un nuovo parametro di configurazione per l'applicazione, esso dovrebbe essere aggiunto a questo file e tale modifica dovrebbe essere registrata anche sul sistema di controllo di versione. Quando lo sviluppatore aggiorna il progetto o esegue un deploy, Symfony controllerà eventuali differenze tra il file canonico parameters.dist.yml` e il file locale parameters.yml. In presenza di differenze Symfony, chiederà di fornire un valore per il nuovo parametro e lo aggiungerà al file locale parameters.yml. Configurazione relativa all'applicazione Definire le opzioni di configurazione relative all'applicazione nel file app/config/config.yml. Il file config.yml contiene le opzioni usate dall'applicazione per modificare il suo comportamento, come ad esempio il mittente delle o l'abilitazione di feature toggle. È possibile definire questi valori anche in parameters.yml, ma questo aggiungerebbe un livello di configurazione extra non necessario, perché solitamente non si vuole che questi valori cambino su ogni server. Le opzioni di configurazione definite nel file config.yml solitamente variano da un ambiente all'altro. È per questo che Symfony include già i file app/config/config_dev.yml e app/config/ config_prod.yml, in modo che si possano ridefinire valori specifici per ciascun ambiente. Costanti od opzioni di Configurazione Uno degli errori più comuni nel definire la configurazione dell'applicazione è creare nuove opzioni per valori che non cambieranno mai, come ad esempio il numero degli elementi mostrati in una paginazione. Usare costanti per definire opzioni di configurazione che cambieranno raramente. L'approccio tradizionale della definizione delle opzioni di configurazione ha costretto molte applicazioni Symfony a includere opzioni come la seguente, che controlla il numero di post da mostrare nell'homepage del blog. Listing - # app/config/config.yml parameters: homepage.num_items: 0 Se chiedete a voi stessi quando è stata l'ultima volta che avete modificato il valore di una opzione come questa, è probabile che la risposta sia mai. Creare un'opzione di configurazione per un valore che non si andrà mai a modificare è inutile. La nostra raccomandazione è di definire questi valori come costanti nell'applicazione. Si potrebbe, ad esempio, definire una costante NUM_ITEMS nell'entità Post: Listing -. generated on September, 0 Chapter : Configurazione
12 // src/appbundle/entity/post.php namespace AppBundle\Entity; class Post const NUM_ITEMS = 0; Il vantaggio più importante nella definizione di costanti è che si possono utilizzare dappertutto nell'applicazione. A differenza i parametri sono disponibili solamente tramite il contenitore di Symfony. Le costanti possono essere usate, per esempio, nei template di Twig, grazie alla funzione constant(): Listing - <p> Displaying the constant('num_items', post) most recent results. </p> Così facendo, sia le entità di Doctrine che i repository possono accedere facilmente a questi valori, mentre le stesse classi non posso accedere ai parametri del contenitore. Listing - 0 namespace AppBundle\Repository; use Doctrine\ORM\EntityRepository; use AppBundle\Entity\Post; class PostRepository extends EntityRepository public function findlatest($limit = Post::NUM_ITEMS) L'unico svantaggio da considerare, nell'utilizzo delle costanti come opzioni di configurazione, è che non possono essere ridefinite facilmente nei test. Non usare la configurazione semantica Non definire nei bundle una configurazione semantica per il contenitore. Come spiegato nella ricetta Caricare la configurazione di un servizio in un bundle, i bundle di Symfony possono gestire le opzioni di configurazione in due modi: la configurazione normale del servizio, attraverso il file services.yml, e la configurazione semantica, attraverso una classe speciale di tipo *Extension. Sebbene la configurazione semantica è molto più potente e fornisce interessanti caratteristiche, come la validazione delle opzioni di configurazione, la quantità di lavoro necessaria per la definizione del bundle è notevole e non vale la pena cimentarsi per bundle non rivolti a terzi. generated on September, 0 Chapter : Configurazione
13 Spostare le opzioni di configurazione sensibili al di fuori di Symfony Quando si lavora con opzioni sensibili, come le credenziali di accesso alla base dati, si raccomanda di spostarle al di fuori dell'applicazione Symfony e di renderle disponibili tramite variabili d'ambiente. Si può imparare come farlo nella seguente ricetta: Configurare parametri esterni nel contenitore dei servizi generated on September, 0 Chapter : Configurazione
14 Chapter Organizzare la logica di business In informatica, La logica di business è "la parte del programma che codifica le regole di business della vita reale, che determinano il modo in cui i dati possono essere creati, memorizzati e modificati" (vedere la definizione completa ). Nelle applicazioni Symfony, la logica di business comprende tutto il codice implementato per l'applicazione non relativo al framework. Le classi di dominio, le entità Doctrine e classiche classi PHP utilizzate come servizi rappresentano buoni esempi di logica di business. Nella maggior parte dei progetti, la logica di business dovrebbe essere inserita dentro AppBundle. All'interno di tale bundle è possibile creare qualsiasi gerarchia di cartelle, come struttura organizzativa. Listing - progetto-symfony/ app/ src/ AppBundle/ Utils/ MiaClasse.php vendor/ web/ Mettere classi fuori dal bundle? Non vi è alcuna limitazione tecnica che ci impedisca di mettere la logica di business fuori dal bundle. Se si vuole si può creare il proprio namespace dentro src/ e mettere tutto là dentro: Listing - progetto-symfony/ app/ src/ Acme/ Utils/ MiaClasse.php. generated on September, 0 Chapter : Organizzare la logica di business
15 AppBundle/ vendor/ web/ La raccomandazione di usare il bundle AppBundle è giustificata dal voler rendere tutto più facile da gestire. Se sei così esperto da sapere cosa è necessario mettere dentro un bundle e cosa mettere invece fuori, sentiti libero di farlo. Servizi: nomi e formati La nostra applicazione blog ha bisogno di una utility in grado di trasformare il titolo di ogni post (ad es. "Ciao mondo") nel suo relativo slug (ad es. "ciao-mondo"). Lo slug verrà quindi usato come parte dell'url del post. Creiamo una classe Slugger dentro src/appbundle/utils/ e aggiungiamo il metodo slugify(): Listing - 0 // src/appbundle/utils/slugger.php namespace AppBundle\Utils; class Slugger public function slugify($string) return preg_replace( '/[^a-z0-]/', '-', strtolower(trim(strip_tags($string))) ); Definiamo quindi un nuovo servizio per tale classe. Listing - # app/config/services.yml services: # keep your service names short app.slugger: class: AppBundle\Utils\Slugger Per la definizione dei nomi dei servizi solitamente si sceglie di utilizzare il nome e la posizione della classe, per evitare collisioni di nomi. Pertanto il servizio dovrebbe chiamarsi app.utils.slugger. Tuttavia, se si usano nomi dei servizi brevi, il codice risulterà più facile da leggere e da usare. Il nome di un servizio dovrebbe essere il più breve possibile, ma abbastanza univoco da poter cercare il servizio nel progetto, se necessario. Adesso è possibile usare lo slugger da ogni controllore, come AdminController: Listing - public function createaction(request $request) if ($form->issubmitted() && $form->isvalid()) $slug = $this->get('app.slugger')->slugify($post->gettitle()); generated on September, 0 Chapter : Organizzare la logica di business
16 0 $post->setslug($slug); Formato dei servizi: YAML Per la definizione del servizio, nella sezione precedente, è stato usato il formato YAML. Per la definizione dei propri servizi usare il formato YAML. Si sa che questa raccomandazione è molto controversa. È noto che sia il formato YAML sia il formato XML sono ugualmente utilizzati tra gli sviluppatori, con una leggere preferenza verso YAML. Entrambi i formati hanno le stesse prestazioni, quindi la scelta di quale utilizzare è una questione di gusti personali. Si raccomanda di usare YAML, perché risulta più semplice da gestire dai nuovi programmatori e perché più conciso. Ovviamente, si può usare il formato che si preferisce. Servizi: niente parametri di classe Qualcuno potrebbe aver notato che nella definizione del servizio precedente non è stato creato un parametro di configurazione per definire la classe di servizio: Listing - # app/config/services.yml # definzione di servizio con classe come parametro parameters: slugger.class: AppBundle\Utils\Slugger services: app.slugger: class: "%slugger.class%" Questa pratica risulta scomoda e assolutamente non necessaria per i propri servizi: Non definire parametri di configurazione per le classi dei servizi. Questa abitudine trae la sua origine da un'erronea imitazione dei bundle di terze parti. Se si sviluppa un bundle da condividere, è possibile allora definire parametri di configurazione per le classi. Ma se si sviluppa un servizio per la propria applicazione, non c'è bisogno che le sue classi siano configurabili. Usare uno strato di persistenza Symfony è un framework HTTP, che si preoccupa solo di generare una risposta HTTP per ogni richiesta HTTP. Questo è il motivo per cui Symfony non prevede una sua modalità per comunicare con uno strato di persistenza (come una base dati o API esterne) È possibile quindi scegliere la libreria o la strategia preferita. generated on September, 0 Chapter : Organizzare la logica di business
17 In pratica, molte applicazioni Symfony si appoggiano al progetto Doctrine per definire il loro modello tramite entità e repository. Così come per la logica di business, si raccomanda di creare le entità di Doctrine in AppBundle. Le tre entità definite dall'applicazione blog sono un buon esempio di come rappresentare le classi: Listing - progetto-symfony/... src/ AppBundle/ Entity/ Comment.php Post.php User.php Per gli sviluppatori esperti, si possono creare classi in uno spazio dei nomi in src/. Informazioni di mappatura di Doctrine Le entità doctrine sono semplici classi PHP le cui informazioni vengono memorizzate in qualche "database". Le uniche informazioni conosciute da Doctrine su queste entità sono informazioni di mapping di metadati sul modello. Doctrine supporta quattro formati per definire queste informazioni: YAML, XML, PHP e annotazioni. Usare le annotazioni per definire la mappatura delle entità Doctrine. Le annotazioni sono di gran lunga il modo più conveniente e agile per definire e cercare le informazioni di mappatura: Listing namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; /** */ class Post const NUM_ITEMS = 0; /** */ private $id; /** */. generated on September, 0 Chapter : Organizzare la logica di business
18 private $title; /** */ private $slug; /** */ private $content; /** */ private $author ; /** */ private $publishedat; /** * targetentity="comment", * mappedby="post", * orphanremoval=true * ) = "ASC") */ private $comments; public function construct() $this->publishedat = new \DateTime(); $this->comments = new ArrayCollection(); // getter e setter... Tutti i formati hanno le stesse prestazioni, quindi la scelta su quale formato usare dipende, ancora una volta, dai gusti personali. Fixture dei dati Symfony non ha un supporto predefinito per le fixture, è necessario installare il bundle di gestione delle fixture in Doctrine, eseguendo il seguente comando: Listing - $ composer require "doctrine/doctrine-fixtures-bundle" Quindi è necessario abilitare il bundle in AppKernel.php, ma solo per gli ambienti dev e test: Listing -0 use Symfony\Component\HttpKernel\Kernel; generated on September, 0 Chapter : Organizzare la logica di business
19 0 0 class AppKernel extends Kernel public function registerbundles() $bundles = array( ); if (in_array($this->getenvironment(), array('dev', 'test'))) $bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(); return $bundles; Per semplicità, si raccomanda di creare solamente una classe fixture, anche se è consentito averne di più, se questa classe diventa troppo grande. Ipotizzando di avere almeno una classe fixture e che l'accesso alla base dati sia configurato correttamente, è possibile caricare il tutto eseguendo il seguente comando: Listing - $ php app/console doctrine:fixtures:load Careful, database will be purged. Do you want to continue Y/N? Y > purging database > loading AppBundle\DataFixtures\ORM\LoadFixtures Standard di codice Il codice sorgente di Symfony rispetta gli standard PSR- e PSR-, definiti dalla comunità PHP. Per saperne di più, vedere gli standard di codice di Symfony. Inoltre, usare PHP-CS-Fixer, una utility a riga di comando in grado di riformattare tutto il codice sorgente dell'applicazione in pochi secondi generated on September, 0 Chapter : Organizzare la logica di business
20 Chapter Controllori Symfony segue la filosofia "controllori magri e modelli grassi". Ciò significa che i controllori dovrebbero contenere solo il codice strettamente necessario per coordinare le diversi parti dell'applicazione. La regola d'oro per i controllori è sintetizzata nella tripla Ogni controllore dovrebbe definire al massimo variabili, contenere al massimo 0 azioni, ciascuna delle quali formate al massimo da 0 righe di codice. Anche se possono esserci eccezioni alla regola, essa mette in evidenza quando sarebbe opportuno iniziare a rifattorizzare il codice del controllore e spostarlo in un servizio. Estendere il controllore dalla classe base fornita da FrameworkBundle e usare le annotazioni per configurare rotte, cache e sicurezza, quando possibile. L'accoppiamento dei controllore al framework sottostante consente di sfruttare tutte le funzionalità del framework stesso, aumentando la produttività. Poiché i controllori dovrebbero essere leggeri e contenere niente di più che poche linee di codice, per coordinare il flusso della richiesta, spendere ore provando a disaccoppiarlo dal framework non porterà grandi benefici nel lungo periodo. La quantità di tempo sprecato non vale il beneficio. Inoltre usare le annotazioni per le rotte, la cache e la sicurezza semplifica enormemente la configurazione dell'applicazione. Non sarà necessario esplorare decine di file di formati diversi (YAML, XML, PHP): tutta la configurazione è lì dove serve e in un solo formato. Complessivamente, quindi, si dovrebbe disaccoppiare totalmente la logica di business dal framework e nello stesso tempo accoppiare totalmente al framework controllori e rotte, in modo da ottenere il massimo da Symfony. Configurazione delle rotte Per caricare tutte le rotte definite nelle annotazioni dei controllori del bundle AppBundle aggiungete la seguente configurazione al file principale delle rotte: Listing - # app/config/routing.yml app: resource: "@AppBundle/Controller/" type: annotation generated on September, 0 Chapter : Controllori 0
21 Questa configurazione caricherà le annotazioni da ogni controllore presente sia nella cartella src/ AppBundle/Controller/ sia nelle sue sottocartelle. Se l'applicazione definisce molti controllori, è perfettamente lecito organizzare il tutto in sottocartelle. Listing - 0 <progetto>/... src/ AppBundle/... Controller/ DefaultController.php... Api/ Backend/ Configurazione dei template Non usare per configurare il template usato dal controllore. Anche se risulta molto utile, essa nasconde qualche trucco. Ritenendo che il gioco non valga la candela, si raccomanda di non usarla. La maggior parte delle è usato senza parametri, il che rende più difficile sapere quale template viene reso. Il suo utilizzo inoltre rende meno ovvio ai principianti che un controllore deve sempre restituire un oggetto Response (a meno che non si usi il livello della vista). Come dovrebbe essere il controllore Considerando tutto, ecco un esempio di come dovrebbe essere il controllore per l'homepage di un'applicazione: Listing - 0 namespace AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; class DefaultController extends Controller /** name="homepage") */ public function indexaction() $posts = $this->getdoctrine() ->getrepository('appbundle:post') ->findlatest(); return $this->render('default/index.html.twig', array( 'posts' => $posts generated on September, 0 Chapter : Controllori
22 0 )); Usare ParamConverter Se l'applicazione usa Doctrine, è possibile usare opzionalmente ParamConverter per effettuare la ricerca dell'entity in modo automatico e passarla come parametro del controllore. Usare ParamConverter per caricare automaticamente le entità di Doctrine, nei casi più semplici. Per esempio: Listing - 0 use AppBundle\Entity\Post; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; /** name="admin_post_show") */ public function showaction(post $post) $deleteform = $this->createdeleteform($post); return $this->render('admin/post/show.html.twig', array( 'post' => $post, 'delete_form' => $deleteform->createview(), )); Solitamente ci si aspetterebbe un parametro $id nel metodo showaction. Invece, creando un nuovo parametro ($post) e specificando il tipo di classe Post (che è un'entità Doctrine), ParamConverter cercherà automaticamente un oggetto la cui proprietà $id corrisponde al valore id. Nel caso in cui non venga trovato alcun Post, verrà mostrato la pagina 0. Esecuzione di ricerche più avanzate Nell'esempio precedente tutto funziona senza nessuna configurazione, perché il nome del segnaposto id corrisponde esattamente al nome della proprietà dell'entità. Quando questo non succede, o se si ha perfino una logica più complessa, la cosa più facile da fare è cercare l'entità manualmente. Questo è per esempio quello che succede nella classe CommentController dell'applicazione: Listing - /** name = "comment_new") */ public function newaction(request $request, $postslug) $post = $this->getdoctrine() ->getrepository('appbundle:post') ->findoneby(array('slug' => $postslug));. generated on September, 0 Chapter : Controllori
23 0 if (!$post) throw $this->createnotfoundexception(); Naturalmente è possibile in modo più avanzato, perché è abbastanza flessibile: Listing - 0 use AppBundle\Entity\Post; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; use Symfony\Component\HttpFoundation\Request; /** name = "comment_new") options="mapping": "postslug": "slug") */ public function newaction(request $request, Post $post) Si può infine dire che la scorciatoia di ParamConverter è buona nelle situazioni semplici. Nonostante ciò, non si dovrebbe mai dimenticare che la ricerca diretta di entity è un'operazione molto facile. Eseguire codice prima e dopo Se si ha la necessità di eseguire del codice prima o dopo l'esecuzione dei controllore, è possibile usare il componente EventDispatcher configurando i filtri prima e dopo. generated on September, 0 Chapter : Controllori
24 Chapter Template Quando è nato PHP, 0 anni fa, gli sviluppatori rimasero incantati dalla sua semplicità e dalla possibilità di mescolare facilamente HTML e codice dinamico. Con il passare del tempo, sono nati tanti linguaggi per i template, come Twig, in grado di gestire i template dell'applicazione in modo migliore. Usare Twig per i template Generalmente parlando, i template in PHP sono più prolissi di Twig, per la mancanza di supporto nativo a molte caratteristiche necessarie nei template moderni, come l'ereditarietà, l'escape automatico, i filtri e le funzioni. Twig è il formato predefinito per i template in Symfony e può contare sul supporto della più grande comunità di utenti fra tutti gli engine non PHP (è usato in progetti molto importanti, come Drupal ). Inoltre, Twig è l'unico formato con supporto garantito in Symfony.0. Il formato PHP potrebbe non essere più supportato ufficialmente. Posizione dei template Inserire tutti i template dell'applicazione nella cartella app/resource/views/ Solitamente gli sviluppatori Symfony mettevano i template dell'applicazione nella cartella Resources/ views/ di ciascun bundle. Per riferirsi ad essi usavano il nome logico (p.e. AcmeDemoBundle:Default:index.html.twig). Anche se per i bundle di terzi questa abitudine è corretta, è molto più conveniente, invece, inserire i template dell'applicazione nella cartella app/resources/views/. Innanzitutto questo semplifica drasticamente il nome logico dei template: Template dentro i bundle AcmeDemoBundle:Default:index.html.twig ::layout.html.twig AcmeDemoBundle::index.html.twig Template dentro app/ default/index.html.twig layout.html.twig index.html.twig generated on September, 0 Chapter : Template
25 Template dentro i bundle AcmeDemoBundle:Default:subdir/index.html.twig AcmeDemoBundle:Default/subdir:index.html.twig Template dentro app/ default/subdir/index.html.twig default/subdir/index.html.twig Un altro vantaggio è che centralizzare i template semplifica il lavoro dei grafici. Essi non dovranno cercare più i template in tante cartelle sparpagliate fra i bundle. Usare la notazione_serpente in minuscolo per nomi di cartelle e template. Estensioni Twig Definire le estensioni di Twig nella cartella AppBundle/Twig, configurandole nel file app/config/ services.yml. All'applicazione serve un filtro Twig personalizzato mhtml in modo da poter trasformare il contenuto di ogni post da Markdown in HTML. Per fare questo, per prima cosa, installare l'ottimo parser Markdown Parsedown come nuova dipendenza del progetto: Listing - $ composer require erusev/parsedown Quindi creare un nuovo servizio chiamato Markdown, che sarà usato successivamente dall' estensione Twig. La definizione del servizio richiede solamente di specificare il percorso della classe. Listing - # app/config/services.yml services: #... markdown: class: AppBundle\Utils\Markdown La classe Markdown definisce un unico metodo per trasformare il contenuto Markdown in contenuto HTML: Listing - 0 namespace AppBundle\Utils; class Markdown private $parser; public function construct() $this->parser = new \Parsedown(); public function tohtml($text) $html = $this->parser->text($text); return $html;. generated on September, 0 Chapter : Template
26 Quindi, creare un'estensione Twig e definire un nuovo filtro chiamato mdhtml, utilizzando la classe Twig_SimpleFilter. Iniettare il nuovo servizio, appena definito, markdown nel costruttore dell'estensione Twig: Listing namespace AppBundle\Twig; use AppBundle\Utils\Markdown; class AppExtension extends \Twig_Extension private $parser; public function construct(markdown $parser) $this->parser = $parser; public function getfilters() return array( new \Twig_SimpleFilter( 'mdhtml', array($this, 'markdowntohtml'), array('is_safe' => array('html')) ), ); public function markdowntohtml($content) return $this->parser->tohtml($content); public function getname() return 'app_extension'; Infine, definire un nuovo servizio, assegnandogli il tag twig.extension (il nome del servizio è irrilevante, perché non verrà mai usato nel codice). Listing - # app/config/services.yml services: app.twig.app_extension: class: AppBundle\Twig\AppExtension arguments: ["@markdown"] public: false tags: - name: twig.extension generated on September, 0 Chapter : Template
27 Chapter Form I form sono uno dei componenti più abusati di Symfony; questo è dovuto sia al suo vasto campo di applicazione sia alla sua lista infinita di funzionalità. In questo capitolo, mostreremo alcune best practices in modo da poterli sfruttare al meglio. Creazione dei form Definire i form come classi PHP. Il componente Form consente di creare form direttamente dal controllore. A meno che non si voglia riusare il form da qualche altra parte, quest'abitudine non è del tutto sbagliata. Nonostante ciò, per form più complessi da poter riutilizzare in altri controllori si raccomanda di definire ogni form nella propria classe PHP: Listing namespace AppBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class PostType extends AbstractType public function buildform(formbuilderinterface $builder, array $options) $builder ->add('title') ->add('summary', 'textarea') ->add('content', 'textarea') ->add('author ', ' ') ->add('publishedat', 'datetime') ; public function setdefaultoptions(optionsresolverinterface $resolver) generated on September, 0 Chapter : Form
28 0 $resolver->setdefaults(array( 'data_class' => 'AppBundle\Entity\Post' )); public function getname() return 'post'; Per creare il form, chiamare il metodo createform e instanziare la nuova classe: Listing - 0 use AppBundle\Form\PostType; public function newaction(request $request) $post = new Post(); $form = $this->createform(new PostType(), $post); Registrazione dei form come servizi È possibile registrare i tipi di form come servizi, anche se non si consiglia di farlo a meno che non si pianifichi di riusare lo stesso form in altri posti o di incorporarlo all'interno di altri form, usando il tipo collection. Per la maggior parte dei casi in cui il form viene usato solo per modifica o creazione, la registrazione come servizio è eccessiva e rende più difficile capire esattamente quale classe sia usata nel controllore. Configurazione dei bottoni Le classe dei form dovrebbe essere agnostica rispetto a dove viene utilizzata. In questo modo, i form possono essere riusati più facilmente. Aggiungere i bottoni nel template, non nelle classi dei form o nei controllori. A partire da Symfony. è possibile aggiugere campi button all'interno del form. Il vantaggio è che si semplifica il codice del template che visualizza il form. Lo svantaggio è che aggiungere il bottone alla classe form ne limita la sua riusabilità. Listing - class PostType extends AbstractType public function buildform(formbuilderinterface $builder, array $options) $builder ->add('save', 'submit', array('label' => 'Create Post')) ; generated on September, 0 Chapter : Form
29 0 Questo form potrebbe essere stato progettato per la creazione di post, ma, se si volesse riusarlo anche per la modifica, la label del bottone sarebbe sbagliata. Alcuni sviluppatori configurano invece i bottoni del form nel controllore: Listing namespace AppBundle\Controller\Admin; use Symfony\Component\HttpFoundation\Request; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use AppBundle\Entity\Post; use AppBundle\Form\PostType; class PostController extends Controller public function newaction(request $request) $post = new Post(); $form = $this->createform(new PostType(), $post); $form->add('submit', 'submit', array( 'label' => 'Crea', 'attr' => array('class' => 'btn btn-default pull-right') )); Anche questa soluzione è sbagliata, perché si sta mischiando codice markup relativo alla presentazione (etichette, classi CSS, ecc.) con codice PHP. La separazione delle competenze è una buona regola da seguire sempre, quindi tutto ciò che è relativo alla vista deve essere messo nel livello della vista: Listing - form_start(form) form_widget(form) <input type="submit" value="create" class="btn btn-default pull-right" /> form_end(form) Rendere il Form Symfony mette a disposizione diversi modi per rendere un form, dal rendere tutto il form con un unico comando al rendere ogni singolo campo in modo indipendente. Il modo migliore dipende dalla quantità di personalizzazione necessaria nel form. Il modo più semplice, utile specialmente durante lo sviluppo, è la funzione form_widget() per rendere tutti i campi insieme: Listing - generated on September, 0 Chapter : Form
30 form_start(form, 'attr': 'class': 'my-form-class' ) form_widget(form) form_end(form) Se si ha bisogno di un controllo più preciso sulla renderizzazione del form non usare la funzione form_widget(form) e rendere i campi individualmente. Cnsultare la ricetta Personalizzare la resa dei form per maggiori informazioni su come rendere i form e su come impostare un tema in modo globale. Gestire l'invio La gestione di un form in Symonfy generalmente segue la seguente struttura: Listing - 0 public function newaction(request $request) // costruire il form... $form->handlerequest($request); if ($form->issubmitted() && $form->isvalid()) $em = $this->getdoctrine()->getmanager(); $em->persist($post); $em->flush(); return $this->redirect($this->generateurl( 'admin_post_show', array('id' => $post->getid()) )); // rendere il template Nel codice precedente è importante evidenziare due cose. In primo luogo, si raccomanda di usare un'unica azione sia per rendere il form che per la gestione dell'invio. Per esempio, si potrebbe avere newaction solo per rendere il form e createaction solo per gestire l'invio. Entrambe le azioni però sono quasi identiche, quindi è più semplice lasciare che sia newaction a gestire il tutto. In secondo luogo si raccomand di usare $form->issubmitted() nel costrutto if, per rendere il codice più chiaro. Tecnicamente non è necessario, dato che isvalid() esegue prima issubmitted(). Senza questo, tuttavia, il flusso risulterebbe un po' strano e il form sembrerebbe sempre processato, anche per le richieste GET. TIpi di campo personalizzati Aggiungere il prefisso app_ ai campi personalizzati, per evitare collisioni. I tipi di campo personalizzati ereditano dalla classe AbstractType, che definisce il metodo getname() per configurare il nome del tipo. Tali nomi devono essere univoci nell'applicazione. Se un tipo personalizzato usa lo stesso nome di uno dei tipi di Symfony, lo sovrascriverà. Lo stesso accade quando il tipo personalizzato corrisponde a un qualsiasi tipo definito da bundle di terze parti installati nell'applicazione. Aggiungere il prefisso app_ ai campi personalizzati, per evitare collisioni che potrebbero portare a errori. generated on September, 0 Chapter : Form 0
31 Chapter Internationalizzazione L'internazionalizzazione e la localizzazione hanno come obiettivo quello di adattare l'applicazione e il suo contenuto ad una specifica nazione o alla lingua dei suoi utenti. In Symfony questa funzionalità è opzionale e per poter essere utilizzata bisogna prima abilitarla. Per farlo, scommentare l'opzione di configurazione translator, impostando il locale dell'applicazione: Listing - # app/config/config.yml framework: #... translator: fallback: "%locale%" # app/config/parameters.yml parameters: #... locale: it Formato dei file di traduzione Il componente Translation di Symfony supporta diversi formati di file di traduzione: PHP, Qt,.po,.mo, JSON, CSV, INI, ecc. Usare il formato XLIFF per i file di traduzione. Fra tutti i formati di traduzione disponibili solo XLIFF e gettext sono ampiamente supportati nei tool usati dai traduttori professionali. Poiché XLIFF è basato su XML, è possibile validare il contenuto del file appena viene creato. Symfony. ha aggiunto il supporto per le note e commenti all'interno dei file XLIFF, rendendoli più amichevoli per i traduttori. Dato che una buona traduzione dipende fortemente dal contesto, le note del formato XLIFF rappresentano il modo migliore per contenere queste informazioni. generated on September, 0 Chapter : Internationalizzazione
32 Il bundle JMSTranslationBundle, sotto licenza Apache, fornisce un'interfaccia web per la visualizzazione e la modifica dei file di traduzione. Inoltre dispone di uno strumento avanzato in grado di leggere il progetto, estrarre il testo da tradurre dai template e automaticamente aggiornare i file XLIFF. Posizione dei file di traduzione Mettere i file di traduzione nella cartella app/resources/translations/ Solitamente, gli sviluppatori Symfony mettevano questi file nella cartella Resources/translations/ di ogni bundle. Poiché la cartella app/resources/ è considerata la posizione globale delle risorse dell'applicazione, mettendo le traduzioni in app/resources/translations, esse risulteranno centralizzate e prioritarie su ogni altro file di traduzione. Questo consentirà di effettuare l'override delle traduzioni definite nei bundle di terze parti. Chiavi per le traduzioni Per le traduzioni usare sempre chiavi invece di contenuti stringa. Usare le chiavi semplifica la gestione dei file di traduzione, poiché è possibile modificare il contenuto della lingua originale, senza la necessità di aggiornare tutti i file di tutte le lingue. Le chiavi dovrebbero sempre descrivere il loro scopo e non la loro posizione. Per esempio, se un form ha un campo con l'etichetta "Username", una chiave idonea sarà label.username e non edit_form.label.username. Esempio di file di traduzione Applicando tutte le best practice precedenti, un file di traduzione di esempio per la lingua inglese sarà: Listing - 0 <!-- app/resources/translations/messages.en.xliff --> <?xml version=".0"?> <xliff version="." xmlns="urn:oasis:names:tc:xliff:document:."> <file source-language="en" target-language="it" datatype="plaintext" original="file.ext"> <body> <trans-unit id=""> <source>title.post_list</source> <target>elenco dei post</target> </trans-unit> </body> </file> </xliff>. generated on September, 0 Chapter : Internationalizzazione
33 Chapter Sicurezza Autenticazione e firewall (recuperare le credenziali dell'utente) Per autenticare gli utenti è possibile configurare Symfony in molti modi. Inoltre è possibile caricare le informazioni degli utenti da qualsiasi fonte. Questo è un argomento abbastanza complesso, per maggiori informazioni si rimanda alla sezione sicurezza del ricettario. A prescindere dalle necessità, l'autenticazione è configurata in security.yml, sotto la voce firewalls. La maggior parte delle applicazioni utilizza solamente un meccanismo di autenticazione e un insieme di utenti. Per questa tipologia di applicazioni basta soltanto un unico firewall. Ovviamente esistono delle eccezioni, ad esempio quando in un sito si devono proteggere delle API dalla sezione web. L'importante è mantenere le cose semplici. Si dovrebbe inoltre abilitare sempre l'opzione anonymous nel firewall. Se si ha bisogno che gli utenti accedano a sezioni differenti del sito (o forse a tutte le sezioni), utilizzare la configurazione dell'opzione access_control. Usare bcrypt per codificare le password degli utenti. Se si memorizzano le password degli utenti nel sistema, si raccomanda di usare l'encoder bcrypt, invece della tradizionale codifica SHA-. I vantaggi più importanti di bcrypt sono l'inclusione di un valore salt per la protezione contro gli attacchi di tipo rainbow table e la sua natura adattiva, che consente di rallentare la sua esecuzione e resistere meglio agli attacchi di forza bruta. Detto questo, ecco un esempio di autenticazione di un'applicazione che usa un form login per caricare gli utenti dalla base dati: Listing - # app/config/security.yml security: encoders: AppBundle\Entity\User: bcrypt providers: database_users: generated on September, 0 Chapter : Sicurezza
34 0 0 entity: class: AppBundle:User, property: username firewalls: secured_area: pattern: ^/ anonymous: true form_login: check_path: security_login_check login_path: security_login_form logout: path: security_logout target: homepage #... c'è anche access_control, ma non viene mostrato qui Il codice sorgente dell'applicazione di prova include commenti che spiegheranno dettagliatamente ogni parte del file. Autorizzazione (negare l'accesso) Symfony definisce vari modi per configurare l'autorizzazione, inclusa l'opzione access_control in security.yml la e l'uso di isgranted direttamente dal servizio security.authorization_checker. Per la protezione di schemi di URL ampi, usare access_control Dove possibile, usare Per logiche di sicurezza più complesse, usare direttamente il servizio security.authorization_checker Esistono anche diversi modi per centralizzare la logica di autorizzazione, come i votanti e le ACL (o lista di controllo degli accessi). Personalizzare un votante per definire restrizioni a grana fine; Usare le ACL per definire logiche di sicurezza complesse (per gestire l'accesso di ogni oggetto da ogni utente attraverso un'interfaccia di amministrazione). Per controllare l'accesso su un controller usa oltre ad essere di facile lettura essa è collocata sempre sopra ogni azione. In questa applicazione di prova, per creare un nuovo post, è necessario disporre del ruolo ROLE_ADMIN. Usando il codice del controllore sarà: Listing - use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; generated on September, 0 Chapter : Sicurezza
The Best Practices Book Version: 2.5
The Best Practices Book Version: 2.5 The Best Practices Book (2.5) This work is licensed under the Attribution-Share Alike 3.0 Unported license (http://creativecommons.org/ licenses/by-sa/3.0/). You are
DettagliCapitolo 4 Pianificazione e Sviluppo di Web Part
Capitolo 4 Pianificazione e Sviluppo di Web Part Questo capitolo mostra come usare Microsoft Office XP Developer per personalizzare Microsoft SharePoint Portal Server 2001. Spiega come creare, aggiungere,
DettagliCreare un sito Multilingua con Joomla 1.6
Creare un sito Multilingua con Joomla 1.6 Istruzioni Vai a: navigazione, ricerca Testo originale: http://docs.joomla.org/language_switcher_tutorial_for_joomla_1.6 Questa guida è valida sia per Joomla 1.6
DettagliFtpZone Guida all uso Versione 2.1
FtpZone Guida all uso Versione 2.1 La presente guida ha l obiettivo di spiegare le modalità di utilizzo del servizio FtpZone fornito da E-Mind Srl. All attivazione del servizio E-Mind fornirà solamente
DettagliModulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress
Copyright Andrea Giavara wppratico.com Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress 1. Il pannello amministrativo 2. I dati importanti 3. Creare il database - Cpanel - Plesk
DettagliJoomla! 2.5:Utenti e permessi - Il wiki di Joomla.it
Pagina 1 di 6 Joomla! 2.5:Utenti e permessi Da Il wiki di Joomla.it. Traduzione (http://cocoate.com/it/j25it/utenti) dal libro Joomla! 2.5 - Beginner's Guide (http://cocoate.com/j25/users-permissions)
DettagliFtpZone Guida all uso
FtpZone Guida all uso La presente guida ha l obiettivo di spiegare le modalità di utilizzo del servizio FtpZone fornito da E-Mind Srl. All attivazione del servizio E-Mind fornirà solamente un login e password
DettagliManuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise
Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3
DettagliConfigurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith
Configurazione della ricerca desktop di Nepomuk Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith 2 Indice 1 Introduzione 4 1.1 Impostazioni di base....................................
DettagliChe cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo
Creazione di moduli Creazione di moduli Che cos'è un modulo? Un elenco di domande accompagnato da aree in cui è possibile scrivere le risposte, selezionare opzioni. Il modulo di un sito Web viene utilizzato
Dettaglilem logic enterprise manager
logic enterprise manager lem lem Logic Enterprise Manager Grazie all esperienza decennale in sistemi gestionali, Logic offre una soluzione modulare altamente configurabile pensata per la gestione delle
DettagliI cookie sono classificati in base alla durata e al sito che li ha impostati.
1. Informativa sui cookie 1.1. Informazioni sui cookie I siti Web si avvalgono di tecniche utili e intelligenti per aumentare la semplicità di utilizzo e rendere i siti più interessanti per ogni visitatore.
DettagliSettaggio impostazioni tema. Cliccando nuovamente su aspetto e poi su personalizza si avrà modo di configurare la struttura dinamica della template.
I TEMI PREDEFINITI (TEMPLATE) Scelta del tema I temi predefiniti di wordpress sono la base di un sito che usa un utente che per ragioni pratiche o per incapacità non può creare un sito usando solo codice
DettagliGHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.
*+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti
DettagliLA GESTIONE DELLE VISITE CLIENTI VIA WEB
LA GESTIONE DELLE VISITE CLIENTI VIA WEB L applicazione realizzata ha lo scopo di consentire agli agenti l inserimento via web dei dati relativi alle visite effettuate alla clientela. I requisiti informatici
DettagliModulo 4: Ereditarietà, interfacce e clonazione
Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo
DettagliPer chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass
0_Iniziare con GRASS Avvio di Grass e creazione della cartella del Database di GRASS Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass
DettagliAcronis License Server. Manuale utente
Acronis License Server Manuale utente INDICE 1. INTRODUZIONE... 3 1.1 Panoramica... 3 1.2 Politica della licenza... 3 2. SISTEMI OPERATIVI SUPPORTATI... 4 3. INSTALLAZIONE DI ACRONIS LICENSE SERVER...
DettagliProduct Shipping Cost Guida d'installazione ed Utilizzo
Guida d'installazione ed Utilizzo Installazione Per installare il modulo è sufficiente copiare la cartella app del pacchetto del modulo nella cartella principale dell'installazione di Magento dove è già
DettagliUtilizzo di SmartAttach e personalizzazioni
Utilizzo di SmartAttach e personalizzazioni Un messaggio con allegato non è altro che un messaggio al cui interno è presente la codifica (di solito base64) del file che il mittente ha deciso di allegare.
DettagliLABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO
CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO 1 Installazione e requisiti per il corretto funzionamento del sito: L istallazione è possibile sui più diffusi sistemi operativi. Il pacchetto
DettagliGuida alla configurazione della posta elettronica dell Ateneo di Ferrara sui più comuni programmi di posta
Guida alla configurazione della posta elettronica dell Ateneo di Ferrara sui più comuni programmi di posta. Configurazione Account di posta dell Università di Ferrara con il Eudora email Eudora email può
DettagliVi ricordiamo che per qualsiasi problema tecnico o informazione potete contattare info@eduitalia.org oppure Francesco al 3357761103.
Gentili Associati, in questi ultimi tempi abbiamo lavorato per sviluppare un software capace di far gestire direttamente alle scuole la propria presenza sul sito di Eduitalia. Tramite la registrazione
DettagliMANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA
MANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA Fornitore: Publisys Prodotto: Intranet Provincia di Potenza http://www.provincia.potenza.it/intranet Indice 1. Introduzione... 3 2. I servizi dell Intranet...
DettagliCRM Configurazione e gestione accessi
Gestione dei Reparti VtigerCrm fornisce funzionalità per configurare i privilegi di accesso ai dati in maniera granulare per ogni utente o gruppo di utenti registrato nel programma. Le funzionalità di
DettagliOrganizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
DettagliNOVITÀ SITI COMMERCIALISTA
NOVITÀ E-COMMERCE Sono state introdotte, nella versione 2011B, una serie di implementazioni grazie alle quali sarà ora possibile disporre all interno del proprio sito E-commerce delle seguenti funzionalità:
DettagliSiti web centrati sui dati Architettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
DettagliIl database management system Access
Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio
DettagliImporterONE Export Plugin Magento
ImporterONE Export Plugin Magento Indice generale 1 INTRODUZIONE...2 2 INSTALLAZIONE DEL PLUGIN...2 3 CONFIGURAZIONE...4 4 OPERAZIONI PRELIMINARI...11 1-10 1 INTRODUZIONE Questo plugin di esportazione
DettagliGuida Joomla. di: Alessandro Rossi, Flavio Copes
Guida Joomla di: Alessandro Rossi, Flavio Copes Grafica e template 1. 15. La grafica e i template Personalizzare l'aspetto del sito aggiungendo nuovi template e customizzandoli 2. 16. Personalizzare il
DettagliFile Server Resource Manager (FSRM)
File Server Resource Manager (FSRM) di Nicola Ferrini MCT MCSA MCSE MCTS MCITP Introduzione FSRM, File Server Resource Manager, è un ruolo opzionale che può essere installato in Windows Server 2008 nel
DettagliSistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate
MODULO BASE Quanto segue deve essere rispettato se si vuole che le immagini presentate nei vari moduli corrispondano, con buona probabilità, a quanto apparirà nello schermo del proprio computer nel momento
DettagliRegistratori di Cassa
modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...
DettagliEXPLOit Content Management Data Base per documenti SGML/XML
EXPLOit Content Management Data Base per documenti SGML/XML Introduzione L applicazione EXPLOit gestisce i contenuti dei documenti strutturati in SGML o XML, utilizzando il prodotto Adobe FrameMaker per
DettagliMac Application Manager 1.3 (SOLO PER TIGER)
Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i
DettagliMANUALE PARCELLA FACILE PLUS INDICE
MANUALE PARCELLA FACILE PLUS INDICE Gestione Archivi 2 Configurazioni iniziali 3 Anagrafiche 4 Creazione prestazioni e distinta base 7 Documenti 9 Agenda lavori 12 Statistiche 13 GESTIONE ARCHIVI Nella
DettagliArchitettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
DettagliFile, Modifica, Visualizza, Strumenti, Messaggio
Guida installare account in Outlook Express Introduzione Questa guida riguarda di sicuro uno dei programmi maggiormente usati oggi: il client di posta elettronica. Tutti, ormai, siamo abituati a ricevere
DettagliSOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE
SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE S O. S E. B I. P R O D O T T I E S E R V I Z I P E R I B E N I C U L T U R A L I So.Se.Bi. s.r.l. - via dell Artigianato, 9-09122 Cagliari Tel. 070 / 2110311
DettagliZ3 B1 Message Addon Invio Massivo Documenti via Email e Fax per SAP Business One
Z3 B1 Message Addon Invio Massivo Documenti via Email e Fax per SAP Business One Manuale Z3 B1 Message Versione 2.60 Pagina 1 di 19 Sommario Introduzione... 3 Installazione... 3 Attivazione... 3 Configurazione...
DettagliServizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti
20120300 INDICE 1. Introduzione... 3 2. Consultazione... 4 2.1 Consultazione Server Fidati... 4 2.2 Consultazione Servizi Client... 5 2.3 Consultazione Stato richieste... 5 3. Amministrazione... 6 3.1
DettagliInitZero s.r.l. Via P. Calamandrei, 24-52100 Arezzo email: info@initzero.it
izticket Il programma izticket permette la gestione delle chiamate di intervento tecnico. E un applicazione web, basata su un potente application server java, testata con i più diffusi browser (quali Firefox,
DettagliProgettaz. e sviluppo Data Base
Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo
DettagliCONTENUTI 1. INTRODUZIONE...3 2. CONCETTI BASICI SU EQUINOX CMS XPRESS...5 3. ACCESSO A EQUINOX CMS XPRESS...9 4. PAGINA D INIZIO...
CONTENUTI 1. INTRODUZIONE...3 DEFINIZIONE...3 ELEMENTI DEL SERVIZIO...3 TECNOLOGIA E OPERAZIONE...3 WORKFLOW E GRAFICO DI PROCESSI...4 2. CONCETTI BASICI SU EQUINOX CMS XPRESS...5 STRUTTURA...5 OGGETTI...5
DettagliIl CMS Moka. Giovanni Ciardi Regione Emilia Romagna
Il CMS Moka Giovanni Ciardi Regione Emilia Romagna Moka è uno strumento per creare applicazioni GIS utilizzando oggetti (cartografie, temi, legende, database, funzioni) organizzati in un catalogo condiviso.
DettagliConsole di Amministrazione Centralizzata Guida Rapida
Console di Amministrazione Centralizzata Contenuti 1. Panoramica... 2 Licensing... 2 Panoramica... 2 2. Configurazione... 3 3. Utilizzo... 4 Gestione dei computer... 4 Visualizzazione dei computer... 4
DettagliConfigurazione client di posta elettronica per il nuovo servizio email. Parametri per la Configurazione dei client di posta elettronica
Configurazione client di posta elettronica per il nuovo servizio email Questa guida si prefigge lo scopo di aiutare gli utenti a configurare i propri client di posta elettronica. Sono elencati passi da
DettagliGruppi, Condivisioni e Permessi. Orazio Battaglia
Gruppi, Condivisioni e Permessi Orazio Battaglia Gruppi Un gruppo in Active Directory è una collezione di Utenti, Computer, Contatti o altri gruppi che può essere gestita come una singola unità. Usare
DettagliLande Immortali: Riepilogo dello Stato di Avanzamento del Progetto
Lande Immortali: Riepilogo dello Stato di Avanzamento del Progetto Progetto a cura di Martino Michele Matricola: 0124000461 Miglio Stefano Matricola: 0124000462 Obiettivi Iniziali Si intende realizzare
DettagliI MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale
La soluzione modulare di gestione del Sistema Qualità Aziendale I MODULI Q.A.T. - Gestione clienti / fornitori - Gestione strumenti di misura - Gestione verifiche ispettive - Gestione documentazione del
DettagliManuale d uso Software di parcellazione per commercialisti Ver. 1.0.3 [05/01/2015]
Manuale d uso Software di parcellazione per commercialisti Ver. 1.0.3 [05/01/2015] Realizzato e distribuito da LeggeraSoft Sommario Premessa... 2 Fase di Login... 2 Menù principale... 2 Anagrafica clienti...
DettagliUso dei modelli/template
Uso dei modelli/template Il modello (o template, in inglese) non è altro che un normale file di disegno, generalmente vuoto, cioè senza alcuna geometria disegnata al suo interno, salvato con l estensione.dwt.
DettagliGateManager. 1 Indice. tecnico@gate-manager.it
1 Indice 1 Indice... 1 2 Introduzione... 2 3 Cosa vi serve per cominciare... 2 4 La Console di amministrazione... 2 5 Avviare la Console di amministrazione... 3 6 Come connettersi alla Console... 3 7 Creare
Dettagliper immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1
Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Il raggruppamento e la struttura dei dati sono due funzioni di gestione dati di Excel, molto simili tra
DettagliCookie. Krishna Tateneni Jost Schenck Traduzione: Luciano Montanaro
Krishna Tateneni Jost Schenck Traduzione: Luciano Montanaro 2 Indice 1 Cookie 4 1.1 Politica............................................ 4 1.2 Gestione........................................... 5 3 1
DettagliRegione Piemonte Portale Rilevazioni Crediti EELL Manuale Utente
Pag. 1 di 15 VERS V01 REDAZIONE VERIFICHE E APPROVAZIONI CONTROLLO APPROVAZIONE AUTORIZZAZIONE EMISSIONE NOME DATA NOME DATA NOME DATA A. Marchisio C. Pernumian 29/12/2014 M. Molino 27/02/2015 M. Molino
DettagliInstallazione & Configurazione Php e MySQL su Mac Os X. Php
Installazione & Configurazione Php e MySQL su Mac Os X Php PHP è un linguaggio di scripting interpretato, con licenza Open Source, originariamente concepito per la realizzazione di pagine web dinamiche.
DettagliProgetto di Ingegneria del Software 2. SWIMv2
Progetto di Ingegneria del Software 2 2012/2013 SWIMv2 Guida al Testing Docente: Prof. Luca Mottola Davide Brambilla Antonio Caputo Paolo Caputo 1 Indice 1 Introduzione 1.1 Materiale fornito................................
DettagliManuale di KSystemLog. Nicolas Ternisien
Nicolas Ternisien 2 Indice 1 Usare KSystemLog 5 1.1 Introduzione......................................... 5 1.1.1 Cos è KSystemLog?................................ 5 1.1.2 Funzionalità.....................................
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
Dettagli1.0 GUIDA PER L UTENTE
1.0 GUIDA PER L UTENTE COMINCIA FACILE Una volta effettuato il login vi troverete nella pagina Amministrazione in cui potrete creare e modificare le vostre liste. Una lista è semplicemnte un contenitore
DettagliProgettazione : Design Pattern Creazionali
Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali
DettagliCorso di Amministrazione di Reti A.A. 2002/2003
Struttura di Active Directory Corso di Amministrazione di Reti A.A. 2002/2003 Materiale preparato utilizzando dove possibile materiale AIPA http://www.aipa.it/attivita[2/formazione[6/corsi[2/materiali/reti%20di%20calcolatori/welcome.htm
DettagliCollegamento remoto vending machines by do-dots
Collegamento remoto vending machines by do-dots Ultimo aggiornamento 23 marzo 2011 rev1 - Stesura iniziale 18/10/2010 rev2 - Approfondimenti 12/11/2010 rev3 Riduzione dei contenuti per una lettura generica
DettagliGESGOLF SMS ONLINE. Manuale per l utente
GESGOLF SMS ONLINE Manuale per l utente Procedura di registrazione 1 Accesso al servizio 3 Personalizzazione della propria base dati 4 Gestione dei contatti 6 Ricerca dei contatti 6 Modifica di un nominativo
DettagliJoomla: Come installarlo e come usarlo. A cura di
Joomla: Come installarlo e come usarlo. A cura di In questa dispensa andremo a vedere come si installa joomla sul noto software xampp e come viene usato per creare siti web dinamici. Tecnol earn Firmato
DettagliInstallazione di GFI WebMonitor
Installazione di GFI WebMonitor Requisiti di sistema di GFI WebMonitor Server Microsoft Windows 2000 (SP 3) o 2003. Microsoft ISA 2000 Server (non in modalità solo firewall) OPPURE Server Microsoft ISA
DettagliSOMMARIO... 3 INTRODUZIONE...
Sommario SOMMARIO... 3 INTRODUZIONE... 4 INTRODUZIONE ALLE FUNZIONALITÀ DEL PROGRAMMA INTRAWEB... 4 STRUTTURA DEL MANUALE... 4 INSTALLAZIONE INRAWEB VER. 11.0.0.0... 5 1 GESTIONE INTRAWEB VER 11.0.0.0...
DettagliXampp. Valeriano Maysonnave - A.A. 2014/2015 -
Xampp Valeriano Maysonnave - A.A. 2014/2015-1 Introduzione...1 2 Installazione su Windows...1 3 Configurazione Apache...2 3.1 Accesso al file di configurazione httpd.conf...2 3.2 Il file httpd.conf...3
DettagliATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE
ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE PREMESSA La presente guida è da considerarsi come aiuto per l utente per l installazione e configurazione di Atollo Backup. La guida non vuole approfondire
DettagliVisual Basic.NET La Gestione degli Errori di Federico BARBATI
Generalità Visual Basic.NET La Gestione degli Errori di Federico BARBATI La gestione degli errori, è una parte fondamentale di un codice ben progettato. Fino ad oggi, gli errori nelle applicazioni scritte
DettagliGuida all uso della piattaforma. E-did@blog. portale Weblog & Podcast del MIUR COME UTILIZZARE AL MEGLIO L AMMINISTRAZIONE DEL BLOG
Guida all uso della piattaforma E-did@blog portale Weblog & Podcast del MIUR COME UTILIZZARE AL MEGLIO L AMMINISTRAZIONE DEL BLOG L area amministrativa si suddivide in due aree: la gestione del blog e
DettagliProcedura SMS. Manuale Utente
Procedura SMS Manuale Utente INDICE: 1 ACCESSO... 4 1.1 Messaggio di benvenuto... 4 2 UTENTI...4 2.1 Gestione utenti (utente di Livello 2)... 4 2.1.1 Creazione nuovo utente... 4 2.1.2 Modifica dati utente...
DettagliFormattazione. ü Introduzione
Formattazione ü Introduzione Abbiamo fatto un bel po' di lavoro con Mathematica, vero? Abbiamo visto come creare, valutare, semplificare, disegnare, programmare, cucinare, pescare, ed anche come sfilare
DettagliLUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014
LUdeS Informatica 2 EXCEL Seconda parte AA 2013/2014 STAMPA Quando si esegue il comando FILE STAMPA, Excel manda alla stampante tutte le celle del foglio di lavoro corrente che hanno un contenuto. Il numero
DettagliTitolare del trattamento dei dati innanzi descritto è tsnpalombara.it
Decreto Legislativo 196/2003 Codice in materia di protezione dei dati personali COOKIE POLICY La presente informativa è resa anche ai sensi dell art. 13 del D.Lgs 196/03 Codice in materia di protezione
DettagliGuida di Pro Spam Remove
Guida di Pro Spam Remove 1) SOMMARIO 2) ISTRUZIONI DI BASE 3) CONFIGURAZIONE 4) FILTRO 5) ARCHIVIO E-MAIL 6) NOTE CONCLUSIVE 1) SOMMARIO Pro Spam Remove è un software che si occupa di bloccare tutto lo
DettagliManuale per i redattori del sito web OttoInforma
Manuale per i redattori del sito web OttoInforma Contenuti 1. Login 2. Creare un nuovo articolo 3. Pubblicare l articolo 4. Salvare l articolo in bozza 5. Le categorie 6. Modificare un articolo 7. Modificare
DettagliMOCA. Modulo Candidatura. http://www.federscacchi.it/moca. moca@federscacchi.it. [Manuale versione 1.0 marzo 2013]
MOCA Modulo Candidatura http://www.federscacchi.it/moca moca@federscacchi.it [Manuale versione 1.0 marzo 2013] 1/12 MOCA in breve MOCA è una funzionalità del sito web della FSI che permette di inserire
DettagliA tal fine il presente documento si compone di tre distinte sezioni:
Guida on-line all adempimento Questa guida vuole essere un supporto per le pubbliche amministrazioni, nella compilazione e nella successiva pubblicazione dei dati riguardanti i dirigenti sui siti istituzionali
DettagliVisual basic base Lezione 01. L'ambiente di sviluppo
L'ambiente di sviluppo L'ambiente di sviluppo Visual basic è un linguaggio di programmazione Microsoft. In questo corso prenderemo in considerazione, l'ultima versione. net di questo linguaggio. Microsoft
DettagliIl software di gestione immobiliare più facile da usare. Modulo Web v5.2. www.gestim.it
Il software di gestione immobiliare più facile da usare Modulo Web v5.2 www.gestim.it Introduzione Il Modulo Web è un componente di Gestim che permette di pubblicare in automatico gli annunci sul sito
DettagliStrutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
DettagliUniversità degli Studi di Napoli Parthenope Facoltà di Scienze e Tecnologie Corso di Laurea in Informatica Generale
Università degli Studi di Napoli Parthenope Facoltà di Scienze e Tecnologie Corso di Laurea in Informatica Generale Progetto realizzato per l esame di Tecnologie Web Prof.:Raffaele Montella Studente: Vitiello
DettagliALICE AMMINISTRAZIONE UTENTI WEB
AMMINISTRAZIONE UTENTI WEB REL. 1.2 edizione luglio 2008 INDICE 1. AMMINISTRAZIONE DI UTENTI E PROFILI... 2 2. DEFINIZIONE UTENTI... 2 2.1. Definizione Utenti interna all applicativo... 2 2.1.1. Creazione
DettagliDatabase. Si ringrazia Marco Bertini per le slides
Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida
DettagliRISOLUTORE AUTOMATICO PER SUDOKU
RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU
DettagliGestione Manutenzione Preventiva
Gestione Manutenzione Preventiva Introduzione In qualunque realtà produttiva, sorge la necessità di pianificare la manutenzione delle macchine di produzione. Il concetto di manutenzione preventiva, pur
DettagliServer Galileo. http://galileo.dmi.unict.it/
Server Galileo http://galileo.dmi.unict.it/ Gestione progetti Wiki Subversion Iscrizione a Galileo Per registrarsi è sufficiente iscriversi da questa pagina: https://galileo.dmi.unict.it/iscrizioni/ L'account
DettagliCREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS
CONTENUTI: CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS Creazione database vuoto Creazione tabella Inserimento dati A) Creazione di un database vuoto Avviamo il programma Microsoft Access. Dal menu
DettagliGuida all uso delle Web View su ios
Guida all uso delle Web View su ios Tesina per il corso di Programmazione di Sistemi Mobile Lorenzo Pellegrini Matricola: 0000653299 Cosa sono le Web View? Le web view sono componenti grafiche, integrabili
DettagliLEZIONE 3. Il pannello di amministrazione di Drupal, configurazione del sito
LEZIONE 3 Il pannello di amministrazione di Drupal, configurazione del sito Figura 12 pannello di controllo di Drupal il back-end Come già descritto nella lezione precedente il pannello di amministrazione
DettagliBreve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida
Breve introduzione curata da Alessandro Benedetti Struts2-Introduzione e breve guida 22-11- 2008 1 Struts 2 Costruisci,attiva e mantieni! Apache Struts 2 è un framework elegante ed estensibile per creare
DettagliPlugin di integrazione con Wordpress
Plugin di integrazione con Wordpress Requisiti: Wordpress 3.5 o superiori Un account valido sulla piattaforma 4Dem Accesso ftp alla cartella plugins di Wordpress 4Dem.it - Plugin di integrazione con Wordpress
DettagliCreare un nuovo tema grafico ( skin")
Creare un nuovo tema grafico ( skin") Potenzialità e tecniche Validità: Febbraio 2013 Questa pubblicazione è puramente informativa. SISECO non offre alcuna garanzia, esplicita od implicita, sul contenuto.
DettagliConfigurazione di Outlook Express
OUTLOOK Outlook Express è il client di posta elettronica sviluppato da Microsoft, preinstallato su sistemi operativi Windows a partire da Windows 98 fino all'uscita di Windows XP. Con l'arrivo di Windows
DettagliGuida per la creazione e la gestione di un profilo Google Scholar Citations
Guida per la creazione e la gestione di un profilo Google Scholar Citations Questa guida ha lo scopo di spiegare brevemente quali sono le modalità per la creazione e la gestione di un profilo Google Scholar
DettagliCome creare una pagina Facebook e collegarla al sito mosajco
Come creare una pagina Facebook e collegarla al sito mosajco Cos è una pagina Facebook? E la pagina gratuita dedicata alle attività che Facebook mette a disposizione di chi vuole far conoscere il proprio
DettagliControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi
ControlloCosti Cubi OLAP I cubi OLAP Un Cubo (OLAP, acronimo di On-Line Analytical Processing) è una struttura per la memorizzazione e la gestione dei dati che permette di eseguire analisi in tempi rapidi,
Dettagli