D7net Mini Sh3LL v1
Current File : /var/../cdrom/../home/ubuntu/sql-dump/db.txt |
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `antarctic_drupal` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `drupal` /*!40100 DEFAULT CHARACTER SET latin1 */;
INSERT INTO `drupal_cache_field` VALUES ('field:node:162','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:3763:\"<p> </p>\r\n<h1 class=\"rtecenter\">\r\n <span style=\"font-size:28px;\"><strong>Introduzione</strong></span></h1>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">Questa app, permette a tutti coloro che vogliono intraprendere la carriera universitaria, di effettuare la scelta più giusta, secondo le proprie abilità.\r\n\r\nEssa è stata sviluppata per l’OS Android (di Google) e per la nostra università ( Università degli studi di Napoli Parthenope).\r\n\r\n\r\nEssa si presenta all'utente con la pagina di Benvenuto (ImageButton Android):</span></span></pre>\r\n<div>\r\n </div>\r\n<div>\r\n <a href=\"http://students.uniparthenope.it/sites/default/files/images/20120510123608.png\" target=\"_blank\"><img alt=\"\" src=\"http://students.uniparthenope.it/sites/default/files/styles/large/public/images/20120510123608.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">Cliccando su di esso si ha accesso al menù (ListView Android con immagini)</span></span></pre>\r\n<div>\r\n </div>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120510123804.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123804.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\"><span style=\"font-size:18px;\">Da qui si puo' effettuare la scelta che si desidera e quindi avventurarsi nel mondo dell'Universita' degli Studi di Napoli Parthenope.\r\n\r\n\r\n\r\nIn questo caso l'utente ha cliccato su Manifestazioni di Orientamento:</span></span></pre>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120510123829.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123829.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">In quest altro caso invece l'utente ha cliccato su Offerta Formativa:</span></span></pre>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120510123855.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123855.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">Questa pagina è caratterizzata da 5 immagini(ImageButton Android) che permettono all'utente di selezionare la Brochure della Facolta' che desidera.\r\n\r\n\r\nIndovinate quale facolta' è stata selezionata per effettuare questa prova?</span></span></pre>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120510123915.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123915.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">La peculiarità di questa pagina è che la Brochure può essere sfogliata come se fosse un vero e proprio libro.\r\n\r\n\r\n\r\n<span style=\"font-family:verdana,geneva,sans-serif;\"><u><strong>Copyright Papa Elio e Pugliese Antonio (P&P)</strong></u></span>\r\n\r\n\r\nIn allegato trovate l'apk per testare l'applicazione sul vostro device <u>ANDROID a partire dalla versione 3.0</u></span></span></pre>\r\n<p> </p>\r\n<p><font face=\"\'courier new\', courier, monospace\" size=\"4\"><u>Link:</u></font></p>\r\n<p><a href=\"http://box.uniparthenope.it/?app=files&getfile=download.php?file=/orientamento.apk\" style=\"font-family: \'courier new\', courier, monospace; font-size: 16px; \">http://box.uniparthenope.it/?app=files&getfile=download.php?file=/orientamento.apk</a></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:3540:\"<p> </p>\n<h1 class=\"rtecenter\">\n <span style=\"font-size:28px;\"><strong>Introduzione</strong></span></h1>\n<div>\n </div>\n<pre>\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">Questa app, permette a tutti coloro che vogliono intraprendere la carriera universitaria, di effettuare la scelta più giusta, secondo le proprie abilità.\n\nEssa è stata sviluppata per l’OS Android (di Google) e per la nostra università ( Università degli studi di Napoli Parthenope).\n\n\nEssa si presenta all\'utente con la pagina di Benvenuto (ImageButton Android):</span></span></pre><div>\n </div>\n<div>\n <a href=\"http://students.uniparthenope.it/sites/default/files/images/20120510123608.png\" target=\"_blank\"><img alt=\"\" src=\"http://students.uniparthenope.it/sites/default/files/styles/large/public/images/20120510123608.png\" /></a></div>\n<div>\n </div>\n<pre>\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">Cliccando su di esso si ha accesso al menù (ListView Android con immagini)</span></span></pre><div>\n </div>\n<div>\n <a href=\"/sites/default/files/images/20120510123804.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123804.png\" /></a></div>\n<div>\n </div>\n<pre>\n<span style=\"font-family:courier new,courier,monospace;\"><span style=\"font-size:18px;\">Da qui si puo\' effettuare la scelta che si desidera e quindi avventurarsi nel mondo dell\'Universita\' degli Studi di Napoli Parthenope.\n\n\n\nIn questo caso l\'utente ha cliccato su Manifestazioni di Orientamento:</span></span></pre><div>\n <a href=\"/sites/default/files/images/20120510123829.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123829.png\" /></a></div>\n<div>\n </div>\n<pre>\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">In quest altro caso invece l\'utente ha cliccato su Offerta Formativa:</span></span></pre><div>\n <a href=\"/sites/default/files/images/20120510123855.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123855.png\" /></a></div>\n<div>\n </div>\n<pre>\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">Questa pagina è caratterizzata da 5 immagini(ImageButton Android) che permettono all\'utente di selezionare la Brochure della Facolta\' che desidera.\n\n\nIndovinate quale facolta\' è stata selezionata per effettuare questa prova?</span></span></pre><div>\n <a href=\"/sites/default/files/images/20120510123915.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123915.png\" /></a></div>\n<div>\n </div>\n<pre>\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">La peculiarità di questa pagina è che la Brochure può essere sfogliata come se fosse un vero e proprio libro.\n\n\n\n<span style=\"font-family:verdana,geneva,sans-serif;\"><u><strong>Copyright Papa Elio e Pugliese Antonio (P&P)</strong></u></span>\n\n\nIn allegato trovate l\'apk per testare l\'applicazione sul vostro device <u>ANDROID a partire dalla versione 3.0</u></span></span></pre><p> </p>\n<p><font face=\"\'courier new\', courier, monospace\" size=\"4\"><u>Link:</u></font></p>\n<p><a href=\"http://box.uniparthenope.it/?app=files&getfile=download.php?file=/orientamento.apk\" style=\"font-family: \'courier new\', courier, monospace; font-size: 16px; \">http://box.uniparthenope.it/?app=files&getfile=download.php?file=/orientamento.apk</a></p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434733601,1),('field:node:163','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:6532:\"<h1 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\">Bones | and | Dogs</span></h1>\r\n<h2 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\"><span style=\"color: rgb(47, 79, 79);\">Ambiente di Gioco</span></span></h2>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nell'articolo precedente abbiamo descritto in cosa consisteva il gioco, e in che modo si sarebbe strutturato a livello di GUI (graphical user interfaces). Oggi descriveremo in che modo è possibile creare un ambiente di gioco posizionando il nostro protagonista di game, e su cosa dovrà camminare. prima di passare al dunque elencheremo gli strumenti utilizzati fin'ora. In java sono state implementate per il momento le seguenti classi, che andremo ad elencarne il funzionamento in dettaglio all'interno di quest'articolo:</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe WindowsGame: </strong>Conterrà tutti gli oggetti dedicati al solo funzionamento del gioco. In pratica rappresenta la finestra descritta nell'articolo precedente. La classe è stata tramite un Jframe, importando la libreria <u>swing</u> di <u>javax</u>.</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">public class WindowsGame extends JFrame{\r\n...\r\n}\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">all'interno di questa classe andremmo ad inserire due pannelli: Uno per lo <strong>sfondo</strong> di gioco e un altro per le rimanenti <strong>componenti</strong> di gioco (nel nostro caso, il cane).</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe Wallpaper: </strong>conterrà l'inserimento dell'immagine di sfondo. La estenderemo come JPanel per far si che, come pannello, la possiamo aggiungere alla finestra</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">public class Wallpaper extends JPanel\r\n{\r\n...\r\n}\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">al suo interno andremo a costruire, tramite le librerie swing e awt utilizzando le classi <u>ImageIcon</u> e <u>Image</u> il nostro sfondo. indicheremo il path delle nostre immagini presenti nel workspace di Netbeans, e le andiamo a disegnare tramite la glasse <u>g2d</u> usando il metodo apposito al disegnare l'immagine.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nella classe della Finestra andriamo a costruire il pannello dedicato allo sfondo, e poi lo aggiungiamo alla finestra</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">w = new Wallpaper();\r\nadd(w);\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">il risultato è il seguente:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i46.tinypic.com/2u4u3di.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe Dog: </strong>è la classe che si occupa del nostro cane, che successivamente andremo a comandare con i nostri tasti direzionali. Per adesso ci occupiamo di come adattarlo all'immagine di sfondo che abbiamo inserito nella nostra finestra. Otteniamo l'immagine del nostro cane con la stessa sintassi citata per importare lo sfondo. Questa volta la classe non la estendiamo come pannello, ma in maniera più intelligente la andremo ad aggiungere in un'altra classe, che si occuperà di muovere, olgre al cane, altri ed eventuali oggetti.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe BoardGame: </strong>La classe più IMPORTANTE implementata fin'ora. E' incaricata a contenere il nostyro cane, e tutti gli oggetti che dovranno muoversi durante l'avvio del gioco. Per adesso ci occupiamo di inserire solo l'immagine del cane. Quindi la estendiamo come pannello e la inseriamo alla nostra finestra. Le sintassi di inserimento sono uguali a quelle dell'inseriemnto dello sfondo.</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">public class BoardGame extends JPanel\r\n{ ...\r\n public BoardGame() \r\n { dog = new Dog();\r\n ...\r\n }\r\n ...\r\n}\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">se aggiungiamo questo pannello alla nostra finestra, non otteniamo i risultati che vogliamo. Infatti lo sfondo coprirà completamente il nostro cane, viceversa se invertiamo gli add() il pannello contenente il cane coprirà lo sfondo. Come risolviamo? Ricercando sul web, ho scoperto che è possibile rendere trasparente un pannello. In questo caso rendiamo trasparente il pannello della Boardgame in questo modo:</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">Color c=new Color(tonalità ROSSO,tonalità BLU,tonalità VERDE,GAMMA);\r\n setBackground(c);\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">brevemente, spieghiamo che il valore di GAMMA a rendere opaco o meno il pannello di gioco, quindi se settiamo tutti i valori di RED, BLUE, GREEN al massimo, il colore che otteniamo è il WHITE, e se lo rendiamo opaco (opacizzando anche il pannello, e annullando i layout) otteniamo la sovrapposizione CORRETTA dei pannelli nella nostra finestra.</span></p>\r\n<p align=\"center\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i46.tinypic.com/4jxix5.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nel prossimo articolo illustreremo la logica movimenti del cane in che modo si pensa di implementarli.</span></p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\r\n<p class=\"rtecenter\"><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\">1</a> - <strong><a href=\"http://students.uniparthenope.it/?q=node/163\"><span style=\"color:#ff0000;\"> 2 </span></a></strong> - <a href=\"http://students.uniparthenope.it/?q=node/176\"> 3 </a> - <a href=\"http://students.uniparthenope.it/?q=node/188\"> 4 </a> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6</a></span> <span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:6303:\"<h1 class=\"rtecenter\">\n <span style=\"font-family:tahoma,geneva,sans-serif;\">Bones | and | Dogs</span></h1>\n<h2 class=\"rtecenter\">\n <span style=\"font-family:tahoma,geneva,sans-serif;\"><span style=\"color: rgb(47, 79, 79);\">Ambiente di Gioco</span></span></h2>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nell\'articolo precedente abbiamo descritto in cosa consisteva il gioco, e in che modo si sarebbe strutturato a livello di GUI (graphical user interfaces). Oggi descriveremo in che modo è possibile creare un ambiente di gioco posizionando il nostro protagonista di game, e su cosa dovrà camminare. prima di passare al dunque elencheremo gli strumenti utilizzati fin\'ora. In java sono state implementate per il momento le seguenti classi, che andremo ad elencarne il funzionamento in dettaglio all\'interno di quest\'articolo:</span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe WindowsGame: </strong>Conterrà tutti gli oggetti dedicati al solo funzionamento del gioco. In pratica rappresenta la finestra descritta nell\'articolo precedente. La classe è stata tramite un Jframe, importando la libreria <u>swing</u> di <u>javax</u>.</span></p>\n<pre>\n<span style=\"font-family:courier new,courier,monospace;\">public class WindowsGame extends JFrame{\n...\n}\n</span></pre><p><span style=\"font-family:tahoma,geneva,sans-serif;\">all\'interno di questa classe andremmo ad inserire due pannelli: Uno per lo <strong>sfondo</strong> di gioco e un altro per le rimanenti <strong>componenti</strong> di gioco (nel nostro caso, il cane).</span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe Wallpaper: </strong>conterrà l\'inserimento dell\'immagine di sfondo. La estenderemo come JPanel per far si che, come pannello, la possiamo aggiungere alla finestra</span></p>\n<pre>\n<span style=\"font-family:courier new,courier,monospace;\">public class Wallpaper extends JPanel\n{\n...\n}\n</span></pre><p><span style=\"font-family:tahoma,geneva,sans-serif;\">al suo interno andremo a costruire, tramite le librerie swing e awt utilizzando le classi <u>ImageIcon</u> e <u>Image</u> il nostro sfondo. indicheremo il path delle nostre immagini presenti nel workspace di Netbeans, e le andiamo a disegnare tramite la glasse <u>g2d</u> usando il metodo apposito al disegnare l\'immagine.</span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nella classe della Finestra andriamo a costruire il pannello dedicato allo sfondo, e poi lo aggiungiamo alla finestra</span></p>\n<pre>\n<span style=\"font-family:courier new,courier,monospace;\">w = new Wallpaper();\nadd(w);\n</span></pre><p><span style=\"font-family:tahoma,geneva,sans-serif;\">il risultato è il seguente:</span></p>\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i46.tinypic.com/2u4u3di.png\" /></span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe Dog: </strong>è la classe che si occupa del nostro cane, che successivamente andremo a comandare con i nostri tasti direzionali. Per adesso ci occupiamo di come adattarlo all\'immagine di sfondo che abbiamo inserito nella nostra finestra. Otteniamo l\'immagine del nostro cane con la stessa sintassi citata per importare lo sfondo. Questa volta la classe non la estendiamo come pannello, ma in maniera più intelligente la andremo ad aggiungere in un\'altra classe, che si occuperà di muovere, olgre al cane, altri ed eventuali oggetti.</span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe BoardGame: </strong>La classe più IMPORTANTE implementata fin\'ora. E\' incaricata a contenere il nostyro cane, e tutti gli oggetti che dovranno muoversi durante l\'avvio del gioco. Per adesso ci occupiamo di inserire solo l\'immagine del cane. Quindi la estendiamo come pannello e la inseriamo alla nostra finestra. Le sintassi di inserimento sono uguali a quelle dell\'inseriemnto dello sfondo.</span></p>\n<pre>\n<span style=\"font-family:courier new,courier,monospace;\">public class BoardGame extends JPanel\n{ ...\n public BoardGame() \n { dog = new Dog();\n ...\n }\n ...\n}\n</span></pre><p><span style=\"font-family:tahoma,geneva,sans-serif;\">se aggiungiamo questo pannello alla nostra finestra, non otteniamo i risultati che vogliamo. Infatti lo sfondo coprirà completamente il nostro cane, viceversa se invertiamo gli add() il pannello contenente il cane coprirà lo sfondo. Come risolviamo? Ricercando sul web, ho scoperto che è possibile rendere trasparente un pannello. In questo caso rendiamo trasparente il pannello della Boardgame in questo modo:</span></p>\n<pre>\n<span style=\"font-family:courier new,courier,monospace;\">Color c=new Color(tonalità ROSSO,tonalità BLU,tonalità VERDE,GAMMA);\n setBackground(c);\n</span></pre><p><span style=\"font-family:tahoma,geneva,sans-serif;\">brevemente, spieghiamo che il valore di GAMMA a rendere opaco o meno il pannello di gioco, quindi se settiamo tutti i valori di RED, BLUE, GREEN al massimo, il colore che otteniamo è il WHITE, e se lo rendiamo opaco (opacizzando anche il pannello, e annullando i layout) otteniamo la sovrapposizione CORRETTA dei pannelli nella nostra finestra.</span></p>\n<p align=\"center\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i46.tinypic.com/4jxix5.png\" /></span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nel prossimo articolo illustreremo la logica movimenti del cane in che modo si pensa di implementarli.</span></p>\n<p class=\"rtecenter\"> </p>\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\n<p class=\"rtecenter\"><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\">1</a> - <strong><a href=\"http://students.uniparthenope.it/?q=node/163\"><span style=\"color:#ff0000;\"> 2 </span></a></strong> - <a href=\"http://students.uniparthenope.it/?q=node/176\"> 3 </a> - <a href=\"http://students.uniparthenope.it/?q=node/188\"> 4 </a> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6</a></span> <span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434760595,1),('field:node:164','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:794:\"<p>Il primo giorno di progettazione del videogioco si incentra nella scelta del motore grafico da utilizzare.</p>\r\n<p>Le scelte sono state diverse,tutte su per giu ottimali e rispondevano alla seguente classifica:</p>\r\n<p>Cryengine 3 (Crysis)</p>\r\n<p>Source SDK (Half Life 2)</p>\r\n<p>Id tech 5 (Doom 4)</p>\r\n<p>Unreal engine (Unreal tournament 3)</p>\r\n<p>Doom engine (Doom 2)</p>\r\n<p> </p>\r\n<p>Purtroppo per colpa delle limitate potenzialità delle nostre macchine da calcolo si è scelto di utilizzare il doom engine che si è utilizzato per famosissimi giochi FPS tra i quali ovviamente doom e duke nukem.</p>\r\n<p>Ci apprestiamo alla creazione della mappa per il progetto di blood rush parthenope . . . seguiranno aggiornamenti</p>\r\n<p> </p>\r\n<p> </p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:737:\"<p>Il primo giorno di progettazione del videogioco si incentra nella scelta del motore grafico da utilizzare.<br />\nLe scelte sono state diverse,tutte su per giu ottimali e rispondevano alla seguente classifica:<br />\nCryengine 3 (Crysis)<br />\nSource SDK (Half Life 2)<br />\nId tech 5 (Doom 4)<br />\nUnreal engine (Unreal tournament 3)<br />\nDoom engine (Doom 2)<br />\n <br />\nPurtroppo per colpa delle limitate potenzialità delle nostre macchine da calcolo si è scelto di utilizzare il doom engine che si è utilizzato per famosissimi giochi FPS tra i quali ovviamente doom e duke nukem.<br />\nCi apprestiamo alla creazione della mappa per il progetto di blood rush parthenope . . . seguiranno aggiornamenti<br />\n <br />\n </p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434883613,1),('field:node:165','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:1796:\"<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121010151640.png\" /></p>\r\n<p> </p>\r\n<p class=\"p1\"><b>iArduino è una semplice applicazione che consente la comunicazione tra iPhone e il microcontroller Arduino.</b><span class=\"s1\"><b> E' possibile effettuare la comunicazione tramite la </b></span><b> Ethernet shield o la wifly shield .</b></p>\r\n<p class=\"p1\"><b>il suo utilizzo è veramente molto semplice basta scegliere con quale delle due shield effettuare la comunicazione impostare i vari parametri e il gioco è fatto .</b></p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121010152019.jpeg\" /><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121010152020.jpeg\" /></p>\r\n<p> </p>\r\n<p class=\"p1\"><b>I gadget possibili da creare sono veramente molti qui potete trovare alcuni spunti :</b></p>\r\n<p><a href=\"http://www.youtube.com/watch?v=g1zDPa0lCEM&list=UUjQ2z1ygV9tv55QAc2q3JHA&index=1&feature=plcp\">http://www.youtube.com/watch?v=g1zDPa0lCEM&list=UUjQ2z1ygV9tv55QAc2q3JHA&index=1&feature=plcp</a></p>\r\n<p>http://www.youtube.com/watch?v=6rEkUmjcy50&feature=BFa&list=UUjQ2z1ygV9tv55QAc2q3JHA</p>\r\n<p><span style=\"color: rgb(51, 51, 51); font-family: Tahoma, Arial, Verdana, sans-serif; font-size: 13px;\">iArduino is very special app that allow you to communicate with Arduino via The ethernet shield and wif</span><span style=\"color: rgb(51, 51, 51); font-family: Tahoma, Arial, Verdana, sans-serif; font-size: 13px;\">ly shild if you want to use it in ways wifly you must create an ad hoc connection</span></p>\r\n<p> </p>\r\n<p><strong>Download</strong></p>\r\n<p>http://itunes.apple.com/us/app/iarduino/id507874147?mt=8</p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:1897:\"<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121010151640.png\" /></p>\n<p> </p>\n<p class=\"p1\"><b>iArduino è una semplice applicazione che consente la comunicazione tra iPhone e il microcontroller Arduino.</b><span class=\"s1\"><b> E\' possibile effettuare la comunicazione tramite la </b></span><b> Ethernet shield o la wifly shield .</b></p>\n<p class=\"p1\"><b>il suo utilizzo è veramente molto semplice basta scegliere con quale delle due shield effettuare la comunicazione impostare i vari parametri e il gioco è fatto .</b></p>\n<p> </p>\n<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121010152019.jpeg\" /><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121010152020.jpeg\" /></p>\n<p> </p>\n<p class=\"p1\"><b>I gadget possibili da creare sono veramente molti qui potete trovare alcuni spunti :</b></p>\n<p><a href=\"http://www.youtube.com/watch?v=g1zDPa0lCEM&list=UUjQ2z1ygV9tv55QAc2q3JHA&index=1&feature=plcp\">http://www.youtube.com/watch?v=g1zDPa0lCEM&list=UUjQ2z1ygV9tv55QAc2q3JHA&index=1&feature=plcp</a></p>\n<p><a href=\"http://www.youtube.com/watch?v=6rEkUmjcy50&feature=BFa&list=UUjQ2z1ygV9tv55QAc2q3JHA\">http://www.youtube.com/watch?v=6rEkUmjcy50&feature=BFa&list=UUjQ2z1ygV9t...</a></p>\n<p><span style=\"color: rgb(51, 51, 51); font-family: Tahoma, Arial, Verdana, sans-serif; font-size: 13px;\">iArduino is very special app that allow you to communicate with Arduino via The ethernet shield and wif</span><span style=\"color: rgb(51, 51, 51); font-family: Tahoma, Arial, Verdana, sans-serif; font-size: 13px;\">ly shild if you want to use it in ways wifly you must create an ad hoc connection</span></p>\n<p> </p>\n<p><strong>Download</strong></p>\n<p><a href=\"http://itunes.apple.com/us/app/iarduino/id507874147?mt=8\">http://itunes.apple.com/us/app/iarduino/id507874147?mt=8</a></p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434822530,1),('field:node:166','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:2428:\"<p><strong>mysql++</strong> è un programma eseguibile da riga di comando che permette di eseguire delle query su un database mysql. Ho scritto questo software in C++, studiando e sfruttando le funzioni dell'header mysql.h. Il codice segue il paradigma di programmazione ad oggetti e semplifica la gestione di un database mysql da riga di comando, in locale o da remoto. L'utente può connettersi al database con le sue credenziali, ed effettuare quali e quante query vuole. </p>\r\n<p>Oltre a poter essere usato come programma per interrogare un database, può essere usato come parte integrante dei vostri progetti che fanno uso di una base di dati basata sul DBMS MySQL, scritti in C++.</p>\r\n<p>Nel file .zip che allegherò all'articolo, troverete l'eseguibile (ovviamente solo per sistemi Unix/Linux) e i vari file .cpp e .h che compongono il programma. Potrete modificarli e usarli come vorrete, rispettando i termini della licenza GNU GPL.</p>\r\n<p>Non dimenticate che, per usare questi codici nei vostri programmi, al momento della compilazione, dovete linkare anche la libreria libmysql (nome su osx), altrimenti il vostro compilatore lancerà qualche imprecazione!</p>\r\n<p>Il codice è ampiamente commentato, in modo da chiarire ogni vostro dubbio. Se trovate bug non esitate a contattarmi o a commentare! <img alt=\"wink\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif\" title=\"wink\" width=\"20\" /></p>\r\n<p>...e perchè no, potete usarlo anche per esercitarvi in vista dell'esame di Basi di Dati! <img alt=\"wink\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif\" title=\"wink\" width=\"20\" /></p>\r\n<p>L'uso da riga di comando è:</p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><a href=\"/sites/default/files/images/20121210151041.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121210151041.png\" /></a></p>\r\n<p style=\"\">Più genericamente, quindi: <strong>mysql++ nome_utente hostname nome_database porta</strong></p>\r\n<p>Good Coding!!</p>\r\n<p><strong>Ecco il file .zip:</strong></p>\r\n<p><strong><a href=\"/sites/default/files/files/mysql%2B%2B_3.zip\">mysql++.zip</a></strong></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:2304:\"<p><strong>mysql++</strong> è un programma eseguibile da riga di comando che permette di eseguire delle query su un database mysql. Ho scritto questo software in C++, studiando e sfruttando le funzioni dell\'header mysql.h. Il codice segue il paradigma di programmazione ad oggetti e semplifica la gestione di un database mysql da riga di comando, in locale o da remoto. L\'utente può connettersi al database con le sue credenziali, ed effettuare quali e quante query vuole. </p>\n<p>Oltre a poter essere usato come programma per interrogare un database, può essere usato come parte integrante dei vostri progetti che fanno uso di una base di dati basata sul DBMS MySQL, scritti in C++.</p>\n<p>Nel file .zip che allegherò all\'articolo, troverete l\'eseguibile (ovviamente solo per sistemi Unix/Linux) e i vari file .cpp e .h che compongono il programma. Potrete modificarli e usarli come vorrete, rispettando i termini della licenza GNU GPL.</p>\n<p>Non dimenticate che, per usare questi codici nei vostri programmi, al momento della compilazione, dovete linkare anche la libreria libmysql (nome su osx), altrimenti il vostro compilatore lancerà qualche imprecazione!</p>\n<p>Il codice è ampiamente commentato, in modo da chiarire ogni vostro dubbio. Se trovate bug non esitate a contattarmi o a commentare! <img alt=\"wink\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif\" title=\"wink\" width=\"20\" /></p>\n<p>...e perchè no, potete usarlo anche per esercitarvi in vista dell\'esame di Basi di Dati! <img alt=\"wink\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif\" title=\"wink\" width=\"20\" /></p>\n<p>L\'uso da riga di comando è:</p>\n<p class=\"rtecenter\"> </p>\n<p class=\"rtecenter\"> </p>\n<p class=\"rtecenter\"><a href=\"/sites/default/files/images/20121210151041.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121210151041.png\" /></a></p>\n<p style=\"\">Più genericamente, quindi: <strong>mysql++ nome_utente hostname nome_database porta</strong></p>\n<p>Good Coding!!</p>\n<p><strong>Ecco il file .zip:</strong></p>\n<p><strong><a href=\"/sites/default/files/files/mysql%2B%2B_3.zip\">mysql++.zip</a></strong></p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434731538,1),('field:node:167','a:2:{s:15:\"taxonomy_forums\";a:1:{s:3:\"und\";a:1:{i:0;a:1:{s:3:\"tid\";s:1:\"9\";}}}s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:652:\"<p>In seguito ad un malfunzionamento sel server (adesso rispristinato) chiedo a chiunque abbia creato e quindi reso utilizzabili delle API di far ripartire il servizio ngix.</p>\r\n<p>Ecco il comanda da digitare:</p>\r\n<code>$HOME/opt/nginx-1.2.1/sbin/nginx</code>\r\n<p>Ho già provato a contattare i maggiori sviluppatori ma non posso raggiungere tutti, cosa che con questo post spero di fare il più velocemente possibile visto che alcuni utenti potrebbero usare le API e trovarsi spiazzati in queste ore.</p>\r\n<p>Grazie.</p>\r\n<p>PS: vi prego di segnalare eventuali risoluzioni o problemi qui sotto o con un email diretta.</p>\r\n<p>Ciao.</p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:633:\"<p>In seguito ad un malfunzionamento sel server (adesso rispristinato) chiedo a chiunque abbia creato e quindi reso utilizzabili delle API di far ripartire il servizio ngix.<br />\nEcco il comanda da digitare:<br /><code>$HOME/opt/nginx-1.2.1/sbin/nginx</code><br />\nHo già provato a contattare i maggiori sviluppatori ma non posso raggiungere tutti, cosa che con questo post spero di fare il più velocemente possibile visto che alcuni utenti potrebbero usare le API e trovarsi spiazzati in queste ore.<br />\nGrazie.<br />\nPS: vi prego di segnalare eventuali risoluzioni o problemi qui sotto o con un email diretta.<br />\nCiao.</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434732680,1),('field:node:168','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:929:\"<p>Salve a tutti, oggi comincio a lavorare sul progetto che ho deciso di sviluppare per l'esame di Programmazione III.JCrypto nasce dalla mia passione per la crittografia e sarà un programma che permetterà di conoscere e capire il funzionamento di alcuni dei cifrari più famosi, oltre a permettere di cifrare i propri testi. Per cominciare probabilmente svilupperò il cifrario di Cesare (per saperne di più: <a href=\"http://it.wikipedia.org/wiki/Cifrario_di_Cesare\">http://it.wikipedia.org/wiki/Cifrario_di_Cesare</a>) e poi cercherò di svilupparne altri. Ovviamente il tutto sarà decorato da interfaccia grafica e il mio intento è quello di continuare questo progetto oltre ai fini dell'esame, infatti cercherò nei prossimi mesi di implementare altri cifrari. Al più presto pubblicherò i primi passi dello sviluppo.</p>\r\n<p>PF</p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:844:\"<p>Salve a tutti, oggi comincio a lavorare sul progetto che ho deciso di sviluppare per l\'esame di Programmazione III.JCrypto nasce dalla mia passione per la crittografia e sarà un programma che permetterà di conoscere e capire il funzionamento di alcuni dei cifrari più famosi, oltre a permettere di cifrare i propri testi. Per cominciare probabilmente svilupperò il cifrario di Cesare (per saperne di più: <a href=\"http://it.wikipedia.org/wiki/Cifrario_di_Cesare\">http://it.wikipedia.org/wiki/Cifrario_di_Cesare</a>) e poi cercherò di svilupparne altri. Ovviamente il tutto sarà decorato da interfaccia grafica e il mio intento è quello di continuare questo progetto oltre ai fini dell\'esame, infatti cercherò nei prossimi mesi di implementare altri cifrari. Al più presto pubblicherò i primi passi dello sviluppo.<br />\nPF</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1435005909,1),('field:node:169','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:1609:\"<p><img alt=\"servizi parthenope by Fabio Nisci Logo\" src=\"http://students.uniparthenope.it/~0124000074/iosapp/img/renders/Icon-72%402x.png\" /> Servizi Parthenope offre la possibilità di accedere ai servizi riservati agli studenti dell’Università e non solo.</p>\r\n<ul>\r\n <li>\r\n ALCUNE DELLE FUNZIONI....</li>\r\n <br />\r\n <li>\r\n News dell’Università di Ateneo, delle Facoltà e dei dipartimenti</li>\r\n <li>\r\n Rubrica del personale Universitario</li>\r\n <li>\r\n Consultare i libri presenti nella Biblioteca</li>\r\n <br />\r\n <li>\r\n GLI STUDENTI DELLA UNIVERSITÀ PARTHENOPE POSSONO INOLTRE:</li>\r\n <br />\r\n <li>\r\n Accedere all'area riservata con le proprie credenziali</li>\r\n <li>\r\n Visualizzare il proprio piano di studi</li>\r\n <li>\r\n Monitorare la propria situazione finanziaria di Tasse e versamenti.</li>\r\n <li>\r\n Prenotare gli esami disponibili</li>\r\n <li>\r\n Cancellare le prenotazioni esami effettuate.</li>\r\n <li>\r\n Visualizzare Medie e Statistiche sul proprio andamento universitario.</li>\r\n</ul>\r\n<p>Vi lascio con la landing page dove potrete trovare screenshot e funzioni principali: <a href=\"http://students.uniparthenope.it/~0124000074/iosapp/\" target=\"_blank\">http://students.uniparthenope.it/~0124000074/iosapp/ </a></p>\r\n<p>Applicazione sviluppata da <a href=\"mailto:fabio.nisci@studenti.uniparthenope.it\">Fabio Nisci</a> & <a href=\"http://www.fabiosoft.com\" target=\"_blank\">fabiosoft.com</a></p>\r\n<p>Disponibile su <a href=\"https://itunes.apple.com/it/app/servizi-parthenope-uniparthenope/id571062892?mt=8\">AppStore</a>! </p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:1349:\"<p>Servizi Parthenope offre la possibilità di accedere ai servizi riservati agli studenti dell’Università e non solo.</p>\n<ul><li>\n ALCUNE DELLE FUNZIONI....</li>\n<li>\n News dell’Università di Ateneo, delle Facoltà e dei dipartimenti</li>\n<li>\n Rubrica del personale Universitario</li>\n<li>\n Consultare i libri presenti nella Biblioteca</li>\n<li>\n GLI STUDENTI DELLA UNIVERSITÀ PARTHENOPE POSSONO INOLTRE:</li>\n<li>\n Accedere all\'area riservata con le proprie credenziali</li>\n<li>\n Visualizzare il proprio piano di studi</li>\n<li>\n Monitorare la propria situazione finanziaria di Tasse e versamenti.</li>\n<li>\n Prenotare gli esami disponibili</li>\n<li>\n Cancellare le prenotazioni esami effettuate.</li>\n<li>\n Visualizzare Medie e Statistiche sul proprio andamento universitario.</li>\n</ul><p>Vi lascio con la landing page dove potrete trovare screenshot e funzioni principali: <a href=\"http://students.uniparthenope.it/~0124000074/iosapp/\" target=\"_blank\">http://students.uniparthenope.it/~0124000074/iosapp/ </a><br />\nApplicazione sviluppata da <a href=\"mailto:fabio.nisci@studenti.uniparthenope.it\">Fabio Nisci</a> & <a href=\"http://www.fabiosoft.com\" target=\"_blank\">fabiosoft.com</a><br />\nDisponibile su <a href=\"https://itunes.apple.com/it/app/servizi-parthenope-uniparthenope/id571062892?mt=8\">AppStore</a>! </p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434822400,1),('field:node:17','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:3385:\"<p> </p>\r\n<p> </p>\r\n<p>\r\n <meta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\" />\r\n</p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n</p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n <script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n <style type=\"text/css\">\r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n} </style>\r\n <script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script></p>\r\n<h1>\r\n CCMMMA API</h1>\r\n<p><a name=\"introduction\"></a></p>\r\n<h4>\r\n Version</h4>\r\n<p>v1.0</p>\r\n<h4>\r\n Autori</h4>\r\n<p>Roberto Melfi, Valerio Viglione</p>\r\n<h4>\r\n Previsioni meteo a cura del Centro Campano per il Monitoraggio e la Modellistica Marina e Atmosferica</h4>\r\n<h4>\r\n Base URI</h4>\r\n<p><a href=\"http://api.uniparthenope.it:9990\" xmlns=\"\">http://api.uniparthenope.it:9990</a></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:3371:\"<p> </p>\n<p> </p>\n<p>\n <meta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\" /></p>\n<p> </p>\n<p><link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\" /></p>\n<p> </p>\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\" /><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script><style type=\"text/css\">\n<!--/*--><![CDATA[/* ><!--*/\n\nbody {\n background: #FFF;\n color: #333;\n font: normal 100% sans-serif;\nmargin-left: auto;\n margin-right: auto;\n\n line-height: 1.5;\n width:66%;\n}\n.uripart {\n background:#666;\n color: #fff;\n font-style: italic;\n}\nh1,h2,h3,h4,h5,h6 {\n color: #444;\n font-weight: normal;\n line-height: 1;\n margin-bottom: 0.6em;\n font-family: Helvetica, sans-serif;\n\n}\nh4,h5,h6 {font-weight: bold;}\nh1 {font-size: 2.6em;}\nh2 {font-size: 2em;margin-top:3em;}\nh3 {font-size: 1.5em;margin-top:1.5em;}\nh4 {font-size: 1.25em;}\nh5 {font-size: 1.1em;}\nh6 {font-size: 1em;}\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\npre {\n font: normal 100% monospace; \n}\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\n.statuscode, .method {\n font: bold 100% monospace; \n}\n#watermark-text span{\n padding-left: 30px;\n}\n#sidemenu {\nz-index:300; display:none;margin: 0; text-align:left;\n}\n#sidemenu li{\n font-size: 0.8em;\n}\n#sidemenu li a{\n color: #333;\n font-weight:bold;\n}\n#sidemenuopener{\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\nmin-height:32px;\n}\n#sidemenuopener a{\n color: #333;\n font-weight:bold;\n}\na{\n text-decoration: none;\n}\n#sidemenuopenerbox{\n position: fixed; right:12px;\n} \n/*--><!]]>*/\n</style><script type=\"text/javascript\">\n<!--//--><![CDATA[// ><!--\n\n SyntaxHighlighter.all();\n \n//--><!]]>\n</script><script type=\"text/javascript\">\n<!--//--><![CDATA[// ><!--\n\n function showElement(layer,sx,t1,t2){\n var l = document.getElementById(layer);\n var s = document.getElementById(sx);\n if(l.style.display==\"none\"){\n l.style.display=\"block\";\n l.backgroundPosition=\"top\";\n s.innerHTML= t2;\n } else {\n l.style.display=\"none\";\n s.innerHTML= t1;\n }\n }\n \n function boxSize(x,a,b){\n var el = document.getElementById(x);\n if(el.style.width === a){\n el.style.width = b;\n }\n else{\n el.style.width = a;\n }\n }\n \n \n//--><!]]>\n</script><h1>\n CCMMMA API</h1>\n<p><a name=\"introduction\" id=\"introduction\"></a></p>\n<h4>\n Version</h4>\n<p>v1.0</p>\n<h4>\n Autori</h4>\n<p>Roberto Melfi, Valerio Viglione</p>\n<h4>\n Previsioni meteo a cura del Centro Campano per il Monitoraggio e la Modellistica Marina e Atmosferica</h4>\n<h4>\n Base URI</h4>\n<p><a href=\"http://api.uniparthenope.it:9990\" xmlns=\"\">http://api.uniparthenope.it:9990</a></p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434726608,1),('field:node:170','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:3495:\"<p>Il programma che sto per esporvi tratta la realizzazione di un servizio Java per la raccolta e la memorizzazione in un database relazionale mysql dei dati acquisiti dai servizi http://www.campanialive.it e http://www.campaniameteo.it in modo periodico.<br />\r\n Il software in questione oltre a popolare il db, dispone di una semplice interfaccia Java Desktop per visualizzare i dati memorizzati nel database.</p>\r\n<p>Il programma in sostanza acquisisce dai siti sopra citati i dati generati dai sensori delle stazioni meteo campane e li inserisce nell'apposite tabelle MySql per poi essere visualizzati dal programma di interfaccia Java Desktop.</p>\r\n<p>Innanzitutto c'è da precisare una distinzione dei dati acquisiti (che sono stati separati in tabelle diverse); dati statici, cioè quei dati che sarebbe stato inutile acquisire ogni volta, cioè il nome della stazione meteo, i dati di georeferenziazione ecc.; e dati dei sensori meteo, cioè la temperatura, l'umidità la velocità del vento ecc., insomma quei dati che sono acquisiti periodicamente soggetti ad aggiornamenti costanti.</p>\r\n<p> </p>\r\n<p>Per campanialive.it è stata utilizzata la libreria “html parser” che permette di trattare la pagina HTML come una pagina XML ed è stato creato un filtro apposito (basato su questa libreria) che ha permesso di acquisire i valori specifici che indicavano i sensori della stazione meteo.</p>\r\n<p>Per campaniameteo.it si è dovuta utilizzare la libreria “JTidy” che ha “trasformato” la pagina HTML in XML, correggendo gli errori di sintassi e permettendo l’acquisizione dei valori utili. </p>\r\n<p> </p>\r\n<p>Per quanto riguarda i dati delle stazioni meteo (id stazione, nome stazione , provincia, latitudine, longitudine, sito di provenienza) è stato riempito manualmente un ArrayList di “stazioni meteo” dove vi erano presenti tutte le stazioni meteo sia di campanialive.it che campaniameteo.it che, in base al sito di provenienza, verrà utilizzato il filtro apposito citato precedentemente per l’acquisizione dei valori utili.</p>\r\n<p> </p>\r\n<p>Per far si che la scansione dei sensori meteo avvenisse periodicamente una volta avviato il programma, si è utilizzata l’interfaccia ScheduledExecutorService della libreria java.util.concurrent.<br />\r\n Grazie ad una gestione multithread infatti, si è potuto far avviare ogni intervallo di tempo prestabilito il metodo “ExecuteQuery”, che va ad eseguire la Query per l’inserimento dei parametri acquisiti dagli url delle stazioni meteo.</p>\r\n<p> </p>\r\n<p>L’interfaccia di visualizzazione presenta due ComboBox che permettono la scelta, prima della provincia in una ComboBox, e poi (solo una volta scelta la provincia) la scelta della stazione meteo tra l’elenco che si viene a creare nell’altra ComboBox.</p>\r\n<p>Fatte entrambe le scelte cliccando su un pulsante, appare nella TextArea sottostante l’elenco dei sensori con i rispettivi parametri acquisiti alla rispettiva data e ora.</p>\r\n<p>Mentre in un Label poco sopra, appaiono altre info sulla stazione meteo selezionata.</p>\r\n<p> </p>\r\n<p>Il progetto completo e altro materiale di spiegazione del codice lo potete scaricare al seguente <a href=\"http://www.alsoft.it/Progetto%20Alessandro%20Liccardo%20P3.rar\" target=\"_blank\">link</a></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:3351:\"<p>Il programma che sto per esporvi tratta la realizzazione di un servizio Java per la raccolta e la memorizzazione in un database relazionale mysql dei dati acquisiti dai servizi <a href=\"http://www.campanialive.it\">http://www.campanialive.it</a> e <a href=\"http://www.campaniameteo.it\">http://www.campaniameteo.it</a> in modo periodico.<br />\n Il software in questione oltre a popolare il db, dispone di una semplice interfaccia Java Desktop per visualizzare i dati memorizzati nel database.<br />\nIl programma in sostanza acquisisce dai siti sopra citati i dati generati dai sensori delle stazioni meteo campane e li inserisce nell\'apposite tabelle MySql per poi essere visualizzati dal programma di interfaccia Java Desktop.<br />\nInnanzitutto c\'è da precisare una distinzione dei dati acquisiti (che sono stati separati in tabelle diverse); dati statici, cioè quei dati che sarebbe stato inutile acquisire ogni volta, cioè il nome della stazione meteo, i dati di georeferenziazione ecc.; e dati dei sensori meteo, cioè la temperatura, l\'umidità la velocità del vento ecc., insomma quei dati che sono acquisiti periodicamente soggetti ad aggiornamenti costanti.<br />\n <br />\nPer campanialive.it è stata utilizzata la libreria “html parser” che permette di trattare la pagina HTML come una pagina XML ed è stato creato un filtro apposito (basato su questa libreria) che ha permesso di acquisire i valori specifici che indicavano i sensori della stazione meteo.<br />\nPer campaniameteo.it si è dovuta utilizzare la libreria “JTidy” che ha “trasformato” la pagina HTML in XML, correggendo gli errori di sintassi e permettendo l’acquisizione dei valori utili. <br />\n <br />\nPer quanto riguarda i dati delle stazioni meteo (id stazione, nome stazione , provincia, latitudine, longitudine, sito di provenienza) è stato riempito manualmente un ArrayList di “stazioni meteo” dove vi erano presenti tutte le stazioni meteo sia di campanialive.it che campaniameteo.it che, in base al sito di provenienza, verrà utilizzato il filtro apposito citato precedentemente per l’acquisizione dei valori utili.<br />\n <br />\nPer far si che la scansione dei sensori meteo avvenisse periodicamente una volta avviato il programma, si è utilizzata l’interfaccia ScheduledExecutorService della libreria java.util.concurrent.<br />\n Grazie ad una gestione multithread infatti, si è potuto far avviare ogni intervallo di tempo prestabilito il metodo “ExecuteQuery”, che va ad eseguire la Query per l’inserimento dei parametri acquisiti dagli url delle stazioni meteo.<br />\n <br />\nL’interfaccia di visualizzazione presenta due ComboBox che permettono la scelta, prima della provincia in una ComboBox, e poi (solo una volta scelta la provincia) la scelta della stazione meteo tra l’elenco che si viene a creare nell’altra ComboBox.<br />\nFatte entrambe le scelte cliccando su un pulsante, appare nella TextArea sottostante l’elenco dei sensori con i rispettivi parametri acquisiti alla rispettiva data e ora.<br />\nMentre in un Label poco sopra, appaiono altre info sulla stazione meteo selezionata.<br />\n <br />\nIl progetto completo e altro materiale di spiegazione del codice lo potete scaricare al seguente <a href=\"http://www.alsoft.it/Progetto%20Alessandro%20Liccardo%20P3.rar\" target=\"_blank\">link</a></p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434744847,1),('field:node:171','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:12596:\"<p class=\"rtecenter\"><object width=\"420\" height=\"315\"><param name=\"movie\" value=\"//www.youtube.com/v/NclcqkGq8oU?version=3&hl=it_IT&rel=0\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"//www.youtube.com/v/NclcqkGq8oU?version=3&hl=it_IT&rel=0\" type=\"application/x-shockwave-flash\" width=\"420\" height=\"315\" allowscriptaccess=\"always\" allowfullscreen=\"true\"></embed></object></p>\r\n<p> </p>\r\n<p>Tuco 1.0 è una targhetta elettronica a porta: "intelligente", <em>open source</em> e <em>open hardware</em>.</p>\r\n<p>E' stata concepita per essere installata (teoricamente) sulle porte degli studi della nostra università.</p>\r\n<p>Lo scopo della targhetta è visualizzare in tempo reale informazioni del tipo: numero dello studio, docente/i, orari di ricevimento, contatti mail e/o telefonici etc etc... ma soprattutto <strong>avvisi</strong> presi in tempo reale da uno dei canali di comunicazione dell'università.</p>\r\n<p>E' stata realizzata sfruttando l'hardware del famoso progetto 100% Italiano chiamato "<a href=\"http://www.arduino.cc\">Arduino</a>".</p>\r\n<p>Questo prototipo in particolare usa: <a href=\"http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove\">Arduino Duemilanove</a>, <a href=\"http://arduino.cc/en/Main/ArduinoEthernetShield\">Ethernet Shield</a>, un router (modificato) WiFi <a href=\"https://www.google.it/search?num=10&hl=it&safe=off&biw=1600&bih=756&q=fonera+2100&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=ryF4UNSjGObc4QTJtoG4Dg\">Fonera 2100 </a>e un display <u>grafico</u> (<strong>G-</strong>LCD) parallelo <a href=\"https://www.google.it/search?num=10&hl=it&safe=off&biw=1600&bih=756&q=fonera+2100&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=ryF4UNSjGObc4QTJtoG4Dg#um=1&hl=it&safe=off&tbm=isch&sa=1&q=KS0107&oq=KS0107&gs_l=img.3..0i24.20551.20551.0.21015.1.1.0.0.0.0.159.159.0j1.1.0...0.0...1c.1.IPccq-BH3FE&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&fp=1569b646711603fa&bpcl=35243188&biw=1600&bih=756\">KS010<span style=\"font-size: 16px;\"><strong>7</strong></span></a></p>\r\n<p>Quindi da oggi, le targhette stampate sulle porte della nostra università, potrebbero trasformarsi da queste:</p>\r\n<p><a href=\"http://imageshack.us/a/img819/7645/32004523964655204561918.jpg\"><img alt=\"\" height=\"191\" src=\"http://imageshack.us/a/img819/7645/32004523964655204561918.jpg\" width=\"255\" /></a></p>\r\n<p>A qualcosa di molto simile a questa:</p>\r\n<p><a href=\"http://imageshack.us/a/img440/6928/dscn1128h.jpg\"><img alt=\"\" height=\"203\" src=\"http://imageshack.us/a/img440/6928/dscn1128h.jpg\" width=\"271\" /></a></p>\r\n<p> </p>\r\n<h2>\r\n Come è stato realizzato questo progetto?</h2>\r\n<h3>\r\n Parte hardware:</h3>\r\n<p>Dopo aver configurato le impostazioni del firmware <a href=\"http://www.dd-wrt.com/\">DD-WRT</a> (<em>open</em>) correttamente, il nostro router Fonera deve collegarsi alla propria rete WiFi in modalità repeater WiFi (una valida alternativa della Fonera è il<span class=\"productModel\"> <a href=\"http://www.tp-link.it/products/details/?categoryid=241&model=TL-WR702N\">TL-WR702N</a></span>)</p>\r\n<p>Il router andrà collegato all'ethernet shield con un normale cavo RJ45</p>\r\n<p>Il wiring fatto tra GLCD e Arduino si può trovare sulla documentazione ufficiale della librearia grafica GLCD per Arduino: <a href=\"http://www.arduino.cc/playground/Code/GLCDks0108\">http://www.arduino.cc/playground/Code/GLCDks0108</a></p>\r\n<p>Avendo l'accortezza, però, di cambiare i pin:</p>\r\n<p>GLCD - ARDUINO</p>\r\n<p>9 -> D2<br />\r\n 10 -> D3</p>\r\n<p>e</p>\r\n<div>\r\n 16 ->A1</div>\r\n<div>\r\n 15 ->A2</div>\r\n<div>\r\n </div>\r\n<div>\r\n Per poi ottenere questo:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <a href=\"http://img338.imageshack.us/img338/1044/wiu.png\"><img alt=\"\" height=\"495\" src=\"http://img338.imageshack.us/img338/1044/wiu.png\" width=\"472\" /></a></div>\r\n<h3>\r\n Parte software:</h3>\r\n<p>Dopo aver scaricato e configurato la propria <a href=\"http://www.arduino.cc/en/Main/software\">Arduino IDE</a>, bisogna scaricare ed installare nel path giusto la libreria grafica <a href=\"http://http://www.arduino.cc/playground/Code/GLCDks0108\">GLCD.</a></p>\r\n<p>All'interno della libreria grafica GLCD vanno modificato alcuni file in questo modo:</p>\r\n<p>In: glcd/glcd_Config.h</p>\r\n<p>Bisogna: commentare <b>#include "config/ks0108_Panel.h"</b> e togliere il commento da <b>//#include "config/ks0108_Manual_Config.h"</b></p>\r\n<p>In: glcd/config/ks0108_Manual_Config.h</p>\r\n<p>Bisgona: modificare la linea</p>\r\n<pre style=\"background: none repeat scroll 0% 0% rgb(0, 0, 0); color: rgb(248, 248, 248);\">\r\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData2Pin</span> 10\r\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData3Pin</span> 11\r\n</pre>\r\n<p>in</p>\r\n<pre style=\"background: none repeat scroll 0% 0% rgb(0, 0, 0); color: rgb(248, 248, 248);\">\r\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData2Pin</span> 2\r\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData3Pin</span> 3\r\n</pre>\r\n<p>Save & exit.</p>\r\n<p>Questa modifica è necessaria in quanto sia l'etherne shield che il glcd hanno in comune i pin 10 e 11, dunque per evitare incompatibilità tra i due hardware, la libreria va modificata come sopra</p>\r\n<p> </p>\r\n<h3>\r\n Il firmware:</h3>\r\n<p>Il firmware, da me scritto, è presente nella mia cartella personale su: <a href=\"http://box.uniparthenope.it/public.php?service=files&token=1d3ba5b17f36d42cbfd06cc402aeaf69636daa54&file=/Tuco\">box.uniparthenope.it</a></p>\r\n<p>Circa i punti salienti del firmware, posso aggiungere che la funzione principale loop (un loop infinito) è strutturata quanto segue:</p>\r\n<pre>\r\n<span style=\"color: rgb(204, 102, 0);\">void</span> <span style=\"color: rgb(204, 102, 0);\"><b>loop</b></span>() { \r\n logo();\r\n cornice();\r\n numero();\r\n mail();\r\n myConnect();\r\n parse();\r\n disconnect();\r\n}\r\n</pre>\r\n<p>In particolare:</p>\r\n<p><strong>Logo</strong></p>\r\n<p>è una funzione che restituisce due immagini bitmap, opportunamente realizzate con un tool (in java e <em>open</em>) all'interno della libreria grafica glcd.</p>\r\n<p>In particolare restituisce il logo della nostra università diviso in due metà.</p>\r\n<p> </p>\r\n<p><strong>Cornice</strong></p>\r\n<p>Grazie all'uso dell'oggetto gText ho strutturato il display in tre parti:</p>\r\n<p><a href=\"http://imageshack.us/a/img823/7963/immaginerv.jpg\"><img alt=\"\" height=\"172\" src=\"http://imageshack.us/a/img823/7963/immaginerv.jpg\" width=\"376\" /></a></p>\r\n<p>Questo mi permette di avere le informazioni divise per aree grafiche tematiche:</p>\r\n<p>Nella superiore visualizzo nome e cognome del/dei docenti e numero dello studio.</p>\r\n<p>Al centro tutte le informazioni DINAMICHE</p>\r\n<p>Nella parte inferiore l'orario di ricevimento</p>\r\n<p> </p>\r\n<p><strong>Numero</strong> e <strong>Mail</strong></p>\r\n<p>Sono due funzioni che stampano sul gText.centrale rispettivamente: numero stanza e l'indirizzo email.</p>\r\n<p> </p>\r\n<p><strong>myConnect</strong></p>\r\n<p>E' la funzione che mi permette di instaurare un collegamento in modalità <em>client</em>, tra la mia arduino ed il server sebeto.</p>\r\n<p>In particolare myConnect cerca di instaurare il collegamento, ma se dopo tre tentativi non riesce a stabilire una connessione, avviene un hardreset grazie alla macro definita nell'header del firmware.</p>\r\n<p>Una volta stabilita la connessione, effettuo il comando GET verso l'api news (settata in modo tale da restituire un solo avviso)</p>\r\n<p> </p>\r\n<p><strong>parse</strong></p>\r\n<p>E' la funzione che realizza il parsing del primo avviso restituito dall'api news, in particolare cerca la sottostringa <em>content</em> e memorizza il contenuto dei primi 300caratteri in un buffer.</p>\r\n<p>Il buffer viene stampato char by char con un ritardo di 50ms tra un char e l'altro.</p>\r\n<p> </p>\r\n<p><strong>disconnect</strong></p>\r\n<p>realizza la disconnessione dell'arduino dal server.</p>\r\n<p> </p>\r\n<h2>\r\n Note finali:</h2>\r\n<ul>\r\n <li>\r\n Non avendo un sistema di avvisi centralizzato e comune, in <em>questo prototipo</em>, è stato utilizzato l'api news a scopo dimostrativo.</li>\r\n <li>\r\n Se avessimo un sistema di avvisi centralizzato si potrebbe modificare il firmware in questo modo:</li>\r\n</ul>\r\n<ol class=\"rteindent1\">\r\n <li>\r\n una query join tra il numero di porta a cui è stato assegnato l'arduino e il DB dei docenti</li>\r\n <li>\r\n la query potrebbe restituire molte informazioni, ad esempio: nome, cognome, email, telefono etc etc</li>\r\n <li>\r\n il primo/i avviso di ogni docente di quello studio</li>\r\n <li>\r\n print delle informazioni scelte su glcd</li>\r\n</ol>\r\n<ul>\r\n <li>\r\n Il limite degli avvisi in <em>questo prototipo</em>, è stato fissato a 300 per ragioni di memoria, leggibilità e perchè fa più figo pensare gli avvisi come dei <strong>tweet</strong></li>\r\n <li>\r\n Essendo open source, ogni idea e modifica è facilmente realizzabile</li>\r\n <li>\r\n Nel video il display sembra rovinato o sbiadito: è un effetto dovuto ai filtri video di YouTube.</li>\r\n <li>\r\n Eventuali combinazioni hardware possono essere:</li>\r\n</ul>\r\n<ol class=\"rteindent1\">\r\n <li>\r\n Router -> Ethernet Shield -> Arduino -> Glcd (è il mio prototipo)</li>\r\n <li>\r\n Router -> <a href=\"http://arduino.cc/en/Main/ArduinoBoardEthernet\">Arduino Ethernet</a> -> Glcd</li>\r\n <li>\r\n <a href=\"http://arduino.cc/en/Main/ArduinoWiFiShield\">Arduino WiFi Shield</a> -> Arduino -> GLCD</li>\r\n <li>\r\n <a href=\"http://www.linksprite.com/product/showproduct.php?id=74&lang=en\">Arduino + WiFi </a>(su singola pcb) -> Glcd (la combinazione migliore per spazio)</li>\r\n</ol>\r\n<p> </p>\r\n<p><strong>Alcune foto:</strong></p>\r\n<p><a href=\"http://img35.imageshack.us/i/dscn1122t.jpg/\" target=\"_blank\"><img border=\"0\" src=\"http://img35.imageshack.us/img35/3417/dscn1122t.th.jpg\" /></a><br />\r\n <a href=\"http://img707.imageshack.us/i/dscn1127h.jpg/\" target=\"_blank\"><img border=\"0\" src=\"http://img707.imageshack.us/img707/9273/dscn1127h.th.jpg\" /></a><br />\r\n <a href=\"http://img716.imageshack.us/i/dscn1126yt.jpg/\" target=\"_blank\"><img border=\"0\" src=\"http://img716.imageshack.us/img716/981/dscn1126yt.th.jpg\" /></a></p>\r\n<p> </p>\r\n<h2>\r\n Il progetto, inoltre, è apparso su:</h2>\r\n<p> </p>\r\n<p>Arduino.cc: <a href=\"http://blog.arduino.cc/2012/11/13/tuco-1-0-a-digital-door-plate/\" target=\"_blank\">http://blog.arduino.cc/2012/11/13/tuco-1-0-a-digital-door-plate/</a></p>\r\n<p>Adafruit.com: <a href=\"http://www.adafruit.com/blog/2012/10/15/electronic-doorplate-with-arduino/\" target=\"_blank\">http://www.adafruit.com/blog/2012/10/15/electronic-doorplate-with-arduino/</a></p>\r\n<p> </p>\r\n<h1>\r\n </h1>\r\n<h1 class=\"rtecenter\">\r\n <a href=\"http://box.uniparthenope.it/public.php?service=files&t=a6e87afde0e5f32b0f3734027bfba36a\">Tuco 1.0 firmware</a></h1>\r\n<p class=\"rtecenter\"><a href=\"http://box.uniparthenope.it/public.php?service=files&t=a6e87afde0e5f32b0f3734027bfba36a\"><img alt=\"\" src=\"http://api.ning.com/files/W*UwkBxt9kVhZew1rsI2iG7Zc0pIEdNe2KiaTGrlsO2qAgsDlycKf2aJli2gMtz02sem8NRQxBkaRkRA5u0kgwXbOwFYIAfB/Tuco_01.jpg\" style=\"width: 97px; height: 97px;\" /></a></p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><span style=\"font-size: 16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:11937:\"<p class=\"rtecenter\">\n<object width=\"420\" height=\"315\"><param name=\"movie\" value=\"//www.youtube.com/v/NclcqkGq8oU?version=3&hl=it_IT&rel=0\" /><param name=\"allowFullScreen\" value=\"true\" /><param name=\"allowscriptaccess\" value=\"always\" /><embed src=\"//www.youtube.com/v/NclcqkGq8oU?version=3&hl=it_IT&rel=0\" type=\"application/x-shockwave-flash\" width=\"420\" height=\"315\" allowscriptaccess=\"always\" allowfullscreen=\"true\"></embed></object></p>\n<p> </p>\n<p>Tuco 1.0 è una targhetta elettronica a porta: \"intelligente\", <em>open source</em> e <em>open hardware</em>.</p>\n<p>E\' stata concepita per essere installata (teoricamente) sulle porte degli studi della nostra università.</p>\n<p>Lo scopo della targhetta è visualizzare in tempo reale informazioni del tipo: numero dello studio, docente/i, orari di ricevimento, contatti mail e/o telefonici etc etc... ma soprattutto <strong>avvisi</strong> presi in tempo reale da uno dei canali di comunicazione dell\'università.</p>\n<p>E\' stata realizzata sfruttando l\'hardware del famoso progetto 100% Italiano chiamato \"<a href=\"http://www.arduino.cc\">Arduino</a>\".</p>\n<p>Questo prototipo in particolare usa: <a href=\"http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove\">Arduino Duemilanove</a>, <a href=\"http://arduino.cc/en/Main/ArduinoEthernetShield\">Ethernet Shield</a>, un router (modificato) WiFi <a href=\"https://www.google.it/search?num=10&hl=it&safe=off&biw=1600&bih=756&q=fonera+2100&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=ryF4UNSjGObc4QTJtoG4Dg\">Fonera 2100 </a>e un display <u>grafico</u> (<strong>G-</strong>LCD) parallelo <a href=\"https://www.google.it/search?num=10&hl=it&safe=off&biw=1600&bih=756&q=fonera+2100&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=ryF4UNSjGObc4QTJtoG4Dg#um=1&hl=it&safe=off&tbm=isch&sa=1&q=KS0107&oq=KS0107&gs_l=img.3..0i24.20551.20551.0.21015.1.1.0.0.0.0.159.159.0j1.1.0...0.0...1c.1.IPccq-BH3FE&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&fp=1569b646711603fa&bpcl=35243188&biw=1600&bih=756\">KS010<span style=\"font-size: 16px;\"><strong>7</strong></span></a></p>\n<p>Quindi da oggi, le targhette stampate sulle porte della nostra università, potrebbero trasformarsi da queste:</p>\n<p><a href=\"http://imageshack.us/a/img819/7645/32004523964655204561918.jpg\"><img alt=\"\" height=\"191\" src=\"http://imageshack.us/a/img819/7645/32004523964655204561918.jpg\" width=\"255\" /></a></p>\n<p>A qualcosa di molto simile a questa:</p>\n<p><a href=\"http://imageshack.us/a/img440/6928/dscn1128h.jpg\"><img alt=\"\" height=\"203\" src=\"http://imageshack.us/a/img440/6928/dscn1128h.jpg\" width=\"271\" /></a></p>\n<p> </p>\n<h2>\n Come è stato realizzato questo progetto?</h2>\n<h3>\n Parte hardware:</h3>\n<p>Dopo aver configurato le impostazioni del firmware <a href=\"http://www.dd-wrt.com/\">DD-WRT</a> (<em>open</em>) correttamente, il nostro router Fonera deve collegarsi alla propria rete WiFi in modalità repeater WiFi (una valida alternativa della Fonera è il<span class=\"productModel\"> <a href=\"http://www.tp-link.it/products/details/?categoryid=241&model=TL-WR702N\">TL-WR702N</a></span>)</p>\n<p>Il router andrà collegato all\'ethernet shield con un normale cavo RJ45</p>\n<p>Il wiring fatto tra GLCD e Arduino si può trovare sulla documentazione ufficiale della librearia grafica GLCD per Arduino: <a href=\"http://www.arduino.cc/playground/Code/GLCDks0108\">http://www.arduino.cc/playground/Code/GLCDks0108</a></p>\n<p>Avendo l\'accortezza, però, di cambiare i pin:</p>\n<p>GLCD - ARDUINO</p>\n<p>9 -> D2<br />\n 10 -> D3</p>\n<p>e</p>\n<div>\n 16 ->A1</div>\n<div>\n 15 ->A2</div>\n<div>\n </div>\n<div>\n Per poi ottenere questo:</div>\n<div>\n </div>\n<div>\n <a href=\"http://img338.imageshack.us/img338/1044/wiu.png\"><img alt=\"\" height=\"495\" src=\"http://img338.imageshack.us/img338/1044/wiu.png\" width=\"472\" /></a></div>\n<h3>\n Parte software:</h3>\n<p>Dopo aver scaricato e configurato la propria <a href=\"http://www.arduino.cc/en/Main/software\">Arduino IDE</a>, bisogna scaricare ed installare nel path giusto la libreria grafica <a href=\"http://http://www.arduino.cc/playground/Code/GLCDks0108\">GLCD.</a></p>\n<p>All\'interno della libreria grafica GLCD vanno modificato alcuni file in questo modo:</p>\n<p>In: glcd/glcd_Config.h</p>\n<p>Bisogna: commentare <b>#include \"config/ks0108_Panel.h\"</b> e togliere il commento da <b>//#include \"config/ks0108_Manual_Config.h\"</b></p>\n<p>In: glcd/config/ks0108_Manual_Config.h</p>\n<p>Bisgona: modificare la linea</p>\n<pre style=\"background: none repeat scroll 0% 0% rgb(0, 0, 0); color: rgb(248, 248, 248);\">\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData2Pin</span> 10\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData3Pin</span> 11\n</pre><p>in</p>\n<pre style=\"background: none repeat scroll 0% 0% rgb(0, 0, 0); color: rgb(248, 248, 248);\">\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData2Pin</span> 2\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData3Pin</span> 3\n</pre><p>Save & exit.</p>\n<p>Questa modifica è necessaria in quanto sia l\'etherne shield che il glcd hanno in comune i pin 10 e 11, dunque per evitare incompatibilità tra i due hardware, la libreria va modificata come sopra</p>\n<p> </p>\n<h3>\n Il firmware:</h3>\n<p>Il firmware, da me scritto, è presente nella mia cartella personale su: <a href=\"http://box.uniparthenope.it/public.php?service=files&token=1d3ba5b17f36d42cbfd06cc402aeaf69636daa54&file=/Tuco\">box.uniparthenope.it</a></p>\n<p>Circa i punti salienti del firmware, posso aggiungere che la funzione principale loop (un loop infinito) è strutturata quanto segue:</p>\n<pre>\n<span style=\"color: rgb(204, 102, 0);\">void</span> <span style=\"color: rgb(204, 102, 0);\"><b>loop</b></span>() { \n logo();\n cornice();\n numero();\n mail();\n myConnect();\n parse();\n disconnect();\n}\n</pre><p>In particolare:</p>\n<p><strong>Logo</strong></p>\n<p>è una funzione che restituisce due immagini bitmap, opportunamente realizzate con un tool (in java e <em>open</em>) all\'interno della libreria grafica glcd.</p>\n<p>In particolare restituisce il logo della nostra università diviso in due metà.</p>\n<p> </p>\n<p><strong>Cornice</strong></p>\n<p>Grazie all\'uso dell\'oggetto gText ho strutturato il display in tre parti:</p>\n<p><a href=\"http://imageshack.us/a/img823/7963/immaginerv.jpg\"><img alt=\"\" height=\"172\" src=\"http://imageshack.us/a/img823/7963/immaginerv.jpg\" width=\"376\" /></a></p>\n<p>Questo mi permette di avere le informazioni divise per aree grafiche tematiche:</p>\n<p>Nella superiore visualizzo nome e cognome del/dei docenti e numero dello studio.</p>\n<p>Al centro tutte le informazioni DINAMICHE</p>\n<p>Nella parte inferiore l\'orario di ricevimento</p>\n<p> </p>\n<p><strong>Numero</strong> e <strong>Mail</strong></p>\n<p>Sono due funzioni che stampano sul gText.centrale rispettivamente: numero stanza e l\'indirizzo email.</p>\n<p> </p>\n<p><strong>myConnect</strong></p>\n<p>E\' la funzione che mi permette di instaurare un collegamento in modalità <em>client</em>, tra la mia arduino ed il server sebeto.</p>\n<p>In particolare myConnect cerca di instaurare il collegamento, ma se dopo tre tentativi non riesce a stabilire una connessione, avviene un hardreset grazie alla macro definita nell\'header del firmware.</p>\n<p>Una volta stabilita la connessione, effettuo il comando GET verso l\'api news (settata in modo tale da restituire un solo avviso)</p>\n<p> </p>\n<p><strong>parse</strong></p>\n<p>E\' la funzione che realizza il parsing del primo avviso restituito dall\'api news, in particolare cerca la sottostringa <em>content</em> e memorizza il contenuto dei primi 300caratteri in un buffer.</p>\n<p>Il buffer viene stampato char by char con un ritardo di 50ms tra un char e l\'altro.</p>\n<p> </p>\n<p><strong>disconnect</strong></p>\n<p>realizza la disconnessione dell\'arduino dal server.</p>\n<p> </p>\n<h2>\n Note finali:</h2>\n<ul><li>\n Non avendo un sistema di avvisi centralizzato e comune, in <em>questo prototipo</em>, è stato utilizzato l\'api news a scopo dimostrativo.</li>\n<li>\n Se avessimo un sistema di avvisi centralizzato si potrebbe modificare il firmware in questo modo:</li>\n</ul><ol class=\"rteindent1\"><li>\n una query join tra il numero di porta a cui è stato assegnato l\'arduino e il DB dei docenti</li>\n<li>\n la query potrebbe restituire molte informazioni, ad esempio: nome, cognome, email, telefono etc etc</li>\n<li>\n il primo/i avviso di ogni docente di quello studio</li>\n<li>\n print delle informazioni scelte su glcd</li>\n</ol><ul><li>\n Il limite degli avvisi in <em>questo prototipo</em>, è stato fissato a 300 per ragioni di memoria, leggibilità e perchè fa più figo pensare gli avvisi come dei <strong>tweet</strong></li>\n<li>\n Essendo open source, ogni idea e modifica è facilmente realizzabile</li>\n<li>\n Nel video il display sembra rovinato o sbiadito: è un effetto dovuto ai filtri video di YouTube.</li>\n<li>\n Eventuali combinazioni hardware possono essere:</li>\n</ul><ol class=\"rteindent1\"><li>\n Router -> Ethernet Shield -> Arduino -> Glcd (è il mio prototipo)</li>\n<li>\n Router -> <a href=\"http://arduino.cc/en/Main/ArduinoBoardEthernet\">Arduino Ethernet</a> -> Glcd</li>\n<li>\n <a href=\"http://arduino.cc/en/Main/ArduinoWiFiShield\">Arduino WiFi Shield</a> -> Arduino -> GLCD</li>\n<li>\n <a href=\"http://www.linksprite.com/product/showproduct.php?id=74&lang=en\">Arduino + WiFi </a>(su singola pcb) -> Glcd (la combinazione migliore per spazio)</li>\n</ol><p> </p>\n<p><strong>Alcune foto:</strong></p>\n<p><a href=\"http://img35.imageshack.us/i/dscn1122t.jpg/\" target=\"_blank\"><img border=\"0\" src=\"http://img35.imageshack.us/img35/3417/dscn1122t.th.jpg\" /></a><br /><a href=\"http://img707.imageshack.us/i/dscn1127h.jpg/\" target=\"_blank\"><img border=\"0\" src=\"http://img707.imageshack.us/img707/9273/dscn1127h.th.jpg\" /></a><br /><a href=\"http://img716.imageshack.us/i/dscn1126yt.jpg/\" target=\"_blank\"><img border=\"0\" src=\"http://img716.imageshack.us/img716/981/dscn1126yt.th.jpg\" /></a></p>\n<p> </p>\n<h2>\n Il progetto, inoltre, è apparso su:</h2>\n<p> </p>\n<p>Arduino.cc: <a href=\"http://blog.arduino.cc/2012/11/13/tuco-1-0-a-digital-door-plate/\" target=\"_blank\">http://blog.arduino.cc/2012/11/13/tuco-1-0-a-digital-door-plate/</a></p>\n<p>Adafruit.com: <a href=\"http://www.adafruit.com/blog/2012/10/15/electronic-doorplate-with-arduino/\" target=\"_blank\">http://www.adafruit.com/blog/2012/10/15/electronic-doorplate-with-arduino/</a></p>\n<p> </p>\n<h1>\n </h1>\n<h1 class=\"rtecenter\">\n <a href=\"http://box.uniparthenope.it/public.php?service=files&t=a6e87afde0e5f32b0f3734027bfba36a\">Tuco 1.0 firmware</a></h1>\n<p class=\"rtecenter\"><a href=\"http://box.uniparthenope.it/public.php?service=files&t=a6e87afde0e5f32b0f3734027bfba36a\"><img alt=\"\" src=\"http://api.ning.com/files/W*UwkBxt9kVhZew1rsI2iG7Zc0pIEdNe2KiaTGrlsO2qAgsDlycKf2aJli2gMtz02sem8NRQxBkaRkRA5u0kgwXbOwFYIAfB/Tuco_01.jpg\" style=\"width: 97px; height: 97px;\" /></a></p>\n<p class=\"rtecenter\"> </p>\n<p class=\"rtecenter\"> </p>\n<p class=\"rtecenter\"><span style=\"font-size: 16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\n 108/1007</span></span></p>\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434729925,1),('field:node:172','a:2:{s:15:\"taxonomy_forums\";a:1:{s:3:\"und\";a:1:{i:0;a:1:{s:3:\"tid\";s:1:\"1\";}}}s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:1344:\"<p><span style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \">Ciao a tutti!</span><br style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \" />\r\n <span style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \">Ragazzi qualcuno potrebbe linkarmi una buona guida (abbastanza approfondita) per l'uso delle regex? </span><br style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \" />\r\n <span style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \">Le uso da sempre e sinceramente perdo troppo tempo per capire come costruirne una. Quindi vorrei conoscere bene le regole per una buona costruzione di una regex.</span><br style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \" />\r\n <span style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \">Vi ringrazio in anticipo! :D</span></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:335:\"<p>Ciao a tutti!<br />\n Ragazzi qualcuno potrebbe linkarmi una buona guida (abbastanza approfondita) per l\'uso delle regex? <br />\n Le uso da sempre e sinceramente perdo troppo tempo per capire come costruirne una. Quindi vorrei conoscere bene le regole per una buona costruzione di una regex.<br />\n Vi ringrazio in anticipo! :D</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434735741,1),('field:node:173','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:1579:\"<p><span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \">Salve, ho appena finito il cifrario di Cesare, ci ho messo un po' di tempo perchè per rendere più efficiente l'algoritmo, ho approfondito l'aritmetica modulare, anche se ciò che mi ha impiegato più tempo è stato fare a cazzotti con l' interfaccia grafica dove , devo essere sincero, sono proprio scarso :) , ho perso molto tempo solo per decidere quale layout manager utilizzare, e poi quando avevo quasi deciso di disporre i componenti a mano, ho trovato il GroupLayout che per ora mi sta aiutando. Non so se sarà quello definitivo ma per ora ho optato per quello.</span><br style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \" />\r\n <span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \">Il mio obiettivo adesso e quello di implementate il cifrario di Vigenere e se ci riesco mi riterrei soddisfatto, sia perchè è il mio preferito, sia perchè è più complesso (rispetto a quello di Cesare).</span><br style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \" />\r\n <span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \">A presto avrete mie notizie. </span></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:831:\"<p>Salve, ho appena finito il cifrario di Cesare, ci ho messo un po\' di tempo perchè per rendere più efficiente l\'algoritmo, ho approfondito l\'aritmetica modulare, anche se ciò che mi ha impiegato più tempo è stato fare a cazzotti con l\' interfaccia grafica dove , devo essere sincero, sono proprio scarso :) , ho perso molto tempo solo per decidere quale layout manager utilizzare, e poi quando avevo quasi deciso di disporre i componenti a mano, ho trovato il GroupLayout che per ora mi sta aiutando. Non so se sarà quello definitivo ma per ora ho optato per quello.<br />\n Il mio obiettivo adesso e quello di implementate il cifrario di Vigenere e se ci riesco mi riterrei soddisfatto, sia perchè è il mio preferito, sia perchè è più complesso (rispetto a quello di Cesare).<br />\n A presto avrete mie notizie. </p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434920156,1),('field:node:174','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:1721:\"<p>Salve a tutti!</p>\r\n<p>Di recente molti studenti (incluso me) all'università, stanno lamentando il fatto di non saper configurare NetBeans per il deployment sul server sebeto, come suggerito dal prof. Montella.</p>\r\n<p>Non ho configurato NetBeans, bensì ho fatto una cosa più divertente . Ho scritto uno shell script che copia i files indicati nel path (o direttamente una cartella) nella vostra home sul server students.uniparthenope.it. </p>\r\n<p>Per farvi capire meglio:</p>\r\n<p>Avete dei files o delle cartelle che volete copiare sul vostro spazio personale? Bene. Avviato lo script, esso usa il comando di sincronizzazione remota di files, rsync, per copiare tutti i files contenuti nella directory che potete fornirgli, in una cartella nella vostra home sul server, chiamata<strong> "ultimi_file_copiati"</strong>.</p>\r\n<p>Lo script si chiama deploy e prende in input la matricola di uno studente oppure lo username di un amministratore o docente, ed anche la directory contenente i files da copiare. </p>\r\n<p>Grazie alle espressioni regolari, il formato della matricola accettato, sarà 0...000...., mentre quello dei docenti/amministratori nome.cognome.</p>\r\n<p>Breve delucidazione su come lanciare lo script:</p>\r\n<p>Assumendo che vi troviate nella cartella dove è situato lo script, digitate:</p>\r\n<p><b>./deploy numero_matricola path_files</b></p>\r\n<p>ad esempio:</p>\r\n<p><strong>./deploy 0101010101 /users/utente/programmi/files_da_copiare/</strong></p>\r\n<p>Questo script è compatibile soltanto con sistemi Unix/Linux!</p>\r\n<p>Ecco lo script:</p>\r\n<p><a href=\"/sites/default/files/files/deploy.rar\">deploy.rar</a></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:1632:\"<p>Salve a tutti!</p>\n<p>Di recente molti studenti (incluso me) all\'università, stanno lamentando il fatto di non saper configurare NetBeans per il deployment sul server sebeto, come suggerito dal prof. Montella.</p>\n<p>Non ho configurato NetBeans, bensì ho fatto una cosa più divertente . Ho scritto uno shell script che copia i files indicati nel path (o direttamente una cartella) nella vostra home sul server students.uniparthenope.it. </p>\n<p>Per farvi capire meglio:</p>\n<p>Avete dei files o delle cartelle che volete copiare sul vostro spazio personale? Bene. Avviato lo script, esso usa il comando di sincronizzazione remota di files, rsync, per copiare tutti i files contenuti nella directory che potete fornirgli, in una cartella nella vostra home sul server, chiamata<strong> \"ultimi_file_copiati\"</strong>.</p>\n<p>Lo script si chiama deploy e prende in input la matricola di uno studente oppure lo username di un amministratore o docente, ed anche la directory contenente i files da copiare. </p>\n<p>Grazie alle espressioni regolari, il formato della matricola accettato, sarà 0...000...., mentre quello dei docenti/amministratori nome.cognome.</p>\n<p>Breve delucidazione su come lanciare lo script:</p>\n<p>Assumendo che vi troviate nella cartella dove è situato lo script, digitate:</p>\n<p><b>./deploy numero_matricola path_files</b></p>\n<p>ad esempio:</p>\n<p><strong>./deploy 0101010101 /users/utente/programmi/files_da_copiare/</strong></p>\n<p>Questo script è compatibile soltanto con sistemi Unix/Linux!</p>\n<p>Ecco lo script:</p>\n<p><a href=\"/sites/default/files/files/deploy.rar\">deploy.rar</a></p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434731538,1),('field:node:175','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:1801:\"<p>Finalmente, dopo quasi due mesi di lavoro, è pronto il web-software per la gestione degli orari degli insegnamenti dei corsi di facoltà.</p>\r\n<p>Lo sviluppo è in Php e Javascript, ed è utilizzabile su CMS Drupal.</p>\r\n<p>Il software permetterà ai dipendenti della Presidenza di organizzare gli orai degli insegnamenti con i relativi parametri (giorno, ora, aula, anno, semestre ecc..) abbandonando il consueto "lavoro a mano" per pubblicare poi i PDF.</p>\r\n<p>L'accesso al software può essere pubblico per visualizzare gli orari, e privato per editare le informazioni.</p>\r\n<p>Il form è molto semplice:</p>\r\n<p><img src=\"http://students.uniparthenope.it/~0124000028/blog.jpg\" /></p>\r\n<p>In questo caso vediamo gli insegnamenti previsti per il corso di Informatica (0124) del primo anno per il primo semestre. Come si vede, l'indirizzo è GENERALE poichè non è specificato per le nuove matricole.</p>\r\n<p>Si può notare inoltre che la tabella non è editabile, poichè l'uente non è autenticato.</p>\r\n<p>Se invece si accede come mebro della Presidenza:</p>\r\n<p><img alt=\"\" src=\"http://students.uniparthenope.it/~0124000028/2.jpg\" /></p>\r\n<p>Si ha la possibilità di editare la tabella. Ed ecco come appare il form di input per un orario:</p>\r\n<p><img alt=\"\" src=\"http://students.uniparthenope.it/~0124000028/3.jpg\" /></p>\r\n<p>Ovviamente sono possibili anche le operazioni di modifica ed eliminazione.</p>\r\n<p>In conclusione, il software è pronto, purtroppo però mancano ancora i dati ufficiali (corsi, piani di studio, codici insegnamenti, ecc)da prelevare dal DB dell' Università Parthenope per un corretto funzionamento.</p>\r\n<p>Saluti a Tutti!</p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:1652:\"<p>Finalmente, dopo quasi due mesi di lavoro, è pronto il web-software per la gestione degli orari degli insegnamenti dei corsi di facoltà.</p>\n<p>Lo sviluppo è in Php e Javascript, ed è utilizzabile su CMS Drupal.</p>\n<p>Il software permetterà ai dipendenti della Presidenza di organizzare gli orai degli insegnamenti con i relativi parametri (giorno, ora, aula, anno, semestre ecc..) abbandonando il consueto \"lavoro a mano\" per pubblicare poi i PDF.</p>\n<p>L\'accesso al software può essere pubblico per visualizzare gli orari, e privato per editare le informazioni.</p>\n<p>Il form è molto semplice:</p>\n<p><img src=\"http://students.uniparthenope.it/~0124000028/blog.jpg\" /></p>\n<p>In questo caso vediamo gli insegnamenti previsti per il corso di Informatica (0124) del primo anno per il primo semestre. Come si vede, l\'indirizzo è GENERALE poichè non è specificato per le nuove matricole.</p>\n<p>Si può notare inoltre che la tabella non è editabile, poichè l\'uente non è autenticato.</p>\n<p>Se invece si accede come mebro della Presidenza:</p>\n<p><img alt=\"\" src=\"http://students.uniparthenope.it/~0124000028/2.jpg\" /></p>\n<p>Si ha la possibilità di editare la tabella. Ed ecco come appare il form di input per un orario:</p>\n<p><img alt=\"\" src=\"http://students.uniparthenope.it/~0124000028/3.jpg\" /></p>\n<p>Ovviamente sono possibili anche le operazioni di modifica ed eliminazione.</p>\n<p>In conclusione, il software è pronto, purtroppo però mancano ancora i dati ufficiali (corsi, piani di studio, codici insegnamenti, ecc)da prelevare dal DB dell\' Università Parthenope per un corretto funzionamento.</p>\n<p>Saluti a Tutti!</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434931212,1),('field:node:176','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:8034:\"<h1 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\">Bones | and | Dogs</span></h1>\r\n<h2 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\"><span style=\"color: rgb(47, 79, 79);\">I Movimenti e gli Ostacoli</span></span></h2>\r\n<p> </p>\r\n<p class=\"rtejustify\"><span style=\"font-family:tahoma,geneva,sans-serif;\">Passiamo adesso col descrivervi in che modo il nostro protagonista di gioco si muoverà all'interno della nostra window. Ho implementato i Movimenti all'interno della classe <strong>Dog</strong> che ricordiamo aveva i frame del cane, comprese le animazioni, che vi mostro nell'immagine sottostante:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i47.tinypic.com/2nb85na.png\" style=\"width: 200px; height: 200px;\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">All'interno della classe ho implementato dei metodi tramite la <strong>java.awt.event</strong> che utilizzano la <strong>KeyEvent</strong> Con i quali fà cambiare FRAME del cane in base a cosa viene premuto. Ovviamente, siccome stiamo ragionando in termini di Coordinate (x,y), la posizione effettiva dell'oggetto che contiene l'immagine del cane, viene traslata di:</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">x=x-1; y=y+0; // Movimento a SINISTRA\r\nx=x+1; y=y+0; // Movimento a DESTRA\r\ny=y-1; x=x+0; // Movimento in ALTO\r\ny=y+1; x=x+0; // Movimento in BASSO\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Ad ogni movimento, se annulliamo la coordinata opposta, questo ci permette di muovere il personaggio solo seguendo i TASTI DIREZIONALI, annullando così il movimento in DIAGONALE. L'oggetto <strong>Dog</strong> che sarà costruito sulla nostra <strong>BoardGame</strong> , si muoverà tramite l'implementazione della classe tramite <strong>ActionListener</strong> che si mette in ascolto in attessa che arrivi un INPUT (nel nostro caso la Tastiera).</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Effettuando brevi test, il cane viene comandato alla perfezione usando i tasti direzionali della tastiera. Ho limitato anche la fuoriuscita dell'oggetto da noi comandato, settando dei limiti sulle X e sulle Y (che massimo non può oltrepassare; i loro valori sono gli stessi delle dimensioni della window).</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\">Adesso andiamo a Riempire un pò il nostro giardinetto. Avevo pensato che se il lancio d'ossi avvenisse senza ostacoli, il gioco sarebbe stato troppo monotono, e molto molto facile. Sono riuscito ad aumentare la difficoltà pensando di piazzare nella nostra Board, alcuni ostacoli: Alberi e Rocce. Quindi ho creato due classi Apposite per i rispettivi ostacoli: la classe <strong>Tree</strong> e la Classe <strong>Stone. </strong>Questo è il risultato dopo l'implementazione delle due classi, dopo averle incorporate ovviamente nella nostra <strong>GameBoard:</strong></span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i50.tinypic.com/nzfwd2.png\" style=\"width: 517px; height: 354px;\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Ma come si implementa una cosa del genere?? beh il discorso è alquanto semplice, anche perchè mi sono diciamo anticipato per quanto riguarderà il discorso collisioni. Cosi' come sono fatte, il cane attraverserà ogni singolo oggetto sulla mappa. Per anticiparmi ho costruito una griglia 2d settando la posizione di tali oggetti (una volta spawnati ovviamente) a 1. Ecco il codice:</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">public class Tree \r\n{\r\n private int [] x;\r\n private int [] y;\r\n ...\r\n public Tree()\r\n { ...\r\n // la nostra GameBoard conterrà massimo 3 Alberi. \r\n // quindi creiamo due array\r\n // per il salvataggio delle loro coordinate\r\n x = new int [3];\r\n y = new int [3];\r\n \r\n // generiamo in maniera Random le coordinate dei nostri Alberi\r\n // e le salviamo negli array di appoggio\r\n for (int i=0 ; i<3 ; i++)\r\n { \r\n // restringiamo il campo di spawn perchè le immagini degli alberi\r\n // sono di dimensioni più grosse\r\n x [i] = 40 + (int)(Math.random()*430);\r\n y [i] = 40 + (int)(Math.random()*230);\r\n }\r\n }\r\n \r\n // ritorna la coordinata X dell'I esimo Albero\r\n public int getX(int i) \r\n {\r\n return x[i];\r\n }\r\n\r\n // ritorna la coorinata Y dell'I esimo Albero\r\n public int getY(int i) \r\n {\r\n return y[i];\r\n }\r\n \r\n // ritorna l'immagine dell' Albero\r\n public Image getImage() \r\n {\r\n return tree;\r\n }\r\n ...\r\n}\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Questo è in linea di massima la realizzazione del nostro ambiente di gioco. Ricordo che le soluzioni sono più di una, e per il momento ho implementato questo tipo di soluzione perchè la ritenevo più opportuna. Nulla a togliere che con l'avanzamento del gioco potrò variare lo spawn di oggetti per gestire meglio le collisioni, ma in linea di massima la logica è sempre la stessa.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Lo Spawn avviene all'interno della classe <strong>BoardGame</strong> nel metodo astratto <strong>paint:</strong></span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">// Spawn Random degli Alberi\r\n for (int i=0 ; i<3 ; i++) \r\n {\r\n int c=tree.getX(i);\r\n int d=tree.getY(i);\r\n // a questo punto disegnamo la figura nelle coordinate [c,d]\r\n ... \r\n }\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Noteremo che ad ogni avvio del gioco la posizione degli oggetti Varia grazie ai poteri della funzione <strong>random. </strong>Qualche esempio illustrativo:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" height=\"225\" src=\"http://i47.tinypic.com/51y69.png\" width=\"338\" /> <img alt=\"\" height=\"227\" src=\"http://i45.tinypic.com/4zukk9.png\" width=\"339\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Per oggi è tutto. Nel prossimo articolo cominciamo a descrivere le collisioni sugli ostacoli per evitare che il gli passi attraverso. Anticipiamo che L'idea principale è quella di creare una Griglia 2D, in modo da posizionare con l'etichetta "1" la posizione dell'oggetto. Quando il cane mentre cammina incontrerà nella sua posizione x,y il numero 1 esso dovrà fermarsi. Per il momento l'idea è questa. Nel prossimo articolo spiegheremo se questa soluzione è quella efficiente, in caso contrario vi elencherò una delle possibili soluzioni alle collisioni con oggetti.</span><br />\r\n </p>\r\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\r\n<p class=\"rtecenter\"><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\">1</a> - <a href=\"http://students.uniparthenope.it/?q=node/163\"> 2 </a> - <strong><a href=\"http://students.uniparthenope.it/?q=node/176\"><span style=\"color:#ff0000;\"> 3 </span></a></strong> - <a href=\"http://students.uniparthenope.it/?q=node/188\"> 4 </a> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6</a></span> <span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:7668:\"<h1 class=\"rtecenter\">\n <span style=\"font-family:tahoma,geneva,sans-serif;\">Bones | and | Dogs</span></h1>\n<h2 class=\"rtecenter\">\n <span style=\"font-family:tahoma,geneva,sans-serif;\"><span style=\"color: rgb(47, 79, 79);\">I Movimenti e gli Ostacoli</span></span></h2>\n<p> </p>\n<p class=\"rtejustify\"><span style=\"font-family:tahoma,geneva,sans-serif;\">Passiamo adesso col descrivervi in che modo il nostro protagonista di gioco si muoverà all\'interno della nostra window. Ho implementato i Movimenti all\'interno della classe <strong>Dog</strong> che ricordiamo aveva i frame del cane, comprese le animazioni, che vi mostro nell\'immagine sottostante:</span></p>\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i47.tinypic.com/2nb85na.png\" style=\"width: 200px; height: 200px;\" /></span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">All\'interno della classe ho implementato dei metodi tramite la <strong>java.awt.event</strong> che utilizzano la <strong>KeyEvent</strong> Con i quali fà cambiare FRAME del cane in base a cosa viene premuto. Ovviamente, siccome stiamo ragionando in termini di Coordinate (x,y), la posizione effettiva dell\'oggetto che contiene l\'immagine del cane, viene traslata di:</span></p>\n<pre>\n<span style=\"font-family:courier new,courier,monospace;\">x=x-1; y=y+0; // Movimento a SINISTRA\nx=x+1; y=y+0; // Movimento a DESTRA\ny=y-1; x=x+0; // Movimento in ALTO\ny=y+1; x=x+0; // Movimento in BASSO\n</span></pre><p><span style=\"font-family:tahoma,geneva,sans-serif;\">Ad ogni movimento, se annulliamo la coordinata opposta, questo ci permette di muovere il personaggio solo seguendo i TASTI DIREZIONALI, annullando così il movimento in DIAGONALE. L\'oggetto <strong>Dog</strong> che sarà costruito sulla nostra <strong>BoardGame</strong> , si muoverà tramite l\'implementazione della classe tramite <strong>ActionListener</strong> che si mette in ascolto in attessa che arrivi un INPUT (nel nostro caso la Tastiera).</span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Effettuando brevi test, il cane viene comandato alla perfezione usando i tasti direzionali della tastiera. Ho limitato anche la fuoriuscita dell\'oggetto da noi comandato, settando dei limiti sulle X e sulle Y (che massimo non può oltrepassare; i loro valori sono gli stessi delle dimensioni della window).</span></p>\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\">Adesso andiamo a Riempire un pò il nostro giardinetto. Avevo pensato che se il lancio d\'ossi avvenisse senza ostacoli, il gioco sarebbe stato troppo monotono, e molto molto facile. Sono riuscito ad aumentare la difficoltà pensando di piazzare nella nostra Board, alcuni ostacoli: Alberi e Rocce. Quindi ho creato due classi Apposite per i rispettivi ostacoli: la classe <strong>Tree</strong> e la Classe <strong>Stone. </strong>Questo è il risultato dopo l\'implementazione delle due classi, dopo averle incorporate ovviamente nella nostra <strong>GameBoard:</strong></span></p>\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i50.tinypic.com/nzfwd2.png\" style=\"width: 517px; height: 354px;\" /></span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Ma come si implementa una cosa del genere?? beh il discorso è alquanto semplice, anche perchè mi sono diciamo anticipato per quanto riguarderà il discorso collisioni. Cosi\' come sono fatte, il cane attraverserà ogni singolo oggetto sulla mappa. Per anticiparmi ho costruito una griglia 2d settando la posizione di tali oggetti (una volta spawnati ovviamente) a 1. Ecco il codice:</span></p>\n<pre>\n<span style=\"font-family:courier new,courier,monospace;\">public class Tree \n{\n private int [] x;\n private int [] y;\n ...\n public Tree()\n { ...\n // la nostra GameBoard conterrà massimo 3 Alberi. \n // quindi creiamo due array\n // per il salvataggio delle loro coordinate\n x = new int [3];\n y = new int [3];\n \n // generiamo in maniera Random le coordinate dei nostri Alberi\n // e le salviamo negli array di appoggio\n for (int i=0 ; i<3 ; i++)\n { \n // restringiamo il campo di spawn perchè le immagini degli alberi\n // sono di dimensioni più grosse\n x [i] = 40 + (int)(Math.random()*430);\n y [i] = 40 + (int)(Math.random()*230);\n }\n }\n \n // ritorna la coordinata X dell\'I esimo Albero\n public int getX(int i) \n {\n return x[i];\n }\n\n // ritorna la coorinata Y dell\'I esimo Albero\n public int getY(int i) \n {\n return y[i];\n }\n \n // ritorna l\'immagine dell\' Albero\n public Image getImage() \n {\n return tree;\n }\n ...\n}\n</span></pre><p><span style=\"font-family:tahoma,geneva,sans-serif;\">Questo è in linea di massima la realizzazione del nostro ambiente di gioco. Ricordo che le soluzioni sono più di una, e per il momento ho implementato questo tipo di soluzione perchè la ritenevo più opportuna. Nulla a togliere che con l\'avanzamento del gioco potrò variare lo spawn di oggetti per gestire meglio le collisioni, ma in linea di massima la logica è sempre la stessa.</span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Lo Spawn avviene all\'interno della classe <strong>BoardGame</strong> nel metodo astratto <strong>paint:</strong></span></p>\n<pre>\n<span style=\"font-family:courier new,courier,monospace;\">// Spawn Random degli Alberi\n for (int i=0 ; i<3 ; i++) \n {\n int c=tree.getX(i);\n int d=tree.getY(i);\n // a questo punto disegnamo la figura nelle coordinate [c,d]\n ... \n }\n</span></pre><p><span style=\"font-family:tahoma,geneva,sans-serif;\">Noteremo che ad ogni avvio del gioco la posizione degli oggetti Varia grazie ai poteri della funzione <strong>random. </strong>Qualche esempio illustrativo:</span></p>\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" height=\"225\" src=\"http://i47.tinypic.com/51y69.png\" width=\"338\" /><img alt=\"\" height=\"227\" src=\"http://i45.tinypic.com/4zukk9.png\" width=\"339\" /></span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Per oggi è tutto. Nel prossimo articolo cominciamo a descrivere le collisioni sugli ostacoli per evitare che il gli passi attraverso. Anticipiamo che L\'idea principale è quella di creare una Griglia 2D, in modo da posizionare con l\'etichetta \"1\" la posizione dell\'oggetto. Quando il cane mentre cammina incontrerà nella sua posizione x,y il numero 1 esso dovrà fermarsi. Per il momento l\'idea è questa. Nel prossimo articolo spiegheremo se questa soluzione è quella efficiente, in caso contrario vi elencherò una delle possibili soluzioni alle collisioni con oggetti.</span><br />\n </p>\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\n<p class=\"rtecenter\"><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\">1</a> - <a href=\"http://students.uniparthenope.it/?q=node/163\"> 2 </a> - <strong><a href=\"http://students.uniparthenope.it/?q=node/176\"><span style=\"color:#ff0000;\"> 3 </span></a></strong> - <a href=\"http://students.uniparthenope.it/?q=node/188\"> 4 </a> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6</a></span> <span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434821794,1),('field:node:177','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:2073:\"<h2>\r\n Presentazione:</h2>\r\n<p>Ecco (ancora in via di sviluppo) l'API REST di Trenitalia; recupera informazioni riguardo prezzi, tipo di treno ed orari per destinazioni desiderate.</p>\r\n<p>Ad ora è possibile testare l'API solo per alcune tratte (di solito <u>brevi</u> e <u>senza cambi</u>).</p>\r\n<p>Molto presto sarà disponibile l'API completa.</p>\r\n<hr />\r\n<h2>\r\n Esempio d'uso:</h2>\r\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width: 207px; \">\r\n <tbody>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n </td>\r\n <td style=\"width: 73px; \">\r\n Variabili GET</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Stazione di partenza</td>\r\n <td style=\"width: 73px; \">\r\n stazin</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Stazione di arrivo</td>\r\n <td style=\"width: 73px; \">\r\n stazout</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Giorno</td>\r\n <td style=\"width: 73px; \">\r\n datag</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Mese</td>\r\n <td style=\"width: 73px; \">\r\n datam</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Anno</td>\r\n <td style=\"width: 73px; \">\r\n dataa</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Ora</td>\r\n <td style=\"width: 73px; \">\r\n timsh</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Minuti</td>\r\n <td style=\"width: 73px; \">\r\n timsm</td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p class=\"rtecenter\" style=\"\"><a href=\"http://students.uniparthenope.it:19091/fs_trenitalia.json?stazin=Napoli&stazout=aversa&datag=18&datam=10&dataa=2012&timsh=16\">http://students.uniparthenope.it:19091/fs_trenitalia.json?stazin=Napoli&stazout=aversa&datag=18&datam=10&dataa=2012&timsh=1</a><a href=\"http://students.uniparthenope.it:19091/fs_trenitalia.json?stazin=Napoli&stazout=aversa&datag=18&datam=10&dataa=2012&timsh=16&timsm=52\">6&timsm=52</a></p>\r\n<hr />\r\n<p><strong><span style=\"color:#ff0000;\">WORK STILL IN PROGRESS</span></strong></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:1874:\"<h2>\n Presentazione:</h2>\n<p>Ecco (ancora in via di sviluppo) l\'API REST di Trenitalia; recupera informazioni riguardo prezzi, tipo di treno ed orari per destinazioni desiderate.</p>\n<p>Ad ora è possibile testare l\'API solo per alcune tratte (di solito <u>brevi</u> e <u>senza cambi</u>).</p>\n<p>Molto presto sarà disponibile l\'API completa.</p>\n<hr /><h2>\n Esempio d\'uso:</h2>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width: 207px; \"><tbody><tr><td style=\"width: 121px; \">\n </td>\n<td style=\"width: 73px; \">\n Variabili GET</td>\n</tr><tr><td style=\"width: 121px; \">\n Stazione di partenza</td>\n<td style=\"width: 73px; \">\n stazin</td>\n</tr><tr><td style=\"width: 121px; \">\n Stazione di arrivo</td>\n<td style=\"width: 73px; \">\n stazout</td>\n</tr><tr><td style=\"width: 121px; \">\n Giorno</td>\n<td style=\"width: 73px; \">\n datag</td>\n</tr><tr><td style=\"width: 121px; \">\n Mese</td>\n<td style=\"width: 73px; \">\n datam</td>\n</tr><tr><td style=\"width: 121px; \">\n Anno</td>\n<td style=\"width: 73px; \">\n dataa</td>\n</tr><tr><td style=\"width: 121px; \">\n Ora</td>\n<td style=\"width: 73px; \">\n timsh</td>\n</tr><tr><td style=\"width: 121px; \">\n Minuti</td>\n<td style=\"width: 73px; \">\n timsm</td>\n</tr></tbody></table><p class=\"rtecenter\" style=\"\"><a href=\"http://students.uniparthenope.it:19091/fs_trenitalia.json?stazin=Napoli&stazout=aversa&datag=18&datam=10&dataa=2012&timsh=16\">http://students.uniparthenope.it:19091/fs_trenitalia.json?stazin=Napoli&stazout=aversa&datag=18&datam=10&dataa=2012&timsh=1</a><a href=\"http://students.uniparthenope.it:19091/fs_trenitalia.json?stazin=Napoli&stazout=aversa&datag=18&datam=10&dataa=2012&timsh=16&timsm=52\">6&timsm=52</a></p>\n<hr /><p><strong><span style=\"color:#ff0000;\">WORK STILL IN PROGRESS</span></strong></p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434734838,1),('field:node:178','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:3305:\"<p>Salve a tutti! Scrivo questo tutorial per spiegare brevemente, a chi non lo so sapesse, come configurare Netbeans per effettuare il deployment automatico sul nostro spazio web, <em>Students .</em></p>\r\n<p>Il primo passo è, ovviamente, quello di avviare l' IDE Netbeans (<em>per questo tutorial mi baso sulla versione 7.2</em>).</p>\r\n<p>Come al solito ci troviamo davanti alla schermata di default, e clicchiamo sull' icona <em>Nuovo Progetto</em>.<br />\r\n Ora scegliamo la tipologia di applicazione che andremo a sviluppare (<em>io ho scelto PHP Application</em>)<strong><sup>1</sup></strong>.</p>\r\n<p> </p>\r\n<p>Impostiamo così come facciamo di solito, senza nessun particolare accorgimento.</p>\r\n<p><img alt=\"\" src=\"http://i46.tinypic.com/28stylu.png\" style=\"width: 700px; height: 400px; \" /></p>\r\n<p> </p>\r\n<p>Il passo successivo ci porterà alla schermata in cui dovremo decidere se utilizzare la nostra applicazione in locale o se vogliamo cambiare questa impostazione.</p>\r\n<p> </p>\r\n<p>Dobbiamo quindi passare da questa situazione</p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i47.tinypic.com/2ia6801.png\" style=\"width: 700px; height: 394px; \" /></p>\r\n<p> </p>\r\n<p>A questa di seguito, scegliendo l' opzione Run As <em>Remote Web Server</em> dalla dropdown list.<br />\r\n Possiamo anche decidere quando fare l' upload dei file, potendo scegliere tra <em>On Save</em>, <em>On Run </em>e <em>Manually</em>; a voi la scelta.</p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i47.tinypic.com/2jflwcw.png\" style=\"height: 394px; width: 700px; \" /></p>\r\n<p> </p>\r\n<p>Il prossimo passo da compiere è quello di cliccare sul tasto <em>Menage... </em>per impostare la connessione con il server (<em>nell' immagine appare già, avendola io precedentemente settata</em>)</p>\r\n<p> </p>\r\n<p>Apparirà una schemata, con dei campi che dobbiamo compilare.</p>\r\n<ul>\r\n <li>\r\n Inseriamo <em>students.uniparthenope.it</em> nel campo relativo all' <strong>Host Name</strong>;</li>\r\n <li>\r\n la <em>Matricola</em> nel campo <strong>Username</strong>;</li>\r\n <li>\r\n la nostra <em>Password</em> per l'accesso;</li>\r\n <li>\r\n impostiamo la <em>Initial Directory</em> che sarà <strong>/home/MATRICOLA/public_html</strong></li>\r\n</ul>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i49.tinypic.com/2dhtnc1.png\" style=\"height: 544px; width: 700px; \" /></p>\r\n<p> </p>\r\n<p>A questo punto clicchiamo su <em>Test Connection</em>; se verrà mostrato il messaggio di successo, clicchiamo su <em>OK</em> e iniziamo a sviluppare la nostra applicazione.</p>\r\n<p><br />\r\n Adesso, a seconda del metodo di upload scelto precedentemente, quando cliccheremo su <em>Salva </em>o su <em>Esegui</em> i nostri file saranno direttamente caricati sullo spazio <em>students.uniparthenope</em></p>\r\n<p>Per la versione PDF clicca <a href=\"http://box.uniparthenope.it/public.php?service=files&token=24ee301d57d5212c5991298c553fbdaf420dd18e&file=/NetBeans_students.pdf\">qui</a></p>\r\n<p> </p>\r\n<p><u><strong>Note:</strong></u></p>\r\n<p><u><strong>1. Il metodo descritto funziona senza problemi quando si sviluppa un' applicazione PHP. Non è lo stesso per le applicazioni Java</strong></u></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:3105:\"<p>Salve a tutti! Scrivo questo tutorial per spiegare brevemente, a chi non lo so sapesse, come configurare Netbeans per effettuare il deployment automatico sul nostro spazio web, <em>Students .</em></p>\n<p>Il primo passo è, ovviamente, quello di avviare l\' IDE Netbeans (<em>per questo tutorial mi baso sulla versione 7.2</em>).</p>\n<p>Come al solito ci troviamo davanti alla schermata di default, e clicchiamo sull\' icona <em>Nuovo Progetto</em>.<br />\n Ora scegliamo la tipologia di applicazione che andremo a sviluppare (<em>io ho scelto PHP Application</em>)<strong><sup>1</sup></strong>.</p>\n<p> </p>\n<p>Impostiamo così come facciamo di solito, senza nessun particolare accorgimento.</p>\n<p><img alt=\"\" src=\"http://i46.tinypic.com/28stylu.png\" style=\"width: 700px; height: 400px; \" /></p>\n<p> </p>\n<p>Il passo successivo ci porterà alla schermata in cui dovremo decidere se utilizzare la nostra applicazione in locale o se vogliamo cambiare questa impostazione.</p>\n<p> </p>\n<p>Dobbiamo quindi passare da questa situazione</p>\n<p> </p>\n<p><img alt=\"\" src=\"http://i47.tinypic.com/2ia6801.png\" style=\"width: 700px; height: 394px; \" /></p>\n<p> </p>\n<p>A questa di seguito, scegliendo l\' opzione Run As <em>Remote Web Server</em> dalla dropdown list.<br />\n Possiamo anche decidere quando fare l\' upload dei file, potendo scegliere tra <em>On Save</em>, <em>On Run </em>e <em>Manually</em>; a voi la scelta.</p>\n<p> </p>\n<p><img alt=\"\" src=\"http://i47.tinypic.com/2jflwcw.png\" style=\"height: 394px; width: 700px; \" /></p>\n<p> </p>\n<p>Il prossimo passo da compiere è quello di cliccare sul tasto <em>Menage... </em>per impostare la connessione con il server (<em>nell\' immagine appare già, avendola io precedentemente settata</em>)</p>\n<p> </p>\n<p>Apparirà una schemata, con dei campi che dobbiamo compilare.</p>\n<ul><li>\n Inseriamo <em>students.uniparthenope.it</em> nel campo relativo all\' <strong>Host Name</strong>;</li>\n<li>\n la <em>Matricola</em> nel campo <strong>Username</strong>;</li>\n<li>\n la nostra <em>Password</em> per l\'accesso;</li>\n<li>\n impostiamo la <em>Initial Directory</em> che sarà <strong>/home/MATRICOLA/public_html</strong></li>\n</ul><p> </p>\n<p><img alt=\"\" src=\"http://i49.tinypic.com/2dhtnc1.png\" style=\"height: 544px; width: 700px; \" /></p>\n<p> </p>\n<p>A questo punto clicchiamo su <em>Test Connection</em>; se verrà mostrato il messaggio di successo, clicchiamo su <em>OK</em> e iniziamo a sviluppare la nostra applicazione.</p>\n<p>\n Adesso, a seconda del metodo di upload scelto precedentemente, quando cliccheremo su <em>Salva </em>o su <em>Esegui</em> i nostri file saranno direttamente caricati sullo spazio <em>students.uniparthenope</em></p>\n<p>Per la versione PDF clicca <a href=\"http://box.uniparthenope.it/public.php?service=files&token=24ee301d57d5212c5991298c553fbdaf420dd18e&file=/NetBeans_students.pdf\">qui</a></p>\n<p> </p>\n<p><u><strong>Note:</strong></u></p>\n<p><u><strong>1. Il metodo descritto funziona senza problemi quando si sviluppa un\' applicazione PHP. Non è lo stesso per le applicazioni Java</strong></u></p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434729464,1),('field:node:179','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:53142:\"<p> </p>\r\n<p>Di seguito sono riportati alcuni esempi di php.</p>\r\n<p> </p>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>1.HELLO WORLD !!!</strong></div>\r\n<p> </p>\r\n<div>\r\n Semplice script PHP che invia il testo "HELLO WORLD !!!" al browser</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php //inizio</div>\r\n<div>\r\n //Uno script PHP inizia sempre con <? php e finisce con ? ></div>\r\n<div>\r\n echo "HELLO WORLD !!!"; //echo è l'istruzione utilizzata per visualizzare il testo. Si può usare anche print</div>\r\n<div>\r\n //fine</div>\r\n<div>\r\n ?> </div>\r\n<div>\r\n </div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>2. IF...ELSE</strong></div>\r\n<div>\r\n Il seguente esempio stampa in output il messaggio "Buon fine settimana!" se il giorno corrente è Venerdì,"Buona Domenica!!!" se il giorno corrente è Domenica, "Buona giornata!!!" se è un altro giorno:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n $d=date("D"); //una variabile in PHP inizia con il segno $ seguito dal nome della variabile</div>\r\n<div>\r\n if($d=="Fri")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Buon fine settimana!!!";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n elseif ($d=="Sun")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Buona Domenica!!!";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Buona giornata!!!";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>3. FILE</strong></div>\r\n<div>\r\n L'esempio seguente apre una file e lo legge riga per riga</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php </div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "Apro il file hello : "; </div>\r\n<div>\r\n //fopen("nome_file","modalità_apertura"), apre il file</div>\r\n<div>\r\n $file = fopen("hello.php","r") or exit("Impossibile aprire il file!");</div>\r\n<div>\r\n //fgetc legge il file carattere per carattere, feof fino alla fine del file</div>\r\n<div>\r\n //fgets legge il file riga per riga</div>\r\n<div>\r\n while(!feof($file));</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo fgets($file);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //chiusura file</div>\r\n<div>\r\n fclose($file);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file hello.php conterrà: </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n echo "Hello World";</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>4.FILE UPLOAD</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Il seguente esempio consente di caricare un file da un modulo e richiama uno script php che consente di stampare le info del file caricato</div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <form action="upload_file.php" method="post"</div>\r\n<div>\r\n option indica che i file saranno caricati in upload_file</div>\r\n<div>\r\n enctype="multipart/form-data"</div>\r\n<div>\r\n enctype specifica il tipo di contenuto da utilizzareper l'invio del modulo</div>\r\n<div>\r\n multipart/form-data viene utilizzato quando un modulo necessita di dati binari, come il contenuto di un file, da caricare</div>\r\n<div>\r\n ></div>\r\n<div>\r\n </div>\r\n<div>\r\n <label for="file">Filename:</label> </div>\r\n<div>\r\n </div>\r\n<div>\r\n <input type="file" name="file" id="file"/></div>\r\n<div>\r\n <br /></div>\r\n<div>\r\n <input type="submit" name="submit" value="Submit"/> </div>\r\n<div>\r\n </div>\r\n<div>\r\n </form></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file "upload_file.php" stampa le informazioni del file caricato, contiene: </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n if($_FILES["file"]["error"] > 0)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Error:" .$_FILES["file"]["error"]. "<br />";</div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro codice di errore del file caricato</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Upload: " . $_FILES["file"]["name"] . "<br />"; </div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro nome del file caricato</div>\r\n<div>\r\n echo "Type: " . $_FILES["file"]["type"] . "<br />";</div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro tipo del file caricato</div>\r\n<div>\r\n echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";</div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro dimensione in byte del file caricato</div>\r\n<div>\r\n echo "Stored in: " . $_FILES["file"]["tmp_name"];</div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro copia temporanea del file sul server</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>5.</strong></div>\r\n<div>\r\n Il seguente esempio consente di caricare un file da un modulo e richiama uno script php che consente di stampare le info del file caricato e stampa un messaggio d'errore nel caso in cui il file non rispetta le dimensioni richieste</div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <form action="upload_file2.php" method="post"</div>\r\n<div>\r\n option indica che i file saranno caricati in upload_file</div>\r\n<div>\r\n enctype="multipart/form-data"</div>\r\n<div>\r\n enctype specifica il tipo di contenuto da utilizzareper l'invio del modulo</div>\r\n<div>\r\n multipart/form-data viene utilizzato quando un modulo necessita di dati binari, come il contenuto di un file, da caricare</div>\r\n<div>\r\n ></div>\r\n<div>\r\n </div>\r\n<div>\r\n <label for="file">Filename:</label> </div>\r\n<div>\r\n </div>\r\n<div>\r\n <input type="file" name="file" id="file"/></div>\r\n<div>\r\n <br /></div>\r\n<div>\r\n <input type="submit" name="submit" value="Submit"/></div>\r\n<div>\r\n </div>\r\n<div>\r\n </form></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file upload_file2.php contiene :</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n $allowedExts = array("jpg", "jpeg", "gif", "png", "c");</div>\r\n<div>\r\n $extension = end(explode(".", $_FILES["file"]["name"]));</div>\r\n<div>\r\n //si possono caricare caricare gif,jpeg e png di dimensione inferiore a 20 kb.</div>\r\n<div>\r\n if ((($_FILES["file"]["type"] == "image/gif")</div>\r\n<div>\r\n || ($_FILES["file"]["type"] == "image/jpeg")</div>\r\n<div>\r\n || ($_FILES["file"]["type"] == "image/png")</div>\r\n<div>\r\n || ($_FILES["file"]["type"] == "image/pjpeg"))</div>\r\n<div>\r\n && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n if ($_FILES["file"]["error"] > 0)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Error: " . $_FILES["file"]["error"] . "<br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Upload: " . $_FILES["file"]["name"] . "<br />";</div>\r\n<div>\r\n echo "Type: " . $_FILES["file"]["type"] . "<br />";</div>\r\n<div>\r\n echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";</div>\r\n<div>\r\n echo "Stored in: " . $_FILES["file"]["tmp_name"];</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else //se il file non rispetta le dimensioni richieste verrà stampato il messaggio d'errore</div>\r\n<div>\r\n {</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "Upload: " . $_FILES["file"]["name"] . "<br />";</div>\r\n<div>\r\n echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";</div>\r\n<div>\r\n echo "Errore file! " ;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>6. COOKIES</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Un cookie è un file che il server incorpora sul computer dell'utente.</div>\r\n<div>\r\n L'esempio seguente mostra due modi per recuperare il valore di un cookie.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //setcookie () imposta un cookie.</div>\r\n<div>\r\n setcookie("user", "Roberta Scarpato", time()+3600);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n // Recupero coockies</div>\r\n<div>\r\n echo "Primo modo recupero coockies : <br />";</div>\r\n<div>\r\n echo $_COOKIE["user"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "<br /> Secondo modo recupero coockies : <br />";</div>\r\n<div>\r\n //isset verifica se il coockies è stato impostato </div>\r\n<div>\r\n if (isset($_COOKIE["user"]))</div>\r\n<div>\r\n //in caso affermativo stamapa: </div>\r\n<div>\r\n echo "Benvenuto -> " . $_COOKIE["user"] . "!<br />";</div>\r\n<div>\r\n else</div>\r\n<div>\r\n echo "Welcome guest!<br />";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //eliminazione coockies</div>\r\n<div>\r\n //setcookie("user", "", time()-3600);</div>\r\n<div>\r\n </div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>7. SESSIONI</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Una sessione PHP consente di memorizzare le informazioni dell'utente sul server per l'utilizzo successivo </div>\r\n<div>\r\n </div>\r\n<div>\r\n L'esempio seguente,conta le volte che una pagina viene visualizzata. Se "views" è stato impostato, è possibile incrementare il contatore. Se "views" non esiste, creiamo una variabile "views":</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //avvia una sessione</div>\r\n<div>\r\n session_start();</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n //si utilizza una variabile PHP $_SESSION per recuperare le variabili di sessione</div>\r\n<div>\r\n </div>\r\n<div>\r\n //isset controlla se il valore della variabile $_SESSION['views'] è già impostato</div>\r\n<div>\r\n </div>\r\n<div>\r\n if(isset($_SESSION['views']))</div>\r\n<div>\r\n //in caso affermativo vuol dire che non è la prima visita dell'utente e quindi la variabile viene incrementata</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $_SESSION['views']=$_SESSION['views']+1;</div>\r\n<div>\r\n //unset libera la variabile</div>\r\n<div>\r\n //unset($_SESSION['views']);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else //altrimenti la si imposta alla prima visita</div>\r\n<div>\r\n $_SESSION['views']=1;</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "Valore Views=". $_SESSION['views'];</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //Stampa la variabile views</div>\r\n<div>\r\n echo "<br /> Visita numero =". $_SESSION['views'];</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n ?></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //ripristina la sessione e si perdono tutti i dati della sessione </div>\r\n<div>\r\n //session_destroy();</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>8. E-MAIL</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n In PHP è possibile inviare messaggi di posta elettronica all'interno di uno script,con la funzione mail().</div>\r\n<div>\r\n L'esempio seguente invia un messaggio di testo a un determinato indirizzo e-mail controllando se il campo e-mail nel modulo è valido.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n // funzione che controlla il campo e-mail nel modulo:</div>\r\n<div>\r\n function controlla($field)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //filter_var() funzione che analizza l'e-mail</div>\r\n<div>\r\n //FILTER_SANITIZE_EMAIL rimuove tutti i caratteri illegali all'interno dell'indirizzo</div>\r\n<div>\r\n $field=filter_var($field, FILTER_SANITIZE_EMAIL);</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n if(filter_var($field, FILTER_VALIDATE_EMAIL))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n // se l'email è corretta ritorna true altrimenti false</div>\r\n<div>\r\n return TRUE;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n return FALSE;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //isset controlla se il campo email è già stato impostato</div>\r\n<div>\r\n if (isset($_REQUEST['email']))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n </div>\r\n<div>\r\n //in caso affermativo procede controllando se l'indirizzo è valido invocando la funzione controlla</div>\r\n<div>\r\n //request ritorna il valore di una variabile</div>\r\n<div>\r\n $bool = controlla($_REQUEST['email']);</div>\r\n<div>\r\n if ($bool==FALSE)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //in caso negativo si ha un messaggio d'errore</div>\r\n<div>\r\n echo "Invalid input";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {//altrimenti si invia l'email assegnadno i valori per parametri della funzione mail()</div>\r\n<div>\r\n $email = $_REQUEST['email'] ;</div>\r\n<div>\r\n $subject = $_REQUEST['subject'] ;</div>\r\n<div>\r\n $message = $_REQUEST['message'] ;</div>\r\n<div>\r\n //mail consente di inviare mail specificando indirizzo dest, oggetto e messaggio</div>\r\n<div>\r\n mail("nome.cognome@studenti.uniparthenope.it", "Subject: $subject",$message,"From: $email" );</div>\r\n<div>\r\n echo "Mail inviata! <br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {//in caso negativo si compilano i campi</div>\r\n<div>\r\n echo "</div>\r\n<div>\r\n <form method='post' action='mailform.php'></div>\r\n<div>\r\n Email: <input name='email' type='text' /><br /></div>\r\n<div>\r\n Subject: <input name='subject' type='text' /><br /></div>\r\n<div>\r\n Message:<br /></div>\r\n<div>\r\n <textarea name='message' rows='15' cols='40'></div>\r\n<div>\r\n </textarea><br /></div>\r\n<div>\r\n <input type='submit' /></div>\r\n<div>\r\n </form>";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>9. GESTIONE DEGLI ERRORI</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n L'esempio seguente consente di rilevare un errore e inviare una e-mail con un messaggio di errore,terminando lo script se si verifica un errore specifico</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //funzione per gestire degli errori,parametri: livello di errore e messaggio d'errore</div>\r\n<div>\r\n function errori($errno, $errstr)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "<b>Error:</b> [$errno] $errstr<br />"; //stampa il messaggio d'errore </div>\r\n<div>\r\n echo "Webmaster has been notified"; //viene inviata una mail per informare dell'errore</div>\r\n<div>\r\n //error_log ()invia l' errore in un file specificato o una destinazione</div>\r\n<div>\r\n error_log("Error: [$errno] $errstr",1,</div>\r\n<div>\r\n "indirizzo@prova.com","From: indirizzo2@prova.com");</div>\r\n<div>\r\n die();//dichiarazione d'errore</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //gestore errori che ha come parametro la funzione creata eil livello d'errore, E_USER_WARNING avverte la presenza di un errore. L'esecuzione dello script non viene interrotta</div>\r\n<div>\r\n set_error_handler("errori",E_USER_WARNING);</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n //testiamo la variabile test, se il valore è >1 si genera un errore</div>\r\n<div>\r\n $test=2;</div>\r\n<div>\r\n if ($test>1)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //attivazione errore con trigger_error,il messaggio rappresenterà il messaggio d'errore, sarà quindi il contenuto di errstr</div>\r\n<div>\r\n trigger_error("Valore errato! il valore deve essere 1 o minore! ",E_USER_WARNING);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>10.ECCEZIONI</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Un'eccezione è un errore particolare che si può verificare durante l'esecuzione di un codice.</div>\r\n<div>\r\n La gestione delle eccezioni modifica il normale flusso di esecuzione in seguito a un'eccezione.</div>\r\n<div>\r\n L'esepio seguente mostra come gestire le eccezioni.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //classe eccez che estende exception ereditando quindi tutti i metodi </div>\r\n<div>\r\n class eccez extends Exception</div>\r\n<div>\r\n {</div>\r\n<div>\r\n public function messaggio()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //assegna a msg il messaggio d'errore</div>\r\n<div>\r\n $msg = $this->getMessage().' Indirizzo e-mail non valido.';</div>\r\n<div>\r\n return $msg;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n $email = "indirizzo@prova.com";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Il blocco "try" contiene un blocco "try" per permettere di nuovo l'eccezione</div>\r\n<div>\r\n try</div>\r\n<div>\r\n {</div>\r\n<div>\r\n try</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //strpos controlla se nella stringa email c'è la parola example</div>\r\n<div>\r\n if(strpos($email, "example") !== FALSE)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //in caso affermatibo viene attivata l'eccezione</div>\r\n<div>\r\n throw new Exception($email);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n catch(Exception $e)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //Il blocco "catch" intercetta l'eccezione e ri-genera un oggetto eccez</div>\r\n<div>\r\n throw new eccez($email);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n catch (eccez $e) //viene catturata l'eccezione e si genera il messaggio </div>\r\n<div>\r\n {</div>\r\n<div>\r\n //display custom message</div>\r\n<div>\r\n echo $e->messaggio();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>11. FILTRI</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Un filtro PHP è utilizzato per verificare,validare e filtrare l'input dell'utente o dati personalizzati.</div>\r\n<div>\r\n L'esempio seguente verifica se i dati immessi dall'utente sono corretti.</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n <form method="get" ></div>\r\n<div>\r\n Name: <input type="text" name="name"/></div>\r\n<div>\r\n Age: <input type="text" name="age" /></div>\r\n<div>\r\n E-mail: <input type="text" name="email"/></div>\r\n<div>\r\n <input type="submit" //pulsante /> </div>\r\n<div>\r\n </div>\r\n<div>\r\n </form> </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //Un filtro PHP è utilizzato per controllare i dati provenienti da fonti non sicure.</div>\r\n<div>\r\n //per evitare di chiamare le funzioni filter_var o filter_input più volte, si utilizza la filter_var_array o le funzioni filter_input_array.</div>\r\n<div>\r\n </div>\r\n<div>\r\n $filters = array(</div>\r\n<div>\r\n //Imposta un array contenente il nome di variabili di input ed i filtri utilizzati per le variabili di input specificate</div>\r\n<div>\r\n "name" => array("filter"=>FILTER_SANITIZE_STRING), //verifica sela stringa è valida</div>\r\n<div>\r\n "age" => array("filter"=>FILTER_VALIDATE_INT,"options"=>array("min_range"=>1,"max_range"=>120)), //verifica se il valore intero è valido e seè compreso nel range</div>\r\n<div>\r\n "email"=> FILTER_VALIDATE_EMAIL); //verifica se l'email è corretta</div>\r\n<div>\r\n </div>\r\n<div>\r\n $result = filter_input_array(INPUT_GET, $filters); //filtra più variabili con gli stessi filtri o filtri diversi</div>\r\n<div>\r\n </div>\r\n<div>\r\n //se l'età è errata stampa un messaggio d'errore</div>\r\n<div>\r\n if (!$result["age"])</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo("Errore età. L'età deve essere compresa tra 1 e 120!<br />");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n //se l'email è errata stampa un messaggio d'errore</div>\r\n<div>\r\n elseif(!$result["email"])</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo("E-Mail non valida.<br />");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n //se la stringa è errata stampa un messaggio d'errore</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo("Dati utente validi!");</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>12. MYSQL</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n MySQL è un database,i cui dati vengono memorizzati in oggetti chiamate tabelle.Una tabella consiste di righe e colonne.</div>\r\n<div>\r\n L'esempio seguente mostra come creare un database e le rispettive tabelle.</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //per accedere ai dati di un database, è necessario creare una connessione al database.In PHP, questo è fatto con la funzione mysql_connect () che memorizza il collegamento in una variabile ($ con) e chiede come parametri:servername Specifica il server a cui connettersi,nome utente Specifica il nome utente per effettuare il login, password Consente di specificare la password per effettuare il login </div>\r\n<div>\r\n </div>\r\n<div>\r\n $con = mysql_connect("localhost","robertina","123");</div>\r\n<div>\r\n if (!$con)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //viene eseguito se la connessione fallisce</div>\r\n<div>\r\n die('Could not connect: ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n // CREATE DATABASE viene utilizzata per creare un database in MySQL. viene creato il database my_db</div>\r\n<div>\r\n if (mysql_query("CREATE DATABASE my_db",$con))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Database created";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Error creating database: " . mysql_error();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n //Un database deve essere selezionato prima che una tabella viene creata. Il database viene selezionato con la funzione mysql_select_db () </div>\r\n<div>\r\n mysql_select_db("my_db", $con);</div>\r\n<div>\r\n </div>\r\n<div>\r\n // L'istruzione CREATE TABLE viene utilizzato per creare una tabella in MySQL</div>\r\n<div>\r\n //imposta il campo personID come il campo chiave primaria,NOT NULL specifica he non deve essere nullo. il campo chiave primaria è usato con l'impostazione AUTO_INCREMENT.</div>\r\n<div>\r\n $sql = "CREATE TABLE Persone </div>\r\n<div>\r\n (</div>\r\n<div>\r\n </div>\r\n<div>\r\n personID int NOT NULL AUTO_INCREMENT, </div>\r\n<div>\r\n PRIMARY KEY(personID),</div>\r\n<div>\r\n Nome varchar(15),</div>\r\n<div>\r\n Cognome varchar(15),</div>\r\n<div>\r\n Età int</div>\r\n<div>\r\n )";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //esegue la query</div>\r\n<div>\r\n mysql_query($sql,$con);</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n // chiude la connessione</div>\r\n<div>\r\n mysql_close($con);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>13.</strong></div>\r\n<div>\r\n é possibile inserire i dati in un database prelevandoli da un form.</div>\r\n<div>\r\n L'esempio seguente crea un modulo HTML che può essere utilizzato per aggiungere nuovi record alla tabella "Persone".</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <form action="insert.php" method="post"</div>\r\n<div>\r\n si connete a un file insert.php che effettua una connessione a un database e recupera i dati inseriti nel form per memorizzarli nel database ></div>\r\n<div>\r\n Nome: <input type="text" name="nome" /></div>\r\n<div>\r\n Cognome: <input type="text" name="cognome" /></div>\r\n<div>\r\n Età: <input type="text" name="età" /></div>\r\n<div>\r\n <input type="submit" /></div>\r\n<div>\r\n </form></div>\r\n<div>\r\n </div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n La pagina insert.php conterrà: </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n $con = mysql_connect("localhost","robertina","1234");</div>\r\n<div>\r\n if (!$con)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n die('Could not connect: ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n mysql_select_db("my_db", $con);</div>\r\n<div>\r\n </div>\r\n<div>\r\n //questo file si connette a un database e recupera i valori dal form con le variabili PHP $ _POST.la funzione mysql_query () esegue l'istruzione INSERT INTO,usata per aggiungere nuovi record a una tabella di database, e un nuovo record viene aggiunto alla tabella "Persone".</div>\r\n<div>\r\n </div>\r\n<div>\r\n $sql="INSERT INTO Persone (Nome, Cognome, Età)VALUES('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (!mysql_query($sql,$con))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n die('Error: ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n //mysql_query ora seleziona tutti i dati memorizzati nella tabella "Persone" </div>\r\n<div>\r\n // * seleziona tutti i dati della tabella):</div>\r\n<div>\r\n $result = mysql_query("SELECT * FROM Persone");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //visualizza i dati in una tabella HTML</div>\r\n<div>\r\n echo "<table border='1'></div>\r\n<div>\r\n <tr></div>\r\n<div>\r\n <th>Nome</th></div>\r\n<div>\r\n <th>Cognome</th></div>\r\n<div>\r\n </tr>";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //mysql_fetch_array () restituisce la prima riga dal recordset come una matrice. Ogni chiamata a mysql_fetch_array () restituisce la riga successiva nel recordset. Il ciclo while scorre tutti i record del recordset. Per stampare il valore di ogni riga, si usa la variabile PHP $ row ($ row ['Nome'] e $ row ['Cognome']).</div>\r\n<div>\r\n </div>\r\n<div>\r\n while($row = mysql_fetch_array($result))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "<tr>";</div>\r\n<div>\r\n echo "<td>" . $row['Nome'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Cognome'] . "</td>";</div>\r\n<div>\r\n echo "</tr>";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "</table>";</div>\r\n<div>\r\n mysql_close($con);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>14.</strong></div>\r\n<div>\r\n L'esempio seguente mostra come aggiornare i valori in un database.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //crea connessione</div>\r\n<div>\r\n $con = mysql_connect("localhost","robertina","123");</div>\r\n<div>\r\n if (!$con)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n die('Errore connessione : ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //selezione database</div>\r\n<div>\r\n mysql_select_db("my_db", $con);</div>\r\n<div>\r\n </div>\r\n<div>\r\n //update aggiorna i campi di una tabella con nuovi valori</div>\r\n<div>\r\n //in qst caso aggiorna l'età nel record che ha come nome e cognome quelli indicati</div>\r\n<div>\r\n mysql_query("UPDATE Persone SET Età=23 WHERE Nome='roberta' AND Cognome='Scarpato'");</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n //selezione tutte i campi dalla tabella persone e le stampa ordinandole per età</div>\r\n<div>\r\n $result = mysql_query("SELECT * FROM Persone ORDER BY età");</div>\r\n<div>\r\n </div>\r\n<div>\r\n while($row = mysql_fetch_array($result))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo $row['Nome'];</div>\r\n<div>\r\n echo " " . $row['Cognome'];</div>\r\n<div>\r\n echo " " . $row['Età'];</div>\r\n<div>\r\n echo "<br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //cancella il record con il cognome indicato</div>\r\n<div>\r\n mysql_query("DELETE FROM Persone WHERE Cognome='Scarpato'");</div>\r\n<div>\r\n mysql_close($con);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>15. ODBC</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Una connessione ODBC consente di connettersi a qualsiasi database, su qualsiasi computer della rete, fino a quando una connessione ODBC è disponibile.</div>\r\n<div>\r\n L'esempio seguente mostra come creare una connessione al database, un set di risultati e visualizzare i dati in una tabella HTML.</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Con una connessione ODBC, è possibile connettersi a qualsiasi database fino a quando la connessione è disponibile.</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Si crea una connessione a un DSN denominato northwind, senza nome utente e nessuna password.</div>\r\n<div>\r\n $conn=odbc_connect('northwind','','');</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (!$conn)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n exit("Connessione Fallita: " . $conn);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n // Si crea un SQL prendendo tutti i campi da una tabella</div>\r\n<div>\r\n $sql="SELECT * FROM customers";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //odbc_exec () viene utilizzata per eseguire un'istruzione SQL</div>\r\n<div>\r\n $results=odbc_exec($conn,$sql);</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (!$results)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n exit("Error in SQL");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //stampa</div>\r\n<div>\r\n echo "<table><tr>";</div>\r\n<div>\r\n echo "<th>Companyname</th>";</div>\r\n<div>\r\n echo "<th>Contactname</th></tr>";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //odbc_fetch_row restituisce i record dal memorizzati in results. restituisce true se è in grado di restituire le righe, altrimenti false.Prende come parametri l'identificatore di risultato ODBC e un numero di riga (opzionale)</div>\r\n<div>\r\n </div>\r\n<div>\r\n while (odbc_fetch_row($results))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //dbc_result () legge i campi di un record. Prende due parametri: l'identificatore di risultato ODBC e un numero o un nome di campo.</div>\r\n<div>\r\n $compname=odbc_result($results,"CompanyName");</div>\r\n<div>\r\n $conname=odbc_result($results,"ContactName");</div>\r\n<div>\r\n echo "<tr><td>$compname</td>";</div>\r\n<div>\r\n echo "<td>$conname</td></tr>";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //chiude la connessione</div>\r\n<div>\r\n odbc_close($conn);</div>\r\n<div>\r\n echo "</table>";</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>16.XML PARSER EXPA</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Un file XML descrive la struttura dei dati.</div>\r\n<div>\r\n L'esempio seguente inizializza il parser XML in PHP, definisce alcuni gestori e analizzare il file XML.</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n </div>\r\n<div>\r\n //inizializzazione parser</div>\r\n<div>\r\n $parser=xml_parser_create();</div>\r\n<div>\r\n </div>\r\n<div>\r\n //funzione da usare con i tag di apertura</div>\r\n<div>\r\n function start($parser,$element_name,$element_attrs)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n switch($element_name)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n case "NOTE":</div>\r\n<div>\r\n echo "-- Note --<br />";</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n case "TO":</div>\r\n<div>\r\n echo "To: ";</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n case "FROM":</div>\r\n<div>\r\n echo "From: ";</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n case "HEADING":</div>\r\n<div>\r\n echo "Heading: ";</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n case "BODY":</div>\r\n<div>\r\n echo "Message: ";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //funzione da usare con i tag di chiusura</div>\r\n<div>\r\n function stop($parser,$element_name)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "<br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //funzione da usare con i caratteri di tipo data</div>\r\n<div>\r\n function char($parser,$data)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo $data;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //specificare la funzione da eseguire quando il parser incontra i tag di apertura e di chiusura</div>\r\n<div>\r\n xml_set_element_handler($parser,"start","stop");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //specifica quale funzione verrà eseguito quando il parser incontra dati di tipo carattere</div>\r\n<div>\r\n xml_set_character_data_handler($parser,"char");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //apre il file </div>\r\n<div>\r\n $fp=fopen("test.xml","r");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Dom è un'interfaccia standard per l'accesso e la manipolazione di documenti HTML e XML</div>\r\n<div>\r\n //crea nuovo documento Dom</div>\r\n<div>\r\n $xmlDoc = new DOMDocument();</div>\r\n<div>\r\n $xmlDoc->load("test.xml");</div>\r\n<div>\r\n </div>\r\n<div>\r\n print $xmlDoc->saveXML();</div>\r\n<div>\r\n </div>\r\n<div>\r\n //legge</div>\r\n<div>\r\n while ($data=fread($fp,4096))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //Analizza il file "test.xml" con la funzione xml_parse ()</div>\r\n<div>\r\n //in caso di errore richiama xml_error_string per convertire l'errore in stringa, xml_get_error_code restituisce il codice di errore,xml_get_current_line_number restituisce la linea dell'eerrore</div>\r\n<div>\r\n xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d",xml_error_string(xml_get_error_code($parser)),xml_get_current_line_number($parser)));</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //libera la memoria allocata</div>\r\n<div>\r\n xml_parser_free($parser);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file test.xml contiene:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?xml version="1.0" encoding="ISO-8859-1"?></div>\r\n<div>\r\n <note></div>\r\n<div>\r\n <to>Antonio</to></div>\r\n<div>\r\n <from>Roberta</from></div>\r\n<div>\r\n <heading>Promemoria</heading></div>\r\n<div>\r\n <body>Ci vediamo stasera!</body></div>\r\n<div>\r\n </note></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>17. SIMPLE XML</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Consente di ottenere gli attributi di un elemento e il testo.</div>\r\n<div>\r\n L'esempio seguente mostra come restituire i nomi degli elementi e dei dati dal file test.xml.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n </div>\r\n<div>\r\n //carica il file</div>\r\n<div>\r\n $xml = simplexml_load_file("test.xml");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Ottiene il nome del primo elemento </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n echo $xml->getName() . "<br />";</div>\r\n<div>\r\n //Creare un ciclo che si innesca su ogni nodo figlio, con la funzione children()</div>\r\n<div>\r\n foreach($xml->children() as $child)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //Output il nome dell'elemento e dati per ciascun nodo figlio</div>\r\n<div>\r\n echo $child->getName() . ": " . $child . "<br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file "test.xml" contiene:</div>\r\n<div>\r\n <note><to>Antonio</to><from>Roberta</from><heading>Promemoria</heading><body>Ci vediamo stasera!</body></note></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>18. AJAX</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n AJAX è una tecnica per la creazione veloce di pagine Web.Consente di aggiornare parti di una pagina web, senza ricaricare l'intera pagina.</div>\r\n<div>\r\n L'esempio seguente mostra come una pagina web comunica con un server web.</div>\r\n<div>\r\n Quando un utente digita un carattere nel campo di input, viene eseguita la funzione il "ShowHint ()" che viene attivata dall'evento "onkeyup".</div>\r\n<div>\r\n Pagina html:</div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <head></div>\r\n<div>\r\n <script></div>\r\n<div>\r\n //questa funzione è attivata dall'evento onkeyup</div>\r\n<div>\r\n function showHint(str)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //se il campo str.lenght è vuoto, viene cancellato il contenuto di txtHint e si esce dalla funzione</div>\r\n<div>\r\n if (str.length==0)</div>\r\n<div>\r\n { </div>\r\n<div>\r\n document.getElementById("txtHint").innerHTML="";</div>\r\n<div>\r\n return;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //altrimenti si crea un oggetto XMLHttpRequest,usato per trasferire XML o altri dati da e a un web server</div>\r\n<div>\r\n if (window.XMLHttpRequest)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n // per IE7, Firefox, Chrome, Opera, Safari</div>\r\n<div>\r\n xmlhttp=new XMLHttpRequest();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {// per IE6, IE5</div>\r\n<div>\r\n xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n xmlhttp.onreadystatechange=function() //onreadystatechange Gestore dell'evento lanciato ad ogni cambiamento di stato.</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //readyState Restituisce lo stato corrente dell'istanza di XMLHttpRequest:0 = non inizializzato, 1 = aperto, 2 = richiesta inviata, 3 = risposta in ricezione e 4 = risposta ricevuta.</div>\r\n<div>\r\n //status Restituisce il codice HTTP restituito dal server </div>\r\n<div>\r\n if (xmlhttp.readyState==4 && xmlhttp.status==200)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //responseText Restituisce la risposta del server in formato stringa e l'assegna a txtHint</div>\r\n<div>\r\n document.getElementById("txtHint").innerHTML=xmlhttp.responseText;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //open Specifica il metodo, l'URL e altri parametri opzionali per la richiesta.GET è utilizzato quando si richiedono dati.il secondo parametro è l'url,il terzo specifica se la richiesta deve essere gestita in modo asincrono oppure no ,true" significa che lo script può proseguire l'elaborazione senza aspettare la risposta dopo il metodo send()</div>\r\n<div>\r\n </div>\r\n<div>\r\n xmlhttp.open("GET","ajax.php?q="+str,true);</div>\r\n<div>\r\n xmlhttp.send(); //invia la richiesta a un server</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </script></div>\r\n<div>\r\n </head></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <p><b>Start typing a name in the input field below:</b></p></div>\r\n<div>\r\n <form> </div>\r\n<div>\r\n First name: <input type="text" onkeyup="showHint(this.value)" size="20" /></div>\r\n<div>\r\n </form></div>\r\n<div>\r\n <p>Suggestions: <span id="txtHint"></span></p></div>\r\n<div>\r\n </div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n Il codice sorgente di "ajax.php" controlla una serie di nomi, e restituisce il nome, corrispondente al carattere inserito, al browser:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n // ontrolla una serie di nomi, e restituisce il nome corrispondente (s) al browser:</div>\r\n<div>\r\n $a[]="Anna";</div>\r\n<div>\r\n $a[]="Brittany";</div>\r\n<div>\r\n $a[]="Cinderella";</div>\r\n<div>\r\n $a[]="Diana";</div>\r\n<div>\r\n $a[]="Eva";</div>\r\n<div>\r\n $a[]="Fiona";</div>\r\n<div>\r\n $a[]="Gunda";</div>\r\n<div>\r\n $a[]="Hege";</div>\r\n<div>\r\n $a[]="Inga";</div>\r\n<div>\r\n $a[]="Johanna";</div>\r\n<div>\r\n $a[]="Kitty";</div>\r\n<div>\r\n $a[]="Linda";</div>\r\n<div>\r\n $a[]="Nina";</div>\r\n<div>\r\n $a[]="Ophelia";</div>\r\n<div>\r\n $a[]="Petunia";</div>\r\n<div>\r\n $a[]="Amanda";</div>\r\n<div>\r\n $a[]="Raquel";</div>\r\n<div>\r\n $a[]="Cindy";</div>\r\n<div>\r\n $a[]="Doris";</div>\r\n<div>\r\n $a[]="Eve";</div>\r\n<div>\r\n $a[]="Evita";</div>\r\n<div>\r\n $a[]="Sunniva";</div>\r\n<div>\r\n $a[]="Tove";</div>\r\n<div>\r\n $a[]="Unni";</div>\r\n<div>\r\n $a[]="Violet";</div>\r\n<div>\r\n $a[]="Liza";</div>\r\n<div>\r\n $a[]="Elizabeth";</div>\r\n<div>\r\n $a[]="Ellen";</div>\r\n<div>\r\n $a[]="Wenche";</div>\r\n<div>\r\n $a[]="Vicky";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //in q è memorizzato il carattere scritto dall'utente</div>\r\n<div>\r\n $q=$_GET["q"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n //se la lunghezza di q è>0 cerca un nome corrispondente ai caratteri inseriti</div>\r\n<div>\r\n if (strlen($q) > 0)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //hint è la stringa di risposta</div>\r\n<div>\r\n $hint="";</div>\r\n<div>\r\n //cerca</div>\r\n<div>\r\n for($i=0; $i<count($a); $i++)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //controlla i caratteri delle stringhe presenti nell'array e lo assegna alla stringa di risposta</div>\r\n<div>\r\n if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n if ($hint=="")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $hint=$a[$i];</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $hint=$hint." , ".$a[$i];</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n // se non è stato trovato nessun carattere uguale si stampa il messaggio ""nessun suggerimento, altrimentiviene visualizzato il nome cercato</div>\r\n<div>\r\n if ($hint == "")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $response="Nessun suggerimento";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $response=$hint;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //output the response</div>\r\n<div>\r\n echo $response;</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>19.</strong></div>\r\n<div>\r\n L'esempio seguente mostra come una pagina web può scaricare informazioni da un database con AJAX</div>\r\n<div>\r\n Pagina Html:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <head></div>\r\n<div>\r\n <script></div>\r\n<div>\r\n /*quando un utente seleziona un nome nell'elenco a tendina , la funzione showUserviene eseguita. La funzione viene attivata dall'evento onchange*/</div>\r\n<div>\r\n function showUser(str)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n if (str=="")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n document.getElementById("txtHint").innerHTML="";</div>\r\n<div>\r\n return;</div>\r\n<div>\r\n } </div>\r\n<div>\r\n if (window.XMLHttpRequest)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xmlhttp=new XMLHttpRequest();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n xmlhttp.onreadystatechange=function()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n if (xmlhttp.readyState==4 && xmlhttp.status==200)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n document.getElementById("txtHint").innerHTML=xmlhttp.responseText;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n xmlhttp.open("GET","ajax2.php?q="+str,true);</div>\r\n<div>\r\n xmlhttp.send();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </script></div>\r\n<div>\r\n </head></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <form></div>\r\n<div>\r\n <select name="users" onchange="showUser(this.value)"</div>\r\n<div>\r\n ></div>\r\n<div>\r\n <option value="">Select a person:</option></div>\r\n<div>\r\n <option value="1">Homer Simpson</option></div>\r\n<div>\r\n <option value="2">Marge Simpson</option></div>\r\n<div>\r\n <option value="3">Zio Paperone</option></div>\r\n<div>\r\n <option value="4">Pippo Pluto</option></div>\r\n<div>\r\n </select></div>\r\n<div>\r\n </form></div>\r\n<div>\r\n <br /></div>\r\n<div>\r\n <div id="txtHint"><b>Informazioni persona.</b></div></div>\r\n<div>\r\n </div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Il codice sorgente in "ajax2.php" esegue una query su un database MySQL, e restituisce il risultato in una tabella HTML:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n $q=$_GET["q"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n //crea connessione al database</div>\r\n<div>\r\n $con = mysql_connect('localhost', '', '');</div>\r\n<div>\r\n if (!$con)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n die('Errore connessione ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n //seleziona il database</div>\r\n<div>\r\n mysql_select_db("ajax_demo", $con);</div>\r\n<div>\r\n //seleziona tutti i record</div>\r\n<div>\r\n $sql="SELECT * FROM user WHERE id = '".$q."'";</div>\r\n<div>\r\n </div>\r\n<div>\r\n $result = mysql_query($sql);</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "<table border='1'></div>\r\n<div>\r\n <tr></div>\r\n<div>\r\n <th>Nome</th></div>\r\n<div>\r\n <th>Cognome</th></div>\r\n<div>\r\n <th>Età</th></div>\r\n<div>\r\n <th>Città</th></div>\r\n<div>\r\n <th>Lavoro</th></div>\r\n<div>\r\n </tr>";</div>\r\n<div>\r\n //mysql_fetch_array restituisce una riga da un recordset come array o come matrice</div>\r\n<div>\r\n while($row = mysql_fetch_array($result))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "<tr>";</div>\r\n<div>\r\n echo "<td>" . $row['Nomr'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Cognome'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Età'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Città'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Lavoro'] . "</td>";</div>\r\n<div>\r\n echo "</tr>";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n echo "</table>";</div>\r\n<div>\r\n //chiusura connessione</div>\r\n<div>\r\n mysql_close($con);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:43979:\"<p> </p>\n<p>Di seguito sono riportati alcuni esempi di php.</p>\n<p> </p>\n<div>\n </div>\n<div>\n <strong>1.HELLO WORLD !!!</strong></div>\n<p> </p>\n<div>\n Semplice script PHP che invia il testo \"HELLO WORLD !!!\" al browser</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <html></div>\n<div>\n <body></div>\n<div>\n </div>\n<div>\n <?php //inizio</div>\n<div>\n //Uno script PHP inizia sempre con <? php e finisce con ? ></div>\n<div>\n echo \"HELLO WORLD !!!\"; //echo è l\'istruzione utilizzata per visualizzare il testo. Si può usare anche print</div>\n<div>\n //fine</div>\n<div>\n ?> </div>\n<div>\n </div>\n<div>\n </html></div>\n<div>\n </body></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>2. IF...ELSE</strong></div>\n<div>\n Il seguente esempio stampa in output il messaggio \"Buon fine settimana!\" se il giorno corrente è Venerdì,\"Buona Domenica!!!\" se il giorno corrente è Domenica, \"Buona giornata!!!\" se è un altro giorno:</div>\n<div>\n </div>\n<div>\n <html></div>\n<div>\n <body></div>\n<div>\n <?php</div>\n<div>\n $d=date(\"D\"); //una variabile in PHP inizia con il segno $ seguito dal nome della variabile</div>\n<div>\n if($d==\"Fri\")</div>\n<div>\n {</div>\n<div>\n echo \"Buon fine settimana!!!\";</div>\n<div>\n }</div>\n<div>\n elseif ($d==\"Sun\")</div>\n<div>\n {</div>\n<div>\n echo \"Buona Domenica!!!\";</div>\n<div>\n }</div>\n<div>\n else</div>\n<div>\n {</div>\n<div>\n echo \"Buona giornata!!!\";</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n ?></div>\n<div>\n </body></div>\n<div>\n </html></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>3. FILE</strong></div>\n<div>\n L\'esempio seguente apre una file e lo legge riga per riga</div>\n<div>\n </div>\n<div>\n <?php </div>\n<div>\n </div>\n<div>\n echo \"Apro il file hello : \"; </div>\n<div>\n //fopen(\"nome_file\",\"modalità_apertura\"), apre il file</div>\n<div>\n $file = fopen(\"hello.php\",\"r\") or exit(\"Impossibile aprire il file!\");</div>\n<div>\n //fgetc legge il file carattere per carattere, feof fino alla fine del file</div>\n<div>\n //fgets legge il file riga per riga</div>\n<div>\n while(!feof($file));</div>\n<div>\n {</div>\n<div>\n echo fgets($file);</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //chiusura file</div>\n<div>\n fclose($file);</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n Il file hello.php conterrà: </div>\n<div>\n </div>\n<div>\n <html></div>\n<div>\n <body></div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n echo \"Hello World\";</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n </body></div>\n<div>\n </html></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>4.FILE UPLOAD</strong></div>\n<div>\n </div>\n<div>\n Il seguente esempio consente di caricare un file da un modulo e richiama uno script php che consente di stampare le info del file caricato</div>\n<div>\n </div>\n<div>\n <html></div>\n<div>\n <body></div>\n<div>\n </div>\n<div>\n <form action=\"upload_file.php\" method=\"post\"</div>\n<div>\n option indica che i file saranno caricati in upload_file</div>\n<div>\n enctype=\"multipart/form-data\"</div>\n<div>\n enctype specifica il tipo di contenuto da utilizzareper l\'invio del modulo</div>\n<div>\n multipart/form-data viene utilizzato quando un modulo necessita di dati binari, come il contenuto di un file, da caricare</div>\n<div>\n ></div>\n<div>\n </div>\n<div>\n <label for=\"file\">Filename:</label> </div>\n<div>\n </div>\n<div>\n <input type=\"file\" name=\"file\" id=\"file\"/></div>\n<div>\n <br /></div>\n<div>\n <input type=\"submit\" name=\"submit\" value=\"Submit\"/> </div>\n<div>\n </div>\n<div>\n </form></div>\n<div>\n </html></div>\n<div>\n </body></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n Il file \"upload_file.php\" stampa le informazioni del file caricato, contiene: </div>\n<div>\n </div>\n<div>\n <html></div>\n<div>\n <body></div>\n<div>\n <?php</div>\n<div>\n if($_FILES[\"file\"][\"error\"] > 0)</div>\n<div>\n {</div>\n<div>\n echo \"Error:\" .$_FILES[\"file\"][\"error\"]. \"<br />\";</div>\n<div>\n //1° parametro= nome di input del form, 2° parametro codice di errore del file caricato</div>\n<div>\n }</div>\n<div>\n else</div>\n<div>\n {</div>\n<div>\n echo \"Upload: \" . $_FILES[\"file\"][\"name\"] . \"<br />\"; </div>\n<div>\n //1° parametro= nome di input del form, 2° parametro nome del file caricato</div>\n<div>\n echo \"Type: \" . $_FILES[\"file\"][\"type\"] . \"<br />\";</div>\n<div>\n //1° parametro= nome di input del form, 2° parametro tipo del file caricato</div>\n<div>\n echo \"Size: \" . ($_FILES[\"file\"][\"size\"] / 1024) . \" Kb<br />\";</div>\n<div>\n //1° parametro= nome di input del form, 2° parametro dimensione in byte del file caricato</div>\n<div>\n echo \"Stored in: \" . $_FILES[\"file\"][\"tmp_name\"];</div>\n<div>\n //1° parametro= nome di input del form, 2° parametro copia temporanea del file sul server</div>\n<div>\n }</div>\n<div>\n ?></div>\n<div>\n </html></div>\n<div>\n </body></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>5.</strong></div>\n<div>\n Il seguente esempio consente di caricare un file da un modulo e richiama uno script php che consente di stampare le info del file caricato e stampa un messaggio d\'errore nel caso in cui il file non rispetta le dimensioni richieste</div>\n<div>\n </div>\n<div>\n <html></div>\n<div>\n <body></div>\n<div>\n </div>\n<div>\n <form action=\"upload_file2.php\" method=\"post\"</div>\n<div>\n option indica che i file saranno caricati in upload_file</div>\n<div>\n enctype=\"multipart/form-data\"</div>\n<div>\n enctype specifica il tipo di contenuto da utilizzareper l\'invio del modulo</div>\n<div>\n multipart/form-data viene utilizzato quando un modulo necessita di dati binari, come il contenuto di un file, da caricare</div>\n<div>\n ></div>\n<div>\n </div>\n<div>\n <label for=\"file\">Filename:</label> </div>\n<div>\n </div>\n<div>\n <input type=\"file\" name=\"file\" id=\"file\"/></div>\n<div>\n <br /></div>\n<div>\n <input type=\"submit\" name=\"submit\" value=\"Submit\"/></div>\n<div>\n </div>\n<div>\n </form></div>\n<div>\n </html></div>\n<div>\n </body></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n Il file upload_file2.php contiene :</div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n $allowedExts = array(\"jpg\", \"jpeg\", \"gif\", \"png\", \"c\");</div>\n<div>\n $extension = end(explode(\".\", $_FILES[\"file\"][\"name\"]));</div>\n<div>\n //si possono caricare caricare gif,jpeg e png di dimensione inferiore a 20 kb.</div>\n<div>\n if ((($_FILES[\"file\"][\"type\"] == \"image/gif\")</div>\n<div>\n || ($_FILES[\"file\"][\"type\"] == \"image/jpeg\")</div>\n<div>\n || ($_FILES[\"file\"][\"type\"] == \"image/png\")</div>\n<div>\n || ($_FILES[\"file\"][\"type\"] == \"image/pjpeg\"))</div>\n<div>\n && ($_FILES[\"file\"][\"size\"] < 20000) && in_array($extension, $allowedExts))</div>\n<div>\n {</div>\n<div>\n if ($_FILES[\"file\"][\"error\"] > 0)</div>\n<div>\n {</div>\n<div>\n echo \"Error: \" . $_FILES[\"file\"][\"error\"] . \"<br />\";</div>\n<div>\n }</div>\n<div>\n else</div>\n<div>\n {</div>\n<div>\n echo \"Upload: \" . $_FILES[\"file\"][\"name\"] . \"<br />\";</div>\n<div>\n echo \"Type: \" . $_FILES[\"file\"][\"type\"] . \"<br />\";</div>\n<div>\n echo \"Size: \" . ($_FILES[\"file\"][\"size\"] / 1024) . \" Kb<br />\";</div>\n<div>\n echo \"Stored in: \" . $_FILES[\"file\"][\"tmp_name\"];</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n else //se il file non rispetta le dimensioni richieste verrà stampato il messaggio d\'errore</div>\n<div>\n {</div>\n<div>\n </div>\n<div>\n echo \"Upload: \" . $_FILES[\"file\"][\"name\"] . \"<br />\";</div>\n<div>\n echo \"Size: \" . ($_FILES[\"file\"][\"size\"] / 1024) . \" Kb<br />\";</div>\n<div>\n echo \"Errore file! \" ;</div>\n<div>\n }</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>6. COOKIES</strong></div>\n<div>\n </div>\n<div>\n Un cookie è un file che il server incorpora sul computer dell\'utente.</div>\n<div>\n L\'esempio seguente mostra due modi per recuperare il valore di un cookie.</div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n //setcookie () imposta un cookie.</div>\n<div>\n setcookie(\"user\", \"Roberta Scarpato\", time()+3600);</div>\n<div>\n ?></div>\n<div>\n <?php</div>\n<div>\n // Recupero coockies</div>\n<div>\n echo \"Primo modo recupero coockies : <br />\";</div>\n<div>\n echo $_COOKIE[\"user\"];</div>\n<div>\n </div>\n<div>\n echo \"<br /> Secondo modo recupero coockies : <br />\";</div>\n<div>\n //isset verifica se il coockies è stato impostato </div>\n<div>\n if (isset($_COOKIE[\"user\"]))</div>\n<div>\n //in caso affermativo stamapa: </div>\n<div>\n echo \"Benvenuto -> \" . $_COOKIE[\"user\"] . \"!<br />\";</div>\n<div>\n else</div>\n<div>\n echo \"Welcome guest!<br />\";</div>\n<div>\n </div>\n<div>\n //eliminazione coockies</div>\n<div>\n //setcookie(\"user\", \"\", time()-3600);</div>\n<div>\n </div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>7. SESSIONI</strong></div>\n<div>\n </div>\n<div>\n Una sessione PHP consente di memorizzare le informazioni dell\'utente sul server per l\'utilizzo successivo </div>\n<div>\n </div>\n<div>\n L\'esempio seguente,conta le volte che una pagina viene visualizzata. Se \"views\" è stato impostato, è possibile incrementare il contatore. Se \"views\" non esiste, creiamo una variabile \"views\":</div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n //avvia una sessione</div>\n<div>\n session_start();</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n //si utilizza una variabile PHP $_SESSION per recuperare le variabili di sessione</div>\n<div>\n </div>\n<div>\n //isset controlla se il valore della variabile $_SESSION[\'views\'] è già impostato</div>\n<div>\n </div>\n<div>\n if(isset($_SESSION[\'views\']))</div>\n<div>\n //in caso affermativo vuol dire che non è la prima visita dell\'utente e quindi la variabile viene incrementata</div>\n<div>\n {</div>\n<div>\n $_SESSION[\'views\']=$_SESSION[\'views\']+1;</div>\n<div>\n //unset libera la variabile</div>\n<div>\n //unset($_SESSION[\'views\']);</div>\n<div>\n }</div>\n<div>\n else //altrimenti la si imposta alla prima visita</div>\n<div>\n $_SESSION[\'views\']=1;</div>\n<div>\n </div>\n<div>\n echo \"Valore Views=\". $_SESSION[\'views\'];</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n <html></div>\n<div>\n <body></div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n //Stampa la variabile views</div>\n<div>\n echo \"<br /> Visita numero =\". $_SESSION[\'views\'];</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n ?></div>\n<div>\n <?php</div>\n<div>\n //ripristina la sessione e si perdono tutti i dati della sessione </div>\n<div>\n //session_destroy();</div>\n<div>\n ?></div>\n<div>\n </body></div>\n<div>\n </html></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>8. E-MAIL</strong></div>\n<div>\n </div>\n<div>\n In PHP è possibile inviare messaggi di posta elettronica all\'interno di uno script,con la funzione mail().</div>\n<div>\n L\'esempio seguente invia un messaggio di testo a un determinato indirizzo e-mail controllando se il campo e-mail nel modulo è valido.</div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n // funzione che controlla il campo e-mail nel modulo:</div>\n<div>\n function controlla($field)</div>\n<div>\n {</div>\n<div>\n //filter_var() funzione che analizza l\'e-mail</div>\n<div>\n //FILTER_SANITIZE_EMAIL rimuove tutti i caratteri illegali all\'interno dell\'indirizzo</div>\n<div>\n $field=filter_var($field, FILTER_SANITIZE_EMAIL);</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n if(filter_var($field, FILTER_VALIDATE_EMAIL))</div>\n<div>\n {</div>\n<div>\n // se l\'email è corretta ritorna true altrimenti false</div>\n<div>\n return TRUE;</div>\n<div>\n }</div>\n<div>\n else</div>\n<div>\n {</div>\n<div>\n return FALSE;</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //isset controlla se il campo email è già stato impostato</div>\n<div>\n if (isset($_REQUEST[\'email\']))</div>\n<div>\n {</div>\n<div>\n </div>\n<div>\n //in caso affermativo procede controllando se l\'indirizzo è valido invocando la funzione controlla</div>\n<div>\n //request ritorna il valore di una variabile</div>\n<div>\n $bool = controlla($_REQUEST[\'email\']);</div>\n<div>\n if ($bool==FALSE)</div>\n<div>\n {</div>\n<div>\n //in caso negativo si ha un messaggio d\'errore</div>\n<div>\n echo \"Invalid input\";</div>\n<div>\n }</div>\n<div>\n else</div>\n<div>\n {//altrimenti si invia l\'email assegnadno i valori per parametri della funzione mail()</div>\n<div>\n $email = $_REQUEST[\'email\'] ;</div>\n<div>\n $subject = $_REQUEST[\'subject\'] ;</div>\n<div>\n $message = $_REQUEST[\'message\'] ;</div>\n<div>\n //mail consente di inviare mail specificando indirizzo dest, oggetto e messaggio</div>\n<div>\n mail(\"<a href=\"mailto:nome.cognome@studenti.uniparthenope.it\">nome.cognome@studenti.uniparthenope.it</a>\", \"Subject: $subject\",$message,\"From: $email\" );</div>\n<div>\n echo \"Mail inviata! <br />\";</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n else</div>\n<div>\n {//in caso negativo si compilano i campi</div>\n<div>\n echo \"</div>\n<div>\n <form method=\'post\' action=\'mailform.php\'></div>\n<div>\n Email: <input name=\'email\' type=\'text\' /><br /></div>\n<div>\n Subject: <input name=\'subject\' type=\'text\' /><br /></div>\n<div>\n Message:<br /></div>\n<div>\n <textarea name=\'message\' rows=\'15\' cols=\'40\'></div>\n<div>\n </textarea><br /></div>\n<div>\n <input type=\'submit\' /></div>\n<div>\n </form>\";</div>\n<div>\n }</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>9. GESTIONE DEGLI ERRORI</strong></div>\n<div>\n </div>\n<div>\n L\'esempio seguente consente di rilevare un errore e inviare una e-mail con un messaggio di errore,terminando lo script se si verifica un errore specifico</div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n //funzione per gestire degli errori,parametri: livello di errore e messaggio d\'errore</div>\n<div>\n function errori($errno, $errstr)</div>\n<div>\n {</div>\n<div>\n echo \"<b>Error:</b> [$errno] $errstr<br />\"; //stampa il messaggio d\'errore </div>\n<div>\n echo \"Webmaster has been notified\"; //viene inviata una mail per informare dell\'errore</div>\n<div>\n //error_log ()invia l\' errore in un file specificato o una destinazione</div>\n<div>\n error_log(\"Error: [$errno] $errstr\",1,</div>\n<div>\n \"<a href=\"mailto:indirizzo@prova.com\">indirizzo@prova.com</a>\",\"From: <a href=\"mailto:indirizzo2@prova.com\">indirizzo2@prova.com</a>\");</div>\n<div>\n die();//dichiarazione d\'errore</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //gestore errori che ha come parametro la funzione creata eil livello d\'errore, E_USER_WARNING avverte la presenza di un errore. L\'esecuzione dello script non viene interrotta</div>\n<div>\n set_error_handler(\"errori\",E_USER_WARNING);</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n //testiamo la variabile test, se il valore è >1 si genera un errore</div>\n<div>\n $test=2;</div>\n<div>\n if ($test>1)</div>\n<div>\n {</div>\n<div>\n //attivazione errore con trigger_error,il messaggio rappresenterà il messaggio d\'errore, sarà quindi il contenuto di errstr</div>\n<div>\n trigger_error(\"Valore errato! il valore deve essere 1 o minore! \",E_USER_WARNING);</div>\n<div>\n }</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>10.ECCEZIONI</strong></div>\n<div>\n </div>\n<div>\n Un\'eccezione è un errore particolare che si può verificare durante l\'esecuzione di un codice.</div>\n<div>\n La gestione delle eccezioni modifica il normale flusso di esecuzione in seguito a un\'eccezione.</div>\n<div>\n L\'esepio seguente mostra come gestire le eccezioni.</div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n //classe eccez che estende exception ereditando quindi tutti i metodi </div>\n<div>\n class eccez extends Exception</div>\n<div>\n {</div>\n<div>\n public function messaggio()</div>\n<div>\n {</div>\n<div>\n //assegna a msg il messaggio d\'errore</div>\n<div>\n $msg = $this->getMessage().\' Indirizzo e-mail non valido.\';</div>\n<div>\n return $msg;</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n $email = \"<a href=\"mailto:indirizzo@prova.com\">indirizzo@prova.com</a>\";</div>\n<div>\n </div>\n<div>\n //Il blocco \"try\" contiene un blocco \"try\" per permettere di nuovo l\'eccezione</div>\n<div>\n try</div>\n<div>\n {</div>\n<div>\n try</div>\n<div>\n {</div>\n<div>\n //strpos controlla se nella stringa email c\'è la parola example</div>\n<div>\n if(strpos($email, \"example\") !== FALSE)</div>\n<div>\n {</div>\n<div>\n //in caso affermatibo viene attivata l\'eccezione</div>\n<div>\n throw new Exception($email);</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n catch(Exception $e)</div>\n<div>\n {</div>\n<div>\n //Il blocco \"catch\" intercetta l\'eccezione e ri-genera un oggetto eccez</div>\n<div>\n throw new eccez($email);</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n catch (eccez $e) //viene catturata l\'eccezione e si genera il messaggio </div>\n<div>\n {</div>\n<div>\n //display custom message</div>\n<div>\n echo $e->messaggio();</div>\n<div>\n }</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>11. FILTRI</strong></div>\n<div>\n </div>\n<div>\n Un filtro PHP è utilizzato per verificare,validare e filtrare l\'input dell\'utente o dati personalizzati.</div>\n<div>\n L\'esempio seguente verifica se i dati immessi dall\'utente sono corretti.</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <html></div>\n<div>\n <body></div>\n<div>\n <form method=\"get\" ></div>\n<div>\n Name: <input type=\"text\" name=\"name\"/></div>\n<div>\n Age: <input type=\"text\" name=\"age\" /></div>\n<div>\n E-mail: <input type=\"text\" name=\"email\"/></div>\n<div>\n <input type=\"submit\" //pulsante /> </div>\n<div>\n </div>\n<div>\n </form> </div>\n<div>\n <?php</div>\n<div>\n //Un filtro PHP è utilizzato per controllare i dati provenienti da fonti non sicure.</div>\n<div>\n //per evitare di chiamare le funzioni filter_var o filter_input più volte, si utilizza la filter_var_array o le funzioni filter_input_array.</div>\n<div>\n </div>\n<div>\n $filters = array(</div>\n<div>\n //Imposta un array contenente il nome di variabili di input ed i filtri utilizzati per le variabili di input specificate</div>\n<div>\n \"name\" => array(\"filter\"=>FILTER_SANITIZE_STRING), //verifica sela stringa è valida</div>\n<div>\n \"age\" => array(\"filter\"=>FILTER_VALIDATE_INT,\"options\"=>array(\"min_range\"=>1,\"max_range\"=>120)), //verifica se il valore intero è valido e seè compreso nel range</div>\n<div>\n \"email\"=> FILTER_VALIDATE_EMAIL); //verifica se l\'email è corretta</div>\n<div>\n </div>\n<div>\n $result = filter_input_array(INPUT_GET, $filters); //filtra più variabili con gli stessi filtri o filtri diversi</div>\n<div>\n </div>\n<div>\n //se l\'età è errata stampa un messaggio d\'errore</div>\n<div>\n if (!$result[\"age\"])</div>\n<div>\n {</div>\n<div>\n echo(\"Errore età. L\'età deve essere compresa tra 1 e 120!<br />\");</div>\n<div>\n }</div>\n<div>\n //se l\'email è errata stampa un messaggio d\'errore</div>\n<div>\n elseif(!$result[\"email\"])</div>\n<div>\n {</div>\n<div>\n echo(\"E-Mail non valida.<br />\");</div>\n<div>\n }</div>\n<div>\n //se la stringa è errata stampa un messaggio d\'errore</div>\n<div>\n else</div>\n<div>\n {</div>\n<div>\n echo(\"Dati utente validi!\");</div>\n<div>\n </div>\n<div>\n }</div>\n<div>\n ?></div>\n<div>\n </html></div>\n<div>\n </body></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>12. MYSQL</strong></div>\n<div>\n </div>\n<div>\n MySQL è un database,i cui dati vengono memorizzati in oggetti chiamate tabelle.Una tabella consiste di righe e colonne.</div>\n<div>\n L\'esempio seguente mostra come creare un database e le rispettive tabelle.</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n //per accedere ai dati di un database, è necessario creare una connessione al database.In PHP, questo è fatto con la funzione mysql_connect () che memorizza il collegamento in una variabile ($ con) e chiede come parametri:servername Specifica il server a cui connettersi,nome utente Specifica il nome utente per effettuare il login, password Consente di specificare la password per effettuare il login </div>\n<div>\n </div>\n<div>\n $con = mysql_connect(\"localhost\",\"robertina\",\"123\");</div>\n<div>\n if (!$con)</div>\n<div>\n {</div>\n<div>\n //viene eseguito se la connessione fallisce</div>\n<div>\n die(\'Could not connect: \' . mysql_error());</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n // CREATE DATABASE viene utilizzata per creare un database in MySQL. viene creato il database my_db</div>\n<div>\n if (mysql_query(\"CREATE DATABASE my_db\",$con))</div>\n<div>\n {</div>\n<div>\n echo \"Database created\";</div>\n<div>\n }</div>\n<div>\n else</div>\n<div>\n {</div>\n<div>\n echo \"Error creating database: \" . mysql_error();</div>\n<div>\n }</div>\n<div>\n //Un database deve essere selezionato prima che una tabella viene creata. Il database viene selezionato con la funzione mysql_select_db () </div>\n<div>\n mysql_select_db(\"my_db\", $con);</div>\n<div>\n </div>\n<div>\n // L\'istruzione CREATE TABLE viene utilizzato per creare una tabella in MySQL</div>\n<div>\n //imposta il campo personID come il campo chiave primaria,NOT NULL specifica he non deve essere nullo. il campo chiave primaria è usato con l\'impostazione AUTO_INCREMENT.</div>\n<div>\n $sql = \"CREATE TABLE Persone </div>\n<div>\n (</div>\n<div>\n </div>\n<div>\n personID int NOT NULL AUTO_INCREMENT, </div>\n<div>\n PRIMARY KEY(personID),</div>\n<div>\n Nome varchar(15),</div>\n<div>\n Cognome varchar(15),</div>\n<div>\n Età int</div>\n<div>\n )\";</div>\n<div>\n </div>\n<div>\n //esegue la query</div>\n<div>\n mysql_query($sql,$con);</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n // chiude la connessione</div>\n<div>\n mysql_close($con);</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n <strong>13.</strong></div>\n<div>\n é possibile inserire i dati in un database prelevandoli da un form.</div>\n<div>\n L\'esempio seguente crea un modulo HTML che può essere utilizzato per aggiungere nuovi record alla tabella \"Persone\".</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <html></div>\n<div>\n <body></div>\n<div>\n </div>\n<div>\n <form action=\"insert.php\" method=\"post\"</div>\n<div>\n si connete a un file insert.php che effettua una connessione a un database e recupera i dati inseriti nel form per memorizzarli nel database ></div>\n<div>\n Nome: <input type=\"text\" name=\"nome\" /></div>\n<div>\n Cognome: <input type=\"text\" name=\"cognome\" /></div>\n<div>\n Età: <input type=\"text\" name=\"età\" /></div>\n<div>\n <input type=\"submit\" /></div>\n<div>\n </form></div>\n<div>\n </div>\n<div>\n </body></div>\n<div>\n </html></div>\n<div>\n </div>\n<div>\n La pagina insert.php conterrà: </div>\n<div>\n </div>\n<div>\n <html></div>\n<div>\n <body></div>\n<div>\n <?php</div>\n<div>\n $con = mysql_connect(\"localhost\",\"robertina\",\"1234\");</div>\n<div>\n if (!$con)</div>\n<div>\n {</div>\n<div>\n die(\'Could not connect: \' . mysql_error());</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n mysql_select_db(\"my_db\", $con);</div>\n<div>\n </div>\n<div>\n //questo file si connette a un database e recupera i valori dal form con le variabili PHP $ _POST.la funzione mysql_query () esegue l\'istruzione INSERT INTO,usata per aggiungere nuovi record a una tabella di database, e un nuovo record viene aggiunto alla tabella \"Persone\".</div>\n<div>\n </div>\n<div>\n $sql=\"INSERT INTO Persone (Nome, Cognome, Età)VALUES(\'$_POST[firstname]\',\'$_POST[lastname]\',\'$_POST[age]\')\";</div>\n<div>\n </div>\n<div>\n if (!mysql_query($sql,$con))</div>\n<div>\n {</div>\n<div>\n die(\'Error: \' . mysql_error());</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n //mysql_query ora seleziona tutti i dati memorizzati nella tabella \"Persone\" </div>\n<div>\n // * seleziona tutti i dati della tabella):</div>\n<div>\n $result = mysql_query(\"SELECT * FROM Persone\");</div>\n<div>\n </div>\n<div>\n //visualizza i dati in una tabella HTML</div>\n<div>\n echo \"<table border=\'1\'></div>\n<div>\n <tr></div>\n<div>\n <th>Nome</th></div>\n<div>\n <th>Cognome</th></div>\n<div>\n </tr>\";</div>\n<div>\n </div>\n<div>\n //mysql_fetch_array () restituisce la prima riga dal recordset come una matrice. Ogni chiamata a mysql_fetch_array () restituisce la riga successiva nel recordset. Il ciclo while scorre tutti i record del recordset. Per stampare il valore di ogni riga, si usa la variabile PHP $ row ($ row [\'Nome\'] e $ row [\'Cognome\']).</div>\n<div>\n </div>\n<div>\n while($row = mysql_fetch_array($result))</div>\n<div>\n {</div>\n<div>\n echo \"<tr>\";</div>\n<div>\n echo \"<td>\" . $row[\'Nome\'] . \"</td>\";</div>\n<div>\n echo \"<td>\" . $row[\'Cognome\'] . \"</td>\";</div>\n<div>\n echo \"</tr>\";</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n echo \"</table>\";</div>\n<div>\n mysql_close($con);</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n </html></div>\n<div>\n </body></div>\n<div>\n </div>\n<div>\n <strong>14.</strong></div>\n<div>\n L\'esempio seguente mostra come aggiornare i valori in un database.</div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n //crea connessione</div>\n<div>\n $con = mysql_connect(\"localhost\",\"robertina\",\"123\");</div>\n<div>\n if (!$con)</div>\n<div>\n {</div>\n<div>\n die(\'Errore connessione : \' . mysql_error());</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //selezione database</div>\n<div>\n mysql_select_db(\"my_db\", $con);</div>\n<div>\n </div>\n<div>\n //update aggiorna i campi di una tabella con nuovi valori</div>\n<div>\n //in qst caso aggiorna l\'età nel record che ha come nome e cognome quelli indicati</div>\n<div>\n mysql_query(\"UPDATE Persone SET Età=23 WHERE Nome=\'roberta\' AND Cognome=\'Scarpato\'\");</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n //selezione tutte i campi dalla tabella persone e le stampa ordinandole per età</div>\n<div>\n $result = mysql_query(\"SELECT * FROM Persone ORDER BY età\");</div>\n<div>\n </div>\n<div>\n while($row = mysql_fetch_array($result))</div>\n<div>\n {</div>\n<div>\n echo $row[\'Nome\'];</div>\n<div>\n echo \" \" . $row[\'Cognome\'];</div>\n<div>\n echo \" \" . $row[\'Età\'];</div>\n<div>\n echo \"<br />\";</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //cancella il record con il cognome indicato</div>\n<div>\n mysql_query(\"DELETE FROM Persone WHERE Cognome=\'Scarpato\'\");</div>\n<div>\n mysql_close($con);</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>15. ODBC</strong></div>\n<div>\n </div>\n<div>\n Una connessione ODBC consente di connettersi a qualsiasi database, su qualsiasi computer della rete, fino a quando una connessione ODBC è disponibile.</div>\n<div>\n L\'esempio seguente mostra come creare una connessione al database, un set di risultati e visualizzare i dati in una tabella HTML.</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n </div>\n<div>\n //Con una connessione ODBC, è possibile connettersi a qualsiasi database fino a quando la connessione è disponibile.</div>\n<div>\n </div>\n<div>\n //Si crea una connessione a un DSN denominato northwind, senza nome utente e nessuna password.</div>\n<div>\n $conn=odbc_connect(\'northwind\',\'\',\'\');</div>\n<div>\n </div>\n<div>\n if (!$conn)</div>\n<div>\n {</div>\n<div>\n exit(\"Connessione Fallita: \" . $conn);</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n // Si crea un SQL prendendo tutti i campi da una tabella</div>\n<div>\n $sql=\"SELECT * FROM customers\";</div>\n<div>\n </div>\n<div>\n //odbc_exec () viene utilizzata per eseguire un\'istruzione SQL</div>\n<div>\n $results=odbc_exec($conn,$sql);</div>\n<div>\n </div>\n<div>\n if (!$results)</div>\n<div>\n {</div>\n<div>\n exit(\"Error in SQL\");</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //stampa</div>\n<div>\n echo \"<table><tr>\";</div>\n<div>\n echo \"<th>Companyname</th>\";</div>\n<div>\n echo \"<th>Contactname</th></tr>\";</div>\n<div>\n </div>\n<div>\n //odbc_fetch_row restituisce i record dal memorizzati in results. restituisce true se è in grado di restituire le righe, altrimenti false.Prende come parametri l\'identificatore di risultato ODBC e un numero di riga (opzionale)</div>\n<div>\n </div>\n<div>\n while (odbc_fetch_row($results))</div>\n<div>\n {</div>\n<div>\n //dbc_result () legge i campi di un record. Prende due parametri: l\'identificatore di risultato ODBC e un numero o un nome di campo.</div>\n<div>\n $compname=odbc_result($results,\"CompanyName\");</div>\n<div>\n $conname=odbc_result($results,\"ContactName\");</div>\n<div>\n echo \"<tr><td>$compname</td>\";</div>\n<div>\n echo \"<td>$conname</td></tr>\";</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //chiude la connessione</div>\n<div>\n odbc_close($conn);</div>\n<div>\n echo \"</table>\";</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>16.XML PARSER EXPA</strong></div>\n<div>\n </div>\n<div>\n Un file XML descrive la struttura dei dati.</div>\n<div>\n L\'esempio seguente inizializza il parser XML in PHP, definisce alcuni gestori e analizzare il file XML.</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n </div>\n<div>\n //inizializzazione parser</div>\n<div>\n $parser=xml_parser_create();</div>\n<div>\n </div>\n<div>\n //funzione da usare con i tag di apertura</div>\n<div>\n function start($parser,$element_name,$element_attrs)</div>\n<div>\n {</div>\n<div>\n switch($element_name)</div>\n<div>\n {</div>\n<div>\n case \"NOTE\":</div>\n<div>\n echo \"-- Note --<br />\";</div>\n<div>\n break;</div>\n<div>\n case \"TO\":</div>\n<div>\n echo \"To: \";</div>\n<div>\n break;</div>\n<div>\n case \"FROM\":</div>\n<div>\n echo \"From: \";</div>\n<div>\n break;</div>\n<div>\n case \"HEADING\":</div>\n<div>\n echo \"Heading: \";</div>\n<div>\n break;</div>\n<div>\n case \"BODY\":</div>\n<div>\n echo \"Message: \";</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //funzione da usare con i tag di chiusura</div>\n<div>\n function stop($parser,$element_name)</div>\n<div>\n {</div>\n<div>\n echo \"<br />\";</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //funzione da usare con i caratteri di tipo data</div>\n<div>\n function char($parser,$data)</div>\n<div>\n {</div>\n<div>\n echo $data;</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //specificare la funzione da eseguire quando il parser incontra i tag di apertura e di chiusura</div>\n<div>\n xml_set_element_handler($parser,\"start\",\"stop\");</div>\n<div>\n </div>\n<div>\n //specifica quale funzione verrà eseguito quando il parser incontra dati di tipo carattere</div>\n<div>\n xml_set_character_data_handler($parser,\"char\");</div>\n<div>\n </div>\n<div>\n //apre il file </div>\n<div>\n $fp=fopen(\"test.xml\",\"r\");</div>\n<div>\n </div>\n<div>\n //Dom è un\'interfaccia standard per l\'accesso e la manipolazione di documenti HTML e XML</div>\n<div>\n //crea nuovo documento Dom</div>\n<div>\n $xmlDoc = new DOMDocument();</div>\n<div>\n $xmlDoc->load(\"test.xml\");</div>\n<div>\n </div>\n<div>\n print $xmlDoc->saveXML();</div>\n<div>\n </div>\n<div>\n //legge</div>\n<div>\n while ($data=fread($fp,4096))</div>\n<div>\n {</div>\n<div>\n //Analizza il file \"test.xml\" con la funzione xml_parse ()</div>\n<div>\n //in caso di errore richiama xml_error_string per convertire l\'errore in stringa, xml_get_error_code restituisce il codice di errore,xml_get_current_line_number restituisce la linea dell\'eerrore</div>\n<div>\n xml_parse($parser,$data,feof($fp)) or die (sprintf(\"XML Error: %s at line %d\",xml_error_string(xml_get_error_code($parser)),xml_get_current_line_number($parser)));</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //libera la memoria allocata</div>\n<div>\n xml_parser_free($parser);</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n Il file test.xml contiene:</div>\n<div>\n </div>\n<div>\n <?xml version=\"1.0\" encoding=\"ISO-8859-1\"?></div>\n<div>\n <note></div>\n<div>\n <to>Antonio</to></div>\n<div>\n <from>Roberta</from></div>\n<div>\n <heading>Promemoria</heading></div>\n<div>\n <body>Ci vediamo stasera!</body></div>\n<div>\n </note></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>17. SIMPLE XML</strong></div>\n<div>\n </div>\n<div>\n Consente di ottenere gli attributi di un elemento e il testo.</div>\n<div>\n L\'esempio seguente mostra come restituire i nomi degli elementi e dei dati dal file test.xml.</div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n </div>\n<div>\n //carica il file</div>\n<div>\n $xml = simplexml_load_file(\"test.xml\");</div>\n<div>\n </div>\n<div>\n //Ottiene il nome del primo elemento </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n echo $xml->getName() . \"<br />\";</div>\n<div>\n //Creare un ciclo che si innesca su ogni nodo figlio, con la funzione children()</div>\n<div>\n foreach($xml->children() as $child)</div>\n<div>\n {</div>\n<div>\n //Output il nome dell\'elemento e dati per ciascun nodo figlio</div>\n<div>\n echo $child->getName() . \": \" . $child . \"<br />\";</div>\n<div>\n }</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n Il file \"test.xml\" contiene:</div>\n<div>\n <note><to>Antonio</to><from>Roberta</from><heading>Promemoria</heading><body>Ci vediamo stasera!</body></note></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>18. AJAX</strong></div>\n<div>\n </div>\n<div>\n AJAX è una tecnica per la creazione veloce di pagine Web.Consente di aggiornare parti di una pagina web, senza ricaricare l\'intera pagina.</div>\n<div>\n L\'esempio seguente mostra come una pagina web comunica con un server web.</div>\n<div>\n Quando un utente digita un carattere nel campo di input, viene eseguita la funzione il \"ShowHint ()\" che viene attivata dall\'evento \"onkeyup\".</div>\n<div>\n Pagina html:</div>\n<div>\n <html></div>\n<div>\n <head></div>\n<div>\n <script></div>\n<div>\n //questa funzione è attivata dall\'evento onkeyup</div>\n<div>\n function showHint(str)</div>\n<div>\n {</div>\n<div>\n //se il campo str.lenght è vuoto, viene cancellato il contenuto di txtHint e si esce dalla funzione</div>\n<div>\n if (str.length==0)</div>\n<div>\n { </div>\n<div>\n document.getElementById(\"txtHint\").innerHTML=\"\";</div>\n<div>\n return;</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //altrimenti si crea un oggetto XMLHttpRequest,usato per trasferire XML o altri dati da e a un web server</div>\n<div>\n if (window.XMLHttpRequest)</div>\n<div>\n {</div>\n<div>\n // per IE7, Firefox, Chrome, Opera, Safari</div>\n<div>\n xmlhttp=new XMLHttpRequest();</div>\n<div>\n }</div>\n<div>\n else</div>\n<div>\n {// per IE6, IE5</div>\n<div>\n xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n xmlhttp.onreadystatechange=function() //onreadystatechange Gestore dell\'evento lanciato ad ogni cambiamento di stato.</div>\n<div>\n {</div>\n<div>\n //readyState Restituisce lo stato corrente dell\'istanza di XMLHttpRequest:0 = non inizializzato, 1 = aperto, 2 = richiesta inviata, 3 = risposta in ricezione e 4 = risposta ricevuta.</div>\n<div>\n //status Restituisce il codice HTTP restituito dal server </div>\n<div>\n if (xmlhttp.readyState==4 && xmlhttp.status==200)</div>\n<div>\n {</div>\n<div>\n //responseText Restituisce la risposta del server in formato stringa e l\'assegna a txtHint</div>\n<div>\n document.getElementById(\"txtHint\").innerHTML=xmlhttp.responseText;</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //open Specifica il metodo, l\'URL e altri parametri opzionali per la richiesta.GET è utilizzato quando si richiedono dati.il secondo parametro è l\'url,il terzo specifica se la richiesta deve essere gestita in modo asincrono oppure no ,true\" significa che lo script può proseguire l\'elaborazione senza aspettare la risposta dopo il metodo send()</div>\n<div>\n </div>\n<div>\n xmlhttp.open(\"GET\",\"ajax.php?q=\"+str,true);</div>\n<div>\n xmlhttp.send(); //invia la richiesta a un server</div>\n<div>\n }</div>\n<div>\n </script></div>\n<div>\n </head></div>\n<div>\n <body></div>\n<div>\n </div>\n<div>\n <p><b>Start typing a name in the input field below:</b></p></div>\n<div>\n <form> </div>\n<div>\n First name: <input type=\"text\" onkeyup=\"showHint(this.value)\" size=\"20\" /></div>\n<div>\n </form></div>\n<div>\n <p>Suggestions: <span id=\"txtHint\"></span></p></div>\n<div>\n </div>\n<div>\n </body></div>\n<div>\n </html></div>\n<div>\n </div>\n<div>\n Il codice sorgente di \"ajax.php\" controlla una serie di nomi, e restituisce il nome, corrispondente al carattere inserito, al browser:</div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n // ontrolla una serie di nomi, e restituisce il nome corrispondente (s) al browser:</div>\n<div>\n $a[]=\"Anna\";</div>\n<div>\n $a[]=\"Brittany\";</div>\n<div>\n $a[]=\"Cinderella\";</div>\n<div>\n $a[]=\"Diana\";</div>\n<div>\n $a[]=\"Eva\";</div>\n<div>\n $a[]=\"Fiona\";</div>\n<div>\n $a[]=\"Gunda\";</div>\n<div>\n $a[]=\"Hege\";</div>\n<div>\n $a[]=\"Inga\";</div>\n<div>\n $a[]=\"Johanna\";</div>\n<div>\n $a[]=\"Kitty\";</div>\n<div>\n $a[]=\"Linda\";</div>\n<div>\n $a[]=\"Nina\";</div>\n<div>\n $a[]=\"Ophelia\";</div>\n<div>\n $a[]=\"Petunia\";</div>\n<div>\n $a[]=\"Amanda\";</div>\n<div>\n $a[]=\"Raquel\";</div>\n<div>\n $a[]=\"Cindy\";</div>\n<div>\n $a[]=\"Doris\";</div>\n<div>\n $a[]=\"Eve\";</div>\n<div>\n $a[]=\"Evita\";</div>\n<div>\n $a[]=\"Sunniva\";</div>\n<div>\n $a[]=\"Tove\";</div>\n<div>\n $a[]=\"Unni\";</div>\n<div>\n $a[]=\"Violet\";</div>\n<div>\n $a[]=\"Liza\";</div>\n<div>\n $a[]=\"Elizabeth\";</div>\n<div>\n $a[]=\"Ellen\";</div>\n<div>\n $a[]=\"Wenche\";</div>\n<div>\n $a[]=\"Vicky\";</div>\n<div>\n </div>\n<div>\n //in q è memorizzato il carattere scritto dall\'utente</div>\n<div>\n $q=$_GET[\"q\"];</div>\n<div>\n </div>\n<div>\n //se la lunghezza di q è>0 cerca un nome corrispondente ai caratteri inseriti</div>\n<div>\n if (strlen($q) > 0)</div>\n<div>\n {</div>\n<div>\n //hint è la stringa di risposta</div>\n<div>\n $hint=\"\";</div>\n<div>\n //cerca</div>\n<div>\n for($i=0; $i<count($a); $i++)</div>\n<div>\n {</div>\n<div>\n //controlla i caratteri delle stringhe presenti nell\'array e lo assegna alla stringa di risposta</div>\n<div>\n if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))</div>\n<div>\n {</div>\n<div>\n if ($hint==\"\")</div>\n<div>\n {</div>\n<div>\n $hint=$a[$i];</div>\n<div>\n }</div>\n<div>\n else</div>\n<div>\n {</div>\n<div>\n $hint=$hint.\" , \".$a[$i];</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n // se non è stato trovato nessun carattere uguale si stampa il messaggio \"\"nessun suggerimento, altrimentiviene visualizzato il nome cercato</div>\n<div>\n if ($hint == \"\")</div>\n<div>\n {</div>\n<div>\n $response=\"Nessun suggerimento\";</div>\n<div>\n }</div>\n<div>\n else</div>\n<div>\n {</div>\n<div>\n $response=$hint;</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n //output the response</div>\n<div>\n echo $response;</div>\n<div>\n ?></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n <strong>19.</strong></div>\n<div>\n L\'esempio seguente mostra come una pagina web può scaricare informazioni da un database con AJAX</div>\n<div>\n Pagina Html:</div>\n<div>\n </div>\n<div>\n <html></div>\n<div>\n <head></div>\n<div>\n <script></div>\n<div>\n /*quando un utente seleziona un nome nell\'elenco a tendina , la funzione showUserviene eseguita. La funzione viene attivata dall\'evento onchange*/</div>\n<div>\n function showUser(str)</div>\n<div>\n {</div>\n<div>\n if (str==\"\")</div>\n<div>\n {</div>\n<div>\n document.getElementById(\"txtHint\").innerHTML=\"\";</div>\n<div>\n return;</div>\n<div>\n } </div>\n<div>\n if (window.XMLHttpRequest)</div>\n<div>\n {</div>\n<div>\n xmlhttp=new XMLHttpRequest();</div>\n<div>\n }</div>\n<div>\n else</div>\n<div>\n {</div>\n<div>\n xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");</div>\n<div>\n }</div>\n<div>\n xmlhttp.onreadystatechange=function()</div>\n<div>\n {</div>\n<div>\n if (xmlhttp.readyState==4 && xmlhttp.status==200)</div>\n<div>\n {</div>\n<div>\n document.getElementById(\"txtHint\").innerHTML=xmlhttp.responseText;</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n xmlhttp.open(\"GET\",\"ajax2.php?q=\"+str,true);</div>\n<div>\n xmlhttp.send();</div>\n<div>\n }</div>\n<div>\n </div>\n<div>\n </div>\n<div>\n </script></div>\n<div>\n </head></div>\n<div>\n <body></div>\n<div>\n </div>\n<div>\n <form></div>\n<div>\n <select name=\"users\" onchange=\"showUser(this.value)\"</div>\n<div>\n ></div>\n<div>\n <option value=\"\">Select a person:</option></div>\n<div>\n <option value=\"1\">Homer Simpson</option></div>\n<div>\n <option value=\"2\">Marge Simpson</option></div>\n<div>\n <option value=\"3\">Zio Paperone</option></div>\n<div>\n <option value=\"4\">Pippo Pluto</option></div>\n<div>\n </select></div>\n<div>\n </form></div>\n<div>\n <br /></div>\n<div>\n <div id=\"txtHint\"><b>Informazioni persona.</b></div></div>\n<div>\n </div>\n<div>\n </body></div>\n<div>\n </html></div>\n<div>\n </div>\n<div>\n </div>\n<div>\n Il codice sorgente in \"ajax2.php\" esegue una query su un database MySQL, e restituisce il risultato in una tabella HTML:</div>\n<div>\n </div>\n<div>\n <?php</div>\n<div>\n $q=$_GET[\"q\"];</div>\n<div>\n </div>\n<div>\n //crea connessione al database</div>\n<div>\n $con = mysql_connect(\'localhost\', \'\', \'\');</div>\n<div>\n if (!$con)</div>\n<div>\n {</div>\n<div>\n die(\'Errore connessione \' . mysql_error());</div>\n<div>\n }</div>\n<div>\n //seleziona il database</div>\n<div>\n mysql_select_db(\"ajax_demo\", $con);</div>\n<div>\n //seleziona tutti i record</div>\n<div>\n $sql=\"SELECT * FROM user WHERE id = \'\".$q.\"\'\";</div>\n<div>\n </div>\n<div>\n $result = mysql_query($sql);</div>\n<div>\n </div>\n<div>\n echo \"<table border=\'1\'></div>\n<div>\n <tr></div>\n<div>\n <th>Nome</th></div>\n<div>\n <th>Cognome</th></div>\n<div>\n <th>Età</th></div>\n<div>\n <th>Città</th></div>\n<div>\n <th>Lavoro</th></div>\n<div>\n </tr>\";</div>\n<div>\n //mysql_fetch_array restituisce una riga da un recordset come array o come matrice</div>\n<div>\n while($row = mysql_fetch_array($result))</div>\n<div>\n {</div>\n<div>\n echo \"<tr>\";</div>\n<div>\n echo \"<td>\" . $row[\'Nomr\'] . \"</td>\";</div>\n<div>\n echo \"<td>\" . $row[\'Cognome\'] . \"</td>\";</div>\n<div>\n echo \"<td>\" . $row[\'Età\'] . \"</td>\";</div>\n<div>\n echo \"<td>\" . $row[\'Città\'] . \"</td>\";</div>\n<div>\n echo \"<td>\" . $row[\'Lavoro\'] . \"</td>\";</div>\n<div>\n echo \"</tr>\";</div>\n<div>\n }</div>\n<div>\n echo \"</table>\";</div>\n<div>\n //chiusura connessione</div>\n<div>\n mysql_close($con);</div>\n<div>\n ?></div>\n<div>\n </div>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434732447,1),('field:node:18','a:3:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:17678:\"“Immagina una grande sala, più o meno come un teatro, tranne per il fatto che le gallerie sono tutte intorno, anche nello spazio usualmente occupato dal palcoscenico. Sulle pareti di questa sala è dipinta la mappa del globo terrestre, dove il soffitto rappresenta le regioni polari del nord, l’Inghilterra è circa all’altezza della prima galleria, quindi, più verso il basso i tropici, l’Australia e, infine, l’Antartico nel livello inferiore.\r\n\r\nOgnuno dei posti delle gallerie è occupato da un calcolatore, una miriade di calcolatori sono al lavoro sul tempo atmosferico, relativo alla zona della mappa dove ciascuno di essi risiede e solo su quella occupandosi o di una singola equazione o di una parte di un’equazione. \r\n\r\nIl lavoro di ciascuna regione è coordinato da un calcolatore di rango superiore. Numerose piccole lampadine visualizzano istantaneamente i valori calcolati da ciascun calcolatore, così che quelli adiacenti possano leggerli in modo da mantenere la comunicazione dal nord al sud della mappa.\r\n\r\nDal pavimento si solleva un piedistallo alto circa la metà della sala, dotato di un pulpito dove risiede chi coordina l’intera operazione di calcolo grazie all’aiuto di molti assistenti che fanno da messaggeri. Uno dei suoi compiti è fare sì che la velocità di soluzione delle equazioni, relative ad ogni parte del globo, sia uniforme.\r\n\r\nIl coordinatore agisce come un direttore di orchestra, solo che gli strumenti che dirige sono strumenti per il calcolo. Ad esempio potrebbe utilizzare un raggio di luce blu per indicare quelle regioni che sono in ritardo e che devono aumentare la velocità di calcolo e uno di luce rossa per ridurre la velocità delle regioni troppo in anticipo, nella soluzione delle equazioni.\r\n\r\nQuattro impiegati di maggiore esperienza raccolgono i dati del tempo previsto man mano che questi vengono prodotti e, attraverso un sistema di posta pneumatica, li inviano in una sala dove regna il silenzio, dove vengono codificati e trasmessi perché vengano utilizzati. Quindi, i dati prodotti vengono conservati per un uso futuro.”\r\n\r\nTali, o di tal genere, i pensieri dell’eclettico scienziato inglese Luwis Fry Richardson, nato nell’ottobre del 1881 e morto nel settembre del 1953, passato alla storia come l’inventore delle previsioni meteorologiche mediante processi numerici, come mostrato nel suo articolo “Weather prediction by numerical process” del 1922. Leggere il suo scritto è entusiasmante: anticipa di decenni l’architettura di un supercalcolatore individuandone le componenti fondamentali ovvero i nodi di calcolo, la rete di comunicazione, i sistemi di controllo e sincronizzazione, la memorizzazione dei risultati per un uso futuro. Richardson, in maniera completamente innovativa, propone le previsioni meteo, come la soluzione delle equazioni differenziali, applicate alla fluidodinamica atmosferica, superando l’approccio puramente storico-statistico dell’analisi delle serie temporali, ancor oggi non caduto totalmente in disuso. Richardson, convinto e fervente pacifista, tanto da essere ritenuto ineleggibile agli onori accademici, interromperà i suoi studi sulla meteorologia computazionale, distruggendo i lavori ancora in attesa di pubblicazione, resosi conto dell’importanza strategica della stessa, durante gli eventi bellici. \r\n\r\nCome tutti i geni innovatori della storia, Richardson soffre l’anacronismo tecnologico che costringe le sue intuizioni a rimanere tali fino a pochi anni prima della sua morte, quando un evento di proporzioni epocali sta per verificarsi, per porre fine ad una delle guerre più sanguinose della storia, in termini di perdite civili: è necessaria una perfetta pianificazione, per creare ed espandere una testa di ponte alleata nel territorio a nord della Francia e fiaccare, e quindi ridurre all’impotenza, le forze del Reich nell’Europa centrale. Per far ciò, è necessaria abilità bellica, sono necessarie perfette previsioni meteo, per l’uso massiccio di paracadutisti e di mezzi anfibi. La data dell’alba del 6 giugno 1944 non può essere scelta con un lancio di dadi per quello che passerà alla storia come lo “Sbarco in Normandia”, l’operazione “Overlord”, il D-Day. E’ necessario supercalcolo e questa volta, circa 22 anni dopo l’articolo di Richardson, questa volta la tecnologia esiste, è disponibile ed è stata già utilizzata in altri contesti.\r\n\r\nJohn von Neumann, matematico ungherese, nato a Budapest del 1903 e trasferitosi negli Stati Uniti su invito dell’università di Princeton nel 1930, a partire dallo scoppio della seconda guerra mondiale si dedica alla matematica applicata ed alla creazione di macchine per il calcolo automatico. E’ considerato il padre dell’architettura dei calcolatori che porta ancor oggi il suo nome e che, in quegli anni, vede l’applicazione pratica nella creazione del mastodontico Electronic Numerical Integrator And Computer (ENIAC), il primo computer della storia. Presentato ufficialmente 1946, costato una cifra esorbitante e fortissimamente voluto dalle alte gerarchie militari, nel corso del suo processo evolutivo è stato ampiamente utilizzato durante il conflitto, inizialmente per i calcoli balistici, poi per la ricerca della soluzione al codice enigma, per il progetto Manhattan e, quindi, per produrre le previsioni meteo, al fine di pianificare l’invasione per la liberazione del territorio francese.\r\n\r\nRichardson morì nel 1953, dopo aver visto i propri studi di meteorologia computazionale applicati in primis per scopi bellici, ma, purtroppo, senza la soddisfazione di saperlo in vita, aveva raggiunto un altro primato: non solo il metodo di calcolo descritto nel 1922 risultava innovativo in quanto tale, ma anche l’approccio computazionale superava la cosiddetta architettura von Neumann. Aveva applicato, per la prima volta, in modo consapevole il calcolo parallelo, ma quelle che gli erano mancate erano state unicamente le alte prestazioni.\r\n\r\nLeonard Kleinrock, nel 1962 scrive nella sua tesi di dottorato che, probabilmente, assisteremo alla diffusione dei fornitori di risorse computazionali i quali, così come avviene per le linee elettriche e telefoniche, forniranno servizi per le case e gli uffici, distribuiti sul territorio nazionale anticipando gli accadimenti nel mondo del supercalcolo di quasi quaranta anni.\r\n\r\nMa, sul fronte del calcolo ad alte prestazioni, è il 1961 un anno di importanza storica, perché Seymour Cray progetta il primo supercomputer della storia, il CDC6600, per conto della Control Data Corporation, anche se solo nel 1982 viene presentato il CRAY X-MP, progettato dallo stesso Cray, ormai a capo dell’omonima azienda: è il primo computer dotato di multiprocessori, è effettivamente quello che oggi viene chiamato un calcolatore parallelo ad alte prestazioni e le previsioni meteo sono state una delle prime applicazioni progettate per funzionare, sfruttando appieno la potenza di calcolo disponibile. Finalmente, la domanda e l’offerta di potenza computazionale s’ incontrano, con soddisfazione di risultati.\r\n\r\nE’ l’inizio delle previsioni meteorologiche computazionali operazionali. La figura del meteorologo, analizzatore delle serie temporali e di segni atmosferici, comincia ad essere sostituita dall’interpretatore dei risultati prodotti dai modelli matematici. Presso la Pensylvania State University, nel corso degli anni 70, viene sviluppato il modello MM5. Il Mesoscale Model 5 è l\'ultimo di una serie di modelli per simulazione su mesoscala, sviluppati da Anthes e da Warner, che implementano, in maniera tecnologicamente efficace ed efficiente, quanto immaginato da Richardson all’inizio del secolo, utilizzando un approccio seriale.\r\nNel corso degli anni ’90, le architetture parallele si diffondono in ogni ramo applicativo scientifico, ingegneristico ed economico, così come aumenta l’offerta dei grandi produttori di macchine da calcolo parallelo ad alte prestazioni, come le Thinking Machines o l’IBM SP: tanta potenza, disponibile a costo estremamente elevato, costringe lo sviluppo di applicazioni di modellistica atmosferica ed oceanografica ad essere possibile solo a grandi enti di ricerca, tipicamente statunitensi, come la Argonne National Laboratory, dove vengono realizzate le librerie che permettono la comunicazione fra i processi residenti su differenti processori e come l’University Corporation for Atmosphere Research e il National Center for Atmospheric Research.\r\n\r\n In questo contesto, nella metà degli anni ’90, John Michalakes implementa la versione parallela del modello MM5, denominata MPP, grazie allo sviluppo di una libreria software che permette la decomposizione del dominio spaziale, su cui effettuare i calcoli di previsioni meteo, in aree ciascuna affidata ad un nodo di calcolo, mentre un nodo principale ne coordina le operazioni, e la sincronizzazione e ne raccoglie i risultati. Il sogno di Richardson viene così realizzato.\r\n\r\nRimane il problema del costo della potenza di calcolo. Nella prima metà degli anni ’90, l’acquisto di un calcolatore parallelo rimane ancora fuori della portata della maggior parte delle università e centri di ricerca, ma un eroe leggendario è destinato a cambiare la storia e, per certi versi, a salvare il mondo. E’ il 1994, quando alla NASA Donald Becker pensa di riutilizzare dei comuni personal computer, non più al top delle performance, per creare un sistema di calcolo parallelo con componenti completamente commerciali, esplorando la possibilità dell’high performance computing a basso costo. L’idea è tanto semplice quanto geniale: utilizzare comuni PC, come nodi di calcolo e nodi di controllo, ed una rete ad alte prestazioni per la comunicazioni fra le differenti componenti. Il sistema operativo scelto per questo tipo di applicazione è Linux e Beowulf , il leggendario eroe del poema epico inglese è il nome scelto per il progetto, il cui sviluppo viene preso presto in carico dalla comunità internazionale interessata, al calcolo scientifico. E’ la nascita dell’era delle previsioni meteorologiche a scala locale, che possono essere ottenute aumentando localmente la risoluzione del calcolo e, grazie alla disponibilità di high performance computing a costo accessibile, essere prodotte per ricerca o presso gli enti preposti alla gestione del territorio.\r\n\r\nNello stesso periodo dell’ascesa dei sistemi di supercalcolo di tipo Beowulf, un altro evento epocale cambia la storia dell’umanità tutta: le autostrade digitali non sono più un’oscura voce dei programmi dei governi di oltreoceano, ma Internet diventa economica, accessibile, veloce e stabile. Finisce l’era del dove ed inizia quella del quando, il mondo è a portata di click e, quindi, strumenti di acquisizione meteo, geograficamente distribuiti, centri di raccolta ed elaborazioni di dati satellitari, enti produttori di dati meteorologici ricavati da modelli, come l’European Center for Mesoscale Weather Forecast di Reading, nei pressi di Londra, sono finalmente interconnessi e capaci di elaborazioni operazionali con scala temporale, prossima al tempo reale. Grazie alla migliorata comprensione dei fenomeni atmosferici, ed ai legami con la dinamica oceanografica e biosferica, alla maggiore capacità dei sensori meteo, montati su piattaforme orbitali o aereotrasportati, grazie all’avanzamento nella teoria e nelle applicazioni dell’elaborazione dei dati meteo, all’interconnessione veloce di ciascuna di queste componenti, al calcolo distribuito su elaboratori geograficamente distanti ed al calcolo parallelo ad alte prestazioni, con il nuovo millennio, si raggiunge il traguardo dell’affidabilità previsionale delle 72 ore, ma, nel contempo, pressano due richieste da parte della comunità delle scienze applicate alla meteorologia: l’accoppiamento fra modelli differenti e la validazione degli stessi. Ancora una volta, risolte già da tempo le problematiche di tipo teorico, rimane ancora la necessità di potenza computazione.\r\n\r\nE’ il 1998 quando Ian Foster e Carl Kesselman, nell’ormai storico libro “The Grid: Blueprint for a New Computing Infrastructure “scrivono che una griglia computazionale è un’infrastruttura hardware e software che provvede ad un indipendente, consistente, pervasivo ed economico accesso a risorse computazionali ad alte prestazioni”. Il termine Grid è solitamente riferito alla linea di distribuzione elettrica: quello che Leonard Kleinrock, ritenuto uno dei padri di internet, aveva anticipato in maniera prematura nel 1962 diviene realtà alla fine del secolo. Successivamente, nel 2000, insieme a Steve Tuecke, nell’articolo “The Anatomy of the Grid”, i padri fondatori del Grid Computing focalizzano l’attenzione sul concetto di condivisione delle risorse ,non riduttivamente come scambio di file, ma, piuttosto,come accesso diretto al sistema di calcolo, al software, ai dati e agli strumenti in un ambiente di problem solving collaborativo, facente uso di strategie di ricerca ed allocazione dinamica delle risorse disponibili. In questo contesto la condivisione deve essere necessariamente controllata, in modo da garantire affidabilità e sicurezza e questo può essere fatto attraverso la creazione di organizzazioni virtuali trasversali ad enti, persone fisiche o organizzazioni reali. \r\n\r\nE’ la nascita dell’approccio collaborativo alle scienze computazionali e, ancora una volta, le applicazioni meteo rappresentano un ottimo piano di test per la nuova tecnologia e, viceversa, per la modellistica meteorologica il Grid Computing, come calcolo distribuito ad un più alto livello evolutivo, è la soluzione necessaria alle più pressanti richieste di accoppiamento e validazioni di modelli.\r\n\r\nIn un approccio a blocchi, è intuitivo pensare al modello atmosferico come l’ideale forzante per un modello di dinamica della circolazione oceanica ed ad uno per la propagazione delle onde marine indotte dal vento, mentre, contestualmente, lo stesso modello meteo può fornire forzanti ad un modello di evoluzione delle terre emerse, in termini di uso del suolo e conseguente attività biologica. In questo stesso contesto, possono essere inseriti modelli di tipo socioeconomico che permettono di valutare l’impatto antropico sul tempo atmosferico, sull’inquinamento dell’aria e dell’acqua. Due modelli si dicono accoppiati se un primo produce i dati utilizzati per inizializzare e controllare il secondo. L’accoppiamento può essere effettuato dopo che il primo modello ha prodotto i risultati, oppure stesso a livello di equazioni. In ambo i casi la necessità di calcolo da alte prestazioni cresce ed è necessaria una massiccia parallelizzazione al fine di rendere il problema risolvibile in tempi utili.\r\n\r\nLa validazioni dei modelli può essere effettuata mediante un’analisi statistica e da un confronto dei dati prodotti in previsione con quelli prodotti in seguito all’inizializzazione dello stesso modello con i dati successivamente acquisiti e relativi al mondo reale. Tuttavia, per poter avere un’indicazione della qualità della previsione in tempo reale e non a posteriori è necessario ripetere la previsione numerose volte, perturbando i dati di inizializzazione ed effettuando un’analisi di sensibilità sui risultati. Anche in questo caso, la necessità di calcolo parallelo ad alte prestazioni aumenta in maniera consistente per il gran numero di simulazioni da dover lanciare contemporaneamente.\r\n\r\nIl Grid Computing, grazie all’accesso sistematico alle risorse computazionali alto performanti, consente di risolvere queste problematiche in maniera efficace ed efficiente come dimostrato nel 2003 da Robert Jacob, Ian Foster ed altri nell’articolo “Automating Climate Science…”.\r\n\r\nL’accuratezza in termini spaziali, temporali e di affidabilità delle previsioni meteorologiche è indissolubilmente legata alle capacità computazionali disponibili, che risultano, quindi, d’ importanza strategica sia dal punto di vista del governo nazionale che del management locale di una qualsiasi nazione e forti sono stati gli investimenti in termini scientifici ed economici per fare si che la scala dell’affidabilità passasse dalle 72 ore d’ inizio millennio alle 144/150 attuali. Infiniti sono gli ambiti applicativi delle previsioni meteorologiche a scala locale, in cui l’alta risoluzione spaziale e temporale è un requisito principe, come nel caso della previsioni di eventi estremi, ad esempio alluvioni e mareggiate,e di manifestazioni sportive di estrema rilevanza economica per pubblico, per sponsor ed indotto tecnico- scientifico, come, ad esempio, la leggendaria Americas’s Cup, in cui ancora le possibilità offerte dal supercalcolo non sono state ancora pienamente sfruttate.\r\n\r\nAttualmente, le problematiche a lunga scala temporale, ovvero quelle legate alle previsione climatica, iniziano ad essere intimamente legate a quelle meteorologiche, a causa dei cambiamenti globali e all’incremento dei fenomeni estremi, anche in zone storicamente lontane da queste problematiche. In questo caso la richiesta di affidabilità computazionale, oltre che di pure prestazioni, è ancora più pressante poiché le simulazioni non coinvolgono solo giorni, ma mesi, anni, centinaia di anni e millenni.\r\nRichardson, padre dei metodi risolutori alla base della meteorologia computazionale, sarebbe stato sicuramente contento di sapere che il suo approccio è l’attuale chiave di volta per salvare il mondo piuttosto che per distruggerlo e… perché no, portare a casa anche la Vecchia Brocca. \r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:17781:\"<p>“Immagina una grande sala, più o meno come un teatro, tranne per il fatto che le gallerie sono tutte intorno, anche nello spazio usualmente occupato dal palcoscenico. Sulle pareti di questa sala è dipinta la mappa del globo terrestre, dove il soffitto rappresenta le regioni polari del nord, l’Inghilterra è circa all’altezza della prima galleria, quindi, più verso il basso i tropici, l’Australia e, infine, l’Antartico nel livello inferiore.</p>\n<p>Ognuno dei posti delle gallerie è occupato da un calcolatore, una miriade di calcolatori sono al lavoro sul tempo atmosferico, relativo alla zona della mappa dove ciascuno di essi risiede e solo su quella occupandosi o di una singola equazione o di una parte di un’equazione. </p>\n<p>Il lavoro di ciascuna regione è coordinato da un calcolatore di rango superiore. Numerose piccole lampadine visualizzano istantaneamente i valori calcolati da ciascun calcolatore, così che quelli adiacenti possano leggerli in modo da mantenere la comunicazione dal nord al sud della mappa.</p>\n<p>Dal pavimento si solleva un piedistallo alto circa la metà della sala, dotato di un pulpito dove risiede chi coordina l’intera operazione di calcolo grazie all’aiuto di molti assistenti che fanno da messaggeri. Uno dei suoi compiti è fare sì che la velocità di soluzione delle equazioni, relative ad ogni parte del globo, sia uniforme.</p>\n<p>Il coordinatore agisce come un direttore di orchestra, solo che gli strumenti che dirige sono strumenti per il calcolo. Ad esempio potrebbe utilizzare un raggio di luce blu per indicare quelle regioni che sono in ritardo e che devono aumentare la velocità di calcolo e uno di luce rossa per ridurre la velocità delle regioni troppo in anticipo, nella soluzione delle equazioni.</p>\n<p>Quattro impiegati di maggiore esperienza raccolgono i dati del tempo previsto man mano che questi vengono prodotti e, attraverso un sistema di posta pneumatica, li inviano in una sala dove regna il silenzio, dove vengono codificati e trasmessi perché vengano utilizzati. Quindi, i dati prodotti vengono conservati per un uso futuro.”</p>\n<p>Tali, o di tal genere, i pensieri dell’eclettico scienziato inglese Luwis Fry Richardson, nato nell’ottobre del 1881 e morto nel settembre del 1953, passato alla storia come l’inventore delle previsioni meteorologiche mediante processi numerici, come mostrato nel suo articolo “Weather prediction by numerical process” del 1922. Leggere il suo scritto è entusiasmante: anticipa di decenni l’architettura di un supercalcolatore individuandone le componenti fondamentali ovvero i nodi di calcolo, la rete di comunicazione, i sistemi di controllo e sincronizzazione, la memorizzazione dei risultati per un uso futuro. Richardson, in maniera completamente innovativa, propone le previsioni meteo, come la soluzione delle equazioni differenziali, applicate alla fluidodinamica atmosferica, superando l’approccio puramente storico-statistico dell’analisi delle serie temporali, ancor oggi non caduto totalmente in disuso. Richardson, convinto e fervente pacifista, tanto da essere ritenuto ineleggibile agli onori accademici, interromperà i suoi studi sulla meteorologia computazionale, distruggendo i lavori ancora in attesa di pubblicazione, resosi conto dell’importanza strategica della stessa, durante gli eventi bellici. </p>\n<p>Come tutti i geni innovatori della storia, Richardson soffre l’anacronismo tecnologico che costringe le sue intuizioni a rimanere tali fino a pochi anni prima della sua morte, quando un evento di proporzioni epocali sta per verificarsi, per porre fine ad una delle guerre più sanguinose della storia, in termini di perdite civili: è necessaria una perfetta pianificazione, per creare ed espandere una testa di ponte alleata nel territorio a nord della Francia e fiaccare, e quindi ridurre all’impotenza, le forze del Reich nell’Europa centrale. Per far ciò, è necessaria abilità bellica, sono necessarie perfette previsioni meteo, per l’uso massiccio di paracadutisti e di mezzi anfibi. La data dell’alba del 6 giugno 1944 non può essere scelta con un lancio di dadi per quello che passerà alla storia come lo “Sbarco in Normandia”, l’operazione “Overlord”, il D-Day. E’ necessario supercalcolo e questa volta, circa 22 anni dopo l’articolo di Richardson, questa volta la tecnologia esiste, è disponibile ed è stata già utilizzata in altri contesti.</p>\n<p>John von Neumann, matematico ungherese, nato a Budapest del 1903 e trasferitosi negli Stati Uniti su invito dell’università di Princeton nel 1930, a partire dallo scoppio della seconda guerra mondiale si dedica alla matematica applicata ed alla creazione di macchine per il calcolo automatico. E’ considerato il padre dell’architettura dei calcolatori che porta ancor oggi il suo nome e che, in quegli anni, vede l’applicazione pratica nella creazione del mastodontico Electronic Numerical Integrator And Computer (ENIAC), il primo computer della storia. Presentato ufficialmente 1946, costato una cifra esorbitante e fortissimamente voluto dalle alte gerarchie militari, nel corso del suo processo evolutivo è stato ampiamente utilizzato durante il conflitto, inizialmente per i calcoli balistici, poi per la ricerca della soluzione al codice enigma, per il progetto Manhattan e, quindi, per produrre le previsioni meteo, al fine di pianificare l’invasione per la liberazione del territorio francese.</p>\n<p>Richardson morì nel 1953, dopo aver visto i propri studi di meteorologia computazionale applicati in primis per scopi bellici, ma, purtroppo, senza la soddisfazione di saperlo in vita, aveva raggiunto un altro primato: non solo il metodo di calcolo descritto nel 1922 risultava innovativo in quanto tale, ma anche l’approccio computazionale superava la cosiddetta architettura von Neumann. Aveva applicato, per la prima volta, in modo consapevole il calcolo parallelo, ma quelle che gli erano mancate erano state unicamente le alte prestazioni.</p>\n<p>Leonard Kleinrock, nel 1962 scrive nella sua tesi di dottorato che, probabilmente, assisteremo alla diffusione dei fornitori di risorse computazionali i quali, così come avviene per le linee elettriche e telefoniche, forniranno servizi per le case e gli uffici, distribuiti sul territorio nazionale anticipando gli accadimenti nel mondo del supercalcolo di quasi quaranta anni.</p>\n<p>Ma, sul fronte del calcolo ad alte prestazioni, è il 1961 un anno di importanza storica, perché Seymour Cray progetta il primo supercomputer della storia, il CDC6600, per conto della Control Data Corporation, anche se solo nel 1982 viene presentato il CRAY X-MP, progettato dallo stesso Cray, ormai a capo dell’omonima azienda: è il primo computer dotato di multiprocessori, è effettivamente quello che oggi viene chiamato un calcolatore parallelo ad alte prestazioni e le previsioni meteo sono state una delle prime applicazioni progettate per funzionare, sfruttando appieno la potenza di calcolo disponibile. Finalmente, la domanda e l’offerta di potenza computazionale s’ incontrano, con soddisfazione di risultati.</p>\n<p>E’ l’inizio delle previsioni meteorologiche computazionali operazionali. La figura del meteorologo, analizzatore delle serie temporali e di segni atmosferici, comincia ad essere sostituita dall’interpretatore dei risultati prodotti dai modelli matematici. Presso la Pensylvania State University, nel corso degli anni 70, viene sviluppato il modello MM5. Il Mesoscale Model 5 è l\'ultimo di una serie di modelli per simulazione su mesoscala, sviluppati da Anthes e da Warner, che implementano, in maniera tecnologicamente efficace ed efficiente, quanto immaginato da Richardson all’inizio del secolo, utilizzando un approccio seriale.<br />\nNel corso degli anni ’90, le architetture parallele si diffondono in ogni ramo applicativo scientifico, ingegneristico ed economico, così come aumenta l’offerta dei grandi produttori di macchine da calcolo parallelo ad alte prestazioni, come le Thinking Machines o l’IBM SP: tanta potenza, disponibile a costo estremamente elevato, costringe lo sviluppo di applicazioni di modellistica atmosferica ed oceanografica ad essere possibile solo a grandi enti di ricerca, tipicamente statunitensi, come la Argonne National Laboratory, dove vengono realizzate le librerie che permettono la comunicazione fra i processi residenti su differenti processori e come l’University Corporation for Atmosphere Research e il National Center for Atmospheric Research.</p>\n<p> In questo contesto, nella metà degli anni ’90, John Michalakes implementa la versione parallela del modello MM5, denominata MPP, grazie allo sviluppo di una libreria software che permette la decomposizione del dominio spaziale, su cui effettuare i calcoli di previsioni meteo, in aree ciascuna affidata ad un nodo di calcolo, mentre un nodo principale ne coordina le operazioni, e la sincronizzazione e ne raccoglie i risultati. Il sogno di Richardson viene così realizzato.</p>\n<p>Rimane il problema del costo della potenza di calcolo. Nella prima metà degli anni ’90, l’acquisto di un calcolatore parallelo rimane ancora fuori della portata della maggior parte delle università e centri di ricerca, ma un eroe leggendario è destinato a cambiare la storia e, per certi versi, a salvare il mondo. E’ il 1994, quando alla NASA Donald Becker pensa di riutilizzare dei comuni personal computer, non più al top delle performance, per creare un sistema di calcolo parallelo con componenti completamente commerciali, esplorando la possibilità dell’high performance computing a basso costo. L’idea è tanto semplice quanto geniale: utilizzare comuni PC, come nodi di calcolo e nodi di controllo, ed una rete ad alte prestazioni per la comunicazioni fra le differenti componenti. Il sistema operativo scelto per questo tipo di applicazione è Linux e Beowulf , il leggendario eroe del poema epico inglese è il nome scelto per il progetto, il cui sviluppo viene preso presto in carico dalla comunità internazionale interessata, al calcolo scientifico. E’ la nascita dell’era delle previsioni meteorologiche a scala locale, che possono essere ottenute aumentando localmente la risoluzione del calcolo e, grazie alla disponibilità di high performance computing a costo accessibile, essere prodotte per ricerca o presso gli enti preposti alla gestione del territorio.</p>\n<p>Nello stesso periodo dell’ascesa dei sistemi di supercalcolo di tipo Beowulf, un altro evento epocale cambia la storia dell’umanità tutta: le autostrade digitali non sono più un’oscura voce dei programmi dei governi di oltreoceano, ma Internet diventa economica, accessibile, veloce e stabile. Finisce l’era del dove ed inizia quella del quando, il mondo è a portata di click e, quindi, strumenti di acquisizione meteo, geograficamente distribuiti, centri di raccolta ed elaborazioni di dati satellitari, enti produttori di dati meteorologici ricavati da modelli, come l’European Center for Mesoscale Weather Forecast di Reading, nei pressi di Londra, sono finalmente interconnessi e capaci di elaborazioni operazionali con scala temporale, prossima al tempo reale. Grazie alla migliorata comprensione dei fenomeni atmosferici, ed ai legami con la dinamica oceanografica e biosferica, alla maggiore capacità dei sensori meteo, montati su piattaforme orbitali o aereotrasportati, grazie all’avanzamento nella teoria e nelle applicazioni dell’elaborazione dei dati meteo, all’interconnessione veloce di ciascuna di queste componenti, al calcolo distribuito su elaboratori geograficamente distanti ed al calcolo parallelo ad alte prestazioni, con il nuovo millennio, si raggiunge il traguardo dell’affidabilità previsionale delle 72 ore, ma, nel contempo, pressano due richieste da parte della comunità delle scienze applicate alla meteorologia: l’accoppiamento fra modelli differenti e la validazione degli stessi. Ancora una volta, risolte già da tempo le problematiche di tipo teorico, rimane ancora la necessità di potenza computazione.</p>\n<p>E’ il 1998 quando Ian Foster e Carl Kesselman, nell’ormai storico libro “The Grid: Blueprint for a New Computing Infrastructure “scrivono che una griglia computazionale è un’infrastruttura hardware e software che provvede ad un indipendente, consistente, pervasivo ed economico accesso a risorse computazionali ad alte prestazioni”. Il termine Grid è solitamente riferito alla linea di distribuzione elettrica: quello che Leonard Kleinrock, ritenuto uno dei padri di internet, aveva anticipato in maniera prematura nel 1962 diviene realtà alla fine del secolo. Successivamente, nel 2000, insieme a Steve Tuecke, nell’articolo “The Anatomy of the Grid”, i padri fondatori del Grid Computing focalizzano l’attenzione sul concetto di condivisione delle risorse ,non riduttivamente come scambio di file, ma, piuttosto,come accesso diretto al sistema di calcolo, al software, ai dati e agli strumenti in un ambiente di problem solving collaborativo, facente uso di strategie di ricerca ed allocazione dinamica delle risorse disponibili. In questo contesto la condivisione deve essere necessariamente controllata, in modo da garantire affidabilità e sicurezza e questo può essere fatto attraverso la creazione di organizzazioni virtuali trasversali ad enti, persone fisiche o organizzazioni reali. </p>\n<p>E’ la nascita dell’approccio collaborativo alle scienze computazionali e, ancora una volta, le applicazioni meteo rappresentano un ottimo piano di test per la nuova tecnologia e, viceversa, per la modellistica meteorologica il Grid Computing, come calcolo distribuito ad un più alto livello evolutivo, è la soluzione necessaria alle più pressanti richieste di accoppiamento e validazioni di modelli.</p>\n<p>In un approccio a blocchi, è intuitivo pensare al modello atmosferico come l’ideale forzante per un modello di dinamica della circolazione oceanica ed ad uno per la propagazione delle onde marine indotte dal vento, mentre, contestualmente, lo stesso modello meteo può fornire forzanti ad un modello di evoluzione delle terre emerse, in termini di uso del suolo e conseguente attività biologica. In questo stesso contesto, possono essere inseriti modelli di tipo socioeconomico che permettono di valutare l’impatto antropico sul tempo atmosferico, sull’inquinamento dell’aria e dell’acqua. Due modelli si dicono accoppiati se un primo produce i dati utilizzati per inizializzare e controllare il secondo. L’accoppiamento può essere effettuato dopo che il primo modello ha prodotto i risultati, oppure stesso a livello di equazioni. In ambo i casi la necessità di calcolo da alte prestazioni cresce ed è necessaria una massiccia parallelizzazione al fine di rendere il problema risolvibile in tempi utili.</p>\n<p>La validazioni dei modelli può essere effettuata mediante un’analisi statistica e da un confronto dei dati prodotti in previsione con quelli prodotti in seguito all’inizializzazione dello stesso modello con i dati successivamente acquisiti e relativi al mondo reale. Tuttavia, per poter avere un’indicazione della qualità della previsione in tempo reale e non a posteriori è necessario ripetere la previsione numerose volte, perturbando i dati di inizializzazione ed effettuando un’analisi di sensibilità sui risultati. Anche in questo caso, la necessità di calcolo parallelo ad alte prestazioni aumenta in maniera consistente per il gran numero di simulazioni da dover lanciare contemporaneamente.</p>\n<p>Il Grid Computing, grazie all’accesso sistematico alle risorse computazionali alto performanti, consente di risolvere queste problematiche in maniera efficace ed efficiente come dimostrato nel 2003 da Robert Jacob, Ian Foster ed altri nell’articolo “Automating Climate Science…”.</p>\n<p>L’accuratezza in termini spaziali, temporali e di affidabilità delle previsioni meteorologiche è indissolubilmente legata alle capacità computazionali disponibili, che risultano, quindi, d’ importanza strategica sia dal punto di vista del governo nazionale che del management locale di una qualsiasi nazione e forti sono stati gli investimenti in termini scientifici ed economici per fare si che la scala dell’affidabilità passasse dalle 72 ore d’ inizio millennio alle 144/150 attuali. Infiniti sono gli ambiti applicativi delle previsioni meteorologiche a scala locale, in cui l’alta risoluzione spaziale e temporale è un requisito principe, come nel caso della previsioni di eventi estremi, ad esempio alluvioni e mareggiate,e di manifestazioni sportive di estrema rilevanza economica per pubblico, per sponsor ed indotto tecnico- scientifico, come, ad esempio, la leggendaria Americas’s Cup, in cui ancora le possibilità offerte dal supercalcolo non sono state ancora pienamente sfruttate.</p>\n<p>Attualmente, le problematiche a lunga scala temporale, ovvero quelle legate alle previsione climatica, iniziano ad essere intimamente legate a quelle meteorologiche, a causa dei cambiamenti globali e all’incremento dei fenomeni estremi, anche in zone storicamente lontane da queste problematiche. In questo caso la richiesta di affidabilità computazionale, oltre che di pure prestazioni, è ancora più pressante poiché le simulazioni non coinvolgono solo giorni, ma mesi, anni, centinaia di anni e millenni.<br />\nRichardson, padre dei metodi risolutori alla base della meteorologia computazionale, sarebbe stato sicuramente contento di sapere che il suo approccio è l’attuale chiave di volta per salvare il mondo piuttosto che per distruggerlo e… perché no, portare a casa anche la Vecchia Brocca.</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}s:10:\"field_tags\";a:0:{}s:11:\"field_image\";a:0:{}}',0,1436193670,1),('field:node:180','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:3599:\"<p>Ciao ragazzi,</p>\r\n<p>Mi chiamo Arenare Gabriele e sono uno studente d'informatica (percorso Tecnologie Multimediali) del 3° Anno fuori corso. Questo è il mio primo topic che scrivo, e volevo postare un po di Appunti, Tesine, Progetti ed Esercizi fatti per esami sostenuti durante questi anni... La maggior parte del materiale è stato fatto in gruppo, e quindi ringrazio anche i miei Amici / Colleghi Pasquale Forte e Alessandro Aiello... Speriamo che vi siano utili! :)</p>\r\n<p> </p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=d6df5834156025d0cb968fb753c1b92e8d7d2729&file=/%5BArenare%20Gabriele%5D%20Esercizi%20Programmazione%20I.rar\">Programmazione I - Esercizi</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=88bf8950e28f7bdeba920141fd6d29bc4140d03f&file=/%5BArenare%20Gabriele%5D%20Progetto%20Programmazione%20I%20-%20Risiko%2C%20Dizionario%20Contrari.zip\">Programmazione I - Progetto (Risiko - Dizionario dei Contrari)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=46e46b493ebd25a305b4ceb97ff7e369df1e645a&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Appunti%20Economia%20Aziendale.pdf\">Economia Aziendale - Appunti</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=d1f5313eaf1d4b5a3956e8953847f204aff52a82&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%20Alessandro%20Aiello%5D%20Esercizi%20Programmazione%20II.rar\">Programmazione II - Esercizi</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=752f6d7199479a68f11b15a4e8558201d6fa64ed&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%20Alessandro%20Aiello%5D%20Progetto%20Basi%20di%20dati%20-%20Gestione%20ANM.pdf\">Basi di Dati - Progetto (Gestione Anm)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=5c83c649658b6b80fc667592d17cddabb66fbc18&file=/%5BGabriele%20Arenare%5D%20Tesina%20Realt%C3%A0%20Virtuale%20-%20Tecnologia%203-D.pdf\">Realtà Virtuale - Tesina (Tecnologia 3D)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=eee2cccfd34263786adae3951079bbcb5222cb52&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Progetto%20Realt%C3%A0%20virtuale%20-%20Tris%203D.rar\">Realtà Virtuale - Progetto (Tris 3D)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=c223c9deaf9d8056d8a771ccfbc644b023f3f6cb&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Appunti%20Calcolo%20Numerico.pdf\">Calcolo Numerico - Appunti</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=3dceb7be73e8629d6a23485ec4065c163e711a22&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%20Alessandro%20Aiello%5D%20Progetto%20Reti%20-%20Animal%20Shop.pdf\">Reti di Calcolatori - Progetto (Animal Shop)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=0716ef60cd2dbb7e16b603eab1cf72d2ae9ba75c&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Appunti%20Metodi%20per%20la%20Comunicazione%20Multimediale.pdf\">Metodi per la Comunicazione Multimediale - Appunti</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=11f977bdaed29fcc8a465aa83b2a88f170086e07&file=/%5BArenare%20Gabriele%5D%20Tesina%20MCM%20-%20Audio%20MPEG%20layer%201-2-3.pdf\">Metodi per la Comunicazione Multimediale - Tesina (Mpeg Audio 1,2,3)</a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:3488:\"<p>Ciao ragazzi,<br />\nMi chiamo Arenare Gabriele e sono uno studente d\'informatica (percorso Tecnologie Multimediali) del 3° Anno fuori corso. Questo è il mio primo topic che scrivo, e volevo postare un po di Appunti, Tesine, Progetti ed Esercizi fatti per esami sostenuti durante questi anni... La maggior parte del materiale è stato fatto in gruppo, e quindi ringrazio anche i miei Amici / Colleghi Pasquale Forte e Alessandro Aiello... Speriamo che vi siano utili! :)<br />\n <br /><a href=\"http://box.uniparthenope.it/public.php?service=files&token=d6df5834156025d0cb968fb753c1b92e8d7d2729&file=/%5BArenare%20Gabriele%5D%20Esercizi%20Programmazione%20I.rar\">Programmazione I - Esercizi</a><br /><a href=\"http://box.uniparthenope.it/public.php?service=files&token=88bf8950e28f7bdeba920141fd6d29bc4140d03f&file=/%5BArenare%20Gabriele%5D%20Progetto%20Programmazione%20I%20-%20Risiko%2C%20Dizionario%20Contrari.zip\">Programmazione I - Progetto (Risiko - Dizionario dei Contrari)</a><br /><a href=\"http://box.uniparthenope.it/public.php?service=files&token=46e46b493ebd25a305b4ceb97ff7e369df1e645a&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Appunti%20Economia%20Aziendale.pdf\">Economia Aziendale - Appunti</a><br /><a href=\"http://box.uniparthenope.it/public.php?service=files&token=d1f5313eaf1d4b5a3956e8953847f204aff52a82&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%20Alessandro%20Aiello%5D%20Esercizi%20Programmazione%20II.rar\">Programmazione II - Esercizi</a><br /><a href=\"http://box.uniparthenope.it/public.php?service=files&token=752f6d7199479a68f11b15a4e8558201d6fa64ed&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%20Alessandro%20Aiello%5D%20Progetto%20Basi%20di%20dati%20-%20Gestione%20ANM.pdf\">Basi di Dati - Progetto (Gestione Anm)</a><br /><a href=\"http://box.uniparthenope.it/public.php?service=files&token=5c83c649658b6b80fc667592d17cddabb66fbc18&file=/%5BGabriele%20Arenare%5D%20Tesina%20Realt%C3%A0%20Virtuale%20-%20Tecnologia%203-D.pdf\">Realtà Virtuale - Tesina (Tecnologia 3D)</a><br /><a href=\"http://box.uniparthenope.it/public.php?service=files&token=eee2cccfd34263786adae3951079bbcb5222cb52&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Progetto%20Realt%C3%A0%20virtuale%20-%20Tris%203D.rar\">Realtà Virtuale - Progetto (Tris 3D)</a><br /><a href=\"http://box.uniparthenope.it/public.php?service=files&token=c223c9deaf9d8056d8a771ccfbc644b023f3f6cb&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Appunti%20Calcolo%20Numerico.pdf\">Calcolo Numerico - Appunti</a><br /><a href=\"http://box.uniparthenope.it/public.php?service=files&token=3dceb7be73e8629d6a23485ec4065c163e711a22&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%20Alessandro%20Aiello%5D%20Progetto%20Reti%20-%20Animal%20Shop.pdf\">Reti di Calcolatori - Progetto (Animal Shop)</a><br /><a href=\"http://box.uniparthenope.it/public.php?service=files&token=0716ef60cd2dbb7e16b603eab1cf72d2ae9ba75c&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Appunti%20Metodi%20per%20la%20Comunicazione%20Multimediale.pdf\">Metodi per la Comunicazione Multimediale - Appunti</a><br /><a href=\"http://box.uniparthenope.it/public.php?service=files&token=11f977bdaed29fcc8a465aa83b2a88f170086e07&file=/%5BArenare%20Gabriele%5D%20Tesina%20MCM%20-%20Audio%20MPEG%20layer%201-2-3.pdf\">Metodi per la Comunicazione Multimediale - Tesina (Mpeg Audio 1,2,3)</a><br />\n <br />\n <br />\n <br />\n <br />\n </p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434756914,1),('field:node:181','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:2623:\"<p>Cari colleghi, condivido con voi la prima fase di progettazione dell'app. android <strong>"time-show UNIPARTHENOPE".</strong></p>\r\n<p>Il progetto è strettamente collegato con il software realizzato per l'esame di tecnologie web (<a href=\"http://students.uniparthenope.it/?q=node/175\">http://students.uniparthenope.it/?q=node/175)</a>. </p>\r\n<p>Risorse essenziali per realizzare l'applicazione, sono le API inerenti agli orari degli insegnamenti dei corsi di facoltà, consultabili al seguente link: <a href=\"http://students.uniparthenope.it:10003/orario.json\">http://students.uniparthenope.it:10003/orario.json</a></p>\r\n<p>Come già spiegato nel mio ultimo articolo, si fa riferimento solo all'orario del corso di informatica, poiche si attendono sviluppi dall' "alto" XD</p>\r\n<p>Ritornando all'applicazione android, essa prevede la possibilità di accedere in modalità autenticata o modalita ospite. L'idea è quella di permettere alle matricole (e non) di consultare i corsi previsti in giornata, il giorno seguente, o l'intera settimana. Effettuando l'accesso con la propria matricola e password, tramite appositi filtri, la selezione del proprio corso avverrà in automatico; inoltre sarà possibile controllare se sono previsti corsi di esami NON ancora sostenuti. <br />\r\n In modalità ospite invece, sarà disponibile un form per la selezione di corsi specifici.</p>\r\n<p>Un primo screenshot dell'accesso all'app.</p>\r\n<p><a href=\"/sites/default/files/images/20122210120148.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122210120148.jpg\" style=\"height: 294px; width: 200px; \" /></a> </p>\r\n<p>Per ora ho sviluppato la fase di accesso autenticato:</p>\r\n<p><a href=\"/sites/default/files/images/20122210120415.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122210120415.jpg\" style=\"height: 294px; width: 200px; \" /></a></p>\r\n<p>Per controllare se il login è andato a buon fine, utilizzo le api disponibili per gli studenti:</p>\r\n<p><span style=\"color:#0000cd;\">http://api.uniparthenope.it:9998/student/exams/studyplanning.json?user=XXXX&password=XXXX</span></p>\r\n<p>L'avvenuto accesso registrerà i dati in un database locale, per gestire successivi utilizzi dell'applicazione.</p>\r\n<p>Il codice relativo alla gestione del database ed al "consumo" dei file JSON saranno resi disponibili nella documentazione ufficiale.</p>\r\n<p>Saluti a Tutti!</p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:2524:\"<p>Cari colleghi, condivido con voi la prima fase di progettazione dell\'app. android <strong>\"time-show UNIPARTHENOPE\".</strong></p>\n<p>Il progetto è strettamente collegato con il software realizzato per l\'esame di tecnologie web (<a href=\"http://students.uniparthenope.it/?q=node/175\">http://students.uniparthenope.it/?q=node/175)</a>. </p>\n<p>Risorse essenziali per realizzare l\'applicazione, sono le API inerenti agli orari degli insegnamenti dei corsi di facoltà, consultabili al seguente link: <a href=\"http://students.uniparthenope.it:10003/orario.json\">http://students.uniparthenope.it:10003/orario.json</a></p>\n<p>Come già spiegato nel mio ultimo articolo, si fa riferimento solo all\'orario del corso di informatica, poiche si attendono sviluppi dall\' \"alto\" XD</p>\n<p>Ritornando all\'applicazione android, essa prevede la possibilità di accedere in modalità autenticata o modalita ospite. L\'idea è quella di permettere alle matricole (e non) di consultare i corsi previsti in giornata, il giorno seguente, o l\'intera settimana. Effettuando l\'accesso con la propria matricola e password, tramite appositi filtri, la selezione del proprio corso avverrà in automatico; inoltre sarà possibile controllare se sono previsti corsi di esami NON ancora sostenuti. <br />\n In modalità ospite invece, sarà disponibile un form per la selezione di corsi specifici.</p>\n<p>Un primo screenshot dell\'accesso all\'app.</p>\n<p><a href=\"/sites/default/files/images/20122210120148.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122210120148.jpg\" style=\"height: 294px; width: 200px; \" /></a> </p>\n<p>Per ora ho sviluppato la fase di accesso autenticato:</p>\n<p><a href=\"/sites/default/files/images/20122210120415.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122210120415.jpg\" style=\"height: 294px; width: 200px; \" /></a></p>\n<p>Per controllare se il login è andato a buon fine, utilizzo le api disponibili per gli studenti:</p>\n<p><span style=\"color:#0000cd;\"><a href=\"http://api.uniparthenope.it:9998/student/exams/studyplanning.json?user=XXXX&password=XXXX\">http://api.uniparthenope.it:9998/student/exams/studyplanning.json?user=X...</a></span></p>\n<p>L\'avvenuto accesso registrerà i dati in un database locale, per gestire successivi utilizzi dell\'applicazione.</p>\n<p>Il codice relativo alla gestione del database ed al \"consumo\" dei file JSON saranno resi disponibili nella documentazione ufficiale.</p>\n<p>Saluti a Tutti!</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434759913,1),('field:node:182','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:481:\"<p>Salve a tutti, come da titolo sto aggiungendo al progetto il secondo algoritmo di cifratura,cioè l'algoritmo di Vigenère. L'algoritmo vero e proprio è ormai completo, ma sto trovando difficoltà nello sviluppo dell'interfaccia grafica, non ho ancora le idee ben chiare, ma vorrei inserire la tavola di Vigenère per mostrare in che modo opera l'algoritmo. Spero di riuscirci nel più breve tempo possibile.</p>\r\n<p>PF</p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:426:\"<p>Salve a tutti, come da titolo sto aggiungendo al progetto il secondo algoritmo di cifratura,cioè l\'algoritmo di Vigenère. L\'algoritmo vero e proprio è ormai completo, ma sto trovando difficoltà nello sviluppo dell\'interfaccia grafica, non ho ancora le idee ben chiare, ma vorrei inserire la tavola di Vigenère per mostrare in che modo opera l\'algoritmo. Spero di riuscirci nel più breve tempo possibile.<br />\nPF</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434758551,1),('field:node:183','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:36491:\"<p> </p>\r\n<pre style=\"color: rgb(0, 0, 0); word-wrap: break-word; white-space: pre-wrap; \">\r\n GNU GENERAL PUBLIC LICENSE\r\n Version 3, 29 June 2007\r\n\r\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\r\n Everyone is permitted to copy and distribute verbatim copies\r\n of this license document, but changing it is not allowed.\r\n\r\n Preamble\r\n\r\n The GNU General Public License is a free, copyleft license for\r\nsoftware and other kinds of works.\r\n\r\n The licenses for most software and other practical works are designed\r\nto take away your freedom to share and change the works. By contrast,\r\nthe GNU General Public License is intended to guarantee your freedom to\r\nshare and change all versions of a program--to make sure it remains free\r\nsoftware for all its users. We, the Free Software Foundation, use the\r\nGNU General Public License for most of our software; it applies also to\r\nany other work released this way by its authors. You can apply it to\r\nyour programs, too.\r\n\r\n When we speak of free software, we are referring to freedom, not\r\nprice. Our General Public Licenses are designed to make sure that you\r\nhave the freedom to distribute copies of free software (and charge for\r\nthem if you wish), that you receive source code or can get it if you\r\nwant it, that you can change the software or use pieces of it in new\r\nfree programs, and that you know you can do these things.\r\n\r\n To protect your rights, we need to prevent others from denying you\r\nthese rights or asking you to surrender the rights. Therefore, you have\r\ncertain responsibilities if you distribute copies of the software, or if\r\nyou modify it: responsibilities to respect the freedom of others.\r\n\r\n For example, if you distribute copies of such a program, whether\r\ngratis or for a fee, you must pass on to the recipients the same\r\nfreedoms that you received. You must make sure that they, too, receive\r\nor can get the source code. And you must show them these terms so they\r\nknow their rights.\r\n\r\n Developers that use the GNU GPL protect your rights with two steps:\r\n(1) assert copyright on the software, and (2) offer you this License\r\ngiving you legal permission to copy, distribute and/or modify it.\r\n\r\n For the developers' and authors' protection, the GPL clearly explains\r\nthat there is no warranty for this free software. For both users' and\r\nauthors' sake, the GPL requires that modified versions be marked as\r\nchanged, so that their problems will not be attributed erroneously to\r\nauthors of previous versions.\r\n\r\n Some devices are designed to deny users access to install or run\r\nmodified versions of the software inside them, although the manufacturer\r\ncan do so. This is fundamentally incompatible with the aim of\r\nprotecting users' freedom to change the software. The systematic\r\npattern of such abuse occurs in the area of products for individuals to\r\nuse, which is precisely where it is most unacceptable. Therefore, we\r\nhave designed this version of the GPL to prohibit the practice for those\r\nproducts. If such problems arise substantially in other domains, we\r\nstand ready to extend this provision to those domains in future versions\r\nof the GPL, as needed to protect the freedom of users.\r\n\r\n Finally, every program is threatened constantly by software patents.\r\nStates should not allow patents to restrict development and use of\r\nsoftware on general-purpose computers, but in those that do, we wish to\r\navoid the special danger that patents applied to a free program could\r\nmake it effectively proprietary. To prevent this, the GPL assures that\r\npatents cannot be used to render the program non-free.\r\n\r\n The precise terms and conditions for copying, distribution and\r\nmodification follow.\r\n\r\n TERMS AND CONDITIONS\r\n\r\n 0. Definitions.\r\n\r\n "This License" refers to version 3 of the GNU General Public License.\r\n\r\n "Copyright" also means copyright-like laws that apply to other kinds of\r\nworks, such as semiconductor masks.\r\n\r\n "The Program" refers to any copyrightable work licensed under this\r\nLicense. Each licensee is addressed as "you". "Licensees" and\r\n"recipients" may be individuals or organizations.\r\n\r\n To "modify" a work means to copy from or adapt all or part of the work\r\nin a fashion requiring copyright permission, other than the making of an\r\nexact copy. The resulting work is called a "modified version" of the\r\nearlier work or a work "based on" the earlier work.\r\n\r\n A "covered work" means either the unmodified Program or a work based\r\non the Program.\r\n\r\n To "propagate" a work means to do anything with it that, without\r\npermission, would make you directly or secondarily liable for\r\ninfringement under applicable copyright law, except executing it on a\r\ncomputer or modifying a private copy. Propagation includes copying,\r\ndistribution (with or without modification), making available to the\r\npublic, and in some countries other activities as well.\r\n\r\n To "convey" a work means any kind of propagation that enables other\r\nparties to make or receive copies. Mere interaction with a user through\r\na computer network, with no transfer of a copy, is not conveying.\r\n\r\n An interactive user interface displays "Appropriate Legal Notices"\r\nto the extent that it includes a convenient and prominently visible\r\nfeature that (1) displays an appropriate copyright notice, and (2)\r\ntells the user that there is no warranty for the work (except to the\r\nextent that warranties are provided), that licensees may convey the\r\nwork under this License, and how to view a copy of this License. If\r\nthe interface presents a list of user commands or options, such as a\r\nmenu, a prominent item in the list meets this criterion.\r\n\r\n 1. Source Code.\r\n\r\n The "source code" for a work means the preferred form of the work\r\nfor making modifications to it. "Object code" means any non-source\r\nform of a work.\r\n\r\n A "Standard Interface" means an interface that either is an official\r\nstandard defined by a recognized standards body, or, in the case of\r\ninterfaces specified for a particular programming language, one that\r\nis widely used among developers working in that language.\r\n\r\n The "System Libraries" of an executable work include anything, other\r\nthan the work as a whole, that (a) is included in the normal form of\r\npackaging a Major Component, but which is not part of that Major\r\nComponent, and (b) serves only to enable use of the work with that\r\nMajor Component, or to implement a Standard Interface for which an\r\nimplementation is available to the public in source code form. A\r\n"Major Component", in this context, means a major essential component\r\n(kernel, window system, and so on) of the specific operating system\r\n(if any) on which the executable work runs, or a compiler used to\r\nproduce the work, or an object code interpreter used to run it.\r\n\r\n The "Corresponding Source" for a work in object code form means all\r\nthe source code needed to generate, install, and (for an executable\r\nwork) run the object code and to modify the work, including scripts to\r\ncontrol those activities. However, it does not include the work's\r\nSystem Libraries, or general-purpose tools or generally available free\r\nprograms which are used unmodified in performing those activities but\r\nwhich are not part of the work. For example, Corresponding Source\r\nincludes interface definition files associated with source files for\r\nthe work, and the source code for shared libraries and dynamically\r\nlinked subprograms that the work is specifically designed to require,\r\nsuch as by intimate data communication or control flow between those\r\nsubprograms and other parts of the work.\r\n\r\n The Corresponding Source need not include anything that users\r\ncan regenerate automatically from other parts of the Corresponding\r\nSource.\r\n\r\n The Corresponding Source for a work in source code form is that\r\nsame work.\r\n\r\n 2. Basic Permissions.\r\n\r\n All rights granted under this License are granted for the term of\r\ncopyright on the Program, and are irrevocable provided the stated\r\nconditions are met. This License explicitly affirms your unlimited\r\npermission to run the unmodified Program. The output from running a\r\ncovered work is covered by this License only if the output, given its\r\ncontent, constitutes a covered work. This License acknowledges your\r\nrights of fair use or other equivalent, as provided by copyright law.\r\n\r\n You may make, run and propagate covered works that you do not\r\nconvey, without conditions so long as your license otherwise remains\r\nin force. You may convey covered works to others for the sole purpose\r\nof having them make modifications exclusively for you, or provide you\r\nwith facilities for running those works, provided that you comply with\r\nthe terms of this License in conveying all material for which you do\r\nnot control copyright. Those thus making or running the covered works\r\nfor you must do so exclusively on your behalf, under your direction\r\nand control, on terms that prohibit them from making any copies of\r\nyour copyrighted material outside their relationship with you.\r\n\r\n Conveying under any other circumstances is permitted solely under\r\nthe conditions stated below. Sublicensing is not allowed; section 10\r\nmakes it unnecessary.\r\n\r\n 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\r\n\r\n No covered work shall be deemed part of an effective technological\r\nmeasure under any applicable law fulfilling obligations under article\r\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\r\nsimilar laws prohibiting or restricting circumvention of such\r\nmeasures.\r\n\r\n When you convey a covered work, you waive any legal power to forbid\r\ncircumvention of technological measures to the extent such circumvention\r\nis effected by exercising rights under this License with respect to\r\nthe covered work, and you disclaim any intention to limit operation or\r\nmodification of the work as a means of enforcing, against the work's\r\nusers, your or third parties' legal rights to forbid circumvention of\r\ntechnological measures.\r\n\r\n 4. Conveying Verbatim Copies.\r\n\r\n You may convey verbatim copies of the Program's source code as you\r\nreceive it, in any medium, provided that you conspicuously and\r\nappropriately publish on each copy an appropriate copyright notice;\r\nkeep intact all notices stating that this License and any\r\nnon-permissive terms added in accord with section 7 apply to the code;\r\nkeep intact all notices of the absence of any warranty; and give all\r\nrecipients a copy of this License along with the Program.\r\n\r\n You may charge any price or no price for each copy that you convey,\r\nand you may offer support or warranty protection for a fee.\r\n\r\n 5. Conveying Modified Source Versions.\r\n\r\n You may convey a work based on the Program, or the modifications to\r\nproduce it from the Program, in the form of source code under the\r\nterms of section 4, provided that you also meet all of these conditions:\r\n\r\n a) The work must carry prominent notices stating that you modified\r\n it, and giving a relevant date.\r\n\r\n b) The work must carry prominent notices stating that it is\r\n released under this License and any conditions added under section\r\n 7. This requirement modifies the requirement in section 4 to\r\n "keep intact all notices".\r\n\r\n c) You must license the entire work, as a whole, under this\r\n License to anyone who comes into possession of a copy. This\r\n License will therefore apply, along with any applicable section 7\r\n additional terms, to the whole of the work, and all its parts,\r\n regardless of how they are packaged. This License gives no\r\n permission to license the work in any other way, but it does not\r\n invalidate such permission if you have separately received it.\r\n\r\n d) If the work has interactive user interfaces, each must display\r\n Appropriate Legal Notices; however, if the Program has interactive\r\n interfaces that do not display Appropriate Legal Notices, your\r\n work need not make them do so.\r\n\r\n A compilation of a covered work with other separate and independent\r\nworks, which are not by their nature extensions of the covered work,\r\nand which are not combined with it such as to form a larger program,\r\nin or on a volume of a storage or distribution medium, is called an\r\n"aggregate" if the compilation and its resulting copyright are not\r\nused to limit the access or legal rights of the compilation's users\r\nbeyond what the individual works permit. Inclusion of a covered work\r\nin an aggregate does not cause this License to apply to the other\r\nparts of the aggregate.\r\n\r\n 6. Conveying Non-Source Forms.\r\n\r\n You may convey a covered work in object code form under the terms\r\nof sections 4 and 5, provided that you also convey the\r\nmachine-readable Corresponding Source under the terms of this License,\r\nin one of these ways:\r\n\r\n a) Convey the object code in, or embodied in, a physical product\r\n (including a physical distribution medium), accompanied by the\r\n Corresponding Source fixed on a durable physical medium\r\n customarily used for software interchange.\r\n\r\n b) Convey the object code in, or embodied in, a physical product\r\n (including a physical distribution medium), accompanied by a\r\n written offer, valid for at least three years and valid for as\r\n long as you offer spare parts or customer support for that product\r\n model, to give anyone who possesses the object code either (1) a\r\n copy of the Corresponding Source for all the software in the\r\n product that is covered by this License, on a durable physical\r\n medium customarily used for software interchange, for a price no\r\n more than your reasonable cost of physically performing this\r\n conveying of source, or (2) access to copy the\r\n Corresponding Source from a network server at no charge.\r\n\r\n c) Convey individual copies of the object code with a copy of the\r\n written offer to provide the Corresponding Source. This\r\n alternative is allowed only occasionally and noncommercially, and\r\n only if you received the object code with such an offer, in accord\r\n with subsection 6b.\r\n\r\n d) Convey the object code by offering access from a designated\r\n place (gratis or for a charge), and offer equivalent access to the\r\n Corresponding Source in the same way through the same place at no\r\n further charge. You need not require recipients to copy the\r\n Corresponding Source along with the object code. If the place to\r\n copy the object code is a network server, the Corresponding Source\r\n may be on a different server (operated by you or a third party)\r\n that supports equivalent copying facilities, provided you maintain\r\n clear directions next to the object code saying where to find the\r\n Corresponding Source. Regardless of what server hosts the\r\n Corresponding Source, you remain obligated to ensure that it is\r\n available for as long as needed to satisfy these requirements.\r\n\r\n e) Convey the object code using peer-to-peer transmission, provided\r\n you inform other peers where the object code and Corresponding\r\n Source of the work are being offered to the general public at no\r\n charge under subsection 6d.\r\n\r\n A separable portion of the object code, whose source code is excluded\r\nfrom the Corresponding Source as a System Library, need not be\r\nincluded in conveying the object code work.\r\n\r\n A "User Product" is either (1) a "consumer product", which means any\r\ntangible personal property which is normally used for personal, family,\r\nor household purposes, or (2) anything designed or sold for incorporation\r\ninto a dwelling. In determining whether a product is a consumer product,\r\ndoubtful cases shall be resolved in favor of coverage. For a particular\r\nproduct received by a particular user, "normally used" refers to a\r\ntypical or common use of that class of product, regardless of the status\r\nof the particular user or of the way in which the particular user\r\nactually uses, or expects or is expected to use, the product. A product\r\nis a consumer product regardless of whether the product has substantial\r\ncommercial, industrial or non-consumer uses, unless such uses represent\r\nthe only significant mode of use of the product.\r\n\r\n "Installation Information" for a User Product means any methods,\r\nprocedures, authorization keys, or other information required to install\r\nand execute modified versions of a covered work in that User Product from\r\na modified version of its Corresponding Source. The information must\r\nsuffice to ensure that the continued functioning of the modified object\r\ncode is in no case prevented or interfered with solely because\r\nmodification has been made.\r\n\r\n If you convey an object code work under this section in, or with, or\r\nspecifically for use in, a User Product, and the conveying occurs as\r\npart of a transaction in which the right of possession and use of the\r\nUser Product is transferred to the recipient in perpetuity or for a\r\nfixed term (regardless of how the transaction is characterized), the\r\nCorresponding Source conveyed under this section must be accompanied\r\nby the Installation Information. But this requirement does not apply\r\nif neither you nor any third party retains the ability to install\r\nmodified object code on the User Product (for example, the work has\r\nbeen installed in ROM).\r\n\r\n The requirement to provide Installation Information does not include a\r\nrequirement to continue to provide support service, warranty, or updates\r\nfor a work that has been modified or installed by the recipient, or for\r\nthe User Product in which it has been modified or installed. Access to a\r\nnetwork may be denied when the modification itself materially and\r\nadversely affects the operation of the network or violates the rules and\r\nprotocols for communication across the network.\r\n\r\n Corresponding Source conveyed, and Installation Information provided,\r\nin accord with this section must be in a format that is publicly\r\ndocumented (and with an implementation available to the public in\r\nsource code form), and must require no special password or key for\r\nunpacking, reading or copying.\r\n\r\n 7. Additional Terms.\r\n\r\n "Additional permissions" are terms that supplement the terms of this\r\nLicense by making exceptions from one or more of its conditions.\r\nAdditional permissions that are applicable to the entire Program shall\r\nbe treated as though they were included in this License, to the extent\r\nthat they are valid under applicable law. If additional permissions\r\napply only to part of the Program, that part may be used separately\r\nunder those permissions, but the entire Program remains governed by\r\nthis License without regard to the additional permissions.\r\n\r\n When you convey a copy of a covered work, you may at your option\r\nremove any additional permissions from that copy, or from any part of\r\nit. (Additional permissions may be written to require their own\r\nremoval in certain cases when you modify the work.) You may place\r\nadditional permissions on material, added by you to a covered work,\r\nfor which you have or can give appropriate copyright permission.\r\n\r\n Notwithstanding any other provision of this License, for material you\r\nadd to a covered work, you may (if authorized by the copyright holders of\r\nthat material) supplement the terms of this License with terms:\r\n\r\n a) Disclaiming warranty or limiting liability differently from the\r\n terms of sections 15 and 16 of this License; or\r\n\r\n b) Requiring preservation of specified reasonable legal notices or\r\n author attributions in that material or in the Appropriate Legal\r\n Notices displayed by works containing it; or\r\n\r\n c) Prohibiting misrepresentation of the origin of that material, or\r\n requiring that modified versions of such material be marked in\r\n reasonable ways as different from the original version; or\r\n\r\n d) Limiting the use for publicity purposes of names of licensors or\r\n authors of the material; or\r\n\r\n e) Declining to grant rights under trademark law for use of some\r\n trade names, trademarks, or service marks; or\r\n\r\n f) Requiring indemnification of licensors and authors of that\r\n material by anyone who conveys the material (or modified versions of\r\n it) with contractual assumptions of liability to the recipient, for\r\n any liability that these contractual assumptions directly impose on\r\n those licensors and authors.\r\n\r\n All other non-permissive additional terms are considered "further\r\nrestrictions" within the meaning of section 10. If the Program as you\r\nreceived it, or any part of it, contains a notice stating that it is\r\ngoverned by this License along with a term that is a further\r\nrestriction, you may remove that term. If a license document contains\r\na further restriction but permits relicensing or conveying under this\r\nLicense, you may add to a covered work material governed by the terms\r\nof that license document, provided that the further restriction does\r\nnot survive such relicensing or conveying.\r\n\r\n If you add terms to a covered work in accord with this section, you\r\nmust place, in the relevant source files, a statement of the\r\nadditional terms that apply to those files, or a notice indicating\r\nwhere to find the applicable terms.\r\n\r\n Additional terms, permissive or non-permissive, may be stated in the\r\nform of a separately written license, or stated as exceptions;\r\nthe above requirements apply either way.\r\n\r\n 8. Termination.\r\n\r\n You may not propagate or modify a covered work except as expressly\r\nprovided under this License. Any attempt otherwise to propagate or\r\nmodify it is void, and will automatically terminate your rights under\r\nthis License (including any patent licenses granted under the third\r\nparagraph of section 11).\r\n\r\n However, if you cease all violation of this License, then your\r\nlicense from a particular copyright holder is reinstated (a)\r\nprovisionally, unless and until the copyright holder explicitly and\r\nfinally terminates your license, and (b) permanently, if the copyright\r\nholder fails to notify you of the violation by some reasonable means\r\nprior to 60 days after the cessation.\r\n\r\n Moreover, your license from a particular copyright holder is\r\nreinstated permanently if the copyright holder notifies you of the\r\nviolation by some reasonable means, this is the first time you have\r\nreceived notice of violation of this License (for any work) from that\r\ncopyright holder, and you cure the violation prior to 30 days after\r\nyour receipt of the notice.\r\n\r\n Termination of your rights under this section does not terminate the\r\nlicenses of parties who have received copies or rights from you under\r\nthis License. If your rights have been terminated and not permanently\r\nreinstated, you do not qualify to receive new licenses for the same\r\nmaterial under section 10.\r\n\r\n 9. Acceptance Not Required for Having Copies.\r\n\r\n You are not required to accept this License in order to receive or\r\nrun a copy of the Program. Ancillary propagation of a covered work\r\noccurring solely as a consequence of using peer-to-peer transmission\r\nto receive a copy likewise does not require acceptance. However,\r\nnothing other than this License grants you permission to propagate or\r\nmodify any covered work. These actions infringe copyright if you do\r\nnot accept this License. Therefore, by modifying or propagating a\r\ncovered work, you indicate your acceptance of this License to do so.\r\n\r\n 10. Automatic Licensing of Downstream Recipients.\r\n\r\n Each time you convey a covered work, the recipient automatically\r\nreceives a license from the original licensors, to run, modify and\r\npropagate that work, subject to this License. You are not responsible\r\nfor enforcing compliance by third parties with this License.\r\n\r\n An "entity transaction" is a transaction transferring control of an\r\norganization, or substantially all assets of one, or subdividing an\r\norganization, or merging organizations. If propagation of a covered\r\nwork results from an entity transaction, each party to that\r\ntransaction who receives a copy of the work also receives whatever\r\nlicenses to the work the party's predecessor in interest had or could\r\ngive under the previous paragraph, plus a right to possession of the\r\nCorresponding Source of the work from the predecessor in interest, if\r\nthe predecessor has it or can get it with reasonable efforts.\r\n\r\n You may not impose any further restrictions on the exercise of the\r\nrights granted or affirmed under this License. For example, you may\r\nnot impose a license fee, royalty, or other charge for exercise of\r\nrights granted under this License, and you may not initiate litigation\r\n(including a cross-claim or counterclaim in a lawsuit) alleging that\r\nany patent claim is infringed by making, using, selling, offering for\r\nsale, or importing the Program or any portion of it.\r\n\r\n 11. Patents.\r\n\r\n A "contributor" is a copyright holder who authorizes use under this\r\nLicense of the Program or a work on which the Program is based. The\r\nwork thus licensed is called the contributor's "contributor version".\r\n\r\n A contributor's "essential patent claims" are all patent claims\r\nowned or controlled by the contributor, whether already acquired or\r\nhereafter acquired, that would be infringed by some manner, permitted\r\nby this License, of making, using, or selling its contributor version,\r\nbut do not include claims that would be infringed only as a\r\nconsequence of further modification of the contributor version. For\r\npurposes of this definition, "control" includes the right to grant\r\npatent sublicenses in a manner consistent with the requirements of\r\nthis License.\r\n\r\n Each contributor grants you a non-exclusive, worldwide, royalty-free\r\npatent license under the contributor's essential patent claims, to\r\nmake, use, sell, offer for sale, import and otherwise run, modify and\r\npropagate the contents of its contributor version.\r\n\r\n In the following three paragraphs, a "patent license" is any express\r\nagreement or commitment, however denominated, not to enforce a patent\r\n(such as an express permission to practice a patent or covenant not to\r\nsue for patent infringement). To "grant" such a patent license to a\r\nparty means to make such an agreement or commitment not to enforce a\r\npatent against the party.\r\n\r\n If you convey a covered work, knowingly relying on a patent license,\r\nand the Corresponding Source of the work is not available for anyone\r\nto copy, free of charge and under the terms of this License, through a\r\npublicly available network server or other readily accessible means,\r\nthen you must either (1) cause the Corresponding Source to be so\r\navailable, or (2) arrange to deprive yourself of the benefit of the\r\npatent license for this particular work, or (3) arrange, in a manner\r\nconsistent with the requirements of this License, to extend the patent\r\nlicense to downstream recipients. "Knowingly relying" means you have\r\nactual knowledge that, but for the patent license, your conveying the\r\ncovered work in a country, or your recipient's use of the covered work\r\nin a country, would infringe one or more identifiable patents in that\r\ncountry that you have reason to believe are valid.\r\n\r\n If, pursuant to or in connection with a single transaction or\r\narrangement, you convey, or propagate by procuring conveyance of, a\r\ncovered work, and grant a patent license to some of the parties\r\nreceiving the covered work authorizing them to use, propagate, modify\r\nor convey a specific copy of the covered work, then the patent license\r\nyou grant is automatically extended to all recipients of the covered\r\nwork and works based on it.\r\n\r\n A patent license is "discriminatory" if it does not include within\r\nthe scope of its coverage, prohibits the exercise of, or is\r\nconditioned on the non-exercise of one or more of the rights that are\r\nspecifically granted under this License. You may not convey a covered\r\nwork if you are a party to an arrangement with a third party that is\r\nin the business of distributing software, under which you make payment\r\nto the third party based on the extent of your activity of conveying\r\nthe work, and under which the third party grants, to any of the\r\nparties who would receive the covered work from you, a discriminatory\r\npatent license (a) in connection with copies of the covered work\r\nconveyed by you (or copies made from those copies), or (b) primarily\r\nfor and in connection with specific products or compilations that\r\ncontain the covered work, unless you entered into that arrangement,\r\nor that patent license was granted, prior to 28 March 2007.\r\n\r\n Nothing in this License shall be construed as excluding or limiting\r\nany implied license or other defenses to infringement that may\r\notherwise be available to you under applicable patent law.\r\n\r\n 12. No Surrender of Others' Freedom.\r\n\r\n If conditions are imposed on you (whether by court order, agreement or\r\notherwise) that contradict the conditions of this License, they do not\r\nexcuse you from the conditions of this License. If you cannot convey a\r\ncovered work so as to satisfy simultaneously your obligations under this\r\nLicense and any other pertinent obligations, then as a consequence you may\r\nnot convey it at all. For example, if you agree to terms that obligate you\r\nto collect a royalty for further conveying from those to whom you convey\r\nthe Program, the only way you could satisfy both those terms and this\r\nLicense would be to refrain entirely from conveying the Program.\r\n\r\n 13. Use with the GNU Affero General Public License.\r\n\r\n Notwithstanding any other provision of this License, you have\r\npermission to link or combine any covered work with a work licensed\r\nunder version 3 of the GNU Affero General Public License into a single\r\ncombined work, and to convey the resulting work. The terms of this\r\nLicense will continue to apply to the part which is the covered work,\r\nbut the special requirements of the GNU Affero General Public License,\r\nsection 13, concerning interaction through a network will apply to the\r\ncombination as such.\r\n\r\n 14. Revised Versions of this License.\r\n\r\n The Free Software Foundation may publish revised and/or new versions of\r\nthe GNU General Public License from time to time. Such new versions will\r\nbe similar in spirit to the present version, but may differ in detail to\r\naddress new problems or concerns.\r\n\r\n Each version is given a distinguishing version number. If the\r\nProgram specifies that a certain numbered version of the GNU General\r\nPublic License "or any later version" applies to it, you have the\r\noption of following the terms and conditions either of that numbered\r\nversion or of any later version published by the Free Software\r\nFoundation. If the Program does not specify a version number of the\r\nGNU General Public License, you may choose any version ever published\r\nby the Free Software Foundation.\r\n\r\n If the Program specifies that a proxy can decide which future\r\nversions of the GNU General Public License can be used, that proxy's\r\npublic statement of acceptance of a version permanently authorizes you\r\nto choose that version for the Program.\r\n\r\n Later license versions may give you additional or different\r\npermissions. However, no additional obligations are imposed on any\r\nauthor or copyright holder as a result of your choosing to follow a\r\nlater version.\r\n\r\n 15. Disclaimer of Warranty.\r\n\r\n THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\r\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\r\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY\r\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\r\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\r\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\r\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\r\n\r\n 16. Limitation of Liability.\r\n\r\n IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\r\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\r\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\r\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\r\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\r\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\r\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\r\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\r\nSUCH DAMAGES.\r\n\r\n 17. Interpretation of Sections 15 and 16.\r\n\r\n If the disclaimer of warranty and limitation of liability provided\r\nabove cannot be given local legal effect according to their terms,\r\nreviewing courts shall apply local law that most closely approximates\r\nan absolute waiver of all civil liability in connection with the\r\nProgram, unless a warranty or assumption of liability accompanies a\r\ncopy of the Program in return for a fee.\r\n\r\n END OF TERMS AND CONDITIONS\r\n\r\n How to Apply These Terms to Your New Programs\r\n\r\n If you develop a new program, and you want it to be of the greatest\r\npossible use to the public, the best way to achieve this is to make it\r\nfree software which everyone can redistribute and change under these terms.\r\n\r\n To do so, attach the following notices to the program. It is safest\r\nto attach them to the start of each source file to most effectively\r\nstate the exclusion of warranty; and each file should have at least\r\nthe "copyright" line and a pointer to where the full notice is found.\r\n\r\n <one line to give the program's name and a brief idea of what it does.>\r\n Copyright (C) <year> <name of author>\r\n\r\n This program is free software: you can redistribute it and/or modify\r\n it under the terms of the GNU General Public License as published by\r\n the Free Software Foundation, either version 3 of the License, or\r\n (at your option) any later version.\r\n\r\n This program is distributed in the hope that it will be useful,\r\n but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n GNU General Public License for more details.\r\n\r\n You should have received a copy of the GNU General Public License\r\n along with this program. If not, see <http://www.gnu.org/licenses/>.\r\n\r\nAlso add information on how to contact you by electronic and paper mail.\r\n\r\n If the program does terminal interaction, make it output a short\r\nnotice like this when it starts in an interactive mode:\r\n\r\n <program> Copyright (C) <year> <name of author>\r\n This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\r\n This is free software, and you are welcome to redistribute it\r\n under certain conditions; type `show c' for details.\r\n\r\nThe hypothetical commands `show w' and `show c' should show the appropriate\r\nparts of the General Public License. Of course, your program's commands\r\nmight be different; for a GUI interface, you would use an "about box".\r\n\r\n You should also get your employer (if you work as a programmer) or school,\r\nif any, to sign a "copyright disclaimer" for the program, if necessary.\r\nFor more information on this, and how to apply and follow the GNU GPL, see\r\n<http://www.gnu.org/licenses/>.\r\n\r\n The GNU General Public License does not permit incorporating your program\r\ninto proprietary programs. If your program is a subroutine library, you\r\nmay consider it more useful to permit linking proprietary applications with\r\nthe library. If this is what you want to do, use the GNU Lesser General\r\nPublic License instead of this License. But first, please read\r\n<http://www.gnu.org/philosophy/why-not-lgpl.html>.</pre>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:38536:\"<p> </p>\n<p> GNU GENERAL PUBLIC LICENSE<br />\n Version 3, 29 June 2007</p>\n<p> Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/><br />\n Everyone is permitted to copy and distribute verbatim copies<br />\n of this license document, but changing it is not allowed.</p>\n<p> Preamble</p>\n<p> The GNU General Public License is a free, copyleft license for<br />\nsoftware and other kinds of works.</p>\n<p> The licenses for most software and other practical works are designed<br />\nto take away your freedom to share and change the works. By contrast,<br />\nthe GNU General Public License is intended to guarantee your freedom to<br />\nshare and change all versions of a program--to make sure it remains free<br />\nsoftware for all its users. We, the Free Software Foundation, use the<br />\nGNU General Public License for most of our software; it applies also to<br />\nany other work released this way by its authors. You can apply it to<br />\nyour programs, too.</p>\n<p> When we speak of free software, we are referring to freedom, not<br />\nprice. Our General Public Licenses are designed to make sure that you<br />\nhave the freedom to distribute copies of free software (and charge for<br />\nthem if you wish), that you receive source code or can get it if you<br />\nwant it, that you can change the software or use pieces of it in new<br />\nfree programs, and that you know you can do these things.</p>\n<p> To protect your rights, we need to prevent others from denying you<br />\nthese rights or asking you to surrender the rights. Therefore, you have<br />\ncertain responsibilities if you distribute copies of the software, or if<br />\nyou modify it: responsibilities to respect the freedom of others.</p>\n<p> For example, if you distribute copies of such a program, whether<br />\ngratis or for a fee, you must pass on to the recipients the same<br />\nfreedoms that you received. You must make sure that they, too, receive<br />\nor can get the source code. And you must show them these terms so they<br />\nknow their rights.</p>\n<p> Developers that use the GNU GPL protect your rights with two steps:<br />\n(1) assert copyright on the software, and (2) offer you this License<br />\ngiving you legal permission to copy, distribute and/or modify it.</p>\n<p> For the developers\' and authors\' protection, the GPL clearly explains<br />\nthat there is no warranty for this free software. For both users\' and<br />\nauthors\' sake, the GPL requires that modified versions be marked as<br />\nchanged, so that their problems will not be attributed erroneously to<br />\nauthors of previous versions.</p>\n<p> Some devices are designed to deny users access to install or run<br />\nmodified versions of the software inside them, although the manufacturer<br />\ncan do so. This is fundamentally incompatible with the aim of<br />\nprotecting users\' freedom to change the software. The systematic<br />\npattern of such abuse occurs in the area of products for individuals to<br />\nuse, which is precisely where it is most unacceptable. Therefore, we<br />\nhave designed this version of the GPL to prohibit the practice for those<br />\nproducts. If such problems arise substantially in other domains, we<br />\nstand ready to extend this provision to those domains in future versions<br />\nof the GPL, as needed to protect the freedom of users.</p>\n<p> Finally, every program is threatened constantly by software patents.<br />\nStates should not allow patents to restrict development and use of<br />\nsoftware on general-purpose computers, but in those that do, we wish to<br />\navoid the special danger that patents applied to a free program could<br />\nmake it effectively proprietary. To prevent this, the GPL assures that<br />\npatents cannot be used to render the program non-free.</p>\n<p> The precise terms and conditions for copying, distribution and<br />\nmodification follow.</p>\n<p> TERMS AND CONDITIONS</p>\n<p> 0. Definitions.</p>\n<p> \"This License\" refers to version 3 of the GNU General Public License.</p>\n<p> \"Copyright\" also means copyright-like laws that apply to other kinds of<br />\nworks, such as semiconductor masks.</p>\n<p> \"The Program\" refers to any copyrightable work licensed under this<br />\nLicense. Each licensee is addressed as \"you\". \"Licensees\" and<br />\n\"recipients\" may be individuals or organizations.</p>\n<p> To \"modify\" a work means to copy from or adapt all or part of the work<br />\nin a fashion requiring copyright permission, other than the making of an<br />\nexact copy. The resulting work is called a \"modified version\" of the<br />\nearlier work or a work \"based on\" the earlier work.</p>\n<p> A \"covered work\" means either the unmodified Program or a work based<br />\non the Program.</p>\n<p> To \"propagate\" a work means to do anything with it that, without<br />\npermission, would make you directly or secondarily liable for<br />\ninfringement under applicable copyright law, except executing it on a<br />\ncomputer or modifying a private copy. Propagation includes copying,<br />\ndistribution (with or without modification), making available to the<br />\npublic, and in some countries other activities as well.</p>\n<p> To \"convey\" a work means any kind of propagation that enables other<br />\nparties to make or receive copies. Mere interaction with a user through<br />\na computer network, with no transfer of a copy, is not conveying.</p>\n<p> An interactive user interface displays \"Appropriate Legal Notices\"<br />\nto the extent that it includes a convenient and prominently visible<br />\nfeature that (1) displays an appropriate copyright notice, and (2)<br />\ntells the user that there is no warranty for the work (except to the<br />\nextent that warranties are provided), that licensees may convey the<br />\nwork under this License, and how to view a copy of this License. If<br />\nthe interface presents a list of user commands or options, such as a<br />\nmenu, a prominent item in the list meets this criterion.</p>\n<p> 1. Source Code.</p>\n<p> The \"source code\" for a work means the preferred form of the work<br />\nfor making modifications to it. \"Object code\" means any non-source<br />\nform of a work.</p>\n<p> A \"Standard Interface\" means an interface that either is an official<br />\nstandard defined by a recognized standards body, or, in the case of<br />\ninterfaces specified for a particular programming language, one that<br />\nis widely used among developers working in that language.</p>\n<p> The \"System Libraries\" of an executable work include anything, other<br />\nthan the work as a whole, that (a) is included in the normal form of<br />\npackaging a Major Component, but which is not part of that Major<br />\nComponent, and (b) serves only to enable use of the work with that<br />\nMajor Component, or to implement a Standard Interface for which an<br />\nimplementation is available to the public in source code form. A<br />\n\"Major Component\", in this context, means a major essential component<br />\n(kernel, window system, and so on) of the specific operating system<br />\n(if any) on which the executable work runs, or a compiler used to<br />\nproduce the work, or an object code interpreter used to run it.</p>\n<p> The \"Corresponding Source\" for a work in object code form means all<br />\nthe source code needed to generate, install, and (for an executable<br />\nwork) run the object code and to modify the work, including scripts to<br />\ncontrol those activities. However, it does not include the work\'s<br />\nSystem Libraries, or general-purpose tools or generally available free<br />\nprograms which are used unmodified in performing those activities but<br />\nwhich are not part of the work. For example, Corresponding Source<br />\nincludes interface definition files associated with source files for<br />\nthe work, and the source code for shared libraries and dynamically<br />\nlinked subprograms that the work is specifically designed to require,<br />\nsuch as by intimate data communication or control flow between those<br />\nsubprograms and other parts of the work.</p>\n<p> The Corresponding Source need not include anything that users<br />\ncan regenerate automatically from other parts of the Corresponding<br />\nSource.</p>\n<p> The Corresponding Source for a work in source code form is that<br />\nsame work.</p>\n<p> 2. Basic Permissions.</p>\n<p> All rights granted under this License are granted for the term of<br />\ncopyright on the Program, and are irrevocable provided the stated<br />\nconditions are met. This License explicitly affirms your unlimited<br />\npermission to run the unmodified Program. The output from running a<br />\ncovered work is covered by this License only if the output, given its<br />\ncontent, constitutes a covered work. This License acknowledges your<br />\nrights of fair use or other equivalent, as provided by copyright law.</p>\n<p> You may make, run and propagate covered works that you do not<br />\nconvey, without conditions so long as your license otherwise remains<br />\nin force. You may convey covered works to others for the sole purpose<br />\nof having them make modifications exclusively for you, or provide you<br />\nwith facilities for running those works, provided that you comply with<br />\nthe terms of this License in conveying all material for which you do<br />\nnot control copyright. Those thus making or running the covered works<br />\nfor you must do so exclusively on your behalf, under your direction<br />\nand control, on terms that prohibit them from making any copies of<br />\nyour copyrighted material outside their relationship with you.</p>\n<p> Conveying under any other circumstances is permitted solely under<br />\nthe conditions stated below. Sublicensing is not allowed; section 10<br />\nmakes it unnecessary.</p>\n<p> 3. Protecting Users\' Legal Rights From Anti-Circumvention Law.</p>\n<p> No covered work shall be deemed part of an effective technological<br />\nmeasure under any applicable law fulfilling obligations under article<br />\n11 of the WIPO copyright treaty adopted on 20 December 1996, or<br />\nsimilar laws prohibiting or restricting circumvention of such<br />\nmeasures.</p>\n<p> When you convey a covered work, you waive any legal power to forbid<br />\ncircumvention of technological measures to the extent such circumvention<br />\nis effected by exercising rights under this License with respect to<br />\nthe covered work, and you disclaim any intention to limit operation or<br />\nmodification of the work as a means of enforcing, against the work\'s<br />\nusers, your or third parties\' legal rights to forbid circumvention of<br />\ntechnological measures.</p>\n<p> 4. Conveying Verbatim Copies.</p>\n<p> You may convey verbatim copies of the Program\'s source code as you<br />\nreceive it, in any medium, provided that you conspicuously and<br />\nappropriately publish on each copy an appropriate copyright notice;<br />\nkeep intact all notices stating that this License and any<br />\nnon-permissive terms added in accord with section 7 apply to the code;<br />\nkeep intact all notices of the absence of any warranty; and give all<br />\nrecipients a copy of this License along with the Program.</p>\n<p> You may charge any price or no price for each copy that you convey,<br />\nand you may offer support or warranty protection for a fee.</p>\n<p> 5. Conveying Modified Source Versions.</p>\n<p> You may convey a work based on the Program, or the modifications to<br />\nproduce it from the Program, in the form of source code under the<br />\nterms of section 4, provided that you also meet all of these conditions:</p>\n<p> a) The work must carry prominent notices stating that you modified<br />\n it, and giving a relevant date.</p>\n<p> b) The work must carry prominent notices stating that it is<br />\n released under this License and any conditions added under section<br />\n 7. This requirement modifies the requirement in section 4 to<br />\n \"keep intact all notices\".</p>\n<p> c) You must license the entire work, as a whole, under this<br />\n License to anyone who comes into possession of a copy. This<br />\n License will therefore apply, along with any applicable section 7<br />\n additional terms, to the whole of the work, and all its parts,<br />\n regardless of how they are packaged. This License gives no<br />\n permission to license the work in any other way, but it does not<br />\n invalidate such permission if you have separately received it.</p>\n<p> d) If the work has interactive user interfaces, each must display<br />\n Appropriate Legal Notices; however, if the Program has interactive<br />\n interfaces that do not display Appropriate Legal Notices, your<br />\n work need not make them do so.</p>\n<p> A compilation of a covered work with other separate and independent<br />\nworks, which are not by their nature extensions of the covered work,<br />\nand which are not combined with it such as to form a larger program,<br />\nin or on a volume of a storage or distribution medium, is called an<br />\n\"aggregate\" if the compilation and its resulting copyright are not<br />\nused to limit the access or legal rights of the compilation\'s users<br />\nbeyond what the individual works permit. Inclusion of a covered work<br />\nin an aggregate does not cause this License to apply to the other<br />\nparts of the aggregate.</p>\n<p> 6. Conveying Non-Source Forms.</p>\n<p> You may convey a covered work in object code form under the terms<br />\nof sections 4 and 5, provided that you also convey the<br />\nmachine-readable Corresponding Source under the terms of this License,<br />\nin one of these ways:</p>\n<p> a) Convey the object code in, or embodied in, a physical product<br />\n (including a physical distribution medium), accompanied by the<br />\n Corresponding Source fixed on a durable physical medium<br />\n customarily used for software interchange.</p>\n<p> b) Convey the object code in, or embodied in, a physical product<br />\n (including a physical distribution medium), accompanied by a<br />\n written offer, valid for at least three years and valid for as<br />\n long as you offer spare parts or customer support for that product<br />\n model, to give anyone who possesses the object code either (1) a<br />\n copy of the Corresponding Source for all the software in the<br />\n product that is covered by this License, on a durable physical<br />\n medium customarily used for software interchange, for a price no<br />\n more than your reasonable cost of physically performing this<br />\n conveying of source, or (2) access to copy the<br />\n Corresponding Source from a network server at no charge.</p>\n<p> c) Convey individual copies of the object code with a copy of the<br />\n written offer to provide the Corresponding Source. This<br />\n alternative is allowed only occasionally and noncommercially, and<br />\n only if you received the object code with such an offer, in accord<br />\n with subsection 6b.</p>\n<p> d) Convey the object code by offering access from a designated<br />\n place (gratis or for a charge), and offer equivalent access to the<br />\n Corresponding Source in the same way through the same place at no<br />\n further charge. You need not require recipients to copy the<br />\n Corresponding Source along with the object code. If the place to<br />\n copy the object code is a network server, the Corresponding Source<br />\n may be on a different server (operated by you or a third party)<br />\n that supports equivalent copying facilities, provided you maintain<br />\n clear directions next to the object code saying where to find the<br />\n Corresponding Source. Regardless of what server hosts the<br />\n Corresponding Source, you remain obligated to ensure that it is<br />\n available for as long as needed to satisfy these requirements.</p>\n<p> e) Convey the object code using peer-to-peer transmission, provided<br />\n you inform other peers where the object code and Corresponding<br />\n Source of the work are being offered to the general public at no<br />\n charge under subsection 6d.</p>\n<p> A separable portion of the object code, whose source code is excluded<br />\nfrom the Corresponding Source as a System Library, need not be<br />\nincluded in conveying the object code work.</p>\n<p> A \"User Product\" is either (1) a \"consumer product\", which means any<br />\ntangible personal property which is normally used for personal, family,<br />\nor household purposes, or (2) anything designed or sold for incorporation<br />\ninto a dwelling. In determining whether a product is a consumer product,<br />\ndoubtful cases shall be resolved in favor of coverage. For a particular<br />\nproduct received by a particular user, \"normally used\" refers to a<br />\ntypical or common use of that class of product, regardless of the status<br />\nof the particular user or of the way in which the particular user<br />\nactually uses, or expects or is expected to use, the product. A product<br />\nis a consumer product regardless of whether the product has substantial<br />\ncommercial, industrial or non-consumer uses, unless such uses represent<br />\nthe only significant mode of use of the product.</p>\n<p> \"Installation Information\" for a User Product means any methods,<br />\nprocedures, authorization keys, or other information required to install<br />\nand execute modified versions of a covered work in that User Product from<br />\na modified version of its Corresponding Source. The information must<br />\nsuffice to ensure that the continued functioning of the modified object<br />\ncode is in no case prevented or interfered with solely because<br />\nmodification has been made.</p>\n<p> If you convey an object code work under this section in, or with, or<br />\nspecifically for use in, a User Product, and the conveying occurs as<br />\npart of a transaction in which the right of possession and use of the<br />\nUser Product is transferred to the recipient in perpetuity or for a<br />\nfixed term (regardless of how the transaction is characterized), the<br />\nCorresponding Source conveyed under this section must be accompanied<br />\nby the Installation Information. But this requirement does not apply<br />\nif neither you nor any third party retains the ability to install<br />\nmodified object code on the User Product (for example, the work has<br />\nbeen installed in ROM).</p>\n<p> The requirement to provide Installation Information does not include a<br />\nrequirement to continue to provide support service, warranty, or updates<br />\nfor a work that has been modified or installed by the recipient, or for<br />\nthe User Product in which it has been modified or installed. Access to a<br />\nnetwork may be denied when the modification itself materially and<br />\nadversely affects the operation of the network or violates the rules and<br />\nprotocols for communication across the network.</p>\n<p> Corresponding Source conveyed, and Installation Information provided,<br />\nin accord with this section must be in a format that is publicly<br />\ndocumented (and with an implementation available to the public in<br />\nsource code form), and must require no special password or key for<br />\nunpacking, reading or copying.</p>\n<p> 7. Additional Terms.</p>\n<p> \"Additional permissions\" are terms that supplement the terms of this<br />\nLicense by making exceptions from one or more of its conditions.<br />\nAdditional permissions that are applicable to the entire Program shall<br />\nbe treated as though they were included in this License, to the extent<br />\nthat they are valid under applicable law. If additional permissions<br />\napply only to part of the Program, that part may be used separately<br />\nunder those permissions, but the entire Program remains governed by<br />\nthis License without regard to the additional permissions.</p>\n<p> When you convey a copy of a covered work, you may at your option<br />\nremove any additional permissions from that copy, or from any part of<br />\nit. (Additional permissions may be written to require their own<br />\nremoval in certain cases when you modify the work.) You may place<br />\nadditional permissions on material, added by you to a covered work,<br />\nfor which you have or can give appropriate copyright permission.</p>\n<p> Notwithstanding any other provision of this License, for material you<br />\nadd to a covered work, you may (if authorized by the copyright holders of<br />\nthat material) supplement the terms of this License with terms:</p>\n<p> a) Disclaiming warranty or limiting liability differently from the<br />\n terms of sections 15 and 16 of this License; or</p>\n<p> b) Requiring preservation of specified reasonable legal notices or<br />\n author attributions in that material or in the Appropriate Legal<br />\n Notices displayed by works containing it; or</p>\n<p> c) Prohibiting misrepresentation of the origin of that material, or<br />\n requiring that modified versions of such material be marked in<br />\n reasonable ways as different from the original version; or</p>\n<p> d) Limiting the use for publicity purposes of names of licensors or<br />\n authors of the material; or</p>\n<p> e) Declining to grant rights under trademark law for use of some<br />\n trade names, trademarks, or service marks; or</p>\n<p> f) Requiring indemnification of licensors and authors of that<br />\n material by anyone who conveys the material (or modified versions of<br />\n it) with contractual assumptions of liability to the recipient, for<br />\n any liability that these contractual assumptions directly impose on<br />\n those licensors and authors.</p>\n<p> All other non-permissive additional terms are considered \"further<br />\nrestrictions\" within the meaning of section 10. If the Program as you<br />\nreceived it, or any part of it, contains a notice stating that it is<br />\ngoverned by this License along with a term that is a further<br />\nrestriction, you may remove that term. If a license document contains<br />\na further restriction but permits relicensing or conveying under this<br />\nLicense, you may add to a covered work material governed by the terms<br />\nof that license document, provided that the further restriction does<br />\nnot survive such relicensing or conveying.</p>\n<p> If you add terms to a covered work in accord with this section, you<br />\nmust place, in the relevant source files, a statement of the<br />\nadditional terms that apply to those files, or a notice indicating<br />\nwhere to find the applicable terms.</p>\n<p> Additional terms, permissive or non-permissive, may be stated in the<br />\nform of a separately written license, or stated as exceptions;<br />\nthe above requirements apply either way.</p>\n<p> 8. Termination.</p>\n<p> You may not propagate or modify a covered work except as expressly<br />\nprovided under this License. Any attempt otherwise to propagate or<br />\nmodify it is void, and will automatically terminate your rights under<br />\nthis License (including any patent licenses granted under the third<br />\nparagraph of section 11).</p>\n<p> However, if you cease all violation of this License, then your<br />\nlicense from a particular copyright holder is reinstated (a)<br />\nprovisionally, unless and until the copyright holder explicitly and<br />\nfinally terminates your license, and (b) permanently, if the copyright<br />\nholder fails to notify you of the violation by some reasonable means<br />\nprior to 60 days after the cessation.</p>\n<p> Moreover, your license from a particular copyright holder is<br />\nreinstated permanently if the copyright holder notifies you of the<br />\nviolation by some reasonable means, this is the first time you have<br />\nreceived notice of violation of this License (for any work) from that<br />\ncopyright holder, and you cure the violation prior to 30 days after<br />\nyour receipt of the notice.</p>\n<p> Termination of your rights under this section does not terminate the<br />\nlicenses of parties who have received copies or rights from you under<br />\nthis License. If your rights have been terminated and not permanently<br />\nreinstated, you do not qualify to receive new licenses for the same<br />\nmaterial under section 10.</p>\n<p> 9. Acceptance Not Required for Having Copies.</p>\n<p> You are not required to accept this License in order to receive or<br />\nrun a copy of the Program. Ancillary propagation of a covered work<br />\noccurring solely as a consequence of using peer-to-peer transmission<br />\nto receive a copy likewise does not require acceptance. However,<br />\nnothing other than this License grants you permission to propagate or<br />\nmodify any covered work. These actions infringe copyright if you do<br />\nnot accept this License. Therefore, by modifying or propagating a<br />\ncovered work, you indicate your acceptance of this License to do so.</p>\n<p> 10. Automatic Licensing of Downstream Recipients.</p>\n<p> Each time you convey a covered work, the recipient automatically<br />\nreceives a license from the original licensors, to run, modify and<br />\npropagate that work, subject to this License. You are not responsible<br />\nfor enforcing compliance by third parties with this License.</p>\n<p> An \"entity transaction\" is a transaction transferring control of an<br />\norganization, or substantially all assets of one, or subdividing an<br />\norganization, or merging organizations. If propagation of a covered<br />\nwork results from an entity transaction, each party to that<br />\ntransaction who receives a copy of the work also receives whatever<br />\nlicenses to the work the party\'s predecessor in interest had or could<br />\ngive under the previous paragraph, plus a right to possession of the<br />\nCorresponding Source of the work from the predecessor in interest, if<br />\nthe predecessor has it or can get it with reasonable efforts.</p>\n<p> You may not impose any further restrictions on the exercise of the<br />\nrights granted or affirmed under this License. For example, you may<br />\nnot impose a license fee, royalty, or other charge for exercise of<br />\nrights granted under this License, and you may not initiate litigation<br />\n(including a cross-claim or counterclaim in a lawsuit) alleging that<br />\nany patent claim is infringed by making, using, selling, offering for<br />\nsale, or importing the Program or any portion of it.</p>\n<p> 11. Patents.</p>\n<p> A \"contributor\" is a copyright holder who authorizes use under this<br />\nLicense of the Program or a work on which the Program is based. The<br />\nwork thus licensed is called the contributor\'s \"contributor version\".</p>\n<p> A contributor\'s \"essential patent claims\" are all patent claims<br />\nowned or controlled by the contributor, whether already acquired or<br />\nhereafter acquired, that would be infringed by some manner, permitted<br />\nby this License, of making, using, or selling its contributor version,<br />\nbut do not include claims that would be infringed only as a<br />\nconsequence of further modification of the contributor version. For<br />\npurposes of this definition, \"control\" includes the right to grant<br />\npatent sublicenses in a manner consistent with the requirements of<br />\nthis License.</p>\n<p> Each contributor grants you a non-exclusive, worldwide, royalty-free<br />\npatent license under the contributor\'s essential patent claims, to<br />\nmake, use, sell, offer for sale, import and otherwise run, modify and<br />\npropagate the contents of its contributor version.</p>\n<p> In the following three paragraphs, a \"patent license\" is any express<br />\nagreement or commitment, however denominated, not to enforce a patent<br />\n(such as an express permission to practice a patent or covenant not to<br />\nsue for patent infringement). To \"grant\" such a patent license to a<br />\nparty means to make such an agreement or commitment not to enforce a<br />\npatent against the party.</p>\n<p> If you convey a covered work, knowingly relying on a patent license,<br />\nand the Corresponding Source of the work is not available for anyone<br />\nto copy, free of charge and under the terms of this License, through a<br />\npublicly available network server or other readily accessible means,<br />\nthen you must either (1) cause the Corresponding Source to be so<br />\navailable, or (2) arrange to deprive yourself of the benefit of the<br />\npatent license for this particular work, or (3) arrange, in a manner<br />\nconsistent with the requirements of this License, to extend the patent<br />\nlicense to downstream recipients. \"Knowingly relying\" means you have<br />\nactual knowledge that, but for the patent license, your conveying the<br />\ncovered work in a country, or your recipient\'s use of the covered work<br />\nin a country, would infringe one or more identifiable patents in that<br />\ncountry that you have reason to believe are valid.</p>\n<p> If, pursuant to or in connection with a single transaction or<br />\narrangement, you convey, or propagate by procuring conveyance of, a<br />\ncovered work, and grant a patent license to some of the parties<br />\nreceiving the covered work authorizing them to use, propagate, modify<br />\nor convey a specific copy of the covered work, then the patent license<br />\nyou grant is automatically extended to all recipients of the covered<br />\nwork and works based on it.</p>\n<p> A patent license is \"discriminatory\" if it does not include within<br />\nthe scope of its coverage, prohibits the exercise of, or is<br />\nconditioned on the non-exercise of one or more of the rights that are<br />\nspecifically granted under this License. You may not convey a covered<br />\nwork if you are a party to an arrangement with a third party that is<br />\nin the business of distributing software, under which you make payment<br />\nto the third party based on the extent of your activity of conveying<br />\nthe work, and under which the third party grants, to any of the<br />\nparties who would receive the covered work from you, a discriminatory<br />\npatent license (a) in connection with copies of the covered work<br />\nconveyed by you (or copies made from those copies), or (b) primarily<br />\nfor and in connection with specific products or compilations that<br />\ncontain the covered work, unless you entered into that arrangement,<br />\nor that patent license was granted, prior to 28 March 2007.</p>\n<p> Nothing in this License shall be construed as excluding or limiting<br />\nany implied license or other defenses to infringement that may<br />\notherwise be available to you under applicable patent law.</p>\n<p> 12. No Surrender of Others\' Freedom.</p>\n<p> If conditions are imposed on you (whether by court order, agreement or<br />\notherwise) that contradict the conditions of this License, they do not<br />\nexcuse you from the conditions of this License. If you cannot convey a<br />\ncovered work so as to satisfy simultaneously your obligations under this<br />\nLicense and any other pertinent obligations, then as a consequence you may<br />\nnot convey it at all. For example, if you agree to terms that obligate you<br />\nto collect a royalty for further conveying from those to whom you convey<br />\nthe Program, the only way you could satisfy both those terms and this<br />\nLicense would be to refrain entirely from conveying the Program.</p>\n<p> 13. Use with the GNU Affero General Public License.</p>\n<p> Notwithstanding any other provision of this License, you have<br />\npermission to link or combine any covered work with a work licensed<br />\nunder version 3 of the GNU Affero General Public License into a single<br />\ncombined work, and to convey the resulting work. The terms of this<br />\nLicense will continue to apply to the part which is the covered work,<br />\nbut the special requirements of the GNU Affero General Public License,<br />\nsection 13, concerning interaction through a network will apply to the<br />\ncombination as such.</p>\n<p> 14. Revised Versions of this License.</p>\n<p> The Free Software Foundation may publish revised and/or new versions of<br />\nthe GNU General Public License from time to time. Such new versions will<br />\nbe similar in spirit to the present version, but may differ in detail to<br />\naddress new problems or concerns.</p>\n<p> Each version is given a distinguishing version number. If the<br />\nProgram specifies that a certain numbered version of the GNU General<br />\nPublic License \"or any later version\" applies to it, you have the<br />\noption of following the terms and conditions either of that numbered<br />\nversion or of any later version published by the Free Software<br />\nFoundation. If the Program does not specify a version number of the<br />\nGNU General Public License, you may choose any version ever published<br />\nby the Free Software Foundation.</p>\n<p> If the Program specifies that a proxy can decide which future<br />\nversions of the GNU General Public License can be used, that proxy\'s<br />\npublic statement of acceptance of a version permanently authorizes you<br />\nto choose that version for the Program.</p>\n<p> Later license versions may give you additional or different<br />\npermissions. However, no additional obligations are imposed on any<br />\nauthor or copyright holder as a result of your choosing to follow a<br />\nlater version.</p>\n<p> 15. Disclaimer of Warranty.</p>\n<p> THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY<br />\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT<br />\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY<br />\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,<br />\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM<br />\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF<br />\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.</p>\n<p> 16. Limitation of Liability.</p>\n<p> IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING<br />\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS<br />\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY<br />\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE<br />\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF<br />\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD<br />\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),<br />\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF<br />\nSUCH DAMAGES.</p>\n<p> 17. Interpretation of Sections 15 and 16.</p>\n<p> If the disclaimer of warranty and limitation of liability provided<br />\nabove cannot be given local legal effect according to their terms,<br />\nreviewing courts shall apply local law that most closely approximates<br />\nan absolute waiver of all civil liability in connection with the<br />\nProgram, unless a warranty or assumption of liability accompanies a<br />\ncopy of the Program in return for a fee.</p>\n<p> END OF TERMS AND CONDITIONS</p>\n<p> How to Apply These Terms to Your New Programs</p>\n<p> If you develop a new program, and you want it to be of the greatest<br />\npossible use to the public, the best way to achieve this is to make it<br />\nfree software which everyone can redistribute and change under these terms.</p>\n<p> To do so, attach the following notices to the program. It is safest<br />\nto attach them to the start of each source file to most effectively<br />\nstate the exclusion of warranty; and each file should have at least<br />\nthe \"copyright\" line and a pointer to where the full notice is found.</p>\n<p> <one line to give the program\'s name and a brief idea of what it does.><br />\n Copyright (C) <year> <name of author></p>\n<p> This program is free software: you can redistribute it and/or modify<br />\n it under the terms of the GNU General Public License as published by<br />\n the Free Software Foundation, either version 3 of the License, or<br />\n (at your option) any later version.</p>\n<p> This program is distributed in the hope that it will be useful,<br />\n but WITHOUT ANY WARRANTY; without even the implied warranty of<br />\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br />\n GNU General Public License for more details.</p>\n<p> You should have received a copy of the GNU General Public License<br />\n along with this program. If not, see <http://www.gnu.org/licenses/>.</p>\n<p>Also add information on how to contact you by electronic and paper mail.</p>\n<p> If the program does terminal interaction, make it output a short<br />\nnotice like this when it starts in an interactive mode:</p>\n<p> <program> Copyright (C) <year> <name of author><br />\n This program comes with ABSOLUTELY NO WARRANTY; for details type `show w\'.<br />\n This is free software, and you are welcome to redistribute it<br />\n under certain conditions; type `show c\' for details.</p>\n<p>The hypothetical commands `show w\' and `show c\' should show the appropriate<br />\nparts of the General Public License. Of course, your program\'s commands<br />\nmight be different; for a GUI interface, you would use an \"about box\".</p>\n<p> You should also get your employer (if you work as a programmer) or school,<br />\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.<br />\nFor more information on this, and how to apply and follow the GNU GPL, see<br />\n<http://www.gnu.org/licenses/>.</p>\n<p> The GNU General Public License does not permit incorporating your program<br />\ninto proprietary programs. If your program is a subroutine library, you<br />\nmay consider it more useful to permit linking proprietary applications with<br />\nthe library. If this is what you want to do, use the GNU Lesser General<br />\nPublic License instead of this License. But first, please read<br />\n<http://www.gnu.org/philosophy/why-not-lgpl.html>.</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1435402456,1),('field:node:184','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:8024:\"<p> </p>\r\n<pre style=\"color: rgb(0, 0, 0); word-wrap: break-word; white-space: pre-wrap; \">\r\n GNU LESSER GENERAL PUBLIC LICENSE\r\n Version 3, 29 June 2007\r\n\r\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\r\n Everyone is permitted to copy and distribute verbatim copies\r\n of this license document, but changing it is not allowed.\r\n\r\n\r\n This version of the GNU Lesser General Public License incorporates\r\nthe terms and conditions of version 3 of the GNU General Public\r\nLicense, supplemented by the additional permissions listed below.\r\n\r\n 0. Additional Definitions.\r\n\r\n As used herein, "this License" refers to version 3 of the GNU Lesser\r\nGeneral Public License, and the "GNU GPL" refers to version 3 of the GNU\r\nGeneral Public License.\r\n\r\n "The Library" refers to a covered work governed by this License,\r\nother than an Application or a Combined Work as defined below.\r\n\r\n An "Application" is any work that makes use of an interface provided\r\nby the Library, but which is not otherwise based on the Library.\r\nDefining a subclass of a class defined by the Library is deemed a mode\r\nof using an interface provided by the Library.\r\n\r\n A "Combined Work" is a work produced by combining or linking an\r\nApplication with the Library. The particular version of the Library\r\nwith which the Combined Work was made is also called the "Linked\r\nVersion".\r\n\r\n The "Minimal Corresponding Source" for a Combined Work means the\r\nCorresponding Source for the Combined Work, excluding any source code\r\nfor portions of the Combined Work that, considered in isolation, are\r\nbased on the Application, and not on the Linked Version.\r\n\r\n The "Corresponding Application Code" for a Combined Work means the\r\nobject code and/or source code for the Application, including any data\r\nand utility programs needed for reproducing the Combined Work from the\r\nApplication, but excluding the System Libraries of the Combined Work.\r\n\r\n 1. Exception to Section 3 of the GNU GPL.\r\n\r\n You may convey a covered work under sections 3 and 4 of this License\r\nwithout being bound by section 3 of the GNU GPL.\r\n\r\n 2. Conveying Modified Versions.\r\n\r\n If you modify a copy of the Library, and, in your modifications, a\r\nfacility refers to a function or data to be supplied by an Application\r\nthat uses the facility (other than as an argument passed when the\r\nfacility is invoked), then you may convey a copy of the modified\r\nversion:\r\n\r\n a) under this License, provided that you make a good faith effort to\r\n ensure that, in the event an Application does not supply the\r\n function or data, the facility still operates, and performs\r\n whatever part of its purpose remains meaningful, or\r\n\r\n b) under the GNU GPL, with none of the additional permissions of\r\n this License applicable to that copy.\r\n\r\n 3. Object Code Incorporating Material from Library Header Files.\r\n\r\n The object code form of an Application may incorporate material from\r\na header file that is part of the Library. You may convey such object\r\ncode under terms of your choice, provided that, if the incorporated\r\nmaterial is not limited to numerical parameters, data structure\r\nlayouts and accessors, or small macros, inline functions and templates\r\n(ten or fewer lines in length), you do both of the following:\r\n\r\n a) Give prominent notice with each copy of the object code that the\r\n Library is used in it and that the Library and its use are\r\n covered by this License.\r\n\r\n b) Accompany the object code with a copy of the GNU GPL and this license\r\n document.\r\n\r\n 4. Combined Works.\r\n\r\n You may convey a Combined Work under terms of your choice that,\r\ntaken together, effectively do not restrict modification of the\r\nportions of the Library contained in the Combined Work and reverse\r\nengineering for debugging such modifications, if you also do each of\r\nthe following:\r\n\r\n a) Give prominent notice with each copy of the Combined Work that\r\n the Library is used in it and that the Library and its use are\r\n covered by this License.\r\n\r\n b) Accompany the Combined Work with a copy of the GNU GPL and this license\r\n document.\r\n\r\n c) For a Combined Work that displays copyright notices during\r\n execution, include the copyright notice for the Library among\r\n these notices, as well as a reference directing the user to the\r\n copies of the GNU GPL and this license document.\r\n\r\n d) Do one of the following:\r\n\r\n 0) Convey the Minimal Corresponding Source under the terms of this\r\n License, and the Corresponding Application Code in a form\r\n suitable for, and under terms that permit, the user to\r\n recombine or relink the Application with a modified version of\r\n the Linked Version to produce a modified Combined Work, in the\r\n manner specified by section 6 of the GNU GPL for conveying\r\n Corresponding Source.\r\n\r\n 1) Use a suitable shared library mechanism for linking with the\r\n Library. A suitable mechanism is one that (a) uses at run time\r\n a copy of the Library already present on the user's computer\r\n system, and (b) will operate properly with a modified version\r\n of the Library that is interface-compatible with the Linked\r\n Version.\r\n\r\n e) Provide Installation Information, but only if you would otherwise\r\n be required to provide such information under section 6 of the\r\n GNU GPL, and only to the extent that such information is\r\n necessary to install and execute a modified version of the\r\n Combined Work produced by recombining or relinking the\r\n Application with a modified version of the Linked Version. (If\r\n you use option 4d0, the Installation Information must accompany\r\n the Minimal Corresponding Source and Corresponding Application\r\n Code. If you use option 4d1, you must provide the Installation\r\n Information in the manner specified by section 6 of the GNU GPL\r\n for conveying Corresponding Source.)\r\n\r\n 5. Combined Libraries.\r\n\r\n You may place library facilities that are a work based on the\r\nLibrary side by side in a single library together with other library\r\nfacilities that are not Applications and are not covered by this\r\nLicense, and convey such a combined library under terms of your\r\nchoice, if you do both of the following:\r\n\r\n a) Accompany the combined library with a copy of the same work based\r\n on the Library, uncombined with any other library facilities,\r\n conveyed under the terms of this License.\r\n\r\n b) Give prominent notice with the combined library that part of it\r\n is a work based on the Library, and explaining where to find the\r\n accompanying uncombined form of the same work.\r\n\r\n 6. Revised Versions of the GNU Lesser General Public License.\r\n\r\n The Free Software Foundation may publish revised and/or new versions\r\nof the GNU Lesser General Public License from time to time. Such new\r\nversions will be similar in spirit to the present version, but may\r\ndiffer in detail to address new problems or concerns.\r\n\r\n Each version is given a distinguishing version number. If the\r\nLibrary as you received it specifies that a certain numbered version\r\nof the GNU Lesser General Public License "or any later version"\r\napplies to it, you have the option of following the terms and\r\nconditions either of that published version or of any later version\r\npublished by the Free Software Foundation. If the Library as you\r\nreceived it does not specify a version number of the GNU Lesser\r\nGeneral Public License, you may choose any version of the GNU Lesser\r\nGeneral Public License ever published by the Free Software Foundation.\r\n\r\n If the Library as you received it specifies that a proxy can decide\r\nwhether future versions of the GNU Lesser General Public License shall\r\napply, that proxy's public statement of acceptance of any version is\r\npermanent authorization for you to choose that version for the\r\nLibrary.</pre>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:8435:\"<p> </p>\n<p> GNU LESSER GENERAL PUBLIC LICENSE<br />\n Version 3, 29 June 2007</p>\n<p> Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/><br />\n Everyone is permitted to copy and distribute verbatim copies<br />\n of this license document, but changing it is not allowed.</p>\n<p> This version of the GNU Lesser General Public License incorporates<br />\nthe terms and conditions of version 3 of the GNU General Public<br />\nLicense, supplemented by the additional permissions listed below.</p>\n<p> 0. Additional Definitions.</p>\n<p> As used herein, \"this License\" refers to version 3 of the GNU Lesser<br />\nGeneral Public License, and the \"GNU GPL\" refers to version 3 of the GNU<br />\nGeneral Public License.</p>\n<p> \"The Library\" refers to a covered work governed by this License,<br />\nother than an Application or a Combined Work as defined below.</p>\n<p> An \"Application\" is any work that makes use of an interface provided<br />\nby the Library, but which is not otherwise based on the Library.<br />\nDefining a subclass of a class defined by the Library is deemed a mode<br />\nof using an interface provided by the Library.</p>\n<p> A \"Combined Work\" is a work produced by combining or linking an<br />\nApplication with the Library. The particular version of the Library<br />\nwith which the Combined Work was made is also called the \"Linked<br />\nVersion\".</p>\n<p> The \"Minimal Corresponding Source\" for a Combined Work means the<br />\nCorresponding Source for the Combined Work, excluding any source code<br />\nfor portions of the Combined Work that, considered in isolation, are<br />\nbased on the Application, and not on the Linked Version.</p>\n<p> The \"Corresponding Application Code\" for a Combined Work means the<br />\nobject code and/or source code for the Application, including any data<br />\nand utility programs needed for reproducing the Combined Work from the<br />\nApplication, but excluding the System Libraries of the Combined Work.</p>\n<p> 1. Exception to Section 3 of the GNU GPL.</p>\n<p> You may convey a covered work under sections 3 and 4 of this License<br />\nwithout being bound by section 3 of the GNU GPL.</p>\n<p> 2. Conveying Modified Versions.</p>\n<p> If you modify a copy of the Library, and, in your modifications, a<br />\nfacility refers to a function or data to be supplied by an Application<br />\nthat uses the facility (other than as an argument passed when the<br />\nfacility is invoked), then you may convey a copy of the modified<br />\nversion:</p>\n<p> a) under this License, provided that you make a good faith effort to<br />\n ensure that, in the event an Application does not supply the<br />\n function or data, the facility still operates, and performs<br />\n whatever part of its purpose remains meaningful, or</p>\n<p> b) under the GNU GPL, with none of the additional permissions of<br />\n this License applicable to that copy.</p>\n<p> 3. Object Code Incorporating Material from Library Header Files.</p>\n<p> The object code form of an Application may incorporate material from<br />\na header file that is part of the Library. You may convey such object<br />\ncode under terms of your choice, provided that, if the incorporated<br />\nmaterial is not limited to numerical parameters, data structure<br />\nlayouts and accessors, or small macros, inline functions and templates<br />\n(ten or fewer lines in length), you do both of the following:</p>\n<p> a) Give prominent notice with each copy of the object code that the<br />\n Library is used in it and that the Library and its use are<br />\n covered by this License.</p>\n<p> b) Accompany the object code with a copy of the GNU GPL and this license<br />\n document.</p>\n<p> 4. Combined Works.</p>\n<p> You may convey a Combined Work under terms of your choice that,<br />\ntaken together, effectively do not restrict modification of the<br />\nportions of the Library contained in the Combined Work and reverse<br />\nengineering for debugging such modifications, if you also do each of<br />\nthe following:</p>\n<p> a) Give prominent notice with each copy of the Combined Work that<br />\n the Library is used in it and that the Library and its use are<br />\n covered by this License.</p>\n<p> b) Accompany the Combined Work with a copy of the GNU GPL and this license<br />\n document.</p>\n<p> c) For a Combined Work that displays copyright notices during<br />\n execution, include the copyright notice for the Library among<br />\n these notices, as well as a reference directing the user to the<br />\n copies of the GNU GPL and this license document.</p>\n<p> d) Do one of the following:</p>\n<p> 0) Convey the Minimal Corresponding Source under the terms of this<br />\n License, and the Corresponding Application Code in a form<br />\n suitable for, and under terms that permit, the user to<br />\n recombine or relink the Application with a modified version of<br />\n the Linked Version to produce a modified Combined Work, in the<br />\n manner specified by section 6 of the GNU GPL for conveying<br />\n Corresponding Source.</p>\n<p> 1) Use a suitable shared library mechanism for linking with the<br />\n Library. A suitable mechanism is one that (a) uses at run time<br />\n a copy of the Library already present on the user\'s computer<br />\n system, and (b) will operate properly with a modified version<br />\n of the Library that is interface-compatible with the Linked<br />\n Version.</p>\n<p> e) Provide Installation Information, but only if you would otherwise<br />\n be required to provide such information under section 6 of the<br />\n GNU GPL, and only to the extent that such information is<br />\n necessary to install and execute a modified version of the<br />\n Combined Work produced by recombining or relinking the<br />\n Application with a modified version of the Linked Version. (If<br />\n you use option 4d0, the Installation Information must accompany<br />\n the Minimal Corresponding Source and Corresponding Application<br />\n Code. If you use option 4d1, you must provide the Installation<br />\n Information in the manner specified by section 6 of the GNU GPL<br />\n for conveying Corresponding Source.)</p>\n<p> 5. Combined Libraries.</p>\n<p> You may place library facilities that are a work based on the<br />\nLibrary side by side in a single library together with other library<br />\nfacilities that are not Applications and are not covered by this<br />\nLicense, and convey such a combined library under terms of your<br />\nchoice, if you do both of the following:</p>\n<p> a) Accompany the combined library with a copy of the same work based<br />\n on the Library, uncombined with any other library facilities,<br />\n conveyed under the terms of this License.</p>\n<p> b) Give prominent notice with the combined library that part of it<br />\n is a work based on the Library, and explaining where to find the<br />\n accompanying uncombined form of the same work.</p>\n<p> 6. Revised Versions of the GNU Lesser General Public License.</p>\n<p> The Free Software Foundation may publish revised and/or new versions<br />\nof the GNU Lesser General Public License from time to time. Such new<br />\nversions will be similar in spirit to the present version, but may<br />\ndiffer in detail to address new problems or concerns.</p>\n<p> Each version is given a distinguishing version number. If the<br />\nLibrary as you received it specifies that a certain numbered version<br />\nof the GNU Lesser General Public License \"or any later version\"<br />\napplies to it, you have the option of following the terms and<br />\nconditions either of that published version or of any later version<br />\npublished by the Free Software Foundation. If the Library as you<br />\nreceived it does not specify a version number of the GNU Lesser<br />\nGeneral Public License, you may choose any version of the GNU Lesser<br />\nGeneral Public License ever published by the Free Software Foundation.</p>\n<p> If the Library as you received it specifies that a proxy can decide<br />\nwhether future versions of the GNU Lesser General Public License shall<br />\napply, that proxy\'s public statement of acceptance of any version is<br />\npermanent authorization for you to choose that version for the<br />\nLibrary.</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1435039909,1),('field:node:185','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:24072:\"<p> </p>\r\n<br />\r\n<div>\r\n <pre style=\"color: rgb(0, 0, 0); word-wrap: break-word; white-space: pre-wrap; \">\r\n GNU Free Documentation License\r\n Version 1.3, 3 November 2008\r\n\r\n\r\n Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.\r\n <http://fsf.org/>\r\n Everyone is permitted to copy and distribute verbatim copies\r\n of this license document, but changing it is not allowed.\r\n\r\n0. PREAMBLE\r\n\r\nThe purpose of this License is to make a manual, textbook, or other\r\nfunctional and useful document "free" in the sense of freedom: to\r\nassure everyone the effective freedom to copy and redistribute it,\r\nwith or without modifying it, either commercially or noncommercially.\r\nSecondarily, this License preserves for the author and publisher a way\r\nto get credit for their work, while not being considered responsible\r\nfor modifications made by others.\r\n\r\nThis License is a kind of "copyleft", which means that derivative\r\nworks of the document must themselves be free in the same sense. It\r\ncomplements the GNU General Public License, which is a copyleft\r\nlicense designed for free software.\r\n\r\nWe have designed this License in order to use it for manuals for free\r\nsoftware, because free software needs free documentation: a free\r\nprogram should come with manuals providing the same freedoms that the\r\nsoftware does. But this License is not limited to software manuals;\r\nit can be used for any textual work, regardless of subject matter or\r\nwhether it is published as a printed book. We recommend this License\r\nprincipally for works whose purpose is instruction or reference.\r\n\r\n\r\n1. APPLICABILITY AND DEFINITIONS\r\n\r\nThis License applies to any manual or other work, in any medium, that\r\ncontains a notice placed by the copyright holder saying it can be\r\ndistributed under the terms of this License. Such a notice grants a\r\nworld-wide, royalty-free license, unlimited in duration, to use that\r\nwork under the conditions stated herein. The "Document", below,\r\nrefers to any such manual or work. Any member of the public is a\r\nlicensee, and is addressed as "you". You accept the license if you\r\ncopy, modify or distribute the work in a way requiring permission\r\nunder copyright law.\r\n\r\nA "Modified Version" of the Document means any work containing the\r\nDocument or a portion of it, either copied verbatim, or with\r\nmodifications and/or translated into another language.\r\n\r\nA "Secondary Section" is a named appendix or a front-matter section of\r\nthe Document that deals exclusively with the relationship of the\r\npublishers or authors of the Document to the Document's overall\r\nsubject (or to related matters) and contains nothing that could fall\r\ndirectly within that overall subject. (Thus, if the Document is in\r\npart a textbook of mathematics, a Secondary Section may not explain\r\nany mathematics.) The relationship could be a matter of historical\r\nconnection with the subject or with related matters, or of legal,\r\ncommercial, philosophical, ethical or political position regarding\r\nthem.\r\n\r\nThe "Invariant Sections" are certain Secondary Sections whose titles\r\nare designated, as being those of Invariant Sections, in the notice\r\nthat says that the Document is released under this License. If a\r\nsection does not fit the above definition of Secondary then it is not\r\nallowed to be designated as Invariant. The Document may contain zero\r\nInvariant Sections. If the Document does not identify any Invariant\r\nSections then there are none.\r\n\r\nThe "Cover Texts" are certain short passages of text that are listed,\r\nas Front-Cover Texts or Back-Cover Texts, in the notice that says that\r\nthe Document is released under this License. A Front-Cover Text may\r\nbe at most 5 words, and a Back-Cover Text may be at most 25 words.\r\n\r\nA "Transparent" copy of the Document means a machine-readable copy,\r\nrepresented in a format whose specification is available to the\r\ngeneral public, that is suitable for revising the document\r\nstraightforwardly with generic text editors or (for images composed of\r\npixels) generic paint programs or (for drawings) some widely available\r\ndrawing editor, and that is suitable for input to text formatters or\r\nfor automatic translation to a variety of formats suitable for input\r\nto text formatters. A copy made in an otherwise Transparent file\r\nformat whose markup, or absence of markup, has been arranged to thwart\r\nor discourage subsequent modification by readers is not Transparent.\r\nAn image format is not Transparent if used for any substantial amount\r\nof text. A copy that is not "Transparent" is called "Opaque".\r\n\r\nExamples of suitable formats for Transparent copies include plain\r\nASCII without markup, Texinfo input format, LaTeX input format, SGML\r\nor XML using a publicly available DTD, and standard-conforming simple\r\nHTML, PostScript or PDF designed for human modification. Examples of\r\ntransparent image formats include PNG, XCF and JPG. Opaque formats\r\ninclude proprietary formats that can be read and edited only by\r\nproprietary word processors, SGML or XML for which the DTD and/or\r\nprocessing tools are not generally available, and the\r\nmachine-generated HTML, PostScript or PDF produced by some word\r\nprocessors for output purposes only.\r\n\r\nThe "Title Page" means, for a printed book, the title page itself,\r\nplus such following pages as are needed to hold, legibly, the material\r\nthis License requires to appear in the title page. For works in\r\nformats which do not have any title page as such, "Title Page" means\r\nthe text near the most prominent appearance of the work's title,\r\npreceding the beginning of the body of the text.\r\n\r\nThe "publisher" means any person or entity that distributes copies of\r\nthe Document to the public.\r\n\r\nA section "Entitled XYZ" means a named subunit of the Document whose\r\ntitle either is precisely XYZ or contains XYZ in parentheses following\r\ntext that translates XYZ in another language. (Here XYZ stands for a\r\nspecific section name mentioned below, such as "Acknowledgements",\r\n"Dedications", "Endorsements", or "History".) To "Preserve the Title"\r\nof such a section when you modify the Document means that it remains a\r\nsection "Entitled XYZ" according to this definition.\r\n\r\nThe Document may include Warranty Disclaimers next to the notice which\r\nstates that this License applies to the Document. These Warranty\r\nDisclaimers are considered to be included by reference in this\r\nLicense, but only as regards disclaiming warranties: any other\r\nimplication that these Warranty Disclaimers may have is void and has\r\nno effect on the meaning of this License.\r\n\r\n2. VERBATIM COPYING\r\n\r\nYou may copy and distribute the Document in any medium, either\r\ncommercially or noncommercially, provided that this License, the\r\ncopyright notices, and the license notice saying this License applies\r\nto the Document are reproduced in all copies, and that you add no\r\nother conditions whatsoever to those of this License. You may not use\r\ntechnical measures to obstruct or control the reading or further\r\ncopying of the copies you make or distribute. However, you may accept\r\ncompensation in exchange for copies. If you distribute a large enough\r\nnumber of copies you must also follow the conditions in section 3.\r\n\r\nYou may also lend copies, under the same conditions stated above, and\r\nyou may publicly display copies.\r\n\r\n\r\n3. COPYING IN QUANTITY\r\n\r\nIf you publish printed copies (or copies in media that commonly have\r\nprinted covers) of the Document, numbering more than 100, and the\r\nDocument's license notice requires Cover Texts, you must enclose the\r\ncopies in covers that carry, clearly and legibly, all these Cover\r\nTexts: Front-Cover Texts on the front cover, and Back-Cover Texts on\r\nthe back cover. Both covers must also clearly and legibly identify\r\nyou as the publisher of these copies. The front cover must present\r\nthe full title with all words of the title equally prominent and\r\nvisible. You may add other material on the covers in addition.\r\nCopying with changes limited to the covers, as long as they preserve\r\nthe title of the Document and satisfy these conditions, can be treated\r\nas verbatim copying in other respects.\r\n\r\nIf the required texts for either cover are too voluminous to fit\r\nlegibly, you should put the first ones listed (as many as fit\r\nreasonably) on the actual cover, and continue the rest onto adjacent\r\npages.\r\n\r\nIf you publish or distribute Opaque copies of the Document numbering\r\nmore than 100, you must either include a machine-readable Transparent\r\ncopy along with each Opaque copy, or state in or with each Opaque copy\r\na computer-network location from which the general network-using\r\npublic has access to download using public-standard network protocols\r\na complete Transparent copy of the Document, free of added material.\r\nIf you use the latter option, you must take reasonably prudent steps,\r\nwhen you begin distribution of Opaque copies in quantity, to ensure\r\nthat this Transparent copy will remain thus accessible at the stated\r\nlocation until at least one year after the last time you distribute an\r\nOpaque copy (directly or through your agents or retailers) of that\r\nedition to the public.\r\n\r\nIt is requested, but not required, that you contact the authors of the\r\nDocument well before redistributing any large number of copies, to\r\ngive them a chance to provide you with an updated version of the\r\nDocument.\r\n\r\n\r\n4. MODIFICATIONS\r\n\r\nYou may copy and distribute a Modified Version of the Document under\r\nthe conditions of sections 2 and 3 above, provided that you release\r\nthe Modified Version under precisely this License, with the Modified\r\nVersion filling the role of the Document, thus licensing distribution\r\nand modification of the Modified Version to whoever possesses a copy\r\nof it. In addition, you must do these things in the Modified Version:\r\n\r\nA. Use in the Title Page (and on the covers, if any) a title distinct\r\n from that of the Document, and from those of previous versions\r\n (which should, if there were any, be listed in the History section\r\n of the Document). You may use the same title as a previous version\r\n if the original publisher of that version gives permission.\r\nB. List on the Title Page, as authors, one or more persons or entities\r\n responsible for authorship of the modifications in the Modified\r\n Version, together with at least five of the principal authors of the\r\n Document (all of its principal authors, if it has fewer than five),\r\n unless they release you from this requirement.\r\nC. State on the Title page the name of the publisher of the\r\n Modified Version, as the publisher.\r\nD. Preserve all the copyright notices of the Document.\r\nE. Add an appropriate copyright notice for your modifications\r\n adjacent to the other copyright notices.\r\nF. Include, immediately after the copyright notices, a license notice\r\n giving the public permission to use the Modified Version under the\r\n terms of this License, in the form shown in the Addendum below.\r\nG. Preserve in that license notice the full lists of Invariant Sections\r\n and required Cover Texts given in the Document's license notice.\r\nH. Include an unaltered copy of this License.\r\nI. Preserve the section Entitled "History", Preserve its Title, and add\r\n to it an item stating at least the title, year, new authors, and\r\n publisher of the Modified Version as given on the Title Page. If\r\n there is no section Entitled "History" in the Document, create one\r\n stating the title, year, authors, and publisher of the Document as\r\n given on its Title Page, then add an item describing the Modified\r\n Version as stated in the previous sentence.\r\nJ. Preserve the network location, if any, given in the Document for\r\n public access to a Transparent copy of the Document, and likewise\r\n the network locations given in the Document for previous versions\r\n it was based on. These may be placed in the "History" section.\r\n You may omit a network location for a work that was published at\r\n least four years before the Document itself, or if the original\r\n publisher of the version it refers to gives permission.\r\nK. For any section Entitled "Acknowledgements" or "Dedications",\r\n Preserve the Title of the section, and preserve in the section all\r\n the substance and tone of each of the contributor acknowledgements\r\n and/or dedications given therein.\r\nL. Preserve all the Invariant Sections of the Document,\r\n unaltered in their text and in their titles. Section numbers\r\n or the equivalent are not considered part of the section titles.\r\nM. Delete any section Entitled "Endorsements". Such a section\r\n may not be included in the Modified Version.\r\nN. Do not retitle any existing section to be Entitled "Endorsements"\r\n or to conflict in title with any Invariant Section.\r\nO. Preserve any Warranty Disclaimers.\r\n\r\nIf the Modified Version includes new front-matter sections or\r\nappendices that qualify as Secondary Sections and contain no material\r\ncopied from the Document, you may at your option designate some or all\r\nof these sections as invariant. To do this, add their titles to the\r\nlist of Invariant Sections in the Modified Version's license notice.\r\nThese titles must be distinct from any other section titles.\r\n\r\nYou may add a section Entitled "Endorsements", provided it contains\r\nnothing but endorsements of your Modified Version by various\r\nparties--for example, statements of peer review or that the text has\r\nbeen approved by an organization as the authoritative definition of a\r\nstandard.\r\n\r\nYou may add a passage of up to five words as a Front-Cover Text, and a\r\npassage of up to 25 words as a Back-Cover Text, to the end of the list\r\nof Cover Texts in the Modified Version. Only one passage of\r\nFront-Cover Text and one of Back-Cover Text may be added by (or\r\nthrough arrangements made by) any one entity. If the Document already\r\nincludes a cover text for the same cover, previously added by you or\r\nby arrangement made by the same entity you are acting on behalf of,\r\nyou may not add another; but you may replace the old one, on explicit\r\npermission from the previous publisher that added the old one.\r\n\r\nThe author(s) and publisher(s) of the Document do not by this License\r\ngive permission to use their names for publicity for or to assert or\r\nimply endorsement of any Modified Version.\r\n\r\n\r\n5. COMBINING DOCUMENTS\r\n\r\nYou may combine the Document with other documents released under this\r\nLicense, under the terms defined in section 4 above for modified\r\nversions, provided that you include in the combination all of the\r\nInvariant Sections of all of the original documents, unmodified, and\r\nlist them all as Invariant Sections of your combined work in its\r\nlicense notice, and that you preserve all their Warranty Disclaimers.\r\n\r\nThe combined work need only contain one copy of this License, and\r\nmultiple identical Invariant Sections may be replaced with a single\r\ncopy. If there are multiple Invariant Sections with the same name but\r\ndifferent contents, make the title of each such section unique by\r\nadding at the end of it, in parentheses, the name of the original\r\nauthor or publisher of that section if known, or else a unique number.\r\nMake the same adjustment to the section titles in the list of\r\nInvariant Sections in the license notice of the combined work.\r\n\r\nIn the combination, you must combine any sections Entitled "History"\r\nin the various original documents, forming one section Entitled\r\n"History"; likewise combine any sections Entitled "Acknowledgements",\r\nand any sections Entitled "Dedications". You must delete all sections\r\nEntitled "Endorsements".\r\n\r\n\r\n6. COLLECTIONS OF DOCUMENTS\r\n\r\nYou may make a collection consisting of the Document and other\r\ndocuments released under this License, and replace the individual\r\ncopies of this License in the various documents with a single copy\r\nthat is included in the collection, provided that you follow the rules\r\nof this License for verbatim copying of each of the documents in all\r\nother respects.\r\n\r\nYou may extract a single document from such a collection, and\r\ndistribute it individually under this License, provided you insert a\r\ncopy of this License into the extracted document, and follow this\r\nLicense in all other respects regarding verbatim copying of that\r\ndocument.\r\n\r\n\r\n7. AGGREGATION WITH INDEPENDENT WORKS\r\n\r\nA compilation of the Document or its derivatives with other separate\r\nand independent documents or works, in or on a volume of a storage or\r\ndistribution medium, is called an "aggregate" if the copyright\r\nresulting from the compilation is not used to limit the legal rights\r\nof the compilation's users beyond what the individual works permit.\r\nWhen the Document is included in an aggregate, this License does not\r\napply to the other works in the aggregate which are not themselves\r\nderivative works of the Document.\r\n\r\nIf the Cover Text requirement of section 3 is applicable to these\r\ncopies of the Document, then if the Document is less than one half of\r\nthe entire aggregate, the Document's Cover Texts may be placed on\r\ncovers that bracket the Document within the aggregate, or the\r\nelectronic equivalent of covers if the Document is in electronic form.\r\nOtherwise they must appear on printed covers that bracket the whole\r\naggregate.\r\n\r\n\r\n8. TRANSLATION\r\n\r\nTranslation is considered a kind of modification, so you may\r\ndistribute translations of the Document under the terms of section 4.\r\nReplacing Invariant Sections with translations requires special\r\npermission from their copyright holders, but you may include\r\ntranslations of some or all Invariant Sections in addition to the\r\noriginal versions of these Invariant Sections. You may include a\r\ntranslation of this License, and all the license notices in the\r\nDocument, and any Warranty Disclaimers, provided that you also include\r\nthe original English version of this License and the original versions\r\nof those notices and disclaimers. In case of a disagreement between\r\nthe translation and the original version of this License or a notice\r\nor disclaimer, the original version will prevail.\r\n\r\nIf a section in the Document is Entitled "Acknowledgements",\r\n"Dedications", or "History", the requirement (section 4) to Preserve\r\nits Title (section 1) will typically require changing the actual\r\ntitle.\r\n\r\n\r\n9. TERMINATION\r\n\r\nYou may not copy, modify, sublicense, or distribute the Document\r\nexcept as expressly provided under this License. Any attempt\r\notherwise to copy, modify, sublicense, or distribute it is void, and\r\nwill automatically terminate your rights under this License.\r\n\r\nHowever, if you cease all violation of this License, then your license\r\nfrom a particular copyright holder is reinstated (a) provisionally,\r\nunless and until the copyright holder explicitly and finally\r\nterminates your license, and (b) permanently, if the copyright holder\r\nfails to notify you of the violation by some reasonable means prior to\r\n60 days after the cessation.\r\n\r\nMoreover, your license from a particular copyright holder is\r\nreinstated permanently if the copyright holder notifies you of the\r\nviolation by some reasonable means, this is the first time you have\r\nreceived notice of violation of this License (for any work) from that\r\ncopyright holder, and you cure the violation prior to 30 days after\r\nyour receipt of the notice.\r\n\r\nTermination of your rights under this section does not terminate the\r\nlicenses of parties who have received copies or rights from you under\r\nthis License. If your rights have been terminated and not permanently\r\nreinstated, receipt of a copy of some or all of the same material does\r\nnot give you any rights to use it.\r\n\r\n\r\n10. FUTURE REVISIONS OF THIS LICENSE\r\n\r\nThe Free Software Foundation may publish new, revised versions of the\r\nGNU Free Documentation License from time to time. Such new versions\r\nwill be similar in spirit to the present version, but may differ in\r\ndetail to address new problems or concerns. See\r\nhttp://www.gnu.org/copyleft/.\r\n\r\nEach version of the License is given a distinguishing version number.\r\nIf the Document specifies that a particular numbered version of this\r\nLicense "or any later version" applies to it, you have the option of\r\nfollowing the terms and conditions either of that specified version or\r\nof any later version that has been published (not as a draft) by the\r\nFree Software Foundation. If the Document does not specify a version\r\nnumber of this License, you may choose any version ever published (not\r\nas a draft) by the Free Software Foundation. If the Document\r\nspecifies that a proxy can decide which future versions of this\r\nLicense can be used, that proxy's public statement of acceptance of a\r\nversion permanently authorizes you to choose that version for the\r\nDocument.\r\n\r\n11. RELICENSING\r\n\r\n"Massive Multiauthor Collaboration Site" (or "MMC Site") means any\r\nWorld Wide Web server that publishes copyrightable works and also\r\nprovides prominent facilities for anybody to edit those works. A\r\npublic wiki that anybody can edit is an example of such a server. A\r\n"Massive Multiauthor Collaboration" (or "MMC") contained in the site\r\nmeans any set of copyrightable works thus published on the MMC site.\r\n\r\n"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 \r\nlicense published by Creative Commons Corporation, a not-for-profit \r\ncorporation with a principal place of business in San Francisco, \r\nCalifornia, as well as future copyleft versions of that license \r\npublished by that same organization.\r\n\r\n"Incorporate" means to publish or republish a Document, in whole or in \r\npart, as part of another Document.\r\n\r\nAn MMC is "eligible for relicensing" if it is licensed under this \r\nLicense, and if all works that were first published under this License \r\nsomewhere other than this MMC, and subsequently incorporated in whole or \r\nin part into the MMC, (1) had no cover texts or invariant sections, and \r\n(2) were thus incorporated prior to November 1, 2008.\r\n\r\nThe operator of an MMC Site may republish an MMC contained in the site\r\nunder CC-BY-SA on the same site at any time before August 1, 2009,\r\nprovided the MMC is eligible for relicensing.\r\n\r\n\r\nADDENDUM: How to use this License for your documents\r\n\r\nTo use this License in a document you have written, include a copy of\r\nthe License in the document and put the following copyright and\r\nlicense notices just after the title page:\r\n\r\n Copyright (c) YEAR YOUR NAME.\r\n Permission is granted to copy, distribute and/or modify this document\r\n under the terms of the GNU Free Documentation License, Version 1.3\r\n or any later version published by the Free Software Foundation;\r\n with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.\r\n A copy of the license is included in the section entitled "GNU\r\n Free Documentation License".\r\n\r\nIf you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,\r\nreplace the "with...Texts." line with this:\r\n\r\n with the Invariant Sections being LIST THEIR TITLES, with the\r\n Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.\r\n\r\nIf you have Invariant Sections without Cover Texts, or some other\r\ncombination of the three, merge those two alternatives to suit the\r\nsituation.\r\n\r\nIf your document contains nontrivial examples of program code, we\r\nrecommend releasing these examples in parallel under your choice of\r\nfree software license, such as the GNU General Public License,\r\nto permit their use in free software.</pre>\r\n</div>\r\n<p> </p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:25206:\"<p> </p>\n<p> GNU Free Documentation License<br />\n Version 1.3, 3 November 2008</p>\n<p> Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.<br />\n <http://fsf.org/><br />\n Everyone is permitted to copy and distribute verbatim copies<br />\n of this license document, but changing it is not allowed.</p>\n<p>0. PREAMBLE</p>\n<p>The purpose of this License is to make a manual, textbook, or other<br />\nfunctional and useful document \"free\" in the sense of freedom: to<br />\nassure everyone the effective freedom to copy and redistribute it,<br />\nwith or without modifying it, either commercially or noncommercially.<br />\nSecondarily, this License preserves for the author and publisher a way<br />\nto get credit for their work, while not being considered responsible<br />\nfor modifications made by others.</p>\n<p>This License is a kind of \"copyleft\", which means that derivative<br />\nworks of the document must themselves be free in the same sense. It<br />\ncomplements the GNU General Public License, which is a copyleft<br />\nlicense designed for free software.</p>\n<p>We have designed this License in order to use it for manuals for free<br />\nsoftware, because free software needs free documentation: a free<br />\nprogram should come with manuals providing the same freedoms that the<br />\nsoftware does. But this License is not limited to software manuals;<br />\nit can be used for any textual work, regardless of subject matter or<br />\nwhether it is published as a printed book. We recommend this License<br />\nprincipally for works whose purpose is instruction or reference.</p>\n<p>1. APPLICABILITY AND DEFINITIONS</p>\n<p>This License applies to any manual or other work, in any medium, that<br />\ncontains a notice placed by the copyright holder saying it can be<br />\ndistributed under the terms of this License. Such a notice grants a<br />\nworld-wide, royalty-free license, unlimited in duration, to use that<br />\nwork under the conditions stated herein. The \"Document\", below,<br />\nrefers to any such manual or work. Any member of the public is a<br />\nlicensee, and is addressed as \"you\". You accept the license if you<br />\ncopy, modify or distribute the work in a way requiring permission<br />\nunder copyright law.</p>\n<p>A \"Modified Version\" of the Document means any work containing the<br />\nDocument or a portion of it, either copied verbatim, or with<br />\nmodifications and/or translated into another language.</p>\n<p>A \"Secondary Section\" is a named appendix or a front-matter section of<br />\nthe Document that deals exclusively with the relationship of the<br />\npublishers or authors of the Document to the Document\'s overall<br />\nsubject (or to related matters) and contains nothing that could fall<br />\ndirectly within that overall subject. (Thus, if the Document is in<br />\npart a textbook of mathematics, a Secondary Section may not explain<br />\nany mathematics.) The relationship could be a matter of historical<br />\nconnection with the subject or with related matters, or of legal,<br />\ncommercial, philosophical, ethical or political position regarding<br />\nthem.</p>\n<p>The \"Invariant Sections\" are certain Secondary Sections whose titles<br />\nare designated, as being those of Invariant Sections, in the notice<br />\nthat says that the Document is released under this License. If a<br />\nsection does not fit the above definition of Secondary then it is not<br />\nallowed to be designated as Invariant. The Document may contain zero<br />\nInvariant Sections. If the Document does not identify any Invariant<br />\nSections then there are none.</p>\n<p>The \"Cover Texts\" are certain short passages of text that are listed,<br />\nas Front-Cover Texts or Back-Cover Texts, in the notice that says that<br />\nthe Document is released under this License. A Front-Cover Text may<br />\nbe at most 5 words, and a Back-Cover Text may be at most 25 words.</p>\n<p>A \"Transparent\" copy of the Document means a machine-readable copy,<br />\nrepresented in a format whose specification is available to the<br />\ngeneral public, that is suitable for revising the document<br />\nstraightforwardly with generic text editors or (for images composed of<br />\npixels) generic paint programs or (for drawings) some widely available<br />\ndrawing editor, and that is suitable for input to text formatters or<br />\nfor automatic translation to a variety of formats suitable for input<br />\nto text formatters. A copy made in an otherwise Transparent file<br />\nformat whose markup, or absence of markup, has been arranged to thwart<br />\nor discourage subsequent modification by readers is not Transparent.<br />\nAn image format is not Transparent if used for any substantial amount<br />\nof text. A copy that is not \"Transparent\" is called \"Opaque\".</p>\n<p>Examples of suitable formats for Transparent copies include plain<br />\nASCII without markup, Texinfo input format, LaTeX input format, SGML<br />\nor XML using a publicly available DTD, and standard-conforming simple<br />\nHTML, PostScript or PDF designed for human modification. Examples of<br />\ntransparent image formats include PNG, XCF and JPG. Opaque formats<br />\ninclude proprietary formats that can be read and edited only by<br />\nproprietary word processors, SGML or XML for which the DTD and/or<br />\nprocessing tools are not generally available, and the<br />\nmachine-generated HTML, PostScript or PDF produced by some word<br />\nprocessors for output purposes only.</p>\n<p>The \"Title Page\" means, for a printed book, the title page itself,<br />\nplus such following pages as are needed to hold, legibly, the material<br />\nthis License requires to appear in the title page. For works in<br />\nformats which do not have any title page as such, \"Title Page\" means<br />\nthe text near the most prominent appearance of the work\'s title,<br />\npreceding the beginning of the body of the text.</p>\n<p>The \"publisher\" means any person or entity that distributes copies of<br />\nthe Document to the public.</p>\n<p>A section \"Entitled XYZ\" means a named subunit of the Document whose<br />\ntitle either is precisely XYZ or contains XYZ in parentheses following<br />\ntext that translates XYZ in another language. (Here XYZ stands for a<br />\nspecific section name mentioned below, such as \"Acknowledgements\",<br />\n\"Dedications\", \"Endorsements\", or \"History\".) To \"Preserve the Title\"<br />\nof such a section when you modify the Document means that it remains a<br />\nsection \"Entitled XYZ\" according to this definition.</p>\n<p>The Document may include Warranty Disclaimers next to the notice which<br />\nstates that this License applies to the Document. These Warranty<br />\nDisclaimers are considered to be included by reference in this<br />\nLicense, but only as regards disclaiming warranties: any other<br />\nimplication that these Warranty Disclaimers may have is void and has<br />\nno effect on the meaning of this License.</p>\n<p>2. VERBATIM COPYING</p>\n<p>You may copy and distribute the Document in any medium, either<br />\ncommercially or noncommercially, provided that this License, the<br />\ncopyright notices, and the license notice saying this License applies<br />\nto the Document are reproduced in all copies, and that you add no<br />\nother conditions whatsoever to those of this License. You may not use<br />\ntechnical measures to obstruct or control the reading or further<br />\ncopying of the copies you make or distribute. However, you may accept<br />\ncompensation in exchange for copies. If you distribute a large enough<br />\nnumber of copies you must also follow the conditions in section 3.</p>\n<p>You may also lend copies, under the same conditions stated above, and<br />\nyou may publicly display copies.</p>\n<p>3. COPYING IN QUANTITY</p>\n<p>If you publish printed copies (or copies in media that commonly have<br />\nprinted covers) of the Document, numbering more than 100, and the<br />\nDocument\'s license notice requires Cover Texts, you must enclose the<br />\ncopies in covers that carry, clearly and legibly, all these Cover<br />\nTexts: Front-Cover Texts on the front cover, and Back-Cover Texts on<br />\nthe back cover. Both covers must also clearly and legibly identify<br />\nyou as the publisher of these copies. The front cover must present<br />\nthe full title with all words of the title equally prominent and<br />\nvisible. You may add other material on the covers in addition.<br />\nCopying with changes limited to the covers, as long as they preserve<br />\nthe title of the Document and satisfy these conditions, can be treated<br />\nas verbatim copying in other respects.</p>\n<p>If the required texts for either cover are too voluminous to fit<br />\nlegibly, you should put the first ones listed (as many as fit<br />\nreasonably) on the actual cover, and continue the rest onto adjacent<br />\npages.</p>\n<p>If you publish or distribute Opaque copies of the Document numbering<br />\nmore than 100, you must either include a machine-readable Transparent<br />\ncopy along with each Opaque copy, or state in or with each Opaque copy<br />\na computer-network location from which the general network-using<br />\npublic has access to download using public-standard network protocols<br />\na complete Transparent copy of the Document, free of added material.<br />\nIf you use the latter option, you must take reasonably prudent steps,<br />\nwhen you begin distribution of Opaque copies in quantity, to ensure<br />\nthat this Transparent copy will remain thus accessible at the stated<br />\nlocation until at least one year after the last time you distribute an<br />\nOpaque copy (directly or through your agents or retailers) of that<br />\nedition to the public.</p>\n<p>It is requested, but not required, that you contact the authors of the<br />\nDocument well before redistributing any large number of copies, to<br />\ngive them a chance to provide you with an updated version of the<br />\nDocument.</p>\n<p>4. MODIFICATIONS</p>\n<p>You may copy and distribute a Modified Version of the Document under<br />\nthe conditions of sections 2 and 3 above, provided that you release<br />\nthe Modified Version under precisely this License, with the Modified<br />\nVersion filling the role of the Document, thus licensing distribution<br />\nand modification of the Modified Version to whoever possesses a copy<br />\nof it. In addition, you must do these things in the Modified Version:</p>\n<p>A. Use in the Title Page (and on the covers, if any) a title distinct<br />\n from that of the Document, and from those of previous versions<br />\n (which should, if there were any, be listed in the History section<br />\n of the Document). You may use the same title as a previous version<br />\n if the original publisher of that version gives permission.<br />\nB. List on the Title Page, as authors, one or more persons or entities<br />\n responsible for authorship of the modifications in the Modified<br />\n Version, together with at least five of the principal authors of the<br />\n Document (all of its principal authors, if it has fewer than five),<br />\n unless they release you from this requirement.<br />\nC. State on the Title page the name of the publisher of the<br />\n Modified Version, as the publisher.<br />\nD. Preserve all the copyright notices of the Document.<br />\nE. Add an appropriate copyright notice for your modifications<br />\n adjacent to the other copyright notices.<br />\nF. Include, immediately after the copyright notices, a license notice<br />\n giving the public permission to use the Modified Version under the<br />\n terms of this License, in the form shown in the Addendum below.<br />\nG. Preserve in that license notice the full lists of Invariant Sections<br />\n and required Cover Texts given in the Document\'s license notice.<br />\nH. Include an unaltered copy of this License.<br />\nI. Preserve the section Entitled \"History\", Preserve its Title, and add<br />\n to it an item stating at least the title, year, new authors, and<br />\n publisher of the Modified Version as given on the Title Page. If<br />\n there is no section Entitled \"History\" in the Document, create one<br />\n stating the title, year, authors, and publisher of the Document as<br />\n given on its Title Page, then add an item describing the Modified<br />\n Version as stated in the previous sentence.<br />\nJ. Preserve the network location, if any, given in the Document for<br />\n public access to a Transparent copy of the Document, and likewise<br />\n the network locations given in the Document for previous versions<br />\n it was based on. These may be placed in the \"History\" section.<br />\n You may omit a network location for a work that was published at<br />\n least four years before the Document itself, or if the original<br />\n publisher of the version it refers to gives permission.<br />\nK. For any section Entitled \"Acknowledgements\" or \"Dedications\",<br />\n Preserve the Title of the section, and preserve in the section all<br />\n the substance and tone of each of the contributor acknowledgements<br />\n and/or dedications given therein.<br />\nL. Preserve all the Invariant Sections of the Document,<br />\n unaltered in their text and in their titles. Section numbers<br />\n or the equivalent are not considered part of the section titles.<br />\nM. Delete any section Entitled \"Endorsements\". Such a section<br />\n may not be included in the Modified Version.<br />\nN. Do not retitle any existing section to be Entitled \"Endorsements\"<br />\n or to conflict in title with any Invariant Section.<br />\nO. Preserve any Warranty Disclaimers.</p>\n<p>If the Modified Version includes new front-matter sections or<br />\nappendices that qualify as Secondary Sections and contain no material<br />\ncopied from the Document, you may at your option designate some or all<br />\nof these sections as invariant. To do this, add their titles to the<br />\nlist of Invariant Sections in the Modified Version\'s license notice.<br />\nThese titles must be distinct from any other section titles.</p>\n<p>You may add a section Entitled \"Endorsements\", provided it contains<br />\nnothing but endorsements of your Modified Version by various<br />\nparties--for example, statements of peer review or that the text has<br />\nbeen approved by an organization as the authoritative definition of a<br />\nstandard.</p>\n<p>You may add a passage of up to five words as a Front-Cover Text, and a<br />\npassage of up to 25 words as a Back-Cover Text, to the end of the list<br />\nof Cover Texts in the Modified Version. Only one passage of<br />\nFront-Cover Text and one of Back-Cover Text may be added by (or<br />\nthrough arrangements made by) any one entity. If the Document already<br />\nincludes a cover text for the same cover, previously added by you or<br />\nby arrangement made by the same entity you are acting on behalf of,<br />\nyou may not add another; but you may replace the old one, on explicit<br />\npermission from the previous publisher that added the old one.</p>\n<p>The author(s) and publisher(s) of the Document do not by this License<br />\ngive permission to use their names for publicity for or to assert or<br />\nimply endorsement of any Modified Version.</p>\n<p>5. COMBINING DOCUMENTS</p>\n<p>You may combine the Document with other documents released under this<br />\nLicense, under the terms defined in section 4 above for modified<br />\nversions, provided that you include in the combination all of the<br />\nInvariant Sections of all of the original documents, unmodified, and<br />\nlist them all as Invariant Sections of your combined work in its<br />\nlicense notice, and that you preserve all their Warranty Disclaimers.</p>\n<p>The combined work need only contain one copy of this License, and<br />\nmultiple identical Invariant Sections may be replaced with a single<br />\ncopy. If there are multiple Invariant Sections with the same name but<br />\ndifferent contents, make the title of each such section unique by<br />\nadding at the end of it, in parentheses, the name of the original<br />\nauthor or publisher of that section if known, or else a unique number.<br />\nMake the same adjustment to the section titles in the list of<br />\nInvariant Sections in the license notice of the combined work.</p>\n<p>In the combination, you must combine any sections Entitled \"History\"<br />\nin the various original documents, forming one section Entitled<br />\n\"History\"; likewise combine any sections Entitled \"Acknowledgements\",<br />\nand any sections Entitled \"Dedications\". You must delete all sections<br />\nEntitled \"Endorsements\".</p>\n<p>6. COLLECTIONS OF DOCUMENTS</p>\n<p>You may make a collection consisting of the Document and other<br />\ndocuments released under this License, and replace the individual<br />\ncopies of this License in the various documents with a single copy<br />\nthat is included in the collection, provided that you follow the rules<br />\nof this License for verbatim copying of each of the documents in all<br />\nother respects.</p>\n<p>You may extract a single document from such a collection, and<br />\ndistribute it individually under this License, provided you insert a<br />\ncopy of this License into the extracted document, and follow this<br />\nLicense in all other respects regarding verbatim copying of that<br />\ndocument.</p>\n<p>7. AGGREGATION WITH INDEPENDENT WORKS</p>\n<p>A compilation of the Document or its derivatives with other separate<br />\nand independent documents or works, in or on a volume of a storage or<br />\ndistribution medium, is called an \"aggregate\" if the copyright<br />\nresulting from the compilation is not used to limit the legal rights<br />\nof the compilation\'s users beyond what the individual works permit.<br />\nWhen the Document is included in an aggregate, this License does not<br />\napply to the other works in the aggregate which are not themselves<br />\nderivative works of the Document.</p>\n<p>If the Cover Text requirement of section 3 is applicable to these<br />\ncopies of the Document, then if the Document is less than one half of<br />\nthe entire aggregate, the Document\'s Cover Texts may be placed on<br />\ncovers that bracket the Document within the aggregate, or the<br />\nelectronic equivalent of covers if the Document is in electronic form.<br />\nOtherwise they must appear on printed covers that bracket the whole<br />\naggregate.</p>\n<p>8. TRANSLATION</p>\n<p>Translation is considered a kind of modification, so you may<br />\ndistribute translations of the Document under the terms of section 4.<br />\nReplacing Invariant Sections with translations requires special<br />\npermission from their copyright holders, but you may include<br />\ntranslations of some or all Invariant Sections in addition to the<br />\noriginal versions of these Invariant Sections. You may include a<br />\ntranslation of this License, and all the license notices in the<br />\nDocument, and any Warranty Disclaimers, provided that you also include<br />\nthe original English version of this License and the original versions<br />\nof those notices and disclaimers. In case of a disagreement between<br />\nthe translation and the original version of this License or a notice<br />\nor disclaimer, the original version will prevail.</p>\n<p>If a section in the Document is Entitled \"Acknowledgements\",<br />\n\"Dedications\", or \"History\", the requirement (section 4) to Preserve<br />\nits Title (section 1) will typically require changing the actual<br />\ntitle.</p>\n<p>9. TERMINATION</p>\n<p>You may not copy, modify, sublicense, or distribute the Document<br />\nexcept as expressly provided under this License. Any attempt<br />\notherwise to copy, modify, sublicense, or distribute it is void, and<br />\nwill automatically terminate your rights under this License.</p>\n<p>However, if you cease all violation of this License, then your license<br />\nfrom a particular copyright holder is reinstated (a) provisionally,<br />\nunless and until the copyright holder explicitly and finally<br />\nterminates your license, and (b) permanently, if the copyright holder<br />\nfails to notify you of the violation by some reasonable means prior to<br />\n60 days after the cessation.</p>\n<p>Moreover, your license from a particular copyright holder is<br />\nreinstated permanently if the copyright holder notifies you of the<br />\nviolation by some reasonable means, this is the first time you have<br />\nreceived notice of violation of this License (for any work) from that<br />\ncopyright holder, and you cure the violation prior to 30 days after<br />\nyour receipt of the notice.</p>\n<p>Termination of your rights under this section does not terminate the<br />\nlicenses of parties who have received copies or rights from you under<br />\nthis License. If your rights have been terminated and not permanently<br />\nreinstated, receipt of a copy of some or all of the same material does<br />\nnot give you any rights to use it.</p>\n<p>10. FUTURE REVISIONS OF THIS LICENSE</p>\n<p>The Free Software Foundation may publish new, revised versions of the<br />\nGNU Free Documentation License from time to time. Such new versions<br />\nwill be similar in spirit to the present version, but may differ in<br />\ndetail to address new problems or concerns. See<br />\nhttp://www.gnu.org/copyleft/.</p>\n<p>Each version of the License is given a distinguishing version number.<br />\nIf the Document specifies that a particular numbered version of this<br />\nLicense \"or any later version\" applies to it, you have the option of<br />\nfollowing the terms and conditions either of that specified version or<br />\nof any later version that has been published (not as a draft) by the<br />\nFree Software Foundation. If the Document does not specify a version<br />\nnumber of this License, you may choose any version ever published (not<br />\nas a draft) by the Free Software Foundation. If the Document<br />\nspecifies that a proxy can decide which future versions of this<br />\nLicense can be used, that proxy\'s public statement of acceptance of a<br />\nversion permanently authorizes you to choose that version for the<br />\nDocument.</p>\n<p>11. RELICENSING</p>\n<p>\"Massive Multiauthor Collaboration Site\" (or \"MMC Site\") means any<br />\nWorld Wide Web server that publishes copyrightable works and also<br />\nprovides prominent facilities for anybody to edit those works. A<br />\npublic wiki that anybody can edit is an example of such a server. A<br />\n\"Massive Multiauthor Collaboration\" (or \"MMC\") contained in the site<br />\nmeans any set of copyrightable works thus published on the MMC site.</p>\n<p>\"CC-BY-SA\" means the Creative Commons Attribution-Share Alike 3.0<br />\nlicense published by Creative Commons Corporation, a not-for-profit<br />\ncorporation with a principal place of business in San Francisco,<br />\nCalifornia, as well as future copyleft versions of that license<br />\npublished by that same organization.</p>\n<p>\"Incorporate\" means to publish or republish a Document, in whole or in<br />\npart, as part of another Document.</p>\n<p>An MMC is \"eligible for relicensing\" if it is licensed under this<br />\nLicense, and if all works that were first published under this License<br />\nsomewhere other than this MMC, and subsequently incorporated in whole or<br />\nin part into the MMC, (1) had no cover texts or invariant sections, and<br />\n(2) were thus incorporated prior to November 1, 2008.</p>\n<p>The operator of an MMC Site may republish an MMC contained in the site<br />\nunder CC-BY-SA on the same site at any time before August 1, 2009,<br />\nprovided the MMC is eligible for relicensing.</p>\n<p>ADDENDUM: How to use this License for your documents</p>\n<p>To use this License in a document you have written, include a copy of<br />\nthe License in the document and put the following copyright and<br />\nlicense notices just after the title page:</p>\n<p> Copyright (c) YEAR YOUR NAME.<br />\n Permission is granted to copy, distribute and/or modify this document<br />\n under the terms of the GNU Free Documentation License, Version 1.3<br />\n or any later version published by the Free Software Foundation;<br />\n with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.<br />\n A copy of the license is included in the section entitled \"GNU<br />\n Free Documentation License\".</p>\n<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,<br />\nreplace the \"with...Texts.\" line with this:</p>\n<p> with the Invariant Sections being LIST THEIR TITLES, with the<br />\n Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.</p>\n<p>If you have Invariant Sections without Cover Texts, or some other<br />\ncombination of the three, merge those two alternatives to suit the<br />\nsituation.</p>\n<p>If your document contains nontrivial examples of program code, we<br />\nrecommend releasing these examples in parallel under your choice of<br />\nfree software license, such as the GNU General Public License,<br />\nto permit their use in free software.</p>\n<p> </p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434753447,1),('field:node:186','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:4249:\"<p>Nei sistemi operativi Unix e Unix-like, il comando crontab consente la pianificazione di comandi, ovvero consente di registrarli presso il sistema per essere poi mandati in esecuzione periodicamente.</p>\r\n<p>Generalmente, crontab usa un demone, chiamato crond, che è costantemente in esecuzione in background e, una volta al minuto, legge i contenuti del registro dei comandi pianificati ed esegue quelli per cui si è esaurito il periodo di attesa. Un comando mandato in esecuzione da crontab viene chiamato cronjob.</p>\r\n<script type=\"text/javascript\"><!--\r\ngoogle_ad_client = \"ca-pub-9382634443688186\";\r\n/* banner 468 x 60 */\r\ngoogle_ad_slot = \"0971897238\";\r\ngoogle_ad_width = 468;\r\ngoogle_ad_height = 60;\r\n//-->\r\n</script>\r\n<script type=\"text/javascript\"\r\nsrc=\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">\r\n</script>\r\n<h3>Operatori</h3>\r\n<p>Esistono diversi modi per specificare valori multipli in un campo: L'operatore virgola («,») specifica una lista di valori, ad esempio: «1,3,4,7,8». L'operatore trattino («-») specifica un intervallo di valori, ad esempio: «1-6», che equivale a «1,2,3,4,5,6». L'operatore asterisco («*») specifica tutti i possibili valori di un campo. Ad esempio, un asterisco nel campo dell'ora è equivalente a «ogni ora». Esiste anche un operatore supportato da alcune versioni estese del cron, l'operatore sbarra («/»), che può essere usato per saltare un certo numero di valori. Ad esempio, «*/3» nel campo dell'ora equivale a «0,3,6,9,12,15,18,21»; l'operatore «*» specifica «ogni ora», ma il «/3» indica che solo il primo, quarto, settimo e così via dei valori restituiti da «*» vengano usati.</p>\r\n<h3>\r\n Campi</h3>\r\n<pre>\r\n.---------------- [m]inute: minuto (0 - 59) \r\n| .------------- [h]our: ora (0 - 23)\r\n| | .---------- [d]ay [o]f [m]onth: giorno del mese (1 - 31)\r\n| | | .------- [mon]th: mese (1 - 12) OPPURE jan,feb,mar,apr... \r\n| | | | .---- [d]ay [o]f [w]eek: giorno della settimana (0 - 6) (domenica=0 o 7) OPPURE sun,mon,tue,wed,thu,fri,sat \r\n| | | | |\r\n\r\n* * * * * comando da eseguire</pre>\r\n<p>PS:Per «giorno della settimana» (5º campo), sia 0 che 7 sono considerati il valore domenica.</p>\r\n<p>Ok, dopo avervi raccontato tutta la favoletta "teorica" andiamo a vedere nella sostanza come si fa!</p>\r\n<p>Abbiamo principalmente due comandi, anche se ne esistono di altri:</p>\r\n<table border=\"0\" cellpadding=\"4\">\r\n <tbody>\r\n <tr valign=\"\\\'TOP\\\'\">\r\n <td align=\"\\\'LEFT\\\'\">\r\n crontab -e</td>\r\n <td align=\"\\\'LEFT\\\'\">\r\n Modifica il file crontab o o crea se non esiste</td>\r\n </tr>\r\n <tr valign=\"\\\'TOP\\\'\">\r\n <td align=\"\\\'LEFT\\\'\">\r\n crontab -l</td>\r\n <td align=\"\\\'LEFT\\\'\">\r\n Mostra il file crontab</td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p>A questo file che si aprirà, in base all'editor da noi scelto (nano, VI, VIM...) dobbiamo aggiungere una nuova riga con la sintassi precedentemente vista.</p>\r\n<p>Ad esempio questo fa un backup degli utenti alle 5:00 di ogni settimana:</p>\r\n<p>0 5 * * 1 tar -zcf /var/backups/home.tgz /home/</p>\r\n<p>Ad esempio ecco il cronjob che corre sulla mia $HOME per tenere sempre in esecuzione le API universitarie.</p>\r\n<p>0 * * * * $HOME/opt/nginx-1.2.1/sbin/nginx</p>\r\n<hr />\r\n<p>Siccome la ruota è già stata inventata e per non impazzire ulteriormente vi consiglio di usare un generatore, se ne trovano molti in giro, io vi coniglio <a href=\"http://www.openjs.com/scripts/jslibrary/demos/crontab.php\" target=\"_blank\">Crontab Code Generator</a> che oltre ad una semplice interfaccia grafica con cui possiamo anche selezionare più elementi contemporaneamente ad esempio per gli orari ci fornisce una spiegazione dettagliata approposito di crontab, che fa sempre comodo se ricerchiamo situazioni più complesse che non posso coprire nell'articolo.</p>\r\n<p>È tutto! Create e sperimentate i vostri cronjob!</p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:3356:\"<p>Nei sistemi operativi Unix e Unix-like, il comando crontab consente la pianificazione di comandi, ovvero consente di registrarli presso il sistema per essere poi mandati in esecuzione periodicamente.<br />\nGeneralmente, crontab usa un demone, chiamato crond, che è costantemente in esecuzione in background e, una volta al minuto, legge i contenuti del registro dei comandi pianificati ed esegue quelli per cui si è esaurito il periodo di attesa. Un comando mandato in esecuzione da crontab viene chiamato cronjob.</p>\n<p>Operatori<br />\nEsistono diversi modi per specificare valori multipli in un campo: L\'operatore virgola («,») specifica una lista di valori, ad esempio: «1,3,4,7,8». L\'operatore trattino («-») specifica un intervallo di valori, ad esempio: «1-6», che equivale a «1,2,3,4,5,6». L\'operatore asterisco («*») specifica tutti i possibili valori di un campo. Ad esempio, un asterisco nel campo dell\'ora è equivalente a «ogni ora». Esiste anche un operatore supportato da alcune versioni estese del cron, l\'operatore sbarra («/»), che può essere usato per saltare un certo numero di valori. Ad esempio, «*/3» nel campo dell\'ora equivale a «0,3,6,9,12,15,18,21»; l\'operatore «*» specifica «ogni ora», ma il «/3» indica che solo il primo, quarto, settimo e così via dei valori restituiti da «*» vengano usati.</p>\n<p> Campi</p>\n<p>.---------------- [m]inute: minuto (0 - 59)<br />\n| .------------- [h]our: ora (0 - 23)<br />\n| | .---------- [d]ay [o]f [m]onth: giorno del mese (1 - 31)<br />\n| | | .------- [mon]th: mese (1 - 12) OPPURE jan,feb,mar,apr...<br />\n| | | | .---- [d]ay [o]f [w]eek: giorno della settimana (0 - 6) (domenica=0 o 7) OPPURE sun,mon,tue,wed,thu,fri,sat<br />\n| | | | |</p>\n<p>* * * * * comando da eseguire<br />\nPS:Per «giorno della settimana» (5º campo), sia 0 che 7 sono considerati il valore domenica.<br />\nOk, dopo avervi raccontato tutta la favoletta \"teorica\" andiamo a vedere nella sostanza come si fa!<br />\nAbbiamo principalmente due comandi, anche se ne esistono di altri:</p>\n<p> crontab -e</p>\n<p> Modifica il file crontab o o crea se non esiste</p>\n<p> crontab -l</p>\n<p> Mostra il file crontab</p>\n<p>A questo file che si aprirà, in base all\'editor da noi scelto (nano, VI, VIM...) dobbiamo aggiungere una nuova riga con la sintassi precedentemente vista.<br />\nAd esempio questo fa un backup degli utenti alle 5:00 di ogni settimana:<br />\n0 5 * * 1 tar -zcf /var/backups/home.tgz /home/<br />\nAd esempio ecco il cronjob che corre sulla mia $HOME per tenere sempre in esecuzione le API universitarie.<br />\n0 * * * * $HOME/opt/nginx-1.2.1/sbin/nginx</p>\n<p>Siccome la ruota è già stata inventata e per non impazzire ulteriormente vi consiglio di usare un generatore, se ne trovano molti in giro, io vi coniglio <a href=\"http://www.openjs.com/scripts/jslibrary/demos/crontab.php\" target=\"_blank\">Crontab Code Generator</a> che oltre ad una semplice interfaccia grafica con cui possiamo anche selezionare più elementi contemporaneamente ad esempio per gli orari ci fornisce una spiegazione dettagliata approposito di crontab, che fa sempre comodo se ricerchiamo situazioni più complesse che non posso coprire nell\'articolo.<br />\nÈ tutto! Create e sperimentate i vostri cronjob!</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434746074,1),('field:node:188','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:7734:\"<h1 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\">Bones | and | Dogs</span></h1>\r\n<h2 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\"><span style=\"color: rgb(47, 79, 79);\">Le Collisioni e la Board per le Stat di Gioco</span></span></h2>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Con questo articolo andremo ad illustrare in che modo tutti gli oggetti che siamo riusciti a far apparire fin'ora sulla nostra Finestra, si accorgono di essere toccati o meno; Mi spiego meglio:</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">abbiamo precedentemente visto che, l'unico elemento che comandiamo da tastiera con i tasti direzionali, è il Cane (costruito nella classe <strong>Dog</strong>). Questo fà in modo che il Listener della Tastiera fà muovere lungo le coordinate X,Y (in base al tasto premuto) l'immagine stampata sulla BoardGame (costruito appunto tutto nella classe <strong>BoardGame</strong>). Infine abbiamo costruito senza movimenti, ma con precedimenti simili, alcuni ostacoli lungo il percorso che dovrà affontare i cane comandato da noi, ovvero Rocce ed Alberi (costriuti sulla board rispettivamente dalle classi <strong>Stone</strong> e <strong>Tree</strong>). Fatto questo breve riepilogo la domada è: Come facciamo a fermare il cane quando incontra un ostacolo?</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">La questione è semplice, se solo ragioniamo a come abbiamo fatto per limitare la sua camminata suo bordi della finestra: Se le sue coordinate superano quelle delle dimensioni della inestra, mantieni le sue coordinate stabili, senza nessun incremento.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Andiamo ad implementare la stessa cosa con gli ostacoli, dato che per ogni oggetto costruito conosciamo la "<em>x" </em>e la "<em>y"</em>.</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i50.tinypic.com/vr4hdw.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Come mostrato nella figura possiamo fare in modo che, se le coordinate del cane in quel momento sono uguali a quelle della roccia (ad esempio), esso esegue due passi indietro, oppure le coordinate rimandono quelle, sono scelte. La cosa important da fare e che esse non devono essere attraversate. Questa potrebbe essere una soluzione, ma ovviamente non è l'unico metodo. Per le immagini questo metodo è poco consigliato perchè, soprattutto con immagini grosse (nostro caso che mediamente ha immagini 50x50 px) non conviene perchè le coordinate vengono settate a livello di pixel e non a livello di immagine. Quindi si fermerebbe solo se precisamente incontriamo il pixel esatto di entrambe le immagini. Allora ho trovato un metodo molto più efficiente, m prima di descriverlo, commentiamo ul codice che permette di fermare il cane. Implementiamo un nuovo metodo nella classe Dog, chiamato appunto <strong>stop():</strong></span></p>\r\n<pre>\r\n<span style=\"font-family:tahoma,geneva,sans-serif;\">public void stop()\r\n{\r\n if (LEFT) \r\n {\r\n x++;\r\n ...\r\n }\r\n\r\n if (RIGHT) \r\n {\r\n x--;\r\n ...\r\n }\r\n\r\n if (UP) \r\n {\r\n y++;\r\n ...\r\n }\r\n\r\n if (DOWN) \r\n {\r\n y--;\r\n ...\r\n } \r\n \r\n }\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">valutando il metodo, questo ci fà capire che, in base a come stiamo camminando, dobbiamo fermare il cane su diverse coordinate. Esempio, se stiamo andando a SINISTRA, logicamente sarebbe da sciocchi continuare a decrementare la x (dato che per muoverlo a sinistra decrementiamo la x), e quindi settiamo la coordinata inversamente, facendolo arrestrare di un px. Stesso ragionamento và con le altre direzioni. Quindi andiamo a valutare la fermata sempre in base a Cosa si stà premendo (ecco spiegato il motivo per cui ho <strong>SCELTO</strong> di effettuare solo movimenti su, giu, destra, sinistra, senza movimenti in diagonale, altrimenti avremmo dovuto fare molti più controlli, ovviamente complessi).</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Come fermarli con gli oggetti? Semplice: altra soluzione è quella di tracciare per ogni immagine, un rettangolo (dato che le immagini, anche le nostre *.png a sfondo trasparente, sono rettangolari). Se le IMMAGINI intere si Intersecano, avvia il metodo <strong>stop()</strong> del cane.</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i50.tinypic.com/b3oiuw.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Con alcune funzioni matematiche presenti in <strong>awt</strong>, riusciamo a implementare ciò. Le collisioni le mettiamo in funzione gestendole tutte in una nuova classe (che le conterrà tutte, e in base all'oggetto che collide vi sarò un dato evento) <strong>CheckCollision().</strong></span></p>\r\n<p> </p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Infine, per non divulgarci troppo, andremo a descrivere come si rappresenta l'altro pannello legato alla Window Game, per le statistiche di gioco. Come spiegato nel primo articolo, esso doveva essere composto da un'animazione di un Uomo che simulava il lancio di oggetti, e una Label per le statistiche di gioco (Punteggi). Ecco uno screen:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i48.tinypic.com/257j4o6.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">L'omino è una GIF animata, che, in base al tempo di lancio (che descriveremo nei successivi articoli) varierà di velocità. Il punteggio viene stampato a suo fianco, in base a quanti ossi il cane riesce a raccogliere. Inizialmente era stato creato come <strong>nuovo Pannello</strong>, ma mi sono accorto che, inserendolo anche con dei Layout appositi (Grid, e Border), si sfalzavano tutte le immagini perchè vi era in contrasto con la soluzione del pannello trasparente (articolo uno se vi ricordate, per far apparire gli oggetti sullo sfondo). Ho preferito quindi stamparli direttamente usando il metodo Paint, assieme agli alti oggetti, ovviamente variando le coordinate di stampa.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">In questo artiolo ci siamo divulgati molto, ma era necessario per comprendere l'articolo successivo, il quale vi illustrerò come gestiamo il lancio degli oggetti, collegato il TEMPO DI LANCIO senza fermare l'esecuzione del resto del gioco.</span></p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\r\n<p class=\"rtecenter\"><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\">1</a> - <a href=\"http://students.uniparthenope.it/?q=node/163\"> 2 </a> - <a href=\"http://students.uniparthenope.it/?q=node/176\"> 3 </a> - <strong><a href=\"http://students.uniparthenope.it/?q=node/188\"><span style=\"color:#ff0000;\"> 4 </span></a></strong> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\r\n<p> </p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:7465:\"<h1 class=\"rtecenter\">\n <span style=\"font-family:tahoma,geneva,sans-serif;\">Bones | and | Dogs</span></h1>\n<h2 class=\"rtecenter\">\n <span style=\"font-family:tahoma,geneva,sans-serif;\"><span style=\"color: rgb(47, 79, 79);\">Le Collisioni e la Board per le Stat di Gioco</span></span></h2>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Con questo articolo andremo ad illustrare in che modo tutti gli oggetti che siamo riusciti a far apparire fin\'ora sulla nostra Finestra, si accorgono di essere toccati o meno; Mi spiego meglio:</span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">abbiamo precedentemente visto che, l\'unico elemento che comandiamo da tastiera con i tasti direzionali, è il Cane (costruito nella classe <strong>Dog</strong>). Questo fà in modo che il Listener della Tastiera fà muovere lungo le coordinate X,Y (in base al tasto premuto) l\'immagine stampata sulla BoardGame (costruito appunto tutto nella classe <strong>BoardGame</strong>). Infine abbiamo costruito senza movimenti, ma con precedimenti simili, alcuni ostacoli lungo il percorso che dovrà affontare i cane comandato da noi, ovvero Rocce ed Alberi (costriuti sulla board rispettivamente dalle classi <strong>Stone</strong> e <strong>Tree</strong>). Fatto questo breve riepilogo la domada è: Come facciamo a fermare il cane quando incontra un ostacolo?</span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">La questione è semplice, se solo ragioniamo a come abbiamo fatto per limitare la sua camminata suo bordi della finestra: Se le sue coordinate superano quelle delle dimensioni della inestra, mantieni le sue coordinate stabili, senza nessun incremento.</span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Andiamo ad implementare la stessa cosa con gli ostacoli, dato che per ogni oggetto costruito conosciamo la \"<em>x\" </em>e la \"<em>y\"</em>.</span></p>\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i50.tinypic.com/vr4hdw.png\" /></span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Come mostrato nella figura possiamo fare in modo che, se le coordinate del cane in quel momento sono uguali a quelle della roccia (ad esempio), esso esegue due passi indietro, oppure le coordinate rimandono quelle, sono scelte. La cosa important da fare e che esse non devono essere attraversate. Questa potrebbe essere una soluzione, ma ovviamente non è l\'unico metodo. Per le immagini questo metodo è poco consigliato perchè, soprattutto con immagini grosse (nostro caso che mediamente ha immagini 50x50 px) non conviene perchè le coordinate vengono settate a livello di pixel e non a livello di immagine. Quindi si fermerebbe solo se precisamente incontriamo il pixel esatto di entrambe le immagini. Allora ho trovato un metodo molto più efficiente, m prima di descriverlo, commentiamo ul codice che permette di fermare il cane. Implementiamo un nuovo metodo nella classe Dog, chiamato appunto <strong>stop():</strong></span></p>\n<pre>\n<span style=\"font-family:tahoma,geneva,sans-serif;\">public void stop()\n{\n if (LEFT) \n {\n x++;\n ...\n }\n\n if (RIGHT) \n {\n x--;\n ...\n }\n\n if (UP) \n {\n y++;\n ...\n }\n\n if (DOWN) \n {\n y--;\n ...\n } \n \n }\n</span></pre><p><span style=\"font-family:tahoma,geneva,sans-serif;\">valutando il metodo, questo ci fà capire che, in base a come stiamo camminando, dobbiamo fermare il cane su diverse coordinate. Esempio, se stiamo andando a SINISTRA, logicamente sarebbe da sciocchi continuare a decrementare la x (dato che per muoverlo a sinistra decrementiamo la x), e quindi settiamo la coordinata inversamente, facendolo arrestrare di un px. Stesso ragionamento và con le altre direzioni. Quindi andiamo a valutare la fermata sempre in base a Cosa si stà premendo (ecco spiegato il motivo per cui ho <strong>SCELTO</strong> di effettuare solo movimenti su, giu, destra, sinistra, senza movimenti in diagonale, altrimenti avremmo dovuto fare molti più controlli, ovviamente complessi).</span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Come fermarli con gli oggetti? Semplice: altra soluzione è quella di tracciare per ogni immagine, un rettangolo (dato che le immagini, anche le nostre *.png a sfondo trasparente, sono rettangolari). Se le IMMAGINI intere si Intersecano, avvia il metodo <strong>stop()</strong> del cane.</span></p>\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i50.tinypic.com/b3oiuw.png\" /></span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Con alcune funzioni matematiche presenti in <strong>awt</strong>, riusciamo a implementare ciò. Le collisioni le mettiamo in funzione gestendole tutte in una nuova classe (che le conterrà tutte, e in base all\'oggetto che collide vi sarò un dato evento) <strong>CheckCollision().</strong></span></p>\n<p> </p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Infine, per non divulgarci troppo, andremo a descrivere come si rappresenta l\'altro pannello legato alla Window Game, per le statistiche di gioco. Come spiegato nel primo articolo, esso doveva essere composto da un\'animazione di un Uomo che simulava il lancio di oggetti, e una Label per le statistiche di gioco (Punteggi). Ecco uno screen:</span></p>\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i48.tinypic.com/257j4o6.png\" /></span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">L\'omino è una GIF animata, che, in base al tempo di lancio (che descriveremo nei successivi articoli) varierà di velocità. Il punteggio viene stampato a suo fianco, in base a quanti ossi il cane riesce a raccogliere. Inizialmente era stato creato come <strong>nuovo Pannello</strong>, ma mi sono accorto che, inserendolo anche con dei Layout appositi (Grid, e Border), si sfalzavano tutte le immagini perchè vi era in contrasto con la soluzione del pannello trasparente (articolo uno se vi ricordate, per far apparire gli oggetti sullo sfondo). Ho preferito quindi stamparli direttamente usando il metodo Paint, assieme agli alti oggetti, ovviamente variando le coordinate di stampa.</span></p>\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">In questo artiolo ci siamo divulgati molto, ma era necessario per comprendere l\'articolo successivo, il quale vi illustrerò come gestiamo il lancio degli oggetti, collegato il TEMPO DI LANCIO senza fermare l\'esecuzione del resto del gioco.</span></p>\n<p class=\"rtecenter\"> </p>\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\n<p class=\"rtecenter\"><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\">1</a> - <a href=\"http://students.uniparthenope.it/?q=node/163\"> 2 </a> - <a href=\"http://students.uniparthenope.it/?q=node/176\"> 3 </a> - <strong><a href=\"http://students.uniparthenope.it/?q=node/188\"><span style=\"color:#ff0000;\"> 4 </span></a></strong> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\n<p> </p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434791222,1),('field:node:189','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:4546:\"<p>Cari colleghi l'app. android (proggetto per l'esame di programmazione 3) per la visualizzazione degli orari è quasi pronta.<br />\r\n L'unico requisito per il corretto funzionamento è la connessione ad internet.</p>\r\n<p>Nel mio ultimo articolo (<a href=\"http://students.uniparthenope.it/?q=node/181\">http://students.uniparthenope.it/?q=node/181</a>) l'ho presentata come un'app. accessibile sia per le matricole, sia per l'utente ospite.<br />\r\n Con l'avanzamento del lavoro mi sono reso conto che la realizzazione e la gestione dell'utente ospite è da considerare, a tutti gli effetti, come un secondo progetto. Pertanto la pubblicazione, così come l'oggetto d'esame, verterà soltanto sul lato "matricola autenticata". <br />\r\n <br />\r\n Con il beneplacido (da verificare) del prof. Montella ho proposto, la parte inerente agli "ospiti", ad un collega che magari potrebbe consegnarla come progetto d'esame.<br />\r\n In attesa delle risposte, sia del prof. che di questo mio amico, se qualcuno è interessato all'idea, può tranquillamente contattarmi.</p>\r\n<p>Passiamo ora ad alcuni screenshot dell'app.</p>\r\n<p>Al primo accesso ci troveremo di fronte alla seguente schermata:</p>\r\n<p><a href=\"/sites/default/files/images/20122710182856.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710182856.jpg\" style=\"width: 408px; height: 300px; \" /></a></p>\r\n<p>Inseriamo matricola e password (quella utilizzata per accedere in "servizi.uniparthenope"), accediamo al menu principale :</p>\r\n<p> <a href=\"/sites/default/files/images/20122710183211.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710183211.jpg\" style=\"width: 202px; height: 300px; \" /></a></p>\r\n<p>Proviamo ora (precisando che in questo preciso istante è SABATO) a cliccare su "Orario Giornaliero" e su "Orario di Domani":</p>\r\n<p><a href=\"/sites/default/files/images/20122710183441.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710183441.jpg\" style=\"width: 407px; height: 300px; \" /></a></p>\r\n<p>Come era facile intuire, non sono previsti corsi :-)<br />\r\n Da non considerare il posizionamento dei layout, poichè il tutto gira su emulatore che tende a sfasare le posizioni degli oggetti.</p>\r\n<p>Ora cliccando il tasto di default "Indietro" del nostro smartphone ritorniamo al menu principale e clicchiamo su "Orario Settimanale" :</p>\r\n<p><a href=\"/sites/default/files/images/20122710183808.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710183808.jpg\" style=\"width: 236px; height: 350px; \" /></a></p>\r\n<p>Possiamo ora navigare tra i vari orari disponibili a seconda del giorno o dell'anno che clicchiamo nel layout in alto.</p>\r\n<p>L' app è dotata anche di un menu con i relativi pulsanti "Login" e "Logout". Se clicchiamo il secondo saremo trasferiti alla "pagina di benvenuto", mentre tastando "Login", se già siamo loggati, ci ritroveremo :</p>\r\n<p><a href=\"/sites/default/files/images/20122710184348.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710184348.jpg\" style=\"width: 204px; height: 300px; \" /></a></p>\r\n<p>Cliccando sul pulsante "Logout" saremo trasferiti al form iniziale di input di matricola e password.</p>\r\n<p>Ovviamente una volta effettuato il primo accesso, questo viene salvato nel database dell'applicazione, in modo tale che non ci si debba loggare ad ogni start dell'app.</p>\r\n<p>Come potrete notare, manca la gestione del "Orario Personale", che riguarderebbe la visualizzazione SOLO dei corsi degli insegnamenti che uno studente NON ha sostenuto.<br />\r\n Ad esempio: se la matricola X ha sostenuto l'esame di Matematica 1, allora l'orario previsto per Matematica 1 non dovrà essere visualizzato.</p>\r\n<p>Sono indeciso se realizzarlo o meno, data la scarsa utilità (a parer mio) dell'oggetto in questione.<br />\r\n Si accettano consigli!</p>\r\n<p>Saluti a tutti!</p>\r\n<p>PS: La visualizzazione online degli insegnamenti del corso di Informatica è disponibile al link <a href=\"http://students.uniparthenope.it/~0124000028/drupal-7.15/?q=node/1\">http://students.uniparthenope.it/~0124000028/drupal-7.15/?q=node/1</a></p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:4200:\"<p>Cari colleghi l\'app. android (proggetto per l\'esame di programmazione 3) per la visualizzazione degli orari è quasi pronta.<br />\n L\'unico requisito per il corretto funzionamento è la connessione ad internet.</p>\n<p>Nel mio ultimo articolo (<a href=\"http://students.uniparthenope.it/?q=node/181\">http://students.uniparthenope.it/?q=node/181</a>) l\'ho presentata come un\'app. accessibile sia per le matricole, sia per l\'utente ospite.<br />\n Con l\'avanzamento del lavoro mi sono reso conto che la realizzazione e la gestione dell\'utente ospite è da considerare, a tutti gli effetti, come un secondo progetto. Pertanto la pubblicazione, così come l\'oggetto d\'esame, verterà soltanto sul lato \"matricola autenticata\". </p>\n<p> Con il beneplacido (da verificare) del prof. Montella ho proposto, la parte inerente agli \"ospiti\", ad un collega che magari potrebbe consegnarla come progetto d\'esame.<br />\n In attesa delle risposte, sia del prof. che di questo mio amico, se qualcuno è interessato all\'idea, può tranquillamente contattarmi.</p>\n<p>Passiamo ora ad alcuni screenshot dell\'app.</p>\n<p>Al primo accesso ci troveremo di fronte alla seguente schermata:</p>\n<p><a href=\"/sites/default/files/images/20122710182856.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710182856.jpg\" style=\"width: 408px; height: 300px; \" /></a></p>\n<p>Inseriamo matricola e password (quella utilizzata per accedere in \"servizi.uniparthenope\"), accediamo al menu principale :</p>\n<p> <a href=\"/sites/default/files/images/20122710183211.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710183211.jpg\" style=\"width: 202px; height: 300px; \" /></a></p>\n<p>Proviamo ora (precisando che in questo preciso istante è SABATO) a cliccare su \"Orario Giornaliero\" e su \"Orario di Domani\":</p>\n<p><a href=\"/sites/default/files/images/20122710183441.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710183441.jpg\" style=\"width: 407px; height: 300px; \" /></a></p>\n<p>Come era facile intuire, non sono previsti corsi :-)<br />\n Da non considerare il posizionamento dei layout, poichè il tutto gira su emulatore che tende a sfasare le posizioni degli oggetti.</p>\n<p>Ora cliccando il tasto di default \"Indietro\" del nostro smartphone ritorniamo al menu principale e clicchiamo su \"Orario Settimanale\" :</p>\n<p><a href=\"/sites/default/files/images/20122710183808.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710183808.jpg\" style=\"width: 236px; height: 350px; \" /></a></p>\n<p>Possiamo ora navigare tra i vari orari disponibili a seconda del giorno o dell\'anno che clicchiamo nel layout in alto.</p>\n<p>L\' app è dotata anche di un menu con i relativi pulsanti \"Login\" e \"Logout\". Se clicchiamo il secondo saremo trasferiti alla \"pagina di benvenuto\", mentre tastando \"Login\", se già siamo loggati, ci ritroveremo :</p>\n<p><a href=\"/sites/default/files/images/20122710184348.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710184348.jpg\" style=\"width: 204px; height: 300px; \" /></a></p>\n<p>Cliccando sul pulsante \"Logout\" saremo trasferiti al form iniziale di input di matricola e password.</p>\n<p>Ovviamente una volta effettuato il primo accesso, questo viene salvato nel database dell\'applicazione, in modo tale che non ci si debba loggare ad ogni start dell\'app.</p>\n<p>Come potrete notare, manca la gestione del \"Orario Personale\", che riguarderebbe la visualizzazione SOLO dei corsi degli insegnamenti che uno studente NON ha sostenuto.<br />\n Ad esempio: se la matricola X ha sostenuto l\'esame di Matematica 1, allora l\'orario previsto per Matematica 1 non dovrà essere visualizzato.</p>\n<p>Sono indeciso se realizzarlo o meno, data la scarsa utilità (a parer mio) dell\'oggetto in questione.<br />\n Si accettano consigli!</p>\n<p>Saluti a tutti!</p>\n<p>PS: La visualizzazione online degli insegnamenti del corso di Informatica è disponibile al link <a href=\"http://students.uniparthenope.it/~0124000028/drupal-7.15/?q=node/1\">http://students.uniparthenope.it/~0124000028/drupal-7.15/?q=node/1</a></p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434745628,1),('field:node:190','a:2:{s:15:\"taxonomy_forums\";a:1:{s:3:\"und\";a:1:{i:0;a:1:{s:3:\"tid\";s:1:\"9\";}}}s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:791:\"<p> </p>\r\n<div>\r\n IMPORTANTE: Censimento API REST</div>\r\n<div>\r\n ------------------------------</div>\r\n<div>\r\n Tutti gli studenti (o ex tali :-)) che hanno sviluppato API REST attualmente in funzione su http://students.uniparthenope.it :PORTA, sono pregati di fare un post sul forum http://students.uniparthenope.it/node/190 in cui indicare:</div>\r\n<div>\r\n - Nome dell'API</div>\r\n<div>\r\n - Descrizione sintetica</div>\r\n<div>\r\n - URL</div>\r\n<div>\r\n - Elenco dei metodi esposti con sintassi e breve descrizione ed esempio da linea di comando usando curl</div>\r\n<div>\r\n - Eventuali note</div>\r\n<div>\r\n </div>\r\n<div>\r\n Le migliori API REST saranno selezionate per diventare API ufficiali uniparthenope e gli autori tester/developer del nuovo uniApiStore e uniApiSDK.</div>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:807:\"<p> </p>\n<p> IMPORTANTE: Censimento API REST</p>\n<p> ------------------------------</p>\n<p> Tutti gli studenti (o ex tali :-)) che hanno sviluppato API REST attualmente in funzione su <a href=\"http://students.uniparthenope.it\">http://students.uniparthenope.it</a> :PORTA, sono pregati di fare un post sul forum <a href=\"http://students.uniparthenope.it/node/190\">http://students.uniparthenope.it/node/190</a> in cui indicare:</p>\n<p> - Nome dell\'API</p>\n<p> - Descrizione sintetica</p>\n<p> - URL</p>\n<p> - Elenco dei metodi esposti con sintassi e breve descrizione ed esempio da linea di comando usando curl</p>\n<p> - Eventuali note</p>\n<p> </p>\n<p> Le migliori API REST saranno selezionate per diventare API ufficiali uniparthenope e gli autori tester/developer del nuovo uniApiStore e uniApiSDK.</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434732680,1),('field:node:191','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:2179:\"<p>Salve colleghi, ho da poco ultimato la GUI per l'algoritmo di cifratura di Vigenère e ora ho intenzione di darvi un po' più di dettagli. Innanzitutto il sistema operativo utilizzato è ovviamente Linux e l'IDE da me scelto è Eclipse e per ora il progetto si compone di sole quattro classi anche se con molta probabilità non saranno quelle definitive. Le classi da me create sono: Start la quale contiene il metodo main, la classe JCrypto che rappresenta la GUI dell'intero programma compreso la gestione degli eventi ed è quindi la classe più estesa, poi sono presenti le classi Cesar e Vigenère che implementano i relativi algoritmi.</p>\r\n<p>La GUI dell'algoritmo di Cesare è composta da due JTextArea (una per il testo in chiaro e l'altra per il testo cifrato), poi sono presenti due JButton che permettono di cifrare e decifrare il testo inserito. Poi ci sono due JTextField in cui sono visualizzati l'alfabeto di partenza e l'alfabeto cifrante (cioè quello in cui ogni lettera è sostituita da quella 3 posizioni più avanti nell'alfabeto di partenza). La GUI dell'algoritmo di Vigenère è del tutto simile, la differenza consiste nel fatto che le due JTextArea sono più piccole per far spazio alla tavola di Vigenère che l'algoritmo utilizza per cifrare e decifrare. </p>\r\n<p>Al momento sto lavorando all'inserimento di alcuni menù per consentire di settare a proprio piacimento le chiavi dei due algoritmi. Non so se riuscirò a breve a inserire un ulteriore algoritmo di cifratura ( anche perché l'esame si avvicina XD) ma sicuramente provvederò a farlo in seguito. Intanto quando avrò finito i vari menù mi piacerebbe implementare un'altra funzionalità, cioè quella di poter cifrare e decifrare anche dei file txt salvati nel filesystem.</p>\r\n<p>A breve cercherò di pubblicare delle immagini relative al programma, se non l'ho ancora fatto e perchè vorrei pubblicare una versione definitiva.</p>\r\n<p>A presto.</p>\r\n<p>PF</p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:1948:\"<p>Salve colleghi, ho da poco ultimato la GUI per l\'algoritmo di cifratura di Vigenère e ora ho intenzione di darvi un po\' più di dettagli. Innanzitutto il sistema operativo utilizzato è ovviamente Linux e l\'IDE da me scelto è Eclipse e per ora il progetto si compone di sole quattro classi anche se con molta probabilità non saranno quelle definitive. Le classi da me create sono: Start la quale contiene il metodo main, la classe JCrypto che rappresenta la GUI dell\'intero programma compreso la gestione degli eventi ed è quindi la classe più estesa, poi sono presenti le classi Cesar e Vigenère che implementano i relativi algoritmi.<br />\nLa GUI dell\'algoritmo di Cesare è composta da due JTextArea (una per il testo in chiaro e l\'altra per il testo cifrato), poi sono presenti due JButton che permettono di cifrare e decifrare il testo inserito. Poi ci sono due JTextField in cui sono visualizzati l\'alfabeto di partenza e l\'alfabeto cifrante (cioè quello in cui ogni lettera è sostituita da quella 3 posizioni più avanti nell\'alfabeto di partenza). La GUI dell\'algoritmo di Vigenère è del tutto simile, la differenza consiste nel fatto che le due JTextArea sono più piccole per far spazio alla tavola di Vigenère che l\'algoritmo utilizza per cifrare e decifrare. <br />\nAl momento sto lavorando all\'inserimento di alcuni menù per consentire di settare a proprio piacimento le chiavi dei due algoritmi. Non so se riuscirò a breve a inserire un ulteriore algoritmo di cifratura ( anche perché l\'esame si avvicina XD) ma sicuramente provvederò a farlo in seguito. Intanto quando avrò finito i vari menù mi piacerebbe implementare un\'altra funzionalità, cioè quella di poter cifrare e decifrare anche dei file txt salvati nel filesystem.<br />\nA breve cercherò di pubblicare delle immagini relative al programma, se non l\'ho ancora fatto e perchè vorrei pubblicare una versione definitiva.<br />\nA presto.<br />\nPF</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434731765,1),('field:node:192','a:2:{s:15:\"taxonomy_forums\";a:1:{s:3:\"und\";a:1:{i:0;a:1:{s:3:\"tid\";s:1:\"9\";}}}s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:820:\"<p>Sarebbe utile realizzare una API REST che implementa un keystore relativo agli utenti uniparthenope.</p>\r\n<p>L'API potrebbe essere usata per memorizzare credenziali oppure impostazioni legate al profilo utente e comuni a differenti ambienti.</p>\r\n<p>Ad esempio, le impostazioni di una app mobile possono essere condivise da una webapp.</p>\r\n<p>Oppure se si dispone sia di un dispositivo iOS sia di uno Android l'utente ritrova le stesse impostazioni in ambo le applicazioni.</p>\r\n<p>Altro scenario: differenti applicazioni universitare non utilizzano lo stesso username/password. Questi possono essere memorizzati codificate nel keystore.</p>\r\n<p>Ovviamente questa API deve essere gestita unicamente via https e tutto il contenuto dei campi deve essere codificato con un sistema adeguato.</p>\r\n<p> </p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:795:\"<p>Sarebbe utile realizzare una API REST che implementa un keystore relativo agli utenti uniparthenope.<br />\nL\'API potrebbe essere usata per memorizzare credenziali oppure impostazioni legate al profilo utente e comuni a differenti ambienti.<br />\nAd esempio, le impostazioni di una app mobile possono essere condivise da una webapp.<br />\nOppure se si dispone sia di un dispositivo iOS sia di uno Android l\'utente ritrova le stesse impostazioni in ambo le applicazioni.<br />\nAltro scenario: differenti applicazioni universitare non utilizzano lo stesso username/password. Questi possono essere memorizzati codificate nel keystore.<br />\nOvviamente questa API deve essere gestita unicamente via https e tutto il contenuto dei campi deve essere codificato con un sistema adeguato.<br />\n </p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434732680,1),('field:node:193','a:2:{s:15:\"taxonomy_forums\";a:1:{s:3:\"und\";a:1:{i:0;a:1:{s:3:\"tid\";s:1:\"8\";}}}s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:1857:\"<p><img alt=\"servizi parthenope by Fabio Nisci Logo\" src=\"http://students.uniparthenope.it/~0124000074/iosapp/img/renders/Icon-72%402x.png\" /> Servizi Parthenope offre la possibilità di accedere ai servizi riservati agli studenti dell’Università e non solo.</p>\r\n<ul>\r\n <li>\r\n ALCUNE DELLE FUNZIONI....</li>\r\n <br />\r\n <li>\r\n News dell’Università di Ateneo, delle Facoltà e dei dipartimenti</li>\r\n <li>\r\n Rubrica del personale Universitario</li>\r\n <li>\r\n Consultare i libri presenti nella Biblioteca</li>\r\n <br />\r\n <li>\r\n GLI STUDENTI DELLA UNIVERSITÀ PARTHENOPE POSSONO INOLTRE:</li>\r\n <br />\r\n <li>\r\n Accedere all'area riservata con le proprie credenziali</li>\r\n <li>\r\n Visualizzare il proprio piano di studi</li>\r\n <li>\r\n Monitorare la propria situazione finanziaria di Tasse e versamenti.</li>\r\n <li>\r\n Prenotare gli esami disponibili</li>\r\n <li>\r\n Cancellare le prenotazioni esami effettuate.</li>\r\n <li>\r\n Visualizzare Medie e Statistiche sul proprio andamento universitario.</li>\r\n</ul>\r\n<p>Attualmente <strong>Servizi Parthenope </strong>non è ancora disponibile su AppStore...ma arriverà a breve.</p>\r\n<p>Nel frattempo vi lascio con la landing page dove potrete trovare screenshot e funzioni principali: <a href=\"http://students.uniparthenope.it/~0124000074/iosapp/\" target=\"_blank\">http://students.uniparthenope.it/~0124000074/iosapp/ </a></p>\r\n<p>Applicazione sviluppata da <a href=\"mailto:fabio.nisci@studenti.uniparthenope.it\">Fabio Nisci</a> & <a href=\"http://www.fabiosoft.com\" target=\"_blank\">fabiosoft.com</a></p>\r\n<p>Disponibile su <a href=\"https://itunes.apple.com/it/app/servizi-parthenope-uniparthenope/id571062892?mt=8\">AppStore</a>!</p>\r\n<p>Usate questa discussione per segnalare eventuali malfunzionamenti, suggerimenti e idee a riguardo....</p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:1585:\"<p>Servizi Parthenope offre la possibilità di accedere ai servizi riservati agli studenti dell’Università e non solo.</p>\n<ul><li>\n ALCUNE DELLE FUNZIONI....</li>\n<li>\n News dell’Università di Ateneo, delle Facoltà e dei dipartimenti</li>\n<li>\n Rubrica del personale Universitario</li>\n<li>\n Consultare i libri presenti nella Biblioteca</li>\n<li>\n GLI STUDENTI DELLA UNIVERSITÀ PARTHENOPE POSSONO INOLTRE:</li>\n<li>\n Accedere all\'area riservata con le proprie credenziali</li>\n<li>\n Visualizzare il proprio piano di studi</li>\n<li>\n Monitorare la propria situazione finanziaria di Tasse e versamenti.</li>\n<li>\n Prenotare gli esami disponibili</li>\n<li>\n Cancellare le prenotazioni esami effettuate.</li>\n<li>\n Visualizzare Medie e Statistiche sul proprio andamento universitario.</li>\n</ul><p>Attualmente <strong>Servizi Parthenope </strong>non è ancora disponibile su AppStore...ma arriverà a breve.<br />\nNel frattempo vi lascio con la landing page dove potrete trovare screenshot e funzioni principali: <a href=\"http://students.uniparthenope.it/~0124000074/iosapp/\" target=\"_blank\">http://students.uniparthenope.it/~0124000074/iosapp/ </a><br />\nApplicazione sviluppata da <a href=\"mailto:fabio.nisci@studenti.uniparthenope.it\">Fabio Nisci</a> & <a href=\"http://www.fabiosoft.com\" target=\"_blank\">fabiosoft.com</a><br />\nDisponibile su <a href=\"https://itunes.apple.com/it/app/servizi-parthenope-uniparthenope/id571062892?mt=8\">AppStore</a>!<br />\nUsate questa discussione per segnalare eventuali malfunzionamenti, suggerimenti e idee a riguardo....</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434747657,1),('field:node:194','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:57506:\"<p>Salve ragazzi!</p>\r\n<p>Siamo Valeria e Daniela,oggi abbiamo cominciato per la prima volta a lavorare per il nostro progetto di tirocinio.</p>\r\n<p>Intendiamo postare step by step le fasi del nostro lavoro.</p>\r\n<p>Cominciamo con l’installazione di TomCat 7.0.32 che ci servirà in seguito.</p>\r\n<p>Speriamo possa essere utile a qualcuno questo post!</p>\r\n<p>Ecco la lista dei comandi che permetteranno di aver installato sul proprio account il seguente programma.</p>\r\n<p> </p>\r\n<p>Cominciamo:</p>\r\n<p><strong>cat README</strong></p>\r\n<p><em>“attiviamo java nel nostro ambiente di lavoro”</em></p>\r\n<p><strong>source/opt/java/sourceme</strong></p>\r\n<p><em>“successivamente creamo due cartelle”</em></p>\r\n<p><strong>mkdir dist</strong></p>\r\n<p><strong>mkdir opt</strong></p>\r\n<p><em>“Ci spostiamo nella cartella dist per installare il programma”</em></p>\r\n<p><strong>cd dist/</strong></p>\r\n<p><em>“Scarichiamo l’eseguibile dal sito di tomcat”</em></p>\r\n<p><strong>wget http://mirror.nohup.it/apache/tomcat/tomcat-7/v7.0.32/bin/apache-tomcat-7.0.32.tar.gz</strong></p>\r\n<p><em>“Procediamo all’estrazione e all’installazione del pacchetto”</em></p>\r\n<p><strong>tar -xvzf apache-tom-7.0.32.tar.gz</strong></p>\r\n<p><strong>mv apache-tomcat-7.0.32 ../opt/</strong></p>\r\n<p><strong>cd..</strong></p>\r\n<p><strong>cd opt/</strong></p>\r\n<p><strong>cd apache-tomcat-7.0.32/</strong></p>\r\n<p><strong>cd bin/</strong></p>\r\n<p><strong>./startup.sh</strong></p>\r\n<p><strong>./shutdown.sh</strong></p>\r\n<p><strong>Exit</strong></p>\r\n<p> </p>\r\n<p>L'installazione è completata!</p>\r\n<p><img alt=\"\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAocAAAB/CAIAAAASKP/oAAAgAElEQVR4nOydd1hU19b/1/RKhxnqMEPvzNCGjkjv0nufBgwwQ++996qAqCBqjOnFaOpNcpPYGynGWLAg9piYdp/3d+97f38MTQJiYrzmvTmfP3weD2f22fucmf09a+2114J/IyAgICAgIPw5gGfdAQQEBAQEBIR55lWZx+ffvHXr2rVrly9fnpmZuf/tt6dPn3Zzc4M/DGZATtee9w688eobb06WGzGVZEcxBFJ618RLrx84+Mbe3spNv7lVLJGd0f3C6wdf2dEd76FmmNz21sF33theH22hp+9RsO29A6+/LOP1/W9vzubqEwC8pU27Xz/4+iuvvPbGK/t2lvlSCPNNEWlm6Z1vvbH/4Ht7u3ODWLKDJIvwoqHX3t7/6suvvP7mwR6+NZ0AAE7ZQztfeuuNV19++dU33npparPABb3UJYppUNPAaK635hPdLgQEBASE/xtgsdivvvrq/v37c3Nz9+7du7+M7777TvbvIg8ePPjxxx/7+/s/++yze/fuzczMXL58+cqVK99///1DqpyZmXnjxo2ZmcsXL168cOHC3Tt3Tp48+YeqMgqDxROIBAKBQMDj0CjU0njweML8YczvaBeNxRMIBAIej8Wg0FgcgUAk4HEYNAqFweFll5sHj0WjAACDwy07uPySqPmmiAQ8FrPQPzQGh1/ZxMI1lx0GAEDjSWo6hoaO4byq1uooQ3n8771VCAgICAj/d3gqqpyekTE7e/3cN+fPnv367NmzN2/eOH78uIuLy7Me7P8lyOrGidXbt20dHd8x1V0cba/xrDuEgICAgPD0eSqqnJKSevnK1S++/Gp6enp6enp29trRI0ecHB2f9WAREBAQEBD+1DyJKl++fHl1VU5MTLp0aebU6TPHT5w8ceLE5cszhw4dcuRyn/VgERAQEBAQ/tQ8FVWOT0i4cOHSsWMnDh85evTo0UsXL3726adcRJUREBAQEBAeiUyVv//++zt37vzwww8/L+OXX36R/StDdvCnn35arspXrly5evXqSlWOi4//5vyFw0ePHTp0+PDhwxcunP/kk08cHBye9WAREBAQEBD+1MhU+ebNm8eOHfv0008PLePIkSOHDx8+ssCJEydmZmYePHgwMDDw2Wefffvtt49U5QsXjhw7dujwX1aV0WRTr9RMvjA13NZU9Rn3haxhYW2lTXrGvUBAQEBAWBcsFvvFF1+cOHHivffee3cZ77zzzsGDBw8cOHDgwMEDBw7s37//zTffPHjw7atXrw4PD8tU+cqVK6urcnxCwoWLF4+dOHFE5sG+dPHTTz9dUmUFPY8oUYFUkhftTJdb2kykwY3KzMgMtdfELtuvCxiyoVeKRCItSA+z0yUvHiazuBEZBZL8vOxQjhxhaWeUIjtEkJMvzUrfZEdfaoSgwg7MlEql0mQ/E/rSHiMFU6/EzJyEDQbUh/cdcaP54nxpTtomB+2Ht1eh1awCUgokkvyCpI16NAIAyBm5R6Rk5+bm5uWIMgPNCVgAAMDJmwXlDGzbWlVU195RW8E3Uv5tTwUnr+4eJ04M5Oo+sZRilZm+RRP7978+3iqJ2mBEe6IG1ax9Yni8QG1VypN2CwEBAQFhNXA43JkzZ956663bt2//+9///te//vXPf/7zf/7f//vll398++13d+9+e/vO3Rs3bl28OHPumwuvvvLqmekzW7ZsWUeVk5KSL83MnFyI9rpyeebQoc8cHbkAABTmBkF5TWtjbq64vbubH2qpigcAoNuFtfQNV27eO5LjILeokVgFhk9qXV9PTk5udUNTZW60kQIAAIFhJyhvra2pEOdkt3e2x3sy5bEAgMEaexV192Vn50gKCjuaSh20AQAATzOPyK7r6cjNzW1oaytK99WlAgBQzXwqmrurxl7ZXhaopzyv62iivGu8ZKC/SpQtqawaGWxN4CxuSVI08JW09rU0VItzsnPjPFhqBABgxnRu6assz8/KEvJS/UxlqkzUcBH2jtUGqgAA3iw8t0ro9NtkDCdPDy5sm9xa5aPwO5/rPGRN57jc9ubajJSkss3793YLXJ5ohxWW5Zw99lyHo4POk3XrISy87P/I5hAQEBD+LyNT5VdeeeXevXv/+Mc/fvzxx++/f3D//ne3bt25dOny+fMXz547f2b6y48/OXTi5Jm9e/eeOHF8ZGTk0KFDMlW+evXqtWvXfrUzKjX1ytWrX3711fT059PT07PXrh05csTJyREAVOwjCquKvJkEAMBbpNcVJsgsYGWzDQGOxlSfvPoUW4XFBFkappHlnTkeNAAAJW56fkmqmxoAKPsUtJcnW5MBABRDWoZLgg0VAQBvI+qoT7QBAACqY1JDbTwLAKgGTulVTcm2CgAA2v75BbmhNooAQNbj+ruYUzfwyzK8DFXmzXM0nmLuHurExAIAqPvkdPbmOgEAAEadGyOWNAhtVJfscgAAZkS9JIjy8DGCukFsaXOCPoGg7pHZtmVzd22yLVHFzC6trLlRHMVhygMAwyVaVFBTlRumqkQCinVsbkl1bW19dSk/UtZ/UDM2EDU2ZfiFSerqGxorMvwtVZauoOEQmpZXkeKuroB79NM19OWVlMYbAgCAqgnbyoROfuQH0ESHuNKa2vq6EiGPH+ji62FEAgAlM++0isa6uvrKeG5gbnGSEZf5iDawcsqb8mtrq2sbmgoSPIzwAFr2ntmVJWGBYYmpObV1dTU1eYFGcigAUHdNL61+7sCLWxvqamobKqQCH6NHdg8BAQHhvx2ZKr/66qt37tz5+edfHjx4cP/+d/fufTs3d/Prc+e//OLrM9NfHDt++qOPPzt+/NTe558/efKkTJXv37+/piqnp2fMzl7/5vxiFpGbx48dc3Z2BgB9v/iszHgrmZgobCipkzjaLmWTJPsUtKbbLaqygoFlakm1n2xZFmMYJijkJdoBAF7VMUZc3TnY1trc2tNbG+huQiUACksIKm5NNJN5o+X1PEUNVWEAQOO4Z0qkblQAACBYpxUURQWbLd0AB0FDlo+BynKnuQyUMtMrrjhDXyaGynbh4uau5kJxTVNrZ3WyG2veiNWNats6PjjY2dLaVFsSZY4CAKBo68dISyMtDEMymyua80urKlLtsHK6vk1bJgeKg7QUMQCgaGCb1b9vW0U0Qx5ll1ZenRMbGhgYFBqZ29SRGeMEADRTq7oX3t3V11iaEh0TL6nprsv1MZWf7xtHtOWdL+7sL7VmLDqksdZR1XW1+Yl2AKBkE8LP9NUDwCgYbYyvHZpsEYeyFdf7KqDICl5ptcNdNZFR0dEp/M7X3943VuiKxbJcs2p66gqToqOi86ubRl9/tZZtuabFTaFppVTUd9cLoyKjYoQFda3VUS5MBX3z7O7RFz/ePyIVpkZHRQoberuE3ppKaEWTDZExHTsGKhPioqJiwoO81m4YAQEB4S/BClX+/vsH3357/+7de9ev3zj79TdffP7V6VOfHzt26uPVVFkmyauoMi+TNzd3Y2Zm5sKFC+fPn79z5/bJEydkGTeZ3rFZ/CSOzGJT8SrtKOcu+i9ROKpvQcsyVZbXs0gqrg6SqTbOOCKvKiPNCQBA3SMqLUWUEhTgH5BSLPG10qQAAI7oV9CcylHBAwAoGPnn1TXGAICqlWuGtMBTtrJL4mRUVkVssl66AU7CetGvVRmtZJvR1tUpCpkP1MLquWV2HTjyYl8pPzAwXNpSn2VvRgMAINCNbF19/f0DgkIiyps7YxzwKCBo6IWLS3M2OZS0lDoYqtvGinM8FAConsmhkR6GtvaBlfVZBmqmXgK+jaU6Xplbv+fF50fa6qqqqmpbtr3x/tu7i4wAVM2cWnZNlYYyyAAAaO0gcVleHFdN1h05LWMO181al0qU9RtPcUkb2NJTmJDXtqW7f/PAcIck0Ej2OoFX0HMMFxU19G4f21KawJV571cDq6ThVdBTaTu/eI/TMHd2stCmqlhvyimXbNKVLbCr2Gb0jTc6cbRWbwMlZ+ie2N6Qrjf/zoK3jBYViBN0AEwj80e2lfrryNbdFd2kHaUhRkooAID4hiwP1OrtISAgIPzVWF+VT/92VebzBbdu3bp67drM5cszMzPffvvtqYXqFLremSXFWa40AABQ8S4rEzpaqi10BkP2kTan2cgtuGXlWTb82t5EC1lPjcMz8nmR5gCgGywUxW6cL/lgz6tK36AvD4AiBpWOFviq4AAA5A02ihqkXgCgYuWTW90QpgcAACSbjNy8SB+9pRvAFdQJvfWUlt0SDJmdUDcw3JPvb0xbWOHGGfvWTbzcJHInAgBgg4rLcpNc6StCwWiRdZ1peAwQ6axYaUWYmbpret3myamX9o3lxbIBwDg8Jj1cXJGTVvfGZHRYWVdJtJ6ePBB9KwaqvYK8nZ2dnZ2dufZsc2NtRQANa/uS1jLvhTAxrGW0ICvFh7X6U8Tg1I2sDFTwQNayct/gzrVkyqxqZVPbgBB/JgBJw8Qxuaa5IsPfmLB6E0BQ147Ob45ceZixMSErK4G9cCMoLpKGIq6d9uptoNUs/fPqeOzFAzSnYFGOiAPAScupFPnpYeeP04Nry5NM1QmAIlPSW/N8KUiAOAICAgLAE6jyd999t6YqCwTCO3fuzM3NXbt27erVq999992ZM6fd3d0BAK+xIT4tKcBWDo1GG4WU14pDzNUwAIBCodEYgrx/cTvPQYmERstqP1CY3E1iYbA6Go1WY4fll5ZsMicAgLpPlpQXZkdDo9FocBQ15QYaq6EAsOquOUXJFiQsGq/MiirszfOmAABWwdInTpS0UQWNRmu5ppUWizbq4WD+kmi0S3ZTjp+RGlZ2RTRJKbigf6C/nGPKkJOdhAIAQBEVPFLzaqtS2WpoNJoZK8319TcnomADr6hG4K1ORaPRRHZE7VB1JBENaCXmpoIOqbcGiqJhyubYWBmpq8kDAN4sMFQysrcy0DFZJGjaPZVvpyuPBpALLu6WRFmtWCFWt+T2vbS3OMEBjUajCQa+hfWNQn/WvDjqB+Y0bd5TF8VSe3TRClW2b+3E+y+ND/R19/Rt7y2LdmeSf+2rl4EiqZpkNg1l+zPRaDQaLWfgKKpoTOPSaW7pxcV8dw00Go1G6/sX7Ngz6GajuYZxi9WydixtLnSno9FoNBpNdwvLjON7kwDsEsW7n+/1YmvJ/hBUlp9io09BAZoqx+tqTDGjYHDyulGSttIo83W/swgICAj/vTy5Ks/Ozj548OAhVRYKhXfu3Llx48bs7KxMtKenpz08PAAAAM8Oie/ZtXf7th0vDlf6sOl4FAAAJ7aie8vk9j0vvPz81OS24UZpsEyX1Yxta7bvHt82uW+8UxzOoWABANAky4j81q3PT4yPjo/v6RbasmQbrFBkVWHH8Oj2yZ3jw73SUMV5sxCr67CxeefebdsnXxxrTvY2IqEBAPR9+A1Du7bvfv7l53fv3D42VJ9ApZDxprFDr7339ut7evv6t2zbOdSY5284f6cwJFYQv3nrCxMTO14aKg4wpGEBQEmLKWjqHNkxOTE+OtovNdZSQAMAWtk8tmKoK90Mi6ZZOgklmfORz1SbmKaxLYUemiTD2ObN9amWMpcBWZWV2zk0um371tGx8YmRtrJwrgozoXFiz76dA32j4+Pj26em+quTXemLimqR0rb3wy935ZhpER/5dNF4Mo1hxImU1jZWCXxYNOojRRyN1jDl1o5NbN06Nr5jz3hvU6a3pgIGCPqe6c1jL06Mj4yP7+ro3/LcnrGRAiOd1aPDMThldlz9jqnxsdGR8Yl94805XqZEALCPT2qb2Le5b3hs69jY+LatNaEGijgUAGDwOrE1O7ePT+wcHxwqi2TS13SxIyAgIPwFeCqqLBKJ7t69e/PmzevXr8v+vEyVAUuiquvosZgsXbr84tZksrKGji6LqaOpocVgMnW16PPBSWgMVlmTyWSyWFpqSzumAEVUoGmxWEwmk8lQo6CXLDeqmpYuk8ViaNPksIsH0XiCqjaLyWKxNFVIC4cJ8mpaDD0WQ0tTS5uhq8vQUsag0SiCIk2drqGpraury2SxGFp0hWW6hyUpa7JYLBaTrkBYbJ2gqKbDZLGYulpqi9ufUBiacVTttucmp17c3l2ayF3oOY6qrKokT0QDiqyoJE/BL9qtZBUNBpPFZDKZLF1tDSUKlqCkrkNTVVFRlQ2eQVcgLjNPcRRFVbqGqhwO8zgLsmiToKS0WFf6+mcCgLw6g8lkMlksbfrCWw1gycoaLBZTl8lkqKkoqdG0tGlE/FqFMlEogqKmLpPJ1GWyWJpq8kQUYPFEH3F+fSk/wNLE0ECPyWRqKBCXym8SFDR0mCyWrpYadS1DHgEBAeEvwpOossx9vaYq37p1a25u7vr16z/88MNyVf6LgCUr0dTV1VUVSdj1T36qoLAEEmltGX36GHtt6tzzxovP7drVn2/GesIt2AgICAj/zTwVVRYKhY+wlRH+amAJRKqcvJycvKICFYdF7GEEBASENXlCVZ6dnb1+/fpvWldGQEBAQEBAWJ3frcrff//9mqosEAhu3344Bvv0fAw2AgICAgICwlo8iSrPzs6urso8Pv/WrVvXrl2bmZm5dOnSt/funV7Yr4yAgICAgICwFk9FlTMyMm7Mzc3MXJ7P7XX79omF3F5/HXBaVt5+AYHeTvracs+6LwAAQNUyMjLQUPiDl3WxagZG6mtlJkFAQEBA+G08oSpfv359FVVOS0ubnZ395puFPNg3bhxbyIMNAECiW7mHRkdHR7ibLt/vo2jsFujv72is/PB2H5wm2zcqKjra39lQbSnTBo5m7BoQHR0VGeqkT1wWXUxmOYZsiooO83c2XBbri6HqOQRGR0dHe9tqKyydTdTheAWEbrTSJD6cwsPYPSgiMmqTn/OvKjDKMR18o6OjIqN9OJqKOAAga1m6+IRFREREhIcGcZk4WeMYEtM1oW3b3v7O4dHB6qIErd+4CRdLUbby3LTRYSm52BNDYIZJmquEbtp/ZES4oolHdv+bb22tiPJ3NVV/lN7jaEZOvhHRm4I9ObryS5vNUCpmbsGbIsL8PDgs+Ud8HAEBAeEvwpOr8tzc3EpVTklJuXzl6hdffjU9PT09PT07e+3IkSNOjo4AAAS6bbykrm+oualp63BHoreRAhYAQNnUo7x7vHPilTGxA3VRIzEUmlN4Wf9oY2PTYF9nOT9AmwIAgKMbx0maWrv7mhrqR/saQ7iaFAwAoNE69oLW4Zq6htaWpr66HBNZEmusIss3tWpgpKmpactgZ16cC50IAEBmOeTU9rbvOjhVEcRUWqjkiKdwglJ6R7trG1p7Osd7KgINF0s1kTUdUso6OvsGmhobmsUhJhpEANCNbh8b6+lurqurqSiKsZHJO57mkN61rT2OAQAUqxhJdabDb8soiVfSjqkd3bO1wuuPkipFh8yqalGI4e8rjEzRUdPTUl15lG4mruuvra4orW6eev29lk1rpg0DAKK+S3xubc/Eay91ZHC0Fk5EoXU8U0vq2sd2vzTIs0SCsxEQEBCeiionJiZdmpk5tVhf+crlQ5995sjlAoACO6yoviLITA4A5Oyz6gtibLQJAEC335QSaKfkn1+XbLNYnQJPMw4r6yoKYgIAqLvxC8oSHRUAQMmnoKc6k0MFAFAOax8qCjBQAAC8WWZru0jmJ1f04LVVRWoAAInJTalu5burAwDWIKygKDfIkgoAVDPf5BBnVR9hafrGpUqORHluaGaQJRkA0NqhRQP985Uc0cqWIfzCzmIvxsPWKzOiPj9wRXVEPF0/uqQ13ZyMVmSHFTS1tVSlOZAV9UyDU7OzYrxNNSkAoMH2jUrkZcR5KMoTAa/vE5cmEImyhOnhnvO5xNRMDLMa6hJd3BNEWdk5maFc1jJ7W9XMNSg6JYCtQn08y5eoH5ZTW5LusExYtR28kwTiLJEgM9GDAYDBEF2jkyPCfO3svdMFQlGOIMaHrQYAKBUjl/DG7QPbh7qK+HxhljjanamMBwBQjWrq47NlrzMGblHuRoR1ZRXvLGoqTrbXXrF1GsNJ72xNtsAiNSoQEBD+8jyJKsvc13Nzcz/88MNDqhwfn3Dh4qVjx08eOXL06NFjM5cuffrppw4ODvDrSo7VuY6cpep9ZO/VKjnKrFWMYRhPyovnAABJe0NCTlFVtVSSL6loqo315yiSAIUlBBe3JprJLG0F1gZhQ1kw/LqSY740KtB46QasWckRyJouUYVZbFnFKkXbCHFDXQUvWpArKRQEWqvPG53MmM6Rwfq6EokkNyttoy4AAFC09WMLy8IMdb3iG1tHWztaapI4aCXj4J5dr001xRvQMABAY3uXjb/1YnsaUwltHCGtL8vKTEvL4AlKm+tCvCwAgG5mVbnrzR3d7W1lUmlxS0dPRbqj7oLFbZM99sHX371dzl6q5Ah6nrysrAR/IwAgGriGR7joLP5JxSGjrDY7VH/xZJZLYHNfc2VZoSQ/t2BgoCmKi8cTNmZKJt57e+fYYE9unqSwprGnuSDQTBFUTTbENo71j/Z3lonFeZLCRC99FQIAgKoFv6KxsDg/1nbdIpELqHrnt5Yk261QZaKSi7AbUWUEBAQEeGJVnpubW0WV4+Ljz1+4eOTY8cOHjxw5cuTixQuffvKJvb09ADC9Y0SLlRxVvUs7KrgOjPm+rFLJ0TyxqDpQptp4k4j86ox0ZwAARW44L7uiTMjP5Jc0Frma0IgAKDzRr6Aphb1QyTEgv64pFgBUrVzSJQWesqpQJE5GVXXEpqWiRmtUcgSiYXh5XVtOnExnAcNyTW569cgro+3VAkFuc3dNuhVLCQCAqucYGJ3O4/EEwuyOjgY/CxwAUUMvXFySE+5U2lJmp6doEZGV40YFUPZN3hTupmtk4soXRWvJabvyRC5sLZKiZdXU81MdJWKhUJBT2P/y397fW8wEUDHltu17sSnZQgkAAG8YU1iTH82Zr22lYuLsH5Hoa6UsywsOOLJtTPfWHW0FtX2D5VVNzX09NUl2C2WryYYhWTUVGQ6LdbHkTLJrarIiFuphaDkWdTW6aGPRBKpk+/M9OdYyr7mqR2p5Ta6POgCARZRXWpj7r5JyUcz8YjJqBrZ01ZTn8TwN1xdVRJUREBAQHs3vU+XDhw8/ePBApso3btxYxVY+f+Hi0eMnDh9dpsoO9gDA9M0sKRI5y1ypip6lldmO7MUEzViKb0FLup38gpNYXt9GUNcTbyL7o9GmzHxerBUAaPrzBDEe+rKTnHhlia4sKgCKGFI+kr9RZsgp6G0QNhT7A4CqtXdudX2ITF6J7LS8/KjFihOwoMrKywUBrR8oaRvYXJ/qZrAQPY039W/Ytb9H4iMPAEDaVF6eFe+kusIRqxnd1JFCwABRnRUjKY+w1vLPaegZ3rLrua2FsZYAYB4dnRGWUSji97y7O9xP2lgcp2egCJTg2i3NMWlJMbGxsbGxURGBXm4W6gAabG5JS6nXghmKMonIzEr104NVwRL0Hb0cGFRQMvOOT0rY5MWhLwwIRXNIK64Vh7GW4qQ1I+sKE4y0F2KuUOCe3yViU1U11LM7W6MXi0Vqu0RkFSdzAAC4ycGCaD9NeAijjQEcZQBQYftEJteOdKcy15VVFZkqaz38DkRQlKnys0sJioCAgPBn4amockJC4sVLMydOnjp67Pix48dmZi599tlnXK4DAJCYAWm8lI3GAAC0DdI6SYS1xlIANGZDflOy5eLKLVbeYEN8caYXGQDwej7ZxWWxNhQA0AkSS9MDzWSyYsVrlgSb0lAAOJZfaXEsCwAAR/PP6SoNVgYAvKptSGpenCMOAKhWscXFOX4myypO2GbW8jy0F4Kg0HiSS3JVU3eNu53+8sAotJx6sLisuiRSFw8AiqH5+ZvCOFQ0OCdk5UbZyc7U31gy1BxPRANGmRVZ1CZ0UsXSLTYGBvpvsGfpqgEAxTokLGtoqjzQLbuAXz0xJXFkKmEBVKOqulK9GPAwKsZW7XsmcoKMAABAzVFU3SgONZlfwdZxi8+t7sjx1VJaUf/xV1CNgoTV1Rn2y6PGiOqpVYUpnnoL99kio6nIiIYjK9NLt0/UZ3DnO2BjJygQucoDADimJhQLQxkAoGSfWJwda66BA/Asn9yzY7ynrrysoqqyoyrVSBW9nipT3cXNhfFWK+PGiPaZnc3xhqt+BAEBAeEvxZOossx9vYoqJyUlz1y+fGb685OnTp86derqlSuHDh1ydJRN91SHiOTuHdsHBgb3jDSHuzDIGAAAy3BpY9fw0NTLb+zbPjLQUZHli0YBAF7d3KVh27b+geHJ0e6iJHdVAgAARpGbWNS6ZXKov6evf7JP6maihAcAQMnp5Hb19wwMbxnqHahIWdgnTNR3DmjdsWNgYHjXWKcwjKOIAwBgbkgpbx8ZmNj3+gs7x4Z720sjKRQS3jhy5O0jHx/cVV/f1NG3ub1CsHHeJAeCslmctHN0amho8LnNVeHG2kQA0LG0K+3p6R/ePNTXu3lztbOpOgYAsGqclIbNzREaAGh1o4iUaHs1AACQ58Z3TO2q9GYoWaX07uwSWKujAACUWHaV/YP9AwO9Pb39Q101+cG2SjoxtVtfPvDK6PBIX1/fwMj2wZasQH2lhdguNn9w/6nrrxVZ6Tw6thut6ZBa1JAbylgh3sp2CXW9QyPD/b29ff29E80CE0ABTlE1f3z36Mi27u7u3oHhbUOV4jAjWfsKVoHS7vHnhocGdo20ZkXaq1HRAAoMCwcP/8yWXaNVEX5O+o8sOkGzD8ttGR3aPPnSm6/s3balr7cv309dAQ+WcdUt3cPDO/btf3Pv+OBwV01+mPGj2kFAQED4L+epqHJqatrVq9fOnv36iy++/OKLL65fnz169IiTk6PskiRlurm9q7Ozi5O51mI9JWWmpZ2ji5Mdx9rGwdmJyzbTltldWAJRj+3k7OziYmOsIbfo48QoatRr8WEAACAASURBVJvYuLg4Ozk5OxjTcEu+T3VjDtfZxYVrY6KxJFg4ipyRrYuzs4uLtb4yed6gk9M0ZDu4Ojtw2Bw7rqOjA5uFw2LRcjqmlpbWbFtHR0cnZ1cHtqnmkpWJIqvosV1cXFyczXTkFjdaKzCM7ZxcXZy4HGPaYvfwDNuMzqldo2PPbe9vyvGdjw1Dkel6hiwtBSxgVHT1tGlLW8BUDCwdnJydnJycXRxtLBiqBCrD3M7M2MDAyNrJycnZxcFMW3FZuDVZTdfIgm2oTsY/MuxZzsSvoKNfulFllT/pmHIcXZydnJwcuTZMRUABUOkaOX0dPHcrR0dHJ2cXrrUJfdFdgJGj61s5u7g4O5lrPhxqrR/bXOBHXc9IJqnpmtu7uTjacaw5NvZcJycnC20yHg3K+jb2js6O9hxraxsHZxdHGwvdxw4dQ0BAQPgv5AlV+caNGzdv3lypyukZGdfn5i5cuHDu3Llz587dunXrxIkTLi4uz3qw/0lQFLqBJZvDNtVTozyrjbhYqpKmjo4ycf0zAUeRT2wafvHN/S9tbRbF2T32JVBEJQ2aAnZd3zUCAgICwuPwVFSZx+PduHnzypUrly5dunjx4r17d0+dPOn6F8u4+X8LFAajxtDTZTD1DfS11ZESyAgICAjPht+tyj/88MONGzdWV2U+X3Dr1u3Z69evXL165cqV7777DqlOgYCAgICAsC5PRZUFgpX1lc+cOYNUckRAQEBAQHg0v0+Vjxw5IlPlmzdvrqLKQqHw7t27N2/evH79+uzs7IMHD6anpz08PJ71YBEQEBAQEP7UPLkq37p1a3VVvnXr1tzc3PXr13/44QdElREQEBAQENbld6vyjz/+KDOUb9269eOPP/4ZVBklp21qa8+1szLRVX28Gk0UdRNre0euA4eltP7JCAgICAgIT5mnosoCmQf7xoIHe35deV6V8cpyNMXHriiIRdG11R6rMhIKoxeU19a/dffz+3pSzdbfqkOiO2dWtw6NbRkamOotttcjI3mYERAQEBCeLU+oyrdu3VpFlfl8we3bt+fm5q5eu3blypX73357+vRpdzcXAIq2hWteV11PQ3lSYGBwSJi7JV1uIZWGuqWTX1BoSEiAj6uxAgAATk6HE5sn7Bvryg4MDA7d5ONspikr/URWN3PyDg0NDgoO8TCjPZQ/GUV24He1JZtj1pNYxQ2itsYcC00CAJjGtjVl2qg8qkAwAgICAgLCU+epqDKPx7t58+a12WuXZmYuXrx49+7dkydPujpzAVQ4oVmDz+2YGh/pqK9vaunIDTOlEQEAdGzc6ge629raWlpaWke78rlMACLNNqZuuH/X3sn++vqmtq5yXqCVLHWlhVdqbnVnWXFRSWlXQ3aAnRp5UZmJSi6i7tak9VXZLr1EFMzVRAEAoPSiWupTNB7T742AgICAgPB0eHJVvn379kpVzsjInJubu3Tp0rmvv/767NmbN28eP37ceSG3l2WMb3qYx0OJFeX1Ja2t4jBTmZISbSMbOktMlVEAoGSiyytKWZkbWdPUwzeOFxMVGRHRNPnK5nzbpfSaJGXXx1NlTkqBKNRZCwMAgDOOb+7PU6dTn+xmIiAgICAgPBG/W5V/+uknmaG8iiqnpaXPzs6ePXt2enr6zOnTV69ePXLkiONCHmxuSgg/yldreS8M0zuKQpUV5g1eLJUSWNglsMADgJaNaVZZhvVDfZY3cM2obG9sKCuS5ucUtO9oTDbTIC/88bFV2S6zoSTZgylLR8mMbGnO0FAjr/MZBAQEBASEp8mTq/IqHuzk5OTLly+fOnXq2LGjR44cPn/+/Keffurg4CC7pHN6fGG6Px0AiMYB6XH++mo4BeP8JqmfyXwIGIpkmdZYYqGGBQAdO3Zxk9gGAEDRPCwuycOQCBb8th5BlKzUsLx7/nBjioHS0toy1iajvTFad92R05zzinmeOmQAAK3A2rYsZzUqUuEXAQEBAeFZspYqz87OfXX23OfTX546NX306MnfpsoJiYkXzl84fPjw3z/+6KOPPvzyyy8+/vhje3t72SVpThFlvVtGGupqNw/3VPC8dZSxAIwQaVd3c1NNdVV1fVPtQBXfGAAFABQts+jGscnWuvqu7q6eqgw7XQKo2MaJC1s662qrq1oHxp47+ObOLqEnjUowCs4prmhsHt6z/43Jnrr68txUL9ajhq4ZIylu7Gypq64a7W/wtpB/dAEmBAQEBASEp83DqvzzTz/9/L///vf//M//++GHn27evD07O3f58tWvvjr3ySeHjx07+WtVvn379ioe7Li4+HPnvvnoo4/fe++9d955+/TpUx9++KGNrc38NfGqBly/2LjYmGhPk8UIbKyWnXdIVEx0dHRMRIi3uepCB1EkBSOXyOjYuPggJwPVebe0PMPBKzw+Jjoqwpdr5+TpE+pupkDEadoFhEXGRIUF+fsHh8fERQR6WtEfOXh1c4fAyPjY6KgQBx1EkREQEBAQnjnLVfmf//znlStXa2trN2/ePDkxOb51fHJy8s033zx16syJE2eOHn1sVY6Jifnqq7MffPDB22+/feDAgRMnTnzwtw9sbW2f9WAREBAQEBD+1CxX5f/93/89e/brsJCQxsbG4eHhocHBsbGxV195+dSp06dPf7FClX/++efbC/z0008PqXJ0dMxXX3313nvvHThwYP/+/cePH//gA0SVERAQEBAQ1mG5Kv/jH/+4f/+7b859Mzc3d/36jZmZyxcvXrp0aeb8+YuHDx9f4cF+lCrLbOX333//4MGDb7311smTJ//2t78tebAREBAQEBAQVmO5Kv/rX/+6ePFSrji3rbV1aGior7dv8/DmF1944fixkydPTv8GWzk2Nvbrr899+OFH77333rvvvjs9Pf3RRx/Z2dk968EiICAgICD8qVmhyt98c56Xmbl58+bdu3dPTU09v3fvO++8PT39+alTn6+qynfu3Llz585KVY6PTzh//vxnnx36+9///vHHH589e/aTTz5Z3BmFgICAgICAsCq/9mCfP3/+2rVrV69cO3/+wrlz58+fv3Du3IW1PNirq3JSUvLMzMzJk6eOHTt25MiRCxcuHDp0iMvlPuvBIiAgIKwBGkskUUh4pEYNwjNmRbTXN9+cj4uNrSgvb29vb2lu7u7u3rN797Gjx3+brZyamnb16tWzZ89+/vnnZ86cuXbt2tGjR52cnB6+NF5OhaahrozH/pU2JaHwSjRtXQZDR10Rvf64USQlDQZDl6GuQsYtO0yQp2lo0ZXImIdbQFNUtXUYutoaysvLbKBxCnQGg8Fg0BUJy7Ok4OVomjq6DB0NRcLyRrByNAaDwdCkKRCXTU9YkgpdR1NFDv9wnhWCopoWQ5ehra5EXNl1NFVNh8Fg6GrRFMhYAEDhyIpqmto6OjqyrvwnC3ThKEo0DU0VIu4PzRKDQlNVNB6+Tb+Z+Uemo6misPwpoKkqmroMhq6mCgG3fvNEJU0dBkNXR0OB8ljF1R4fDIlK19ZlMLTp8vjlx3FyNG0dhq62pupjJN5BERXpGlo0RdKKdHtERQ1tdTV50uM9FJy8uuzrqvpQuTmSkiaDwdDVVJMjrPXJxwRFtgzOLS7YZI4kw0d4xqzYGXX16rXurq7XX3vt/ffff/fddz/44IOjR45+/fW5X++MepQqZ2RkyPJgf/PNN+fOnbt9+/aJEydcFvJgL6DqmtL8/MutduaP3lT83wNeTs0sJKt6cGpqYmL3eL27HZPwiFkUhaMYufJbJyYnd764tY0faC6bvjByahvTq/v2vre7KlRfZXGeQ6EUdQIKB0fGJ3ZvG2rL8ZufRXEkA7eoms0vTkxMvLilNsqVRZTNgTg5q/jyzpHJndvHJpsyWKqyNyM0lm4SVTU6vmNy77beyhQXKhYAAEVStAkVtO756IWOTGfmUo/laLrClt7RHVM7tk725nvS5RZfBdByes6RFYMvTExM7uktjODSAIBql1IzvGffzvGx8W07qqL0ab9vFsXLk0m/WQYV7KPrnnut291O53dcEU0mUNZ4TtyECnGI6e9MPoNCK+lahJUMjYzt2DWxpaksToWKBQAMSV7XPVrSvXNqYuK5yc7oQA7lkdabsoF9Xuee8fGJ3Ts3VxdGqSngH3EyABCVqI955wkK9GBR0dDU7okde3c2p9vrkWRvUih5jfi6HSPbJqfGh/uLwtUoj5JVrDzNl98wsPednWV+jMXc9yiMItNK1PXSrsmxirD1HwpFVceV19gzMrFzx9hIdy5LnYoGAMBQWRxx30vbdkw8P95TluSi+CTCjNHakFZWLfXXXTdVLwLCU2a5Kv/yyy8//PDjgwc/PHjw4N69+7Ozc1euXLt8+eq5cxc+++zoCg/2L7/8cmeBlarM4/Fu3bp17dq1y5cvz8zM3L9//9SpU65u7gAAgKHS9CxtOBwbtgHdLbtCZM7VBQAay9jKwoyhjMcpMy2trc311eQxBG1jcwtTYz06FQBwVGVdYzbbjKmoRlfR1je3MGfRKXh5RU1dAzMLUx1FPAYF6obmVmaGmoo4gpoBm2NlylJd83eKVdDSNzYzM2OoEXEKqrp6hqZmxppyGAwGo2ViZW3CosnjyerGtrYWhtpKuLUawSvrGpmYmRhrq+BxinQ9AyNTU0N1ypq/arp9RG1n80YbOgAo+Zb0lSdaa6w5o2OUjQOL2irTnLFYrCY3rqhEEmCEBwA528iKvBTb+MISfoC1xrxaoLAkVnxNX1UUEYslq5slFHdleZAAAGvoVdTYke2hBgDq3nn15QJ3HTQAkF35HW0Saz0lLBbnLuyrjtOXQwMKr8LmNXYWBmKxWEVDN0FpY7IdEQDwBhtyckR+ydkZ/IQAsyWj2Ca2vDzVXZWExSl4F4xMVAXLCndhKUyHtM7ByjQPjfnOoVAAoOwuyed52SivNd4VoPFEhpkNh8O2NjUx0tOgyuEBJadpYJbVVVUcs8mZzWazrfVpeAwaqJrG5sb6NCqgcURNI461MVNNTnZbUCQVpqUNh2PDMdRw5hcJ7TyNAACAqmlgxpa1zVKR3T4lhqmJob6Wjq4lm2PDMWPR5TAAgCarMoyTqvMrs9M3stkcjo2xthwBDQBAputbWHHYFqZMGvn3zeIoHNlL1NpQHA4AQNYOKexvjNIFADl9R0lLT2KAMQDgbVPrawqDzdf6FqPwNJPsjm3VSVwsFoulmSZW99dJwubFCS/PMLGx4XDYJtoaTE1leRKWqKRralUw1CD28bTncNhW5gzlR71QaLslFedlcJlYLFY/sm5nn9ROhwgAWFpYxWB9rBIZi1fQjsrrLU8yf0QjCg5x1XlJ1nFFFXwfk8Waq3g522hpeVaUZUJZXeSK/Hs4qrKWgbm+piJ58VXIfFNhe4tYSwkNAFbpPQMiRwoagKBuy2/ulHhisVglQ7e8yrZUX/VH9OSRoKmWwdKaylirx677joDw1Ph1xs3vvvv+3r1v5+Zufn3u/JdfnF0rD/ajVFkgENy5c+fGjRuzs7PXrl37/vvvz5w54+7uBoCS19mY0TA4uW3LlpGpvvLG0S3ZxlZaALBRUNoz9dqeDpGwcah7dGt3T1GiOStn85sf7O3O9NEDAALDJmtg/4cv9QT7+DsntR04cWoq30bezLNuzydH3xvOtFchoSFA2jI8tW+yVSBoGhnavrW3U+KvtMa4qdaRxSPvHj88nMYi20QPv3H476+2RZsQSSRSVPXg1smprc0CQfPWrVNbO2t5bgprNKLimNq482+H/9YSTqO4iva+f/idqbIg1qO9iEQ1prm9q0uQoDw/2UtXac1pUcnUPq2o3FdWuZJgGS/MTwpeVjrLJq0yO9hqQZUxZPngkrZkC5lCKFv459TkugMATpsbnlmYHefs6OjknVJQKE60Y+AAwIFfmR3IocnaNktqr45RIAFGSSOmrDlGll8creMRnVeYtixs3iAkOyfZ3/RXrmoAADXPvMZ4RxIGADDqVpElTXXJ5naOTi4OZgzleUlRcpdU1eTxgx0dHZ0cjFQf6cBGkZVsAyNbh4c72lt7era9vX88NNAI0MbheQ3PvfXy89vHNw8ODQ72Z3urkHBgGFU7NjlV5InGK2psqti9Z8dgkT8NAE1Vd0mo6t+5fcuW0Z19FS1bN+dwHPUAQIkTW97a0dPV0dHW1tVRaG2sDng5u9SWrfve2LG1f+fg5tE94/2VafYKWMAx3RLLJt944YVdkyMDg8NbxkqjTdUIAAAM3+zmvrFdz7/Qz2M/SaJWNJZu4uDo4heSXlge67iY0A4rTzO0cXX1Sc7Pz4qz1VnjtRBN0Q8obK0OWzxANfIUVDQkWQJQ1NzjCrvG9oxu2bJ1pGX44PNVsRwa3S6louP5Ay/vGd0yPLxloKspifuYi6go47gKXqSlOgkA8MYpnc0pBrI/6Dpk13Ykyq3bgD2/NsvPmLZi/UPNILr4V6qssSFjy2f3/t4f66T20HEFXUtbRzf3GEmtIMAYDwDyzI25nWWBMh1V2RBfll/gs+q3c33wWhuSy6sLvDR/38cREP5Qfnd1ikepslAovHv37u3bt2/cuDE3N/fjjz9OT0+7u3EBrxUgbKiTbNACAFBzSml58bUOruXCG667ZHJitLPAH/AUknWAP0fJ0DW8WOSqgJezcrDXoylruUakCGINsQAYAz9RXaM01i8kuaSpKz+IMW8dAZoSVP3SruFKnitgldQcgoLNsHJqps7+fr7eMnz9At2tdVQIAEC2DC9oqs0O8w4X1LS08D2VFqYosmZc21vP9WZHswGrwXLx8zEgKGtZuQUua8TfxYwmjwMAJYfEiuaKjADvmPymlup4+3X8hwB0x8j8ltEtz+3qDdtg+oh1QCUTu5SCEp95VbaIL65KjF+mkXYZVQ+rclBRU6K5bJVPxSqsoKomHAAAq8kOLBiaGuztGdi2rWXTxnlT14FXJgywoaMBAEWyTG7ty1agoDGK6lElDVEsFAAAWntDWplU6rt0RcOwnFVVGavp6FtQU+2Hka3ayuvYCDbvn9q2Z9fQwPD4YGOOp54cAADRwCu1pGugv7e7t2/3QKUPW5Wwtp+Azo7N724tCvVw3xAtqdoy0OxlNW94+xenx7ONHuoEQdEuvUXiTUQDAFnXJrGoPFAFcNoeKTVNZQFMFAAo2UTV7Xuzz9NOC7CqaV2Dg+WpQe7u7h7eot6X3t5XycQCEGh+VVtHKvwZAKBun1RYJ/acf6HjpodlBLmrwq/BstM6OzPtSE+wmEtUcBO294xuHeppy2EqLjYkZ+yaVjc68tyuQX6cu/JapjJZxTN3oCXGYElZlSw803KznFQ0XFNbe+q9TKkAgDfxz6ltEm1kyQMAQHRDdoi6ym/pI4nBzmxoSjUwkPk50CT7mIbuxuBAPz//0ILR0ZG+XLd12+AK6n6tyiS6UUzJr1RZ0cyT1zhel+pkKP/QcbOIwobeLYM7xuo4ugoYFABOgRmc1dJR6evr5xeV0vDCZK8kfGXJ18cCLWcRJGmojlv9jRMB4T/NE6ry3bt37969u7oq371799atWzdv3vz5558///xzD0dboDsniITxVguzD8k5v76Aaz+/sIT3zGtKs1kePqJqop9WkJ9ku2Hgby+K0/OiNqVEJi8kCMPaZ49+cHnuTF+U5tLsjiYpBxY2xS//bZI0TcMLejrbW2S0d/WVJy3+4OW86184dPHSJ3Wey36QBBVWZFHNJu1ljcjpOySU9XUtNtLZUxhhrj0fFqIRtfndU+e+2C/h/Ib7rmrDa64TmLHWrB2pZOYkrGoIld0bnFmsuCg5ellBy5WqrBBeOSBwkKm8spl/Tk1ZEACQjDxCUlP96AAAaOuQ1IQwJxoGAJxEzQVR9po4AEDhjOPa2jIVyCiMklZCTV+KzB+J0nKLlRbmbFi6otEqqozRZAdldYz0VsVwcPNPQdUwsefgm1vL3HQBQN49TSyVhKitMPZoIU2NWeb6irAmaAUd76z29rbmto7NXTXCcEv6/BMLLstI4Jg9ZJyRVbkZzbmeeDQAELUsYqTlPgqg6hgmzM2wWxA0vJ2oqmiDmw6QNpQPbW7u62hobG5ubm5uqimTRrLRgFJgbhTU8WT1U1TYvhn54g3zznZnXnhm8IZVYh8wJNuMzo4M2ydR5YXu0QLSW0r5K9PskA1CyqpKfbhriChe0Ta5tS1r2bsajRORV5xqbeyxSeAXb7Hqh2KbckI16WsuyqzsgbZDRGnP0GBxmL7KsmFqevLqmjs7GqtryzJ5TSKDddtZVZXJ6qup8jpYBNa0lgSQZYGLODmryOKOjs72yoKqFnG8KPz3GLsELY+EytpCj79KeAvCn56nosoikejevXsrVdnFAagmUeLC7IB5wcOaxHcO11sbLXiZuaL6ZKvlhgFR08BVMNiRESvuyPaSTOwqS4l0UQMAoOrYJuVXlVbWFLfUlaeGcemL5gLOM69h3gm7HsoGjryiuqKKKmlrbUmMj9WiSBDUgiTVIY/1I0Wpm7tllzcVVFTkttYUBjsbPKpCs7qZrRvXgAoAAGh6aGt3ubUlba2TSZp2MTk1CbKJWs1dKCmMc1o2O5smlmZ66S2sgqFw8tzUzqIQmatd1T21vjKGCQAq9oEiaa6r7DS6nyiPF84mAYCuf1VFhqMaFgBAw7eiI8dZAQ8okqYXv0O8EQMAQDDcJKzJC1w2y2n48njR7stCc1SMnRMr2yX5iZzli3FUuhe/orMlg44GADD1i8ktT9QjgKYl18/den4pQDmkuVNqYrTmGrMcnW5mwVh447ARd3SLI8xk/wuvyct01kcDgIKZd6iHOQUHBGW3rM4SbwIAYFgBOY2NeW44wBsHCIsLIue/CShWWPNQixNbFUA9vqIu2ONXhT4p6s5pVemy9yp5E7dEEc9x/qXLQ5SUF+uhBABYXedgbwd1hUV5Mk1sbUk0WWsUjwaNI7C9vK3mnz/JJbSqoTYUABR1DFw9bOa/fHKOxXX1wYFGa7SBUzALqB1s9zKT3VeiXWxRU0OuuQKeEyLOLU7UnHfcoBn2gV5OOgpYABQqraMshkUFANCyDQx2ZKLX9GGT1I39RTUljWUhJmsakcYexYU5j5GzzyK1MsNNa2UzZM1QSWXgCjcEia7P9YvxtdNdCgoxcvF0NJr/kmmyc3p6eNSVXiYNv/iS5Ji1btQ8KJQRXTedyfSRW9r/gFEwC5S01sYYPGkMNwLCH8VTUWWBQHjv3r07d+7cvHlT5sH+/PPPPTxcAQj6Pmml7a01IgFPIKhrHH35nVerSyLoSsa2QbGC7l0vb22UiIW81Hh3AwwAAF7DIGPzK9uLIywN7LK2vziW5a4IKLpFcOmOT78+uS3ZFKvEKdp96MwHY9l+BnIkfbe4zLz+Pa9sqc4WiTISw7mMNYdNZNrFNb5w7KtPOwM0UWreHftPHH+9M9GFQaGa+WSIS4f2vDhYyhdmp8X4W68dQSJn5Mbv3X9q+mC5gzxGK3b849Of7qkJs6WtNc8xHaOrOzrrK0QCvrBlZLQ6a5O2wtp2FkrBwCW0tqNcKMyqbmwuz9pkIA8AoGrmFpEqFjWM7d3eU1sozIzzkKfiAbAEbW5paxlfmJVfWNxaX+igBQCAUbUOzqhtbRQJeAJRXUsNf5MtHQsAQDZKL8qXFolFfEFnd3swm4pHAQBRyWhDZXs5XygqrqhqLBNYqwEAyOlYBiSKRZW9O3Zs6arMyUr111IjA9koZ+z9E5/ty+IlJ6XzM1Pj3Q3n14qJyoxYaU9Pi1CUVdlYWRTqowMAei4BjX0ttRW5QoGgrLu7MMVHQ37NsbNcvYbfeL1XkpmZyRdVN7QUpG3Um7eVTROKOttqSkRCXufAYHmKizweBWSzuLbJ4UqhMCe3becrL7+wpzGOq0NlcGMLOtvrRQKeQFBVO/TyO2801Sbo0klaDpEtnQ2Fkiw+j8cX8lLjPAzJcvq+os7J18dL/M315LV98wZ37puo2GSphQcAXd/k2s6OhmyRsKl7oCUvhKmCA6ZrVFJmtrh+7NVXx+pzcjKTIl3WL+j9MBgC2Seja6BHzBcKc4tK+kd7I+y1AUDNyDm3fqCjQSTgC2t7B9qqRdZaa+/VwZG40QWD/V18gSinuLypp9HfSRcAqEw7YVl9W71UyOcJRI3d/e35UUYqeABA2eS0DDYUiLMFOX2DvVkh5muFHOPUvfJHj05/2lGdHZeclikQhnHpVNkWNyOPhLRMoVCYKylob61y0V69ARk0C8+otBxR0/i+bZ2VUkF6jBuFgAY03sI3JTO7sGJw976BshxBkq+r4cIntLxFk5//6/RYsuviG6tNSGlXX0VBrkgoyOrdPiYItCZgADBkFdtgAZ/PE4hKq+vqS9Kt1goiWQCNyd+Y9O/U5GOGuAUNJmm4x1XVSd1+k08fAeGp8rRUWWYoz83Nzc7OPnjwYHr6jLu7OwAAnm7hl1wozRfn5WWHBftHxqRlBGoom3MjUrLFggyeUJwnEQvTvYxlzi4S3cIzLMxRA4Bm6OLlx6EDoDSsA+IE2QJhuCtDQd/Ua1OSUChK3GgsTzbamMzPyeZn8ES5+dLszDjXtX1jJH2nTUkCEY8XzKXJGduERKcK+PxoZyZVzjKIL8oW8TL4WXmSwqzkUFutNRuRN9sYm8rnp6X52ShRzZ2jE9IFmRmbHNTXjqAhanMC0wul+bmSvFRvhfX2epLVNALSJRJJQWFasPWCv5xmuTFeWCzN5mVkCrLFeeJUH0U5PACgsWiHyEyxpKAgKzWYsxgog1XV80iQSvPE+dKCRE8j2qLr0sA9ODO3UJonzvAxWvI0kMhu8Vl5EmmhIM7TZN6ylWdywjKLpWJBZiZPmJ1fIAzToVOAbOoTFZ/O42Vn5+TmScTCdG+TxQguNEnZLipPIi0oTAvlMhfcB2rmjok5xZK8/LyUFKKo5gAAIABJREFUjVTSo0KkqDQtv+SsbLFYLM6TFqb4mKkveVyVzP1iBQVSSa4gwHi+DTRe3TYiM1siyU6MC3Z2CxGmRLnqYQCUDD0TCqR54ry8nIjQgPCoNP4mPQ05ANDfEMbPLcjLzc2T5ApTvU3I8gYeCSJRVkZ8qLWBAsM9Jk8s5scFcnTwAAAUXYfg1IICqSQv0k5RZn7qeybyxJK8LF56Oi8rTyrOTNjweP6ZFTC90kS5EklBLi/YbfHLilFkuCVIpXm5kgJBmJ7WulHBaPNAYV6etCg3zdNuybchzzKLziqW5IrzpJIoR9qSmappH52WXVCQJ0h0W/urDYDTYm+MTOdnCoVZ4tzcvHxJjKuGnEyVTX0yRGKJRCLNzohwWCfsWZ3tlygqkmbzMjKFOeLcrOSNVCIa0Hh2sEAsFmcLMjIE4qI8XrDnosuBomPpkyCO32iiuexlRJkTnJRVIJXk5aSGLSwUYciq3Mi8vLzcfGkhL9rVcP2YMxSKrW1cYWoSq4iW/fTwatbx9WNdGebrhoMgIPzneCqqzOfzb9++PTc3d+3atStXrty/f//06QVVRkBAQPhTgFPWctgYaKf9uMvsCAj/CZ6KKmdmZt68efPq1auXLl26cOHCnTt3T5486erq+qwHi4CAgICA8Kfmqahyenr63Nzc+fPnv/rqqy+//HJubu7YsWPOzs7PerAICAgICAh/ap6KKqekpFy5cuWLL744efLk8ePHZ2ZmDh065Ojo+KwHi4CAgICA8KfmqahyYmLixUuXTpw4fujQZ5988snXX3/9ySef2NvbP+vBIiAgICAg/Kl5KqocFxd3/vz5Q4cOffThh++///7nn09/+OGHtra263cHAQEB4U+GLJU7AsJ/hqeiyrGxsd98883HH3/87rvvHjxw4MSJ4x988IGNzYpsA2gsgUAk4NZOY/BfCwZPJFPIZDJx3cGjcUQKhbLyRBSWQCQScL/aaorGk8lkComIe3jbEZZAplAo5JXFEzEEEplCJhN/dZhMppBJhIcLbKLxBBIRj1kxO6Gw822sUm8QgyeTyRQKiYibLzWExuKJJDKZ/FgD/4+AJZCI+D+2vONarPrIUBgcgUgmk8kUMomIX9kPFBa/yjNerW0ckUwmU8jEP74mKhpDIFHIZNLKolkYAolMoZBJv+r0qo3Ixv7wI0cvGzth/WeAwuLnv2krxoglyL7z2Kf2GLX9xaXJHlryf4ZvLMJfgqeiyjExMefOnfvoww/fefvtA2+9dfz48ffff5/DWZGRUmNDRtPO3TVsI7XVu/ZfCQpHtgjJb97y/NTkjsmaKINHFDRE47St46rGpqZ27dtcl+DBkk3QKDyJEyntnHhzvMhfd3nOSpKys6BjdNvknvH+2lSn+ckLjVXn+BX17du5c+e+/pJAG/X5WR6NYwbltm6e3DUxvrU8ki4nmzFRKAVtn/z+7ZNTe8c6pBFWMq1FYQn6HvG12w7ubkiy01manvFk+diKttGJ3ZNbxxpTbajLKh3gVE09xZ17Jyen9vYXR3JpAECxji7unnxu57bx7esN/D8Fyl7UvXmwNYn46PoSGPQTFvdD4Uns8PzOiTe3FQcwlzJdYCgWiW3j27dv3z45NdpREfNQ6SUM3Tm+ae/OyiDrdX4dZLpBct3ktu2TeyYHCwU+64wFAP3Y9cwxBLJrgqhn8rnJyd2jZeHG9IXXN6J8YMHmke1Tu8YH24SeK9/qVl6ObB9b2jP52qhko+ZSYmu8ok1q144d27b9f/beOrytK2v7XuccMUsWmhlFlswMkkFmiJmZmZmZ2YpjSNI0SblNmSFtyp2kzUBnOjPttGmTwnTaTtvnu97vef+QKW3tZOZppu/Mo9/lK5cjS/ug9r3X2vuse33r5PJwfezh9avxZHpcfe/y1qmttfXRQk+2zssTxSiG9pENC5ubW7dvTpdmeBNuhWc3piyY7i/2sr4JI2k9en4ebmGs/Pxzzz3x+OMPP/zw66+/9uRTTzortlUZT2ELRCKRyNhQEFjbVyN1NwUAKpsr4HMZJAQhMQVCAY9NISAYw4DH4xqwaQQAQAlkpoFQwGWSqDQKg83j8ZhUPEYk0ZhsLo/LIGEoAM2AL+BxaEQEpbCFIgGXdbCjOkpisA24XC6DgkOJZAaLzeVx6cRbHcHhuO5JLdr5hhCFEYPJ4jApB8dCKMMqqGqgtyqSz+dLQguamyqCzFEAoLsm97dVqoq7O0sjdutgA0YyjG2cGSwQ8XjGjp6F7ePZbjgAwCx8q3vG6mPFDAZDGt/Y1ZDlLkIAAO+SPjTR6qu04vP4MfXzDTHGVAQAx7ZP75jsSufx+FZumqr2nkQxBgAE2+C6xobkipbysszwfXWwXdK6BqujbY34AvOk7mNH60J0lUFQglCcPLg4Wp8oZzBYbBaDSsQAgO1XU18ZF2zDoDMYDCoRO/BUY3g8k8vnczlMCh4AMCKVZSDgGzBYBmyWAV/IYeg6XxKDy+VyuQYMhgHXwIDLZZIAAMHwdI5QwGPTaYc4DeBobJ5QJBIKTW1tj7RM5JEpOAAUR2HxhUKhSCTgskg64ULwFCY3tDS9NDlKLBSKRCIuYyfhQKAZ8AUikUgo4DFuVIKC7pLU11apLu7uKI2UGe4OawgGLgUT7fE8AyaDQaft93BG8fLIjNaJzZNDeVF+BxeoA8CxzbJ7teMVGh6Px7f3Kh5aaC4K1pWIBpTA4IpEIpGQS6cyaSQCDsWRWTxBdl91qszJRCQSCvjMQ62qTfyzu9prwhR8Hs+9YPT4WIXckAgAGDu0ZmGs1MKIL7AQ57fN18cfVgab5ZEx1F4eUNTTe10dbLLIs3iiNZrNYjAYdNp2VeudgyfRWVwWjbgXFUsTWwbrkqTmfJ4wuvXoRksMGweAMYxTO5b7GhOYDAZboi5tHyj0PaSy+j8HahrdMlofb2egD5T1/Ou4hfPKL7744tNPP/3YY4+9+dabTz/9tC6DTeS4HGmeOnnb5sbWqbGKpqnJAluZMQCEVHQtnbxL25oQXz+5uLk5N1EeZ2VWvnjvI7dNlWlsAIBq6V4x/9CTZ0fDwyJ9c4bvf/6F1TJntiSgVfvg0w8tF7rzKChEt0wePX5irjEuoXnh2G2bs8PFPgfVpaY7J7cun3vmyckMS7pLwuSpRx+9czxdSv+fGw0cBsM1q6k9J1dtZWFuYsw/fPTNsnPJaWqP0BVrIsvTS6ozwixBl64k4UGZ07ZPlTEKI7xxNF+pq8bFkUVUd5W4AwDBwi+trCE32MzY2MQxqry1ocDXEg8Ayry2qlh3XWlQijR3tCWGSQKMJUpoHk53wAEAoKZBKTV1GTIAQDACmURE7aKKSzP2u1PgSVTyduaaG1A1WhxAwQAA5Ytjart7M61srMxNDA1oO5LF9qtpqk+PURgbGxsbcg7RTLaFpHnz0ce2BtL9jAGALVE3rT760Hpr3fDA1Mn77xrOsjRAAcA5rXPl1H2nZ4uLZ267+9TRvixXAACmadrAmYfv2ahNPWgRA57mlNQxu7J1fHN1aWu0pLhzLJ1AAMAzzZM7NhcWFpaPaifb8tRmVDwAwTIgp/v0I/fde/b0hvbo+sbxrjQnAQkAAPMvGJ+YX11eXpob78p2Yx0qb9uXTJHd8kNVLpzuTbeyMDExMeSzd5rAkSx8jrS31fi7+hzJzIo6pAAXQjENLBsayKDunGOuPLKqsyfRAQBPlYTlD2rvPL6xsbXSPXx6uTJawhO5F/TN3vPEuTs2N46tb2gXxnO9iIfsN0YgkYnbTVsnd9ekyY0oAEB0yB7vSzPXvW6uLG4bTDok7bF97G4FXSXXq7JX6XRPirmpsYmJiMfafzsIvNPGH/rdA4OxLrtVMHFEKnlbo2meZaPlIRwSCoCgJAqDQTfgmZhYeEQUNbSmuR1kufrPQnAvnuzKcTc/uOSpHj0/P7dqDfZ777332muvnT9//rnnnr18+Z3nnnvORSkFHD8ot6e/LUZMJxJJtuHl0/c/OOYmFgIAhidQw1pOnT6x0pdK4xkK/JMT3XnS0NzuqkAWmWJkbs5jMSxU6WVVOVIqDqMp07vmxqs1Cq/Y5umNwRyJgIwAAI5IFyQOPHDnxmhDFNHA3CokJUmKkegia7HYyVGHk1hia8Kh4RAUx/ctHlkYKAiQBWT2Lx5tTzRj4hEUxzG1d3B02n2zg5WJARFQCtvYVrK/EWtDOgkFMs/cxmGncScnR3tbY9bB8TZqHZrbuvrAaa1269ix45t9GW7cg+fl2A4u2XVNal3pfqI4pb4tPWWf0ih/6OQY2TiY5kjFAAA4kuiajs5YAACc0DmiceXOjaPa9dMnxuNVTiQEQOfkGOa87eTolDE8XapzcjzS1L9t4YMa+2c119Wo97ZoE/3TTo4I0845p6k7nqzzTqKbyHJn7j62tHHq2PrxE3NdeR5CIgAAxSmmamjt+Lp29eja2ekqT1vmAflGhCDySSxqLvBgUuimFqYcOsMxrqQ0N8LM1LmssThUKWQZiCzN+AQSN7K5P8nd3ESR0N8WK6SRBCbmRjwmVxpU1N7ox8dTf+KSEVGCR/HoaFW0rQGJSKQF1q6cOLFcTMEBkEgsH02qs0KhUETklM8v9kTbAACK4QkBJcklCaFmRCKRSCLgUAQAEADX4HgXTw+lwiMoZOjYsarAm6gOpchtL4vap8oYxeFIz8LK0aNH14+vzY5XqFkkACDYBLYvnJouD3Z0jGxs7ypLlNNJB9xRZAP/8pnh1H2WDByJKq+m1JPOcUsdnRlL8DQmEYk8j5TORW1LlB0LwfAEUsZQzRErUzqRSCTexHQuAACObRxV313g4KjzgMHo/gXjE42ucrFY6p49vnJsvsLzhm24/cAzCs+Qpg4sr2q1R9dPHp0ZLA5g7io7VxHVdPSxlVqV+EeRL9XcIaO5N4m5p+KYgXlcx8bmHbdrO2rjuD+zeOIsEluHqxMcuPpAWc+/lFv1vPL7779/6dLF119//dVXX/397//w4osvusvFwPdMKy3NUO58qZgBDYON7i47FlIBVUMFXrx90S3PwTq3tihe7DX9yOmytLwQTUZ8lvv238geZQsPXvrdixOJlntfRoTICq8fzpKR9robiokkrfuYdmVBx8ra5lBRgMOOeVFI921PvnXpsc5gtm4KlUQPKJucW1pZWlxYWFhYProx01kUJAKilU/+4ObabiPa9Z40mREBzCNq++eOaZcXFhYWFldWF6cG89wPFlqqMnnk9mfPDqQ68hGE4VY30hLsZnpQ+pPt4FHY2r0dK+Mdk6uaMpL2Tcz/yMkxtnU6X0nTOTk6aSo726IAgGDuHZqeFWONIAjC9IzPTApXslEA8CjurY5zEeEAACHYp46MFTKpKMY2TO2Y2PZAQox80+rrK4P2tvhTTo7AMnVJbF9YGi/0o2x3XQbWyeMPP7bVHyenIohxeHFtRYmKsXdKEARBwC5ltKfQyfx6/9x9mHk65xVmJLqHLj1xe0ZkZmxStjpGAgCqmrx0F9eC+u6NO6aUdgnVHZlMNgGlUjI7qhIspX1nb+ttqvRwTy6sDwYg2Xrn7b9kR9d70yUigjS7oyTMbnuuFqFKswbHcykEFMMbuaR3rh1bmJ+bnV87dXSiOXpH7DzzY/Mi/a/39qKLAkrHF+eXlxbmF5ZX19ZqAm9C35Q/UOV9Z4QklCU0Dlf6AQDdQpnfu65dmp9f2jh77wMnBzLkRgc0TmS7542N5O/z9+TKosrq8hT2PjFFUZk/nS1I6i+LFvJudpIUz7byzuubO9afJdlbCIDgbOOaphe02rnxqdHy4oHSn/aM3M9POjnqjp1i4p7S3F9yoxJDdCNJdNPs8mylmn390kIEQRCGhWdpy3Bu2GGFvf9hqN7lY53ZXuaH2cDp0XMLuDW1vXJyP/zwQ11tr7fffvvDDz985ZVXvFxlwJQmVdQUBe14t5nFDcx0yh12MlWepX2Zsv29PsXERlUyN5CWWLPYGFa9dqw+60igIQAAgW0eltfWN706d2y4Ptrbdq8wPTG4uj/Z6qYOncK3ji0bGJhZntL2VwQ5m97yNBXROqB9YaEoQaLrVWLa23MjxMwDBuJUU/fMuv40KQAAsDzyK2vT/ER7f3bMaClQWe/oGkJk+pfMNmh054HjkdzWmWkPAFzX8OKaCm/dkYnCSirzY6RkALCN62vP8+DrNNyndrwmkEkAhGqkqZwp90cAAHAWmtzW2th9/h5GoYWFSQH7rJFoItvw6uHu3hr1fldbhlFk7chUf4Yu0LEPO1LXlm1HAo6ZrdzBdLtjp4R0j9bY2f3Awm9fG3bKiIKZ0Zy44sWOqArtVmNKiCsPACziyvOOtE13J0YMz1cVD67U+LIoCJDoHsWTbQmZXfOlwY3H5qrLqhMPnum0T+9qS3PZ0ViRqmF6LBOAKJSVTh6rlxABAIjixKqW6sidQ/crSStP9GcDAGJg5yKzYVEwiqZnYzxajAcAoNjHN42X3UzZOof05gK1zU6SFcHwVjKl7bY+4sW+le09MT/Y19ScbI3nIY6iBAPnxL6Zdqmx7kuDs9cUdfXVu3EprjEVBVUxzJ2JWbals8SOS8EAECRrtCHRlK57VelqJzg4tYNnilyS69omx/K8DtoH1Nazorb+JurbS3M68v1NdvQNxROt5UrrbSdPijKkurlNs3tQTIGV1F1iyaXv5h8oAmtVaX/3YHPkvvsRT6HZypyE26NaQVRme1nFDfYEQURMXgCfJyUh+1e84XFEJ64omEM32jdiIlintAxVJjjpA2U9/3JuYR3sP//5z++994d333332rVrr7/+urePOwBVHFPc2tdUEBkRrtGUNs/f88gdFflBbJqJjXtAVOvybZM1KfER4epAiSEKAEAyss5bumulLsVL4lp5/J7lkkAeANvcu3Dq4TfPr6Q6Ehjymq1nXrp3OMnDkEI0FAdGJHVrT42WxERFhgZ52x9oXgwEgW1I3dGn33xiSGWMYwUN3Hv+2ZOt4TLez/9syfVY+mX0DLWVZkRFRtT1daVbWh1sPodxHfwTW1qzIyKi8ms62qrTpQYAAExTiU9IdGTVxPpsZ2l6VFiAlELGAeApVsFNHQUREVEJ6XmdfV0qKwAAnKFbfFFHa3mkJjwisqSlrSTJS+eDxFIW1BRkZsREaiJbh6fTvVkkBAAoPLGmtSNPExGZVlDZ1VGrM+kj8yxcg6IjC7vn5kbbi2Kj1K4GLCIQjbOnzp1/ais5LlwVGh6mDpTshHR0I7v8jume6ojIqNy6mtq4GDsAsFcfmZjrr8qLi9BEZHeM9pbHmnEOXiVFs1FUr98/XxjiqgxqPXPXZLKbrge3OVI5f/L2Ok9jl8ze42cnkkUMFAChMKMGN9aGG8MdLJNmzp7sSztsRa+Fur2nqzArPkITronum7v7zrsmArylApeEhuHWkNDw8PAjxUOnH7xnvT1BbEgDALCLyekeaC+Nioyo6JmdaU225hE57qWDXXFHYjXhYXFVs6fvf2Cpxt/hYPVkmIp9QqIjK8ePzXaVZUSFB8ioZDxGpMTWdMwPl0VqIqOSMpqGRwtVu26GQDIwVWrqZhYWeor8BPQDb0qExFQX9i+NtGg0kdEZhZ3Tk2nhjgDAcgis7R5oK0+MCA/XRJb3TM215UgERABA/BqGR2vSY6MiEnunl1tTFQetW8Y4XoVTz7zyVEdVSpAqJEwT4WXPJmMAgGDG0iB1mEajiU1K7xwY1By6fpplLvMNiY6smd6abStMjQj1l5CJGI7KTGrsnhsoDtdERqfmtgwP5QTs6q1hUOHa69+8vJTmtZ3RIBslDd754nNnspMjgkPCwkJUclM8CkDlmWa3Lww1ajSaiJSSuumFicQbGVihWEVA6n9npJ23xu2fCucamD6UXPnf0R71ezlzpk/ZYHumj5k+UNbzr+dWeUZdu3btow8/+uCDD95///2//vWvb731lq+vLwAA1dwrrX5idKh/cLAvPyezvLKpJc2U7xKcV9c72NPe0d0/ONzf0Rgn0w1bqSYeiYUFYZaAmThHJaf7mwEgZp6plV2Dff3FETYcR0ViYVNfb291rIxNk8bWtvX2d7V39gwMjfY0l4cdbEhPdVTl1fb0d3fnqIyYUr/cita+7q4yjS3plj//wBSH5LVOjI0MDxeojFmHri5jGFmkt4wOD49NNGf72W7HxUZusRWdkyN9He0dXX39A331CQZMEgBgBLy6uLVveGyspzF7L6QlGUtia8ZGB/uHRsdrE/YlBGTRWa2DEyODfa3Jyt2naQh0ZnR1z+Dw6HhnRbzbts6wbb1zmidHB7o6Ojq7e4fGOrKtjOlAVySV1rV3dfb29vYPDvd3NsbLdzOLOJaxqnR4eGRsoik3ZGe2AMy8wmr6J4cHh4YaE7mswx+MYtkGpxdm+hkCztonMSnBTTdIA6p9REFRvJuIAsZBuVlqMYcIAIBj2IXmlyc503AcY/8jhVHiwz39jH1z67pHhwf7e3raMtKzWhorc3wRAsUuompwcHBoqKO2qjC3oLW1OFqmG9WxHNQ5TeOjI8PDJaqdh3s4bimNnYPDQ30drWUZGVWtdRUahwM3aOgWs3vJevsH+hsSudszo0hwUWvf4Mj4YFtunGz/R1g2nllNY4MDAx0FGkfhoTcljuyV2T04ODIx2Jig2ptj5ovdS3snhwf6B0dGS8MtduNmsFaXN/WOjQ521MYcpqcEc++E0vberu6unr7+/sGh4ZIwMxYeABCCIqG5q394eHikt6U45AZ5KROvI1VdEyN9HW0d3X39A901sUw6AQAAw4eWdQwMjkwMtKRH7H8ojGnrldowXndEaUHbPhfOsYU17d1dPT29/QND/T3tyW4UDAAAJbG8cvsGBweHx/vrIv0O9m3dAUF9rRXHXJQ1XGz/F49GZZc4+x0XmwfufDtY8rzhuc40ud51Wc8vwS1R5eLi4s8+++za1WsfffTRRx999NVXX/3qV3onRz169PxbIHCJSI4KsPrZH7TSo+dmuIWq/Omnn33yyScff/zx3//+90uXLulVWY8ePXr06DmcW6jKn3322dWrV69evfrtt99eunTJ39//lz5YPXr06NGj5/9pbokqFxUXf/75559++tknn1y9evWqLlbWq7IePXr06NFzOLdGlYuKdjLYV3cz2HpV1qNHjx49eg7nVq3B/vTTT69evXrlypUrV6588803Fy9e1M8r69GjR48ePYdzS1Q5Ly//k6tXP/zwo/ff/+D999//29/+9qtf/Wr7ySg9evTo0aPnfwxm4hqflqm2P6Ss/r8lt0SVc3JyP7py5U9/+tPvf/+H3//+D5999vkbb7zh7e19/aYN/bPbFxZrHS04v8iR/yKIXGMbxrfWtKtrHWm2whvdTBwrTdXU2tqxrbH6KOVelQpLVV733InJ0gDD/TUrMbI4qX12Sbs+P1wXt1cDkWnjWTSwcfTo0c3BEj/7vaIlXJ+szonVY6uLU2Uq+q5JAYntlt2/vLq2MdNdoLbcfTPfWVM3dXq5KV4suu7Z2dDyjpnVY6vzk/XR1te5X5ENnTM6j2m1a5tj1TGuPAAg22tKehbXVpcWl1dWW+IseTdyWvoZ4XskNS+sNikPKSvzT4ASvbM6KqMdbuSdCABgGZTbPXdyqjTQ6IcGCghNoGmZHW6Il+6+xLT2KNRdsqEyf4eD68wAAABG50XWLiwtazdWRgqTXP/xwzgMSURq//KmdlU7VhJotHuzYXifvKHZpbVjC2NtKYrDPg8AALahJf1zW2OFXnzavt2mssNqFpcn+/L8DyletocooKBvavXY6uJ4awJ5x2IKzzKMaVheWT26OdWZtb/s3L8SstzK9eVgj04R7cbv/fcFxTHt3J8KVr2iCn5FpX5Z5XfSXiQ6/CNUkyGvgFdC1a/4S1Nu6KeO46RJvV4JC3klNGDegLnbMmqhuCso5JWQoCeVlpIffYglja/u68l1Yf6nuWzeElXOzMz64IMPfvOb377zzuV3Ll/++OOPX331VU/PnSL2CIYnEglEhsAkomOyxdndFAAwHJ6A11XWwggEAh6HACAYDofD4XAYCgAIiuJweDwOQzAMxeFwOByKIoAiKIricHidMSCGJxB03ogIjrDz60+DoNtNowigKIpiOBweQwEAcHjCtgUtiiMS8bjDG8HjcBiGogAoimEYDneoTb2hd0n/cEV+jFQiSawaGayKO2xAQjX1Kuzsb8+VSqXqtJrWhkJPQwAAujJxoLc1qWVqqDpauquRKJGrLp0Yb5CJJS7+EbU9QwkSAADMxLWobaQ9L9TB0SEsv6Ot8ojOrhdxiuma6I0K9ZZKxPmd86UhfAoCgDEt4monhivFEql3RFpTR3u4NQAAwTqwrrWzqHO0pS5nfx1sRUrbZGe2t0IqcysdX58r9N/2P0TZlpFtMzO9pREODo5iO3MBiwAAbL+a1pb8FF97e3sHB3M++cZahuEJBAKBgMdhKAII6LwiggqPxMjs2bq/YNuv6t4CCILhCXgchuxeAgTDE4gEIp1nFNI82uYduF08C8XhCUTCvjsEQXF4HIYiKIYnEIh7Nw6C4fCuSWFJai9DAoFAIOJx270LguEJRLLQwt5KRL+h/SddkdDf25bcMjVUHSMzvK4HIXOEmb3H1yZ7x6t2Mkks+6j6/u7GDIlEEp7bMtRW5m5+YK0ZjM5PaJyba8sWiyUy/+j6ifnyVPfd3cF0R4lDERQBBAEExRGIkdUZISYiKoFAINzAadnYL6Ovvy09XCaRxDTNrPcUOPEJoHOnmJ1td1NI5e4Bdf1zpSEmhzTCdEsd6WtJaJoaqwq34+9Vq3FNaZoaaompHR448sPqHwiCohiK7l1FEMc1zK6OBvsqHB0cY+rGW5KkZBQAx7FPaZoZrZRIJD6RGd0D/fHKw8vHYChGwjAyhu0OQlH2Q+gBAAAgAElEQVQUJSIICghO9/q+S4kiKBHDyBhG/uH1RQg7b0YAQRGMQTcddPXYsuPiUIyMYddV6UZQwnYjN7hLUAQl8q3S7K1S6Nvv39eRIHgMI2MYCUNR3X9RFI8gOBQloggKCB7DCPvOFoKiJAwjYygGCAqg+wPuR8eOIAiBZRjs6FTBwcgYRsbQw+ypcSSePOgBiUDF5XpzjUuUfm94WNkc/HYAbq1XwD2WphE8boDE84LUVHRIx0gRlHurLkkccw0M3IzEd3gpqjlkBACEDncEeHQZ8r0FhgsBYc+Lja4LY/BmPoUtvcUqwX+aJt8iVU5NTX3vvT+++eZbr732+muvv/6nP/3ppZdecnd3BwCUYh9WNrhxcnNja6sns6R/IMfG2QQAQiq6FtePj5UEBuT3LawfmxnICTE2KZo+defaWHmELQDQrTzKJu8+t9kdHBrpm9V7+7lzE7lSjtSvevzEvWfn8t14FBSimie0R1d68/2DSsbXTqxNdWc4H9Sh0Z2Tm2ZO33t3b5IF0yW6d+nU2a3hZAcShUJO7V9dX5poyvIPqZo7eVo7VBNrf9Bl53oX9C+dufNUY4SA6ZM5u3H65Ep7tNWBfSjNLbe+Ic9PZ8ZBCWror5FIDgwUmDYu2c3dcZY4AACqMqusJl1lCgAY1UDEY2KuOc3FEbJddwoyQ10/VuajiwU5ytj6rnxnACDYqvJqm9NdKDgcjudf1NVaHmyDBwBpdltDiq/OyZHuUjLWGM4kAsYUxTaP5jtTAAAwM3V6Q12yAwAgJKaAZ0B2ii4oTt/vr0zlGgmYuoiXF1g7Ux9KwQEAYuCoKWvvz7M25VP3exKx/WrqSiN8jHE43GEDHR0ozlTh3ba4pV1ZWple3Fru8PU2BdQhqWHs7qcevPfUyfW1tbWjqzVhXDIB7JP7lhdn8t2AwDJM7Dp1cqEvx8cAAFCiVUBe7/ptmxtbx/vyKvp7s6U+1gCAGgWX90+vHtVqlxenezJYVBzgGe55o/NLq7293Rtr61u3L/eVhFtiiM7J8cxj999/55lN7dFjG8e70px0Jg1mmprJ5c3N1bnmeNsbVmndvmQu2U3FkfJ97hQ4Bj+2aqg5P1wRlNNe7KF7kWCtymlsTdVFzjhpbl1jaLjtAeeLJPLKGRwrM9yJFYy9k5t6OjXWAAhm5pXYPn9ma2NjY7aheXEgS2VvIHIv6J2976mH7trcOHZsQzt/AydHAoMn4G5Xn7NKHWrPVZr+0MkRsXItaemNPeQEYDSuIZeBeuR3FIXsuVMgGJUjFIhMzOIbehJ+oMo819iOE89vNodKd7MEFI6hiaGASMTjiFSXvNGRXBcyADDMgyrGGkN0ReL4wUfqC8q8DzkcRNTjG/BqaMir6uCn3Ww9UQTBU8XK4LcDAs65KO8ND7sYFnHZT1HK1d20zGSpx/nw0FdV6lcDnLMYOzX/UIKxlcvr6tCLYepng4LXZe7zJkQAeqil8/NB3seDwy9qos4rLVVkBAEAhJIg8XwmJPRVterVYN9hKvlgo0nUztD+9oiET+JiPgkPuRgWftFbHKKrA45gVBvXc6qwi2Fhl1RBC8Z4LknQ669+Rx30snfEC+4eK2Knh6Jj33B3SKQBAEJkmw15q94OD7sYFqR1DT7naOiAB0CMRgICXwsJeTUk6HEXayWKAACfZb4UGvtBfNznmpCLYeEX/ZWlvIOtABAEI5BYuguNZ0ok7vNG+MN80vjiO1xtI3XtEUWzfi7ZBNyBHSOKF9LpdkQCFUEJNIujvq6tPBoGAHiyLYWg62EszVyfV5rtN0xly2IquzpTHG/Cre3fjluiyklJSb/73bsvvvjS88+/8PwLL/z2t7994YUXXF3lgLK9UzsH+rL8LQwNDT1Tm5YefGjUxUkIAFQOz/hI7513ntqYKjWxl9jH5Gd6Cz0Sa8ebNHwGhcZg0GgMx9ji1pYyNwMaRRBUs3ByvjrQShzWqr13tdHPiomhAHSeiX3OxMP3nZztzTK0VbocKciQIjgCjc3n8bg6eDw+h0EmoCiJYR3dvnZiNMfFzCV55Pjd0yUyERlBUYQpsnUtW3zm3GZffbyRnXdAcmaCPYonMTjXN0In4hCMwpKmDR3f7ExwtPArXrz9dF+qOYtwsJOjuaqyvzcr2oXP49mEVSzcvVwsNz0oi81xcMmpb1bpav4RnFJqWzP2ZwsVuT9wcoxqHEpz0FUi5Igjqzs7YgAA8CJlZPPKXVvrx7bOnpw8Eiaj4BAAcC9sLQ6VCxAAQEiOacOTxUwqirGFSc39CbpEIGrsl9lYV63a26JVdMVPOjkCUWgWXdGVwWHiAQCoxpLM8duXJ+c2jm3etjXZmCzXaQbNObV19uSZE+tr6xu3D+dKTKkH9+WYoXNa7UBXgb9MKlVlt9x2x2ZCkBUAkWEgyOivLQ3xszE0NBSJODQMQYAgsIuonWlQEzEMx7DwiajobI/iAcJRxjYNjhSprAwNDV3iK+cefGzKX2kMCD6ypbevNMZHJpXKlCndWu1EAQuHkoWSjMkzp2dLAw0NDT2iq9p78j2YgBCoLF5UbV5tVrxMJDI0NOIxibqAAk/jCIytwuuWZopcyDdpyu2cc51nFJ7iUThxYqjQytxKFlEzXBdKJ2EAgHBl8U0DTfmBfB7P2DO5//RGZ7Typ7PYJI5P8dRwluPeKwbSsKL6Ug8SXR43PDOTHyE3NDS01xRNnj47kCQ2wJFZPFHRREu2QmpmaCgSCg63hd4BIdI9C1pKZM5GGAIAGDu0Zma4yMKIxxNZRbcvri+Uu9ywDbfCn/CMwvNsk5p+pMp8z+Shey7e1ROluD6R5JjWPb1+amtzqdFGREMBgMSXZHeNtyXweDyenU/Z0uZ8Y4z5IftglGsriBDy/IRGyV6ql6XGJAQlsgxzVEn/f7h3jxHNksaIc/A85yVOpiEA3DBTowxzvh+P56fwf9XLyZOEAiBcK5cXg93aGTRLGtPHzue3muAtMyIAPVwa/GWET58x3ZJhMePlPmfGJgFCNFee9lE2m/D8eLwAG/fXw4IWaQQKgtCIZGPyzg+FYkQi0FAg4IhG5vJ2F1mbgGpJo1lSiFQUAUBI1i73BXk0clmWNJoT1/G2QI9WHNFO4PhMVNQLDtYhlt6vh7rVmxo2SRWjphSUYjwSGPCYnYk7jWbJsz2qivqzh7kjHgEwLLAXhAl4fiKTLB/VebEIBcBheJGhTZ6bx7SxboskNoYAAB5HEJApe3tIJvNw+808ECOu+aiHLPLwW8dQdkZm6kUBAMDheb2+/mME/OFFdkWGdseDoy7FRjxpbqi4fqRLozErnT3bifi9bxrezLugtb8k4D/TPOSWqHJCQuLly79++ulnnnzyqSeefOrSpbefffY5pdQBeO4pZZU5XtuJJkQY1j7e4q7cdnJE/CpHytWWPDwAAEog4hG+o11+dUaojXLkzs3C+EQvdWpcttf29WL7lU+dee7lh4eTJfuq1eLpYfXjRV48OgYAgBFIeIqZLGvwtuMbazo2TpyeLA922q6lZxTRsXbP08/f3R5mujcrhDFM4ptHsuVUXSCBIxBxTAe/0onTJ3YbOX5qKEdhTtW93yZl4vS5Jx4/UeXNvkH/jGAcl/iGqeOnjh/fmGnuOdkTbW9+0GwU28Etv7kjXFdvn+CUUtuSkbxPlX/k5BjdPJ4jp+2pcnsMAGBGboHJ2amuHA6bYx6SkhYX7ERDAMC9qKsi2kWEgU6VR3SqzBIlt42m6AIz1Ngvo7GuKnhviz/p5EhkmvmXTy4t1UXsCAfHMm7owadvnypSGXM40iNVjUXZ3tupbYxIZ7LZbA7bp2CqPdvR+JCJOIaNZ8nYqfXVJe3mndrBwkhr+vZ2w5pyUqS21+0EkeWSM1gVREQBgGgkTq5tDWECRxlVXFcWsNOxGwQ2DLcFehsDxbtl9eRtt68vLy4tLS2v33b7CW2tFwZANQooGaj0xwMAsKRhBfWVQdufdc+NydX4/VRFZJwse2wsT3mzqny9kyOCJ4fUHT158rhWe+z42XMPnpzK19lFIijZxjtvYOPUiRNbc10jp7pTgt14P9kgieNdPPkjVa7Kd3HwiCo6UuC7W5acgMfvZieP9JVGCW66vjNC4thG149vTVe4iXa8OoFAc8kZWF47vnV0fmWlsXKg7Kc9I/fzk06OFOFPqTIgKIbhMOyHKV+MzGCx+YZRFdNdue5kPAKAoBxzTf3i1tbxraXR2a22/KL4g83CSARhj2/Qa6Ghr6lD3giP+L2LKR4ASJwQz+BnHHf6dryoU67oMaWhGCVN6vVCeNhratWFsOivAiQuJARQXJbSf5JE2okoUQqGoACAsVMdlRsOupUSzGKZ84g1FwNclDLo3cjot9Wq11Sq10M1f44MP26CY+AJaUr1pbCwt0ND3w4NfVsT+bqXNFs3Zc+3y5XYZV/nh8Go8Hbv4zLZO1fD0s7tAWu2Edt8wcujFME7msnv9bEVAz3LSd5vSjE2Fy9Z2O14oiMEDNWFCGSSaMg/+HV1yGvq0Lc0mncUxtvHyzRSyRWt14/5HM2kd6ki3w4LfTs09O2wsLdD1evmJNbepBBZYuF8j+zw2uwAhrJ7nS109q44PK/H13/0RqoMKI5DJAtEdqd83LoNaDvLTnACptlyoOplhfm+QRrKkUVU9fQk2d9iM6FfiluiyvHx8e+8887jjz/+yCOPPvLIo2++9aunn35GIbEHjktKeWWu904mRxjeOd6qkOyswfEp78uS7U+i0MxsIsqmO+PjGjd7YiqX5iuzkkLNAABQItM1qWVi8/677puq9HPg72YxUKq6pj95/3cTQTEimboPGmXb7R1HYfvlDs2fvPf0HUN5cjPW7n1GM4yu64zev5YBwXBECm1/I2SibhaaQDcIq5hbvf2u4yc7U6z4lJsauqEoSjFQVXUW2TvyD/oA3dIzr3koVbdsi6bMLqtJDzbd+7Mkq7UoxG7n+4SSmCHVS/VhOp3jKOMauvLlAMB1DSusLvfSnVPj8JLy3CgnEgCIU4Y7cj2EeAAAumvpWEMYkwgo3TiuYaHMBwAAMDN1RkNd0j5/D1NNcXFK0N4KMCDQeR65PSNT/WlS6t6rLPOE9oXZvhTdrjhEJDW25ziSgcrhGfJ2pv3wAa3D1bb2Bzo54kkkFodFwaEoiiImQdVDg7ma7T2JaS/JcrUlAADGNDI3ZONQIBt4FY3WBuIBALjOERVt9QFkoMujiuvKgnc2YRDYNNLh7SYEsCvsafP3syPhEGTfXBzQjf3yu/J08sJyCswsL/beHjT4FSeXxPkbAABQ+GZGfMrujDgiyRodybqxufA24syWolD7fX0LhicQiCQiwcA2qKSn3Be5/lZAUZTEdMmuqvBX2xyUwRZ6Zg+OVxhv37qIqU9qc09zgIjhGVueVhy8u56OwBIJeVQCCoAgGSO18cYsAACSgYmZgH7wDYuS6Fahhe3zK80xjj9RERpBMTzTyT2/qjX8xn2jPK+zMPCHhtoIyyyu/vovGgBgRCqbb8Rn7Z1nYAr37h22eUbfRB6Vupe4RFEUTzELSaxIz/c48GhwGa7qp8XGFjgERSme1q5POhsDAFC5ao/A+60Z20MlnKBKJm8WEq2tXJ9yk8XTUBTBBALJE+72YiICKC5J4b9Kp+yOCRlkmiURA4SRYCud3q6azcxzknZacADAzcn9lLm5Pw5DkeuMIwk4PBO/98PA7cz1ihwrnB3zKAAAVDLdloqnILRcT48+Ln2nU8RMbNzuNmeKWKbT7q6ZgEot5Wc9rKyBmS+WdRgRDUyctNYOUbsnAUe2ppCpGDHXLeRxB6EQRTCMGmTr+oh0x3qVYxqtdOliAwDgCFQbOomFAoZiNPx1e0jdN8ePkjnuCq+p6yfe8DiCMY1hTcZTd9/Hc3jSw0mly8WQRHN+yqydDDaCYjwqw4ZK5ux2uDiiIZXC3v4sLsnNZ53PtwQAjGBmKH3AL+BuewPq/u0RzLzyO4ZKff5jlwnfKlV+++13Hnvs8YcffuThhx958823nn76GYVCAsByS6lsbc0Pl8ukMllc6fidD5xIi1VSSRyhlYOyaOxod0aAh1wqdjDRXSOKsXXe0pmZqowwd7eak/fOF6qMAKhcx/i22559ZDZJxmApK7UPPrJeG+jAJuBYxo4ufpWTa20Jrkq5xNFWxDjwsHFMoTJ7+K7n7usNsqRxgrpPP3LfXL6LOQOPNzBX+Grqp1YaImRyZ4m9BZ96YCMEjrFfxcIDz5yqlQsZvITpc4/e3n/EXnSw+RuRJbJ0kEnETk7ixJqx+nQ3o4MbB4JIqk6vKVHJ5c5hGbVtDQUeIgAAsoGxrVghT+2aH6hIDFZIHUyIeAyAyHSKbayNdpY7ewRH1/UMxYsBAAjmPsmlLWVxcplUJo8tayxLC7QiAgAIAkrKU8KClXKZc2HXfImaT0EBgG7ocqSxSiOTy/2jMpo72kJ1q70YPEtHhTy6anCwrTTWzVlsSaPgAceJ777tkXMrmmAPmUQidnIwYW93PVwbRdXgRPURudxZnVNYmZjqjAA4RWZOTbena1zkMllISe94c7oV/8Al6Gaefr1L47mejk5OTpKwnI622iTXbZM+n4qW7oqkILlcmtu5OF0bziEhKM0lb3KhMUou91CVzt5z78mJfIWIwZFGlLT2lEbJZVKZLDK/7+y5M/mpngwqQRLfMNpZGOQhETs5OYmdHGyMWDgC2zG4aOBoX7IFl0Wgi6Mr+iaHMmS6jIs0Oa+zvTzOWS5PqJlY7M52EBGAaWznJFV6pHZtrHeluLtIHW2NDr7Xdi9Z59xA5RGVQupgSiTs9kgIx9xdk9e/1JNkxCYAAOAoHFM7uVTsKJZo8tubyxMlB45eAKPx4xtm5jvyZDK5Iii2YWK+NNkVAHiKqNb+gdIED7lMKpPH1Qwv9hQ5i4gAgIR3DHVlBrs6O/tUD6/257ofNCuOUuUp3fc/ea4mP0IuFYslMmsRVaeTKNvEwdFJLBYrvIMru8aTFYeNRClcUzuxQp7Ru9RfEhPoLLE3xmMIIBjXQix1D45qmFqq0zjLnMyNdwM2oV/23DMfPjGR6L573AH5fUMtCYFucrnctXx4baRUTcEDIDiywEoqFjuJxb7RWY2tjSrLn94HAEDoOW7+Z0xMwrhcL6H93WExn/qLvagEILMD/GO+8vcY4PH8eXx/e+c2uW00AVzs3c44OhXxuF5ckyFfzX9pvMr5VAqCMkykDwW4NQr4/jy+2sz6joDgDUsOk2I84OH3qMLMnEBgUkymffzOOluICRjCsVry85qzMPbmcr24XC8DjgMJPSzENLBq8fA6Zifw51vN+QafkwkcMEBMFGfcxYVGfH8eL9jIaNzVoxSj+JjLHw0JGmawVOYuz6udY6iCMpnHPVKROd2w09PnDierYD7Pn8drdgu84Govp7AzXP1OGRkGcbl+ho4PaWKu+DgoqAQAALrwiIvv/RKRP9+s0zXoGU/LoBs8FoIZ86zWvaVB179qYeT4UlLJfwfYRe3FVNQ0uaLFzCSAzwuVer4kNRHuLCah0rmLkfn/He3fv3t9OWadXj7HHcz9eTx/W+WTwd6zBjQqYMZ2Ph8nxr1ibqLh8by5Bu7bj4pgLFl4dW9vwqGLzf69uSWqnJiYePny5SeffOqxxx5/7LHHf3Xx0jPPPKtQKAEAOI5h5YMb2qX5paXFhvra3v7h0SJLoVdEVc/syuLc7OzC4vL8eH+6q24szLBQFba1JDmhBCvf7PKqSFsAxDKgoHNh/dhaW7IjR+KZ1za1pl3qTnfl0l1Su8fmlufnZucWl7QzQy1xP15LvwNdFlXdv3RMu1wbZcpUhNb1zR1dmmmMFbPYvoWj0/MLc7Ozc4sra1NdZeqDk2IGHqmto8vaxZkSNZ/pkdA9trg6O1alsTgwdBAo4mpG1rVL80sr2vYUG8ENvgIcS4fy8aPLK9qN0ZpIxXZGwdQ3rXVifXVxdmZ2bmFhca43k8cmAwCOREloHZtb1q7NDtbE7GY1adYeOX3HtEvzS9r1/jxfu91Vql4ZlaNLx1YX5yZLg2g7i35IbF5m79zisvbYVGde8HZq0cApqHxoXbs0OzMzOze/rB0vtzNjAsOjoHN0YXl+dmZmfnF5bmIgw2139SlBaJfYrl1Z1a6P1Cbu7DhINCl9i+srS0srI4VmosOWyxpYiysmji4vzM/PL2k3hkpU4r1YzUpd3j29pl2en61Wc3UTFTi6U0LH9MLKymxPd2NuQcvyUEOcBA8kC7+CvnXdndbUVN/dOzpVLbFkA4B/Xv3EknZpfn5peX68N8ONYeCc3LmwrJ3uKvN35jokta6tHZvvKgq2JwMACFwS60bXtavL2vYj9kICAIAstX1kbnVpfnZmZnZ+STs33Jp88L0GJj6pu5dsfmFxvi+Lz9nuvjAKK6R8an55dXGkPdOHBwBAN/fI7VnXXbGBEj+7GxgXoTSupnpucWl1fWk4P3Evl2zhFdI+v7GyML+0utaeJjPcHSvKj3SOzB3VLk4M5LjhD45yidaqvI4F7dLczMzs3Pzi0kpjnCUHDwAo0SNzcHJ+eXlZOzfamiQ/fPcsAnM6Jndv14XprjQWFQOUHFg8PrewOD83MzO/dGxppDjFfecTHGlIxdTZ8RI/+32Lo+zj6vtnj66uLM6NtsRvr9/HM4wiapYWFxeWVo9Ntmf6m/546/uhmU34BLykVr0UEHCHQnkuwOeUFRuIDAfn4Dc9FacCA58LVl8I9ug3YhEBAG+QK/d+MUR9ITj4AaXytJ/vswpLCxwAoDRb9yeCgy+o1BcCvY9ZsACIUgvnJ0NDz/s6F3O4UjPZQ2Gh5wOUVQZUFAAMHeb8VRdUwReCVRcC/aeM8Yf6NZN9LZ0fDgu5EBJ6lwPfcTt+pxyReT2lUl8IVl0I9r/PTsgm85u9gs+H+t8utk1h292h9hqzsoizcj0f4FLEwoBpWucdfEEdfEGlesnVWkZEAQAY5vO+gS+pVS/6+59VKh8K8N600kki3kHoeEdoyIWQsEflFoE3fOwXwZsLrMdsfjhMFHLN5gOinpaZeO5PUhuLtf6qCyHBL/pJk3B78xEkMrPaI/xFL1nuvutrJLBa9Au7oAq+EOI/Z8AUAABQU+VeT6lULwQGng9WXQj2v9deiAPAqFaqqtGpat//ZEMvnSrfc889n3766ddff/P5519cu/bp1avX3n//L5cuXX7rrUuvvfrGSy+98tTTz7366hs3q8rJycm/+93vzr9w/tlnn3vmmWffufzr555/3tXlxotC9OjRo+dfA4IzMHEaV0e86W6tYTN+1mfZ9dwqSCK7mMK6JOfDH4L7N0enyvfff/+1a9e+//77r776+q9//fKLL778+OOrv/3tu5cv/+bipXfefPPiy6+8/qu3Lp09e8ebb755Y1VOS0t777333njjjZdffuXChZd///s/nH/xRTe3n7nEgR49evT80xAoNg7u53y87w7wO2lr4X3jD+jR8y8Bj8dfunTp+eeff/HFF1977bWXX3nlwoULFy68fP78ed0C6ieeePLxx5947LHHH330sbNn7/jNb36zvLx8A1XOzs7+4IMPLl/+9cVLly5evPjBB395+eVXPDw8fumD1aNHjx49ev6fBofDXb58+U9/+tMTTzxx33333X///fc/sP1z7twDD5x74Ny5c+fOnXvg3AOPPvroK6+8cvXq1fn5+Ruocm5u7kcfXfnjH//47rvv/u53v7t69eprr73u5eX1Sx+snl8ID4B2gKHrfxoB/pPnhvTo0aPnn0Gnyl9++eW1a9e+/urrv+/j22+/1f2rQ/f7N998Mzs7ewNVzs/Pv3r1kw8//Oj999//85///MUXf33zzbd8fHx+6YPV8wuxDPAbgMXrf/4/gBssFdKjR4+e/3XoVPmLL7746KOPPvvssy/28de//lX37y5/+9vfvv766xurclFR0aeffvrJJ1c/+ujKhx9+9NVXX/3qV3onx//FrAJ0/OjFVwD06//06NGj53puiSoXFxd//vnnn3766SeffPLxxx///Zu/X7p06X+ZKhMNvNI7e/qHOspDPH8hN5vrwUzcIyPUUqObrER1sxgoomLdb+AeA8sAQz968Q2AGxeF0qNHj57/XdwSVS4pKfn8888///zza9euXb169dtvv7106ZK/v//2NkXyhIqByYmJ8cro/YZ+tprKzq6eohDL656iJBm4prSOj09MtxepxXvFXDgyTWnH1MTY6FBRMI++pzRGQYU9g2OTA23FIVZ7jTBMA3O7JiYmppoy3S33Cj0aeqU2dI81JspZ+yqKoQRiRFXP8NjEcGtJuOP19doploE5LdMT42OTdfFORmQA4CgTylsGR0dGRgZ72zNcybrHrEk8t/SO1eWBrMScmrbOrmqXG8nWDyBwTKOrR5vywh1/Nns4tkte20Bjmoz9czqs2IRXTN9x/vy5raH26ijJwZ4zelXWo0ePnpvjFqryF1988emnn167du277757++23t1WZ7RTX0NPcVKLRhFd0TlSnehiRAQCM/XOmJ4dy+7XzJW6MXaUmcu0Tq4dGW8PDNZnlze0NeS4CAACyvbq5d6i6ICUsNKSqZ6o02p5LAACM7JrcPz0QqQmPSkzrHBgItwMAAIqJR25zb3+dRqPJr+9pKYt3ZAMAMJWJg8MDRcPr83XhVgbbgoJRWCHFvTO9uaFh0ZmFk4sLlYE7ZXpRkSJtcH6mpSwtLCw03NuJz8ABgHnS2FR3Vlp0SIgqyF9mhMMAAKjGQeUzs9VeZACgSmLLW8t8/rHH6zAyyzeranG5M/RnKiqHtwir7WpN9+H9c5Gypa9C7Sn9Yfkqp4jBvrb4MH9fVUzv2gO90bQDBV+vynr06NFzc/ykKus0+Msvv9T9q/vlH85g/2SsLPQ5Uhh7OzsAACAASURBVNtY4StAAQCxTOpqyHKzpgMAzchBaiWiqKr6spXMnQoxVBOnlNbhHGcaAADNOb2sPldlBADsoMqeulQXDgCAIKZ/pj7KmgWAELwqx5oidYXYaPL41t5cMQAw7b3zW7sTbIgAANyA8prKOA8eABD4VlIbQ4J3QVtBsI3BdniO4IjGdgornRbyfXJ7R0vcAAAAbxacU1fRlGL9AwcK8/j+hnjB9XpFNrROae5LMCayrOJbN8+cXOxLk+MFioDmueMbfYWeNkwAsFLnd06srQxmi3gU4PqX943Pzs8vzo23lWzbNPHsbUoGx6tSCoaXl1e0c60ZfmZ7W7ZQF3ZMHWuNMeMS4GYwcM9p6KiK3e/q4JlePrKgXV6cnx4v9iKheDw1uWOkt68pPb1qdm5+SbvYVxUnJgEgRm5HGrYeuuu+s6dWZ2cXlrVtqTJD3UAqaWgo20lXM5QqtDZiH2zQqFdlPXr06Lk5fqzKf/vb37799tvvvvvuu+++2119/fXXX3/55Zf/wGqvzz77TDev/MnHH//973+/dOmSv58fAFiGpJTkp8l0ussKbB6o93Ax2t0birpuKNdlV5WZVpKsxs4wnWMOzja2tCk/0w0AMJo8vmpg5bY17bJ2Y7XbV2FGxAGCJ2kahjLEukibYRVc1tsVDwA8uW9+Ta2fTjiJspzG5oTofY4C7kV9JWprgx+XHqSYS2KzGpO4Otnhu8VUjK/NDw4srhzdmK+LlmzbzJjE9KxsbG6trWqX5iZKfMh4AKAYWx2paUp1k6RWDZaUxmVXN+a740lcn6bBsfY8LwMaAQGg8i2SeleGC9WGVJy6rq8jJ9Tb1dXNO6hwcKmrSoMA8Ozlg/c9fWqqKctXqXRPqBgeaElw3Sl1J82duOvFd89UiY23dRYhMIPKFpfm+2vCMIxlGZLXUh9rt3MkBOuwmvb2DO+9g/TKrJ4fq4oMcFEqFF6lvXMtyUwyztw1YPKhx85oO7OcFUqX0PS2gcEytRmQOSZ2aa0VXbVFIc7OCqWLgymLjAEAkNjh1ZPTK9qBVMkhHgcAoFdlPXr06LlZfqDK33333a9//eu4uLjIyMjo6OjExMTKysqJiYk33njjv/7rv25WlQsLiz777LNr1659/PHHV65c+eabby5e3F6DbaFOKSvOUuikjhPUPNLs7mqyvS8InhZynSozrCRZzT2ROtXG28VVtuVnewAAYqlJSY+N93Owt7cPyK+IdzdnIQA4UnjDSK6CozNUswmt7O07AgBcmW9BfUOQzryO7Jzb2hYfI907AZ7FvT9WZYxlHdq4sDCS47ddtxZnHVCx+OQLJ3ozQx0c5EntfbV+rqYIACBklsjM1s7e3lHimtsxWxxIRIAosoiraC6JVNQNNAcqHIPz6yuDDAAIPpnRKUFylSp1+miP3NwrpizPyYmPcYOHTt15enNpdnp6enbxxH0P3KmtdATgiT371pZKfLbtbDj+ebWV6b7bZi8EGocvMuYxCNvhKZHmXzw73pTsm9y6cHTz+Op8d6aSt1Nyl+eZWd9RG2O967LD9WtqrQx13TGOoYlSu0bjbUkUBqdqab05ctvbnCyOLGyoi7cBAJCnhObFBf3I/49sYGxuF1I+sbK6ujhV6EvSx8p69OjR8z/kB6r85ZdffvXVV3fccUdAQEBUVFRtbe3S0tILL7zw+eeff/311zerygUFBdeuXbty5cpf/vKXDz744Msvv3zrrbd8fX0BwDggr6mx1FfnACTQtDbluzvuzZ0Sg2oGsuSUHYmkmSlyO6aydE+1Eh0TC6rzo20AwCq2tDxVtT3hq8jvLlbbsAGAFFK30qjRCSzDLrSyr9wbANiOqrL23jhdYpvuXlBZkRBgsrtFcC3sLgo025eCxhiGARVT81MdSeK9CW68dWD76om2fC+dRobWNVZn+oowIJLJu2JHECR0j+cScEAUWKTUd0TbcaUJLSu3nbrrtrmCeDkAWEUmZR1p7qtKrbptNTWld7Ex1sqMBjjfuslWV3dHQ5FQJBTyeRwWk0oAEEqcm8c6Qncs06iu6eXlmYHbFfgRBEVRdK/iO4LSDPgsEgIYjW9mbmbEZ+7uOckupLK9I8tzzyEVBKHtTTkKq92FZPiQhtF0J6qBUFAxNZK2Y96ImnklV9QnOwIAeGTHlKaECAEAUBKNRsFjCIB7XmOWry2XxjV3cg8oHx5OsTnIf0ivynr06NFzk/xkBvv//J//88ILL/T09DzwwAN//OMfv//++6+//vofmFfOzc27cuXj999//7333vvDH/7w2WefvfHGG97e3gCAsl3jMjIS1dZCodAvp7+9KMSWhQAAkc7hCU0sk7tna0JtTflcNhUAEKKhNCS3IkMmEArFqqyGltoQKxQADHzyq0tT1BKhQCDgh9f0F6utDRAAjCVLayjyMxEJje1c8jum8jxxAIBQbHxicwsSHIVCoTK2srU+z9MIBQA8hcnli4QRjZNNSR4OIr4BHUURjGmSO3bm+GqLk52FEc/AgMPWWZ4BRpDH5PX0V4VKhUKhV2FjmY+/FQYQXNI22ZossRAKBSbBRSNTdRoSAgjDNKJmoiPeAgDH5IssLE0N6AQAQK1ColvW7+rSKKIyisfPblU7m1AQAEJg6UhfqdpMwGazWGw2i0EjETC8hWeo9sH7+yoiBAKB0MQrtXugO8vPcFv2HJK71u4/v1JgJ7qBzQvK90it72iMttqvlyghrKaxPj3Q0VAgEAhMzWPrB3JYdIzIErSeODvfmykQCARCoVtUcGVVqhMGACBPSm9vLvA3FAo90rvm+4qdTQgAroXjR4+fOXXytpPHV+emq9QMfaysR48ePf9TdlX5ypUrn3/+uW7d9VdfffX999+//fbbL7300vfff//VV1/9Y6u9srOz//Lhh+/+7t1f//rXly9fvnLlymuvvubp6QkAAIiDOm5k8+zW5vEzExXu1kxdV65I7ZzRntjc3Dq+tXliY2WoPkoXCXIsHBuWT25snjyz3JcdZLW9yhe1CCnoWT5zYmNtY+NEf5qdSCcICJGa/n/bO/MgOa7zsM9iAezSkilXZOwF2BVFviphKqlyHDGHnaRil8txVGWLcskmlcTlqthVSjl0iYxCSSRxLMAkVMJINkRgd+feORaABFICCRDc3dk5e47u6bt7+p7unnN3Z+/FUiBVqvzxXvf0zO7ioCjTDvtXXdjBzOv3vvcd73vvdffM2b+cCUai3r+68Cf/0npSZ2DiH/2zF7xzwVDk2sWv/d4/hantF377zy68Gg+FgqFgIBjwvjr51Mc//lPHf+UP/lcwPhcNvHrp8kww+upLf/E7v2Sp6sjov/iDr168NjsbvvqNL/36pz4x4PF4jj/ysd9/9tylYGQ2MHPxwh9/8tHjAx6Px/OJT3/26W9efPY3f/7n/snvPPH82f/6r055PB6P55F/8HvPvXz+Tx8fGTj1779y/i8+//fBnvDg0E8/+eL/mfKH/F5fYHb6G1974vFP/t0/Ouu9dOmVycm/DAQCoVjwf/75Zx/7mJ1af/lzz12cm//mf/zFMedPp+1j8OOPffaZc5N/8nj/3dNHxv/Nf7lwMTgb8PkCvunpL//uJwc8nqM//eifXbz8P85849KlKV8wEvrm1/7o8b8DVHjk5ONPPX/xWmQ2NPe/v/Qbj/3s0cEBj+fIsaGfevRn//mXLk4+9QvjsOOH4GZlFxcXlwfDzsorKysbGxtbFru7u3t7ezs7O+A+L/vNB/rGzS8+9ZSu6zRF4zheLpd1XS8UCp/5jPUTqgNHjg0NDw8PDzkeTB48dnxoeHj4+DHwd+h494bjo8eHh4eHh4/37I8ODB4Dbw8P9TwmewSUHhrqLT1gVzLQLXlsaPiR4aHjx46DJo8NDAx4jhw9duzoMavu4aH+VsEHxwYHuo0Ogt446/Z4Hj35b//8/wYCodi3z/3n3/6lQesW7yODg4NHBjwez8DgoGMH2jNw9PjQcLfNwYEjR48PHR0cPArlHjp2xNnLgSODg0ePDh4ZuPddVo/+yr/+0//2tT/8xwf9qKutv+Hh44MDnoHBo5/+zK9PBqae/Xf/8Jc/PT48PDx03Pnc+MCRo8dA13t3qQf+3u8+/ce/8Yn73AruZmUXFxeXB8POyuCi8raDnZ2dnZ0d538fNCt/4QtfUGSlVCrlkTySQyRJymazv/ZrH7lfchxwXvv9m82xjz36hy+88u1L075LLz/9nz7oX7W77PGc3vcm6n7jpouLi0s/ICuDjevtXkBK3nHwoFn585//vCAImUwmuZRcSiyxLJdKpX71V92V0UeVGY/npsfzRO/RcdfKLi4uLv0cPXqU4zjwbSG7vdy5cwf8a7O3t/dAWfmJJ56oVCpLS0sLCwvzb8/TFL20tPTYY4/dXxyX/y/5nMfzmsdzs/f4jsez71krFxcXFxdVVe/evfuDH/zg3fvx3nvv/ehHP/rWt76Vz+fvk5V5nk8kEvPzC2+/PU+SZCaT+a3f+s0TJ06Mjo6Ojo6OjI6MjoyMjI6MjI6OjB7MyOgIZHTksDIWY4Dx8fHxiYmJiYmTJ09OTExMTEyMj4+NjY+NjcEqR6zWxsbGxrvFYdHx8W7RUbv1B5BhxJLVKZIt2mi3ztHRsdHRsTHw5x4dsfsDDoDVMwtLaEf3RkZGRk5ARk50hXfUPe7stVX1+NjY2IHy2D0cHRkZgR09RNh78TNjY4+MjT0yOjo8Ojo8OjI8Mjo8Mjo0OnriXm1a4k70Mg6qPKx0n5q6OrpfFw+TYfwwxsa7HRzttXJPDaPg835RrZr7undyn0N2Tx05gANknZg4OTFx8uTJU6dOnrLoc5iDFNhjz243J/r9Dup13FHVwyv2vow4RwBnHFoadMZ6n7VtyZ3KtccEWKZX6z0OY9cCKji477DnD+5UDgUf7lM9HnV4VWOwRsc7jlqtPvWEjdNetoZtTpwYOdE/YHRjqquGU6dOnTr1c4Cfd/kJ8alPfWpubu6tt966cePGGw/ArVu3Xn75ZZqm9/b2Ds/Kn/ucJIlLS0uLi4nFhUSxWGQY5vr1787MzPj9fr/f7/P7fD6fz+/z+f0+v4OA3x/w+/0+n8/n9Xm93hmv1+v1eb0+UB6UCfgDAViPD7wRDAZDoVA4PDs7G4lEo9F4PB6LxyLRSDgM77H2B/xe78yMd8bn8/kDgUAwCMpHo9FYLBaNRiOzs+FQKBiAzXu9Mz14Z2a8Xq8PCuLA6wX1glJeb6+sPdLCjvv9oOf7qrLOCgQCgWAgGAwGg8FQKBiCXYtEo7FYfG5uLh6fi8fj8VgsFo1GZsOhYDAAZfbOzMzMTANmpi3RvT6fL+D3B4PBcDg8G4lEozFINBqNRCKzs7PhUCgUCAQClrwBaImAQ+4eGYEOg6EQkC4cDofC4VAf4XAoHA6GQ8FgKBiEUkJ9OTTl63UBoH9/IBAIhkLh2dlIJBKJRKPRWCwai0UjkdlQKBwMBoC3+IA6fdAHgJpisdjcXPzKlbm5uXg8Bk0bDgWDwQAwhd2THkN4oc/ZHgd6GQoFQQcBoZDVTdipYCAQCDi8FlbR9QOf3aLXB13IqT/gtDbRSCQSicyGw+FgKBgM+v1+aNfp6enpqampy5cvX758+dLU5ctTU1NTU1PT09MzVlvBUCgEQiAWi8fjV67MXb129dq1a1evXp27MhePx6AyLF30EOzaMxQOh2etaIrF4vH43Nzc3NzclStXr169evXKlbm5eCwanZ2dDYVCIVsHVvz2urztQf5+S/v8B8ZAnzXs2IJjgc/n9wegraORaDQajcbi8XgsFo9FI7ORcJ/7WR4U6fp6OAx9dhao3qolFo1Go7OzkdlwOBQKhkJB6/NYLBaLxWPxeDw+F4/GIpYG/T3eZBvY6/N6u69AT4CbA6MHg3bQ9DhWKHSQRx08TFijiP1OACrFHgOjsagD0HErBnxwgJuenp6ZngJuNXX58vT0NBzFHD4asgaNaCwen5u7cvXqtWvf+e53r1+/fv36a6+99trrFt97WF5/vzx0S38LCYfDwQfG5/MtLi52Op3NzU07K7/77rs9Wfn3n3wSRTEEyafTmUw6iyAIRVGappkOdPtVzTBqBvjXMA3DNHRD1/WqpmmapmiaqlU1rVqt6nq1WtUNw6zVjFrNME0dYpi1Wq1WrzebzVar1W4vr6ysdlZXVpZbrWa9XjdNo6pXtaomq4osy4qqatVq1TDMeq3eaDSbLfC1oM1Go2aaRrWqaZqiKJIkiX1IsizLsqIoiqKoigoB/5clSZJAAVmRZUWGn2uaVtW0qqZpqqZpqqZYJ0BkRQEnKIqjclXTVK1arYJeG4ZumLV6o9FqryyvrK52Vlc7ndXVzurq6srycqtZr9UMXder1aqmqaqqWGKqiqqqQHWGYZpmrdZoNtvt9vIKqACwsrKy3Gq1Go16rVYzazXTBIdpGmYfhmGahmnWarV6vV6v1xqNRrPZbLda7S5NQKvZbLXAy0azUa/XazXTNPVqVVNVVVFlRVUVTdUAerWq92AZul5vNFvtdnt5eWV5ZXV1ZXV1ud1uNRoN0zSAejRNA0o2dNM0641Gq91eXl1dBY/er6+vrVmO0GjUajXDMAy96kSvajq0kappqgZMqioqkK5a1Q1DNwzD0gBE16HKq1pVUzVVU1VgQUmWel1HkkRJEkVREAShIlQqQkUQBUmURGgkFfi2AU0EMXS9qmmqosiSKFQqPMexNE1TFEUSBI7jeJkkCIokaZpmWZavVARRlGVZ1TTdMOqNRrPVWl5Z7qytrW9sgq+x39jYWFvrrK6sLC+3W81mvV43bVPXTLNm1uq1eqMOTNpqt2w/WVtbW9/YgF+HD+4G3dqCv9MKa6rVajWoHNMwTMM0DcOhKsPQ++yrA6XqOlBjH1Vdr+owakDgqMDKKnhd1UE8NFutdrvVarfa7eXl5eXldrPRqNVM3TKwVq0C3eqGAdQLWgNuA8UwzVqtAfy50ajX63XTNHVdBwGoG4ZRq9UazUaz2WwBT2w3m42aaerVqqoqqiorMHSB6eEhOw84KChwOLCc3YDh5IwvQ6/q0K1BLNvjhGy1AaNbBk3LiiLJkqTIINotR6rV6o2mFYqARr1eM01D16uaqimKLIlipVLhOJ5jOZZlaJphGJ7nBUEQJUlWFMWW1TRNUF17eXl1dW19fXNzC95jtLe39w7kBw/PO+8XZyV37969e/fu/k1dwA8/Mty9e3dzc7PjwDTNnqz8wksvvfzyN1iWKxZLJRTFUAxF0VIvRfAH7R5FtFgsFYulQqFYyOeRHJLL5jLZbDaLZLMIguTzSD5fKBZLKFpC0WKpVLRAUQwrl8s4SVI0zTAMy/IVnmUZiiTKZawIastm0ulUKp1KZ9I5BMkXikUUxco4QZIMwzA0TeA4WirBoplUMplMJBKJxGIikUgsJRJLiaWlZDKZTKXT6Uwmk81kLTKZTCqVTkHSqVQ6nc6k09lMJpvN5HI5JJdDcrlcNpfLZDKZbDadyWQymXQ6k06l02l4SiqVSiaTyRSUMJPNZLLZbC6byeWyCJJF8oUSWiYIimZZrsLzfIXnKzzHcwxNkXgZKxYKeQRBstlcNptOp4GMoIocks8XCoVSqYRhZYKgaJrlOa5S4So8x7Ecx7IsDQZ7DMNKqG0Pp4V6QFEMw8pYuVwmCIIkKZqmGYZhGJphaIamADRF0TRJUSRFkiSB42UMs7Sbyzo7mEMQJJ/PFwqFYrFYLBaKxUKhUCgUiqUShpVxgqSARVkWSEtTJIGXS6ViPp9HECSXQ0At4AwcJ2ma4TheEARZliRJqHAsQ1MkgRNlDENLxWKhkM8X8jaFPFLII3kkBx0ul81lM9lsJgNFK+ShPJZgAFAHkkNyOXhKOpNJpVLJZCqZTC4tLS0lEonFxUQCHouLCwsLC/ML8/ML8wuLCwuLC4uLi4mlpWQqlc5kLCsBZy4Vgctms5l0OplILMy/ffvWzTffuPH9773++vXvfufatWvXrl6/fv31733vxhtv3Lp56+3bby8sLi4lk+lsFsnnSxiGEwTF0lyFFyVJURVZlSVJFIQKz7EMQ5MEUS5jztAroSUMw8p4mSAIkrLCiON4nhdFUZYVFcyMramQJIkVnqNpmgC2xdASiMeSdQBLFguFQr5QyOfBn4Kly57DqdV8Pp9H8uDRDSSH5LJIDgA8OZvLI0i+WEIxnCBIiqIZimZommEZhqYpHMfRUslhFnjkEATJI0geyeVymWwGBgiosVgslEolFEUxDMMwFC0VCgUEQdLZNDRKsVQq4xhOEARBUSRNkTheLhUL+Vwmm06lU8l0CsZucim5ZB1J60ilkumU3aAlC/C8XorFYrFYAv0HHchms5l0Jp1Op+HwkoSkkqlUMpVKptOpZAo0m0ylUqlMJpPNwsGthKJlHMcJgiBIkqRIEi+X0VKpAEbCZHJpcWHh7du3b968+eabb77xxo3vf//GjTdu3Xprfn4+kUiAgS6TzWYRJF8oFEsYVsZxkqJZriKIMpgZgRlNvd5oNMBk7mFpHET9nvQVticdYEmwbLFisfoRA+Rj8IONr7zySk9WvjI398Uv/gccx2VZAdN57jB4juN5nuc5nmc5luVYlmUZlqEZmqLBmE6SFElSFBz9reEZAGvmeb5SqQiiaK1YFVWRZVkQKjzPMQxN0xRJEHi5XC6XcQInQWUsy3JcRRDA2qbC8yzDUCRJEDheBlmkm5pKpSIKEhuO42C5QnQpl0Hd5XIZL5dxHCdwnMBxnCBIkiBJgiQIEpQE58KyWLmMHQiKYiiKYSiGlTCQBHGCpBiW4wURrMgVWVYVWZEkUajwPMuCdEiSFAkaIiGW3miW5Xi+IgiCJMmKomoaXOirsiyDpV2F5/ke0xxsNJ7nK3ylUhEEQRQESRIlSban8r1IkiRJkiCIArAEyzIMTZIkQeAECUcLiu4aFswRABzH8ZWKIEqSpIDFgaLIigw6DCb3cAJAkhRJUTTNwC6KkqwomqaBRRFYbYLmeZZhGQYsC4BiaJoBB5hHUGAeQZBQul7ILkDTJEkQBA7WrjgwKIZhGIqhVpKyASMvGI8RQB7J5/OFYrFYKpVQDCuXgb9QFE1RFEEQOFZG0VKxkEdy2XQ6tZRILM7Pv337rVs3b968+ebt27fn5xcSiaVkKp3J5ZB8vlgqoSAfWxMTSZIUVdV0XQM7TyrY1BEFoVKpdFXNsizLsc4wAqslsLbTdd0wzVq9XrOHxlpN16uqqkiSBL4mCEQiwzLdw5qnWQpmwNSNYRiGYVmG7cM6gQZQNHUANA1yMDCzIEqiJEuyLEpwM4LnOJahYQDjveFVxrAyhqJosdSd9qFYuUyQBEmBMGEYmqZpkiRxHMcwDCuXcYKAnsVyHMdVKrxQAcFGEni5jKFlsOBA4fQVRcEMBy2hKApXI6Bxa1BwRCbZC0XbHk2R9nCB447hYv8wgaKgqRJoECxPLDeCYvN8pSIIAs9xDE1TJEngVnrOgLSeTC4tJRYXE4mldDqdyyHAkTCw0sFxa+bNshwviKKsqFXdMM2aWauBrZXWj8dD5ey+MvtT8v583PnocefOHVEUn3zyyZ6snM/nv/KV//7cc89xHNfpdAzDOHjYVhRZVRRVVRVVUdXuPpAkiZIoiqIgCoIowO0/URAlWexuCYHdXxnkYEXVVLDpCPd9dU2Du4rg9IpQgVkcjj2CKEkS2NCGm0WyZKcmlmXgso90jAlwAeFMUM5M1jf3YFmO5Xie5XmO5zi+9yOWORh7SCJJkMpJAidJkqRphuUrgiTJcF9c08D2raLIsiQBVUF4oVIBr0Q4TwE6U1WtWtWsTa7uXqy1+d23tS5bydZ6DXbmFUWFW+Oavcdl9AM3Jg1rZ71a1RRVAbMfQFdGS8r93qGCFZpja7NarWoaSC2i1WFQUTeVaFq1qoPdYNMwwU6wqsiyJMnQrURJFPu2mQVBFARRFEShAhTYA29hWb3C8xVo4t68Ak1I9yZxsjvIdkfXMla2AUsxkmJYluV4juUYhqFpCixxsFKpUMjnspl0KplcSiwsLMzPzycSS6lUOpvNIflCEUUxsHNBUTRY41YqoigpsmJt1doXBqrwIsL+iRS8eKJqGtgjNuGFoXpz/zqoXq+ZhqFXq2CXFXiKdABgA7+P7r5u7/ytaxMQ+ELP9SNgNEmUJFlVFFWrVvWqrsMwsONXqHAsCxK8Pa23Js94GS9jZQzF0BKKYuUyToDAgrMSnuN4HsQm7VwDcHASCjZ34ZYDmBbS1sjQhaJp6w2mdzICfKV35ts7lPBwysvvGy4OHDEsT+s2CSYuDGOlYxgWMrwkJwgVnudZlqEovIyhxUIhn8sjuVwuB5bZhUIRxTCSpOwNMGuCzPMVoSKIErhKolvXsX6SWfkea+UDE/NhC+UPOUP+9bK1tfXuu+/Ksvz8889//etf78nKmqYtLCx8+ctffvrpp1999VVZkt95553dh2Fnd2dnZ2d7Z2fb/ioT8HJ3Z3d3d+eAM+7s7t7ZtR/g2tsD1djfhLK1vdWD/ST2LngCzC4Jf0164yA2rZ+e3rR/eNrCfrf36Cm46eDA+jc2NjY21tfX19fW1tbWOmtrnbW1tVXwZ219c3Nze3vL8eT47u6drtw73YfM7W9+cT5ovrvb1c3e3jvv7PUCNPcQFnLWdj/u7N25Y4sKpAOPwttmtWTc38h+MS279j9cD6qwxYK/Qbq3B86wNbVzENvbO9vbUHU72ztbB7F5T/pNuG7b0YkzglY7ndUOvMDf6XSAkdfXYQ1r6+tr62trnU5nZXllud1ut5rNJrj6XzNNsw7vo2i328tgBFpz1gDcbqf71T9OukF2oFX3bPUdernQoduH8ZkHwAp8aBDbN/pdxBITxLwVv9BG6+sb6xtd9QNtr66urq7C8XoZDNngdBMvPAAAAqZJREFUqvn6+vr6xjqM7q7t1oEdN5wxv7m9bbmBs2DPORsb6wcHtu0o4E+f/zh9bGtra8sxgDzIiOEUATS2sbm5udUzCoDBbWtzc2N9fa0DbzJYXm632+1mq9VqtVdWVjqdTreSjT4hYWWWl7zv68Lvnx7fdGBfYN5/jfmjww9/+ENFUaampp555pmvfvWrN27c6MnKzWbTNM1MJnP58uUXXnjh2WeevXDhwvmfOBfOg2YuQCYn7Y8mz08eftqFfukmJycnJyfhH4vzfW+cP+CUycnz9mGX31fmHpyfnDx37ty5s2fPnj177tzZc+fOgtdnz549t7/Z96/VD9wcF+7BB1fx+znrx2rdyQOYDxro8A/P3YsDT5icBB5w5syZM2dOnz59+sUXX3zxxRdPnz595syZM9A1Djr7Hh7/ANzLnh+sWn9c+frj9zCln3VwL70datVD6z/vLAYOUPL8vkHkfg10Xz/AydYZhzvS+R7R+86wnMpyrNOnoUom9yvl3CSs167lvg7yofFSLx+2OH99vPTSS88+++xzzz03MzNz+/ZtBEF6svLW1lan02k0GqqqFgqFK1euhEIhr9c7PT196dKlV13ux7cP4sMWyuXD5ECXcH3iwXHq69vgvx+qPB8qB3uT61R/q7l06dLU1NTrr7+ezWYRBCmVSj1ZeW9vb3t7GyRm0zRVVeV5niAIDMNKpZLzfksXFxcXFxeXHxPrTv5isVgkCIJl2Z6sfPfu3b29PbBibrfbtVpN0zRRFMH9MuA+hYNusnRxcXFxcXF5OOANhgzDcVylUpFluVqt9mTl9957DyTm7e3t9fX11dXVdrsN1s32U/wuLi4uLi4uHwj2AzG1Wq3ZbC4vL/dkZRcXFxcXF5cPHTcru7i4uLi4/E3h/wEdScs0CPzRpgAAAABJRU5ErkJggg==\" /></p>\r\n<p> </p>\r\n<p>A presto con il prossimo step!</p>\r\n<p>Valeria Guarino,Daniela Marino.</p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:1696:\"<p>Salve ragazzi!<br />\nSiamo Valeria e Daniela,oggi abbiamo cominciato per la prima volta a lavorare per il nostro progetto di tirocinio.<br />\nIntendiamo postare step by step le fasi del nostro lavoro.<br />\nCominciamo con l’installazione di TomCat 7.0.32 che ci servirà in seguito.<br />\nSperiamo possa essere utile a qualcuno questo post!<br />\nEcco la lista dei comandi che permetteranno di aver installato sul proprio account il seguente programma.<br />\n <br />\nCominciamo:<br /><strong>cat README</strong><br /><em>“attiviamo java nel nostro ambiente di lavoro”</em><br /><strong>source/opt/java/sourceme</strong><br /><em>“successivamente creamo due cartelle”</em><br /><strong>mkdir dist</strong><br /><strong>mkdir opt</strong><br /><em>“Ci spostiamo nella cartella dist per installare il programma”</em><br /><strong>cd dist/</strong><br /><em>“Scarichiamo l’eseguibile dal sito di tomcat”</em><br /><strong>wget <a href=\"http://mirror.nohup.it/apache/tomcat/tomcat-7/v7.0.32/bin/apache-tomcat-7.0.32.tar.gz\">http://mirror.nohup.it/apache/tomcat/tomcat-7/v7.0.32/bin/apache-tomcat-...</a></strong><br /><em>“Procediamo all’estrazione e all’installazione del pacchetto”</em><br /><strong>tar -xvzf apache-tom-7.0.32.tar.gz</strong><br /><strong>mv apache-tomcat-7.0.32 ../opt/</strong><br /><strong>cd..</strong><br /><strong>cd opt/</strong><br /><strong>cd apache-tomcat-7.0.32/</strong><br /><strong>cd bin/</strong><br /><strong>./startup.sh</strong><br /><strong>./shutdown.sh</strong><br /><strong>Exit</strong><br />\n <br />\nL\'installazione è completata!</p>\n<p> <br />\nA presto con il prossimo step!<br />\nValeria Guarino,Daniela Marino.</p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434760822,1),('field:node:195','a:2:{s:15:\"taxonomy_forums\";a:1:{s:3:\"und\";a:1:{i:0;a:1:{s:3:\"tid\";s:1:\"8\";}}}s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:808:\"<p>Pubblicata la versione 2.0 dell'APP Uniparthenope Servizi ... come sempre disponibile du GooglePlay ...</p>\r\n<p>Grazie a tutti per la collaborazione ed il testing ...</p>\r\n<p>Obiettivo => "migliorare ... :)" <img alt=\"laugh\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/teeth_smile.gif\" title=\"laugh\" width=\"20\" /></p>\r\n<p> </p>\r\n<p>Modificate alcune funzionalità e inserite di nuove:</p>\r\n<ul>\r\n <li>\r\n accesso ownCloud Parthenope</li>\r\n <li>\r\n Visualizzazione pagamenti tasse universitarie</li>\r\n <li>\r\n Nuovi layout per dispositivi a bassa risoluzione</li>\r\n <li>\r\n Nuovo layout Consultazione servizio Autobus (Transit)</li>\r\n <li>\r\n Nuova gestione del login e del logout</li>\r\n</ul>\r\n<p> </p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:13:\"filtered_html\";s:10:\"safe_value\";s:578:\"<p>Pubblicata la versione 2.0 dell\'APP Uniparthenope Servizi ... come sempre disponibile du GooglePlay ...<br />\nGrazie a tutti per la collaborazione ed il testing ...<br />\nObiettivo => \"migliorare ... :)\" <br />\n <br />\nModificate alcune funzionalità e inserite di nuove:</p>\n<ul><li>\n accesso ownCloud Parthenope</li>\n<li>\n Visualizzazione pagamenti tasse universitarie</li>\n<li>\n Nuovi layout per dispositivi a bassa risoluzione</li>\n<li>\n Nuovo layout Consultazione servizio Autobus (Transit)</li>\n<li>\n Nuova gestione del login e del logout</li>\n</ul><p> </p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434747657,1),('field:node:196','a:1:{s:4:\"body\";a:1:{s:3:\"und\";a:1:{i:0;a:5:{s:5:\"value\";s:7653:\"<p><u>- Nome dell'API</u><br />\r\n <strong>API Rest - Get Schedule</strong></p>\r\n<address>\r\n <u>- Descrizione sintetica</u><br />\r\n <strong>Le seguenti API restituiscono l'organizzazione settimanale degli orari degli insegnamenti dei corsi di laurea Uniparthenope.<br />\r\n Attualmente sono recuperabili solo il corso di Informatica (codice: 0124) ed il corso di Scienze Biologiche (codice:0 123).</strong></address>\r\n<address>\r\n <u>- URL</u><br />\r\n http://students.uniparthenope.it:10003/orario.json?corso=[CODICE CORSO]<br />\r\n <strong>Oppure con l'aggiunta delle opzioni :</strong><br />\r\n http://students.uniparthenope.it:10003/orario.json?corso=[CODICE CORSO]&anno=[1,2,3]&semestre=[1,2]<br />\r\n http://students.uniparthenope.it:10003/orario.json?corso=[CODICE CORSO]&anno=[1,2,3]&semestre=[1,2]&giorno=[Lun, Mar, Mer, Gio, Ven]<br />\r\n <br />\r\n <strong>L'ulr di esempio restituirà l'orario annuale per il corso di Informatica</strong><br />\r\n <a href=\"http://students.uniparthenope.it:10003/orario.json?corso=0124\">http://students.uniparthenope.it:10003/orario.json?corso=0124</a><br />\r\n </address>\r\n<address>\r\n <u>- Elenco dei metodi esposti con sintassi e breve descrizione ed esempio da linea di comando usando curl</u><br />\r\n <strong>Con Get-Times si ha anche la possibilità di selezionare dati filtrati, passando tramite il metodo "GET" nell'url CORSO, ANNO e SEMESTRE:</strong><br />\r\n <a href=\"http://students.uniparthenope.it:10003/orario.json?corso=0123&anno=2&semestre=1\">http://students.uniparthenope.it:10003/orario.json?corso=0123&anno=2&semestre=1</a></address>\r\n<address>\r\n <strong>Ed una maggior selezione specificando anche il GIORNO:</strong><br />\r\n <a href=\"http://students.uniparthenope.it:10003/orario.json?corso=0123&anno=2&semestre=1&giorno=Lun\">http://students.uniparthenope.it:10003/orario.json?corso=0123&anno=2&semestre=1&giorno=Lun</a></address>\r\n<br />\r\n<address>\r\n <strong>Esempio lettura file JSON in android:</strong></address>\r\n<address>\r\n <pre>\r\n</pre>\r\n <table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\r\n <tbody>\r\n <tr>\r\n <td>\r\n <div>\r\n {</div>\r\n <div>\r\n url="http://students.uniparthenope.it:10003/orario.json?corso=0124&anno=1&semestre=1&giorno=Lun";</div>\r\n <div>\r\n String read = readJSON(url);</div>\r\n <div>\r\n <span class=\"Apple-tab-span\"> </span>try {</div>\r\n <div>\r\n <span class=\"Apple-tab-span\"> </span>JSONArray jsonArray = new JSONArray(read);</div>\r\n <div>\r\n <span class=\"Apple-tab-span\"> </span>for (int i = 0; i < jsonArray.length(); i++) {</div>\r\n <div>\r\n <span class=\"Apple-tab-span\"> </span>JSONObject jsonObject = jsonArray.getJSONObject(i); </div>\r\n <div>\r\n <span class=\"Apple-tab-span\"> </span>jsonObject.getInt("Laboratorio");</div>\r\n <div>\r\n jsonObject.getString("nome_corso");</div>\r\n <div>\r\n }</div>\r\n <div>\r\n }</div>\r\n <div>\r\n <span class=\"Apple-tab-span\"> </span></div>\r\n <div>\r\n public String readJSON(String URL) {</div>\r\n <div>\r\n StringBuilder builder = new StringBuilder();</div>\r\n <div>\r\n HttpClient client = new DefaultHttpClient();</div>\r\n <div>\r\n HttpGet httpGet = new HttpGet(URL);</div>\r\n <div>\r\n try {</div>\r\n <div>\r\n HttpResponse response = client.execute(httpGet);</div>\r\n <div>\r\n StatusLine statusLine = response.getStatusLine();</div>\r\n <div>\r\n int statusCode = statusLine.getStatusCode();</div>\r\n <div>\r\n if (statusCode == 200) {</div>\r\n <div>\r\n HttpEntity entity = response.getEntity();</div>\r\n <div>\r\n InputStream content = entity.getContent();</div>\r\n <div>\r\n BufferedReader reader = new BufferedReader(new InputStreamReader(content));</div>\r\n <div>\r\n String line;</div>\r\n <div>\r\n while ((line = reader.readLine()) != null) {</div>\r\n <div>\r\n builder.append(line);</div>\r\n <div>\r\n }</div>\r\n <div>\r\n } else {</div>\r\n <div>\r\n Log.e( Prova01Activity.class.toString(), "Failed to download file");</div>\r\n <div>\r\n }</div>\r\n <div>\r\n } catch (ClientProtocolException e) {</div>\r\n <div>\r\n e.printStackTrace();</div>\r\n <div>\r\n } catch (IOException e) {</div>\r\n <div>\r\n e.printStackTrace();</div>\r\n <div>\r\n }</div>\r\n <div>\r\n return builder.toString();</div>\r\n <div>\r\n }</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</address>\r\n<address>\r\n <em><u>- Eventuali note</u><br />\r\n I campi di ogni record del file JSON sono:</em><br />\r\n <strong><span>."corso": </span></strong><br />\r\n <span>Nome del corso di appartenenza dell'orario</span><br />\r\n <br />\r\n <strong><span>."cod": </span></strong><br />\r\n <span>Codice identificativo dell'insegnamento</span><br />\r\n <br />\r\n <strong><span>."nome_corso":</span></strong><br />\r\n <span>Nome dell'insegnamento</span><br />\r\n <br />\r\n <strong><span>."c_prefix": </span></strong><br />\r\n <span>Codice identificativo del corso di laurea in questione</span><br />\r\n <br />\r\n <strong><span>."cod_piano": </span></strong><br />\r\n <span>Codice identificativo per un definito Indirizzo del corso di laurea</span><br />\r\n <br />\r\n <strong><span>."anno": </span></strong><br />\r\n <span>Anno di appartenenza dell'insegnamento (1, 2, 3)</span><br />\r\n <br />\r\n <strong><span>."semestre": </span></strong><br />\r\n <span>Semestre di appartenenza dell'insegnamento (1, 2)</span><br />\r\n <br />\r\n <strong><span>."giorno": </span></strong><br />\r\n <span>Giorno in cui ha luogo la lezione dell'insegnamento in questione (Lun, Mar, Mer, Gio, Ven)</span><br />\r\n <br />\r\n <strong><span>."ora1": </span></strong><br />\r\n <span>Ora in cui ha luogo la lezione dell'insegnamento in questione (1 = "08:30 - 09:30", 2="09:30 - 10:30" e cosi via)</span><br />\r\n <br />\r\n <strong><span>."aula": </span></strong><br />\r\n <span>Aula in cui ha luogo l'insegnamento in questione</span><br />\r\n <br />\r\n <strong><span>."Laboratorio": </span></strong><br />\r\n <span>Valore binario (0 indica che non è ora di laboratorio, 1 indica che è ora di laboratorio)</span><br />\r\n <br />\r\n <strong><span>."nome":</span></strong><br />\r\n <span>Nome del corso di appartenenza dell'insegnamento in questione</span></address>\r\n<p> </p>\r\n\";s:7:\"summary\";s:0:\"\";s:6:\"format\";s:9:\"full_html\";s:10:\"safe_value\";s:6619:\"<p><u>- Nome dell\'API</u><br /><strong>API Rest - Get Schedule</strong></p>\n<address>\n <u>- Descrizione sintetica</u><br /><strong>Le seguenti API restituiscono l\'organizzazione settimanale degli orari degli insegnamenti dei corsi di laurea Uniparthenope.<br />\n Attualmente sono recuperabili solo il corso di Informatica (codice: 0124) ed il corso di Scienze Biologiche (codice:0 123).</strong></address>\n<address>\n <u>- URL</u><br /><a href=\"http://students.uniparthenope.it:10003/orario.json?corso=[CODICE\">http://students.uniparthenope.it:10003/orario.json?corso=[CODICE</a> CORSO]<br /><strong>Oppure con l\'aggiunta delle opzioni :</strong><br /><a href=\"http://students.uniparthenope.it:10003/orario.json?corso=[CODICE\">http://students.uniparthenope.it:10003/orario.json?corso=[CODICE</a> CORSO]&anno=[1,2,3]&semestre=[1,2]<br /><a href=\"http://students.uniparthenope.it:10003/orario.json?corso=[CODICE\">http://students.uniparthenope.it:10003/orario.json?corso=[CODICE</a> CORSO]&anno=[1,2,3]&semestre=[1,2]&giorno=[Lun, Mar, Mer, Gio, Ven]\n<p> <strong>L\'ulr di esempio restituirà l\'orario annuale per il corso di Informatica</strong><br /><a href=\"http://students.uniparthenope.it:10003/orario.json?corso=0124\">http://students.uniparthenope.it:10003/orario.json?corso=0124</a><br />\n </p></address>\n<address>\n <u>- Elenco dei metodi esposti con sintassi e breve descrizione ed esempio da linea di comando usando curl</u><br /><strong>Con Get-Times si ha anche la possibilità di selezionare dati filtrati, passando tramite il metodo \"GET\" nell\'url CORSO, ANNO e SEMESTRE:</strong><br /><a href=\"http://students.uniparthenope.it:10003/orario.json?corso=0123&anno=2&semestre=1\">http://students.uniparthenope.it:10003/orario.json?corso=0123&anno=2&semestre=1</a></address>\n<address>\n <strong>Ed una maggior selezione specificando anche il GIORNO:</strong><br /><a href=\"http://students.uniparthenope.it:10003/orario.json?corso=0123&anno=2&semestre=1&giorno=Lun\">http://students.uniparthenope.it:10003/orario.json?corso=0123&anno=2&semestre=1&giorno=Lun</a></address>\n<p></p>\n<address>\n <strong>Esempio lettura file JSON in android:</strong></address>\n<address>\n<pre>\n</pre><table border=\"1\" cellpadding=\"1\" cellspacing=\"1\"><tbody><tr><td>\n<div>\n {</div>\n<div>\n url=\"<a href=\"http://students.uniparthenope.it:10003/orario.json?corso=0124&anno=1&semestre=1&giorno=Lun";\">http://students.uniparthenope.it:10003/orario.json?corso=0124&anno=1&sem...</a></div>\n<div>\n String read = readJSON(url);</div>\n<div>\n <span class=\"Apple-tab-span\"> </span>try {</div>\n<div>\n <span class=\"Apple-tab-span\"> </span>JSONArray jsonArray = new JSONArray(read);</div>\n<div>\n <span class=\"Apple-tab-span\"> </span>for (int i = 0; i < jsonArray.length(); i++) {</div>\n<div>\n <span class=\"Apple-tab-span\"> </span>JSONObject jsonObject = jsonArray.getJSONObject(i); </div>\n<div>\n <span class=\"Apple-tab-span\"> </span>jsonObject.getInt(\"Laboratorio\");</div>\n<div>\n jsonObject.getString(\"nome_corso\");</div>\n<div>\n }</div>\n<div>\n }</div>\n<div>\n <span class=\"Apple-tab-span\"> </span></div>\n<div>\n public String readJSON(String URL) {</div>\n<div>\n StringBuilder builder = new StringBuilder();</div>\n<div>\n HttpClient client = new DefaultHttpClient();</div>\n<div>\n HttpGet httpGet = new HttpGet(URL);</div>\n<div>\n try {</div>\n<div>\n HttpResponse response = client.execute(httpGet);</div>\n<div>\n StatusLine statusLine = response.getStatusLine();</div>\n<div>\n int statusCode = statusLine.getStatusCode();</div>\n<div>\n if (statusCode == 200) {</div>\n<div>\n HttpEntity entity = response.getEntity();</div>\n<div>\n InputStream content = entity.getContent();</div>\n<div>\n BufferedReader reader = new BufferedReader(new InputStreamReader(content));</div>\n<div>\n String line;</div>\n<div>\n while ((line = reader.readLine()) != null) {</div>\n<div>\n builder.append(line);</div>\n<div>\n }</div>\n<div>\n } else {</div>\n<div>\n Log.e( Prova01Activity.class.toString(), \"Failed to download file\");</div>\n<div>\n }</div>\n<div>\n } catch (ClientProtocolException e) {</div>\n<div>\n e.printStackTrace();</div>\n<div>\n } catch (IOException e) {</div>\n<div>\n e.printStackTrace();</div>\n<div>\n }</div>\n<div>\n return builder.toString();</div>\n<div>\n }</div>\n</td>\n</tr></tbody></table></address>\n<address>\n <em><u>- Eventuali note</u><br />\n I campi di ogni record del file JSON sono:</em><br /><strong><span>.\"corso\": </span></strong><br /><span>Nome del corso di appartenenza dell\'orario</span>\n<p> <strong><span>.\"cod\": </span></strong><br /><span>Codice identificativo dell\'insegnamento</span></p>\n<p> <strong><span>.\"nome_corso\":</span></strong><br /><span>Nome dell\'insegnamento</span></p>\n<p> <strong><span>.\"c_prefix\": </span></strong><br /><span>Codice identificativo del corso di laurea in questione</span></p>\n<p> <strong><span>.\"cod_piano\": </span></strong><br /><span>Codice identificativo per un definito Indirizzo del corso di laurea</span></p>\n<p> <strong><span>.\"anno\": </span></strong><br /><span>Anno di appartenenza dell\'insegnamento (1, 2, 3)</span></p>\n<p> <strong><span>.\"semestre\": </span></strong><br /><span>Semestre di appartenenza dell\'insegnamento (1, 2)</span></p>\n<p> <strong><span>.\"giorno\": </span></strong><br /><span>Giorno in cui ha luogo la lezione dell\'insegnamento in questione (Lun, Mar, Mer, Gio, Ven)</span></p>\n<p> <strong><span>.\"ora1\": </span></strong><br /><span>Ora in cui ha luogo la lezione dell\'insegnamento in questione (1 = \"08:30 - 09:30\", 2=\"09:30 - 10:30\" e cosi via)</span></p>\n<p> <strong><span>.\"aula\": </span></strong><br /><span>Aula in cui ha luogo l\'insegnamento in questione</span></p>\n<p> <strong><span>.\"Laboratorio\": </span></strong><br /><span>Valore binario (0 indica che non è ora di laboratorio, 1 indica che è ora di laboratorio)</span></p>\n<p> <strong><span>.\"nome\":</span></strong><br /><span>Nome del corso di appartenenza dell\'insegnamento in questione</span></p></address>\n<p> </p>\n\";s:12:\"safe_summary\";s:0:\"\";}}}}',0,1434791222,1);
INSERT INTO `drupal_field_data_body` VALUES ('node','page',0,1,1,'und',0,'<p><strong>Infrastruttura informatica centralizzata per i servizi web di utilità generale prodotti dagli studenti dell’Università di Napoli Parthenope.</strong></p>\r\n<p>Il Progetto Sebeto, attivato nel giugno 2012, è uno dei <a href=\"http://www.centro.uniparthenope.it/cce.asp?mode=dida_inno\">Progetti di Didattica Innovativa</a> basata su strumenti informatici, sostenuti e finanziti dal <a href=\"http://www.centro.uniparthenope.it\">Centro di Calcolo Elettronico di Ateneo</a>.</p>\r\n<p align=\"center\"><img src=\"http://web.uniparthenope.it/sites/default/files/styles/large/public/images/20122510173059.png\" width=\"192\" /></p>\r\n<p> </p>\r\n<p>Inizialmente pensato per gli studenti dei <a href=\"http://informatica.uniparthenope.it\">Corsi di Studio in Informatica</a>, è utilizzabile anche da tutti gli altri studenti dell'<a href=\"http://www.uniparthenope.it\">Ateneo</a>.</p>\r\n<p>Il responsabile scientifico del progetto è il prof. <a href=\"http://dsa.uniparthenope.it/raffaele.montella\">Raffaele Montella</a>.</p>\r\n<p>I docenti eventualmente interessati a coinvolgere i loro studenti nel progetto devono contattare il prof. Montella (raffaele.montella@uniparthenope.it).</p>\r\n<p> </p>\r\n<p>L'accesso alle risorse offerte da questo portale è consentito a tutti gli studenti dell'Università di Napoli Parthenope inserendo le proprie credenziali di accesso già usate per il portale http://www.servizi.uniparthenope.it e per la connessone wifi.</p>\r\n<p> </p>\r\n<p><a href=\"/?q=node/9\">Dettagli</a></p>\r\n<p><a href=\"/?q=node/10\">Il fiume Sebeto</a></p>\r\n<p><a href=\"/?q=node/2\">Persone</a></p>\r\n<p> </p>\r\n<p>Per informazioni relative a contenuti, proprietà intellettuale, licenze software e responsabilità, fare click <a href=\"http://students.uniparthenope.it/?q=node/8\">qui</a>.</p>\r\n','','full_html'),('node','page',0,2,2,'und',0,'<p><strong>Responsabile scientifico:</strong> Dr. Raffaele Montella - raffaele.montella@uniparthenope.it</p>\r\n<p><strong>Responsabile tecnico:</strong> Antonello Cioffi - antonello.cioffi@uniparthenope.it</p>\r\n<p><strong>Staff:</strong></p>\r\n<ul>\r\n <li>\r\n Giuseppe Agrillo - giuseppe.agrillo@uniparthenope.it</li>\r\n <li>\r\n Giuliano Intrito - giuliano.intrito@uniparthenope.it</li>\r\n <li>\r\n Nunzio Napolitano - nunzio.napolitano@uniparthenope.it</li>\r\n <li>\r\n Carlo Palmieri - carlo.palmieri@studenti.uniparthenope.it</li>\r\n</ul>\r\n<p><strong>Collaboratori:</strong></p>\r\n<ul>\r\n <li>\r\n Francesca Lucarelli - francesca.lucarelli@studenti.uniparthenope.it</li>\r\n <li>\r\n Fabio Nisci - fabio.nisci@studenti.uniparthenope.it</li>\r\n <li>\r\n Rosario Pellecchia - rosario.pellecchia@uniparthenope.it</li>\r\n <li>\r\n Mirko Zammartino - mirko.zammartino@studenti.uniparthenope.it</li>\r\n</ul>\r\n<p> </p>\r\n<p><strong>Strutture:</strong></p>\r\n<ul>\r\n <li>\r\n Centro di Calcolo [<a href=\"http://www.centro.uniparthenope.it\" target=\"_blank\">...</a>]</li>\r\n <li>\r\n Centro Campano per il Monitoraggio e la Modellistica Marina e Atmosferica [<a href=\"http://meteo.uniparthenope.it\" target=\"_blank\">...</a>]</li>\r\n <li>\r\n Ufficio Servizi Informatici Studenti e Docenti [<a href=\"http://www.uniparthenope.it/index.php/it/servizi/servizi-informatici\" target=\"_blank\">...</a>]</li>\r\n</ul>\r\n<p>Altri progetti di supporto alla didattica innovativa del <a href=\"http://www.centro.uniparthenope.it/cce.asp?mode=dida_inno\">Centro di Calcolo</a> dell'Università di Napoli Parthenope.</p>\r\n','','full_html'),('node','page',0,3,3,'und',0,'<p>In questa pagina sono riportati i collegamenti ai migliori contributi creativi da parte degli studenti coinvolti nel progetto.</p>\r\n<p>Per aggiungere la propria applicazione a quelle segnalate in questa pagina, fare click <a href=\"/node/add/product\">qui</a>.</p>\r\n<p><a href=\"/products\">Elenco completo</a><br />\r\n </p>\r\n<p>Un elenco degli spazi web degli utenti del portale è consultabile <a href=\"/?q=userhomes\">qui</a>.</p>\r\n<hr />\r\n<table border=\"0\">\r\n <tbody>\r\n <tr>\r\n <td>\r\n <a href=\"/?q=node/92\"><img alt=\"\" heigh=\"64\" src=\"/sites/default/files/styles/large/public/images/20121307082412.png\" width=\"64\" /></a></td>\r\n <td>\r\n <strong><a href=\"/?q=node/92\">UniParthenope – Servizi agli Studenti</a></strong><br />\r\n Applicazione mobile - Android</td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <a href=\"https://play.google.com/store/apps/details?id=pp.app.orientamento&feature=search_result#?t=W251bGwsMSwyLDEsInBwLmFwcC5vcmllbnRhbWVudG8iXQ..\"><img alt=\"\" heigh=\"64\" src=\"/sites/default/files/styles/large/public/images/20121307082412.png\" width=\"64\" /></a></td>\r\n <td>\r\n <strong><a href=\"https://play.google.com/store/apps/details?id=pp.app.orientamento&feature=search_result#?t=W251bGwsMSwyLDEsInBwLmFwcC5vcmllbnRhbWVudG8iXQ..\">UniParthenope – Orientamento e Offerta Formativa</a></strong><br />\r\n Applicazione mobile - Android</td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <a href=\"https://itunes.apple.com/it/app/id571062892?mt=8&affId=403275\"><img alt=\"\" heigh=\"64\" src=\"/sites/default/files/styles/large/public/images/20121307082412.png\" width=\"64\" /></a></td>\r\n <td>\r\n <strong><a href=\"https://itunes.apple.com/it/app/id571062892?mt=8&affId=403275\">UniParthenope – Servizi agli Studenti</a></strong><br />\r\n Applicazione mobile - iPhone</td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<hr />\r\n<p> </p>\r\n','','full_html'),('node','page',0,4,4,'und',0,'<p>1. Accedere al portale in modalità utente registrato</p>\r\n<ol>\r\n <li>\r\n Fare click su <a href=\"/?q=node/login\">Sign In</a></li>\r\n <li>\r\n Inserire le proprie credenziali universitarie: matricola numerica 10 cifre e password servizi/uniparthenope</li>\r\n <li>\r\n Se l'accesso avviene per la prima volta sarà creato l'utente locale in maniera automatica</li>\r\n <li>\r\n Modificare le impostazioni del proprio account scegliendo i servizi da attivare</li>\r\n</ol>\r\n<p>L'attivazione dei servizi è soggetta ad approvazione dei responsabili. 2. Attivazione dei servizi</p>\r\n<ol>\r\n <li>\r\n Accedere al portale come utente registrato</li>\r\n <li>\r\n Utilizzare l'apposito modulo per l'attivazione o la disattivazione dei servizi</li>\r\n</ol>\r\n<p>3. Accesso tramite client SSH</p>\r\n<ol>\r\n <li>\r\n Essere sicuri di aver attivato il servizio web hosting</li>\r\n <li>\r\n A seconda del sistema operativo adoperato:\r\n <ul>\r\n <li>\r\n Windows: usare un client SSH come Putty</li>\r\n <li>\r\n Linux: da terminale digitare ssh MATRICOLA@students.uniparthenope.it</li>\r\n <li>\r\n OSX: da terminale digitare ssh MATRICOLA@students.uniparthenope.it</li>\r\n </ul>\r\n </li>\r\n</ol>\r\n<p>4. Contenuti web in ambiente Linux Sono nella directory public_html nella propria home. Il file README contiene le credenziali di accesso per il database. Il database è amministrabile tramite l'interfaccia <a href=\"http://web.uniparthenope.it/phpmyadmin\">web</a>. La propria home web è raggiungibile all'indirizzo http://students.uniparthenope.it/~MATRICOLA 5. Impostare l'ambiente Java (da accesso via ssh) source /opt/java/sourceme 6. Installare software in spazio utente</p>\r\n<ol>\r\n <li>\r\n Se non presente creare la directory $HOME/opt: mkdir $HOME/opt</li>\r\n <li>\r\n Se non presente creare la directory $HOME/dist: mkdir $HOME/dist</li>\r\n <li>\r\n Entrare in $HOME/dist: cd $HOME/dist</li>\r\n <li>\r\n Scaricare in $HOME/dist il file di distribuzione del software da installare: wget miofile-x.y.z.tar.gz</li>\r\n <li>\r\n Decompattare l'archivio: tar -xvzf miofile-x.y.z.tar.gz</li>\r\n <li>\r\n Spostare la directory del software in $HOME/opt: mv miofile-x.y.z $HOME/opt/</li>\r\n</ol>\r\n<p>7. Gestione del db I database MySql sono attivi per tutti gli utenti. Le credenziali di accesso sono nel file $HOME/README: cat $HOME/README Esempio: Nome Utente: ms_NOMEUTENTE Password: PASSWORD (numero casuale) Database: ms_NOMEUTENTE Per accedere a MySql attraverso la shell, usare il sequente comando mysql --user=ms_NOMEUTENTE --password=PASSWORD L'accesso al db è possibile attraverso l'apposita interfaccia web di gestione raggiungibile all'url: http://students.uniparthenope.it/phpmyadmin/ ATTENZIONE: Le credenziali per l'accesso al database MySql si riferiscono esclusivamente a questo e non influiscono in alcun modo con le credenziali di accesso alla macchina server. ATTENZIONE: Nella cartella public_html vanno inseriti esclusivamente tutti i file che sono letti o scritti dall'applicazione web</p>\r\n','','filtered_html'),('node','page',0,5,5,'und',0,'Il seguente software è stato provato con successo sulla piattaforma.\r\n\r\nDrupal\r\nhttp://www.drupal.org\r\n\r\nApache Tomcat - Application container\r\nhttp://tomcat.apache.org/\r\n\r\nRestlet - Api REST framework - Java\r\nhttp://www.restlet.org/\r\n\r\nJersey - Api REST framework - Java\r\nhttp://jersey.java.net/\r\n\r\nFRAPI - Api REST framework - PHP\r\nhttp://frapi.github.com/\r\n\r\nHibernate - Persistenza di oggetti\r\nhttp://www.hibernate.org/','','filtered_html'),('node','forum',0,6,6,'und',0,'Siamo alla ricerca di un logo per questo portale!\r\nChi ha capacità artistiche e voglia di collaborare?\r\n','','filtered_html'),('node','blog',0,7,7,'und',0,'Questo è un buon punto di partenza:\r\n\r\nhttp://mobiledrupal.com/content/overview-mobile-modules-drupal\r\n','','filtered_html'),('node','page',0,8,8,'und',0,'<p><strong>Informazioni dettagliate sul "Progetto Sebeto"</strong></p>\r\n<p> </p>\r\n<p><a href=\"/?q=node/9\">Dettagli</a></p>\r\n<p><a href=\"/?q=node/10\">Il fiume Sebeto</a></p>\r\n<p><a href=\"/?q=node/2\">Persone</a></p>\r\n<hr />\r\n<p><strong>Licenze</strong></p>\r\n<p>Tutto il materiale pubblicato sul portale del Progetto Sebeto è da intendersi aderente alla filosofia Open Source / Creative Commons.</p>\r\n<p>A tale proposito si riportano le seguenti licenze in lingua originale.</p>\r\n<p> </p>\r\n<p><a href=\"http://web.uniparthenope.it/?q=node/183\">GNU General Public License</a></p>\r\n<p><a href=\"http://web.uniparthenope.it/?q=node/184\">The GNU Lesser General Public License</a></p>\r\n<p><a href=\"http://web.uniparthenope.it/?q=node/185\">The GNU Free Documentation License</a></p>\r\n<p> </p>\r\n<p>Fonte: <a href=\"http://www.gnu.org/licenses/\">http://www.gnu.org/licenses/</a></p>\r\n<hr />\r\n<p><strong>Responsabilità</strong></p>\r\n<p>Le informazioni su questo sito sono fornite così come riportate senza alcuna garanzia, espressa o implicita, incluse, e non solo, le garanzie di commerciabilità, di appropriatezza ad un particolare scopo, o di non violazione. E’ possibile che le informazioni riportate in questo sito possano contenere imperfezioni tecniche o errori di stampa per cui l'Università Parthenope, il Centro di Calcolo Elettronico ed il Responsabile Scientifico declinano ogni responsabilità. Le informazioni potranno essere modificate o aggiornate senza preavviso alcuno. Il gestore potrà, inoltre, apportare modifiche e miglioramenti ai programmi descritti nel sito in qualsiasi momento senza alcun obbligo di preavviso. I “link” contenuti nel portale comportano la possibilità di abbandonare il sito. I siti a cui si accede tramite questi link non sono sotto il controllo dell'Università, di conseguenza, il questa non è responsabile per i contenuti di tali siti collegati o di siti a loro volta in essi contenuti, o per qualsiasi cambiamento o aggiornamento fatto in tali siti.</p>\r\n<p>Gli utenti con diritto di pubblicazione di contenuti agiscono sotto la propria responsabilità.</p>\r\n<hr />\r\n<p><strong>Copyright</strong></p>\r\n<p>Tutti gli utenti del sito potranno scaricare o stampare tutto o parte del materiale contenuto in questo sito solamente per un uso personale e non commerciale, impegnandosi a non modificare o alterare in alcun modo il materiale in esso contenuto, cancellare o modificare documenti coperti dal diritto di autore o marchi di fabbrica. Tutto il materiale contenuto nel sito è messo a disposizione solamente per il perseguimento di fini conformi alla legge. Nessuna delle informazioni contenute in questo sito potrà essere copiata, distribuita o trasmessa per un uso commerciale senza il consenso espresso dell'Università e/o dei detentori della relativa proprietà intellettuale. </p>\r\n<hr />\r\n<p> </p>\r\n<p><strong>Pubblicità</strong></p>\r\n<p>A meno di specifici accordi intercorsi fra il soggetto proponente l'oggetto della pubblicità e l'Università, non è consentito inserire pubblicità nelle pagine/applicazioni web presenti nello spazio di hosting fornito da questo progetto, in applicazioni per dispositivi mobili e attraverso componenti software sviluppati come API REST.</p>\r\n<p>In particolare è fatto divieto di pubblicizzare prodotti, servizi, attività commerciali, soggetti politici, etc a mezzo banner ed altri contenuti di qualsivoglia natura come, ad esempio, Google Ads e iAds.</p>\r\n<hr />\r\n<p><strong>Applicazioni su dispositivi mobili ("Apps")</strong></p>\r\n<p>Le applicazioni sviluppate nell'ambito di questo progetto devono riportare la seguente dicitura nella relativa descrizione:</p>\r\n<p>"Applicazione realizzata presso l'Università di Napoli Parthenope e con il sostegno del Progetto Sebeto del Centro di Calcolo Elettronico della stessa università"</p>\r\n<p>Sono individuabili 3 categorie di applicazioni:</p>\r\n<ol>\r\n <li>\r\n Applicazioni sviluppate con il supporto dell'Università e pubblicate sullo Store con il profilo "Università di Napoli Parthenope". Le applicazioni di questo tipo sono di proprietà dell'Università e possono essere utilizzate in maniera gratuita e/o a pagamento. L'applicazione fa utilizzo del nome e del logo dell'Università senza procedura di richiesta autorizzazione.<br />\r\n </li>\r\n <li>\r\n Applicazioni sviluppate in maniera volontaria, in seno a progetti di ricerca o come progetti di esame da studenti, ricercatori, personale tecnico/amministrativo o collaboratori dell'Università. Le applicazioni di questo tipo sono di proprietà dei singoli sviluppatori che devono richiedere l'<strong>uso del nome e del logo dell'Università</strong> ai responsabili del progetto Sebeto e del Centro di Calcolo Elettronico che supporta il Progetto Sebeto. L'applicazione deve essere fornita in maniera GRATUITA, non deve veicolare informazioni pubblicitarie se non preventivamente autorizzate e deve essere pubblicata sullo store con un profilo intestato allo sviluppatore che fa richiesta di uso del nome e del logo dell'Università.<br />\r\n Queste applicazioni devono portare la seguente dicitura:<br />\r\n <br />\r\n <em>Applicazione realizzata presso l'Università Parthenope di Napoli e con il sostegno del Progetto Sebeto del Centro di Calcolo Elettronico della stessa Università.</em><br />\r\n </li>\r\n <li>\r\n Applicazioni sviluppate utilizzando le API uniparthenope e o altre API, ma che <strong>non fanno uso di nome e logo dell'Università</strong>. Per queste applicazioni (che non devono ricadere nei casi 1 e 2) è fatto obbligo di citare le API utilizzate attraverso una dicitura del tipo:<br />\r\n <br />\r\n <em>Questa applicazione fa utilizzo delle seguenti API:</em>\r\n <div>\r\n <em>CCMMMA/uniParthenope - Centro Meteo Campano - http://meteo.uniparthenope.it<br />\r\n Studenti/uniParthenope - Progetto Sebeto - http://students.uniparthenope.it<br />\r\n Map/Google - Google.com - http://https://developers.google.com/maps/<br />\r\n ...</em><br />\r\n <br />\r\n L'elenco delle API qui è riportato a puro titolo di esempio.</div>\r\n </li>\r\n</ol>\r\n<p>Le applicazioni di categoria 1 possono essere sia Open che Closed Source a discrezione dell'Università.<br />\r\n Le applicazioni di categoria 2 e 3 possono essere sia Open che Closed Source a discrezione dello sviluppatore o del management di sviluppo.<br />\r\n Le applicazioni di categoria 3 possono veicolare pubblicità e/o essere a pagamento a discrezione dell'Autore in maniera conforme alla licenza d'uso delle singole API utilizzate.</p>\r\n<p> </p>\r\n<p>Tutte le applicazioni devono essere conformi ai principi morali dell'Università e non devono trasgredire l'ordine di legge.</p>\r\n<p>Un regolamento più articolato per la gestione delle applicazioni è in fase di redazione.</p>\r\n<p> </p>\r\n<div>\r\n <p><strong>Application Program Interface ("API")</strong></p>\r\n</div>\r\n<div>\r\n Le API sono interfacce software stabili e documentate su servizi offerti dall'Università.</div>\r\n<div>\r\n Le API ufficiali sono accessibili tramite lo url http://api.uniparthenope.it</div>\r\n<div>\r\n Una kit di sviluppo/documentazione per le API uniparthenope è di prossimo rilascio.</div>\r\n<div>\r\n Lo sviluppo delle API seguirà una filosofia open definta "apiStore".</div>\r\n<p> </p>\r\n<p>Le API vanno rilasciate come Open Source stando attenti alla gestione delle informazioni ricoperte da privacy di cui i singoli sviluppatori sono responsabili.</p>\r\n<p>Lo sviluppo ed rilascio deve avvenire conformemente alle licenze GPL/LGPL prima indicate.</p>\r\n<p>Tutte le API devono essere conformi ai principi morali dell'Università e non devono trasgredire l'ordine di legge.</p>\r\n<p>Un regolamento più articolato per la gestione delle API è in fase di redazione.</p>\r\n<div>\r\n <p> </p>\r\n <p><strong>Applicazioni Web ("WebApp")</strong></p>\r\n</div>\r\n<div>\r\n Le WebApp sono applicazioni la cui interfaccia è costituita da un portale web il cui hosting è mantenuto da una delle macchine del Progetto Sebeto.</div>\r\n<div>\r\n </div>\r\n<div>\r\n Questa applicazioni sono accessibili attraverso lo spazio web dell'utente all'indirizzo http://students.uniparthenope.it/~[MATRICOLA]/ se su macchina Linux o http://win.uniparthenope.it/[MATRICOLA]/ se su macchina Windows.</div>\r\n<div>\r\n </div>\r\n<div>\r\n Applicazioni particolarmente meritevoli di visibilità possono essere raggiunte tramite l'indirizzo http://web.uniparthenope.it/[APPLICAZIONE]/</div>\r\n<div>\r\n Lo status di applicazione visibile tramite questa modalità è da richiedere al Responsabile Scientifico.</div>\r\n<div>\r\n </div>\r\n<div>\r\n Tutte le WebApp devono avere ben visibile un collegamento ad una pagina che riporta, oltre alle indicazioni circa l'autore o il grippo di autori, anche la seguente dicitura:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <em>Applicazione web realizzata presso l'Università Parthenope di Napoli e con il sostegno del Progetto Sebeto del Centro di Calcolo Elettronico della stessa Università.</em></div>\r\n<div>\r\n </div>\r\n<div>\r\n Nel caso l'applicazione sia stata realizzata nell'ambito di un esame, la dicitura è la seguente:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <em>Applicazione realizzata nell'ambito dell'esame di [NOME ESAME]/Prof.|Prof.ssa [NOME DOCENTE] ( CdL in [NOME DEL CORSO DI LAUREA]) nell'anno accademico [ANNO ACCADEMICO] presso l'Università Parthenope di Napoli e con il sostegno del Progetto Sebeto del Centro di Calcolo Elettronico della stessa Università.</em></div>\r\n<div>\r\n </div>\r\n<div>\r\n Infine, per applicazioni realizzate come tesi di laurea, utilizzare il seguente testo:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <em>Applicazione realizzata come lavoro di tesi in [NOME DEL CORSO DI LAUREA] dal titolo "[TITOLO DELLA TESI]" sotto la guida del Prof.|Prof.ssa [NOME DEL RELATORE] presso l'Università Parthenope di Napoli e con il sostegno del Progetto Sebeto del Centro di Calcolo Elettronico della stessa Università.</em></div>\r\n<div>\r\n </div>\r\n<div>\r\n Nel caso in cui l'applicazione disponga di ulteriore documentazione sotto forma di blog su http://students.uniparthenope.it o documenti pdf e presentazioni ppt è consigliabile aggiungere anche questi link.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <hr />\r\n <div>\r\n <p><strong>Prodotti</strong></p>\r\n </div>\r\n <div>\r\n Sono definiti come "Prodotti" i progetti sviluppati nell'ambito del progetto che hanno qualità di stabilità ed utilità di servizio. </div>\r\n <div>\r\n </div>\r\n <div>\r\n I prodotti sono raggiungibili attraverso l'url http://web.uniparthenope.it/products/</div>\r\n <div>\r\n </div>\r\n <div>\r\n E' possibile aggiungere un proprio progetto ai prodotti utilizzando l'interfaccia disponibile nel menu social.</div>\r\n <p><br />\r\n </p>\r\n</div>\r\n<p> </p>\r\n','','filtered_html'),('node','page',0,9,9,'und',0,'<p><strong>1. Introduzione</strong></p>\r\n<p>Il progetto Sebeto ha come finalità la creazione di un’infrastruttura informatica in grado di fornire risorse produttive per valorizzare i prodotti applicativi di tipo web application provenienti dalle attività didattiche avanzate degli studenti di ogni grado (triennale, magistrale, dottorato) dell’Università di Napoli Parthenope, tramite il supporto alla produzione e gestione di portali web. Il progetto tende a creare un sistema completo e integrato per la pubblicazione su internet con lo scopo di aumentare la visibilità dei prodotti sia a livello di Ateneo sia, quando opportuno, a livello esterno.</p>\r\n<p><strong>2. Progettazione</strong></p>\r\n<p>I criteri progettuali adottati fanno leva su un analogo progetto sperimentale avviato a latere del corso di Tecnologie Web edizione 2010-2011, Corso di Laurea in Informatica (triennale) e Informatica Applicata (magistrale), Facoltà di Scienze e Tecnologie.</p>\r\n<p><strong>2.1 Analisi delle funzionalità</strong></p>\r\n<p>I servizi offerti tramite la realizzazione del progetto Sebeto sono così sintetizzabili:</p>\r\n<ol>\r\n <li>\r\n Pubblicazione di siti web accessibile tramite la connessione di ateneo</li>\r\n <li>\r\n Supporto tecnologico open source (Apache, PHP, MySQL)</li>\r\n <li>\r\n Supporto tecnologico proprietario (IIS, Asp.NET, SQL Server)</li>\r\n <li>\r\n Strumenti web based per la gestione degli spazi web (myPHPAdmin, aspNetEnterprise Manager, Accesso remoto ai file) 5. Sistema per la condivisione di file (iFolder)</li>\r\n</ol>\r\n<p><strong>2.2 Analisi dei requisiti</strong></p>\r\n<p>I seguenti requisiti funzionali devono essere garantiti dalla realizzazione del progetto</p>\r\n<ol>\r\n <li>\r\n Affidabilità: il sistema deve essere costituito da componenti hardware dedicate alla produzione e non al funzionamento occasionale. Deve essere garantito il backup elettrico, il mantenimento dei dati e l’ambiente idoneo al funzionamento del sistema.</li>\r\n <li>\r\n Sicurezza: il sistema di autenticazione degli utenti deve essere integrato con quello di ateneo sia per quanto riguarda l’accesso come personale docente e non docente, sia riguardo a quello come studente.</li>\r\n <li>\r\n Efficacia/Efficienza: hardware e connessione di rete devono garantire il funzionamento conveniente del sistema</li>\r\n <li>\r\n Compatibilità: gli utenti devono poter produrre le loro creazioni usando architetture di tipo libero o di tipo proprietario</li>\r\n</ol>\r\n<p><strong>3. Hardware e software necessari </strong></p>\r\n<p>L’architettura hardware è costituita da 3 server di tipo rack interconnessi tramite network ad alte prestazioni alla rete di ateneo ed opportunamente dimensionati in modo da garantire le funzionalità offerte in maniera ottimale:</p>\r\n<ol>\r\n <li>\r\n Server web Apache/PHP/MySQL: 2 CPU Intel Xeon 6 core, 48 GigaRAM, HD di sistema, 4 HD Sata da 2 TB configurati in raid 10, Sistema operativo Linux Server, stack FOSS</li>\r\n <li>\r\n Server web IIS/ASP.NET/SQLServer: 2CPU Intel Xeon 6 core, 48 GigaRAM, HD di sistema, 4 HD Sata da 2 TB configurati in raid 10, Sistema operativo Windows Server, stack IIS</li>\r\n <li>\r\n Server iFolder: 2 CPU Intel Xeon 6 core, 48 Giga RAM, Hard disk di sistema, 8 HD Sata da 3 TB configurati in raid 10, Sistema operativo Linux Server, iFolder</li>\r\n</ol>\r\n<p><strong>Caratteristiche software:</strong></p>\r\n<ol>\r\n <li>\r\n Uso di software open source (tranne nel caso del server 2), uso limitato della personalizzazione, integrazione nei servizi di ateneo.</li>\r\n <li>\r\n Autenticazione integrata basata sui servizi di ateneo (es. RADIUS)</li>\r\n <li>\r\n Domini web del tipo http://web.uniparthenope.it/[matricola|utentemail]/[win|linux] . Landing gestito dal server 1 ed eventuale redirect sul server 2.</li>\r\n</ol>\r\n<p>Funzionamento di default definibile dall’utente attraverso pannello di controllo. Possibilità, previo autorizzazione del CdC a promozione a dominio di terzo livello con nome simbolico. Esempio: Lo studente di matricola 111111111 crea un’applicazione web di interesse di ateneo.<br />\r\n Attraverso apposito modulo interattivo chiede di poter attivare l’applicazione xyz in modo tale che http://xyz.uniparthenope.it punta a http://web.uniparthenope.it/1111111111/linux/ 4. Gestione delle quote disco per server 1, 2 e 3</p>\r\n<p><strong>4. Vantaggi e produttività</strong></p>\r\n<p>La disponibilità di un’infrastruttura di questo tipo consente di innescare un circolo virtuoso di produttività grazie alla possibilità per gli studenti di mostrare i propri prodotti sulla rete. tramite il sistema di autenticazione integrato e la scrittura di una policy che gli utenti devono accettare per usufruire dei servizi, si trasferisce la responsabilità dei contenuti dal fornitore del servizio ai singoli produttori di materiale interattivo (cfr. recente giurisprudenza).<br />\r\n La possibilità di usufruire di un sistema di backup personale semplice e interattivo basato su iFolder consente di diminuire l’uso massiccio attualmente fatto del servizio parzialmente libero denominato Dropbox. Questo servizio, per quanto caratterizzato da una grande qualità, è pur sempre basato sul trasferimento di documenti su di un sito esterno.<br />\r\n L’esperienza maturata nella sperimentazione di un analogo servizio di fornitura di spazio web è forte di decine di interessanti produzioni da parte degli studenti (attualmente consultabili attraverso il portale http://sebeto.uniparthenope.it ).</p>\r\n<p><strong>5. Conclusioni e sviluppi futuri</strong></p>\r\n<p>Il progetto consente lo sviluppo e la disponibilità su internet dei prodotti software più innovativi prodotti dagli studenti nelle loro attività didattiche, stimolando gli studenti di ogni area culturale alla competizione e al miglioramento delle proprie competenze.<br />\r\n Un’evoluzione futura del sistema è la migrazione su di un cluster altoprestazionale ad architettura cloud per la gestione dinamica e a richiesta delle necessità elaborative. In questo modo gli utenti dell’Ateneo potrebbero disporre di macchine virtuali sempre in funzione, accessibili da ogni parte del mondo.<br />\r\n Questa evoluzione porterebbe ai seguenti risparmi:</p>\r\n<ul>\r\n <li>\r\n eliminazione dei computer personali di tipo desktop,</li>\r\n <li>\r\n eliminazione delle aule didattiche,</li>\r\n <li>\r\n centralizzazione dell’elaborazione con conseguente risparmio energetico (alimentazione, raffreddamento);</li>\r\n <li>\r\n possibilità di consolidamento delle macchine virtuali e spegnimento dei nodi non utilizzati.</li>\r\n</ul>\r\n<p>Infine, è importante sottolineare che il progetto contribuisce a migliorare la visibilità dell’Università degli Studi di Napoli Parthenope in campo nazionale e anche in campo internazionale.</p>\r\n','','full_html'),('node','page',0,10,10,'und',0,'<p> </p>\r\n<div>\r\n <img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706081718.jpg\" /></div>\r\n<p> </p>\r\n<p>Sebeto era il nome del fiume che bagnava l'antica Neapolis.</p>\r\n<p>Il suo antico nome greco, tramandatoci sul verso di alcune monete coniate fra il V secolo a.C. e il IV secolo a.C., era Sepeithos, traducibile come "andar con impeto", probabile riferimento al corso irruento del fiume.</p>\r\n<p>Storia e leggenda si fondono nella notte dei tempi: la greca Neapolis era divisa da Partenope da un fiume, forse navigabile, "fra lo monte S. Erasmo e lo monte di Patruscolo".</p>\r\n<p>La foce del fiume era sull'area dell'attuale piazza Municipio.</p>\r\n<p>Durante l’assedio romano (327 a.C.), il console Publilio Filone accampò il suo esercito fra Neapolis e Partenope alla foce, del fiume Sebeto, mentre il fiume è rappresentato come divinità nella fontana monumentale di Largo Sermoneta.</p>\r\n<p>La ricerca del Sebeto ha appassionato il Petrarca e tutt’oggi rappresenta un enigma irrisolto.</p>\r\n<p>Storia, leggenda, creatività, comunicazione, luoghi cari alla storia e all’eredità culturale dell’Ateneo hanno portato a scegliere in Sebeto il nome del progetto.</p>\r\n<p><a href=\"/sites/default/files/images/20122706082142.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706082142.jpg\" /></a></p>\r\n','','full_html'),('node','page',0,11,11,'und',0,'<p>Strumenti collaborativi a disposizione degli utenti registrati.</p>\r\n<p>Utilizzare lo strumento di ricerca per attivare relazioni di collaborazione ed amicizia fra utenti.</p>\r\n<p><strong>Contenuti:</strong></p>\r\n<ul>\r\n <li>\r\n <a href=\"/?q=node/add/new\">Aggiungi una notizia</a> (Solo membri staff e faculty)</li>\r\n <li>\r\n <a href=\"/?q=node/add/event\">Aggiungi un evento</a> (Solo membri staff e faculty)</li>\r\n <li>\r\n <a href=\"/?q=node/add/book\">Aggiungi un libro</a> (Solo membri staff e faculty)</li>\r\n <li>\r\n <a href=\"/?q=node/add/article\">Aggiungi un articolo</a> (Solo membri autori, staff e faculty)</li>\r\n <li>\r\n <a href=\"/?q=node/add/poll\">Aggiungi un sondaggio</a> (Solo membri staff e faculty)</li>\r\n</ul>\r\n<p> </p>\r\n<p><strong>Collaborazione:</strong></p>\r\n<ul>\r\n <li>\r\n <a href=\"/?q=messages\">Messaggi privati</a></li>\r\n <li>\r\n <a href=\"/?q=forum\">Il Forum</a></li>\r\n <li>\r\n <a href=\"/?q=blog\">I blog</a></li>\r\n</ul>\r\n<p> </p>\r\n<p><strong>Condivisione:</strong></p>\r\n<ul>\r\n <li>\r\n <a href=\"http://box.uniparthenope.it\">OwnCloud</a> di Ateneo (Autenticazione wifi/posta) - Servizio simile a Dropbox</li>\r\n <li>\r\n Spazio web degli utenti <a href=\"/?q=userhomes\">http://students.uniparthenope.it/?q=userhomes</a></li>\r\n</ul>\r\n','','full_html'),('node','book',0,15,35,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h1> UniBUS </h1>\r\n<a name=\"introduction\"></a>\r\n<h4>Version</h4>\r\n<p>v1.0</p>\r\n<h4>Autori</h4>\r\n<p>Ambrosio Luigia, Esposito Lazzaro, Lucarelli Francesca, Taddeo Daniela</p>\r\n<h4>Servizi per la mobilità a Napoli</h4>\r\n<h4>Base URI</h4>\r\n<p>\r\n<a xmlns=\"\" href=\"http://api.uniparthenope.it:10018\">http://api.uniparthenope.it:10018</a>\r\n</p>','','full_html'),('node','book',0,17,77,'und',0,'<p> </p>\r\n<p> </p>\r\n<p>\r\n <meta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\" />\r\n</p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n</p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n <script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n <style type=\"text/css\">\r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n} </style>\r\n <script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script></p>\r\n<h1>\r\n CCMMMA API</h1>\r\n<p><a name=\"introduction\"></a></p>\r\n<h4>\r\n Version</h4>\r\n<p>v1.0</p>\r\n<h4>\r\n Autori</h4>\r\n<p>Roberto Melfi, Valerio Viglione</p>\r\n<h4>\r\n Previsioni meteo a cura del Centro Campano per il Monitoraggio e la Modellistica Marina e Atmosferica</h4>\r\n<h4>\r\n Base URI</h4>\r\n<p><a href=\"http://api.uniparthenope.it:9990\" xmlns=\"\">http://api.uniparthenope.it:9990</a></p>\r\n','','full_html'),('node','article',0,18,21,'und',0,'“Immagina una grande sala, più o meno come un teatro, tranne per il fatto che le gallerie sono tutte intorno, anche nello spazio usualmente occupato dal palcoscenico. Sulle pareti di questa sala è dipinta la mappa del globo terrestre, dove il soffitto rappresenta le regioni polari del nord, l’Inghilterra è circa all’altezza della prima galleria, quindi, più verso il basso i tropici, l’Australia e, infine, l’Antartico nel livello inferiore.\r\n\r\nOgnuno dei posti delle gallerie è occupato da un calcolatore, una miriade di calcolatori sono al lavoro sul tempo atmosferico, relativo alla zona della mappa dove ciascuno di essi risiede e solo su quella occupandosi o di una singola equazione o di una parte di un’equazione. \r\n\r\nIl lavoro di ciascuna regione è coordinato da un calcolatore di rango superiore. Numerose piccole lampadine visualizzano istantaneamente i valori calcolati da ciascun calcolatore, così che quelli adiacenti possano leggerli in modo da mantenere la comunicazione dal nord al sud della mappa.\r\n\r\nDal pavimento si solleva un piedistallo alto circa la metà della sala, dotato di un pulpito dove risiede chi coordina l’intera operazione di calcolo grazie all’aiuto di molti assistenti che fanno da messaggeri. Uno dei suoi compiti è fare sì che la velocità di soluzione delle equazioni, relative ad ogni parte del globo, sia uniforme.\r\n\r\nIl coordinatore agisce come un direttore di orchestra, solo che gli strumenti che dirige sono strumenti per il calcolo. Ad esempio potrebbe utilizzare un raggio di luce blu per indicare quelle regioni che sono in ritardo e che devono aumentare la velocità di calcolo e uno di luce rossa per ridurre la velocità delle regioni troppo in anticipo, nella soluzione delle equazioni.\r\n\r\nQuattro impiegati di maggiore esperienza raccolgono i dati del tempo previsto man mano che questi vengono prodotti e, attraverso un sistema di posta pneumatica, li inviano in una sala dove regna il silenzio, dove vengono codificati e trasmessi perché vengano utilizzati. Quindi, i dati prodotti vengono conservati per un uso futuro.”\r\n\r\nTali, o di tal genere, i pensieri dell’eclettico scienziato inglese Luwis Fry Richardson, nato nell’ottobre del 1881 e morto nel settembre del 1953, passato alla storia come l’inventore delle previsioni meteorologiche mediante processi numerici, come mostrato nel suo articolo “Weather prediction by numerical process” del 1922. Leggere il suo scritto è entusiasmante: anticipa di decenni l’architettura di un supercalcolatore individuandone le componenti fondamentali ovvero i nodi di calcolo, la rete di comunicazione, i sistemi di controllo e sincronizzazione, la memorizzazione dei risultati per un uso futuro. Richardson, in maniera completamente innovativa, propone le previsioni meteo, come la soluzione delle equazioni differenziali, applicate alla fluidodinamica atmosferica, superando l’approccio puramente storico-statistico dell’analisi delle serie temporali, ancor oggi non caduto totalmente in disuso. Richardson, convinto e fervente pacifista, tanto da essere ritenuto ineleggibile agli onori accademici, interromperà i suoi studi sulla meteorologia computazionale, distruggendo i lavori ancora in attesa di pubblicazione, resosi conto dell’importanza strategica della stessa, durante gli eventi bellici. \r\n\r\nCome tutti i geni innovatori della storia, Richardson soffre l’anacronismo tecnologico che costringe le sue intuizioni a rimanere tali fino a pochi anni prima della sua morte, quando un evento di proporzioni epocali sta per verificarsi, per porre fine ad una delle guerre più sanguinose della storia, in termini di perdite civili: è necessaria una perfetta pianificazione, per creare ed espandere una testa di ponte alleata nel territorio a nord della Francia e fiaccare, e quindi ridurre all’impotenza, le forze del Reich nell’Europa centrale. Per far ciò, è necessaria abilità bellica, sono necessarie perfette previsioni meteo, per l’uso massiccio di paracadutisti e di mezzi anfibi. La data dell’alba del 6 giugno 1944 non può essere scelta con un lancio di dadi per quello che passerà alla storia come lo “Sbarco in Normandia”, l’operazione “Overlord”, il D-Day. E’ necessario supercalcolo e questa volta, circa 22 anni dopo l’articolo di Richardson, questa volta la tecnologia esiste, è disponibile ed è stata già utilizzata in altri contesti.\r\n\r\nJohn von Neumann, matematico ungherese, nato a Budapest del 1903 e trasferitosi negli Stati Uniti su invito dell’università di Princeton nel 1930, a partire dallo scoppio della seconda guerra mondiale si dedica alla matematica applicata ed alla creazione di macchine per il calcolo automatico. E’ considerato il padre dell’architettura dei calcolatori che porta ancor oggi il suo nome e che, in quegli anni, vede l’applicazione pratica nella creazione del mastodontico Electronic Numerical Integrator And Computer (ENIAC), il primo computer della storia. Presentato ufficialmente 1946, costato una cifra esorbitante e fortissimamente voluto dalle alte gerarchie militari, nel corso del suo processo evolutivo è stato ampiamente utilizzato durante il conflitto, inizialmente per i calcoli balistici, poi per la ricerca della soluzione al codice enigma, per il progetto Manhattan e, quindi, per produrre le previsioni meteo, al fine di pianificare l’invasione per la liberazione del territorio francese.\r\n\r\nRichardson morì nel 1953, dopo aver visto i propri studi di meteorologia computazionale applicati in primis per scopi bellici, ma, purtroppo, senza la soddisfazione di saperlo in vita, aveva raggiunto un altro primato: non solo il metodo di calcolo descritto nel 1922 risultava innovativo in quanto tale, ma anche l’approccio computazionale superava la cosiddetta architettura von Neumann. Aveva applicato, per la prima volta, in modo consapevole il calcolo parallelo, ma quelle che gli erano mancate erano state unicamente le alte prestazioni.\r\n\r\nLeonard Kleinrock, nel 1962 scrive nella sua tesi di dottorato che, probabilmente, assisteremo alla diffusione dei fornitori di risorse computazionali i quali, così come avviene per le linee elettriche e telefoniche, forniranno servizi per le case e gli uffici, distribuiti sul territorio nazionale anticipando gli accadimenti nel mondo del supercalcolo di quasi quaranta anni.\r\n\r\nMa, sul fronte del calcolo ad alte prestazioni, è il 1961 un anno di importanza storica, perché Seymour Cray progetta il primo supercomputer della storia, il CDC6600, per conto della Control Data Corporation, anche se solo nel 1982 viene presentato il CRAY X-MP, progettato dallo stesso Cray, ormai a capo dell’omonima azienda: è il primo computer dotato di multiprocessori, è effettivamente quello che oggi viene chiamato un calcolatore parallelo ad alte prestazioni e le previsioni meteo sono state una delle prime applicazioni progettate per funzionare, sfruttando appieno la potenza di calcolo disponibile. Finalmente, la domanda e l’offerta di potenza computazionale s’ incontrano, con soddisfazione di risultati.\r\n\r\nE’ l’inizio delle previsioni meteorologiche computazionali operazionali. La figura del meteorologo, analizzatore delle serie temporali e di segni atmosferici, comincia ad essere sostituita dall’interpretatore dei risultati prodotti dai modelli matematici. Presso la Pensylvania State University, nel corso degli anni 70, viene sviluppato il modello MM5. Il Mesoscale Model 5 è l\'ultimo di una serie di modelli per simulazione su mesoscala, sviluppati da Anthes e da Warner, che implementano, in maniera tecnologicamente efficace ed efficiente, quanto immaginato da Richardson all’inizio del secolo, utilizzando un approccio seriale.\r\nNel corso degli anni ’90, le architetture parallele si diffondono in ogni ramo applicativo scientifico, ingegneristico ed economico, così come aumenta l’offerta dei grandi produttori di macchine da calcolo parallelo ad alte prestazioni, come le Thinking Machines o l’IBM SP: tanta potenza, disponibile a costo estremamente elevato, costringe lo sviluppo di applicazioni di modellistica atmosferica ed oceanografica ad essere possibile solo a grandi enti di ricerca, tipicamente statunitensi, come la Argonne National Laboratory, dove vengono realizzate le librerie che permettono la comunicazione fra i processi residenti su differenti processori e come l’University Corporation for Atmosphere Research e il National Center for Atmospheric Research.\r\n\r\n In questo contesto, nella metà degli anni ’90, John Michalakes implementa la versione parallela del modello MM5, denominata MPP, grazie allo sviluppo di una libreria software che permette la decomposizione del dominio spaziale, su cui effettuare i calcoli di previsioni meteo, in aree ciascuna affidata ad un nodo di calcolo, mentre un nodo principale ne coordina le operazioni, e la sincronizzazione e ne raccoglie i risultati. Il sogno di Richardson viene così realizzato.\r\n\r\nRimane il problema del costo della potenza di calcolo. Nella prima metà degli anni ’90, l’acquisto di un calcolatore parallelo rimane ancora fuori della portata della maggior parte delle università e centri di ricerca, ma un eroe leggendario è destinato a cambiare la storia e, per certi versi, a salvare il mondo. E’ il 1994, quando alla NASA Donald Becker pensa di riutilizzare dei comuni personal computer, non più al top delle performance, per creare un sistema di calcolo parallelo con componenti completamente commerciali, esplorando la possibilità dell’high performance computing a basso costo. L’idea è tanto semplice quanto geniale: utilizzare comuni PC, come nodi di calcolo e nodi di controllo, ed una rete ad alte prestazioni per la comunicazioni fra le differenti componenti. Il sistema operativo scelto per questo tipo di applicazione è Linux e Beowulf , il leggendario eroe del poema epico inglese è il nome scelto per il progetto, il cui sviluppo viene preso presto in carico dalla comunità internazionale interessata, al calcolo scientifico. E’ la nascita dell’era delle previsioni meteorologiche a scala locale, che possono essere ottenute aumentando localmente la risoluzione del calcolo e, grazie alla disponibilità di high performance computing a costo accessibile, essere prodotte per ricerca o presso gli enti preposti alla gestione del territorio.\r\n\r\nNello stesso periodo dell’ascesa dei sistemi di supercalcolo di tipo Beowulf, un altro evento epocale cambia la storia dell’umanità tutta: le autostrade digitali non sono più un’oscura voce dei programmi dei governi di oltreoceano, ma Internet diventa economica, accessibile, veloce e stabile. Finisce l’era del dove ed inizia quella del quando, il mondo è a portata di click e, quindi, strumenti di acquisizione meteo, geograficamente distribuiti, centri di raccolta ed elaborazioni di dati satellitari, enti produttori di dati meteorologici ricavati da modelli, come l’European Center for Mesoscale Weather Forecast di Reading, nei pressi di Londra, sono finalmente interconnessi e capaci di elaborazioni operazionali con scala temporale, prossima al tempo reale. Grazie alla migliorata comprensione dei fenomeni atmosferici, ed ai legami con la dinamica oceanografica e biosferica, alla maggiore capacità dei sensori meteo, montati su piattaforme orbitali o aereotrasportati, grazie all’avanzamento nella teoria e nelle applicazioni dell’elaborazione dei dati meteo, all’interconnessione veloce di ciascuna di queste componenti, al calcolo distribuito su elaboratori geograficamente distanti ed al calcolo parallelo ad alte prestazioni, con il nuovo millennio, si raggiunge il traguardo dell’affidabilità previsionale delle 72 ore, ma, nel contempo, pressano due richieste da parte della comunità delle scienze applicate alla meteorologia: l’accoppiamento fra modelli differenti e la validazione degli stessi. Ancora una volta, risolte già da tempo le problematiche di tipo teorico, rimane ancora la necessità di potenza computazione.\r\n\r\nE’ il 1998 quando Ian Foster e Carl Kesselman, nell’ormai storico libro “The Grid: Blueprint for a New Computing Infrastructure “scrivono che una griglia computazionale è un’infrastruttura hardware e software che provvede ad un indipendente, consistente, pervasivo ed economico accesso a risorse computazionali ad alte prestazioni”. Il termine Grid è solitamente riferito alla linea di distribuzione elettrica: quello che Leonard Kleinrock, ritenuto uno dei padri di internet, aveva anticipato in maniera prematura nel 1962 diviene realtà alla fine del secolo. Successivamente, nel 2000, insieme a Steve Tuecke, nell’articolo “The Anatomy of the Grid”, i padri fondatori del Grid Computing focalizzano l’attenzione sul concetto di condivisione delle risorse ,non riduttivamente come scambio di file, ma, piuttosto,come accesso diretto al sistema di calcolo, al software, ai dati e agli strumenti in un ambiente di problem solving collaborativo, facente uso di strategie di ricerca ed allocazione dinamica delle risorse disponibili. In questo contesto la condivisione deve essere necessariamente controllata, in modo da garantire affidabilità e sicurezza e questo può essere fatto attraverso la creazione di organizzazioni virtuali trasversali ad enti, persone fisiche o organizzazioni reali. \r\n\r\nE’ la nascita dell’approccio collaborativo alle scienze computazionali e, ancora una volta, le applicazioni meteo rappresentano un ottimo piano di test per la nuova tecnologia e, viceversa, per la modellistica meteorologica il Grid Computing, come calcolo distribuito ad un più alto livello evolutivo, è la soluzione necessaria alle più pressanti richieste di accoppiamento e validazioni di modelli.\r\n\r\nIn un approccio a blocchi, è intuitivo pensare al modello atmosferico come l’ideale forzante per un modello di dinamica della circolazione oceanica ed ad uno per la propagazione delle onde marine indotte dal vento, mentre, contestualmente, lo stesso modello meteo può fornire forzanti ad un modello di evoluzione delle terre emerse, in termini di uso del suolo e conseguente attività biologica. In questo stesso contesto, possono essere inseriti modelli di tipo socioeconomico che permettono di valutare l’impatto antropico sul tempo atmosferico, sull’inquinamento dell’aria e dell’acqua. Due modelli si dicono accoppiati se un primo produce i dati utilizzati per inizializzare e controllare il secondo. L’accoppiamento può essere effettuato dopo che il primo modello ha prodotto i risultati, oppure stesso a livello di equazioni. In ambo i casi la necessità di calcolo da alte prestazioni cresce ed è necessaria una massiccia parallelizzazione al fine di rendere il problema risolvibile in tempi utili.\r\n\r\nLa validazioni dei modelli può essere effettuata mediante un’analisi statistica e da un confronto dei dati prodotti in previsione con quelli prodotti in seguito all’inizializzazione dello stesso modello con i dati successivamente acquisiti e relativi al mondo reale. Tuttavia, per poter avere un’indicazione della qualità della previsione in tempo reale e non a posteriori è necessario ripetere la previsione numerose volte, perturbando i dati di inizializzazione ed effettuando un’analisi di sensibilità sui risultati. Anche in questo caso, la necessità di calcolo parallelo ad alte prestazioni aumenta in maniera consistente per il gran numero di simulazioni da dover lanciare contemporaneamente.\r\n\r\nIl Grid Computing, grazie all’accesso sistematico alle risorse computazionali alto performanti, consente di risolvere queste problematiche in maniera efficace ed efficiente come dimostrato nel 2003 da Robert Jacob, Ian Foster ed altri nell’articolo “Automating Climate Science…”.\r\n\r\nL’accuratezza in termini spaziali, temporali e di affidabilità delle previsioni meteorologiche è indissolubilmente legata alle capacità computazionali disponibili, che risultano, quindi, d’ importanza strategica sia dal punto di vista del governo nazionale che del management locale di una qualsiasi nazione e forti sono stati gli investimenti in termini scientifici ed economici per fare si che la scala dell’affidabilità passasse dalle 72 ore d’ inizio millennio alle 144/150 attuali. Infiniti sono gli ambiti applicativi delle previsioni meteorologiche a scala locale, in cui l’alta risoluzione spaziale e temporale è un requisito principe, come nel caso della previsioni di eventi estremi, ad esempio alluvioni e mareggiate,e di manifestazioni sportive di estrema rilevanza economica per pubblico, per sponsor ed indotto tecnico- scientifico, come, ad esempio, la leggendaria Americas’s Cup, in cui ancora le possibilità offerte dal supercalcolo non sono state ancora pienamente sfruttate.\r\n\r\nAttualmente, le problematiche a lunga scala temporale, ovvero quelle legate alle previsione climatica, iniziano ad essere intimamente legate a quelle meteorologiche, a causa dei cambiamenti globali e all’incremento dei fenomeni estremi, anche in zone storicamente lontane da queste problematiche. In questo caso la richiesta di affidabilità computazionale, oltre che di pure prestazioni, è ancora più pressante poiché le simulazioni non coinvolgono solo giorni, ma mesi, anni, centinaia di anni e millenni.\r\nRichardson, padre dei metodi risolutori alla base della meteorologia computazionale, sarebbe stato sicuramente contento di sapere che il suo approccio è l’attuale chiave di volta per salvare il mondo piuttosto che per distruggerlo e… perché no, portare a casa anche la Vecchia Brocca. \r\n','','filtered_html'),('node','book',0,20,169,'und',0,'<p><a href=\"http://api.uniparthenope.it/doc/uniservice_it.html\">Uniparthenope Servizi Studenti API Doc</a></p>\r\n<p> </p>\r\n<p> </p>\r\n','','filtered_html'),('node','book',0,21,24,'und',0,'<p>Application Program Interface per il servizio docenti dell'Università di Napoli Parthenope</p>\r\n','','filtered_html'),('node','forum',0,22,25,'und',0,'Questa potrebbe essere un\'idea di lavoro:\r\npreparare un kit standard costituito da\r\n1. Drupal\r\n2. moduli di autenticazione RADIUS\r\n3. tema standard UniParthenope\r\n4. eventuali moduli di interfaccia alle API (http://api.uniparthenope.it).\r\n\r\nVolontari? Potrebbe essere un progetto per l\'esame di Tecnologie Web o equivalente.\r\n\r\n','','filtered_html'),('node','blog',0,23,26,'und',0,'L\' Object-Relational Mapping (ORM) è una tecnica di programmazione che favorisce l\'integrazione di sistemi software aderenti al paradigma della programmazione orientata agli oggetti con sistemi RDBMS.\r\n\r\nUn prodotto ORM fornisce, mediante un\'interfaccia orientata agli oggetti, tutti i servizi inerenti alla persistenza dei dati, astraendo nel contempo le caratteristiche implementative dello specifico RDBMS utilizzato.\r\n\r\nI principali vantaggi nell\'uso di un tale sistema sono i seguenti.\r\n\r\nIl superamento (più o meno completo) dell\'incompatibilità di fondo tra il progetto orientato agli oggetti ed il modello relazionale sul quale è basata la maggior parte degli attuali RDBMS utilizzati; con una metafora legata al mondo dell\'elettrotecnica, si parla in questo caso di disadattamento dell\'impedenza tra paradigma relazionale e ad-oggetti (object/relational impedance mismatch).\r\n\r\nUn\'elevata portabilità rispetto alla tecnologia DBMS utilizzata: cambiando DBMS non devono essere riscritte le routine che implementano lo strato di persistenza; generalmente basta cambiare poche righe nella configurazione del prodotto per l\'ORM utilizzato.\r\n\r\nDrastica riduzione della quantità di codice da redigere; l\'ORM maschera dietro semplici comandi le complesse attività di creazione, prelievo, aggiornamento ed eliminazione dei dati (dette CRUD - Create, Read, Update, Delete). Tali attività occupano di solito una buona percentuale del tempo di stesura, testing e manutenzione complessivo. Inoltre, sono per loro natura molto ripetitive e, dunque, favoriscono la possibilità che vengano commessi errori durante la stesura del codice che le implementa.\r\n\r\nSuggerisce la realizzazione dell\'architettura di un sistema software mediante approccio stratificato, tendendo pertanto ad isolare in un solo livello la logica di persistenza dei dati, a vantaggio della modularità complessiva del sistema.\r\n\r\nI prodotti per l\'ORM attualmente più diffusi offrono spesso nativamente funzionalità che altrimenti andrebbero realizzate manualmente dal programmatore:\r\n<ul>\r\n<li>Caricamento automatico del grafo degli oggetti secondo i legami di associazione definiti a livello di linguaggio.<br/>\r\nIl caricamento di un\'ipotetica istanza della classe Studente, potrebbe automaticamente produrre il caricamento dei dati collegati sugli esami sostenuti. Tale caricamento, in più, può avvenire solo se il dato è effettivamente richiesto dal programma, ed è altrimenti evitato (tecnica nota con il nome di lazy-initialization).</li>\r\n<li>Gestione della concorrenza nell\'accesso ai dati durante conversazioni.<br/>\r\nConflitti durante la modifica di un dato da parte di più utenti in contemporanea, possono essere automaticamente rilevati dal sistema ORM.</li>\r\n<li>Meccanismi di caching dei dati.<br/>Per esempio, se accade che uno stesso dato venga prelevato più volte dal RDBMS, il sistema ORM può fornire automaticamente un supporto al caching che migliori le prestazioni dell\'applicazione e riduca il carico sul sistema DBMS.</li>\r\n<li>Gestione di una conversazione mediante uso del design pattern Unit of Work<br/>Ritarda tutte le azioni di aggiornamento dei dati al momento della chiusura della conversazione; in questo modo le richieste inviate al RDBMS sono quelle strettamente indispensabili (per es. viene eseguita solo l\'ultima di una serie di update su uno stesso dato, oppure non viene eseguita affatto una serie di update su di un dato che in seguito viene eliminato); inoltre il colloquio con il DBMS avviene mediante composizione di query multiple in un unico statement, limitando così al minimo il numero di round-trip-time richiesti e, conseguentemente, i tempi di risposta dell\'applicazione.</li>\r\n</ul>\r\nL\'uso di un ORM favorisce il raggiungimento di più alti standard qualitativi software, migliorando in particolare le caratteristiche di correttezza, manutenibilità, evolvibilità e portabilità.\r\n\r\n[crf. http://it.wikipedia.org/wiki/Object-relational_mapping] - contenuto in sviluppo.\r\n\r\nArticoli scientifici:\r\n\r\nAltre fonti:\r\nhttp://www.dcs.fmph.uniba.sk/diplomovky/obhajene/getfile.php/dp.orsag.orm.pdf?id=86&fid=147&type=application%2Fpdf\r\nhttp://www.uio.no/studier/emner/matnat/ifi/INF5750/h07/undervisningsmateriale/object-relational_mapping_and_hibernate.pdf\r\nhttp://www.cs.colorado.edu/~kena/classes/5448/s11/presentations/ordmpresentation.pdf\r\n\r\nStrumenti software:\r\nhttp://hibernate.org/\r\n\r\n','','filtered_html'),('node','blog',0,24,27,'und',0,'L\'integrazione portale/server RADIUS non funziona ancora al 100% ed è attualmente limitata alla sola autenticazione senza il trasferimento di attributi quali l\'email istituzionale (@studenti.uniparthenope.it oppure @uniparthenope.it).\r\n\r\nSenza l\'email impostata, non è possibile variare il proprio profilo per l\'attivazione dei servizi senza specificare una password che, però, non esiste (non è quella wifi/posta/servizi).\r\n\r\nPer ovviare a questo inconveniente, dopo il primo login è consigliabile inviare un messaggio privato all\'utente admin (ripeto, <em>admin</em>!) con il proprio nome, cognome ed indirizzo email istituzionale @studenti.uniparthenope.it o @uniparthenope.it.','','filtered_html'),('node','blog',0,25,28,'und',0,'Avviso di Seminario (parte integrante dei corsi di TW/P3L/PRL)\r\nJava Server Faces - A. Agliata CTO @ T&C Systems Group srl\r\nMercoledì 20 Giugno, ore 8:30 - 10:30, Aula 5, CDN C4','','filtered_html'),('node','event',0,26,29,'und',0,'Avviso di Seminario (parte integrante dei corsi di TW/P3L/PRL)\r\nJava Server Faces - A. Agliata CTO @ T&C Systems Group srl\r\nMercoledì 20 Giugno, ore 8:30 - 10:30, Aula 5, CDN C4\r\n\r\nAntonio Agliata, dottore in Informatica, è chief technical officer presso la T&C Systems Group srl, dove coordina e sviluppa software basati sul paradigma OOP (Obejct Oriented Programming) ed imperativo su differenti tecnologie web oriented e mobile. Tutor aziendale e correlatore di neolaureati in discipline informatiche ed ingegneristiche. ','','filtered_html'),('node','new',0,27,30,'und',0,'http://students.uniparthenope.it/?q=node/26\r\n','','filtered_html'),('node','blog',0,28,31,'und',0,'Suggerimenti per la progettazione di applicazioni destinate all\'uso attraverso i terminali mobili (ormai l\'80% del traffico internet).\r\n\r\n1. http://www.slideshare.net/bryanrieger/rethinking-the-mobile-web-by-yiibu\r\n2. http://www.webmetrics.com/content/download/4020/59629/file/Forrester_Mobile_App_Design_Best_Practices.pdf\r\n3. http://www.amazon.com/Super-Sad-True-Love-Story/dp/1400066409\r\n\r\nSeminare per raccogliere!','','filtered_html'),('node','blog',0,29,32,'und',0,'...ovvero vecchie tecnologie lustrate a nuovo.\r\nInvito a studiare i seguenti argomenti al fine di rendere \"up to date\" i progetti di Tecnologie Web:\r\n\r\njQuery è una libreria di funzioni (framework) javascript, cross-browser per le applicazioni web, che si propone come obiettivo quello di semplificare la programmazione lato client delle pagine HTML.\r\nPubblicato, per la prima volta il 22 agosto 2005 da John Resig, ha raggiunto la versione 1 (stabile) il 26 agosto dell\'anno successivo.\r\nTramite l\'uso della libreria jQuery è possibile, con poche righe di codice, effettuare svariate operazioni, come ad esempio ottenere l\'altezza di un elemento, o farlo scomparire con effetto dissolvenza.\r\nAnche la gestione degli eventi è completamente standardizzata, automatica; stessa cosa per quanto riguarda l\'utilizzo di AJAX, in quanto sono presenti alcune funzioni molto utili e veloci che si occupano di istanziare i giusti oggetti ed effettuare la connessione e l\'invio dei dati.\r\n[cfr. Wikipedia]\r\n\r\nhttp://jquery.com/\r\nhttp://jqueryui.com/\r\n\r\nE l\'immancabile w3schools: http://www.w3schools.com/jquery/default.asp\r\n\r\nIl primo che scrive un buon tutorial e lo \"blogga\" vince la consueta bambolina!','','filtered_html'),('node','book',0,30,73,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\"> Recupera tempo di arrivo del bus</h3>\r\n<h4>Description</h4>Dato il numero di una palina e il nome di una linea, l\'API restituisce la previsione di arrivo del bus alla palina<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/oraribus\r\n</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\",\r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n<h4>Exemple of use</h4> \r\ncurl -X GET -d \"ID_Palina=2700\" -d \"ID_Linea=C2\" http://api.uniparthenope.it:10018/oraribus.json\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"times\":[{\"0\":\"16.20\"}]\r\n \r\n </pre>\r\n L\'API restituisce la previsione di arrivo dei bus alla palina.\r\n \r\n </body>','','full_html'),('node','book',0,32,59,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Fermate lungo la strada</h3>\r\n<h4>Description</h4> Dati il nome della strada e della città, l\'API restituisce l\'elenco delle paline ivi posizionate.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/infostradapalina</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Via\" : \"argine\",\r\n \"ID_Comune\" : \"napoli\"\r\n \r\n </pre>\r\n \r\n <h4>Esemple of use</h4>\r\ncurl -X GET -d \"ID_Via=argine\" -d \"ID_Comune=napoli\" http://api.uniparthenope.it:10018/infostradapalina.json\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"palina\": [{\r\n \"ID\": {\r\n \"0\": \"4014\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"ARGINE\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8512294238736\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.3123214669019\"\r\n }\r\n }, {\r\n \"ID\": {\r\n \"0\": \"4003\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"ARGINE-PALERMO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8547015354947\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.3198190219982\"\r\n }\r\n }, {\r\n \"ID\": {\r\n \"0\": \"4323\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"ARGINE-M.PALERMO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.85458646518\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.3201701774699\"\r\n }\r\n }],...\r\n }\r\n </pre>\r\n l\'API restituisce l\'elenco delle paline ivi posizionate e la loro posizione espressa in latitudine e longitudine\r\n ','','full_html'),('node','book',0,33,61,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">1.3 Info Comuni</h3>\r\n<h4>Description</h4>L\'API restituisce l\'elenco dei comuni serviti dai bus.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/comunibus/\r\n </pre>\r\n<h4>URI Parameters</h4>n/a<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>n/a<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Exemple of use</h4>\r\ncurl -X GET http://api.uniparthenope.it:10018/comunibus.json\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"comune\":[\"CASALNUOVO\",\"SAN GIORGIO A CREMANO\",\"SAN SEBASTIANO\",\"POZZUOLI\",...\r\n \r\n </pre>\r\n L\'API restituisce l\'elenco dei comuni serviti dai bus.\r\n</body>','','full_html'),('node','book',0,34,63,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n\r\n<h3 class=\"operation\">Info palina</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce le informazioni su di essa.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/infopalina</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\"\r\n \r\n </pre>\r\n<h4>Exemple of use</h4> \r\ncurl -X GET -d \"ID_Palina=2700\" http://api.uniparthenope.it:10018/infopalina.json \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"info\": [{\r\n \"NOME\": {\r\n \"0\": \"PIAZZALE TECCHIO STAZIONAMENTO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8227042196634\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1938999900937\"\r\n }\r\n }]\r\n \r\n\r\n </pre>\r\n l\'API restituisce la via lungo la quale è situata la palina, la latitudine e la longitudine della palina.','','full_html'),('node','book',0,35,64,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Info veicoli di linea</h3>\r\n<h4>Description</h4>Dato il nome di una linea,l\'API restituisce l\'elenco dei veicoli che stanno servendo quella linea.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/posizionebus</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n \r\n<h4>Exemple of use</h4>\r\ncurl -X GET -d \"ID_Linea=C2\" http://api.uniparthenope.it:10018/posizionebus.json \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \r\n \"infoveicolo\": [{\r\n \"VEICOLO\": {\r\n \"0\": \"B615\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8219981914021\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.18735386692\"\r\n },\r\n \"NODOR\": {\r\n \"0\": \"2240\"\r\n },\r\n \"NODDES\": {\r\n \"0\": \"2236\"\r\n },\r\n \"CAP_DST\": {\r\n \"0\": \"2700\"\r\n },\r\n \"TIME\": {\r\n \"0\": \"14\\/06\\/2012 16.21.26\"\r\n }\r\n }, {\r\n \"VEICOLO\": {\r\n \"0\": \"T018\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8226966970438\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1942109734631\"\r\n },\r\n \"NODOR\": {\r\n \"0\": \"2700\"\r\n },\r\n \"NODDES\": {\r\n \"0\": \"2629\"\r\n },\r\n \"CAP_DST\": {\r\n \"0\": \"2700\"\r\n },\r\n \"TIME\": {\r\n \"0\": \"14\\/06\\/2012 16.20.56\"\r\n }\r\n }\r\n ]\r\n \r\n\r\n \r\n </pre>\r\n \'API restituisce l\'elenco dei veicoli che stanno servendo quella line e la loro posizione attuale.\r\n </body>','','full_html'),('node','book',0,36,66,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\"> Linee Bus</h3>\r\n<h4>Description</h4>L\'API restituisce il nome di tutte le linee anm.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/infolinee/</pre>\r\n<h4>URI Parameters</h4>n/a<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>n/a<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Exemple of use</h4>\r\ncurl -X GET http://api.uniparthenope.it:10018/infolinee.json\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \"linea\": [\"ALIB\", \"C1\", \"C11\", \"C12\", \"C13\",...\r\n \r\n </pre>\r\n L\'API restituisce il nome di tutte le linee anm.\r\n ','','full_html'),('node','book',0,37,67,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">1.7 Percorso Bus</h3>\r\n<h4>Description</h4>Dato il nome della linea, L\'API restituisce il percorso del bus.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/percorsobus\r\n</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n<h4>Exemple of use</h4> \r\ncurl -X GET -d \"ID_Linea=C2\" http://api.uniparthenope.it:10018/percorsobus.json\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"stop\": [{\r\n \"ID\": {\r\n \"0\": \"2700\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"PIAZZALE TECCHIO STAZIONAMENTO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8227042196634\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1938999900937\"\r\n },\r\n \"VERSO\": {\r\n \"0\": \"As\"\r\n }\r\n }, {\r\n \"ID\": {\r\n \"0\": \"2629\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"TECCHIO-POLITECNICO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8239706843335\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1943130504403\"\r\n },\r\n \"VERSO\": {\r\n \"0\": \"As\"\r\n }\r\n },\r\n ....\r\n \r\n </pre>\r\n L\'API restituisce il percorso del bus indicando, per ogni fermata : l\'identificativo della palina, la via \r\n lungo la quale è situata la palina, la latitudine e la longitudine della palina, e il verso di percorrenza del bus.\r\n </body>','','full_html'),('node','book',0,38,102,'und',0,'<p> </p>\r\n<p> </p>\r\n<p>\r\n <meta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\" />\r\n</p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n</p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n <script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n <style type=\"text/css\">\r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n} </style>\r\n <script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script></p>\r\n<h3 class=\"operation\">\r\n Bus che servono la palina</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Dato il numero di una palina, l'API restituisce l'elenco dei nomi delle linee che la servono durante la giornata.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:10018/transitpalina</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET</span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>not required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"brush: js\">\r\n \r\n "ID_Palina" : "2700"\r\n \r\n </pre>\r\n<h4>\r\n Exemple of use</h4>\r\n<p>curl -X GET -d "ID_Palina=2700" http://api.uniparthenope.it:10018/transitpalina.json</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"brush: js\">\r\n \r\n \r\n "linea":[{"0":"C1 "},\r\n {"0":"C2 "},\r\n {"0":"C6 "}]\r\n \r\n </pre>\r\n<p>L'API restituisce l'elenco dei nomi delle linee che servono la palina durante la giornata.</p>\r\n<p>L'elenco può essere vuoto quando nessun bus transita per la palina durante la giornata.</p>\r\n','','full_html'),('node','blog',0,39,47,'und',0,'<h2>Semplice Esempio di Servlet</h2>\r\nPrerequisiti:\r\n• Istallare SDK Java\r\n• Istallare Tomcat web server\r\nCosa comprende questo esempio Servlet\r\n<ol>1. Come scrivere la classe Servlet.\r\n2. Come compilare la classe Servlet.\r\n3. Come estrarre i parametri dal form HTML da HttpServeletRequest.\r\n4. Come Implementare il descriptor file web.xml.\r\n5. Come creare il file WAR(Web application archive).\r\n6. Come eseguire la semplice applicazione in Tomcat web container.</ol>\r\nQuesta semplicissima applicazione web contiene un file HTML e una Servlet. L’applicazione prevede di inserire il nostro nome nel form HTML e visualizzare un messaggio di benvenuto all’utente.\r\nDescriviamo in sei passi la creazione di una semplice applicazione web.\r\n\r\n<strong>Passo1:</strong> Creare una struttura di directory come mostrato in figura:\r\n\r\n<img src=\"http://www.servletworld.com/sites/default/files/figures/servlet-example.png\" width=\"273\" height=\"276\" /> \r\n\r\n<strong>Passo2:</strong> Creare il file HTML form.html nella directory servlet-example/pages.\r\n<pre><html>\r\n <head>\r\n <title>The servlet example </title>\r\n </head>\r\n <body>\r\n <h1>A simple web application</h1>\r\n <form method="POST" action="WelcomeServlet">\r\n <label for="name">Enter your name </label>\r\n <input type="text" id="name" name="name"/><br><br>\r\n <input type="submit" value="Submit Form"/>\r\n <input type="reset" value="Reset Form"/>\r\n </form>\r\n </body>\r\n</html></pre></div>\r\n\r\n<strong>Passo3:</strong> Creare la classe WelcomeServlet.class.\r\n\r\nCopiare il codice che segue nel file WelcomeServlet.java e salvarlo nella directory servlet-example/WEB-INF/src/jsptube/tutorials/servletexample.\r\n\r\n<cite>Nota:</cite> Puoi salvare il file sorgente java in qualsiasi directory, ma è necessario salvare il file class compilato nella cartella WEB-INF/classes prima di creare il file WAR. Tutte le Servlet e altre classi usate per l’applicazione web devono essere presenti nella directory classes.\r\n\r\n<pre>\r\n \r\nimport java.io.IOException;\r\nimport java.io.PrintWriter;\r\n \r\nimport javax.servlet.ServletConfig;\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\n \r\npublic class WelcomeServlet extends HttpServlet {\r\n \r\n@Override\r\npublic void init(ServletConfig config) throws ServletException {\r\nsuper.init(config);\r\n}\r\n \r\n \r\nprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n/*\r\n* Get the value of form parameter\r\n*/\r\nString name = request.getParameter(\"name\");\r\nString welcomeMessage = \"Welcome \"+name;\r\n/*\r\n* Set the content type(MIME Type) of the response.\r\n*/\r\nresponse.setContentType(\"text/html\");\r\n \r\nPrintWriter out = response.getWriter();\r\n/*\r\n* Write the HTML to the response\r\n*/\r\nout.println(\"<html>\");\r\nout.println(\"<head>\");\r\nout.println(\"<title> A very simple servlet example</title>\");\r\nout.println(\"</head>\");\r\nout.println(\"<body>\");\r\nout.println(\"<h1>\"+welcomeMessage+\"</h1>\");\r\nout.println(\"<a href=/servletexample>\"+\"Click here to go back to input page \"+\"</a>\");\r\nout.println(\"</body>\");\r\nout.println(\"</html>\");\r\nout.close();\r\n \r\n}\r\n \r\npublic void destroy() {}\r\n} \r\n</pre>\r\nCompilare il file WelcomeServlet.java con il comando:\r\n\r\n<code> javac WelcomeServlet.java</code>\r\n\r\nIl nuovo file WelcomeServlet.class è stato aggiunto nella stessa cartella. Spostare il file WelcomeServlet.class nella cartella classes.\r\n<cite>Nota</cite> Importante: Per compilare una qualsiasi Servlet bisogna importare il file servlet-api.jar nel class path.\r\n\r\n<strong>Passo 4:</strong> Implementare il description file web.xml\r\n\r\nCopiare il seguente codice nel file web.xml e salvarlo nella directory servlet-example/WEB-INF.\r\n\r\n<pre>\r\n<web-app version=\"2.4\"\r\nxmlns=\"http://java.sun.com/xml/ns/j2ee\"\r\nxmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\nxsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee\r\nhttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\">\r\n \r\n <servlet>\r\n <servlet-name>WelcomeServlet</servlet-name>\r\n <servlet-class>jsptube.tutorials.servletexample.WelcomeServlet</servlet-class>\r\n </servlet>\r\n <servlet-mapping>\r\n <servlet-name>WelcomeServlet</servlet-name>\r\n <url-pattern>/WelcomeServlet</url-pattern>\r\n </servlet-mapping>\r\n <welcome-file-list>\r\n <welcome-file> /pages/form.html </welcome-file>\r\n </welcome-file-list>\r\n</web-app>\r\n</pre>\r\n<strong>Passo 5:</strong> Creare il file WAR.\r\n\r\nSpostarsi nella directory servletexamle e creare il file WAR usando il commando\r\n\r\n<code>Jar cvf servletexample.war *</code>\r\n\r\nQuesto comando racchiude tutti I contenuti delle sotto-directory di servlet-example in un archivio chiamato serverexample.war. \r\n\r\n<strong>Passo 6:</strong> Pubblicare l’applicazione web server\r\n\r\nPer Pubblicare l\'appilicazione web in Tomcat, copiare il file WAR nella cartella <TOMCAT_HOME>/webapp.\r\nUna volta avviato il server, Tomcat estrarrà il file WAR nella directory con lo stesso nome del file WAR.\r\nPer avviare il server, spostarsi nella directory <TOMCAT_HOME/bin> ed eseguire il file startup.bat.\r\nL’applicazione sarà accessibile all’indirizzo: http://localhost:8080/servletexample/.\r\nSe il server Tomcat è in esecuzione su una porta diversa da 8080 è necessario modificare l’URL. \r\nLa figura mostra l’esecuzione dell’applicazione web da browser.\r\n\r\n<img src=\"http://www.servletworld.com/sites/default/files/figures/servlet-example-screem1.png\" width=\"500\" height=\"356\" /> \r\n\r\nPer visualizzare l’applicazione sulla piattaforma web.uniparthenope.it vai all’indirizzo:\r\n\r\nhttp://students.uniparthenope.it:8088/servletexample/\r\n\r\nInserire il proprio nome nel form HTML e cliccare sul bottone “Submitt Form”, apparirà una nuova finestra con un messaggio di benvenuto.\r\n\r\n<strong>Come funziona l’applicazione web</strong>\r\n\r\nQuando si accede all\'applicazione attraverso l’URL, ad esempio http://localhost:8080/servletexample/ , il server web lancia il file form.html.\r\n<li>Il path \\pages\\form.html è specificato in <welcome-file> nel file web.xml, in questo modo il web server lancia il file HTML di default.</li>\r\n<li>Quando si inserisce il nome dell’utente nel form HTML e si clicca il pulsante “Submitt Form”, il browser invia la richiesta HTTP POST con il parametro nome.</li>\r\n<li>In base al tag <servlet-mapping> nel file web.xml, il web container delega la richiesta alla classe WelcomeServlet.</li>\r\n<li>Ricevuta la richiesta, la WelcomeServlet:</li>\r\n<ol>Estrae il parametro dall\'oggetto HttpServletRequest.</ol>\r\n<ol>Genera il messaggio di benvenuto.</ol>\r\n<ol>Genera il documento HTML e scrive la risposta all’oggetto HttpServletResponse.</ol>\r\n<li>Il browser riceve il documento HTML come risposta e lo visualizza nella nuova finestra. </li>\r\n\r\n<strong>Descrizione del codice java</strong>\r\n\r\nLe API Servlet di Java si compongono di due packages: javax.servlet e javax.servlet.http. Il primo package contiene classi e interfacce indipendenti dal protocollo HTTP, mentre il secondo contiene classi e interfacce specifiche per il protocollo HTTP. \r\nPer implementare una qualsiasi Servlet è necessario importare le classi:\r\n\r\n<pre>import java.io.IOException;\r\nimport java.io.PrintWriter;\r\nimport javax.servlet.ServletConfig;\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;</pre>\r\n\r\nDichiariamo la classe servlet WelcomeServlet:\r\n\r\n<code>public class WelcomeServlet extends HttpServlet { </code>\r\n\r\nOgni classe servlet deve implementare l\'interfaccia javax.servlet.Servlet. La classe HttpServlet fornisce le specifiche HTTP per l\'interfaccia Servlet. Generalmente nelle applicazioni web, le Servlet implementano l\'interfaccia javax.servlet.Servlet indirettamente, mediante l\'estensione della classe javax.servlet.http.HttpServlet.\r\nIl metodo init() definisce il ciclo di vita di una Servlet (cioè il tempo che intercorre dal suo caricamento al suo rilascio) ed è definito nell’interfaccia javax.servlet.Servlet.\r\n\r\n<code>public void init(ServletConfig config) throws ServletException {\r\nsuper.init(config);\r\n}</code>\r\n\r\nPassiamo successivamente alla dichiarazione del metodo doPost(). Il metodo doPost() è definito nella classe HttpServlet ed è usato per manipolare l\'HTTP POST request. Questo metodo prende come argomenti gli oggetti HttpServletRequest e HttpServletResponse. \r\nHttpservletRequest incapsula l’inforamzione contenuta nella richiesta. L’ oggetto HttpServletResponse incapsula la risposta http.\r\n\r\n<code>protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {</code>\r\n\r\nLa classe HttpServlet fornisce l’implementazione del metodo service() che invoca o il metodo doGet() o il metodo doPost() basati sui metodi di richiesta http. Visto che si è usato il metodo POST nel nostro file HTML, la servlet chiamerà il metodo doPost().\r\nIl metodo get.Parameter() invocato sull’oggetto HttpServletRequest estrae il valore del parametro della richiesta.\r\n\r\n<code> String name = request.getParameter(\"name\"); </code>\r\n\r\nConcateniamo il messaggio di benvenuto al parametro.\r\n\r\n<code>String welcomeMessage = \"Welcome \"+name;</code>\r\n\r\nLa risposta generata è un tipo text/html \r\n\r\n<code>response.setContentType(\"text/html\");</code>\r\n\r\nUtilizziamo l’oggetto java.io.PrintWinter associato con ServeltResponse per scrivere e ritornare la risposta al client.\r\n<pre>\r\nPrintWriter out = response.getWriter();\r\n/*\r\n* Write the HTML to the response\r\n*/\r\nout.println(\"<html>\");\r\nout.println(\"<head>\");\r\nout.println(\"<title> A very simple servlet example</title>\");\r\nout.println(\"</head>\");\r\nout.println(\"<body>\");\r\nout.println(\"<h1>\"+welcomeMessage+\"</h1>\");\r\nout.println(\"<a href=/servletexample>\"+\"Click here to go back to input page \"+\"</a>\");\r\nout.println(\"</body>\");\r\nout.println(\"</html>\");\r\nout.close();\r\n</pre>\r\n\r\nIl metodo destroy() termina il cliclo di vita delle servlet ed è definto nell’interfaccia java.servlet.Servlet.\r\n\r\n<code>public void destroy() {}</code>\r\n\r\n\r\nRealizzato da:\r\n<cite>Massimiliano Magro\r\nValentina Pelliccia</cite>','','full_html'),('node','blog',0,40,48,'und',0,'<p>La seguente procedura è utile per installare il CMS Drupal nel proprio spazio web.</p>\r\n<ol>\r\n <li>\r\n Accesso tramite ssh ssh NOMEUTENTE@students.uniparthenope.it<br />\r\n </li>\r\n <li>\r\n Entrare nella directory public_html<br />\r\n cd public_html<br />\r\n </li>\r\n <li>\r\n Scaricare Drupal Puntare il proprio browser su: http://drupal.org/project/drupal<br />\r\n </li>\r\n <li>\r\n Copiare il collegamento del file desiderato, ad esempio http://ftp.drupal.org/files/projects/drupal-7.14.tar.gz<br />\r\n </li>\r\n <li>\r\n Scaricare il file compresso nel proprio spazio web:<br />\r\n wget http://ftp.drupal.org/files/projects/drupal-7.14.tar.gz<br />\r\n </li>\r\n <li>\r\n Decomprimere il file e rimuovere l'archivio di distribuzione tar -xvzf drupal-7.14.tar.gz rm *.gz<br />\r\n </li>\r\n <li>\r\n Consultare il file $HOME/README per le credenziali di accesso al database less $HOME/README annotare nome utente e password<br />\r\n </li>\r\n <li>\r\n Creare la directory sites/default/files<br />\r\n cd drupal-7.14<br />\r\n mkdir sites/default/files<br />\r\n cp ./sites/default/default.settings.php ./sites/default/settings.php<br />\r\n chmod a+w sites/default<br />\r\n </li>\r\n <li>\r\n Puntare il proprio browser su http://students.uniparthenope.it/~NOMEUTENTE/drupal-7.14/ e seguire le istruzioni.<br />\r\n </li>\r\n <li>\r\n Inserire le credenziali database ed utente (vedere file $HOME/README)<br />\r\n </li>\r\n <li>\r\n Fare click su Save and Continue<br />\r\n </li>\r\n <li>\r\n Impostare il titolo del portale e l'account di amministrazione<br />\r\n </li>\r\n <li>\r\n Fare click su Save and Continue</li>\r\n <li>\r\n Visitare il proprio portale CMS navigando su http://students.uniparthenope.it/~NOMEUTENTE/drupal-7.14/<br />\r\n Esempio: http://students.uniparthenope.it/~raffmont/drupal-7.14/</li>\r\n</ol>\r\n<p>Consultare http://www.drupal.org per maggiori informazioni.</p>\r\n','','full_html'),('node','forum',0,41,49,'und',0,'Prof io ho un problema. \r\nRiesco nell\' upload dei file (tramite WinSCP da linea di comando; lo stesso anche con il client FTP FileZilla) ma non riesco ad accedere via browser. \r\n\r\nQuando navigo sulla pagina students.uniparthenope.it/~0124000315 tutto ok, ma se cerco di spostarmi su una cartella viene tornato l\'errore \"404 Not Found\".\r\nIdee su come possa risolvere ? \r\n\r\nGrazie in anticipo','','filtered_html'),('node','blog',0,42,50,'und',0,'Questa procedura è utile quando si lavora in locale sul proprio PC e poi si desidera effettuare il deployment di quanto creato sulla piattaforma students.uniparthenope.it\r\n\r\n1. Scegliere un layout e scaricarlo sul proprio PC\r\nAd esempio: http://superdit.com/2011/04/13/34-free-clean-html-css-website-layout-templates/\r\n\r\n2. Utilizzare un editor HTML come Aptana Studio (http://aptana.com/) per effettuare le modifiche necessarie\r\n\r\n3. Utilizzare un client FTP come Filezilla () per trasferire i file nella propria directory\r\nHostname: students.uniparthenope.it\r\nUsername: NOMEUTENTE (ad esempio la proopria matricola)\r\nPassword: la password wifi/servizi/posta\r\nPort: 22\r\nFare click su quick connect\r\n\r\n4. Copiare i file sul server\r\nA connessione avvenuta impostare\r\nRemote path: /home/NOMEUTENTE/public_html\r\nLocal path: la directory che contiene i file da trasferire\r\nFare click con il pulsante destro sulla directory da trasferire, selezionare Upload\r\nAttendere il completamento della copia.\r\n\r\n5. Prova di quanto fatto\r\nPuntare il proprio browser sulla directoy appena creata.\r\nAd esempio http://students.uniparthenope.it/~raffmont/myhome/\r\n\r\nPer altri client come Windows Secure Copy (WinSCP, http://winscp.net/) seguire una procedura analoga.','','filtered_html'),('node','forum',0,43,51,'und',0,'Gentile Prof,\r\nvolevo utilizzare il servizio di hosting linux messo a disposizione. Ho spuntato dal mio profilo la casella per attivare lo spazio, ma accedendo da terminale mi dice: \"Permission denied, please try again.\"\r\n\r\nOra mi chiedo se bisogna aspettare l\'attivazione dello spazio, oppure sbaglio qualcosa?\r\n\r\nRingrazio in anticipo.','','filtered_html'),('node','forum',0,44,52,'und',0,'Nello script di attivazione dei servizi è possibile fare in modo che l\'utente riceva un messaggio privato da parte dell\'amministratore come notifica che un servizio è stato attivato o disattivato?','','filtered_html'),('node','blog',0,46,54,'und',0,'<B>XML (eXtended Markup Language)</B> è lo standard più utilizzato ed universalmente riconosciuto per la scrittura dei dati.\r\n\r\nPer Java sono state sviluppare numerose librerie in grado di <B>interagire con i file XML</B>, ma un posto di particolare rilievo merita JDOM, essendo di semplice utilizzo, ma al tempo stesso molto potente e completa.\r\n\r\nUtilizzando JDOM sarete in grado di:\r\n<UL> <LI><P ALIGN=LEFT STYLE=\"margin-bottom: 0cm; font-style: normal; font-weight: normal; widows: 2; orphans: 2\"> Scorrere un file XML, dalla radice alle foglie\r\n <LI><P ALIGN=LEFT STYLE=\"font-style: normal; font-weight: normal; widows: 2; orphans: 2\"> Scrivere un file XML, definendone la struttura dell’albero senza vincoli di alcun tipo.</UL>\r\n\r\nLa libreria, nella sua versione 2.0.2, può essere scaricata al seguente <A HREF=\"http://www.jdom.org/dist/binary/jdom-2.0.2.zip\"> link</A>\r\n\r\nTutta la documentazione ed altre versione è possibile reperirla sul sito <A HREF=\"http://www.jdom.org/\"> ufficiale</A>\r\n\r\n<B>Leggere un file XML</B>\r\n\r\nPer cominciare bisogna creare un oggetto SAXBuilder:\r\n\r\n <pre><code>SAXBuilder builder = new SAXBuilder(); </code></pre>\r\n\r\nQuesto oggetto ci fornirà il metodo build che si occupa di effettuare il parsing del file XML passatogli in argomento, restituendolo in un oggetto Document\r\n\r\n<pre><code> Document doc = builder build(new File(name.xml)); </code></pre>\r\n\r\nPer poter riuscire a scorrere la struttura creata nell’oggetto doc è necessario ottenere la root del documento(Ogni file XML dovrebbe avere un unica root):\r\n<pre> <code> Element rootElement = document.getRootElement(); </code></pre>\r\n\r\nLa classe Element, che possiamo definire il cuore di JDom, ci fornisce funzionalità molto interessanti come:\r\n<UL> <LI><P ALIGN=LEFT STYLE=\"font-style: normal; font-weight: normal; widows: 2; orphans: 2\"> Ottenere tutti gli elementi figli di un elemento:\r\n<pre><code>\r\nList children = rootElement.getChildren();\r\nIterator iterator = children.iterator();\r\nwhile (iterator.hasNext()){\r\n Element element = (Element)iterator.next();\r\n /...\r\n}\r\n</code></pre>\r\n<LI><P ALIGN=LEFT STYLE=\"font-style: normal; font-weight: normal; widows: 2; orphans: 2\">Ottenere un elemento figlio di un elemento:</FONT></FONT></FONT></P>\r\n<pre><code>Element child =rootElement.getChild(“namechild”);</code></pre>\r\n<LI><P ALIGN=LEFT STYLE=\"font-style: normal; font-weight: normal; widows: 2; orphans: 2\">Ottenere tutti gli attributi di un elemento, vi ricordo che gli attributi sono composti da due campi(name e value):\r\n<pre><code> List attributes = rootElement.getAttributes();\r\nIterator iterator = children.iterator();\r\nwhile(iterator.hasNext()){\r\n Attribute attribute = (Attribute)iterator.next();\r\n String name = attribute.getName();\r\n String value = attribute.getValue();\r\n //... \r\n}\r\n</code></pre>\r\n <LI><P ALIGN=LEFT STYLE=\"font-style: normal; font-weight: normal; widows: 2; orphans: 2\">Ottenere un attributo di un elemento e/o il suo valore:\r\n<pre> <code>Attribute attribute = rootElement.getAttribute(“name”);\r\nString value = rootElement.getAttributeValue(“name”);\r\nint value =attribute.getIntValue();\r\n//...\r\n}\r\n</code></pre>\r\n <LI><P ALIGN=LEFT STYLE=\"font-style: normal; font-weight: normal; widows: 2; orphans: 2\">Ottenere il testo compreso fra i tag di apertura e chiusura dell’elemento:\r\n<pre><code> String text = rootElement.getText();</code></pre>\r\n</UL>\r\n\r\n<B>Scrivere un file XML</B>\r\n\r\nPer poter scrivere un file XML gli oggetti da utilizzare sono più o meno\r\ngli stessi. Occorre pertanto creare un oggetto Document e assegnargli\r\nun elemento in fase di costruzione:</SPAN></SPAN></FONT></FONT></FONT></H2>\r\n<pre><code>\r\nElement rootElement = new Element("ROOT");\r\nDocument document = new Document(rootElement);\r\n</code></pre>\r\n\r\nPossiamo quindi <B>assegnare all’elemento radice, attributi e figli</B>\r\n<pre><code>\r\nElement child1 = new Element("CHILD1");\r\nrootElement.addContent(child1); \r\nElement child2 = new Element("CHILD2");\r\nchild2.setText("TextChild2");\r\nchild1.addContent(child2);<BR>\r\nrootElement.setAttribute("AName","AVal");\r\n</code></pre>\r\n\r\nLa struttura create nell’oggetto document sarà la seguente:\r\n<pre> <code>\r\n<ROOT AName="AVal">\r\n <CHILD1> \r\n <CHILD2>Textchild2</CHILD2>\r\n </CHILD1>\r\n</ROOT> \r\n </code></pre>\r\n\r\nPer scrivere la struttura creata, abbiamo bisogno dalla classe XMLOutputter, che si preoccupa di eseguire l’output della struttura XML creata:\r\n<pre> <code>\r\nXMLOutputter outputter = new XMLOutputter();\r\noutputter.output(document, new FileOutputStream("name.xml"));\r\n</code></pre>\r\n\r\nIl metodo output prende in argomento l’oggetto Document e un oggetto OutputStream su cui scrivere il document. Ovviamete il file se non esiste, esso viene creato.\r\n\r\nPer poter manipolare il file basta unire le nozioni appena imparate per la lettura con quelle della scrittura.\r\n\r\n<B>Fare il parsing dell\' XML</B>\r\n<pre> <code>\r\nSAXBuilder builder = new SAXBuilder();\r\nDocument doc = builder.build(“name”);\r\n</code></pre>\r\n\r\n<B>Ottenere la root del documento</B>\r\n<pre> <code>Element root = doc.getRootElement();</code></pre>\r\n\r\n<B>Creare nuovi figli, e nuovi attributi</B>\r\n<pre> <code>\r\nElement newChild = new Element("NewChild").setText("NewText");\r\nAttrbute newAtt = new Attribute(“name”,”value”);\r\n</code></pre>\r\n\r\n<B>Aggiungere gli attributi al nuovo figlio</B>\r\n<pre> <code>newChild.setAttribute(newAtt);</code></pre>\r\n\r\n<B>Aggiungere il nuovo figlio alla root</B>\r\n<pre> <code> root.addContent(newChild);</code></pre>\r\n\r\n<B>Scrivere la struttura manipolata</B>\r\n<pre> <code>\r\nXMLOutputter outputter = new XMLOutputter();\r\noutputter.output(document, new FileOutputStream("name.xml"));\r\n</code></pre>','','full_html'),('node','blog',0,47,69,'und',0,'<p><strong>L'SDK Android utilizzato è 2.2 (API Level 10).</strong></p>\r\n<p><br />\r\n L'esempio esplicita come ottenere i dati relativi al piano di studi di uno studente di cui riportiamo di seguito le specifiche:</p>\r\n<p>GET piano di studi per uno studente:</p>\r\n<p>Operazione eseguita: Restituisce il piano di studi di un determinato studente.</p>\r\n<p>Metodo http: GET URI: http://api.uniparthenope.it:9998/student/exams/studyplanning</p>\r\n<p>Esempio di uso: http://api.uniparthenope.it:9998/student/exams/studyplanning.json?user=0108000xxx&password=xxxxxxx è richiesta l’autentificazione per cui all’API, per cui vengono inviati due stringhe rappresentanti ”user” e “password” dell’utente di cui si vuole visualizzare il piano di studi.</p>\r\n<p>Ma passiamo all'analisi del codice:</p>\r\n<p><strong>Le seguenti importazioni sono per il metodo di lettura del response dell'API:</strong></p>\r\n<pre>\r\nimport java.io.InputStream;\r\nimport java.io.InputStreamReader;\r\nimport java.io.BufferedReader;\r\nimport java.io.IOException;\r\nimport org.apache.http.HttpEntity;\r\nimport org.apache.http.HttpResponse;\r\nimport org.apache.http.StatusLine;\r\nimport org.apache.http.client.ClientProtocolException;\r\nimport org.apache.http.client.HttpClient;\r\nimport org.apache.http.client.methods.HttpGet;\r\nimport org.apache.http.impl.client.DefaultHttpClient;\r\n</pre>\r\n<p><strong>le seguenti occorrono invece per effettuare il parsing della stringa ottenuto dall'operazione GET:</strong></p>\r\n<pre>\r\nimport org.json.JSONArray;\r\nimport org.json.JSONObject;\r\n</pre>\r\n<p>Con il codice seguente memorizzo il risultato dell'operazione di GET in un array di elementi JSON.</p>\r\n<p>Java efettua direttamente le operazioni di parsing attraverso delle apposite classi.</p>\r\n<p><strong>Attenzione il parsing JSON necesssita sia inserito in un blocco try {} catch{}</strong></p>\r\n<p>Ottengo in tal modo la lista degli esami del piano di studi di un utente le cui credenziali sono memorizzate in due stringhe: user e password.</p>\r\n<p><strong>urlAPIFunction contiene la stringa dell'API considerata</strong></p>\r\n<pre>\r\ntry { \r\n urlAPIfunction="http://192.167.9.47:9998/student/exams/studyplanning.json?\r\n user="+user.toString()+"&password="+password.toString(); \r\n String readStringApiGetJson = readStringApiJson(urlAPIfunction); JSONObject jObject = new JSONObject(readStringApiGetJson); \r\n JSONArray jsonArray = jObject.getJSONArray("studyplan"); \r\n for (int i = 0; i < jsonArray.length(); i++) { \r\n JSONObject jsonObject = jsonArray.getJSONObject(i); \r\n ...... \r\n ...... \r\n jsonObject.getString("Insegnamento"); \r\n jsonObject.getString("Esito"); \r\n jsonObject.getString("CFU"); \r\n jsonObject.getString("TAF"); \r\n jsonObject.getString("SSD")" \r\n ...... \r\n ...... \r\n }\r\n\r\n</pre>\r\n<p>All'interno del ciclo possono essere utilizzati i dati ottenuti e contenuti nell'array JSON di nome studyplan.</p>\r\n<p>Le operazioni potrebbero ad esempio essere il riempimento di una ListView per lo scrolling verticale dei risultati ottenuti.</p>\r\n<p>Il cuore del codice è il metodo readStringApiJson per la lettura della response del metodo GET all'API.</p>\r\n<p>L'output JSON è restituito in una stringa ottenuta dalla classe StringBuilder.</p>\r\n<p>StringBuilder è utilizzata per gestire catene di testo mutabili (in particolare del metodo append e dei metodi replace).</p>\r\n<pre>\r\nprivate String readStringApiJson(String urlAPI) { \r\n StringBuilder builder = new StringBuilder(); \r\n HttpClient client = new DefaultHttpClient(); \r\n HttpGet httpGet = new HttpGet(urlAPI); \r\n try { \r\n HttpResponse response = client.execute(httpGet); \r\n StatusLine statusLine = response.getStatusLine(); \r\n int statusCode = statusLine.getStatusCode(); \r\n if (statusCode == 200) { \r\n HttpEntity entity = response.getEntity(); \r\n InputStream content = entity.getContent(); \r\n BufferedReader reader = new BufferedReader( new InputStreamReader(content)); \r\n String line; \r\n while ((line = reader.readLine()) != null) { \r\n builder.append(line); \r\n } \r\n } else { \r\n if (statusCode==240) { \r\n builder.append("Null"); \r\n } \r\n }\r\n } catch (ClientProtocolException e) { \r\n e.printStackTrace();\r\n } catch (IOException e) { \r\n e.printStackTrace(); \r\n } \r\n return builder.toString(); \r\n } \r\n</pre>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>','<p><strong>Il progeto API UniParthenope è ormai consolidato.</strong> Le API messe a disposizione dell'utenza sono di utilizzo immediato . <strong>Vediamo un esempio di utilizzazione di una delle API a disposizione con Android.</strong></p>\r\n','full_html'),('node','blog',0,49,74,'und',0,'<p>Questa guida mostra come creare un semplice modulo per Drupal 7.x.</p>\r\n<p>Risulterà utile per dare spazio alla propria creatività sviluppando applicazoni web integrate nel CMS D7 senza preoccuparsi di componenti come la gestione dei ruoli/utenti, i temi, l'aggiornamento delle funzionalità di base.</p>\r\n<p>L'idea è creare un semplice modulo che permette di avere un elenco delle home web degli utenti, ovvero l'url personale di chi ha attivato il servizio Hosting Linux offerto dall'Ateneo attraverso il portale http://students.uniparthenope.it</p>\r\n<p>Si assume operatività da shell dei comandi.</p>\r\n<p>Consideriamo di default la directory di insallazione di Drupal.</p>\r\n<p>Questo significa che se, ad esempio, Durpal è installato in /home/NOMEUTENTE/public_html/drupal-7.14/, la directory /sites sarà /var/www/drupal-7.14/sites</p>\r\n<p><strong>1. Impostare la root di Drupal</strong></p>\r\n<pre>\r\nexport DRUAPL_ROOT=$HOME/public_html/drupal-7.14</pre>\r\n<p> </p>\r\n<p><strong>2. Raggiungere la directory dei moduli</strong></p>\r\n<pre>\r\ncd $DRUPAL_HOME/sites/all/modules</pre>\r\n<p> </p>\r\n<p>3. Creare la directory del modulo</p>\r\n<pre>\r\nmkdir userhomes\r\ncd userhomes</pre>\r\n<p> </p>\r\n<p><strong>4. Creazione del file di descrizione del modulo</strong></p>\r\n<pre>\r\ncat > userhomes.info\r\n; $Id$\r\nname = userhomes\r\ndescription = Show public homes\r\npackage = Sebeto modules\r\ncore = 7.x\r\nfiles[] = userhhomes.module</pre>\r\n<p> </p>\r\n<p>[CTRL]+[D]</p>\r\n<p><strong>5. Creazione del file di implementazione del modulo</strong></p>\r\n<pre>\r\ncat >userhomes.php\r\n\r\n<?php\r\n\r\n function userhomes_menu() {\r\n\r\n $items = array();\r\n\r\n $items['userhomes'] = array( 'title' => t('User Homes'),'page callback' => 'userhomes_output', 'access arguments' => array('access content'), ); return $items;\r\n\r\n }\r\n<p> </p>\r\n<p> /* * Display output */<br />\r\n function userhomes_output() {<br />\r\n // open this directory<br />\r\n $myDirectory = opendir("/home/"); // get each entry while($entryName = readdir($myDirectory)) { $dirArray[] = $entryName; } // close directory closedir($myDirectory); // count elements in array $indexCount = count($dirArray); // sort 'em sort($dirArray); header('Content-type: text/plain; charset=UTF-8'); header('Content-Disposition: inline'); $htmlOut=""; $htmlOut.=""; for($index=0; $index < $indexCount; $index++) { if (substr("$dirArray[$index]", 0, 1) != ".") { // don't list hidden files $htmlOut.=""; $htmlOut.="\\n"; } } $htmlOut.= "</pre></p>\r\n<table>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <a>$dirArray[$index]</a></td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p>"; return $htmlOut; } ?></p>\r\n<p>[CTRL]+[D]</p>\r\n<p><strong>6. Attivare e provare il modulo</strong><br />\r\n Fare login come amministratore e selezionare il menu Modules<br />\r\n Attivare il modulo<br />\r\n Puntare il proprio browser su http://students.uniparthenope.it/~NOMEUTENTE/drupal-7.14/?q=userhomes<br />\r\n Esempio: http://students.uniparthenope.it/~raffmont/drupal-7.14/?q=userhomes</p>\r\n<p>Questo esempio porta alla creazione di un modulo minimale che non rispetta appieno le linee guida da seguire per moduli compatibili con Drupal 7.</p>\r\n<p>Maggiori informazioni su <a href=\"http://drupal.org/node/361112\">http://drupal.org/node/361112</a></p>\r\n','','full_html'),('node','forum',0,50,75,'und',0,'Salve a tutti, ho scaricato il client di ownCloud su windows. \r\nAl momento della configurazione per la connessione al server, inserisco l\' url fornito http://box.uniparthenope.it/remote.php/webdav/\r\nma ho un errore di connessione: \"failed to connect\".\r\n\r\nQualcuno sa come risolvere? \r\n\r\nGrazie anticipatamente, Flavio\r\n\r\n\r\n\r\nEDITO : Mi rispondo da solo, l\' indirizzo da immetter al momento della configurazione è semplicemente http://box.uniparthenope.it','','filtered_html'),('node','book',0,51,79,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Recupera tutti i modelli disponibili</h3>\r\n<h4>Descrizione</h4>La chiamata restituisce l\'elenco dei modelli disponibili<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:9990/ccmmma/models/getmodels</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Formato risorse</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Autenticazione</h4>non richiesta<h4>Entità richieste</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \r\n </pre>\r\n \r\n<h4>Esempio</h4>\r\ncurl -X GET http://api.uniparthenope.it:9990/ccmmma/models/getmodels.json\r\n<h4>Risposta</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Entità restituite</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n {\"models\":{\"wrf3\":\"Meteo bassa risoluzione 144h\",\"wrf5\":\"Meteo alta risoluzione 24h\",\"clm3\":\"Vento altissima risoluzione 24h\",\"chm3\":\"Qualita\' dell\'aria bassa risoluzione 120h\",\"ww33\":\"Moto ondoso bassa risoluzione 144h\"}}\r\n \r\n </pre>\r\n L\'API restituisce l\'elenco dei modelli in produzione.\r\n </body>','','full_html'),('node','blog',0,53,81,'und',0,'<p>Le seguenti parti di codice servono per effetture semplici elaborazioni con i dati meteo prodotti dal CCMMMA (http://meteo.uniparthenope.it Centro Campano per il Monitoraggio e la Modellistica Marina e Atmosferica).</p>\r\n<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706074320.png\" /><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706074335.png\" /><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706074343.png\" /></p>\r\n<pre>\r\n function uvToKnots($u10m, $v10m) {\r\n\r\n return (round(sqrt($u10m * $u10m + $v10m * $v10m)*1.94));\r\n\r\n }\r\n\r\n function uvToNDegs($u10,$v10m) {\r\n return (round(57.29578*atan2($u10m,$v10m)+180,2));\r\n }\r\n\r\n function getSkyIconText($wtext, $lang, $clf, $crh) {\r\n $suf='.png';\r\n $wtexti=0;\r\n if ($crh < 0.1) {\r\n if ($clf < 12.5) {\r\n $wicon='sunny';\r\n wtexti=0;\r\n } elseif ($clf < 37.5) {\r\n $wicon='cloudy1';\r\n $wtexti=1;\r\n } elseif ($clf < 62.5) {\r\n $wicon='cloudy2';\r\n $wtexti=2;\r\n } elseif ($clf < 87.5) {\r\n $wicon='cloudy4';\r\n $wtexti=3;\r\n } else {\r\n $wicon='cloudy5';\r\n $wtexti=4;\r\n }\r\n } elseif ($crh < 2) {\r\n $wicon='shower1';\r\n $wtexti=5;\r\n } elseif ($crh < 10) {\r\n $wicon='shower2';\r\n $wtexti=6;\r\n } else {\r\n $wicon='shower3';\r\n $wtexti=7;\r\n }\r\n\r\n //Weather icons urls\r\n $wiconurl='http://ccmmma.uniparthenope.it/sites/all/modules/home_page/icons/new/'.$wicon.$suf;\r\n $wtextLabel=$wtext[$lang][$wtexti];\r\n return(Array($wiconurl,$wtextLabel));\r\n }\r\n\r\n function knotsToBeaufort($ws10) {\r\n $bIndex=0;\r\n if ( $ws10 == 0) $bIndex=0;\r\n else if ( $ws10 >= 1 && $ws10<= 3) $bIndex=1;\r\n else if ( $ws10 >= 4 && $ws10<= 6) $bIndex=2;\r\n else if ( $ws10 >= 7 && $ws10<=10) $bIndex=3;\r\n else if ( $ws10 >=11 && $ws10<=16) $bIndex=4;\r\n else if ( $ws10 >=17 && $ws10<=21) $bIndex=5;\r\n else if ( $ws10 >=22 && $ws10<=27) $bIndex=6;\r\n else if ( $ws10 >=28 && $ws10<=33) $bIndex=7;\r\n else if ( $ws10 >=34 && $ws10<=40) $bIndex=8;\r\n else if ( $ws10 >=41 && $ws10<=47) $bIndex=9;\r\n\r\n return ($bIndex);\r\n }\r\n\r\n function knotsToText($windSS, $lang, $ws10) {\r\n $bIndex=knotsToBeaufort($ws10);\r\n\r\n return ($windSS[$lang][$bIndex]);\r\n }\r\n\r\n function ndegsToIndex($wd10) {\r\n\r\n if ( $wd10 >= 0 && $wd10< 11.25) $wd10i=0;\r\n if ( $wd10 >= 11.25 && $wd10< 33.75) $wd10i=1;\r\n if ( $wd10 >= 33.75 && $wd10< 56.25) $wd10i=2;\r\n if ( $wd10 >= 56.25 && $wd10< 78.75) $wd10i=3;\r\n if ( $wd10 >= 78.75 && $wd10<101.25) $wd10i=4;\r\n if ( $wd10 >=101.25 && $wd10<123.75) $wd10i=5;\r\n if ( $wd10 >=123.75 && $wd10<146.25) $wd10i=6;\r\n if ( $wd10 >=146.25 && $wd10<168.75) $wd10i=7;\r\n if ( $wd10 >=168.75 && $wd10<191.25) $wd10i=8;\r\n if ( $wd10 >=191.25 && $wd10<213.75) $wd10i=9;\r\n if ( $wd10 >=213.75 && $wd10<236.25) $wd10i=10;\r\n if ( $wd10 >=236.25 && $wd10<258.75) $wd10i=11;\r\n if ( $wd10 >=258.75 && $wd10<281.25) $wd10i=12;\r\n if ( $wd10 >=281.25 && $wd10<303.75) $wd10i=13;\r\n if ( $wd10 >=303.75 && $wd10<326.25) $wd10i=14;\r\n if ( $wd10 >=326.25 && $wd10<348.75) $wd10i=15;\r\n if ( $wd10 >=348.75 && $wd10<359.9999) $wd10i=0;\r\n\r\n return($wd10i);\r\n }\r\n\r\n function ndegsToText($windDS, $lang, $wd10) {\r\n $wd10i=ndegsToIndex($wd10);\r\n return ($windDS[$wd10i]);\r\n }\r\n\r\n $windDS = array("N", "NNE", "NE", "ENE",\r\n "E", "ESE", "SE", "SSE",\r\n "S", "SSW", "SW", "WSW",\r\n "W", "WNW", "NW", "NNW");\r\n\r\n $windSS["it"][0]="Calma";\r\n $windSS["it"][1]="Bava di vento";\r\n $windSS["it"][2]="Brezza leggera";\r\n $windSS["it"][3]="Brezza tesa";\r\n $windSS["it"][4]="Vento moderato";\r\n $windSS["it"][5]="Vento teso";\r\n $windSS["it"][6]="Vento fresco";\r\n $windSS["it"][7]="Vento forte";\r\n $windSS["it"][8]="Burrasca";\r\n $windSS["it"][9]="Burrasca forte";\r\n\r\n $windSS["en"][0]="Calm";\r\n $windSS["en"][1]="Light air";\r\n $windSS["en"][2]="Light breeze";\r\n $windSS["en"][3]="Gentle breeze";\r\n $windSS["en"][4]="Moderate breeze";\r\n $windSS["en"][5]="Fresh breeze";\r\n $windSS["en"][6]="Strong breeze";\r\n $windSS["en"][7]="Near gale";\r\n $windSS["en"][8]="Gale";\r\n $windSS["en"][9]="Strong gale";\r\n\r\n $wtext["it"][0]="Sereno";\r\n $wtext["it"][1]="Poco nuvoloso";\r\n $wtext["it"][3]="Nuvoloso";\r\n $wtext["it"][3]="Molto nuvoloso";\r\n $wtext["it"][4]="Coperto";\r\n $wtext["it"][5]="Rovesci";\r\n $wtext["it"][6]="Pioggia";\r\n $wtext["it"][7]="Forti pioggie";\r\n\r\n $wtext["en"][0]="Sunny";\r\n $wtext["en"][1]="Mainly clean";\r\n $wtext["en"][2]="Partially cloudy";\r\n $wtext["en"][3]="Cloudy";\r\n $wtext["en"][4]="Strongly Cloudy";\r\n $wtext["en"][5]="Shower";\r\n $wtext["en"][6]="Rain";\r\n $wtext["en"][7]="Tunderstones";\r\n\r\n</pre>\r\n<p>Potrebbe essere utile creare librerie per i diversi linguaggi di programmazione.</p>\r\n<p>I dati possono essere recuperati attraverso le API documentate <a href=\"http://students.uniparthenope.it/?q=node/17\">qui</a>. </p>\r\n<p><a href=\"/sites/default/files/images/20122706082258.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706082258.png\" /></a></p>\r\n','','full_html'),('node','forum',0,54,82,'und',0,'<p>Ciao a tutti. <br />\r\n Volevo sapere se è possibile "proteggere" i file caricati su public_html, cioè permetterne la lettura, e quindi la navigazione, ma non permettere il download.</p>\r\n<p>Grazie a tutti!</p>\r\n','','filtered_html'),('node','new',0,56,84,'und',0,'<p>E' stato appena attivato un nuovo <a href=\"http://web.uniparthenope.it/?q=forum/7\">forum</a> sul calcolo ad alte prestazioni mediante l'uso di device di tipo GPU sia mediante <a href=\"http://en.wikipedia.org/wiki/OpenCL\" target=\"_blank\">OpenCL</a> sia attraverso <a href=\"http://www.nvidia.com/object/cuda_home_new.html\" target=\"_blank\">CUDA</a>.</p>\r\n<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706102350.jpeg\" /></p>\r\n','','filtered_html'),('node','book',0,57,87,'und',0,'<p>Questo tutorial consente di creare moduli Drupal 7.x</p>\r\n<p>Un modulo è una collezione di funzioni collegate con Drupal che provvedono al supporto per funzionalità aggiuntive per una specifica installazione Drupal. Al termine di questo tutorial si è in grado di creare un modulo base da usare come modello per applicazioni future.</p>\r\n<p>Questo tutorial non prepara per la creazione di moduli da rilasciare pubblicamente, ad esempio non compre argomenti come il caching, i permessi e la sicurezza. Usare questo tutorial come un punto di partenza.</p>\r\n<p><strong>Prerequisiti:</strong></p>\r\n<ul>\r\n <li>\r\n Conoscenza di base PHP incluso l'approccio OOP</li>\r\n <li>\r\n Conoscenza di base di database relazionali e SQL</li>\r\n <li>\r\n Gestire le installazioni di Drupal 7.x</li>\r\n <li>\r\n Accesso ad un server web</li>\r\n</ul>\r\n<p> </p>\r\n<p>Non c'è assunzione di conoscenza riguardo allo sviluppo di moduli Drupal.</p>\r\n<p> </p>\r\n','','filtered_html'),('node','book',0,58,93,'und',0,'<p><strong>Dare un nome al proprio modulo</strong></p>\r\n<p>Il primo passo nella creazione di un modulo consiste nello sceglierne un nome conciso e descrittivo. Questo nome sarà usato per tutti i file e come radice dei nomi delle function del modulo. Il nome deve incominciare con una lettera e deve contenere solo caratteri minuscoli ed eventualemente l'underscore (_). Ad esempio "current_posts" è un valido nome di modulo.</p>\r\n<p><strong>Nota importante:</strong> Assicurarsi di seguire la linea guida che prevede l'uso dei soli caratteri minuscoli poichè il nome del modulo rappresenta la radice delle function del modulo. Quando si implementa un hook (aggancio), Drupal riconossce le funzioni solo se hanno un nome la cui radice è il nome del file che implementa il modulo.</p>\r\n<p>E' anche importante che il modulo non abbia lo stesso nome di un qualsiasi altro nome o tema presente nella propria installazione.</p>\r\n<p><strong>Creare la directory ed il file del modulo</strong></p>\r\n<p>Supponiamo che il nome scelto sia "current_posts":</p>\r\n<ul>\r\n <li>\r\n Creare il folder del nome nel percorso di installazione.<br />\r\n <pre>\r\nmkdir sites/all/modules/current_posts</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Creare il file PHP con l'implementazione del modulo<br />\r\n <pre>\r\ncd sites/all/modules/current_posts\r\ntouch current_posts.module</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Aggiungere un tag di apertura PHP nel file current_posts.module<br />\r\n <pre>\r\n<?php</pre>\r\n </li>\r\n</ul>\r\n<p><strong>Stadard di codifica</strong></p>\r\n<p>Lo standard di codifica impone di non aggiungere nel file .module il tag di chiusura ?>. Se si include il tag di chiusura si va in contro a problemi di runtime nel caso di alcuni server. Negli esempio è spesso visibile il tag di chiusura unicamente per motivi legati alla formattazione del codice e non va incluso nel codice reale.</p>\r\n<p>Tutte le funzioni del modulo sono usate attraverso gli hook o agganci secondo la tecnica detta di callback. Le funzioni di hook sono così chiamate {nomemodulo}_{nomefunzione}, dove il nome della funzione è un suffisso predefinito che indica l'evento in risposta del quale la function viene invocata dal runtime di Drupal.</p>\r\n<p>Drupal chiamerà le funzioni di hook per recuperare dati specifici: il fatto di avere nomi aderenti ad uno standard sintattico e semantico consente a Drupal di sapere quali funzioni invocare.</p>\r\n<p> </p>\r\n','','full_html'),('node','forum',0,59,89,'und',0,'<p>Salve a tutti! <br />\r\n Ho un problema: </p>\r\n<p>ho creato uno script .php in locale che funziona tranquillamente (videoconferenza).<br />\r\n <br />\r\n Al momento dell' upload su Sebeto, da errore 500 server interno,<br />\r\n <br />\r\n Forse è dovuto all' uso della variabile globale $_SERVER ["REMOTE_ADDR"], anche se in un altro script l' ho utilizzata senza problemi.<br />\r\n <br />\r\n Idee?</p>\r\n','','filtered_html'),('node','page',0,60,90,'und',0,'<p>Questa pagina raccoglie gli strumenti di sviluppo messi a disposizione dal portale.</p>\r\n<ul>\r\n <li>\r\n Elenco delle <a href=\"/?q=userhomes\">home</a> web attive</li>\r\n <li>\r\n File <a href=\"/?q=apache2logs\">log</a> del server Apache2</li>\r\n <li>\r\n <a href=\"?q=node/63\">Console</a> per le API REST</li>\r\n</ul>\r\n<p>Altri strumenti saranno attivati.</p>\r\n','','full_html'),('node','forum',0,61,91,'und',0,'<p>Prof,</p>\r\n<p>volevo gentilmente sapere se lasciare i tag html all'interno del file xml, oppure pulito di ogni tag?</p>\r\n<p> </p>\r\n<p> </p>\r\n','','filtered_html'),('node','book',0,62,94,'und',0,'<p>c</p>\r\n','','filtered_html'),('node','page',0,63,95,'und',0,'<p>La Socrata Open Data API console permette di sperimentare le chiamate alle API senza scrivere una sola line di codice.</p>\r\n<p>Usando una semplice sintassi, puoi provare differenti invocazioni e parametri prima di sviluppare un'applicazione di maggiore complessità.</p>\r\n<p><strong>Chiamate supportate</strong></p>\r\n<p>La SODA Console supporta attualmente le seguenti operazioni:</p>\r\n<ul>\r\n <li>\r\n <pre>\r\nget("<em>Service Path</em>", {"<em>Parameter Name</em>":"<em>Parameter Value</em>", ...})</pre>\r\n Esegue una richest di tipo <code>GET</code>e restituisce la risposta del server.</li>\r\n <li>\r\n <pre>\r\npost("<em>Service Path</em>", {"<em>Parameter Name</em>":"<em>Parameter Value</em>", ...}, "<em>Request Body</em>")</pre>\r\n Esegue una rchiesta di tipo <code>POST</code>e restituisce la risposta del server</li>\r\n</ul>\r\n<p><iframe frameborder=\"0\" height=\"500\" scrolling=\"yes\" src=\"http://opendata.socrata.com/console.html\" width=\"700\"></iframe></p>\r\n<p>Questa console funziona grazie agli strumenti messi a disposizione da <a href=\"http://www.socrata.com\" target=\"_new\">Socrata Inc</a></p>\r\n<p>Query di esempio</p>\r\n<ul>\r\n <li>\r\n Recupera le previsioni meteo sul Comune di Napoli:\r\n <pre>\r\n<a class=\"exec\" href=\"http://api.uniparthenope.it:9990/ccmmma/timeseries.json&region=com63049\">get("http://api.uniparthenope.it:9990/ccmmma/timeseries.json",{ "region":"com63049"})</a></pre>\r\n </li>\r\n <li>\r\n Recupera il proprio piano di studi (servono le credenziali UniParthenope):\r\n <pre>\r\n<a class=\"exec\" href=\"http://api.uniparthenope.it:9998/student/exams/studyplanning.json?user=0NNNNNNNNN&password=XXXXXX\">get("http://api.uniparthenope.it:9998/student/exams/studyplanning.json",{"user":"0NNNNNNNNN","password":"XXXXXX"})</a></pre>\r\n </li>\r\n <li>\r\n Data una palina ANM visualizza i bus in arrivo:\r\n <pre>\r\n<a class=\"exec\" href=\"http://api.uniparthenope.it:10018/oraribus.json?ID_Palina=3344&ID_Linea=C40\">get("http://api.uniparthenope.it:10018/oraribus.json", {"ID_Palina":"3344","ID_Linea":"C40"})</a></pre>\r\n </li>\r\n</ul>\r\n','','full_html'),('node','new',0,64,96,'und',0,'<p>E' stata appena attivata la console API REST basata su <a href=\"http://dev.socrata.com/\" target=\"_blank\">SODA</a>.</p>\r\n<p>E' disponibile qui: http://web.uniparthenope.it/?q=node/63</p>\r\n','','filtered_html'),('node','blog',0,65,97,'und',0,'<p>Questo tutorial, diviso in due parti, servirà a realizzare un piccolo e semplice modulo ultra-low cost per il data logging ambientale.</p>\r\n<p>In particolare andremo a campionare temperatura e quantità di luce, scrivendo i dati in un log file memorizzato su SD-Card.</p>\r\n<p>Verrà utilizzata la piattaforma open hardware e software “Arduino”.</p>\r\n<p>Info: <a href=\"http://arduino.cc\" target=\"_blank\">arduino.cc</a></p>\r\n<p> </p>\r\n<p><strong>Hardware:</strong></p>\r\n<p>Per iniziare, avremo bisogno di una scheda Arduino Uno o Duemilanove (ma anche Mega, 2560, mini, nano etc etc).</p>\r\n<p>Info: <a href=\"http://arduino.cc/it/main/boards\" target=\"_blank\" title=\"http://arduino.cc/it/main/boards\">http://arduino.cc/it/main/boards</a></p>\r\n<p>(Costo: ~25€ - Aiutiamo il progetto acquistando board 100% Made in Italy!)</p>\r\n<p><a href=\"http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front.jpg\"><img alt=\"\" class=\"alignnone\" height=\"163\" src=\"http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front.jpg\" title=\"http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front.jpg\" width=\"237\" /></a></p>\r\n<p> </p>\r\n<p>Questa piccola schedina, è un piccolo computer in miniatura, dove già c'è tutto il necessario per programmarla senza troppi fronzoli software o hardware (come programmatori costosi).</p>\r\n<p> </p>\r\n<p>Avremo bisogno, inoltre di qualche sensore: nel nostro caso andremo ad utilizzare un LM35 (questo potete comprarlo anche dai cinesi, costo: 1.50€) ed un LDR (light dependet resistor, costo0.30€)</p>\r\n<p>L’<strong>LM35</strong> si presenta in un package simil transistor (<a href=\"http://it.wikipedia.org/wiki/TO-92\" target=\"_blank\" title=\"TO-92\">TO-92</a>) a tre pin.</p>\r\n<p>Il pinout (piedinatura), da sinistra verso destra con la parte piatta rivolta verso l’osservatore è: +5V, output, GND.</p>\r\n<p><a href=\"http://blackstufflabs.files.wordpress.com/2012/06/lm35_0.jpg?w=300\"><img alt=\"\" class=\"alignnone\" height=\"152\" src=\"http://blackstufflabs.files.wordpress.com/2012/06/lm35_0.jpg?w=300\" title=\"http://blackstufflabs.files.wordpress.com/2012/06/lm35_0.jpg?w=300\" width=\"203\" /></a></p>\r\n<p>L’<strong>LDR</strong> è a tutti gli effetti un resistore variabile (tipo potenziometro), la sua resistenza cambia con la quantità di luce che si riflette su di esso.</p>\r\n<p>Non ha polarità, può essere innestato a piacimento: la tensione entra da un capo ed esce alterata dall’altra.</p>\r\n<p>Da accoppiare con una resistenza da 500 Ohm (costo: gratis)</p>\r\n<p><a href=\"http://robosense.in/images/stories/ldr.jpg\"><img alt=\"\" class=\"alignnone\" height=\"186\" src=\"http://robosense.in/images/stories/ldr.jpg\" title=\"http://robosense.in/images/stories/ldr.jpg\" width=\"248\" /></a></p>\r\n<p> </p>\r\n<p>Per comodità ho usato un modulo (shield) aggiuntivo all’arduino che mi permette di avere:</p>\r\n<ol>\r\n <li>\r\n Un RTC DS1307 (Real Time Clock) con batteria tampone, mantiene il tempo meglio del vostro orologio.</li>\r\n <li>\r\n Un card reader, i nostri output li andremo a scrivere su file.</li>\r\n <li>\r\n Led, non avendo monitor i led saranno le nostre spie.</li>\r\n <li>\r\n Fori per saldare i sensori o per usare una breadboard</li>\r\n</ol>\r\n<p> </p>\r\n<p>La shield vien venduta in kit di montaggio, significa che dovremo metter mano al saldatore (che male non fa).</p>\r\n<p>Sul sito del produttore vi è un ampio tutorial fotografico su come assemblarla: <a href=\"http://www.ladyada.net/make/logshield/solder.html\" target=\"_blank\" title=\"http://www.ladyada.net/make/logshield/solder.html\"> http://www.ladyada.net/make/logshield/solder.html</a></p>\r\n<p>Oppure potete guardare il mio fantastico soldering: <a href=\"http://youtu.be/SYV6rm0Xypo\">http://youtu.be/SYV6rm0Xypo</a></p>\r\n<p><a href=\"http://static.flickr.com/3319/4589675367_2192d37442.jpg\"><img alt=\"\" class=\"alignnone\" height=\"188\" src=\"http://static.flickr.com/3319/4589675367_2192d37442.jpg\" title=\"http://static.flickr.com/3319/4589675367_2192d37442.jpg\" width=\"245\" /></a></p>\r\n<p>(opzionale, costo: 19.50$<a href=\"http://www.ladyada.net/make/logshield/\" target=\"_blank\" title=\"http://www.ladyada.net/make/logshield/\"> http://www.ladyada.net/make/logshield/</a>)</p>\r\n<p> </p>\r\n<p> </p>\r\n<p><strong>Wiring:</strong></p>\r\n<p>Entrambi i sensori lavorano su una tensione di 5v, l’output di ognuno ha una tensione di uscita linearmente proporzionale alla temperatura o alla quantità di luce percepita.</p>\r\n<p>Arduino (il programmatore) ha il compito di leggere la tensione sui pin analogici, campionarla e renderla disponibile.</p>\r\n<p>Per approfondimenti circa dettagli di funzionamento e parametri costruttivi dei sensori:</p>\r\n<p><a href=\"https://www.national.com/ds/LM/LM35.pdf\" target=\"_blank\" title=\"https://www.national.com/ds/LM/LM35.pdf\">https://www.national.com/ds/LM/LM35.pdf</a></p>\r\n<p><a href=\"http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/40/LDR_NSL19_M51.pdf\" target=\"_blank\" title=\"http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/40/LDR_NSL19_M51.pdf\">http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/40/LDR_NSL19_M51.pdf</a></p>\r\n<p>Il wiring può esser fatto utilizzando una semplice breadboard oppure una millefori.</p>\r\n<p><a href=\"http://img822.imageshack.us/img822/4682/wiringok.png\" target=\"_blank\"><img alt=\"http://img822.imageshack.us/img822/4682/wiringok.png\" src=\"http://img822.imageshack.us/img822/4682/wiringok.png\" style=\"width: 255px; height: 203px;\" /></a></p>\r\n<p>(immagine realizzata con <a href=\"http://fritzing.org\">Fritzing.org</a>)</p>\r\n<p>Il risultato finale deve essere più o meno così</p>\r\n<p><a href=\"http://img560.imageshack.us/img560/2860/dscn6887.jpg\"><img alt=\"\" class=\"alignnone\" height=\"218\" src=\"http://img560.imageshack.us/img560/2860/dscn6887.jpg\" title=\"http://img560.imageshack.us/img560/2860/dscn6887.jpg\" width=\"292\" /></a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p><strong>Coding:</strong></p>\r\n<p><em>Premesse:</em></p>\r\n<p>Arduino, non è solo hardware ma anche: software, documentazione e community.</p>\r\n<p>Sul sito ufficiale (<a href=\"http://arduino.cc\" target=\"_blank\">arduino.cc</a>) è possibile scaricare l’IDE che permette di programmare la propria Arduino via USB.</p>\r\n<p>Il linguaggio di programmazione è (simil) C.</p>\r\n<p>All’interno dell’ide, vi sono molti codici di prova già funzionanti, essa include gran parte delle librerie di cui avremo bisogno.</p>\r\n<p>Altre sono presenti nei siti dei corrispettivi produttori hardware o dai siti personali di utenti che hanno condiviso le proprie.</p>\r\n<p>Installare librerie di terze parti è molto semplice (un paio di copy&paste): google ci aiuterà non poco.</p>\r\n<p>Nel nostro caso andremo ad utilizzare le librerie RTC ed SD suggerite sulla pagina di adafruit relative alla logger shield utilizzata:<a href=\"http://www.ladyada.net/make/logshield/download.html\" target=\"_blank\" title=\"http://www.ladyada.net/make/logshield/download.html\"> http://www.ladyada.net/make/logshield/download.html</a></p>\r\n<p>E’ importante documentarsi sempre e approfonditamente sull’hardware su cui andremo a lavorare.</p>\r\n<p>Datasheet, reference, librerie, documentazione varia e google vanno sempre consultati quando abbiamo hardware tra le mani.</p>\r\n<p>Cercare: “lm35 arduino” o “ldr arduino” sia su google testo che immagini ci darà tantissima documentazione… per non parlare poi del forum ufficiale.</p>\r\n<p>Se prendiamo in considerazione Arduino Uno/Duemilanove con controller Atmega328, avremo 32kb di memoria flash per il codice (parte statica) e 2kb per i dati (parte dinamica).</p>\r\n<p>Seppur il compilatore (avr-gcc) ottimizza il codice, dobbiamo cercare di minimizzare al massimo l’uso della memoria.</p>\r\n<p>Esempio: se dobbiamo contare da 1 a 50 usiamo uno short invece di un int, usiamo piccole matrici, facciamo tanto swapping su memorie esterne, dimentichiamo l’allocazione dinamica (esiste ma…).</p>\r\n<p>Con l’esperienza capiremo che i codici scritti per arduino sono davvero molto leggeri: per muovere un braccio meccanico useremo al più 20righe di codice e un paio di variabili.</p>\r\n<p>Il costo computazionale è tipicamente molto basso… sarebbe da pazzi pensare di usare un microcontroller a 16mhz per calcoli metereologici!</p>\r\n<p> </p>\r\n<p>Il corpo dei codici da caricare (flashing) in Arduino è sempre formato da almeno due void function: setup e loop.</p>\r\n<p><strong>Setup:</strong> serve solo ad inizializzare alcuni valori, come ad esempio la modalità di funzione di alcuni pin, inizializzazione della seriale etc Entra in esecuzione una sola volta: all’inizio, appena diamo alimentazione.</p>\r\n<p><strong>Loop</strong>: è un loop. Un ciclo infinito, il cuore del nostro codice.</p>\r\n<p> </p>\r\n<p>La lettura analogica dell’lm35 verrà fatta sul pin 0 (zero) della nostra Arduino.</p>\r\n<p>Senza troppo addentrarci in tecnicismi, diremo banalmente che la tensione di uscita del nostro transistor è la temperatura captata in quell’istante.</p>\r\n<p>Info:<a href=\"http://www.ladyada.net/learn/sensors/tmp36.html\" target=\"_blank\" title=\"http://www.ladyada.net/learn/sensors/tmp36.html\"> http://www.ladyada.net/learn/sensors/tmp36.html</a></p>\r\n<p>L’lm35 misura temperature in Celsius su un range di -55° +150° con un accuratezza di 0.5°.</p>\r\n<p>Gli input analogici di arduino hanno una risoluzione di 10bit, ciò significa che avremo 2^10=1024 valori discreti.</p>\r\n<p>Ci sono molte tecniche (hardware e software) per leggere la temperatura in modo accurato, ma il modo più semplice è convertire la tensione di uscita in gradi Celsius con questa formula:</p>\r\n<p>temperaturaCelsius = (5.0 * sensor * 100.0)/1024.0;</p>\r\n<p>(Tensione di alimentazione del lm35 * tensione in output dall’lm35 * offset 100) / su 1024 valori</p>\r\n<p> </p>\r\n<p> </p>\r\n<p><strong><em>Obiettivo finale:</em></strong></p>\r\n<p><em>L’idea è quella di realizzare un log file di testo con questa struttura:</em></p>\r\n<p class=\"rtecenter\"><em>LUCE – TEMPERATURA – ORARIO</em></p>\r\n<p><em>• La campionatura, viene fatta ogni 3 secondi.</em> <em> </em></p>\r\n<p><em>• Le letture dell’ldr e dell’lm35 vengono mediate su 20letture consecutive (senza delay).</em> <em> </em></p>\r\n<p><em>• Stampa su porta seriale ad ogni scrittura per debugging.</em></p>\r\n<p> </p>\r\n<p> </p>\r\n<p><em>Tentativo_1:</em></p>\r\n<p>In questa primo sketch (sketch=programma=codice=algoritmo), leggeremo la temperatura dall’lm35 e andremo a scrivere sulla sd temperatura e orario.</p>\r\n<p>L’orario verrà di volta in volta *chiesto* al nostro RTC.</p>\r\n<p> </p>\r\n<pre>\r\n#include <<span style=\"color: #cc6600;\">SD</span>.h>\r\n#include <<span style=\"color: #cc6600;\">Wire</span>.h>\r\n#include <span style=\"color: #006699;\">"RTClib.h"</span>\r\n\r\nRTC_DS1307 RTC;\r\n\r\n<span style=\"color: #cc6600;\">const</span> <span style=\"color: #cc6600;\">int</span> chipSelect = 10;\r\n<span style=\"color: #cc6600;\">short</span> i=0;\r\n\r\n<span style=\"color: #cc6600;\">void</span> <span style=\"color: #cc6600;\"><strong>setup</strong></span>()\r\n{\r\n <span style=\"color: #7e7e7e;\">//seriale aperta a 9600 baud</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">begin</span>(9600);\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"Initializing SD card..."</span>);\r\n\r\n <span style=\"color: #7e7e7e;\">//inizializziamo i pin 3 e 4 per i led rosso-verde</span>\r\n <span style=\"color: #7e7e7e;\">//pin 10 riservato al card reader</span>\r\n <span style=\"color: #cc6600;\">pinMode</span>(10, <span style=\"color: #006699;\">OUTPUT</span>);\r\n <span style=\"color: #cc6600;\">pinMode</span>(3, <span style=\"color: #006699;\">OUTPUT</span>); \r\n <span style=\"color: #cc6600;\">pinMode</span>(4, <span style=\"color: #006699;\">OUTPUT</span>); \r\n\r\n <span style=\"color: #7e7e7e;\">//se il modulo sd non viene correttamente inizializzato</span>\r\n <span style=\"color: #cc6600;\">if</span> (!<span style=\"color: #cc6600;\">SD</span>.<span style=\"color: #cc6600;\">begin</span>(chipSelect)) {\r\n <span style=\"color: #7e7e7e;\">//messaggio di errore sul nostro monitor seriale</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"Card failed, or not present"</span>);\r\n\r\n <span style=\"color: #cc6600;\">for</span> (i=0;i<10;i++) {\r\n <span style=\"color: #7e7e7e;\">//blinking del led rosso</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">LOW</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100);\r\n }\r\n <span style=\"color: #cc6600;\">return</span>;\r\n }\r\n\r\n <span style=\"color: #7e7e7e;\">//se correttamente inizializzata...</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"card initialized."</span>);\r\n <span style=\"color: #7e7e7e;\">//blinking led verde</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(500); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">LOW</span>);\r\n\r\n <span style=\"color: #7e7e7e;\">//inizializziamo l'RTC</span>\r\n <span style=\"color: #cc6600;\">Wire</span>.<span style=\"color: #cc6600;\">begin</span>();\r\n RTC.<span style=\"color: #cc6600;\">begin</span>();\r\n <span style=\"color: #cc6600;\">if</span> (! RTC.isrunning()) {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"RTC is NOT running!"</span>);\r\n RTC.adjust(DateTime(__DATE__, __TIME__));\r\n }\r\n}\r\n\r\n<span style=\"color: #cc6600;\">void</span> <span style=\"color: #cc6600;\"><strong>loop</strong></span>()\r\n{\r\n <span style=\"color: #7e7e7e;\">//chiediamo il tempo all'RTC</span>\r\n DateTime now = RTC.now();\r\n <span style=\"color: #cc6600;\">int</span> analogPin=0;\r\n <span style=\"color: #cc6600;\">int</span> sensor =0; \r\n\r\n <span style=\"color: #7e7e7e;\">//aspettiamo 3secondi</span>\r\n <span style=\"color: #cc6600;\">delay</span>(2900);\r\n\r\n <span style=\"color: #7e7e7e;\">//leggiamo e convertiamo la temperatura dal pin 0 di arduino</span>\r\n sensor = <span style=\"color: #cc6600;\">analogRead</span>(analogPin);\r\n sensor = (5.0 * sensor * 100.0)/1024.0;\r\n\r\n <span style=\"color: #7e7e7e;\">//stampa sulla seriale</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">"Temperatura: "</span>);\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(sensor);\r\n\r\n <span style=\"color: #7e7e7e;\">//apriamo in scrittura il file sulla sd</span>\r\n <span style=\"color: #cc6600;\">File</span> dataFile = <span style=\"color: #cc6600;\">SD</span>.<span style=\"color: #cc6600;\">open</span>(<span style=\"color: #006699;\">"datalog.txt"</span>, <span style=\"color: #006699;\">FILE_WRITE</span>);\r\n\r\n <span style=\"color: #7e7e7e;\">//Scriviamo: TEMPERATURA - ORA:MINUTI:SECONDI</span>\r\n <span style=\"color: #cc6600;\">if</span> (dataFile) {\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(sensor);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">" - "</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(now.hour(), <span style=\"color: #006699;\">DEC</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">":"</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(now.minute(), <span style=\"color: #006699;\">DEC</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">":"</span>);\r\n dataFile.<span style=\"color: #cc6600;\">println</span>(now.second(), <span style=\"color: #006699;\">DEC</span>);\r\n <span style=\"color: #7e7e7e;\">//chiudiamo il file</span>\r\n dataFile.<span style=\"color: #cc6600;\">close</span>(); \r\n\r\n <span style=\"color: #7e7e7e;\">//blinking led verde</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">LOW</span>);\r\n } \r\n <span style=\"color: #cc6600;\">else</span> {\r\n\r\n <span style=\"color: #7e7e7e;\">//errore nell'apertura del file o card rimossa</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"error opening datalog.txt"</span>);\r\n <span style=\"color: #cc6600;\">for</span> (i=0;i<10;i++) {\r\n <span style=\"color: #7e7e7e;\">//blinkig led rosso</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">LOW</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100);\r\n }\r\n } \r\n}</pre>\r\n<p> </p>\r\n<p>Dopo il caricamento, apriamo il nostro monitor seriale (all'interno dell'ide c'è il proprio monitor seriale, ma possiamo utilizzare anche putty) a 9600baud sulla stessa porta USB su cui è attaccato il nostro arduino e avremo un output più o meno di questo tipo:</p>\r\n<pre>\r\n26 - 21:15:36\r\n25 - 21:17:15\r\n25 - 21:17:19\r\n25 - 21:17:22</pre>\r\n<p>Ogni volta verrà scritto un nuovo record nel nostro file che può essere elaborato in qualsiasi modo.</p>\r\n<p>In questo caso ho importato i dati su un foglio Excel:</p>\r\n<p><a href=\"http://img833.imageshack.us/img833/7668/capturesg.png\"><img alt=\"\" class=\"alignnone\" height=\"218\" src=\"http://img833.imageshack.us/img833/7668/capturesg.png\" title=\"http://img833.imageshack.us/img833/7668/capturesg.png\" width=\"365\" /></a></p>\r\n<p> </p>\r\n<p>Nel prossimo articolo uniremo alla temperatura anche la quantità di luce...</p>\r\n<p> </p>\r\n<p>Andrea Esposito</p>\r\n<p class=\"rtecenter\"><span style=\"font-size:16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n','','full_html'),('node','new',0,66,98,'und',0,'<p>http://www.raspberrypi.org/</p>\r\n','','filtered_html'),('node','forum',0,67,99,'und',0,'<p>Un saluto a tutti.</p>\r\n<p>Un problema mi affligge occupando <strong>troppo</strong> spazio nella mia testa.</p>\r\n<p> </p>\r\n<p>Utilizzando FRAPI, l' output in formato XML del progetto viene stampato senza alcun problema, la stessa cosa da terminale. Vanno benissimo.</p>\r\n<p>Ma appena accedo tramite browser, escono errori segnalandomi che non conosce le <strong>entità</strong>.</p>\r\n<p>Quale può essere il problema?</p>\r\n<p> </p>\r\n<p>Ripeto tramite XML e terminale funzionano perfettamente. Mi piacerebbe risolvere il problema anche per il browser. </p>\r\n<p> </p>\r\n<p>Ringrazio anticipatamente, augurandovi, come sempre, una</p>\r\n<p>Buona Programmazione.</p>\r\n','','filtered_html'),('node','new',0,68,100,'und',0,'<p>Ora http://students.uniparthenope.it è multilingua!</p>\r\n<p>E' al momento possibile scegliere la GUI in Italiano o in Inglese.</p>\r\n<p>Anche per i contenuti è stato attivato il supporto per ambo le lingue.</p>\r\n<p>Al momento sarà usato il solo Italiano... al momento :-)</p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,70,103,'und',0,'<p><strong>A.A.A. Cercasi Beta Tester per nuova applicazione Android per i servizi universitari agli studenti.</strong></p>\r\n<p>La richiesta è mirata alla prova di un'APP Android frutto del mio elaborato di tesi di Laurea triennale.</p>\r\n<p>Prova le funzionalità ... verifica il funzionamento ... interagisci con la tua Università ... controlla le News ... vedi gli orari degli Autobus ...</p>\r\n<p>... direttamente sul tuo terminale Android.</p>\r\n<p> </p>\r\n<p>Richiesto Smartphone con Android 2.2 o superiore (NO TABLET)</p>\r\n<p>Invia un tuo <strong>messaggio privato di adesione</strong> al progetto facendo click <a href=\"/?q=user/60\">qui</a>.</p>\r\n<p>Ti verrà inviata (nel giro di pochi giorni) la tua <u><strong>nuova APP Parthenope</strong></u> con cui accedere in tempo reale a tante nuove informazioni ...<img alt=\"wink\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif\" title=\"wink\" width=\"20\" /></p>\r\n<p> </p>\r\n<p>Ecco di seguito alcune screenshot delle possibili funzioni:</p>\r\n<p> </p>\r\n<p><a href=\"/sites/default/files/images/20120207141211.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120207141211.png\" /></a><a href=\"/sites/default/files/images/20120207141212.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120207141212.png\" /></a><a href=\"/sites/default/files/images/20120207141214.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120207141214.png\" /></a><a href=\"/sites/default/files/images/20120207141218.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120207141218.png\" /></a><a href=\"/sites/default/files/images/20120207141220.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120207141220.png\" /></a><a href=\"/sites/default/files/images/20120207141358.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120207141358.png\" /></a></p>\r\n<p> </p>\r\n<p>Discutiamone insieme sul <a href=\"/?q=forum/8\">forum</a> dedicato allo sviluppo di applicazioni per terminali mobili.</p>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,71,104,'und',0,'<p>Questa guida è relativa all'installazione di FRAPI (http://getfrapi.com/) sulla piattaforma di Hosting Linux offerta da UniParthenope tramite il Progetto Sebeto.</p>\r\n<p>E' necessario avere attivata l'opzione Hosting Linux nel proprio profilo.</p>\r\n<p>La documentazione ufficiale è disponibile su: http://frapi.github.com/</p>\r\n<ul>\r\n <li>\r\n Fare login tramite client ssh nel proprio spazio<br />\r\n <pre>\r\nssh NOMEUTENTE@students.uniparthenope.it</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Creare, se non presenti, le directory $HOME/opt e $HOME/dist<br />\r\n <pre>\r\nmkdir $HOME/opt\r\nmkdir $HOME/dist</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Scaricare l'ultima versione stabile del web server nginx (http://nginx.org/) (esempio)<br />\r\n <pre>\r\ncd $HOME/dist\r\nwget wget http://nginx.org/download/nginx-1.2.1.tar.gz\r\ntar -xvzf nginx-1.2.1.tar.gz\r\nrm nginx-1.2.1.tar.gz</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Compilare nginx<br />\r\n <pre>\r\ncd nginx-1.2.1\r\nmkdir $HOME/opt/nginx-1.2.1\r\n./configure --prefix=$HOME/opt/nginx-1.2.1\r\nmake 2>&1 | tee make.log\r\nmake install 2>&1 | tee install.log</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n <p>Puntare il proprio browser su: http://getfrapi.com/ e seguire i link per il recupero del repository GitHub (https://github.com/frapi/frapi/downloads#uploaded_downloads)</p>\r\n </li>\r\n <li>\r\n Scaricare l'ultima versione stabile di FRAPI (segue esempio)<br />\r\n <pre>\r\ncd $HOME/dist\r\nwget https://github.com/downloads/frapi/frapi/frapi-0.1.1.zip\r\nunzip frapi-0.1.1.zip\r\nrm frapi-0.1.1.zip\r\nmv frapi $HOME/opt</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Preparare l'ambiente<br />\r\n <pre>\r\nexport FRAPI_PATH=$HOME/opt/frapi/\r\ncd $FRAPI_PATH</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Impostare i permessi<br />\r\n <pre>\r\nsh ./setup.sh</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Impostare le directory di logging<br />\r\n <pre>\r\nmkdir -p $FRAPI_PATH/log/nginx/admin.frapi\r\nmkdir -p $FRAPI_PATH/log/nginx/api.frapi\r\n</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Configurare il web server nginx<br />\r\n <pre>\r\ncd $HOME/opt/nginx-1.2.1/conf\r\ncat > nginx.conf\r\n \r\nworker_processes 1;\r\n\r\nevents {\r\n worker_connections 1024;\r\n}\r\n\r\n\r\nhttp {\r\n include mime.types;\r\n default_type application/octet-stream;\r\n\r\n sendfile on;\r\n\r\n keepalive_timeout 65;\r\n\r\n server {\r\n listen ADMIN_FRAPI_PORT;\r\n server_name admin.frapi;\r\n access_log FRAPI_PATH/log/nginx/admin.frapi/access.log;\r\n\r\n root FRAPI_PATH/src/frapi/admin/public;\r\n index index.php;\r\n\r\n location / {\r\n try_files $uri $uri/ @api;\r\n }\r\n\r\n location @api {\r\n rewrite ^/(.*)$ /index.php?$1 last;\r\n }\r\n\r\n location ~ \\.php$ {\r\n fastcgi_pass 127.0.0.1:9000;\r\n fastcgi_index index.php;\r\n fastcgi_param SCRIPT_FILENAME FRAPI_PATH/src/frapi/admin/public/$fastcgi_script_name;\r\n include fastcgi_params;\r\n }\r\n }\r\n\r\nserver {\r\n listen API_FRAPI_PORT;\r\n server_name api.frapi;\r\n access_log FRAPI_PATH/log/nginx/api.frapi/access.log;\r\n\r\n root FRAPI_PATH/src/frapi/public;\r\n index index.php;\r\n\r\n location ~* ^.+\\.(jpg|js|jpeg|png|ico|gif|js|css|swf)$ {\r\n expires 24h;\r\n }\r\n\r\n location / {\r\n try_files $uri $uri/ @api;\r\n }\r\n\r\n location @api {\r\n rewrite ^/(.*)$ /index.php?$1 last;\r\n }\r\n\r\n location ~ ^/.*\\.php$ {\r\n fastcgi_pass 127.0.0.1:9000;\r\n fastcgi_index index.php;\r\n fastcgi_param SCRIPT_FILENAME FRAPI_PATH/src/frapi/public/$fastcgi_script_name;\r\n include fastcgi_params;\r\n }\r\n}\r\n}\r\n\r\n\r\n</pre>\r\n [CTRL]+[D]<br />\r\n <pre>\r\ncat > fastcgi.conf\r\n\r\nfastcgi_param SCRIPT_NAME $fastcgi_script_name;\r\nfastcgi_param QUERY_STRING $query_string;\r\nfastcgi_param REQUEST_METHOD $request_method;\r\nfastcgi_param CONTENT_TYPE $content_type;\r\nfastcgi_param CONTENT_LENGTH $content_length;\r\n\r\nfastcgi_param SCRIPT_NAME $fastcgi_script_name;\r\nfastcgi_param REQUEST_URI $request_uri;\r\nfastcgi_param DOCUMENT_URI $document_uri;\r\nfastcgi_param DOCUMENT_ROOT $document_root;\r\nfastcgi_param SERVER_PROTOCOL $server_protocol;\r\nfastcgi_param HTTPS $https if_not_empty;\r\n\r\nfastcgi_param GATEWAY_INTERFACE CGI/1.1;\r\nfastcgi_param SERVER_SOFTWARE nginx/$nginx_version;\r\n\r\nfastcgi_param REMOTE_ADDR $remote_addr;\r\nfastcgi_param REMOTE_PORT $remote_port;\r\nfastcgi_param SERVER_ADDR $server_addr;\r\nfastcgi_param SERVER_PORT $server_port;\r\nfastcgi_param SERVER_NAME $server_name;\r\n</pre>\r\n [CTRL]+[D]</li>\r\n</ul>\r\n<p><strong>Importante:</strong><br />\r\n sostituire FRAPI_PATH con il contenuto della variabile $FRAPI_PATH<br />\r\n sostituire FRAPI_API_PORT con il numero di porta per l'accesso alle API REST esposte tramite FRAPI<br />\r\n sostituire FRAPI_ADMIN_PORT con il numero di porta per l'accesso alla gestione delle API REST esposte tramite FRAPI</p>\r\n<ul>\r\n <li>\r\n Eseguire il web server<br />\r\n <pre>\r\n$HOME/opt/nginx-1.2.1/sbin/nginx</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Puntare il proprio browser su: http://students.uniparthenope.it:FRAPI_API_PORT oppure su http://students.uniparthenope.it:ADMIN_FRAPI_PORT</li>\r\n <li>\r\n Sviluppare i propri mattoni per il web 3.0!</li>\r\n <li>\r\n Interrompere il web server<br />\r\n <pre>\r\n$HOME/opt/nginx-1.2.1/sbin/nginx -s stop</pre>\r\n </li>\r\n</ul>\r\n<p>In altra documentazione saranno illustrate le linee guida da seguire per la creazione di API REST.</p>\r\n','','full_html'),('node','new',0,72,105,'und',0,'<p>Sono stati attivati i forum di discussione relativamente allo svuluppo di <a href=\"/?q=forum/9\">API REST</a> e di <a href=\"/?q=forum/8\">APP</a> per dispositivi mobili.</p>\r\n<p> </p>\r\n','','full_html'),('node','forum',0,73,106,'und',0,'<p><span>Salve a tutti, scrivo per chiedere delucidazioni ed aiuto in merito alla realizzazione di client che funga da interfaccia ad un web service, mi spiego meglio:</span><br />\r\n <br />\r\n <span>ho un web service che realizza tre funzioni, richiesta.wsdl, registrazione.wsdl, stato.wsdl ognuno di questi svolge delle operazioni a me ignote. </span><br />\r\n <span>So soltanto che a certi indirizzi sono esposti questi wsdl e che per comunicare con il web service devo passare da questi, i quali si aspettano dati formattati in un certo modo secondo un certo protocollo. (i dati e tipi di dati mi sono stati comunicati).</span><br />\r\n <br />\r\n <span>Detto ciò io dovrei quindi realizzare un client (mi hanno consigliato in PHP del quale sono a digiuno, preferirei JAVA se fosse equivalente) cosi da poter permettere la comunicazione con questo webservice dall'esterno.</span><br />\r\n <br />\r\n <span>In sintesi la piattaforma A espone un webservice ad un certo indirizzo, la piattaforma B ci vuole interagire, io devo realizzare questo canale di comunicazione che prenderà in input i dati passati dalla piattaforma B (problema di chi realizza la piattaforma B) e passarli alla piattaforma A per farli processare generando una risposta da restituire alla piattaforma B. Le indicazioni/suggerimenti sono di usare PHP per il client (preferirei JAVA se equivalente), e SOAP come protocollo per i dati.</span><br />\r\n <br />\r\n <span>Premesso che di PHP so mollto poco, e che non ho mai avuto a che fare con SOAP, tantomeno ho mai avuto a che fare con un web service, da dove dovrei iniziare? mi dareste delle indicazioni?</span></p>\r\n<p> </p>\r\n<p>giusto per capirci io sto partendo da qui: http://msdn.microsoft.com/en-us/library/ms996486.aspx</p>\r\n<p><br />\r\n <span>grazie mille </span><img alt=\"\" border=\"0\" src=\"http://forum.html.it/forum/images/smilies/biggrin.gif\" /></p>\r\n','','filtered_html'),('node','blog',0,74,107,'und',0,'<p> </p>\r\n<p> <img height=\"170\" src=\"http://i47.tinypic.com/34q3a7t.jpg\" width=\"387\" />a cura di Emilio Salomone e Flavio Tulino</p>\r\n<p> </p>\r\n<p>Tokbox è un sistema di videoconferenza che permette tramite API gratuite di integrare videochiamate singole o di gruppo all’interno del proprio sito web.</p>\r\n<p> </p>\r\n<p> </p>\r\n<ol>\r\n <li>\r\n <strong>Richiesta API Key Personale.</strong></li>\r\n</ol>\r\n<p> </p>\r\n<p style=\"margin-left:18.0pt;\">Ogni sviluppatore è identificato da una API Key che va richiesta tramite il seguente form :</p>\r\n<p style=\"margin-left:18.0pt;\"><a href=\"http://www.tokbox.com/opentok/api/documentation/gettingstarted#getAPIKey\">http://www.tokbox.com/opentok/api/documentation/gettingstarted#getAPIKey</a></p>\r\n<p style=\"margin-left:18.0pt;\"><img border=\"0\" height=\"207\" src=\"http://i45.tinypic.com/30vgj0z.jpg\" width=\"665\" /></p>\r\n<p style=\"margin-left:18.0pt;\">Inserire negli appositi campi Nome e Email e attendere qualche secondo per ricevere la mail contenente “API Key” e “API Secret” (Nei passi successivi ne verrà spiegato il metodo di utilizzo).</p>\r\n<p style=\"margin-left:18.0pt;\"> </p>\r\n<ol>\r\n <li value=\"2\">\r\n <strong>Descrizione e Download dei File Necessari</strong></li>\r\n</ol>\r\n<p> </p>\r\n<p style=\"margin-left:18.0pt;\">Scaricare il seguente pacchetto contenente i file necessari per l’implementazione :</p>\r\n<p style=\"margin-left:18.0pt;\"><a href=\"http://box.uniparthenope.it/public.php?service=files&token=a9e262eed137a62792aeb05076af8c96f83853eb&file=/Opentok.zip\">http://box.uniparthenope.it/public.php?service=files&token=a9e262eed137a62792aeb05076af8c96f83853eb&file=/Opentok.zip</a></p>\r\n<p style=\"margin-left:18.0pt;\"> </p>\r\n<p style=\"margin-left:18.0pt;\"> </p>\r\n<p style=\"margin-left:18.0pt;\">All’interno saranno presenti i seguenti file:</p>\r\n<p style=\"margin-left:18.0pt;\"><img border=\"0\" height=\"111\" src=\"http://i50.tinypic.com/nzpr0p.png\" width=\"463\" /></p>\r\n<p style=\"margin-left:36.0pt;\">- audio_video_only.php : è il file per il test della videoconferenza che va opportunamente modificato come sarà illustrato in seguito.</p>\r\n<p style=\"margin-left:36.0pt;\">- OpenTokArchive.php , OpenTokSDK.php , OpenTokSession.php : sono i file necessari per l’aspetto Server- side della videoconferenza.</p>\r\n<p style=\"margin-left:36.0pt;\">- samples.css : è il foglio di stile per la nostra videoconferenza.</p>\r\n<p> </p>\r\n<ol>\r\n <li value=\"3\">\r\n <strong>Implementazione</strong></li>\r\n</ol>\r\n<p> </p>\r\n<p>In questo esempio modificheremo opportunamente il file <strong>audio_video_only.php </strong>per la prova.</p>\r\n<p>Il primo passo è inserire il seguente codice PHP in testa al file audio_video_only.php :</p>\r\n<div style=\"background-color:LightGrey\">\r\n <p><?php</p>\r\n <p>require_once 'OpenTokSDK.php';</p>\r\n <p>$apiObj = new OpenTokSDK("<strong>API KEY</strong>","<strong>API_SECRET</strong>");</p>\r\n <p>$session = $apiObj->create_session($_SERVER["REMOTE_ADDR"]);</p>\r\n <p>?></p>\r\n</div>\r\n<p>In luogo di <strong>API KEY</strong> e <strong>API_SECRET </strong>vanno inseriti i corrispettivi contenuti nella mail ricevuta.</p>\r\n<p> </p>\r\n<ol>\r\n <li value=\"4\">\r\n <strong>Test e conclusioni</strong></li>\r\n</ol>\r\n<p> </p>\r\n<p>A questo punto si può testare l’effettivo funzionamento della videoconferenza aprendo la pagina da browser, si potrà notare che più utenti saranno collegati alla pagina (fino ad un max di 15), più finestre di chiamata si apriranno all’interno della stessa.</p>\r\n<p>Con queste semplici operazioni OpenTok promette e permette affidabilità e innovazione all’interno del proprio sito web!</p>\r\n<p>Per maggiori informazioni rimandiamo al tutorial in lingua inglese presente al seguente link :</p>\r\n<p><a href=\"http://www.tokbox.com/opentok/api/tools/js/tutorials/overview\">http://www.tokbox.com/opentok/api/tools/js/tutorials/overview</a> </p>\r\n<p> </p>\r\n<p>Per effettuare un test clicca <a href=\"http://students.uniparthenope.it/~0124000317/test-opentok/test.php\" target=\"_blank\">qui!</a></p>\r\n<p> </p>\r\n<p>A questo link è possibile scaricare la versione PDF :</p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=2d35876c340163cd2d8e11b373a8e1da2bf967d5&file=/Tutorial%20OpenTok.pdf\">Scarica</a></p>\r\n','','full_html'),('node','blog',0,75,108,'und',0,'<p>Arduino è il nome di una piattaformahardware per lo sviluppo di applicazioni basate sui microcontrollori ATMEL.</p>\r\n<p>Ideata in Italia nel 2005, è basata su una semplicissima scheda di I/O e su un ambiente di sviluppo che usa una libreria Wiring per semplificare la scrittura di programmi in C e C++ da far girare sulla scheda.</p>\r\n<p><a href=\"http://blackstufflabs.files.wordpress.com/2012/07/arduino_team.jpg?w=300\"><img alt=\"\" class=\"alignnone\" height=\"180\" src=\"http://blackstufflabs.files.wordpress.com/2012/07/arduino_team.jpg?w=300\" title=\"http://blackstufflabs.files.wordpress.com/2012/07/arduino_team.jpg?w=300\" width=\"270\" /></a></p>\r\n<p>Il progetto Arduino ha preso avvio in Italia ad Ivrea, nel 2005, con lo scopo di rendere disponibile a progettisti, studenti e semplici hobbisti, un dispositivo di sviluppo facile ed allo stesso tempo più economico rispetto a simili sistemi di prototipazione.</p>\r\n<p>A ottobre 2008 erano già stati venduti più di 50.000 esemplari di Arduino in tutto il mondo.</p>\r\n<p>Le schede uffi ciali usano i chip della serie megaAVR (nello specifi co, i modelli ATmega8, ATmega168, ATmega328, e ATmega1280) ma i loro cloni sono disponibili anche con altri microcontrollori.</p>\r\n<p><a href=\"http://justpushbuttons.com/blog/wp-content/uploads/2011/03/atmega328.jpg\"><img alt=\"\" class=\"alignnone\" height=\"137\" src=\"http://justpushbuttons.com/blog/wp-content/uploads/2011/03/atmega328.jpg\" title=\"http://justpushbuttons.com/blog/wp-content/uploads/2011/03/atmega328.jpg\" width=\"278\" /></a></p>\r\n<p>La scheda Arduino è pre-programmata con un bootloader che semplifica il caricamento dei programmi nella memoria Flash incorporata nel chip, rispetto ad altri dispositivi che richiedono, solitamente, un programmatore esterno.</p>\r\n<p>L’ambiente di programmazione integrato (IDE) di Arduino è un’applicazione multipiattaforma scritta in Java, ed è derivata dall’IDE creato per il linguaggio di programmazione Processing e adattato al progetto Wiring.</p>\r\n<p>È concepito per introdurre alla programmazione hobbisiti e neofiti, a digiuno di pratica nello sviluppo di software.</p>\r\n<p>Per poterla programmare da remoto senza alcun specifico programmatore, il microcontrollore viene fornito preprogrammato con uno specifico bootloader che instraderà in modo corretto il firmware nell’apposita area di memoria EEPROM durante la fase di programmazione.</p>\r\n<p>Collegare l'arduino al nostro pc è estremamente semplice, bisogna collegare tramite cavetto USB l'arduino al PC</p>\r\n<p><a href=\"http://www.ladyada.net/images/arduino/usbplugged_t.jpg\"><img alt=\"\" class=\"alignnone\" height=\"121\" src=\"http://www.ladyada.net/images/arduino/usbplugged_t.jpg\" title=\"http://www.ladyada.net/images/arduino/usbplugged_t.jpg\" width=\"145\" /></a></p>\r\n<p>Una volta collegata la nostra arduino alla porta usb avvengono due cose:</p>\r\n<p>1. viene data alimentazione alla nostra scheda che eseguirà da subito l'ultimo codice da noi caricato.</p>\r\n<p>Solitamente, la scheda arduino viene venduta con lo sketch "blink" già caricato su di essa, infatti un led smd post al di sotto del pin 13 inizierà a lampeggiare.</p>\r\n<p><a href=\"http://www.ladyada.net/images/arduino/diecledplaced.jpg\"><img alt=\"\" class=\"alignnone\" height=\"120\" src=\"http://www.ladyada.net/images/arduino/diecledplaced.jpg\" title=\"http://www.ladyada.net/images/arduino/diecledplaced.jpg\" width=\"180\" /></a></p>\r\n<p>2. arduino verrà riconosciuta dal nostro pc come periferica esterna: se si ha una duemilanove bisogna installare i driver del chipset (non open) FTDI, se è una UNO verrà riconosciuta automaticamente.</p>\r\n<p> </p>\r\n<p>I programmi, nel mondo arduino, vengono chiamati "sketch".</p>\r\n<p>Gli sketch vengono scritti, compilati e caricati sulla nostra scheda tramite l'IDE ufficiale.</p>\r\n<p>Una volta scaricata l'IDE dal sito ufficiale <a href=\"arduino.cc\" target=\"_blank\" title=\"arduino.cc\">arduino.cc</a> accertiamoci di aver selezionato la giusta porta COM della nostra arduino:</p>\r\n<p><a href=\"http://www.ladyada.net/images/arduino/winportselect.jpg\"><img alt=\"\" class=\"alignnone\" height=\"160\" src=\"http://www.ladyada.net/images/arduino/winportselect.jpg\" title=\"http://www.ladyada.net/images/arduino/winportselect.jpg\" width=\"283\" /></a></p>\r\n<p>E come target-board, la giusta scheda:</p>\r\n<p><a href=\"http://letsmakerobots.com/files/userpics/u5293/Arduino_IDE_Board_Select.jpg\"><img alt=\"\" class=\"alignnone\" height=\"311\" src=\"http://letsmakerobots.com/files/userpics/u5293/Arduino_IDE_Board_Select.jpg\" title=\"http://letsmakerobots.com/files/userpics/u5293/Arduino_IDE_Board_Select.jpg\" width=\"435\" /></a></p>\r\n<p> </p>\r\n<p>Sulla nostra ide 1.0.1 avremo i seguenti pulsanti:</p>\r\n<p><a href=\"http://img31.imageshack.us/img31/7966/cattura3a.png\"><img alt=\"\" class=\"alignnone\" height=\"62\" src=\"http://img31.imageshack.us/img31/7966/cattura3a.png\" title=\"http://img31.imageshack.us/img31/7966/cattura3a.png\" width=\"343\" /></a></p>\r\n<p>Verifica, Carica, Nuovo, Apri, Salva e Monitor Seriale.</p>\r\n<p>Possiamo tradurre i tasti in questo modo:</p>\r\n<p>Verifica: compila ma non carica il binario nel chip</p>\r\n<p>Carica: compila e carica il binario</p>\r\n<p>Nuovo: apre un nuovo file</p>\r\n<p>Apri: un file salvato</p>\r\n<p>Salva: un file da noi scritto</p>\r\n<p>Monitor Seriale: apre un monitor in ascolto sulla seriale di arduino, sarà la nostra finestra di colloquio con arduino.</p>\r\n<p>Riceveremo e mandermo caratteri.</p>\r\n<p> </p>\r\n<p>Avremo a disposizione decine di sketch già preconfezionati da poter testare da subito sulla nostra scheda:</p>\r\n<p><a href=\"http://img856.imageshack.us/img856/7868/immaginesui.png\"><img alt=\"\" height=\"269\" src=\"http://img856.imageshack.us/img856/7868/immaginesui.png\" title=\"http://img856.imageshack.us/img856/7868/immaginesui.png\" width=\"284\" /></a></p>\r\n<p> </p>\r\n<p>Il primo sketch che andremo a compilare e caricare sulla nostra scheda è un pò come il nostro primo "hello world" scritto in C qualche anno fa.</p>\r\n<p>In particolare apriremo l'esempio "blink":</p>\r\n<pre>\r\n<span style=\"color: #7E7E7E;\">/*</span>\r\n<span style=\"color: #7E7E7E;\"> Blink</span>\r\n<span style=\"color: #7E7E7E;\"> Accende il LED per un secondo, lo spegne per un altro secondo, ripetutamente</span>\r\n<span style=\"color: #7E7E7E;\"> */</span>\r\n\r\n<span style=\"color: #7E7E7E;\">//Il pin 13 ha un LED smd già saldato sulla maggior parte delle schede Arduino</span>\r\n<span style=\"color: #7E7E7E;\">//diamogli un nome:</span>\r\n<span style=\"color: #CC6600;\">int</span> led = 13;\r\n\r\n<span style=\"color: #7E7E7E;\">//la routine setup gira una sola volta dopo aver dato alimentazione o premuto il tasto reset</span>\r\n<span style=\"color: #CC6600;\">void</span> <span style=\"color: #CC6600;\"><b>setup</b></span>() { \r\n <span style=\"color: #7E7E7E;\">// inizializza il pin digitale 13 come output</span>\r\n <span style=\"color: #CC6600;\">pinMode</span>(led, <span style=\"color: #006699;\">OUTPUT</span>); \r\n}\r\n\r\n<span style=\"color: #7E7E7E;\">// la routine loop esegue le istruzioni all'infinito</span>\r\n<span style=\"color: #CC6600;\">void</span> <span style=\"color: #CC6600;\"><b>loop</b></span>() {\r\n <span style=\"color: #CC6600;\">digitalWrite</span>(led, <span style=\"color: #006699;\">HIGH</span>); <span style=\"color: #7E7E7E;\">// accende il led (HIGH il massimo voltaggio 5v)</span>\r\n <span style=\"color: #CC6600;\">delay</span>(1000); <span style=\"color: #7E7E7E;\">// wait per un secondo</span>\r\n <span style=\"color: #CC6600;\">digitalWrite</span>(led, <span style=\"color: #006699;\">LOW</span>); <span style=\"color: #7E7E7E;\">// spegne il led (LOW è la più bassa tensione)</span>\r\n <span style=\"color: #CC6600;\">delay</span>(1000); <span style=\"color: #7E7E7E;\">// aspetta per un secondo</span>\r\n}\r\n\r\n</pre>\r\n<p>Premiamo sul pulsante "Carica" e....</p>\r\n<p><a href=\"http://www.ladyada.net/images/arduino/myblinkupload.jpg\"><img alt=\"\" class=\"alignnone\" height=\"141\" src=\"http://www.ladyada.net/images/arduino/myblinkupload.jpg\" title=\"http://www.ladyada.net/images/arduino/myblinkupload.jpg\" width=\"545\" /></a></p>\r\n<p>...blinking!</p>\r\n<p>Eventualmente, si può innestare un led esterno (correttamente orientato) tra il pin GND e 13 come in molti esempi:</p>\r\n<p><a href=\"http://www.ladyada.net/images/arduino/ngled_t.jpg\"><img alt=\"\" class=\"alignnone\" height=\"225\" src=\"http://www.ladyada.net/images/arduino/ngled_t.jpg\" title=\"http://www.ladyada.net/images/arduino/ngled_t.jpg\" width=\"300\" /></a></p>\r\n<p>Non è propriamente corretto inserirlo direttamente in quanto il led verrebbe sovralimentato, andrebbe collegato con una resistenza da 1KOhm in serie, in questo modo:</p>\r\n<p><a href=\"http://www.ladyada.net/images/arduino/lesson3sch4.jpg\"><img alt=\"\" class=\"alignnone\" src=\"http://www.ladyada.net/images/arduino/lesson3sch4.jpg\" title=\"http://www.ladyada.net/images/arduino/lesson3sch4.jpg\" /></a><a href=\"http://www.ladyada.net/images/arduino/led13bb_t.jpg\"><img alt=\"\" class=\"alignnone\" height=\"254\" src=\"http://www.ladyada.net/images/arduino/led13bb_t.jpg\" title=\"http://www.ladyada.net/images/arduino/led13bb_t.jpg\" width=\"380\" /></a></p>\r\n<p> </p>\r\n<p>Il nostro primo "hello world" è terminato! </p>\r\n<p>Modificando leggermente il codice potremmo inserire più led, accenderli in modalità diverse, dando intensità e colori diversi...</p>\r\n<p> </p>\r\n<p> </p>\r\n<p>fonti:</p>\r\n<p>adafruit.com</p>\r\n<p>elettronicaIN</p>\r\n<p class=\"rtecenter\"><span style=\"font-size:16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n','','full_html'),('node','blog',0,76,109,'und',0,'<p>Nel precedente articolo abbiamo dato una prima ossatura al nostro data logger.</p>\r\n<p>Questa volta andremo ad inserire nel nostro sketch l'LDR e andremo a mediare i nostri valori dando un output più preciso possibile.</p>\r\n<p>Lo schema di massima del collegamento è il seguente:</p>\r\n<p><a href=\"http://www.ladyada.net/wiki/lib/exe/fetch.php?hash=988108&w=162&h=322&media=http%3A%2F%2Fwww.ladyada.net%2Fimages%2Fsensors%2Fcdsanasch.gif\"><img alt=\"\" class=\"alignnone\" height=\"195\" src=\"http://www.ladyada.net/wiki/lib/exe/fetch.php?hash=988108&w=162&h=322&media=http%3A%2F%2Fwww.ladyada.net%2Fimages%2Fsensors%2Fcdsanasch.gif\" title=\"http://www.ladyada.net/wiki/lib/exe/fetch.php?hash=988108&w=162&h=322&media=http%3A%2F%2Fwww.ladyada.net%2Fimages%2Fsensors%2Fcdsanasch.gif\" width=\"98\" /></a><a href=\"http://www.hobbytronics.co.uk/image/data/tutorial/arduino-tutorial/ldr_nightlight_breadboard.jpg\"><img alt=\"\" class=\"alignnone\" height=\"180\" src=\"http://www.hobbytronics.co.uk/image/data/tutorial/arduino-tutorial/ldr_nightlight_breadboard.jpg\" title=\"http://www.hobbytronics.co.uk/image/data/tutorial/arduino-tutorial/ldr_nightlight_breadboard.jpg\" width=\"243\" /></a></p>\r\n<p> </p>\r\n<p>Un primo sketch per la lettura dell'ldr può essere questo:</p>\r\n<pre>\r\n<span style=\"color: #cc6600;\">int</span> photocellPin = 1; <span style=\"color: #7e7e7e;\">// LDR connesso al pin analogico 1</span>\r\n<span style=\"color: #cc6600;\">int</span> photocellReading; <span style=\"color: #7e7e7e;\">// variabile di conversione </span>\r\n\r\nphotocellReading = <span style=\"color: #cc6600;\">analogRead</span>(photocellPin); \r\n<span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">"Luce = "</span>);\r\n<span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">print</span>(photocellReading); \r\n<span style=\"color: #7e7e7e;\">// scriviamo sulla seriale la quantità di luce percepita</span>\r\n\r\n<span style=\"color: #cc6600;\">if</span> (photocellReading < 10) {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" - Scuro"</span>);\r\n} \r\n<span style=\"color: #cc6600;\">else</span> <span style=\"color: #cc6600;\">if</span> (photocellReading < 200) {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" - Poca luce"</span>);\r\n} \r\n<span style=\"color: #cc6600;\">else</span> <span style=\"color: #cc6600;\">if</span> (photocellReading < 500) {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" - Luce"</span>);\r\n} \r\n<span style=\"color: #cc6600;\">else</span> <span style=\"color: #cc6600;\">if</span> (photocellReading < 800) {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" - Luminoso"</span>);\r\n} \r\n<span style=\"color: #cc6600;\">else</span> {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" - Molto luminoso"</span>);\r\n}</pre>\r\n<p> </p>\r\n<p>Minore è il valore percepito più sarà buio.</p>\r\n<p>In questo caso il valore letto è stato spalmato su 5 print, ottimo per il debug sulla seriale.</p>\r\n<p>Ora bisogna riorganizzare la nostra basetta e montare assieme LDR, LED e LM35 (sembra uno scoglilingua!) per ottenere questo:</p>\r\n<p><a href=\"http://img822.imageshack.us/img822/4682/wiringok.png\"><img alt=\"\" class=\"alignnone\" height=\"222\" src=\"http://img822.imageshack.us/img822/4682/wiringok.png\" title=\"http://img822.imageshack.us/img822/4682/wiringok.png\" width=\"278\" /></a></p>\r\n<p> </p>\r\n<p>Ora riorganizziamo lo sketch iniziale ed introduciamo media su 20 letture consecutive per poi ottenere questo sketch finale:</p>\r\n<pre>\r\n#include <<span style=\"color: #cc6600;\">SD</span>.h>\r\n#include <<span style=\"color: #cc6600;\">Wire</span>.h>\r\n#include <span style=\"color: #006699;\">"RTClib.h"</span>\r\n\r\nRTC_DS1307 RTC;\r\n\r\n<span style=\"color: #cc6600;\">const</span> <span style=\"color: #cc6600;\">int</span> chipSelect = 10;\r\n<span style=\"color: #cc6600;\">short</span> i=0;\r\n\r\n<span style=\"color: #cc6600;\">void</span> <span style=\"color: #cc6600;\"><strong>setup</strong></span>()\r\n{\r\n <span style=\"color: #7e7e7e;\">//seriale aperta a 9600 baud</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">begin</span>(9600);\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"Initializing SD card..."</span>);\r\n\r\n <span style=\"color: #7e7e7e;\">//inizializziamo i pin 3 e 4 per i led rosso-verde</span>\r\n <span style=\"color: #7e7e7e;\">//pin 10 riservato al card reader</span>\r\n <span style=\"color: #cc6600;\">pinMode</span>(10, <span style=\"color: #006699;\">OUTPUT</span>);\r\n <span style=\"color: #cc6600;\">pinMode</span>(3, <span style=\"color: #006699;\">OUTPUT</span>); \r\n <span style=\"color: #cc6600;\">pinMode</span>(4, <span style=\"color: #006699;\">OUTPUT</span>); \r\n\r\n <span style=\"color: #7e7e7e;\">//se il modulo sd non viene correttamente inizializzato</span>\r\n <span style=\"color: #cc6600;\">if</span> (!<span style=\"color: #cc6600;\">SD</span>.<span style=\"color: #cc6600;\">begin</span>(chipSelect)) {\r\n <span style=\"color: #7e7e7e;\">//messaggio di errore sul nostro monitor seriale</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"Card failed, or not present"</span>);\r\n\r\n <span style=\"color: #cc6600;\">for</span> (i=0;i<10;i++) {\r\n <span style=\"color: #7e7e7e;\">//blinking del led rosso</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">LOW</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100);\r\n }\r\n <span style=\"color: #cc6600;\">return</span>;\r\n }\r\n\r\n <span style=\"color: #7e7e7e;\">//se correttamente inizializzata...</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"card initialized."</span>);\r\n <span style=\"color: #7e7e7e;\">//blinking led verde</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(500); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">LOW</span>);\r\n\r\n <span style=\"color: #7e7e7e;\">//inizializziamo l'RTC</span>\r\n <span style=\"color: #cc6600;\">Wire</span>.<span style=\"color: #cc6600;\">begin</span>();\r\n RTC.<span style=\"color: #cc6600;\">begin</span>();\r\n <span style=\"color: #cc6600;\">if</span> (! RTC.isrunning()) {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"RTC is NOT running!"</span>);\r\n RTC.adjust(DateTime(__DATE__, __TIME__));\r\n }\r\n}\r\n\r\n<span style=\"color: #cc6600;\">void</span> <span style=\"color: #cc6600;\"><strong>loop</strong></span>()\r\n{\r\n <span style=\"color: #7e7e7e;\">//chiediamo il tempo all'RTC</span>\r\n DateTime now = RTC.now();\r\n <span style=\"color: #cc6600;\">int</span> tempPin=0; <span style=\"color: #7e7e7e;\">//pin del sensore di temperatura</span>\r\n <span style=\"color: #cc6600;\">int</span> ldrPin=1; <span style=\"color: #7e7e7e;\">//pin del sensore di luce</span>\r\n\r\n <span style=\"color: #cc6600;\">int</span> campioni=20; <span style=\"color: #7e7e7e;\">//20 campioni</span>\r\n <span style=\"color: #cc6600;\">int</span> ii=0;\r\n <span style=\"color: #cc6600;\">float</span> tempc1=0; <span style=\"color: #7e7e7e;\">// variabile per la temperatura</span>\r\n <span style=\"color: #cc6600;\">long</span> <span style=\"color: #cc6600;\">unsigned</span> <span style=\"color: #cc6600;\">int</span> light=0; <span style=\"color: #7e7e7e;\">//variabile per la luce</span>\r\n <span style=\"color: #cc6600;\">float</span> samples1[campioni]; <span style=\"color: #7e7e7e;\">// array di campioni per la temperatura e luce</span>\r\n <span style=\"color: #cc6600;\">int</span> samples2[campioni]; \r\n\r\n <span style=\"color: #7e7e7e;\">//aspettiamo 3secondi</span>\r\n <span style=\"color: #cc6600;\">delay</span>(2900);\r\n\r\n <span style=\"color: #cc6600;\">for</span>(ii = 0; ii <= campioni-1 ; ii++)\r\n {\r\n <span style=\"color: #7e7e7e;\">//nell'II-esimo elemento dell'array Samples1 inseriamo il valore convertito della temperatura</span>\r\n samples1[ii] = (( 5.0 * <span style=\"color: #cc6600;\">analogRead</span>(tempPin) * 100.0) / 1024.0);\r\n <span style=\"color: #7e7e7e;\">//sommiamo le temperature di volta in volta in un altra variabile</span>\r\n tempc1 = tempc1 + samples1[ii];\r\n\r\n <span style=\"color: #7e7e7e;\">//non abbiamo bisogna di convertire il valore della quantità di luce, la recuperiamo direttamente</span>\r\n samples2[ii] = <span style=\"color: #cc6600;\">analogRead</span>(ldrPin);\r\n light=light + samples2[ii];\r\n }\r\n\r\n <span style=\"color: #7e7e7e;\">//dividiamo la sommatoria per N</span>\r\n tempc1 = tempc1/campioni; \r\n light = light /campioni;\r\n\r\n <span style=\"color: #7e7e7e;\">//stampiamo sul nostro monitor seriale per eventuale debugging</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">print</span>(tempc1);\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" C"</span>);\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">print</span>(light);\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" light"</span>); \r\n\r\n <span style=\"color: #7e7e7e;\">//apriamo in scrittura il file sulla sd</span>\r\n <span style=\"color: #cc6600;\">File</span> dataFile = <span style=\"color: #cc6600;\">SD</span>.<span style=\"color: #cc6600;\">open</span>(<span style=\"color: #006699;\">"datalog.txt"</span>, <span style=\"color: #006699;\">FILE_WRITE</span>);\r\n\r\n <span style=\"color: #7e7e7e;\">//Scriviamo: LUCE - TEMPERATURA - ORA:MINUTI:SECONDI</span>\r\n <span style=\"color: #cc6600;\">if</span> (dataFile) {\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(light);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">" - "</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(tempc1);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">" - "</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(now.hour(), <span style=\"color: #006699;\">DEC</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">":"</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(now.minute(), <span style=\"color: #006699;\">DEC</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">":"</span>);\r\n dataFile.<span style=\"color: #cc6600;\">println</span>(now.second(), <span style=\"color: #006699;\">DEC</span>);\r\n <span style=\"color: #7e7e7e;\">//chiudiamo il file</span>\r\n dataFile.<span style=\"color: #cc6600;\">close</span>(); \r\n\r\n <span style=\"color: #7e7e7e;\">//blinking led verde</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">LOW</span>);\r\n } \r\n <span style=\"color: #cc6600;\">else</span> {\r\n\r\n <span style=\"color: #7e7e7e;\">//errore nell'apertura del file o card rimossa</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"error opening datalog.txt"</span>);\r\n <span style=\"color: #cc6600;\">for</span> (i=0;i<10;i++) {\r\n <span style=\"color: #7e7e7e;\">//blinkig led rosso</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">LOW</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100);\r\n }\r\n } \r\n}</pre>\r\n<p>Perchè mediare? Nello sketch finale ho inserito questo codice:</p>\r\n<pre>\r\n <span style=\"color: #cc6600;\">for</span>(ii = 0; ii <= campioni-1 ; ii++)\r\n {\r\n <span style=\"color: #7e7e7e;\">//nell'II-esimo elemento dell'array Samples1 inseriamo il valore convertito della temperatura</span>\r\n samples1[ii] = (( 5.0 * <span style=\"color: #cc6600;\">analogRead</span>(tempPin) * 100.0) / 1024.0);\r\n <span style=\"color: #7e7e7e;\">//sommiamo le temperature di volta in volta in un altra variabile</span>\r\n tempc1 = tempc1 + samples1[ii];\r\n\r\n <span style=\"color: #7e7e7e;\">//non abbiamo bisogna di convertire il valore della quantità di luce, la recuperiamo direttamente</span>\r\n samples2[ii] = <span style=\"color: #cc6600;\">analogRead</span>(ldrPin);\r\n light=light + samples2[ii];\r\n }\r\n\r\n <span style=\"color: #7e7e7e;\">//dividiamo la sommatoria per N</span>\r\n tempc1 = tempc1/campioni; \r\n light = light /campioni;</pre>\r\n<p>I motivi principali sono due:</p>\r\n<ol>\r\n <li>\r\n una precisione leggermente migliore della lettura fatta col codice del primo articolo</li>\r\n <li>\r\n in realtà, la media via software può essere evitata se venisse introdotto un piccolo circuito tra sensori e pin.</li>\r\n</ol>\r\n<p>Campionare 20 volte successivamente, mi permette di evitare di introdurre altra circuiteria.</p>\r\n<p>Questo workaround ci permette di non avere valori sballati dovuti ad un effetto collaterale, a livello hardware, del "<a href=\"http://en.wikipedia.org/wiki/Sample_and_hold\" target=\"_blank\" title=\"http://en.wikipedia.org/wiki/Sample_and_hold\">Sample and Hold</a>"</p>\r\n<p>Aprire ed usare il monitor seriale ci permetterà di fare tanto debug... usatelo!</p>\r\n<p> </p>\r\n<p>Sul nostro file datalog.txt avremo finalmente i valori nel formato che ci eravamo prefissi di avere...</p>\r\n<p class=\"rtecenter\"><span style=\"font-size:16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n','','full_html'),('node','forum',0,77,110,'und',0,'<p> </p>\r\n<pre wrap=\"\">\r\nSalve,\r\ndopo aver fatto con il prof. Montella l'iscrizione al progetto Sebeto,\r\ne volendo installare drupal sullo spazio di Sebeto,\r\nnon riesco ad accedere con le info che sono salvate nel file README presenti directory home.\r\nAnche l'accesso tramite phpmyadmin\r\nall'indirizzo\r\n<a class=\"moz-txt-link-freetext\" href=\"http://students.uniparthenope.it/phpmyadmin/\">http://students.uniparthenope.it/phpmyadmin/</a>\r\nnon funziona...\r\nCosa devo fare?\r\nSaluti.</pre>\r\n','','filtered_html'),('node','blog',0,78,111,'und',0,'<h1>\r\n <strong>Ricerca di libri e riviste nella Biblioteca di Ateneo.</strong></h1>\r\n<p> </p>\r\n<h2>\r\n <strong>Description:</strong></h2>\r\n<div>\r\n Dato un titolo, un autore, un editore o in generale una parola, l' API restituisce l'elenco dei record che soddisfano la richiesta di ricerca.</div>\r\n<h2>\r\n </h2>\r\n<h2>\r\n <strong>URL:</strong></h2>\r\n<p>http://students.uniparthenope.it:19091/UniLibrary/searchbook.json</p>\r\n<h2>\r\n </h2>\r\n<h2>\r\n <strong>HTTP Method:</strong></h2>\r\n<p>GET</p>\r\n<p> </p>\r\n<h2>\r\n <strong>Resource Formats:</strong></h2>\r\n<ul>\r\n <li>\r\n <div>\r\n application/json;</div>\r\n </li>\r\n <li>\r\n <div>\r\n application/xml;</div>\r\n </li>\r\n</ul>\r\n<h2>\r\n </h2>\r\n<h2>\r\n <strong>Authentication:</strong></h2>\r\n<div>\r\n Not required.</div>\r\n<p> </p>\r\n<h2>\r\n <strong>Request entities:</strong></h2>\r\n<ul>\r\n <li>\r\n request (obbligatorio);</li>\r\n <li>\r\n by { all, author, title, editor, subject, isbn, issn, system_nbr } (Campo non obbligatorio, in caso di assenza, la ricerca sarà di tipo <em>all);</em></li>\r\n</ul>\r\n<p> </p>\r\n<h2>\r\n <strong>Responses:</strong></h2>\r\n<ul>\r\n <li>\r\n <strong>405 NO_METHOD </strong> Method not allowed.</li>\r\n <li>\r\n <strong>413 NO_REQUEST </strong> No data sent</li>\r\n <li>\r\n <strong>205 NO_RESULTS </strong> No data available</li>\r\n</ul>\r\n<p> </p>\r\n<h2>\r\n <strong>Prova l'API REST sulla console di students.uniparthenope.it:</strong></h2>\r\n<p><span style=\"color: rgb(68, 68, 68); font-family: Monaco, \'Lucida Console\', fixed; line-height: 15px; background-color: rgb(238, 238, 238); \">get("http://students.uniparthenope.it:19091/UniLibrary/searchbook.json", {"request":"giunta", "by":"all"})</span></p>\r\n<h2>\r\n </h2>\r\n<h2>\r\n <strong>Example of use:</strong></h2>\r\n<div>\r\n curl -X GET "http://students.uniparthenope.it:19091/UniLibrary/searchbook.json?request=giunta&by=author"</div>\r\n<div>\r\n </div>\r\n<h2>\r\n <strong>Response Entities: </strong></h2>\r\n<pre>\r\n</pre>\r\n<pre class=\"token\" style=\"color: rgb(85, 85, 85); line-height: 15px; background-color: rgb(238, 238, 238); \">\r\n{ RECORD: [ { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Giunta, Francesco "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Il bilancio / Francesco Giunta, Michele Pisani "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Il bilancio "</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 2. ed. "</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Milano : Apogeo, c2008 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" XIV, 704 p. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Idee & strumenti "</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Idee & strumenti "</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ISBN 978-88-503-28055 "</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Bilancio "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Pisani, Michele "</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 657.3 (ed. 22) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca Centrale "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca-Centrale( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"657-B/30 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Giunta, Francesco <\\1956- > "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Economia aziendale / Francesco Giunta "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Economia aziendale "</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Padova : Cedam, 2008 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" XVIII, 434 p. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ISBN 978-88-13-27348-4 "</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Aziende - Gestione "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 338.5 (ed. 21) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Polo Ing. Sc. Tecn. "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Polo-Ing.-Sc.-Tecn.( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"P1 338-E-16 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Giunta, Fausto "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Lineamenti di diritto penale dell’economia / Fausto Giunta "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 2. ed. "</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Torino : Giappichelli, 2004- "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" v. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Trittico giuridico, Manuali "</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Trittico giuridico. Manuali "</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ISBN 88-348-4568-4 (v. 1) "</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 345.450268 (ed. 20) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Giurisprudenza "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 1.: Delitti contro l’economia pubblica e reati societari. - 2004 "</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Giurisprudenza( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"R-0074 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Camera di commercio industria artigianato e agricoltura "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Raccolta degli usi della provincia di Napoli : 1990 : approvata con delibera della Giunta camerale n. 421 del 12.7.94 / Camera di commercio industria artigianato e agricoltura di Napoli "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" [Napoli] : Camera di commercio industria artigianato e agricoltura, stampa 1995 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 524 p. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ISBN 88- "</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Giurisprudenza "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Giurisprudenza( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"3O(001) "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Atti del XXIV Convegno nazionale dell’ Associazione italiana di cartografia Proceedings of the XXIV national meeting of the Associazione italiana di cartografia : L’Aquila, 25-28 maggio 1988 / Regione Abruzzo : Ufficio stampa della Giunta "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Atti del XXIV Convegno nazionale dell’ Associazione italiana di cartografia "</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" S. Atti di Teramo : Edigrafital, 1989 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 816 p. : ill. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Cartografia "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" (ed. 20) 526 "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Dip. di Scienze Applicate "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Fa parte di: Bollettino dell’Associazione Italiana di Cartografia "</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Dip.-di-Scienze-Applicate( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"S 526/12 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Rompiasio, Giulio "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Metodo in pratica di sommario o sia Compilazione delle leggi, terminazioni & ordini appartenenti agl’illustrissimi & eccellentissimi collegio e magistrato alle acque opera dell’avvocato fiscale Giulio Rompiasio : in Venezia 1733 / riedizione critica a cura di Giovanni Caniato "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Venezia : Ministero per i beni culturali e ambientali - Archivio di Stato di Venezia - Regione del Veneto - Giunta regionale, 1988 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 176, XXIV, 601 p. : ill., tav. ; 30 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Strumenti per la ricerca archivistica. Sez. 1., Repertori antichi ; 1 "</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Strumenti per la ricerca archivistica "</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 346.453104691 (ed. 19) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca Centrale "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" In test. al front.: Ministero per i beni culturali e ambientali, Archivio di Stato di Venezia; Giunta regionale del Veneto. "</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca-Centrale( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"346.00945/100 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Rovigo : le chiese : catalogo dei beni artistici e storici / [a cura] di Vittorio Sgarbi "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Venezia : Giunta regionale del Veneto Marsilio, 1988 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" XIV, 496 p., [32] c. di tav. : ill ; 29 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Rovigo - Chiese "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 759 (ed. 20) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca Centrale "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca-Centrale( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"759/101 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Giunta, Giovanni "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Il redditometro : l’accertamento sintetico dopo il Decreto Ministeriale del 21 Luglio 1983 (...) / di Giovanni Giunta "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" [Milano] : Ipsoa informatica, 1983 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 173 p. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ISBN 88-217-0083-6 "</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Reddito - Determinazione "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 343 "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca Centrale "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca-Centrale( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"336-R/1 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Conferenza nazionale sulla cartografia <\\1979 ; Firenze> "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Conferenza nazionale sulla cartografia : atti della conferenza promossa ed organizzata dalla regione Toscana con il patrocinio del Ministero della Ricerca Scientifica e Tecnologia e la collaborazione del Consiglio Nazionale delle Ricerche "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Conferenza nazionale sulla cartografia "</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Firenze : Giunta Regionale Toscana, 1979 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 607 p. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Cartografia - Congressi "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 526 (ed. 21) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Dip. di Scienze Applicate "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Dip.-di-Scienze-Applicate( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"S 526/1 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Angelici, Mario "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Il giudizio di fronte alla Giunta provinciale amministrativa : in relazione anche alla riforma della giustizia amministrativa / Mario Angelici "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Padova : CEDAM, 1958 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" X, 170 p. ; 26 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Giustizia amministrativa - Riforma "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 350 (ed. 20) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca Centrale "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca-Centrale( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"DEP I-0168 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Kamtz, Ludwig Friedrich "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Prelezioni di meteorologia / per Luigi Federigo Kamtz ; versione dal tedesco di V. Kohler e L. Del Re riveduta e corretta con la giunta di alquante note ricavate da quelle di Martins e Bravais "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Torino : dalla Societa Editrice della Biblioteca dei Comuni Italiani, 1853 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 2 v. "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 551.5 (ed. 21) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Fondo Borbonico "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Voll. 1-2: Brossure editoriali (19x12 cm); legature parz. scucite; carte intonse; foxing UNIPARTHENOPE "</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Vol. 1: Sul front. antiche segnature mss.: 94-g-2 [n.i.]; Class VII 736 Ingress 2425 del Registro inventario della Regia Marina Biblioteca dipartimentale di Napoli; ivi, inoltre, 551.52 class Dewey dell’IUN; 2851 [n.i.]; timbri A e B della Reale Biblioteca di Marina UNIPARTHENOPE "</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Vol. 1: 231 p., [2] c. di tav. ripieg.Vol. 2: 510 p., [2] c. di tav. ripieg. "</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Fondo-Borbonico( 2/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"BORB-G-30/I "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Jatta, Giovanni <\\1767-1844> "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Cenno storico sull’antichissima città di Ruvo nella Peucezia : colla giunta della breve istoria del famoso combattimento de’ tredici cavalieri italiani con altrettanti francesi ... / del giureconsulto napolitano Giovanni Jatta "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Napoli : dalla Tip. Porcelli, 1844 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 348, 30, 40 p., [2] c. di tav., [1] ritr. : ill. ; 28 cm. "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 945.751 (ed. 21) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Fondo Borbonico "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Contiene anche: Rubastinorum numorum catalogus / edidit Franciscus M. Avellinius "</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Legatura in quarto di pelle su piatti di cartone ricoperti di c. dec. (27x21x3 cm.); sul dorso A., tit. e fregi impressi in oro; ivi, inoltre, etichette con antiche segnature; tagli spruzzati; foxing UNIPARTHENOPE "</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Sulla controguardia ant. antiche segnature mss.: Sc.C.I-15 [n.i.]; 69 i 3 [n.i.]; Clas X N.° 156 Ingres 3482 del Registro inventario della Regia Marina Biblioteca dipartimentale di Napoli; sul r. della c. di g. ant. antica scegnatura ms.: 12L-N-12 [n.i.]; Timbri A e B della Reale Biblioteca di Marina UNIPARTHENOPE "</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Rubastinorum numorum catalogus "</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Fondo-Borbonico( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"BORB-P-32 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Jatta, Giovanni <\\1767-1844> "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Cenno storico sull’antichissima città di Ruvo nella Peucezia : colla giunta della breve istoria del famoso combattimento de’ tredici cavalieri italiani con altrettanti francesi ... / del giureconsulto napolitano Giovanni Jatta "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Napoli : dalla Tip. Porcelli, 1844 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 348, 30, 40 p., [2] c. di tav., [1] ritr. : ill. ; 28 cm. "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 945.751 (ed. 21) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Fondo Borbonico "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Contiene anche: Rubastinorum numorum catalogus / edidit Franciscus M. Avellinius "</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Legatura in quarto di pelle su piatti di cartone ricoperti di c. dec. (27x21x3 cm.); sul dorso A., tit. e fregi impressi in oro; ivi, inoltre, etichette con antiche segnature; tagli spruzzati; foxing UNIPARTHENOPE "</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Sulla controguardia ant. antiche segnature mss.: Sc.C.I-15 [n.i.]; 69 i 3 [n.i.]; Clas X N.° 156 Ingres 3482 del Registro inventario della Regia Marina Biblioteca dipartimentale di Napoli; sul r. della c. di g. ant. antica scegnatura ms.: 12L-N-12 [n.i.]; Timbri A e B della Reale Biblioteca di Marina UNIPARTHENOPE "</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Rubastinorum numorum catalogus "</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Fondo-Borbonico( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"BORB-P-32 "</span> } ] }</pre>\r\n','','full_html'),('node','forum',0,79,112,'und',0,'<p>Salve a tutti. <br />\r\n Avrei bisogno di creare un file .txt in una cartella.<br />\r\n Ho tutti i privilegi (almento credo) per creare le cartelle (ho anche provato con chmod) ma il txt non ne vuole sapere di comparire.<br />\r\n <br />\r\n Posto lo script:</p>\r\n<p><code></p>\r\n<div>\r\n <?php</div>\r\n<div>\r\n include 'database.php';</div>\r\n<div>\r\n session_start();</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (!isset($_POST["submit"])){</div>\r\n<div>\r\n </div>\r\n<div>\r\n $id = $_SESSION ["id_inserzione"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n $query = mysql_query("SELECT `username_utente` FROM `prenotazioni` WHERE `ID_inserzione`='$id'");</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo '<form action="response.php" method="POST">';</div>\r\n<div>\r\n while ($array = mysql_fetch_array($query)) {</div>\r\n<div>\r\n $user = $array['username_utente'];</div>\r\n<div>\r\n echo $user;</div>\r\n<div>\r\n echo '<input type="radio" name="resp['.$user.']" value="si"/> Si';</div>\r\n<div>\r\n echo '<input type="radio" name="resp['.$user.']" value="no"/> No <br/>';</div>\r\n<div>\r\n }</div>\r\n<div>\r\n echo '</div></div>\r\n<div>\r\n <input type="submit" name="submit" value="Invia"/></div>\r\n<div>\r\n </form>';</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n else {</div>\r\n<div>\r\n $check = $_POST ["resp"];</div>\r\n<div>\r\n // utetne è il nome dell' utente, risp è la risposta data</div>\r\n<div>\r\n $si = "Complimenti! Sei risultato ideoneo per la".$_SESSION["username"].</div>\r\n<div>\r\n ". A breve verrai contattato per la sostenere il vero e proprio colloquio";</div>\r\n<div>\r\n </div>\r\n<div>\r\n $no = "Ci dispiace ma non sei risultato idoneo per la " . $_SESSION["username"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n foreach ( $check as $utente => $risp ){</div>\r\n<div>\r\n echo $utente . " " . $risp . "<br/>";</div>\r\n<div>\r\n $path = 'http://students.uniparthenope.it/~0124000317/Progetto/users/'.$utente ."/";</div>\r\n<div>\r\n chmod ($path,0777);</div>\r\n<div>\r\n $path = $path . "message.txt";</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo $path;</div>\r\n<div>\r\n $file = fopen ($path,'w') or die("can't open file");</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n if ($risp == 'si') {</div>\r\n<div>\r\n fwrite ($file,$si);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n else {</div>\r\n<div>\r\n fwrite ($file,$no);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n fclose ($file);</div>\r\n<div>\r\n } // fine CICLO FOREACH</div>\r\n<div>\r\n </div>\r\n<div>\r\n // header ("location:home_azienda.php");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </code></div>\r\n<div>\r\n </div>\r\n','','filtered_html'),('node','blog',0,80,113,'und',0,'<p> </p>\r\n<p><strong>Modulo</strong>: meteo_parthenope</p>\r\n<p><strong>Autori</strong>: Gennaro Luca Russo (0111000047), Stefano Lardo (0111000034)</p>\r\n<p><strong>Contatti</strong>: gennaroluca.russo@studenti.uniparthenope.it, stefano.lardo@studenti.uniparthenope.it</p>\r\n<h1>\r\n Area Gestione per utente amministratore</h1>\r\n<p><strong>Step 1: Aggiungere nuova area</strong></p>\r\n<p>Aggiungere una nuova area significa inserire nel database (table meteo_areas) i poligoni riferiti alle aree sulle quali visualizzare le previsioni). La prima operazione è quella di selezionare il tipo di area che si vuole aggiungere attraverso il wkt file Le coordinate dei poligoni sono inserite in un file denominato wkt. Questo file contiene normalmente delle colonne divise da tabulazione che possono essere:</p>\r\n<p> 0 1 2 3 4</p>\r\n<p>wkt_geom COD_REG NOME_REG SHAPE_Leng SHAPE_Area</p>\r\n<p>Ogni colonna ha un indice che parte da 0 (zero). Per poter memorizzare le colonne nel db bisogna specificare l’indice è corrispondente alla attributo desiderato.</p>\r\n<p>Esempio:</p>\r\n<p><strong>Area type = reg</strong></p>\r\n<p><strong>Choose column wkt polygon = 0</strong></p>\r\n<p><strong>Choose column wkt place id = 1</strong></p>\r\n<p><strong>Choose column wkt place name = 2</strong></p>\r\n<p><strong>Choose column wkt parent code = Radice</strong></p>\r\n<p>La colonna <strong>Choose column wkt parent code </strong>deve avere valore = ‘Radice’ se le aree inserite rappresentano le aree della mappa (immagine) principale altrimenti bisogna specificare la colonna padre.</p>\r\n<p><img alt=\"Esempio inserimento area\" src=\"http://students.uniparthenope.it/~0111000047/_example_img/1.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p>Esempio con colonna padre:</p>\r\n<p> 0 1 2 3 4 5</p>\r\n<p>wkt_geom COD_REG COD_PRO NOME_PRO SHAPE_Leng SHAPE_Area</p>\r\n<p><strong>Area type = prov</strong></p>\r\n<p><strong>Choose column wkt polygon = 0</strong></p>\r\n<p><strong>Choose column wkt place id = 2</strong></p>\r\n<p><strong>Choose column wkt place name = 3</strong></p>\r\n<p><strong>Choose column wkt parent code = 1</strong></p>\r\n<p><img alt=\"Esempio inserimento area\" src=\"http://students.uniparthenope.it/~0111000047/_example_img/2.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><strong>Step 2: aggiungere nuova rappresentazione</strong></p>\r\n<p>Questa sezione permette di aggiungere rappresentazioni alle quali possono appartenere le mappe. Bisogna inserire un titolo e una descrizione.</p>\r\n<p>Esempio:</p>\r\n<p><strong>Representation name = Italia</strong></p>\r\n<p><strong>Representation description = Previsioni meteo Italia</strong></p>\r\n<p><img alt=\"Inserimento nuova rappresentazione\" src=\"http://students.uniparthenope.it/~0111000047/_example_img/3.jpg\" /></p>\r\n<p><strong>Step 3: Aggiungere una nuova mappa</strong></p>\r\n<p>Aggiungere una nuova mappa significa principalmente caricare un file immagine con il world file allegato. Il world file viene generato automaticamente da un programma tipo QGIS e contiene le informazioni per applicare le trasformazioni di rappresentazione tra coordinate della mappa a coordinate pixel. Questa operazione permette di creare dei poligoni linkabili sulle aree della mappa.</p>\r\n<p>Esempio di world file</p>\r\n<p>1602.3395311921715</p>\r\n<p>0</p>\r\n<p>0</p>\r\n<p>-1602.3395311921715</p>\r\n<p>141353.48636193937</p>\r\n<p>5251851.2737001237</p>\r\n<p>Nello specifico:</p>\r\n<p>§ Line 1: A: pixel size in the x-direction in map units/pixel</p>\r\n<p>§ Line 2: D: rotation about y-axis</p>\r\n<p>§ Line 3: B: rotation about x-axis</p>\r\n<p>§ Line 4: E: pixel size in the y-direction in map units, almost always negative<a href=\"http://en.wikipedia.org/wiki/World_file#cite_note-2\">[3]</a></p>\r\n<p>§ Line 5: C: x-coordinate of the center of the upper left pixel</p>\r\n<p>§ Line 6: F: y-coordinate of the center of the upper left pixel</p>\r\n<p> </p>\r\n<p>Esempio inserimento da modulo con mappa iniziale da visualizzare appena scelgo il tipo di rappresentazione:</p>\r\n<p><strong>Choose place type to add = reg</strong></p>\r\n<p><strong>Choose representation to add = Meteo Italia</strong></p>\r\n<p><strong>Map name = Italia</strong></p>\r\n<p><strong>Map code = radix</strong></p>\r\n<p><strong>Upload map image = </strong><strong>italia</strong><strong>.png</strong></p>\r\n<p><strong>Upload World file image = italia.pngw</strong></p>\r\n<p><strong><img alt=\"Inserimento nuova mappa\" src=\"http://students.uniparthenope.it/~0111000047/_example_img/4.jpg\" /></strong></p>\r\n<p>Esempio inserimento da modulo con mappa secondaria da visualizzare dopo aver cliccato su una mappa iniziale di una rappresentazione:</p>\r\n<p><strong>Choose place type to add = prov</strong></p>\r\n<p><strong>Choose representation to add = Meteo Italia</strong></p>\r\n<p><strong>Map name = Campania</strong></p>\r\n<p><strong>Map code = reg15</strong></p>\r\n<p><strong>Upload map image = campania.png</strong></p>\r\n<p><strong>Upload World file image = campania.pngw</strong></p>\r\n<p><img alt=\"Inserimento nuova mappa regione\" src=\"http://students.uniparthenope.it/~0111000047/_example_img/5.jpg\" /></p>\r\n','','full_html'),('node','forum',0,81,114,'und',0,'<p>Salve, oggi volevo provare a installare drupal sul mio spazio web ma al momento del trasferimento file il messaggio era il seguente "Data quota excedeed" , anche su uno spazio web completamente vuoto creando una semplice cartella! credo che ci siano problemi all'interno del server,non so se il problema è già noto ma ci tenevo a farlo presente.</p>\r\n<p>Confido nella vostra sapienza per una soluzione!</p>\r\n<p>Saluti!</p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,82,115,'und',0,'<p>Uno dei modi più semplice per inviare dati sul web è sicuramente usare le query string.</p>\r\n<p>La query string è quella parte dell'url che contiente dati da passare in input ad un programma.</p>\r\n<p>Una volta scritta il nostro sketch in arduino è estremamente semplice inviare i dati ad una webpage da noi scritta.</p>\r\n<p>Avremo bisogno di un modulo aggiuntivo alla nostra board: l'ethernet shield.</p>\r\n<p>Questo shield ha tutto il necessario per trasformare arduino in un client o in un piccolo webservice.</p>\r\n<p>Le librerie ufficiali sfruttano in modo quasi ottimale le potenzialità del suo chipset.</p>\r\n<p><a href=\"http://www.adafruit.com/adablog/wp-content/uploads/2010/08/ethshield.jpg\"><img alt=\"\" class=\"alignnone\" height=\"374\" src=\"http://www.adafruit.com/adablog/wp-content/uploads/2010/08/ethshield.jpg\" title=\"http://www.adafruit.com/adablog/wp-content/uploads/2010/08/ethshield.jpg\" width=\"488\" /></a></p>\r\n<p> </p>\r\n<p>Con l'ausilio di richieste HTTP 1.1, quali la GET, riusciamo agilmente nel nostro obiettivo.</p>\r\n<p> </p>\r\n<p>Arduino sketch:</p>\r\n<pre style=\"background:#000;color:#f8f8f8\">\r\n<span style=\"color:#8996a8\">#<span style=\"color:#afc4db\">include</span> &lt;SPI.h&gt;</span>\r\n<span style=\"color:#8996a8\">#<span style=\"color:#afc4db\">include</span> &lt;Ethernet.h&gt;</span>\r\nbyte mac[] = {\r\n0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; <span style=\"color:#aeaeae;font-style:italic\">//assegnamo un mac addres alla nostra arduino</span>\r\nbyte ip[] = {\r\n192,168,2,20 }; <span style=\"color:#aeaeae;font-style:italic\">//assegnamo un ip</span>\r\nbyte server[] = {\r\n46,16,168,17 }; <span style=\"color:#aeaeae;font-style:italic\">//l’ip del web service</span>\r\nClient <span style=\"color:#89bdff\">client</span>(server, 80);\r\n<span style=\"color:#aeaeae;font-style:italic\">//istanziamo un client che lavora sull’ip del web service sulla porta 80</span>\r\n<span style=\"color:#99cf50\">void</span> <span style=\"color:#89bdff\">setup</span>() {\r\n Ethernet.<span style=\"color:#dad085\">begin</span>(mac, ip);\r\n //istanziamo l’ethernet shield con mac ed ip\r\n Serial.<span style=\"color:#dad085\">begin</span>(9600);\r\n}\r\n<span style=\"color:#99cf50\">void</span> <span style=\"color:#89bdff\">loop</span>()\r\n{\r\n delay(1000);\r\n Serial.<span style=\"color:#dad085\">println</span>(“connecting…”);\r\n client.<span style=\"color:#dad085\">connect</span>(); //ci colleghiamo con i parametri di cui sopra\r\n if (client.<span style=\"color:#dad085\">connected</span>()) {\r\n Serial.<span style=\"color:#dad085\">println</span>(“connected”);\r\n //la nostra GET:\r\n client.<span style=\"color:#dad085\">println</span>(“GET http://www<span style=\"color:#3e87e3\">.QUALCOSA</span><span style=\"color:#3e87e3\">.com</span>/acquire<span style=\"color:#3e87e3\">.aspx</span>?username=USERFROMARDUINO&password=PASSFROMARDUINO&datastream=DATASTREAMFROMARDUINO&value=VALUEFROMARDUINO HTTP/1.1″);\r\n client.<span style=\"color:#dad085\">println</span> ( “Host: http://www<span style=\"color:#3e87e3\">.QUALCOSA</span><span style=\"color:#3e87e3\">.com</span>” ) ;\r\n client.<span style=\"color:#dad085\">println</span>(); //chiudere sempre con uno spazio vuoto\r\n }\r\n else {\r\n Serial.<span style=\"color:#dad085\">println</span>(“connection failed”);\r\n }\r\n if (client.<span style=\"color:#dad085\">available</span>()) {\r\n //stampiamo tutti i caratteri in risposta dal web service\r\n do {\r\n char c = client.<span style=\"color:#dad085\">read</span>();\r\n Serial.<span style=\"color:#dad085\">print</span>(c);\r\n }\r\n while (client.<span style=\"color:#dad085\">available</span>());\r\n }\r\n if (!client.<span style=\"color:#dad085\">connected</span>()) { //stoppiamo il nostro client\r\n Serial.<span style=\"color:#dad085\">println</span>();\r\n Serial.<span style=\"color:#dad085\">println</span>(“disconnecting.”);\r\n client.<span style=\"color:#dad085\">stop</span>();\r\n }\r\n}\r\n</pre>\r\n<p> </p>\r\n<p>Il nostro frontend acquire.aspx:</p>\r\n<pre style=\"background:#000;color:#f8f8f8\">\r\n<%@ <span style=\"color:#3e87e3\">Page</span> <span style=\"color:#3e87e3\">Language</span><span style=\"color:#e28964\">=</span>”<span style=\"color:#3e87e3\">C</span><span style=\"color:#aeaeae;font-style:italic\">#” AutoEventWireup=”true” CodeFile=”acquire.aspx.cs” Inherits=”acquire” </span>%>\r\n <span style=\"color:#89bdff\"><!<span style=\"color:#89bdff\"><span style=\"color:#89bdff\">DOCTYPE</span> html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”</span>></span>\r\n <span style=\"color:#89bdff\"><<span style=\"color:#89bdff\">html</span> <span style=\"color:#89bdff\">xmlns</span>=”<span style=\"color:#89bdff\">http:</span>//<span style=\"color:#89bdff\">www</span>.<span style=\"color:#89bdff\">w</span>3.<span style=\"color:#89bdff\">org</span>/1999/<span style=\"color:#89bdff\">xhtml</span>”></span>\r\n \r\n <span style=\"color:#89bdff\"><<span style=\"color:#89bdff\">head</span> <span style=\"color:#89bdff\">runat</span>=”<span style=\"color:#89bdff\">server</span>”></span>\r\n <span style=\"color:#89bdff\"><<span style=\"color:#89bdff\">title</span>></<span style=\"color:#89bdff\">title</span>></span>\r\n <span style=\"color:#89bdff\"></<span style=\"color:#89bdff\">head</span>></span>\r\n \r\n <span style=\"color:#89bdff\"><<span style=\"color:#89bdff\">body</span>></span>\r\n <span style=\"color:#89bdff\"><<span style=\"color:#89bdff\">form</span> <span style=\"color:#89bdff\">id</span>=”form1″ runat=”server”>\r\n <div>\r\n <asp:TextBox ID=”TextBox1″ runat=”server”></asp:TextBox>\r\n <asp:TextBox ID=”TextBox2″ runat=”server”></asp:TextBox>\r\n <asp:TextBox ID=”TextBox3″ runat=”server”></asp:TextBox>\r\n <asp:TextBox ID=”TextBox4″ runat=”server”></asp:TextBox>\r\n </div>\r\n </form>\r\n </body> \r\n </html>\r\n</span></pre>\r\n<p> </p>\r\n<p> </p>\r\n<p>Il backend in C# con il parsing della query string:</p>\r\n<pre style=\"background:#000;color:#f8f8f8\">\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing System.Web.UI;\r\nusing System.Web.UI.WebControls;\r\npublic partial class acquire : System.Web.UI.Page\r\n{\r\n protected void Page_Load(object sender, EventArgs e)\r\n {\r\n TextBox1.Text = Request.QueryString[<span style=\"color:#65b042\">"username"</span>];\r\n TextBox2.Text = Request.QueryString[<span style=\"color:#65b042\">"password"</span>];\r\n TextBox3.Text = Request.QueryString[<span style=\"color:#65b042\">"datastream"</span>];\r\n TextBox4.Text = Request.QueryString[<span style=\"color:#65b042\">"value"</span>];\r\n }\r\n}\r\n</pre>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><span style=\"font-size:16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n','','full_html'),('node','blog',0,84,117,'und',0,'<p><span>intento a scrivere codice posto sul blog quello che fin'ora sono riuscito a concludere nello sviluppo del videogioco Rapid Roll :</span><br />\r\n <span>Ho diviso in classi ogni componente che fa parte complessivamente del videogioco : sfera , rettangolo-sostegno e le classi label , panel e frame rispettivamente per : disegnare le componenti grafiche che vivono nel videogioco e implementare i timerlistener allo scopo di provvedere ad una temporizzazione adeguata degli eventi.Inoltre ho deciso di suddividere in altre due classi il comportamento della sfera ogniqualvolta scende e sale : queste classi accorpano i metodi che provvederanno ad incrementare/decrementare le coordinate della sfera a seconda della posizione in cui si trova o in funzione all'interazione che subisce con i rettangoli. Vediamo quello fatto fino ad ora :<br />\r\n <br />\r\n CLASSE FINESTRA:</span></p>\r\n<p> </p>\r\n<pre>\r\n package rapidroll;\r\n\r\n\r\n\r\n<p> </p>\r\n<div>\r\n </div>\r\n<div>\r\n import javax.swing.*;</div>\r\n<div>\r\n import java.awt.event.ActionEvent;</div>\r\n<div>\r\n import java.awt.event.ActionListener;</div>\r\n<div>\r\n import java.awt.Toolkit;</div>\r\n<div>\r\n import java.awt.event.KeyEvent;</div>\r\n<div>\r\n import java.awt.event.KeyListener;</div>\r\n<div>\r\n import java.awt.Image;</div>\r\n<div>\r\n import java.awt.BorderLayout;</div>\r\n<div>\r\n import java.lang.Math;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class Finestra extends JFrame{</div>\r\n<div>\r\n </div>\r\n<div>\r\n Pannello p=new Pannello();</div>\r\n<div>\r\n PallaSale ps=new PallaSale();</div>\r\n<div>\r\n PallaScende cntrl=new PallaScende();</div>\r\n<div>\r\n Label la=new Label();</div>\r\n<div>\r\n Timer timersos,timerrefresh,timersale,timerscende;</div>\r\n<div>\r\n Timer timerPalla;</div>\r\n<div>\r\n public Finestra(){</div>\r\n<div>\r\n super("Rapid Roll!");</div>\r\n<div>\r\n </div>\r\n<div>\r\n Image Immagine;</div>\r\n<div>\r\n setSize(500,1000);</div>\r\n<div>\r\n Immagine = Toolkit.getDefaultToolkit().getImage("D:\\\\Documenti\\\\Downloads\\\\rapid.png");</div>\r\n<div>\r\n this.setIconImage(Immagine);</div>\r\n<div>\r\n this.setVisible(true);</div>\r\n<div>\r\n </div>\r\n<div>\r\n setResizable(false);</div>\r\n<div>\r\n setVisible(true);</div>\r\n<div>\r\n setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</div>\r\n<div>\r\n </div>\r\n<div>\r\n add(p);</div>\r\n<div>\r\n timersos=new Timer(4000,new ListenerTimerSos());</div>\r\n<div>\r\n timersale=new Timer(7,new ListenerTimerSale());</div>\r\n<div>\r\n timerscende=new Timer(7,new ListenerTimerScende());</div>\r\n<div>\r\n </div>\r\n<div>\r\n timerrefresh=new Timer(80,new ListenerTimerRefreshsos());</div>\r\n<div>\r\n </div>\r\n<div>\r\n timerPalla=new Timer(1,new ListenerPalla());</div>\r\n<div>\r\n //timerPalla.setDelay(100); USALO QUANDO VUOI FARE IL BONUS DI RALLENTAMENTO</div>\r\n<div>\r\n timerscende.setInitialDelay(4000);</div>\r\n<div>\r\n timerPalla.setInitialDelay(4000);</div>\r\n<div>\r\n timersos.start();</div>\r\n<div>\r\n timerPalla.start();</div>\r\n<div>\r\n timerscende.start();</div>\r\n<div>\r\n timerrefresh.start();</div>\r\n<div>\r\n timersale.start();</div>\r\n<div>\r\n this.addKeyListener(new listenermov());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public class ListenerTimerSos implements ActionListener{</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void actionPerformed(ActionEvent ae) {</div>\r\n<div>\r\n p.la.sostegno.compari();</div>\r\n<div>\r\n p.la.repaint();</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class ListenerTimerScende implements ActionListener{</div>\r\n<div>\r\n public void actionPerformed(ActionEvent ae){</div>\r\n<div>\r\n </div>\r\n<div>\r\n if(p.la.io.down==true) p.la.io.scende();</div>\r\n<div>\r\n p.la.repaint();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n public class ListenerTimerSale implements ActionListener{ </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void actionPerformed(ActionEvent ae){ </div>\r\n<div>\r\n </div>\r\n<div>\r\n if (p.la.io.down==false) p.la.io.sale();</div>\r\n<div>\r\n p.la.repaint();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class ListenerTimerRefreshsos implements ActionListener{</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void actionPerformed(ActionEvent ae) {</div>\r\n<div>\r\n p.la.sostegno.saleRect();</div>\r\n<div>\r\n p.la.repaint();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public class ListenerPalla implements ActionListener{</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void actionPerformed(ActionEvent ae) {</div>\r\n<div>\r\n </div>\r\n<div>\r\n p.la.io.general();</div>\r\n<div>\r\n p.la.repaint();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public class listenermov implements KeyListener{</div>\r\n<div>\r\n boolean destra=false,sinistra=false,giu=false;</div>\r\n<div>\r\n public void keyTyped(KeyEvent ke) {</div>\r\n<div>\r\n </div>\r\n<div>\r\n //non si puo' fare override di metodi , nel senso che keytyped non si puo' omettere e neanche keypressed e key released. Ce lo mettiamo ma è inutile</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void keyPressed(KeyEvent ke) { </div>\r\n<div>\r\n char c=ke.getKeyChar();</div>\r\n<div>\r\n if(c=='a') sinistra=true;</div>\r\n<div>\r\n if(c=='d') destra=true;</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n if(sinistra==true){ p.la.io.muovesinistra(); p.la.repaint(); }</div>\r\n<div>\r\n if(destra==true){ p.la.io.muovedestra(); p.la.repaint(); } </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n public void keyReleased(KeyEvent ke){</div>\r\n<div>\r\n char c=ke.getKeyChar();</div>\r\n<div>\r\n if (c=='a') sinistra=false;</div>\r\n<div>\r\n if (c=='d') destra=false;</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<p>CLASSE LABEL:<br />\r\n </p>\r\n<pre>\r\n package rapidroll;\r\n\r\n </pre>\r\n<div>\r\n </div>\r\n<div>\r\n import java.awt.*;</div>\r\n<div>\r\n import javax.swing.*;</div>\r\n<div>\r\n import java.util.*;</div>\r\n<div>\r\n import java.awt.Transparency;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class Label extends JLabel{</div>\r\n<div>\r\n public Sfera io;</div>\r\n<div>\r\n public Rect sostegno;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public Label(){</div>\r\n<div>\r\n io=new Sfera(this);</div>\r\n<div>\r\n sostegno=new Rect();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public Dimension getPreferredSize(){ </div>\r\n<div>\r\n return new Dimension(500,1000);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n protected void paintComponent(Graphics g){</div>\r\n<div>\r\n super.paintComponent(g);</div>\r\n<div>\r\n </div>\r\n<div>\r\n this.setIcon(new ImageIcon("D:\\\\Documenti\\\\Downloads\\\\cielo.jpg"));</div>\r\n<div>\r\n g.setColor(Color.RED);</div>\r\n<div>\r\n g.drawOval(io.xCord,io.yCord,30,30); //coordinate x e y (200 e 200) dell'estremita' in alto a sinistra del cerchio (le coordinate che dovrai far muovere)</div>\r\n<div>\r\n g.fillOval(io.xCord,io.yCord,30,30);</div>\r\n<div>\r\n g.setColor(new Color(0,0,0,0));</div>\r\n<div>\r\n </div>\r\n<div>\r\n g.drawLine(io.xLinea,io.yLinea,io.xLinea2,io.yLinea2);</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n for(int i=0;i<sostegno.arrayRect.length;i++){</div>\r\n<div>\r\n if(sostegno.arrayRect[i] != null){</div>\r\n<div>\r\n g.setColor(Color.blue);</div>\r\n<div>\r\n g.drawRoundRect(sostegno.arrayRect[i].xRect, sostegno.arrayRect[i].yRect, 120, 20, 20, 15);</div>\r\n<div>\r\n g.fillRoundRect(sostegno.arrayRect[i].xRect, sostegno.arrayRect[i].yRect, 120, 20, 20, 15);</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n } </div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<p>CLASSE PallaSale:</p>\r\n<pre>\r\n \r\n\r\n </pre>\r\n<div>\r\n </div>\r\n<div>\r\n package rapidroll;</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public class PallaSale {</div>\r\n<div>\r\n </div>\r\n<div>\r\n public Pannello pannn=new Pannello();</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void pallasale(){</div>\r\n<div>\r\n </div>\r\n<div>\r\n if(pannn.la.io.down==false) </div>\r\n<div>\r\n pannn.la.io.sale();</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n <br />\r\n </div>\r\n<p>CLASSE PallaScende:</p>\r\n<pre>\r\n \r\n\r\n </pre>\r\n<div>\r\n </div>\r\n<div>\r\n package rapidroll;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class PallaScende {</div>\r\n<div>\r\n public Pannello pann=new Pannello();</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void controllo(){</div>\r\n<div>\r\n if(pann.la.io.down==true) </div>\r\n<div>\r\n pann.la.io.scende();</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n <br />\r\n <br />\r\n </div>\r\n<p>CLASSE Pannello:</p>\r\n<pre>\r\n \r\n\r\n </pre>\r\n<div>\r\n package rapidroll;</div>\r\n<div>\r\n import java.awt.*;</div>\r\n<div>\r\n import javax.swing.*;</div>\r\n<div>\r\n import java.util.*;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class Pannello extends JPanel{</div>\r\n<div>\r\n public Dimension getPreferredSize(){</div>\r\n<div>\r\n return new Dimension(500,1000);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Label la;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public Pannello(){</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n la=new Label(); </div>\r\n<div>\r\n add(la);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n <br />\r\n <br />\r\n </div>\r\n<p>CLASSE Rect</p>\r\n<pre>\r\n \r\n\r\n \r\n </pre>\r\n<div>\r\n <div>\r\n package rapidroll;</div>\r\n <div>\r\n import javax.swing.*;</div>\r\n <div>\r\n import java.util.*;</div>\r\n <div>\r\n </div>\r\n <div>\r\n public class Rect {</div>\r\n <div>\r\n </div>\r\n <div>\r\n sos[] arrayRect;</div>\r\n <div>\r\n int timing=0;</div>\r\n <div>\r\n </div>\r\n <div>\r\n public Rect()</div>\r\n <div>\r\n {</div>\r\n <div>\r\n arrayRect=new sos[20]; </div>\r\n <div>\r\n }</div>\r\n <div>\r\n </div>\r\n <div>\r\n public void saleRect()</div>\r\n <div>\r\n {</div>\r\n <div>\r\n for(int i=0;i<arrayRect.length;i++)</div>\r\n <div>\r\n if(arrayRect[i]!=null)</div>\r\n <div>\r\n arrayRect[i].yRect-=10; </div>\r\n <div>\r\n </div>\r\n <div>\r\n }</div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n public void compari()</div>\r\n <div>\r\n {</div>\r\n <div>\r\n int k;</div>\r\n <div>\r\n for(k=0;k<arrayRect.length;k++)</div>\r\n <div>\r\n if(arrayRect[k]==null) break;</div>\r\n <div>\r\n </div>\r\n <div>\r\n for(int i=k-1;i>=0;i--) arrayRect[i+1]=arrayRect[i];</div>\r\n <div>\r\n arrayRect[0]=new sos();</div>\r\n <div>\r\n </div>\r\n <div>\r\n }</div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n public class sos{</div>\r\n <div>\r\n public int xRect;</div>\r\n <div>\r\n public int yRect;</div>\r\n <div>\r\n public int larghezza;</div>\r\n <div>\r\n public int altezza;</div>\r\n <div>\r\n public int larghezzaArco;</div>\r\n <div>\r\n public int altezzaArco;</div>\r\n <div>\r\n public sos(){</div>\r\n <div>\r\n this.larghezza=120;</div>\r\n <div>\r\n this.altezza=20;</div>\r\n <div>\r\n this.larghezzaArco=20;</div>\r\n <div>\r\n this.altezzaArco=15;</div>\r\n <div>\r\n xRect=5+(int)(Math.random()*450);</div>\r\n <div>\r\n yRect=950;</div>\r\n <div>\r\n }</div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n }</div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n }</div>\r\n <div>\r\n <br />\r\n </div>\r\n</div>\r\n<p>CLASSE Sfera:</p>\r\n<pre>\r\n \r\n\r\n </pre>\r\n<div>\r\n package rapidroll;</div>\r\n<div>\r\n import javax.swing.*;</div>\r\n<div>\r\n import java.awt.event.ActionEvent;</div>\r\n<div>\r\n import java.awt.event.ActionListener;</div>\r\n<div>\r\n import java.awt.Toolkit;</div>\r\n<div>\r\n import java.awt.event.KeyEvent;</div>\r\n<div>\r\n import java.awt.event.KeyListener;</div>\r\n<div>\r\n import java.awt.Image;</div>\r\n<div>\r\n import java.awt.BorderLayout;</div>\r\n<div>\r\n import java.lang.Math;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class Sfera {</div>\r\n<div>\r\n </div>\r\n<div>\r\n public int xCord;</div>\r\n<div>\r\n public int yCord;</div>\r\n<div>\r\n public int xLinea;</div>\r\n<div>\r\n public int yLinea;</div>\r\n<div>\r\n public int xLinea2;</div>\r\n<div>\r\n public int yLinea2;</div>\r\n<div>\r\n public int i;</div>\r\n<div>\r\n boolean down;</div>\r\n<div>\r\n public int g,f,cont1,cont2;</div>\r\n<div>\r\n Label lab;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public Sfera(Label lab){ </div>\r\n<div>\r\n xCord=200;</div>\r\n<div>\r\n i=1;</div>\r\n<div>\r\n this.lab=lab;</div>\r\n<div>\r\n yCord=100;</div>\r\n<div>\r\n g=0;</div>\r\n<div>\r\n down=true;</div>\r\n<div>\r\n f=0;</div>\r\n<div>\r\n xLinea=xCord;</div>\r\n<div>\r\n yLinea=yCord+30;</div>\r\n<div>\r\n xLinea2=xCord+30;</div>\r\n<div>\r\n yLinea2=yCord+30;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void muovesinistra()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xCord-=25;</div>\r\n<div>\r\n xLinea-=25;</div>\r\n<div>\r\n xLinea2-=25;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void muovedestra()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xCord+=25; </div>\r\n<div>\r\n xLinea+=25;</div>\r\n<div>\r\n xLinea2+=25;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void scende()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n yCord+=1; </div>\r\n<div>\r\n yLinea+=1;</div>\r\n<div>\r\n yLinea2+=1;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void sale()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n yCord-=1;</div>\r\n<div>\r\n yLinea-=1;</div>\r\n<div>\r\n yLinea2-=1;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n public void general()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n for(g=0;g<lab.sostegno.arrayRect.length;g++)</div>\r\n<div>\r\n if(lab.sostegno.arrayRect[g]==null) break;</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n f=g-1;</div>\r\n<div>\r\n </div>\r\n<div>\r\n if((yLinea==lab.sostegno.arrayRect[f].yRect+5) && ((xLinea-lab.sostegno.arrayRect[f].xRect>-5) && (xLinea- lab.sostegno.arrayRect[f].xRect<120))){</div>\r\n<div>\r\n </div>\r\n<div>\r\n down=false; </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n if( (xLinea<lab.sostegno.arrayRect[f].xRect) || (xLinea>lab.sostegno.arrayRect[f].xRect+120)) {</div>\r\n<div>\r\n </div>\r\n<div>\r\n down=true; </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n</pre>\r\n<p> </p>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,85,118,'und',0,'<p>Seguono tre screenshot relativi al videogioco che sto sviluppando , Rapid Roll:<br />\r\n <br />\r\n Start del game : La sfera è sospesa in seguito al setInitialDelay di 4 secondi a cui sottopongo il metodo scendiPalla.<br />\r\n (ovvero la palla comincia a scendere dopo 4 secondi).<br />\r\n <a href=\"http://imageshack.us/photo/my-images/269/rapid1.jpg/\">http://imageshack.us/photo/my-images/269/rapid1.jpg/</a></p>\r\n<p>Nel secondo screenshot l'utente è riuscito a trovare un rettangolo ed appoggiarsi su di esso : <br />\r\n <a href=\"http://imageshack.us/photo/my-images/27/rapid2n.jpg/\">http://imageshack.us/photo/my-images/27/rapid2n.jpg/</a><br />\r\n <br />\r\n <br />\r\n Nel seguente , l'utente sceglie di abbandonare il rettangolo su cui risiedeva per scegliere il prossimo che sale :</p>\r\n<p><br />\r\n <a href=\"http://imageshack.us/photo/my-images/402/rapid3c.jpg/\">http://imageshack.us/photo/my-images/402/rapid3c.jpg/</a></p>\r\n<p>L'ultimo screenshot mostra la situazione in cui l'utente è caduto senza trovare nessun valido appoggio. Nei prossimi giorni provvederò a implementare la sconfitta con una scritta di Hai Perso! che apparirà ogniqualvolta l'utente non riesce a proseguire nel gioco.</p>\r\n<p><a href=\"http://imageshack.us/photo/my-images/802/rapid4.jpg/\">http://imageshack.us/photo/my-images/802/rapid4.jpg/</a><br />\r\n <br />\r\n <br />\r\n Appena apporterò cambiamenti nei prossimi giorni , provvederò a postare altri screenshot sul blog.<br />\r\n <br />\r\n <br />\r\n </p>\r\n','','filtered_html'),('node','blog',0,86,119,'und',0,'<p>Buonasera,<br />\r\n oggi sono riuscito a sviluppare un algoritmo migliore per quanto riguarda l'interazione che c'è tra pallina e rettangolo.<br />\r\n Ho deciso per una questione di complessità di gioco di aggiungere la presenza di rettangoli "fantasma".<br />\r\n Sembrano all'apparenza rettangoli di sostegno normali , ma la pallina li attraverserà di getto senza sostarci sopra.<br />\r\n Le modifiche riguardano prettamente la classe Sfera e in particolare il metodo general().<br />\r\n Segue il tutto:<br />\r\n <br />\r\n CLASSE Sfera modificata:</p>\r\n<pre>\r\n<div>\r\n package rapidroll;</div>\r\n<div>\r\n import javax.swing.*;</div>\r\n<div>\r\n import java.awt.event.ActionEvent;</div>\r\n<div>\r\n import java.awt.event.ActionListener;</div>\r\n<div>\r\n import java.awt.Toolkit;</div>\r\n<div>\r\n import java.awt.event.KeyEvent;</div>\r\n<div>\r\n import java.awt.event.KeyListener;</div>\r\n<div>\r\n import java.awt.Image;</div>\r\n<div>\r\n import java.awt.BorderLayout;</div>\r\n<div>\r\n import java.lang.Math;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class Sfera {</div>\r\n<div>\r\n </div>\r\n<div>\r\n public int xCord;</div>\r\n<div>\r\n public int yCord;</div>\r\n<div>\r\n public int xLinea;</div>\r\n<div>\r\n public int yLinea;</div>\r\n<div>\r\n public int xLinea2;</div>\r\n<div>\r\n public int yLinea2;</div>\r\n<div>\r\n public int i,c,actual;</div>\r\n<div>\r\n public int control;</div>\r\n<div>\r\n boolean down;</div>\r\n<div>\r\n public int g,f,cont1,cont2;</div>\r\n<div>\r\n Label lab;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public Sfera(Label lab){ </div>\r\n<div>\r\n xCord=200;</div>\r\n<div>\r\n i=0;</div>\r\n<div>\r\n c=0;</div>\r\n<div>\r\n control=0;</div>\r\n<div>\r\n this.lab=lab;</div>\r\n<div>\r\n yCord=300;</div>\r\n<div>\r\n g=0;</div>\r\n<div>\r\n actual=1;</div>\r\n<div>\r\n down=true;</div>\r\n<div>\r\n control=0;</div>\r\n<div>\r\n f=0;</div>\r\n<div>\r\n xLinea=xCord;</div>\r\n<div>\r\n yLinea=yCord+30;</div>\r\n<div>\r\n xLinea2=xCord+30;</div>\r\n<div>\r\n yLinea2=yCord+30;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void muovesinistra()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xCord-=25;</div>\r\n<div>\r\n xLinea-=25;</div>\r\n<div>\r\n xLinea2-=25;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void muovedestra()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xCord+=25; </div>\r\n<div>\r\n xLinea+=25;</div>\r\n<div>\r\n xLinea2+=25;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void scende()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n yCord+=1; </div>\r\n<div>\r\n yLinea+=1;</div>\r\n<div>\r\n yLinea2+=1;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void sale()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n yCord-=1;</div>\r\n<div>\r\n yLinea-=1;</div>\r\n<div>\r\n yLinea2-=1;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void general()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n </div>\r\n<div>\r\n if(control==0){</div>\r\n<div>\r\n </div>\r\n<div>\r\n for(g=0;g<2;g++)</div>\r\n<div>\r\n if(lab.sostegno.arrayRect[g]==null)</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n </div>\r\n<div>\r\n for(f=g-1;f>=0;f--) {</div>\r\n<div>\r\n </div>\r\n<div>\r\n if((yLinea==lab.sostegno.arrayRect[f].yRect+5) && ((xLinea-lab.sostegno.arrayRect[f].xRect>-5) && (xLinea-lab.sostegno.arrayRect[f].xRect<120))){</div>\r\n<div>\r\n down=false;</div>\r\n<div>\r\n System.out.println("Sono appoggiato!");</div>\r\n<div>\r\n i=f;</div>\r\n<div>\r\n actual=lab.sostegno.timing;</div>\r\n<div>\r\n control=1;</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else if(control==1){ </div>\r\n<div>\r\n if(lab.sostegno.timing>actual) i=1;</div>\r\n<div>\r\n if( ((xLinea<lab.sostegno.arrayRect[i].xRect) || (xLinea>lab.sostegno.arrayRect[i].xRect+120)) )</div>\r\n<div>\r\n {</div>\r\n<div>\r\n System.out.println("Adesso scendo\\n");</div>\r\n<div>\r\n down=true;</div>\r\n<div>\r\n control=0;</div>\r\n<div>\r\n </div>\r\n<div>\r\n c++;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n } </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n</pre>\r\n<p> </p>\r\n<p>NOTA: Ho lasciato le stampe (System.out.println) che mi sono servite come Debugging e verifica di diverse cose.<br />\r\n Provvederò a toglierle una volta pronto il progetto finale.<br />\r\n Buonaserata</p>\r\n','','full_html'),('node','forum',0,87,120,'und',0,'<p><span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 14px; line-height: 21px; \">Ragazzi dopo le ultime modifiche che sono state apportate alla configurazione del server, sono stati eliminati nuovamente i permessi per scrivere e leggere i file nelle cartelle della public_html. </span><br style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 14px; line-height: 21px; \" />\r\n <span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 14px; line-height: 21px; \">Andando su questo link </span><a href=\"http://students.uniparthenope.it/~0111000047/?q=meteo/map/representations/7/26\" style=\"color: rgb(0, 113, 179); text-decoration: none; font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 14px; line-height: 21px; \">http://students.uniparthenope.it/~0111000047/?q=meteo/map/representations/7/26</a><span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 14px; line-height: 21px; \"> , dopo aver scelto la data, deve essere visualizzata la mappa che invece non viene scritta nell'apposita directory: <em>/home/0111000047/public_html/sites/default/files/map_images/forecast</em>, quindi visualizzata.</span></p>\r\n','','filtered_html'),('node','blog',0,88,121,'und',0,'<p>Riguardando il codice e facendo diverse altre prove ho notato che qualcosa non andava nel controllo della collisione tra la sfera e il rettangolo. Diversi rettangoli su cui la pallina si sarebbe dovuta appoggiare non hanno dato il comportamento previsto. E' successo che la pallina "ha bucato" il rettangolo.<br />\r\n Ho cambiato molte volte l'algoritmo di collisione ma il problema sussisteva e sembrava presentarsi in modo random.<br />\r\n Dando un'occhiata ai parametri passati alla creazione dei Timer per la temporizzazione degli eventi ho notato come a tempi più elevati corrispondeva una più precisa collisione con tutti i rettangoli. Proverò a cambiare temporizzazione per rendere il tutto meno veloce ma almeno più preciso. (si basti pensare che la pallina cadeva secondo il richiamo del metodo scende() chiamato nel timer ogni 7 millisecondi e che i rettangoli salivano secondo il richiamo del metodo aggiornaSos() che avveniva ogni 15 millisecondi).<br />\r\n <br />\r\n Appena avrò fatto un numero di prove sufficienti provvederò a postare l'aggiornamento del codice</p>\r\n','','filtered_html'),('node','forum',0,89,122,'und',0,'<p>Salve a tutti,</p>\r\n<p>mi sono collegato al sito per la prima volta tramite le credenziali dell'ateneo (login 0108001416). Vorrei attivare l'hosting linux nella sezione modifica del profilo utente. Nell'attivarlo però il sistema mi dice che devo specificare un indirizzo email: "<span>Il campo Indirizzo e-mail è obbligatorio</span>". Compilo i campi con la pass corrente con cui ho effettuato l'accesso e l'indirizzo email studenti e mi viene dato il seguente errore "<span>La password è mancante o non è corretta; è obbligatorio cambiare il </span><em class=\"placeholder\">Indirizzo e-mail</em><span>.</span>" La password con cui effettuo l'accesso non è considerata valida. </p>\r\n','','filtered_html'),('node','blog',0,90,123,'und',0,'<p>Come tutti avrete notato da diversi mesi chi aveva importato l'account nome.cognome@studenti.uniparthenope.it in Gmail non riesce più a ricevere la posta. Questo è successo perchè è cambiato il server POP da hotmail a outlook.</p>\r\n<p>Vediamo come ripristinare il servizio:</p>\r\n<p>Entrare in Gmail;</p>\r\n<p>Cliccare in alto a destra sul tasto impostazioni, si aprirà un menu a tendina, cliccate su impostazioni;</p>\r\n<p>Entrare nella scheda account e importazione;</p>\r\n<p>Nella sezione "controlla la posta da altri account(utilizzando POP3)",premere sul link "aggiungi un tuo account di posta POP3" se è la prima volta che importate l'account della Parthenope, altrimenti andate su modifica informazioni accanto all'indirizzo di posta già inserito in precedenza...si aprirà una nuova finestra che chiederà di inserire tutte le informazioni relative al proprio account;</p>\r\n<p>Compilare tutti i campi, e nel campo SERVER POP: inserire "<strong>pod51014.outlook.com</strong>" e nel campo porta: <strong>995</strong>;</p>\r\n<p>Salvare le modifiche e la nostra posta verrà nuovamente scaricata nel nostro account gmail!<br />\r\n </p>\r\n','','filtered_html'),('node','blog',0,91,124,'und',0,'<p><a href=\"/sites/default/files/images/20121207005125.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121207005125.jpg\" /></a>Salve !<br />\r\n Oggi ho aggiunto alla label gli spuntoni alla sommità e di lato i muri. <br />\r\n Se l'utente dovesse far finire la pallina sugli spuntoni , perderebbe una vita o eventualmente il gioco.<br />\r\n I muri bloccano la pallina dall'uscire dal riquadro.<br />\r\n In questi giorni implementerò il meccanismo delle vite.<br />\r\n Intanto posto uno screenshot dell'aggiornamento.<br />\r\n Buonasera</p>\r\n','','full_html'),('node','page',0,92,125,'und',0,'<p><strong>UniParthenope – Servizi agli Studenti</strong></p>\r\n<p><a href=\"/sites/default/files/images/20121307082412.png\" target=\"_blank\"><img alt=\"\" heigh=\"64\" src=\"/sites/default/files/styles/large/public/images/20121307082412.png\" width=\"64\" /></a></p>\r\n<p>Applicazione sperimentale dell’Università Parthenope di Napoli per la fruizione dei servizi di Ateneo attraverso un dispositivo di tipo Android.<br />\r\n UniParthenope Servizi offre la possibilità di accedere ai servizi riservati agli studenti dell’Università e non solo.<br />\r\n Gli utenti non registrati possono accedere a:</p>\r\n<ul>\r\n <li>\r\n News dell’Università di Ateneo, delle Facoltà e dei dipartimenti</li>\r\n <li>\r\n Mappa delle sedi Universitarie</li>\r\n <li>\r\n Rubrica del personale Universitario</li>\r\n <li>\r\n Linee e orario di prossimo arrivo, dei Bus per le sedi di Centro Direzionale e Via Acton</li>\r\n <li>\r\n Servizio Meteo per il territorio di Napoli relativo al giorno corrente ed il successivo</li>\r\n <li>\r\n Consultazione del sistema bibliotecario Universitario</li>\r\n</ul>\r\n<p>Gli studenti della Università Parthenope possono inoltre:</p>\r\n<ul>\r\n <li>\r\n Accedere con le proprie credenziali</li>\r\n <li>\r\n Visualizzare il proprio piano di studi</li>\r\n <li>\r\n Prenotare gli esami disponibili</li>\r\n <li>\r\n Cancellare le prenotazioni esami effettuate</li>\r\n</ul>\r\n<p>Supporto alla lingua Italiana e a quella Inglese.</p>\r\n<p> </p>\r\n<p>L'applicazione dal 20-07-2012 è scaricabile da <a href=\"https://play.google.com/store/apps/details?id=app.uni&feature=search_result#?t=W251bGwsMSwyLDEsImFwcC51bmkiXQ..\" target=\"_blank\">GOOGLEPLAY</a></p>\r\n<p> </p>\r\n<p>Contattare lo sviluppatore <a href=\"/?q=user/60\">Rosario Pellecchi</a>a per partecipare al programma di prova.</p>\r\n<p>L'area di discussione realativa a questa applicazione è disponibile [<a href=\"/?q=forum/8\">qui</a>].</p>\r\n<p><a href=\"/sites/default/files/images/20121307082627.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121307082627.png\" /></a><a href=\"/sites/default/files/images/20121307082717.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121307082717.png\" /></a></p>\r\n<p><a href=\"/sites/default/files/images/20121307082738.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121307082738.png\" /></a><a href=\"/sites/default/files/images/20121307082805.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121307082805.png\" /></a></p>\r\n<p><a href=\"/sites/default/files/images/20121307082821.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121307082821.png\" /></a><a href=\"/sites/default/files/images/20121307082850.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121307082850.png\" /></a></p>\r\n<p>Applicazione sviluppata da <a href=\"/?q=user/60\">Rosario Pellecchia</a> sotto la guida del relatore prof. <a href=\"/?q=user/3\">Raffaele Montella</a> come Elaborato di Laurea triennale in <a href=\"http://informatica.uniparthenope.it/\">Informatica</a> presso il <a href=\"http://lmncp.unipartenope.it\">Laboratorio di Modellistica Numerica e Calcolo Parallelo</a> - <a href=\"http://dsa.uniparhenope.it\">Dipartimento di Scienze Applicate</a> - <a href=\"http://www.scienzeetecnologie.uniparthenope.it/\">Facoltà di Scienze e Tecnologie</a>.</p>\r\n<p>Scarica la tesi in formato PDF: <a href=\"/sites/default/files/files//20122007085738.pdf\" target=\"_blank\">Tesi Rosario Pellecchia</a></p>\r\n<p>Scarica presentazione in Power Point: <a href=\"/sites/default/files/files/Presentazione_Tesi_Rosario_PELLECCHIA_mat_LI827.pdf\" target=\"_blank\">Presentazione Rosario Pellecchia</a></p>\r\n<p> </p>\r\n<p> </p>\r\n','','full_html'),('node','forum',0,93,126,'und',0,'<p>La nostra applicazione sperimentale per i servizi agli studenti ... :) ...</p>\r\n','','filtered_html'),('node','blog',0,94,127,'und',0,'<h1>\r\n RESTful News API </h1>\r\n<p class=\"rtejustify\" style=\"\">Pubblicata una prima versione dell'interfaccia RESTful per le news della nostra università. L'implementazione è basata sul framework php FRAPI, e attualmente sono presenti 9 'fonti', tra cui il portale di informatica ed economia. <br />\r\n L'endpoint delle API è <strong>http://students.uniparthenope.it:10112 ,</strong> i<em> mime-type</em> di comunicazione sono <em>application/json</em> e <em>application/xml.</em></p>\r\n<h2>\r\n Dettagli implementativi</h2>\r\n<p>L'architettura utilizzata è composta da tre componenti principali, <em>NewsSource</em>, <em>NewsProvider </em>e uno <em>Scraper</em>. Il NewsSource si occupa del recupero dalle news dal singolo portale tramite e utilizza lo Scraper per analizzare il documento HTML, NewsProvider è il business component che fornisce l'accesso agli NewsSource gestendo il caching delle response e l'implementazione HATEOAS.</p>\r\n<p><a href=\"https://dl.dropbox.com/u/8255905/schema.jpg\" target=\"_blank\"><img alt=\"\" src=\"https://dl.dropbox.com/u/8255905/schema.jpg\" style=\"height: 373px; width: 400px; \" /></a></p>\r\n<p><br />\r\n <a href=\"http://en.wikipedia.org/wiki/HATEOAS\">HATEOAS</a> è una tecnica che fa uso di <a href=\"http://en.wikipedia.org/wiki/Hypermedia\">Hypermedia</a> per gestire lo 'stato' di web service RESTful. Ogni risorsa web è collegata alle altre tramite link relationship proprio come le pagine web, quindi è possibile sfruttare queste relazioni per collegare (nel nostro caso paginare) diverse risorse.</p>\r\n<p>Per evitare la duplicazione del codice dei vari NewsSource, è stato applicato il pattern implementativo Template Method. NewsSource è una classe astratta che fornisce una struttura per tutte le classi NewsSource concrete, è possibile definire così una nuova fonte di news implementando solo pochi metodi.</p>\r\n<p><a href=\"http://i18.photobucket.com/albums/b141/pmtl3000/blog/template-method.png\" target=\"_blank\"><img alt=\"\" src=\"http://i18.photobucket.com/albums/b141/pmtl3000/blog/template-method.png\" style=\"width: 300px; height: 191px; \" /></a></p>\r\n<h3>\r\n </h3>\r\n<h3>\r\n <strong>Recupero Fonti</strong></h3>\r\n<pre>\r\n<em>GET http://students.uniparthenope.it:10112/sources\r\nAccept: application/json\r\nContent-Type: application/json</em></pre>\r\n<p>oppure semplicemente </p>\r\n<pre>\r\nGET <a href=\"http://students.uniparthenope.it:10112/sources.json\">http://students.uniparthenope.it:10112/sources.json</a></pre>\r\n<p>La risposta è una lista di fonti (source) con il loro nome e l'url corrispondente:</p>\r\n<p> </p>\r\n<pre>\r\n{"meta":{"total":9}, "sources":[\r\n {"source": {"name":"ECONOMIA","url":"http:..."}},\r\n {"source": "name":"SCIENZE_TECNOLOGIE","url":"http:..."}},\r\n ....,\r\n {"source": "name":"INFORMATICA","url":"http:..."}}\r\n]}</pre>\r\n<p> </p>\r\n<h3>\r\n <u><strong>Recupero News</strong></u></h3>\r\n<pre>\r\nGET http://students.uniparthenope.it:10112/news/:source?offset=0&length=6&force_refresh=false\r\nAccept: application/json\r\nContent-Type: application/json</pre>\r\n<p>oppure semplicemente </p>\r\n<pre>\r\nGET http://students.uniparthenope.it:10112/news/:source.json?offset=0&length=4&force_refresh=false</pre>\r\n<p class=\"rtejustify\" style=\"\">Il parametro<em> offset</em> specfica la posizione di partenza da cui recuperare un numero pari a <em>length </em>news<em>, anche :source</em> è un parametro e va sostituito con il nome della fonte desiderata. Se non viene specificato offset o length allora verranno considerati i loro valori di default che sono rispettivamente 0 e 6. L'implementazione ha un suo meccanismo interno di caching, nel caso in cui si vuole forzare il refresh delle notizie bisogna impostare il parametro opzionale force_refresh a true.<br />\r\n I risultati sono 'paginati' con la tecnica degli HATEOAS, quindi quando saranno presenti altre news oltre quelle specificate da offset+length la risposta del server conterrà un URL nel parametro next che potrà essere usato per continuare il recupero delle informazioni in modo sequenziale.</p>\r\n<p>Le news hanno i seguenti valori:</p>\r\n<p>title = Titolo della notizia<br />\r\n content = Contenuto della notizia<br />\r\n publishing_date = La data di pubblicazione (quando disponibile)<br />\r\n source = Link alla risorsa web da cui è stata recuperata la notizia</p>\r\n<p>Ad esempio la chiamata GET <a href=\"http://students.uniparthenope.it:10112/news/informatica.json\">http://students.uniparthenope.it:10112/news/economia.json</a> restituisce:</p>\r\n<pre>\r\n{"meta":{"total":6},\r\n "news_list":[\r\n {"news":{\r\n "title":"RECUPERO PASSWORD EMAIL STUDENTI ",\r\n "content":"E' stato attivato ...", \r\n "publishing_date":"21\\/06\\/2012 alle 12.05.59",\r\n "source":"http:..."}\r\n }, ...,\r\n {"news":{\r\n "title":"ATTIVITA` SEMINARIALI A.A. 2011-2012 ",\r\n "content":"ATTIVITA' SEMINARIALI A.A. 2011-2012 ...",\r\n "publishing_date":"25\\/06\\/2012 alle 9.45.19",\r\n "source":"http:..."}\r\n }],\r\n "next":"http://students.uniparthenope.it:10112/news/economia.json?offset=6&length=6"\r\n]}</pre>\r\n<div>\r\n </div>\r\n','','full_html'),('node','forum',0,95,128,'und',0,'<p>Salve,</p>\r\n<p>credo di aver cancellato per errore il file README con le credenziali di accesso al database, come posso recuperarle?</p>\r\n','','filtered_html'),('node','forum',0,96,129,'und',0,'<p>Queste sono alcune idee per lo sviluppo di API REST in modo da rendere più ricco il toolkit che stiamo sviluppando.</p>\r\n<p>L'idea è un framework da utilizzare per sviluppare APP ed altri componenti software utilizzando l'approccio dell'Internet delle Cose (Web 3.0, Internet of Things).</p>\r\n<ul>\r\n <li>\r\n <strong>Aule/Laboratori</strong><br />\r\n Sviluppare un modulo Drupal che consente agli appartenenti ad un gruppo di utenti di poter gestire un insieme di risorse (aule, laboratori) definendone l'uso in un arco temporale che può essere una tantum o ripetuto settimana per settimana.<br />\r\n Contestualmente una API REST espone quanto gestito dal modulo.</li>\r\n</ul>\r\n<ul>\r\n <li>\r\n <strong>Orari delle lezioni</strong><br />\r\n Sviluppare un modulo Drupal che consente agli appartenenti ad un gruppo di utenti di poter gestire un calendario di orari.<br />\r\n Contestualmente una API REST espone quanto gestito dal modulo.</li>\r\n</ul>\r\n<ul>\r\n <li>\r\n <strong>Guida dello studente</strong><br />\r\n Sviluppare un modulo Drupal che consente agli appartenenti ad un gruppo di utenti di poter gestire i programmi degli esami presenti nella guida dello studente.<br />\r\n Il modulo deve poter esportare i programmi in un formato importabile dagli strumenti di produzione, esempio rtf.<br />\r\n Un utente può avere diritto di modificare uno o più programmi su cui ha i permessi.<br />\r\n Contestualmente una API REST espone quanto gestito dal modulo.</li>\r\n</ul>\r\n<p>Altre idee per API non direttamente legate alla vita universitaria:</p>\r\n<ul>\r\n <li>\r\n Guida TV</li>\r\n <li>\r\n Cinema</li>\r\n <li>\r\n AIS</li>\r\n <li>\r\n Traffico</li>\r\n <li>\r\n ...</li>\r\n</ul>\r\n<p>La maggior parte di queste API sono sviluppabili come wrap su servizi già esistenti.</p>\r\n<p> </p>\r\n','','full_html'),('node','new',0,99,132,'und',0,'<p>Sono aperte <strong>2</strong> posizioni per tirocinio e tesi nell'ambito del Corso di Laurea Triennale in Informatica ed <strong>1</strong> posizione relativamente al Corso di Laurea Magistrale in Informatica Applicata presso il Laboratorio di Modellistica Numerica e Calcolo Parallelo http://lmncp.uniparthenope.it .</p>\r\n<p class=\"rtecenter\"><strong>Sviluppo di componenti software per il calcolo ad alte prestazioni basato su tecnologie di cloud computing e virtualizzazione di GPU.</strong></p>\r\n<p>Il Tirocinio consente di immergersi completamente in un ambiente stimolante ed altocompetitivo di alto profilo. In particolare è caratterizzato da una forte internazionalizzazione in ambito EU e, soprattutto, USA.</p>\r\n<p>Al tirocinio si accede previo colloquio conoscitivo e successivo iter standard.</p>\r\n<p>E' richiesta una buona preparazione pratica e teorica sui principali aspetti dell'Informatica ed in particolare riguardo allo sviluppo di componenti software e la conoscenza dei sistemi oprativi. E' necessaria una conoscenza della lingua inglese almeno a livello scolastico.</p>\r\n<p>Il tirocinio offre la possibilità (relativamente alla disponibilità di risorse) di periodi di permanenza all'estero.</p>\r\n<p>Per informazioni contattare il prof. <a href=\"mailto:giulio.giunta@uniparthenope.it?subject=%5BCloud%2FHPC%2FGPU%5D\">Giulio Giunta</a> o il dr. <a href=\"mailto:raffaele.montella@uniparthenope.it?subject=%5BCloud%2FHPC%2FGPU%5D\">Raffaele Montella</a>.</p>\r\n<p> </p>\r\n<p> </p>\r\n','','full_html'),('node','forum',0,100,133,'und',0,'<p>Maggiori dettagli:</p>\r\n<p>http://students.uniparthenope.it/?q=node/99</p>\r\n','','filtered_html'),('node','blog',0,101,134,'und',0,'<p> </p>\r\n<p>Questo progetto nasce dall’idea che, al giorno d’oggi, tutto è SMART (intelligente). Esistono gli smartphone, le Smart TV e perfino le Smart Car… E con l’avvento degli indirizzi IPV6 tutto potrà essere dotato di un indirizzo IP ed essere collegato alla rete. Quindi in futuro ci si aspettano i frigoriferi che ci diranno se è scaduto qualche alimento, la lavatrice che d’accordo con il forno e l’asciugatrice non saranno mai in funzione nello stesso momento per evitare scatti del contatore ecc. ecc…</p>\r\n<p>Beh, in un mondo così evoluto noi poveri esseri umani siamo ancora alle prese con domande del tipo:</p>\r\n<p>· Farà freddo stamattina?</p>\r\n<p>· Posso indossare la canottiera per andare a lavoro?</p>\r\n<p>· Ma l’arancione stona con il marrone?</p>\r\n<p>· Devo portare l’ombrello?</p>\r\n<p>Ed ecco che entra in gioco SMARTDRESS! Esso è un programma pensato esclusivamente per risolverci tutti questi dubbi, per aiutare l’utente a scegliere il vestito adatto alla giornata, senza essere più colti alla sprovvista da una giornata fredda di fine maggio, da un abbinamento sconsiderato di colori e dall’infradito perennemente odiato in tutti i luoghi di lavoro!</p>\r\n<p>SMARTDRESS scarica la temperatura e le condizioni atmosferiche della tua città, combina questi risultati con l’analisi dello stile dell’utente (estratto esaminando gli impegni giornalieri scritti su google calendar) e grazie ad un algoritmo interamente scritto ad hoc per l’abbinamento dei colori (basato sul cerchio di Itten) ci propone l’abbinamento più adatto alla giornata, risparmiando tempo e…brutte sorprese!</p>\r\n<p>SMARTDRESS è un programma interamente scritto in java ed è il frutto del lavoro e dell’intuizione di Credo Giovanni, Giustiniani Luigi e Pelliccia Valentina.</p>\r\n<p>Attualmente è alla versione 1.0 presentata come progetto di Programmazione III e lab.</p>\r\n<p>Presto qui su Sebeto verrà rilasciato il tutorial su come far girare l’applicazione su un sistema Windows per chiunque fosse interessato a testarla.</p>\r\n','','filtered_html'),('node','forum',0,102,135,'und',0,'<p>Volevo richiamare l'attenzione su un problema riguardante i permessi di scrittura sull' hosting.<br />\r\n <br />\r\n Una volta creata una cartella, non è possibile creare file al suo interno! <br />\r\n <br />\r\n Permessi negati, sia tramite funzioni PHP sia tramite Client.</p>\r\n','','filtered_html'),('node','blog',0,103,136,'und',0,'<p> </p>\r\n<p>Utilizzando il <em>Java Development Kit</em> (JDK) dell’ <em>Oracle</em> per compilare, verificare gli errori ed eseguire codice java, ho trovato monotono scrivere ogni volta i comandi testuali per eseguire le suddette operazioni, cambiare dall’editor di testo al compilatore e viceversa, per non parlare delle enormi righe dei percorsi per spostarmi da una directory all’altra e della grafica testuale (poiché il compilatore è implementato nella shell).</p>\r\n<ul>\r\n <li>\r\n <u>Prima soluzione</u>: scegliere una piattaforma di sviluppo diversa (<em>NetBeans </em>o <em>Eclipse</em>) che, come tutti i software professionali, richiede un minimo di preparazione all’uso, dato l’elevato numero di comandi a disposizione.<br />\r\n <u>Risultato</u>: idea scartata per mancanza di tempo e documentazione.</li>\r\n</ul>\r\n<ul>\r\n <li>\r\n <u>Seconda soluzione</u>: semplificare al massimo il numero di comandi da inserire e delle operazioni da eseguire utilizzando dei file batch (script per la shell di <em>Windows</em>) e inserendo tutti i sorgenti in una sola cartella.<br />\r\n <u>Risultato</u>: caos totale.</li>\r\n</ul>\r\n<p>Mettendo insieme tutti i problemi riscontrati, ho deciso di creare "<strong>Make Java</strong> <strong>Projects</strong>", una piattaforma di sviluppo intuitiva e semplice, che sfrutti le potenzialità del JDK e che non richieda nessuna preparazione all’uso. <br />\r\n Nasce così l’idea di sviluppare MJP come progetto per l’esame di <strong>Programmazione III</strong>.</p>\r\n<p> </p>\r\n<p class=\"rteright\" style=\"\"><a href=\"http://students.uniparthenope.it/?q=node/104\">Make Java Projects - Descrizione>></a><br />\r\n </p>\r\n<h3 class=\"rtecenter\">\r\n <span style=\"font-size:16px;\"><em><span style=\"color: rgb(255, 0, 0); \">1</span> <span style=\"color: rgb(0, 0, 205); \">- </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color: rgb(0, 0, 205); \">2</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color: rgb(0, 0, 205); \">3</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color: rgb(0, 0, 205); \">4</span></a><span style=\"color: rgb(0, 0, 205); \"> </span><span style=\"color: rgb(0, 0, 205); \">- </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color:#0000cd;\">5</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color:#0000cd;\">6</span></a><span style=\"color:#0000ff;\"> -</span><span style=\"color:#0000cd;\"> </span><a href=\"http://students.uniparthenope.it/?q=node/119\"><span style=\"color:#0000cd;\">7</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></em></span></h3>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,104,137,'und',0,'<p> </p>\r\n<p>Adoperando i comandi del <em>JDK</em>, <strong>MJP </strong>(scritto interamente in java) semplifica la creazione e la modifica dei file java mediante un editor di testo innestato nel programma, riporta eventuali errori di compilazione in una sezione dedicata, facilita l'esecuzione delle applet creando in modo automatico il file html per testare lo stesso e permette la creazione dei "<em>jar file</em>" con una procedura guidata.</p>\r\n<p><strong>MJP</strong> può assumere due interfacce grafiche: una <u>completa </u>in cui è possibile editare direttamente i sorgenti ed un'altra <u>minimizzata </u>per poter utilizzare un editor di testo esterno (ad esempio <em>JEdit </em>o <em>Notepad++</em> ).</p>\r\n<p>Inoltre, permette la ricerca di informazioni sul codice attraverso una barra di ricerca collegata direttamente alla documentazione <em>Oracle </em>("<a href=\"http://www.oracle.com/index.html\">http://www.oracle.com/index.html</a>") e consente di memorizzare eventuali note (salvate automaticamente) per ogni sorgente in un’apposita finestra.</p>\r\n<p>L’obiettivo principale è “<em>semplificare</em>” il lavoro dell’utente; a tal proposito ho cercato di rendere intuitiva l’interfaccia grafica, permettendo all’utente di individuare rapidamente i comandi principali e di scegliere la lingua desiderata (al momento sono 5 quelle disponibili).</p>\r\n<p> </p>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/103\"><< Make Java Projects - Come nasce</a></p>\r\n<p class=\"rteright\" style=\"\"><a href=\"students.uniparthenope.it/?q=node/109\">Make Java Projects - Le Classi (parte 1)>></a><br />\r\n </p>\r\n<h3 class=\"rtecenter\">\r\n <span style=\"font-size:16px;\"><em><a href=\"students.uniparthenope.it/?q=node/103\"><span style=\"color: rgb(0, 0, 205); \">1</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><span style=\"color: rgb(255, 0, 0); \">2</span><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color: rgb(0, 0, 205); \">3</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color: rgb(0, 0, 205); \">4</span></a><span style=\"color: rgb(0, 0, 205); \"> </span><span style=\"color: rgb(0, 0, 205); \">- </span><a href=\"http://students.uniparthenope.it/?q=node/114\"><span style=\"color:#0000cd;\">5</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color:#0000cd;\">6</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/119\"><span style=\"color:#0000cd;\">7</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></em></span><br />\r\n </h3>\r\n','','full_html'),('node','event',0,105,138,'und',0,'<p>Presentazione nell'aula ipermediale del Dipartimento di Scienze Applicate.</p>\r\n<p>Modalità:</p>\r\n<ul>\r\n <li>\r\n Presentazione di massimo 10 slides (Power Point o PDF) durata massima 15 minuti.</li>\r\n <li>\r\n Dimostrazione</li>\r\n</ul>\r\n<p>Segue discussione.</p>\r\n<p> </p>\r\n','','full_html'),('node','event',0,106,139,'und',0,'<p>Disponibilità online dell'applicazione Android per accedere ai servizi UniParthenope</p>\r\n','','full_html'),('node','blog',0,107,140,'und',0,'<p>Oggi ho apportato ulteriori modifiche al progetto inserendo un contatore di punteggio e un indicatore che mostra il rimanente totale delle vite a disposizione. L'implementazione di questi aspetti è risultata non molto complessa , dato il fatto che è bastato disegnare sulla label una stringa che rappresenta proprio il punteggio e tre sferette (in basso a destra) che rappresentano un modo grafico per indicare il numero di vite. Vediamo come realizzare praticamente questi due aspetti importanti di questo videogioco: <br />\r\n Ricordiamo dagli aggiornamenti precedenti che tutto il contenuto grafico del videogioco è disegnato su una label , la cui classe associata, ha nel progetto il nome Label.java (a fine post ci saranno dei link ai post precedenti per paragonare quello che sto scrivendo direttamente con il codice). Partiamo dalle vite:<br />\r\n <br />\r\n -Lavoriamo all'interno del metodo PaintComponent. Il nostro scopo è disegnare tre sferette in basso a destra che indicano appunto le 3 vite iniziali che l'utente ha a disposizione. Si potrebbe pensare di disegnare direttamente , richiamando tre volte il metodo drawOval. Questo non è ovviamente il procedimento adatto da intraprendere in quanto ogni qualvolta il giocatore fa cadere la pallina o la porta sugli spuntoni in alto della label, non si potrebbe andare ad eliminare una delle sferette, data l'invocazione statica dei metodi di disegno che abbiamo visto prima. Pertanto ho pensato di automatizzare il procedimento di disegno tramite un ciclo for. Ovvero, vengono disegnate (tramite sempre il metodo drawOval) tante sferette quante sono le possibilità che l'utente ha in quel momento a disposizione, utilizzando delle variabili locali al ciclo for per slittare opportunamente le coordinate delle stesse sferette (in modo che appaiano distanti di un tot punti). Vediamo da vicino il codice che implementa questo meccanismo : </p>\r\n<br />\r\n<br />\r\n<div>\r\n <pre>\r\n for(int i=0;i<io.sferalife;i=i+20){\r\n</pre>\r\n</div>\r\n<div>\r\n \r\n <pre>\r\n g.setColor(Color.RED);</pre>\r\n</div>\r\n<div>\r\n \r\n <pre>\r\n g.drawOval(445+life,900,10,10); </pre>\r\n</div>\r\n<div>\r\n \r\n <pre>\r\n g.fillOval(445+life,900,10,10);</pre>\r\n</div>\r\n<div>\r\n \r\n <pre>\r\n life=life+20;</pre>\r\n</div>\r\n<div>\r\n \r\n <pre>\r\n if(life==io.sferalife) life=0;</pre>\r\n</div>\r\n<div>\r\n }</div>\r\n<p><br />\r\n Si vede come ad ogni iterazione (che va incrementando per 20) viene incrementata di 20 una variabile locale al ciclo la quale opportunamente spiazzata consentirà di disegnare correttamente il quantitativo di sferette esatte rispetto al numero di vite rimaste all'utente. "sferalife" è una variabile dichiarata all'interno della classe Sfera che all'interno dei metodi scende() e sale() subirà un decremento ogni qualvolta l'utente perde.<br />\r\n <br />\r\n <br />\r\n -L'indicatore del punteggio è invece molto più semplice in quanto prevede solo il disegno sulla label di una stringa; ho utilizzato ovviamente il metodo drawString di Graphics settando il colore Blue e passando allo stesso metodo le coordinate della posizione della stringa. Ovviamente le stringhe sono due : una "SCORE : " a cui segue una variabile intera che incrementa di un certo tot ogni qualvolta la sfera riesce ad appoggiarsi ad un rettangolo , e un'altra stringa "VITE RIMASTE :" alla quale segue il disegno delle sferette di cui ho parlato prima. Segue il codice :</p>\r\n<br />\r\n<br />\r\n<div>\r\n <pre>\r\n g.setColor(Color.BLUE);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n g.drawString("VITE RIMASTE ", 360, 910);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n g.setColor(Color.BLUE);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n g.drawString("SCORE "+punteggio ,10,910);</pre>\r\n <p> </p>\r\n <p>Come già detto , il tutto è implementato all'interno della classe Label.<br />\r\n Seguono due link relativi ai post precedenti con all'interno il codice completo del programma , in modo tale da poter eseguire eventuali confronti.<br />\r\n Grazie per l'attenzione :)<br />\r\n <br />\r\n <a href=\"http://students.uniparthenope.it/?q=node/84\">http://students.uniparthenope.it/?q=node/84</a><br />\r\n <a href=\"http://students.uniparthenope.it/?q=node/86\">http://students.uniparthenope.it/?q=node/86</a></p>\r\n</div>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,108,141,'und',0,'<p>In relazione al post di prima , volevo inserire un paio di screenshot che mostrano visivamente il punteggio e l'indicatore di vite. </p>\r\n<p>Il gioco comincia , lo SCORE e' ovviamente a 0 e le vite sono al massimo : <br />\r\n <a href=\"/sites/default/files/images/20122107220630.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122107220630.jpg\" /></a></p>\r\n<p> </p>\r\n<p>Riusciamo ad appoggiarci sul secondo rettangolo che esce sulla sinistra e il punteggio aumenta. Andiamo avanti nel gioco e il punteggio continua ad incrementare fino ad arrivare ad 80 :<br />\r\n <br />\r\n <a href=\"/sites/default/files/images/20122107220719.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122107220719.jpg\" /></a></p>\r\n<p> </p>\r\n<p>Purtroppo perdo il controllo e vado a finire su uno degli spuntoni che si trovano in alto sulla label. Subiamo un decremento della vita e saranno disegnate solo due sferette (lo score è diverso perché lo screen è stato effettuato in un'altra partita) :<br />\r\n <br />\r\n <a href=\"/sites/default/files/images/20122107220817.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122107220817.jpg\" /></a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p>Accumuliamo ancora punteggio ma cadiamo e non riusciamo ad incontrare nessun rettangolo che ci puo' sorreggere. Abbiamo ad esempio ora una vita , di conseguenza perderemo il gioco. </p>\r\n<p><a href=\"/sites/default/files/images/20122107221021.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122107221021.jpg\" /></a><br />\r\n </p>\r\n<p><br />\r\n Dopo aver perso , ho scelto di inserire una schermata di FINE-GIOCO che consiste semplicemente nel disegno di un rettangolo bianco che ha le dimensioni proprio della finestra (deve ovviamente ricoprire il tutto) e all'interno due stringhe : una che indica proprio che la partita è finita e un'altra e un "memo" del punteggio effettuato nel gioco. Vediamo :<br />\r\n <br />\r\n <br />\r\n <a href=\"/sites/default/files/images/20122107221201.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122107221201.jpg\" /></a><br />\r\n <br />\r\n </p>\r\n<p>Grazie ancora per l'attenzione , buonasera <br />\r\n :)<br />\r\n </p>\r\n','','full_html'),('node','blog',0,109,142,'und',0,'<p> </p>\r\n<p>MJP opera al 90% su file, pertanto ho creato delle classi e dei metodi specifici per gestirli; in particolare quest’applicazione gestisce file con estensione “.java ”, “.class ”, “.jar ”, “.lng”, “.mjp” e “.txt ”. Tali classi possono essere adattate per qualsiasi vostra esigenza. Come in tutti i programmi, è possibile cercare, leggere, salvare o copiare i file, quindi:</p>\r\n<p>CercaFile</p>\r\n<pre>\r\n import java.io.*;\r\n import java.io.File.*;\r\n import javax.swing.tree.*;\r\n public class CercaFile{\r\n String testo[];\r\n String s=new String("");\r\n String tmp=new String();\r\n int i,j,len;\r\n boolean result;\r\n \r\n /*cerca tutti i file nella directory corrente*/\r\n public CercaFile(){\r\n File dir=new File(".");\r\n File lista[]=dir.listFiles();\r\n len=lista.length;\r\n testo=new String[len];\r\n \r\n for(i=0;i<len;i++)\r\n testo[i]=lista[i].getName()+"\\n";\r\n }\r\n \r\n /*cerca file filtrati per tipo nella directory corrente*/\r\n public CercaFile(String type){\r\n File dir=new File(".");\r\n File lista[]=dir.listFiles();\r\n len=lista.length;\r\n int j=0;\r\n testo=new String[len];\r\n \r\n for(i=0;i<len;i++){\r\n tmp=lista[i].getName();\r\n if(tmp.endsWith(type)==true)\r\n testo[j++]=tmp;\r\n }\r\n len=j;\r\n }\r\n \r\n /*cerca tutti i file nella directory scelta(select=true) oppure \r\n tutte le cartelle (select=false)*/\r\n public CercaFile(String path, boolean select){\r\n File dir=new File(path);\r\n File lista[]=dir.listFiles();\r\n len=lista.length;\r\n int j=0;\r\n testo=new String[len];\r\n \r\n if(select==true){\r\n for(i=0;i<len;i++)\r\n testo[j++]=lista[i].getName()\r\n }\r\n else{\r\n j=0;\r\n for(i=0;i<len;i++)\r\n if(lista[i].isDirectory() && !lista[i].isHidden() && \r\n lista[i].listFiles()!=null)\r\n testo[j++]=lista[i].getName();\r\n }\r\n len=j; <span class=\"Apple-tab-span\" style=\"white-space:pre\"> </span>\r\n }\r\n \r\n /*cerca file filtrati per tipo nella directory scelta*/\r\n public CercaFile(String path, String type){\r\n File dir=new File(path);\r\n File lista[]=dir.listFiles();\r\n len=lista.length;\r\n int j=0;\r\n testo=new String[len];\r\n \r\n for(i=0;i<len;i++){\r\n tmp=lista[i].getName();\r\n if(tmp.endsWith(type)==true)\r\n testo[j++]=tmp;\r\n }\r\n len=j;\r\n }\r\n \r\n /*cerca file specifico nella directory scelta*/\r\n public CercaFile(String path, String title, boolean select){\r\n File dir=new File(path);\r\n File lista[]=dir.listFiles();\r\n len=lista.length;\r\n testo=new String[1];\r\n testo[0]="null";\r\n result=select;\r\n \r\n for(i=0;i<len;i++){\r\n tmp=lista[i].getName();\r\n if(tmp.compareTo(title)==0){\r\n testo[0]=tmp;\r\n result=!select;\r\n }\r\n }\r\n len=1;\r\n }\r\n \r\n \r\n /*restituisce i file trovati in un array*/\r\n public String[] getListFiles(){\r\n return testo;\r\n }\r\n \r\n \r\n /*restituisce i file trovati in una stringa*/\r\n public String getListStringFiles(String separator){\r\n for(i=0;i<len;i++)\r\n s=s+testo[i]+separator;\r\n return s;\r\n }\r\n \r\n /*restituisce il numero di file trovati */\r\n public int getListLength(){\r\n return len;\r\n }\r\n \r\n /*restituisce un valore booleano se ha trovato il file \r\n nella cartella scelta CercaFile(String,String,boolean)*/\r\n public boolean getResult(){\r\n return result;\r\n }\r\n }\r\n\r\n</pre>\r\n<p> </p>\r\n<p> </p>\r\n<p>SaveFile</p>\r\n<pre>\r\nimport java.io.*;\r\n\r\npublic class SaveFile{\r\n String osname=System.getProperty("os.name");\r\n \r\n //salva il file con titolo e testo nella directory corrente\r\n public SaveFile(String title, String text){\r\n try {\r\n File file = new File("."+"\\\\"+title);\r\n FileWriter fw = new FileWriter(file);\r\n fw.write(text);\r\n fw.flush();\r\n fw.close();\r\n }\r\n catch(IOException e){e.printStackTrace();}\r\n }\r\n \r\n //salva il file con titolo e testo nella directory scelta\r\n public SaveFile(String path, String title, String text){\r\n try {\r\n File file;\r\n if(osname.startsWith("Windows")==true)\r\n file = new File(path+"\\\\"+title);\r\n else\r\n file = new File(path+""+title);\r\n FileWriter fw = new FileWriter(file);\r\n fw.write(text);\r\n fw.flush();\r\n fw.close();\r\n }\r\n catch(IOException e){e.printStackTrace();}\r\n }\r\n\r\n}\r\n</pre>\r\n<p> </p>\r\n<p> </p>\r\n<p>ReadFile</p>\r\n<pre>\r\nimport java.io.*;\r\n\r\npublic class ReadFile {\r\n String s=new String("");\r\n \r\n //lettura file nella directory corrente\r\n public ReadFile(String title){\r\n try{\r\n FileInputStream fstream = new FileInputStream(title);\r\n DataInputStream in = new DataInputStream(fstream);\r\n BufferedReader br = new BufferedReader(new InputStreamReader(in));\r\n String strLine;\r\n while ((strLine = br.readLine()) != null)\r\n s=s+strLine+"\\n";\r\n in.close();\r\n }\r\n catch (Exception e){}\r\n } \r\n \r\n //lettura file in una directory specifica\r\n public ReadFile(String path, String title){\r\n try{ \r\n FileInputStream fstream = new FileInputStream((""+path+title));\r\n DataInputStream in = new DataInputStream(fstream);\r\n BufferedReader br = new BufferedReader(new InputStreamReader(in)); \r\n String strLine;\r\n while ((strLine = br.readLine()) != null)\r\n s=s+strLine+"\\n";\r\n in.close();\r\n }\r\n catch (Exception e){}\r\n }\r\n \r\n //restituisce un array con la lettura dei file\r\n public String [] getReadingFile(String separator){\r\n String[] testo=s.split(separator);\r\n return testo;\r\n }\r\n \r\n //restituisce una stringa con la lettura dei file\r\n public String getStringToReadingFile(){\r\n return s;\r\n }\r\n \r\n //restituisce una stringa con la lettura di una riga specifica\r\n public String getRowReadingFile(int ind){\r\n String row[]=getReadingFile("\\n");\r\n return row[ind];\r\n }\r\n\r\n}\r\n</pre>\r\n<p> </p>\r\n<p> </p>\r\n<p>CopyFile</p>\r\n<pre>\r\nimport java.io.*;\r\n\r\npublic class CopyFile{\r\n //copia un file\r\n public CopyFile(String srFile, String dtFile){\r\n try{\r\n File f1 = new File(srFile);\r\n File f2 = new File(dtFile);\r\n InputStream in = new FileInputStream(f1);\r\n OutputStream out = new FileOutputStream(f2);\r\n\r\n byte[] buf = new byte[1024];\r\n int len;\r\n while ((len = in.read(buf)) > 0){\r\n out.write(buf, 0, len);\r\n }\r\n in.close();\r\n out.close();\r\n }\r\n catch(FileNotFoundException ex){}\r\n catch(IOException e){}\r\n }\r\n}\r\n</pre>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/104\"><<Make Java Projects - Descrizione</a></p>\r\n<p class=\"rteright\" style=\"\"><a href=\"http://students.uniparthenope.it/?q=node/111\">Make Java Projects - Le Classi (parte 2)>></a></p>\r\n<p class=\"rteright\" style=\"\"> </p>\r\n<h3 class=\"rtecenter\">\r\n <span style=\"font-size:16px;\"><em><a href=\"students.uniparthenope.it/?q=node/103\"><span style=\"color: rgb(0, 0, 205); \">1</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color: rgb(0, 0, 205); \">2</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><span style=\"color: rgb(255, 0, 0); \">3</span><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color: rgb(0, 0, 205); \">4</span></a><span style=\"color: rgb(0, 0, 205); \"> </span><span style=\"color: rgb(0, 0, 205); \">- </span><a href=\"http://students.uniparthenope.it/?q=node/114\"><span style=\"color:#0000cd;\">5</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color:#0000cd;\">6</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/119\"><span style=\"color:#0000cd;\">7</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></em></span><br />\r\n </h3>\r\n','','full_html'),('node','blog',0,111,144,'und',0,'<p> </p>\r\n<p>Le classi citate nell’articolo precedente, se combinate in maniera opportuna, possono dar vita a vari menù per la gestione dei file (ovviamente aggiungendo sempre un po’ di grafica). <strong>MJP </strong>utilizza le seguenti:</p>\r\n<p> </p>\r\n<p><strong>OpenJFileD </strong>(apertura file <em>java </em>con menù)</p>\r\n<pre>\r\nimport java.io.*;\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.awt.event.MouseEvent;\r\nimport javax.swing.*;\r\nimport javax.swing.JScrollPane.*;\r\nimport javax.swing.tree.*;\r\n\r\npublic class OpenJFileD extends JDialog{\r\n int ld,lf,j=0,cont=0;\r\n int row[];\r\n boolean dof=true,opened=true;\r\n Image logo=Toolkit.getDefaultToolkit().getImage("images/logo.png");\r\n \r\n JTree tree1=new JTree();\r\n JTree tree2=new JTree();\r\n TreePath tp[];\r\n CercaFile cFile,cDir;\r\n String directory[],file[];\r\n String path[]=new String[100];\r\n String sub,types;\r\n String sep=System.getProperty("file.separator");\r\n String home=System.getProperty("user.home");\r\n String osname=System.getProperty("os.name");\r\n \r\n //bottoni\r\n JButton b_open=new JButton("");\r\n JButton b_cancels=new JButton("");\r\n JButton b_back=new JButton("");\r\n \r\n //layout\r\n JLabel select=new JLabel("");\r\n JPanel p1=new JPanel(new FlowLayout());\r\n JPanel p2=new JPanel(new GridLayout(1,2));\r\n JScrollPane scrollTree; \r\n\r\n public OpenJFileD(String typeFile){\r\n //azioni\r\n b_open.addActionListener(new b_open());\r\n b_cancels.addActionListener(new b_cancels());\r\n b_back.addActionListener(new b_back());\r\n tree1.addMouseListener(new Select1());\r\n tree2.addMouseListener(new Select2());\r\n \r\n types=typeFile;\r\n path[j++]=home;\r\n caricaLista(path[0]+sep);\r\n \r\n //layout\r\n p2.add(tree1);\r\n p2.add(tree2);\r\n scrollTree=new JScrollPane(p2);\r\n p1.add(select);\r\n p1.add(new JLabel(" "));\r\n p1.add(b_open);\r\n p1.add(b_back);\r\n p1.add(b_cancels);\r\n p1.setBackground(new Color(255,204,56));\r\n add(scrollTree,BorderLayout.CENTER);\r\n add(p1,BorderLayout.SOUTH);\r\n \r\n //impostazioni finestra\r\n setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n changeLanguage();\r\n finestraD(true);\r\n }\r\n\r\n //impostazioni finestra\r\n public void finestraD(boolean Svis){\r\n setModal(true);\r\n pack();\r\n setSize(400,400);\r\n final Toolkit toolkit = Toolkit.getDefaultToolkit();\r\n final Dimension screenSize = toolkit.getScreenSize();\r\n final int x = (screenSize.width - getWidth()) / 2;\r\n final int y = (screenSize.height - getHeight()) / 2;\r\n setLocation(x, y);\r\n tree1.setRootVisible(false);\r\n tree2.setRootVisible(false);\r\n setResizable(false);\r\n setIconImage(logo);\r\n setVisible(Svis);\r\n }\r\n \r\n //carica e cambia la lingua\r\n public void changeLanguage(){\r\n CercaFile CsetFile=new CercaFile(".","settings.mjp",true);\r\n String TsetFile=new String(CsetFile.getListStringFiles(""));\r\n ReadFile setFile=new ReadFile("settings.mjp");\r\n String settings=setFile.getRowReadingFile(0);\r\n ReadFile language=new ReadFile("language/",settings+".lng");\r\n String setLanguage[]= java.util.Arrays.copyOf(language.getReadingFile("\\n"), 20);\r\n \r\n setTitle(setLanguage[2]);\r\n b_open.setText(setLanguage[2]); //apri\r\n b_cancels.setText(setLanguage[8]); //annulla\r\n b_back.setText(setLanguage[7]); //indietro\r\n select.setText(setLanguage[19]); //messaggio\r\n }\r\n\r\n public void caricaLista(String dir){\r\n //caricamento lista cartella \r\n cDir=new CercaFile(dir,false);\r\n ld=cDir.getListLength();\r\n directory = java.util.Arrays.copyOf(cDir.getListFiles(),ld);\r\n JTree trl1=new JTree(directory);\r\n tree1.setModel(trl1.getModel());\r\n DefaultTreeCellRenderer ico1 = new DefaultTreeCellRenderer();\r\n ico1.setLeafIcon(new ImageIcon("images/folder.png"));\r\n tree1.setCellRenderer(ico1);\r\n \r\n //caricamento lista file\r\n cFile=new CercaFile(dir,types);\r\n lf=cFile.getListLength();\r\n file = java.util.Arrays.copyOf(cFile.getListFiles(), lf);\r\n JTree trl2=new JTree(file);\r\n tree2.setModel(trl2.getModel());\r\n DefaultTreeCellRenderer ico2 = new DefaultTreeCellRenderer();\r\n ico2.setLeafIcon(new ImageIcon("images/java.png"));\r\n tree2.setCellRenderer(ico2);\r\n \r\n if(j>1)\r\n b_back.setEnabled(true);\r\n else\r\n b_back.setEnabled(false); \r\n }\r\n\r\n//apri cartella\r\n public void apriDir(){\r\n cont=0;\r\n try{\r\n String s=""+tp[0];\r\n sub=s.substring(7,s.length()-1);\r\n if(dof==true && row[0]<ld)\r\n path[j++]=sub;\r\n sub=caricaPath(sub);\r\n caricaLista(sub);\r\n }\r\n else\r\n select.setText(sub);\r\n }\r\n catch(NullPointerException npex){\r\n j=0;\r\n path[j++]=home;\r\n }\r\n }\r\n \r\n //carica percorso\r\n public String caricaPath(String subPath){\r\n subPath="";\r\n for(int i=0;i<j;i++)\r\n<j;i++) pre=\"\" return=\"\" subpath=\"subPath+path[i]+sep;\"> subPath=subPath+path[i]+sep;\r\n return subPath;\r\n }\r\n\r\n //azione bottone apri\r\n public class b_open implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n apriDir();\r\n if(dof==false)\r\n finestraD(false);\r\n }\r\n }\r\n\r\n //azione bottone indietro\r\n public class b_back implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n j--;\r\n sub=caricaPath(sub);\r\n caricaLista(sub); \r\n cont=0;\r\n }\r\n }\r\n \r\n //azione bottone annulla\r\n public class b_cancels implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n opened=false; \r\n finestraD(false);\r\n }\r\n }\r\n\r\n //azione tree1\r\n public class Select1 implements MouseListener{\r\n public void mouseClicked(MouseEvent me){\r\n row=tree1.getSelectionRows();\r\n tp=tree1.getSelectionPaths();\r\n dof=true;\r\n cont++;\r\n if(cont==2)\r\n apriDir();\r\n }\r\n public void mouseExited(MouseEvent me){\r\n cont=0;\r\n }\r\n public void mouseEntered(MouseEvent me){}\r\n public void mouseReleased(MouseEvent me){}\r\n public void mousePressed(MouseEvent me){}\r\n }\r\n\r\n //azione tree2\r\n public class Select2 implements MouseListener{\r\n public void mouseClicked(MouseEvent me){\r\n row=tree2.getSelectionRows();\r\n tp=tree2.getSelectionPaths();\r\n dof=false;\r\n String s=""+tp[0];\r\n sub=s.substring(7,s.length()-1);\r\n select.setText(sub);\r\n }\r\n public void mouseExited(MouseEvent me){}\r\n public void mouseEntered(MouseEvent me){}\r\n public void mouseReleased(MouseEvent me){}\r\n public void mousePressed(MouseEvent me){}\r\n }\r\n\r\n //restituisce il titolo del file aperto\r\n public String getTitleOpenFile(){\r\n return select.getText();\r\n }\r\n \r\n //restituisce il percorso del fine aperto\r\n public String getPathOpenFile(){\r\n sub=caricaPath(sub);\r\n return sub;\r\n }\r\n \r\n //restituisce vero se il file e' stato aperto\r\n public boolean getIsOpened(){\r\n return opened;\r\n }\r\n\r\n}</pre>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122207232743.png\" /></p>\r\n<p><u><em>Note</em></u>:<br />\r\n questa classe implementa i <em>JTree </em>per rappresentare le cartelle e file, azioni sul mouse per poter aprire le cartelle con un doppio click e tre <em>JButton </em>per tornare indietro nei percorsi, aprire le cartelle o il file scelto ed annullare l'apertura.</p>\r\n<p> </p>\r\n<p><strong>NewJFileD </strong>(creazione file <em>java </em>con menù)</p>\r\n<pre>\r\nimport java.io.*;\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.awt.event.MouseEvent;\r\nimport javax.swing.*;\r\nimport javax.swing.JScrollPane.*;\r\nimport javax.swing.tree.*;\r\n\r\npublic class NewJFileD extends JDialog{\r\n //creazione alberi\r\n JTree tree1=new JTree();\r\n JTree tree2=new JTree();\r\n TreePath tp[];\r\n \r\n int ld,lf,j=0,cont=0;\r\n int row[],x,y;\r\n boolean setJar,dof=true,create=true;\r\n CercaFile cFile,cDir;\r\n String directory[],file[];\r\n String path[]=new String[100];\r\n String sub,titleWin,txt,code,setJarS;\r\n String codeTitleFile,codePathFile;\r\n String sep=System.getProperty("file.separator");\r\n String home=System.getProperty("user.home");\r\n Image logo=Toolkit.getDefaultToolkit().getImage("images/logo.png");\r\n \r\n //bottoni\r\n JButton b_new=new JButton("");\r\n JButton b_cancels=new JButton("");\r\n JButton b_back=new JButton("");\r\n \r\n TextField Title=new TextField(20);\r\n \r\n //layout\r\n JPanel p1=new JPanel(new FlowLayout());\r\n JPanel p2=new JPanel(new GridLayout(1,2));\r\n JScrollPane scrollTree;\r\n \r\n public NewJFileD(String str, boolean isJar){\r\n if(isJar==true)\r\n setJarS="jar";\r\n else\r\n setJarS="java";\r\n \r\n setJar=isJar;\r\n \r\n //azioni\r\n b_new.addActionListener(new b_new());\r\n b_cancels.addActionListener(new b_cancels());\r\n b_back.addActionListener(new b_back());\r\n tree1.addMouseListener(new Select1());\r\n tree2.addMouseListener(new Select2());\r\n Title.addMouseListener(new Title());\r\n \r\n path[j++]=home;\r\n caricaLista(path[0]+sep);\r\n code=str;\r\n \r\n //layout\r\n p2.add(tree1);\r\n p2.add(tree2);\r\n scrollTree=new JScrollPane(p2);\r\n p1.add(Title);\r\n p1.add(new JLabel(" "));\r\n p1.add(b_new);\r\n p1.add(b_back);\r\n p1.add(b_cancels);\r\n p1.setBackground(new Color(255,204,56));\r\n add(scrollTree,BorderLayout.CENTER);\r\n add(p1,BorderLayout.SOUTH); \r\n \r\n //impostazioni iniziali\r\n b_new.setEnabled(false);\r\n setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n changeLanguage();\r\n finestraD(true);\r\n }\r\n \r\n //impostazioni finestra\r\n public void finestraD(boolean Svis){\r\n setTitle(titleWin);\r\n setModal(true);\r\n pack();\r\n setSize(550,400);\r\n //centra Finestra\r\n final Toolkit toolkit = Toolkit.getDefaultToolkit();\r\n final Dimension screenSize = toolkit.getScreenSize();\r\n x = (screenSize.width - getWidth()) / 2;\r\n y = (screenSize.height - getHeight()) / 2;\r\n setLocation(x, y);\r\n //nascondi root\r\n tree1.setRootVisible(false);\r\n tree2.setRootVisible(false);\r\n setResizable(false);\r\n setIconImage(logo);\r\n setVisible(Svis);\r\n }\r\n \r\n //carica e cambia lingua\r\n public void changeLanguage(){\r\n CercaFile CsetFile=new CercaFile(".","settings.mjp",true);\r\n String TsetFile=new String(CsetFile.getListStringFiles(""));\r\n ReadFile setFile=new ReadFile("settings.mjp");\r\n String settings=setFile.getRowReadingFile(0);\r\n ReadFile language=new ReadFile("language/",settings+".lng");\r\n String setLanguage[]= java.util.Arrays.copyOf(language.getReadingFile("\\n"), 20);\r\n \r\n b_new.setText(setLanguage[1]); //nuovo\r\n b_cancels.setText(setLanguage[8]); //annulla\r\n b_back.setText(setLanguage[7]); //indietro\r\n titleWin=setLanguage[1]; //titolo finestra\r\n txt=setLanguage[18]; //messaggio\r\n }\r\n \r\n //carica lista cartelle\r\n public void caricaLista(String dir){\r\n //caricamento albero dir\r\n cDir=new CercaFile(dir,false);\r\n ld=cDir.getListLength();\r\n directory = java.util.Arrays.copyOf(cDir.getListFiles(),ld);\r\n JTree trl1=new JTree(directory);\r\n tree1.setModel(trl1.getModel());\r\n DefaultTreeCellRenderer ico1 = new DefaultTreeCellRenderer();\r\n ico1.setLeafIcon(new ImageIcon("images/folder.png"));\r\n tree1.setCellRenderer(ico1);\r\n \r\n //caricamento albero file\r\n cFile=new CercaFile(dir,"."+setJarS);\r\n lf=cFile.getListLength();\r\n file = java.util.Arrays.copyOf(cFile.getListFiles(), lf);\r\n JTree trl2=new JTree(file);\r\n tree2.setModel(trl2.getModel());\r\n DefaultTreeCellRenderer ico2 = new DefaultTreeCellRenderer();\r\n ico2.setLeafIcon(new ImageIcon("images/"+"java"+".png"));\r\n tree2.setCellRenderer(ico2);\r\n \r\n if(j>1)\r\n b_back.setEnabled(true);\r\n else\r\n b_back.setEnabled(false); \r\n }\r\n \r\n //apri cartella\r\n public void apriDir(){\r\n cont=0;\r\n try{\r\n String s=""+tp[0];\r\n sub=s.substring(7,s.length()-1);\r\n if(dof==true && row[0]<ld){\r\n path[j++]=sub;\r\n sub=caricaPath(sub);\r\n caricaLista(sub);\r\n }\r\n else\r\n select.setText(sub);\r\n }\r\n catch(NullPointerException npex){\r\n j=0;\r\n path[j++]=home;\r\n }\r\n }\r\n \r\n //carica cartella\r\n public String caricaPath(String subPath){\r\n subPath="";\r\n for(int i=0;i<j;i++)\r\n subPath=subPath+path[i]+sep;\r\n return subPath;\r\n }\r\n \r\n //azione bottone nuovo\r\n public class b_new implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n if(Title.getText().compareTo("")==0){\r\n b_new.setEnabled(false);\r\n }\r\n else{\r\n codeTitleFile=Title.getText();\r\n if(codeTitleFile.endsWith("."+setJarS)==false)\r\n codeTitleFile=codeTitleFile+"."+setJarS;\r\n codePathFile=caricaPath("");\r\n CercaFile c=new CercaFile(codePathFile,codeTitleFile,false);\r\n boolean strc=c.getResult();\r\n if(strc==true){\r\n ConfirmD conf=new ConfirmD(txt+" "+codeTitleFile+" ?",(x+50),(y+50));\r\n if(conf.getResult()==true){\r\n new SaveFile(codePathFile,codeTitleFile,code);\r\n finestraD(false);\r\n } \r\n }\r\n else{\r\n new SaveFile(codePathFile,codeTitleFile,code);\r\n finestraD(false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //azione bottone back indietro\r\n public class b_back implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n j--;\r\n sub=caricaPath(sub);\r\n caricaLista(sub); \r\n cont=0;\r\n }\r\n }\r\n\r\n //azione bottone annulla\r\n public class b_cancels implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n create=false;\r\n finestraD(false);\r\n }\r\n }\r\n \r\n //azione albero 1 (tree1)\r\n public class Select1 implements MouseListener{\r\n public void mouseClicked(MouseEvent me){\r\n row=tree1.getSelectionRows();\r\n tp=tree1.getSelectionPaths();\r\n dof=true;\r\n cont++;\r\n if(cont==2)\r\n apriDir();\r\n }\r\n\r\n public void mouseExited(MouseEvent me){\r\n cont=0;\r\n }\r\n public void mouseEntered(MouseEvent me){}\r\n public void mouseReleased(MouseEvent me){}\r\n public void mousePressed(MouseEvent me){}\r\n }\r\n \r\n //azione albero 2 (tree2)\r\n public class Select2 implements MouseListener{\r\n public void mouseClicked(MouseEvent me){\r\n row=tree2.getSelectionRows();\r\n tp=tree2.getSelectionPaths();\r\n dof=false;\r\n String s=""+tp[0];\r\n sub=s.substring(7,s.length()-1);\r\n Title.setText(sub);\r\n b_new.setEnabled(true);\r\n }\r\n public void mouseExited(MouseEvent me){}\r\n public void mouseEntered(MouseEvent me){}\r\n public void mouseReleased(MouseEvent me){}\r\n public void mousePressed(MouseEvent me){}\r\n }\r\n \r\n //azione titolo\r\n public class Title implements MouseListener{\r\n public void mouseClicked(MouseEvent me){}\r\n public void mouseExited(MouseEvent me){\r\n if(Title.getText().compareTo("")==0)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("0")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("1")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("2")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("3")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("4")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("5")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("6")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("7")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("8")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("9")==true)\r\n b_new.setEnabled(false);\r\n else\r\n b_new.setEnabled(true);\r\n }\r\n public void mouseEntered(MouseEvent me){}\r\n public void mouseReleased(MouseEvent me){}\r\n public void mousePressed(MouseEvent me){}\r\n }\r\n\r\n //restituisce il titolo del file creato \r\n public String getTitleOpenFile(){\r\n return codeTitleFile;\r\n }\r\n \r\n //restituisce il percorso del file creato\r\n public String getPathOpenFile(){\r\n return codePathFile;\r\n }\r\n \r\n //restituisce vero se il file e' stato creato\r\n public boolean getIsCreated(){\r\n return create;\r\n }\r\n}\r\n</pre>\r\n<p class=\"rtecenter\" style=\"\"><a href=\"http://students.uniparthenope.it/sites/default/files/images/20122207233020.png\" target=\"_blank\"><img alt=\"\" src=\"http://students.uniparthenope.it/sites/default/files/styles/large/public/images/20122207233020.png\" /></a></p>\r\n<p><u><em>Note</em></u>:<br />\r\n questa classe implementa un codice simile alla precendente, pertanto ci sono delle ridondanze che possono essere risolte (obiettivo futuro). A differenza della precedente, oltre ai tre pulsanti abbiamo una barra di testo in cui scrivere il nome del sorgente a patto che non inizi con un numero (requisito di java).</p>\r\n<p> </p>\r\n<p><strong>NewJarFileD </strong>(creazione file <em>jar </em>con menù)</p>\r\n<pre>\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.io.*;\r\nimport javax.swing.*;\r\n\r\npublic class NewJarFileD{\r\n int i,setNext=0;\r\n String codePathFile,codeTitleFile;\r\n ReadFile read;\r\n List loadedFile=new List(2,false);\r\n List loadedPath=new List(2,false);\r\n String setLanguage[];\r\n \r\n //finestre\r\n JDialog pag1=new JDialog();\r\n JDialog pag2=new JDialog();\r\n \r\n JLabel title=new JLabel("",JLabel.CENTER);\r\n JLabel separator=new JLabel("___________________________",JLabel.CENTER);\r\n JLabel authorTitle=new JLabel("",JLabel.CENTER);\r\n JTextField author=new JTextField(20);\r\n JLabel mainFileTitle=new JLabel("",JLabel.CENTER);\r\n JTextField mainFile=new JTextField(20);\r\n \r\n //bottoni\r\n JButton b_addElem=new JButton("");\r\n JButton b_delElem=new JButton("");\r\n JButton b_cancels=new JButton("");\r\n JButton b_next=new JButton("");\r\n JButton b_back=new JButton("");\r\n \r\n //layout\r\n JPanel p1=new JPanel(new FlowLayout());\r\n JPanel p2=new JPanel(new FlowLayout(FlowLayout.CENTER,5,10));\r\n JPanel p3=new JPanel(new GridLayout(2,1));\r\n JPanel p4=new JPanel(new GridLayout(5,1));\r\n JPanel p5=new JPanel(new FlowLayout(FlowLayout.CENTER,5,10));\r\n JPanel p6=new JPanel(new FlowLayout(FlowLayout.CENTER,5,10));\r\n \r\n public NewJarFileD(){ \r\n File Dir=new File("jar");\r\n if(Dir.isDirectory()==true)\r\n delDir();\r\n new File("jar").mkdir(); \r\n \r\n //azioni\r\n b_addElem.addActionListener(new Ab_addElem());\r\n b_delElem.addActionListener(new Ab_delElem());\r\n b_cancels.addActionListener(new Ab_cancels());\r\n b_next.addActionListener(new Ab_next());\r\n b_back.addActionListener(new Ab_back());\r\n \r\n pag1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n pag2.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n changeLanguage();\r\n finestra1D(true);\r\n }\r\n \r\n //carica e cambia la lingua\r\n public void changeLanguage(){\r\n CercaFile CsetFile=new CercaFile(".","settings.mjp",true);\r\n String TsetFile=new String(CsetFile.getListStringFiles(""));\r\n ReadFile setFile=new ReadFile("settings.mjp");\r\n String settings=setFile.getRowReadingFile(0);\r\n ReadFile language=new ReadFile("language/",settings+".lng");\r\n setLanguage= java.util.Arrays.copyOf(language.getReadingFile("\\n"), 41);\r\n \r\n b_addElem.setText(setLanguage[33]); //Aggiungi\r\n b_delElem.setText(setLanguage[34]); //Elimina\r\n b_cancels.setText(setLanguage[8]); //Annulla\r\n b_back.setText(setLanguage[7]); //Indietro\r\n authorTitle.setText(setLanguage[37]); //Autore\r\n mainFileTitle.setText(setLanguage[38]); //Classe Main \r\n }\r\n \r\n //carica prima finestra\r\n public void finestra1D(boolean Svis){\r\n p1.removeAll();\r\n p2.removeAll();\r\n p3.removeAll();\r\n \r\n title.setText(setLanguage[35]); //Scegli i file\r\n b_next.setText(setLanguage[36]); //Avanti\r\n b_next.setEnabled(true);\r\n b_back.setEnabled(false);\r\n \r\n p1.add(b_addElem);\r\n p1.add(b_delElem);\r\n p1.add(b_cancels);\r\n p2.add(b_next);\r\n p2.add(b_back);\r\n p3.add(p1);\r\n p3.add(p2); \r\n \r\n pag1.add(title,BorderLayout.NORTH);\r\n pag1.add(loadedFile,BorderLayout.CENTER);\r\n pag1.add(p3,BorderLayout.SOUTH);\r\n\r\n pag1.setSize(300,300);\r\n pag1.setLocation(100,100);\r\n pag1.setModal(true);\r\n pag1.setVisible(Svis);\r\n }\r\n \r\n //carica seconda finestra\r\n public void finestra2D(boolean Svis){\r\n p1.removeAll();\r\n p2.removeAll();\r\n p3.removeAll();\r\n \r\n title.setText(setLanguage[39]); //Compila il Manifest\r\n b_next.setText(setLanguage[40]); //Crea il file Jar\r\n b_back.setEnabled(true);\r\n \r\n p4.add(separator);\r\n p4.add(authorTitle);\r\n p5.add(author);\r\n p4.add(p5);\r\n p4.add(mainFileTitle);\r\n p6.add(mainFile);\r\n p4.add(p6);\r\n \r\n p1.add(b_cancels);\r\n p2.add(b_next);\r\n p2.add(b_back);\r\n p3.add(p1);\r\n p3.add(p2);\r\n \r\n pag2.add(title,BorderLayout.NORTH);\r\n pag2.add(p4,BorderLayout.CENTER);\r\n pag2.add(p3,BorderLayout.SOUTH);\r\n \r\n pag2.setSize(300,300);\r\n pag2.setLocation(100,100);\r\n pag2.setModal(true);\r\n pag2.setVisible(Svis);\r\n } \r\n \r\n //cancella cartella\r\n public void delDir(){\r\n CercaFile Del=new CercaFile("jar",true);\r\n int len=Del.getListLength();\r\n String DelList[]=java.util.Arrays.copyOf(Del.getListFiles(), len);\r\n for(int j=0;j<len;j++){\r\n System.out.println(DelList[j]);\r\n new File("jar\\\\"+DelList[j]).delete();}\r\n new File("jar").delete();\r\n }\r\n \r\n //azione bottone aggiungi elemento\r\n public class Ab_addElem implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n OpenJFileD ajf=new OpenJFileD("class");\r\n codePathFile=ajf.getPathOpenFile();\r\n codeTitleFile=ajf.getTitleOpenFile();\r\n if(ajf.getIsOpened()==true){\r\n loadedFile.add(codeTitleFile);\r\n loadedPath.add(codePathFile);\r\n i++;\r\n }\r\n }\r\n }\r\n \r\n //azione bottone cancella elemento\r\n public class Ab_delElem implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n int pos=loadedFile.getSelectedIndex();\r\n loadedFile.remove(pos);\r\n loadedPath.remove(pos);\r\n }\r\n }\r\n \r\n //azione bottone annulla\r\n public class Ab_cancels implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n delDir();\r\n finestra1D(false);\r\n finestra2D(false);\r\n }\r\n }\r\n \r\n //azione bottone crea e avanti \r\n public class Ab_next implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n if(setNext==0){\r\n if(i!=0){\r\n setNext=1;\r\n finestra1D(false);\r\n finestra2D(true);\r\n }\r\n }\r\n else{\r\n if((mainFile.getText()).compareTo("")!=0){\r\n for(int j=0;j<i;j++){\r\n codePathFile=loadedPath.getItem(j);\r\n codeTitleFile=loadedFile.getItem(j);\r\n new CopyFile(codePathFile+codeTitleFile,"jar//"+codeTitleFile);\r\n }\r\n NewJFileD njf=new NewJFileD("",true);\r\n codePathFile=njf.getPathOpenFile();\r\n codeTitleFile=njf.getTitleOpenFile();\r\n new SaveFile("jar//","Manifest.txt","Manifest-Version: 1.0\\n"+\r\n "Created-By: "+author.getText()+"\\n"+\r\n "Main-Class: "+mainFile.getText()+"\\n\\n");\r\n new SaveFile("CreateJar.bat","cd jar\\njar cmf Manifest.txt "\r\n +codePathFile+""+codeTitleFile+" *.class\\n"+\r\n "echo file Jar creato\\nexit");\r\n try{ \r\n Process process = Runtime.getRuntime().exec("cmd /c start CreateJar.bat");\r\n read=new ReadFile("jar//","nome_file");\r\n finestra2D(false);\r\n }\r\n catch (IOException e){\r\n b_next.setText("Errore creazione file Jar");\r\n b_next.setEnabled(false);\r\n }\r\n }\r\n }\r\n }\r\n } \r\n \r\n //azione bottone indietro\r\n public class Ab_back implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n finestra2D(false);\r\n finestra1D(true);\r\n setNext=0;\r\n }\r\n }\r\n}\r\n</pre>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122207233130.png\" /><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122207233145.png\" /></p>\r\n<p><u><em>Note</em></u>:<br />\r\n il nome delle classi sopraindicate termina con una '<em>D'</em>, ciò significa implementano delle <em>JDialog </em>modali (cioè finestre che non permettono l'uso del programma chiamante finchè sono aperte). Una delle classi utilizzate è <em>Process</em>, una classe nativa di java che s'interfaccia direttamente col sistema operativo, oltrepassando la <em>Java Virtual Machine</em>. Ciò provoca problemi di portabilità su altre piattaforme, infatti rendere questa classe compatibile con tutti i sistemi operativi è uno degli obiettivi futuri.</p>\r\n<p> </p>\r\n<p> </p>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/109\"><<Make Java Projects - Le Classi (parte 1)</a></p>\r\n<p class=\"rteright\" style=\"\"><a href=\"http://students.uniparthenope.it/?q=node/114\">Make Java Projects - Le Classi (parte 3)>></a><br />\r\n </p>\r\n<h3 class=\"rtecenter\">\r\n <span style=\"font-size:16px;\"><em><a href=\"students.uniparthenope.it/?q=node/103\"><span style=\"color: rgb(0, 0, 205); \">1</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color: rgb(0, 0, 205); \">2</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color: rgb(0, 0, 205); \">3</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><span style=\"color: rgb(255, 0, 0); \">4</span><span style=\"color: rgb(0, 0, 205); \"> </span><span style=\"color: rgb(0, 0, 205); \">- </span><a href=\"http://students.uniparthenope.it/?q=node/114\"><span style=\"color:#0000cd;\">5</span></a><span style=\"color: rgb(0, 0, 255); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color:#0000cd;\">6</span></a><span style=\"color:#0000cd;\"> - </span><span style=\"color:#0000cd;\"><a href=\"http://students.uniparthenope.it/?q=node/119\">7</a> - </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></em></span><br />\r\n </h3>\r\n','','full_html'),('node','blog',0,112,145,'und',0,'<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307090306.png\" /></p>\r\n<p>Salve a tutti amici e colleghi volevo segnalarvi una piccola libreria creata da me con la quale sarà possibile criptare e decriptare dei messaggi di testo .</p>\r\n<p>La libreria CRIPTACLASS può essere utilizzata per tutti i dispositivi apple <img alt=\"smiley\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/regular_smile.gif\" title=\"smiley\" width=\"20\" /></p>\r\n<p>Il suo utilizzo è veramente molto semplice, la prima cosa da fare è scaricarla dal seguente <a href=\"https://github.com/flexkid/CRIPTACLASS\">link</a> .</p>\r\n<p>Ora vi mi mostrerò come potete utilizzare La libreria CRIPTACLASS , per prima cosa bisogna creare un nuovo progetto in xcode , il template che utilizzeremo per questo esempio è il Single View Application </p>\r\n<p><a href=\"/sites/default/files/images/20122307090758.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307090758.png\" /></a></p>\r\n<p> </p>\r\n<p>Terminata la creazione del nuovo progetto il primo passo da compiere è importare la libreria all'interno di esso (semplicemente trasportandola )</p>\r\n<p><a href=\"/sites/default/files/images/20122307091113.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307091113.png\" /></a></p>\r\n<p> </p>\r\n<p><strong>Creazione dell'interfaccia grafica</strong></p>\r\n<p>Rechiamoci presso il file ViewController.xib e inseriamo all'interno della nostra view 2 textfield e 2 pushbutton</p>\r\n<p>il risultato dovrebbe essere simile a questo :</p>\r\n<p><a href=\"/sites/default/files/images/20122307091426.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307091426.png\" /></a></p>\r\n<p> </p>\r\n<p><strong>Dichiarazione degli oggetti </strong></p>\r\n<p>All'interno del file ViewController.h scriviamo il seguente codice :</p>\r\n<p> </p>\r\n<table>\r\n <tbody>\r\n <tr>\r\n </tr>\r\n <tr>\r\n <td class=\"webkit-line-content\">\r\n </td>\r\n </tr>\r\n <tr>\r\n <td class=\"webkit-line-number\">\r\n <p dir=\"rtl\" style=\"\"><span class=\"s1\" style=\"\">#import </span><UIKit/UIKit.h></p>\r\n <p class=\"p1\"><span class=\"s1\">#import </span>"CRIPTACLASS.h"//importiamo la libreria</p>\r\n <p class=\"p2\"><span class=\"s2\">@interface</span><span class=\"s3\"> ViewController : </span>UIViewController<span class=\"s3\"><</span>UITextFieldDelegate<span class=\"s3\">></span></p>\r\n <p class=\"p3\">@property<span class=\"s3\">(</span>nonatomic<span class=\"s3\">,</span>retain<span class=\"s3\">)</span>IBOutlet<span class=\"s3\"> </span><span class=\"s4\">UITextField</span><span class=\"s3\"> *input,*output; </span></p>\r\n <p class=\"p3\">@property<span class=\"s3\">(</span>nonatomic<span class=\"s3\">,</span>retain<span class=\"s3\">)</span><span class=\"s5\">CRIPTACLASS</span><span class=\"s3\"> *criptclass;</span></p>\r\n <p class=\"p4\">-(<span class=\"s2\">IBAction</span>)cript:(<span class=\"s2\">id</span>)sender;</p>\r\n <p class=\"p4\">-(<span class=\"s2\">IBAction</span>)decript:(<span class=\"s2\">id</span>)sender;</p>\r\n <p class=\"p3\">@end</p>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p style=\"\"> </p>\r\n<p><strong>Implementazione del codice</strong></p>\r\n<p class=\"p3\"><strong> </strong>Nel file ViewController.m scriviamo il seguente codice</p>\r\n<p class=\"p3\"> </p>\r\n<table>\r\n <tbody>\r\n <tr>\r\n </tr>\r\n <tr>\r\n <td class=\"webkit-line-content\">\r\n <p class=\"p3\"><span class=\"s1\">@synthesize</span> input,output,criptclass;</p>\r\n <p class=\"p1\">- (<span class=\"s1\">void</span>)viewDidLoad</p>\r\n <p class=\"p1\">{</p>\r\n <p class=\"p2\"><span class=\"s2\"> [</span><span class=\"s1\">super</span><span class=\"s2\"> </span>viewDidLoad<span class=\"s2\">];</span></p>\r\n <p class=\"p3\"><span class=\"s2\"> </span><span class=\"s3\">criptclass</span><span class=\"s2\">=[[</span><span class=\"s3\">CRIPTACLASS</span><span class=\"s2\"> </span><span class=\"s4\">alloc</span><span class=\"s2\">]</span><span class=\"s4\">init</span><span class=\"s2\">];</span>//allochiamo e inizializziamo il nuovo oggetto</p>\r\n <p class=\"p3\">}</p>\r\n <p class=\"p4\">-(<span class=\"s1\">IBAction</span>)cript:(<span class=\"s1\">id</span>)sender{</p>\r\n <p class=\"p3\"><span class=\"s2\"> </span>//richiamiamo il metodo per criptare il testo</p>\r\n <p class=\"p5\"><span class=\"s2\"> </span>output<span class=\"s2\">.</span><span class=\"s5\">text</span><span class=\"s2\"> = [</span>criptclass<span class=\"s2\"> </span><span class=\"s6\">encrypt</span><span class=\"s2\"> :</span>input<span class=\"s2\">.</span><span class=\"s5\">text</span><span class=\"s2\">];</span></p>\r\n <p class=\"p4\"> }</p>\r\n <p class=\"p1\">-(<span class=\"s1\">IBAction</span>)decript:(<span class=\"s1\">id</span>)sender{</p>\r\n <p class=\"p3\"><span class=\"s2\"> </span>//richiamiamo il metodo per decriptare il testo</p>\r\n <p class=\"p5\"><span class=\"s2\"> </span>output<span class=\"s2\">.</span><span class=\"s5\">text</span><span class=\"s2\"> = [</span>criptclass<span class=\"s2\"> </span><span class=\"s6\">decript</span><span class=\"s2\">:</span>input<span class=\"s2\">.</span><span class=\"s5\">text</span><span class=\"s2\">];</span></p>\r\n <p class=\"p4\">}</p>\r\n <p class=\"p1\">-(<span class=\"s1\">BOOL</span>)textFieldShouldReturn:(<span class=\"s5\">UITextField</span> *)textField {</p>\r\n <p class=\"p3\"><span class=\"s2\"> </span>//metodo per la chiudere la tastiera</p>\r\n <p class=\"p2\"><span class=\"s2\">[textField </span>resignFirstResponder<span class=\"s2\">];</span></p>\r\n <p class=\"p6\">return<span class=\"s2\"> </span>YES<span class=\"s2\">;</span></p>\r\n <p class=\"p1\">}</p>\r\n <div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p class=\"p3\">L'ultima operazione da eseguire è il collegamento dei vari oggetti</p>\r\n<p>Quindi tornando all'interno del file ViewController.xib fare un click col tasto destro sul file's owner e fare gli eventuali collegamenti con i vari oggetti :</p>\r\n<p><a href=\"/sites/default/files/images/20122307092707.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307092707.png\" /></a></p>\r\n<p> </p>\r\n<p>Se tutto è andato a buon fine il risultato finale dovrebbe essere simile al seguente :</p>\r\n<p><a href=\"/sites/default/files/images/20122307092845.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307092845.png\" /></a></p>\r\n<p> </p>\r\n<p>Tengo a precisare che questa libreria non utilizza nessun algoritmo "professionale " di cifratura come può essere sha , md5 ecc ma penso che per utilizzi "comuni" sia una buona soluzione.</p>\r\n<p>Grazie a tutti per l'attenzione e buona programmazione </p>\r\n','','full_html'),('node','blog',0,113,146,'und',0,'<p>Dopo aver effettuato numerose prove , mi sono accorto che nonostante l'aumento di velocità di salita dei rettangoli , il gioco risultava comunque troppo semplice ; per questo motivo ho deciso di inserire degli ostacoli al fine di rendere il tutto un pò più ostico al videogiocatore. Ho pensato a queste due nuove aggiunte :<br />\r\n -Incremento della velocità dei rettangoli<br />\r\n -Diminuzione della dimensione dei rettangoli<br />\r\n <br />\r\n Per quanto riguarda il primo aspetto , ricordiamo che i rettangoli si spostano verso l'alto grazie al richiamo del metodo saleRect() (diminuisce la coordinata y del rettangolo di 1) il quale è implementato tramite un timer appositamente creato per lo scopo. Pertanto , la velocità con cui il rettangolo si sposta verso l'alto è data unicamente da quante volte il metodo saleRect() è richiamato nell'unità di tempo. Per raggiungere l'obiettivo di ottenere un cambio di velocità , basta che teniamo in considerazione questo aspetto. Ogni qualvolta un rettangolo appare sulla label , una variabile intera che ho chiamato "timing" incrementa il suo valore di 1. Possiamo usare questa variabile per stabilire quanti rettangoli in totale sono apparsi fino a quel momento ed agire di conseguenza. Quindi , dopo i primi 5 rettangoli apparsi , succederà che il timer che gestiva la velocità dello spostamento dei rettangoli verso l'alto verrà fermato con il metodo stop() della classe Timer e ne verrà fatto partire un altro che stavolta avrà come argomento un valore di millisecondi diverso , nel nostro caso inferiore a quello di prima (ciò per ottenere un aumento della velocità).<br />\r\n A questo punto sorge una domanda : com'è possibile sincronizzare i timer in modo tale da far partire il secondo nel momento esatto in cui il primo ha cessato di agire? Data la natura non dinamia dei timer (dobbiamo essere noi a dichiarare per quanti millisecondi esso effettuerà una certa azione , e ciò deve essere un procedimento statico) , possiamo ricorrere ad un altro metodo della classe timer , il setInitialDelay(). In questo modo possiamo ritardare tramite questo metodo , l'avvio del secondo timer in modo tale che esso parti in concomitanza allo stop del primo.<br />\r\n Grazie a questo procedimento avremo l'effetto desiderato e dopo i primi rettangoli il gioco risulterà un po' più complesso.<br />\r\n <br />\r\n <br />\r\n Vediamo adesso in che modo possiamo riuscire ad ottenere una dimensione dei rettangoli minore. Sappiamo dai post precedenti , che il disegno di tutte le componenti che vivono nel videogioco sono effettuate su label. Ci concentreremo ovviamente sul disegno dei rettangoli : esso avviene tramite la chiamata del metodo drawRoundRect della classe graphics. Sappiamo che i parametri giusti da passare a questo metodo per ottenere il disegno di un rettangolo inarcato alle estremità sono : <br />\r\n <br />\r\n <code style=\"color: rgb(0, 0, 0); \"><b><a href=\"http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Graphics.html#drawRoundRect(int, int, int, int, int, int)\">drawRoundRect</a></b>(int x, int y, int width, int height, int arcWidth, int arcHeight)</code><span style=\"color: rgb(0, 0, 0); font-family: \'Times New Roman\'; font-size: medium; \"> </span></p>\r\n<p>dove x e y sono le coordinate del vertice in alto a sinistra del rettangolo, width è la lunghezza , height l'altezza , arcWidth è la lunghezza dell'arco che rappresenta il lato sinistro e il lato destro del rettangolo e arcHeight e la relativa altezza. Per raggiungere il nostro scopo , dobbiamo ovviamente tenere in considerazione il campo width. (Dato che ci deve essere una diminuzione di questo valore per ottenere un rettangolo via via più "stretto").<br />\r\n <br />\r\n All'interno del costruttore della classe Rect inizializziamo tutti i campi appena visti ad un valore; nella fattispecie, width avrà il valore di 120. Quando andremo a disegnare i rettangoli che col tempo appariranno sulla label , accederemo in modo diretto a questi valori per ottenere il disegno desiderato. Adesso fermiamoci un attimo : ricordate la variabile timing a cui abbiamo fatto accenno prima (quella che tiene traccia del numero dei rettangoli apparsi sullo schermo) ?<br />\r\n Bene , è proprio di essa che si serviremo ancora. Quando la variabile timing avrà raggiunto un certo valore , allora procediamo a cambiare dinamicamente il valore di width; ciò si effettua banalmente tramite un controllo if-branch.<br />\r\n Pertanto, se timing ad esempio avrà il valore 25 (dall'inizio del gioco sono apparsi 25 rettangoli) allora a width , verrà assegnato un valore più basso. --> if(timing == 25) width=80;<br />\r\n <br />\r\n Si procede così per quante volte vogliamo. Ho deciso di fermare la diminuzione della dimensione a 50 dato che i rettangoli risultavano già abbastanza piccoli.Quindi dopo 50 rettangoli apparsi dall'inizio del gioco avremo la massima diminuzione. --> if(timing==50) width=40;<br />\r\n <br />\r\n Stasera provvederò a postare il codice relativo a questo aggiornamento ed eventualmente qualche screenshot dimostrativo.<br />\r\n <br />\r\n Grazie per l'attenzione , buona giornata<br />\r\n :)</p>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,114,147,'und',0,'<p> </p>\r\n<p>Le classi che migliorano <strong>MJP</strong> sono:</p>\r\n<p> </p>\r\n<p><strong>Browser </strong>(necessario per la ricerca e la visualizzazione della documentazione <em>java </em>da sito <em>Oracle)</em></p>\r\n<pre>\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.io.IOException;\r\nimport javax.swing.*;\r\nimport javax.swing.event.*;\r\nimport javax.swing.text.html.HTMLEditorKit;\r\n\r\npublic class Browser extends JPanel implements HyperlinkListener {\r\n private JEditorPane htmlEditorPane;\r\n private JTextField pageHtml;\r\n private JLabel statusBar=new JLabel(" ");;\r\n private List backList=new List(2,false);\r\n private int i=0;\r\n Image logo=Toolkit.getDefaultToolkit().getImage("images/logo.png");\r\n \r\n JFrame Window=new JFrame();\r\n //bottoni\r\n JButton b_back=new JButton("");\r\n JButton b_exit=new JButton("");\r\n //layout\r\n JPanel p1=new JPanel(new BorderLayout());\r\n JPanel p2=new JPanel(new FlowLayout(FlowLayout.CENTER));\r\n\r\n public Browser(String search){\r\n //azioni\r\n b_back.addActionListener(new Ab_back());\r\n b_exit.addActionListener(new Ab_chiudi());\r\n \r\n String searchR= search.replaceAll(" ", "%20");\r\n htmlEditorPane = createHtmlEditorPane();\r\n backList.add("http://search.oracle.com/search/search?start=1&search_p_main_operator=all&q="+searchR+"% 206&group=Documentation");\r\n pageHtml = new JTextField(backList.getItem(i));\r\n i++;\r\n String url = pageHtml.getText();\r\n loadPage(url);\r\n \r\n //layout\r\n p2.add(b_back);\r\n p2.add(b_exit);\r\n p2.add(pageHtml);\r\n p1.add(p2,BorderLayout.NORTH);\r\n p1.add(new JScrollPane(htmlEditorPane),BorderLayout.CENTER);\r\n p1.add(statusBar,BorderLayout.SOUTH);\r\n p2.setBackground(new Color(255,204,56));\r\n Window.add(p1);\r\n Window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n changeLanguage();\r\n finestra(search);\r\n }\r\n \r\n //carica e cambia lingua\r\n public void changeLanguage(){\r\n CercaFile CsetFile=new CercaFile(".","settings.mjp",true);\r\n String TsetFile=new String(CsetFile.getListStringFiles(""));\r\n ReadFile setFile=new ReadFile("settings.mjp");\r\n String settings=setFile.getRowReadingFile(0);\r\n ReadFile language=new ReadFile("language/",settings+".lng");\r\n String setLanguage[]= java.util.Arrays.copyOf(language.getReadingFile("\\n"), 20);\r\n \r\n b_back.setText(setLanguage[7]); //indietro\r\n b_exit.setText(setLanguage[3]); //chiudi\r\n }\r\n \r\n //caruca finestra\r\n public void finestra(String title){\r\n pageHtml.setEditable(false);\r\n Window.setTitle("Java Doc : "+title);\r\n Window.setSize(500,500);\r\n Window.setLocation(100,100);\r\n Window.setExtendedState(JFrame.MAXIMIZED_BOTH);\r\n Window.setIconImage(logo);\r\n Window.setVisible(true);\r\n }\r\n \r\n //crea contenitore pagina html\r\n protected JEditorPane createHtmlEditorPane() {\r\n JEditorPane editor = new JEditorPane();\r\n editor.setEditorKit(new HTMLEditorKit());\r\n editor.addHyperlinkListener(this);\r\n editor.setEditable(false);\r\n return editor;\r\n }\r\n \r\n //carica link pagina\r\n public void hyperlinkUpdate(HyperlinkEvent event){\r\n if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED){\r\n loadPage(event.getURL().toString());\r\n pageHtml.setText(event.getURL().toString());\r\n backList.add(event.getURL().toString());\r\n b_back.setEnabled(true);\r\n i++;\r\n } \r\n else if (event.getEventType() == HyperlinkEvent.EventType.ENTERED)\r\n statusBar.setText(" "+event.getURL().toString());\r\n else if (event.getEventType() == HyperlinkEvent.EventType.EXITED)\r\n statusBar.setText(" ");\r\n }\r\n \r\n //carica pagina html da intenet \r\n public void loadPage(String url){\r\n super.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));\r\n try{htmlEditorPane.setPage(url);}\r\n catch(IOException ex){JOptionPane.showMessageDialog(null, ex.getMessage() , url, JOptionPane.ERROR_MESSAGE);}\r\n super.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));\r\n }\r\n \r\n //azione bottone indietro\r\n public class Ab_back implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n i--;\r\n if(i>=0){\r\n pageHtml = new JTextField(backList.getItem(i));\r\n statusBar = new JLabel("");\r\n String url = pageHtml.getText();\r\n loadPage(url);\r\n }\r\n else{\r\n i++;\r\n b_back.setEnabled(false);\r\n }\r\n }\r\n }\r\n \r\n //azione bottone chiudi \r\n public class Ab_chiudi implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n Window.setVisible(false);\r\n } \r\n }\r\n}\r\n</pre>\r\n<p class=\"rtecenter\" style=\"\"><a href=\"/sites/default/files/images/20122307161805.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307161805.png\" style=\"height: 300px; width: 600px; \" /></a></p>\r\n<p><u>Note</u>:<br />\r\n questa classe permette la navigazione solo sul sito <em>Oracle </em>nella sezione della documentazione della versione 6, poichè per visualizzare correttamente la versione 7 occorre migliorarla.<br />\r\n Adattando il seguente codice si può creare una qualsiasi finestra di navigazione o un vero e proprio <strong>Browser</strong>.</p>\r\n<p> </p>\r\n<p><strong>ConfirmD </strong>(crea una finestra di conferma per una determinata operazione, ad esempio la chiusura del programma o la sovrascrittura di un file).</p>\r\n<pre>\r\nimport java.awt.*;\r\nimport javax.swing.*;\r\nimport java.awt.event.*;\r\n\r\npublic class ConfirmD{\r\n public boolean state;\r\n Image logo=Toolkit.getDefaultToolkit().getImage("images/logo.png");\r\n \r\n JDialog Window=new JDialog();\r\n JLabel message=new JLabel("testo",JLabel.CENTER);\r\n JPanel chs=new JPanel(new FlowLayout());\r\n JButton b_yes=new JButton("");\r\n JButton b_no=new JButton("");\r\n \r\n public ConfirmD(String str,int x,int y){\r\n //azioni\r\n b_yes.addActionListener(new b_yes());\r\n b_no.addActionListener(new b_no());\r\n \r\n message.setText(str);\r\n\r\n //layout\r\n chs.add(b_yes);\r\n chs.add(b_no);\r\n Window.add(message,BorderLayout.NORTH);\r\n Window.add(chs,BorderLayout.CENTER);\r\n //grafica\r\n message.setBackground(Color.white);\r\n chs.setBackground(Color.white); \r\n \r\n //impostazioni finestra\r\n Window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n changeLanguage();\r\n Window.setIconImage(logo);\r\n Window.setModal(true);\r\n Window.pack();\r\n Window.setSize(220,100);\r\n Window.setLocation(x,y);\r\n Window.setResizable(false);\r\n Window.setVisible(true);\r\n }\r\n \r\n \r\n //carica e cambia lingua\r\n public void changeLanguage(){\r\n CercaFile CsetFile=new CercaFile(".","settings.mjp",true);\r\n String TsetFile=new String(CsetFile.getListStringFiles(""));\r\n ReadFile setFile=new ReadFile("settings.mjp");\r\n String settings=setFile.getRowReadingFile(0);\r\n ReadFile language=new ReadFile("language/",settings+".lng");\r\n String setLanguage[]= java.util.Arrays.copyOf(language.getReadingFile("\\n"), 20);\r\n \r\n b_yes.setText(setLanguage[16]); //si\r\n b_no.setText(setLanguage[17]); //no\r\n }\r\n \r\n //azione bottone si\r\n class b_yes implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n state=true;\r\n Window.setVisible(false);\r\n }\r\n }\r\n \r\n //azione bottone no\r\n class b_no implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n state=false;\r\n Window.setVisible(false);\r\n }\r\n }\r\n \r\n //restituisce la scelta\r\n public boolean getResult(){\r\n return state;\r\n }\r\n}\r\n</pre>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307163309.png\" /> <img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307163318.png\" /></p>\r\n<p><u>Note</u>:<br />\r\n come scritto nell'articolo precedente, la '<em>D</em>' nel nome indica che questa classe implementa una <em>JDialog </em>modale.</p>\r\n<p> </p>\r\n<p><strong>LanguageD </strong>(permette di selezionare la lingua preferita tra le 5 disponibili, ottenute utilizzando <em><a href=\"http://translate.google.it/\">Google Traduttore</a></em> )</p>\r\n<p> </p>\r\n<pre>\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport javax.swing.*;\r\n\r\nclass LanguageD{\r\n JDialog Window=new JDialog();\r\n List language=new List(2,false);\r\n String s_language[],setting;\r\n String titleWin,sub="";\r\n Image logo=Toolkit.getDefaultToolkit().getImage("images/logo.png");\r\n \r\n JLabel l1=new JLabel("Lingua scelta: ");\r\n JLabel labelLanguage=new JLabel("");\r\n JLabel l2=new JLabel("_____________________");\r\n JLabel l3=new JLabel("Cambia lingua in: ");\r\n \r\n //bottoni\r\n JButton b_save = new JButton("");\r\n JButton b_cancels = new JButton("");\r\n\r\n //layout\r\n JPanel p1=new JPanel(new FlowLayout());\r\n JPanel p2=new JPanel(new FlowLayout());\r\n JPanel p3=new JPanel(new FlowLayout());\r\n JPanel p4=new JPanel(new FlowLayout());\r\n JPanel p5=new JPanel(new GridLayout(4,1));\r\n\r\n public LanguageD(){\r\n //cerca le lingue presenti e carica le impostazioni\r\n CercaFile filec=new CercaFile("language/",".lng");\r\n String lang[] = java.util.Arrays.copyOf(filec.getListFiles(), filec.getListFiles().len gth);\r\n s_language=new String[lang.length];\r\n for(int i=0;i<lang.length;i++){\r\n sub=lang[i].substring(0,(lang[i].length()-4));\r\n language.add(sub);\r\n s_language[i]=sub;\r\n }\r\n ReadFile RsetFile=new ReadFile("settings.mjp");\r\n setting=RsetFile.getRowReadingFile(0);\r\n labelLanguage.setText(setting);\r\n \r\n //azioni\r\n language.addItemListener(new selectLanguage());\r\n b_save.addActionListener(new b_save());\r\n b_cancels.addActionListener(new b_cancels());\r\n \r\n //layout\r\n p1.add(l1);\r\n p1.add(labelLanguage);\r\n p2.add(l2);\r\n p3.add(l3);\r\n p3.add(language);\r\n p4.add(b_save);\r\n p4.add(b_cancels);\r\n p5.add(p1);\r\n p5.add(p2);\r\n p5.add(p3);\r\n p5.add(p4);\r\n Window.add(p5);\r\n //\r\n Window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n changeLanguage();\r\n finestraD(true);\r\n }\r\n \r\n //carica e cambia lingua\r\n public void changeLanguage(){\r\n CercaFile CsetFile=new CercaFile(".","settings.mjp",true);\r\n String TsetFile=new String(CsetFile.getListStringFiles(""));\r\n ReadFile setFile=new ReadFile("settings.mjp");\r\n String settings=setFile.getRowReadingFile(0);\r\n ReadFile language=new ReadFile("language/",settings+".lng");\r\n String setLanguage[]= java.util.Arrays.copyOf(language.getReadingFile("\\n"), 20);\r\n \r\n b_save.setText(setLanguage[12]); //salva\r\n b_cancels.setText(setLanguage[8]); //annulla\r\n titleWin=setLanguage[9]; //titolo finestra\r\n l1.setText(setLanguage[10]); //messaggio 1\r\n l3.setText(setLanguage[11]); //messaggio 2\r\n }\r\n \r\n //impostazione finestra\r\n public void finestraD(boolean Svis){\r\n Window.setTitle(titleWin);\r\n Window.setIconImage(logo);\r\n Window.setModal(true);\r\n Window.pack();\r\n Window.setSize(300,300);\r\n final Toolkit toolkit = Toolkit.getDefaultToolkit();\r\n final Dimension screenSize = toolkit.getScreenSize();\r\n final int x = (screenSize.width - Window.getWidth()) / 2;\r\n final int y = (screenSize.height - Window.getHeight()) / 2;\r\n Window.setLocation(x, y);\r\n Window.setResizable(false);\r\n Window.setVisible(Svis);\r\n }\r\n \r\n //azione per selezione lingua\r\n class selectLanguage implements ItemListener{\r\n public void itemStateChanged(ItemEvent e){\r\n int indice=((Integer) e.getItem()).intValue();\r\n labelLanguage.setText(s_language[indice]);\r\n }\r\n }\r\n \r\n //azione bottone salva\r\n class b_save implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n sub=labelLanguage.getText();\r\n finestraD(false);\r\n }\r\n }\r\n \r\n //azione bottone annulla\r\n class b_cancels implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n sub=setting; \r\n finestraD(false);\r\n }\r\n }\r\n \r\n //restituisce lingua impostata\r\n public String setLanguage(){\r\n return sub;\r\n }\r\n}\r\n</pre>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307171413.png\" /></p>\r\n<p><u>Note</u>:<br />\r\n questa classe cambia la lingua indirettamente, ovvero imposta in un file chiamato "<em>settings.mjp</em>" la lingua selezionata, così ogni classe legge dallo stesso file le impostazioni e ricarica la lingua. Tale metodo permette di salvare le impostazioni alla chiusura del programma e di ricaricarle alla riapertura. <br />\r\n <strong>LanguageD</strong>, legge dalla directory language le lingue presenti ("<em>NomeLingua.lng</em>"). In questo modo, è possibile aggiungerne nuove traducendo una delle presenti e salvando il file con estensione ".<em>lng</em>" nella directory language.<br />\r\n Ovviamente anche questa classe può essere implementata in una qualsiasi altra applicazione.</p>\r\n<p> <br />\r\n </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/111\"><<Make Java Projects - Le Classi (parte 2)</a></p>\r\n<p class=\"rteright\" style=\"\"><a href=\"http://students.uniparthenope.it/?q=node/116\">Make Java Projects - Le Classi (parte 4)>></a><br />\r\n </p>\r\n<h3 class=\"rtecenter\">\r\n <span style=\"font-size:16px;\"><em><a href=\"students.uniparthenope.it/?q=node/103\"><span style=\"color:#0000cd;\">1</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color:#0000cd;\">2</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color:#0000cd;\">3</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color:#0000cd;\">4</span></a><span style=\"color:#0000cd;\"> -</span> <span style=\"color: rgb(255, 0, 0); \">5 </span><span style=\"color:#0000cd;\">- </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color:#0000cd;\">6</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/119\"><span style=\"color:#0000cd;\">7</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></em></span><br />\r\n </h3>\r\n','','full_html'),('node','blog',0,115,148,'und',0,'<p>Stamattina ho postato nuovi aggiornamenti relativi all'inserimento dei due ostacoli <br />\r\n -Incremento di velocità dei rettangoli che salgono<br />\r\n -Diminuzione dell'ampiezza dei rettangoli<br />\r\n ;;<br />\r\n <br />\r\n Qui segue il codice relativo all'incremento di velocità , ovvero l'implementazione di tutti i Timer necessari allo scopo (come funzionano nel dettaglio è stato oggetto del precedente post, che indicherò a fine pagina tramite il suo link)</p>\r\n<br />\r\n<br />\r\n<br />\r\n<div>\r\n <pre>\r\n package rapidroll;</pre>\r\n</div>\r\n<div>\r\n </div>\r\n<div>\r\n <pre>\r\nimport javax.swing.*;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.event.ActionEvent;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.event.ActionListener;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.Toolkit;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.event.KeyEvent;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.event.KeyListener;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.Image;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.BorderLayout;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.lang.Math;</pre>\r\n</div>\r\n<div>\r\n </div>\r\n<div>\r\n <pre>\r\npublic class Finestra extends JFrame{</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n Pannello p=new Pannello();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n Label la=new Label();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n Timer timersos,timerrefresh,timersale,timerscende,timerrefresh2,timersale2;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n Timer timerPalla;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public Finestra(){</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n super("Rapid Roll!");</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n Image Immagine;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n setSize(500,1000);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n Immagine = Toolkit.getDefaultToolkit().getImage("D:\\\\Documenti\\\\Downloads\\\\rapid.png");</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n this.setIconImage(Immagine);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n this.setVisible(true);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n setResizable(false);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n setVisible(true);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n add(p);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersos=new Timer(3000,new ListenerTimerSos());</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersale=new Timer(7,new ListenerTimerSale());</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersale2=new Timer(5,new ListenerTimerSale2());</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerscende=new Timer(3,new ListenerTimerScende());</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerrefresh2=new Timer(68,new ListenerTimerRefreshsos2());</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerrefresh=new Timer(82,new ListenerTimerRefreshsos());</pre>\r\n</div>\r\n<pre>\r\n</pre>\r\n<div>\r\n <pre>\r\n timerrefresh.setInitialDelay(4000);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerscende.setInitialDelay(4000);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersos.start();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerscende.start();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerrefresh.start();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerrefresh2.setInitialDelay(18000);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersale2.setInitialDelay(18000);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersale2.start();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerrefresh2.start();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersale.start();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n this.addKeyListener(new listenermov());</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public class ListenerTimerSos implements ActionListener{</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void actionPerformed(ActionEvent ae) {</pre>\r\n</div>\r\n<pre>\r\n</pre>\r\n<div>\r\n p.la.sostegno.compari();</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n // if(p.la.sostegno.timing%4==0 && p.la.sostegno.timing>0) p.la.vite.compariVita(); </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <pre>\r\n public class ListenerTimerScende implements ActionListener{</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void actionPerformed(ActionEvent ae){</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(p.la.io.down==true) p.la.io.scende();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public class ListenerTimerSale implements ActionListener{ </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void actionPerformed(ActionEvent ae){ </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if (p.la.io.down==false) p.la.io.sale();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(p.la.sostegno.timing==5) timersale.stop();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public class ListenerTimerSale2 implements ActionListener{ </pre>\r\n</div>\r\n<pre>\r\n</pre>\r\n<div>\r\n </div>\r\n<div>\r\n <pre>\r\n public void actionPerformed(ActionEvent ae){ </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if (p.la.io.down==false) p.la.io.sale();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public class ListenerTimerRefreshsos implements ActionListener{</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void actionPerformed(ActionEvent ae) {</pre>\r\n</div>\r\n<pre>\r\n</pre>\r\n<div>\r\n <pre>\r\n p.la.sostegno.saleRect();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(p.la.sostegno.timing==5) timerrefresh.stop();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public class ListenerTimerRefreshsos2 implements ActionListener{</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void actionPerformed(ActionEvent ae) {</pre>\r\n</div>\r\n<pre>\r\n</pre>\r\n<div>\r\n <pre>\r\n p.la.sostegno.saleRect();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public class listenermov implements KeyListener{</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n boolean destra=false,sinistra=false,giu=false,sinistra2=false,destra2=false;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void keyTyped(KeyEvent ke) {</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n //non si puo' fare override di metodi , nel senso che keytyped non si puo' omettere e neanche keypressed e key released. Ce lo mettiamo ma è inutile</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void keyPressed(KeyEvent ke) { </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n char c=ke.getKeyChar();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(c=='a') sinistra=true;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(c=='d') destra=true;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(sinistra==true){ p.la.io.muovesinistra(); p.la.repaint(); }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(destra==true){ p.la.io.muovedestra(); p.la.repaint(); } </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n muro(); p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n muro2(); p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void keyReleased(KeyEvent ke){</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n char c=ke.getKeyChar();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if (c=='a') sinistra=false;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if (c=='d') destra=false;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void muro(){</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(p.la.io.xLinea<=0) sinistra2=true;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(sinistra2) {</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.io.muovedestra();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n sinistra2=false;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void muro2(){</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(p.la.io.xLinea2>=p.la.getWidth()) destra2=true;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(destra2){ </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.io.muovesinistra();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n destra2=false;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n <p> </p>\r\n <p>Mentre invece il codice relativo alla dimunzione di ampiezza dei rettangoli risiede nella classe Rect :</p>\r\n <br />\r\n <br />\r\n <br />\r\n <br />\r\n <div>\r\n <pre>\r\n package rapidroll;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n import javax.swing.*;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n import java.awt.Color;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n import java.util.*;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public class Rect {</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n sos[] arrayRect;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n Label mylab;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int width,height,arcWidth,arcHeight;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int timing,cont;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int actualrect;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public Rect(Label mylab)</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n {</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n timing=-1;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n cont=0;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n width=120;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n height=20;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n arcWidth=20;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n arcHeight=15;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n actualrect=0;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n this.mylab=mylab;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n arrayRect=new sos[200]; </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public void saleRect()</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n {</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n int i;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n for(i=0;i<arrayRect.length;i++)</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(arrayRect[i]!=null){</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n arrayRect[i].yRect-=10;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(mylab.io.down==true){</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(arrayRect[i].yRect-mylab.io.yLinea<10 && mylab.io.xLinea-arrayRect[i].xRect>-5 && mylab.io.xLinea-arrayRect[i].xRect<120 && arrayRect[i].yRect>400 && mylab.io.yCord<arrayRect[i].yRect){</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n mylab.io.down=false;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n actualrect=i; </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n mylab.punteggio+=10;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public void compari()</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n {</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n int k;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n for(k=0;k<arrayRect.length;k++)</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(arrayRect[k]==null) break;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(k>=arrayRect.length) k=arrayRect.length-2; </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n for(int p=k-1;p>=0;p--) arrayRect[p+1]=arrayRect[p];</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n arrayRect[0]=new sos(); </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n timing++;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(timing==25) width=80;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(timing==50) width=40;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public class sos{</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int xRect;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int yRect;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int larghezza;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int altezza;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int larghezzaArco;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int altezzaArco;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public Color mycolour;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public sos(){</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n mycolour=Color.BLUE;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n this.larghezza=120;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n this.altezza=20;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n this.larghezzaArco=20;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n this.altezzaArco=15;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n xRect=5+(int)(Math.random()*450);</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n yRect=950;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <br />\r\n <br />\r\n </div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,116,149,'und',0,'<p> </p>\r\n<p>Infine, la principale e l’ultima classe <strong>MJP</strong>, implementa le operazioni di compilazione, l’esecuzione e l’interfaccia grafica. Della compilazione se ne occupa la classe <em>JavaCompiler </em> col metodo <em>run</em>, che permette di compilare un sorgente java senza aprire un altro processo, ma sfruttando lo stesso della classe chiamante (condizione necessaria per poter reindirizzare gli errori e quindi poterli leggere nel programma).</p>\r\n<p>L’esecuzione, invece, è gestita dalla classe <em>Process</em> che, come detto in precedenza, oltrepassa la <em>Java Virtual Machine</em>, interfacciandosi direttamente con il sistema operativo, riscontrando spesso problemi di portabilità.</p>\r\n<p> </p>\r\n<p><strong>MJP</strong></p>\r\n<p> </p>\r\n<pre>\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.awt.image.*;\r\nimport java.io.*;\r\nimport java.net.*;\r\nimport java.util.*;\r\nimport java.util.Date;\r\nimport javax.swing.*;\r\nimport javax.swing.JScrollPane.*;\r\nimport javax.swing.border.*;\r\nimport javax.tools.JavaCompiler;\r\nimport javax.tools.ToolProvider;\r\n\r\npublic class MJP{\r\n private boolean act=false,visible=false;\r\n private boolean setAp,display;\r\n private int locX,locY;\r\n private int sizeX,sizeY;\r\n private CercaFile CsetFile;\r\n private String TsetFile,sub;\r\n private ReadFile setFile,language;\r\n private String settings[],setLanguage[]; \r\n private String osname=System.getProperty("os.name");\r\n int osnameInt;\r\n \r\n JFrame Window=new JFrame();\r\n Image logo=Toolkit.getDefaultToolkit().getImage("images/logo.png");\r\n \r\n Color NewCian=new Color(100,157,213);\r\n Color NewOrange=new Color(255,204,56);\r\n \r\n //Menu\r\n JMenuBar bar=new JMenuBar();\r\n //Menu->File\r\n JMenu m_file=new JMenu("File");\r\n JMenuItem mi_new=new JMenuItem("");\r\n JMenuItem mi_newApp=new JMenuItem("");\r\n JMenuItem mi_open=new JMenuItem("");\r\n JMenuItem mi_close=new JMenuItem("");\r\n JMenuItem mi_exit=new JMenuItem("");\r\n //Menu->Opzioni\r\n JMenu m_options=new JMenu("");\r\n JMenuItem mi_language=new JMenuItem("");\r\n \r\n //icone->bottoni->strumenti\r\n ImageIcon i_saveAs = new ImageIcon("images/saveAs.png");\r\n ImageIcon i_save = new ImageIcon("images/save.png");\r\n ImageIcon i_compile = new ImageIcon("images/compile.png");\r\n ImageIcon i_exec = new ImageIcon("images/exec.png");\r\n ImageIcon i_jar = new ImageIcon("images/jar.png");\r\n ImageIcon i_deleteFile = new ImageIcon("images/deleteFile.png");\r\n ImageIcon i_display1 = new ImageIcon("images/display1.png"); \r\n ImageIcon i_display2 = new ImageIcon("images/display2.png"); \r\n ImageIcon i_search = new ImageIcon("images/search.png");\r\n ImageIcon i_delete = new ImageIcon("images/delete.png");\r\n \r\n ImageIcon i_saveAsRoll = new ImageIcon("images/saveAsRoll.png");\r\n ImageIcon i_saveRoll = new ImageIcon("images/saveRoll.png");\r\n ImageIcon i_compileRoll = new ImageIcon("images/compileRoll.png");\r\n ImageIcon i_execRoll = new ImageIcon("images/execRoll.png");\r\n ImageIcon i_jarRoll = new ImageIcon("images/jarRoll.png");\r\n ImageIcon i_deleteFileRoll = new ImageIcon("images/deleteFileRoll.png");\r\n ImageIcon i_displayRoll = new ImageIcon("images/displayRoll.png");\r\n ImageIcon i_searchRoll = new ImageIcon("images/searchRoll.png");\r\n ImageIcon i_deleteRoll = new ImageIcon("images/deleteRoll.png");\r\n \r\n //bottoni->strumenti\r\n JButton b_saveAs=new JButton(i_saveAs);\r\n JButton b_save=new JButton(i_save);\r\n JButton b_compile=new JButton(i_compile);\r\n JButton b_exec=new JButton(i_exec);\r\n JButton b_jar=new JButton(i_jar);\r\n JButton b_deleteFile=new JButton(i_deleteFile);\r\n JButton b_display=new JButton(i_display1); \r\n \r\n //layout\r\n JPanel strumenti=new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 10));\r\n JPanel p1=new JPanel(new GridLayout(1,2));\r\n JPanel p2=new JPanel(new GridLayout(2,1));\r\n \r\n //codice\r\n JLabel codeTitle=new JLabel("");\r\n JScrollPane scrollCode;\r\n JTextArea code=new JTextArea();\r\n JPanel p3=new JPanel(new BorderLayout());\r\n JPanel p4=new JPanel(new FlowLayout(FlowLayout.LEFT));\r\n String codeTitleFile;\r\n String codePathFile;\r\n \r\n //report\r\n JLabel reportTitle=new JLabel("");\r\n JTextArea report=new JTextArea();\r\n JScrollPane scrollReport;\r\n JPanel p7=new JPanel(new BorderLayout());\r\n JPanel p8=new JPanel(new FlowLayout(FlowLayout.LEFT));\r\n \r\n //notes \r\n JLabel notesTitle=new JLabel("Notes");\r\n JButton b_deleteNotes=new JButton(i_delete);\r\n JTextArea notes=new JTextArea();\r\n JScrollPane scrollNotes;\r\n JPanel p9=new JPanel(new BorderLayout()); \r\n JPanel p10=new JPanel(new FlowLayout(FlowLayout.LEFT));\r\n String notesTitleFile;\r\n \r\n //ricerca\r\n JLabel searchTitle=new JLabel("");\r\n JButton b_search=new JButton(i_search);\r\n TextField search=new TextField(20);\r\n JPanel p11=new JPanel(new BorderLayout()); \r\n JPanel p12=new JPanel(new FlowLayout(FlowLayout.LEFT));\r\n JPanel p13=new JPanel(new FlowLayout(FlowLayout.LEFT));\r\n \r\n //crediti\r\n JLabel credits=new JLabel("Di Somma Ciro",JLabel.CENTER);\r\n \r\n public MJP(){\r\n //impostazioni iniziali\r\n LoadSettings(true);\r\n b_save.setEnabled(false);\r\n b_compile.setEnabled(false);\r\n b_exec.setEnabled(false);\r\n b_jar.setEnabled(false);\r\n b_deleteFile.setEnabled(false);\r\n mi_close.setEnabled(false);\r\n act=false;\r\n if(osname.startsWith("Windows")==true)\r\n osnameInt=0;\r\n else if(osname.startsWith("Linux")==true)\r\n osnameInt=1;\r\n \r\n //grafica finestra\r\n final Container c = Window.getContentPane();\r\n c.setBackground(NewCian);\r\n \r\n //azioni menu\r\n mi_new.addActionListener(new Ami_new());\r\n mi_newApp.addActionListener(new Ami_newApp());\r\n mi_open.addActionListener(new Ami_open());\r\n mi_close.addActionListener(new Ami_close());\r\n mi_exit.addActionListener(new Ami_exit());\r\n mi_language.addActionListener(new Ami_language());\r\n\r\n //azioni bottoni\r\n b_saveAs.addActionListener(new Ab_saveAs());\r\n b_save.addActionListener(new Ab_save());\r\n b_compile.addActionListener(new Ab_compile());\r\n b_exec.addActionListener(new Ab_exec());\r\n b_jar.addActionListener(new Ab_jar());\r\n b_deleteFile.addActionListener(new Ab_deleteFile());\r\n b_display.addActionListener(new Ab_display());\r\n b_search.addActionListener(new Ab_search());\r\n\r\n //azioni elementi\r\n code.addKeyListener(new A_code());\r\n b_deleteNotes.addActionListener(new Ab_deleteNotes());\r\n notes.addKeyListener(new A_save_notes());\r\n Window.addWindowListener(new WindowReturn());\r\n\r\n //file\r\n m_file.add(mi_new);\r\n m_file.add(mi_newApp);\r\n m_file.add(mi_open);\r\n m_file.add(mi_close);\r\n m_file.addSeparator();\r\n m_file.add(mi_exit);\r\n //grafica->file\r\n mi_new.setBackground(Color.white);\r\n mi_newApp.setBackground(NewOrange);\r\n mi_open.setBackground(Color.white);\r\n mi_close.setBackground(NewOrange);\r\n mi_exit.setBackground(Color.white); \r\n \r\n //opzioni\r\n m_options.add(mi_language);\r\n //grafica->opzioni\r\n mi_language.setBackground(Color.white);\r\n \r\n //barra\r\n bar.add(m_file);\r\n bar.add(m_options);\r\n Window.setJMenuBar(bar);\r\n //grafica->barra\r\n bar.setBackground(NewOrange);\r\n \r\n //strumenti\r\n strumenti.add(b_saveAs);\r\n strumenti.add(b_save);\r\n strumenti.add(b_compile);\r\n if(osnameInt==0){ //windows\r\n strumenti.add(b_exec);\r\n strumenti.add(b_jar);\r\n }\r\n strumenti.add(b_deleteFile);\r\n strumenti.add(b_display);\r\n //grafica->strumenti\r\n strumenti.setBackground(NewCian);\r\n \r\n //codice\r\n code.setBorder(BorderFactory.createLoweredBevelBorder());\r\n code.setFont(new Font("Arial",Font.PLAIN,17));\r\n scrollCode=new JScrollPane(code,\r\n JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,\r\n JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);\r\n p4.add(codeTitle);\r\n p3.add(p4,BorderLayout.NORTH);\r\n p3.add(scrollCode,BorderLayout.CENTER);\r\n //grafica->codice\r\n codeTitle.setForeground(Color.white);\r\n codeTitle.setFont(new Font("Verdana",Font.PLAIN,18));\r\n \r\n //report\r\n report.setBorder(BorderFactory.createLoweredBevelBorder());\r\n report.setEditable(false);\r\n report.setBackground(new Color(233,233,233));\r\n report.setFont(new Font("Times New Roman",Font.PLAIN,15));\r\n scrollReport=new JScrollPane(report,\r\n JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,\r\n JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);\r\n p8.add(reportTitle);\r\n p7.add(p8,BorderLayout.NORTH);\r\n p7.add(scrollReport,BorderLayout.CENTER);\r\n //grafica->report\r\n reportTitle.setForeground(Color.white);\r\n reportTitle.setFont(new Font("Verdana",Font.PLAIN,18));\r\n \r\n //notes\r\n scrollNotes=new JScrollPane(notes,\r\n JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,\r\n JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r\n p10.add(notesTitle);\r\n p10.add(b_deleteNotes);\r\n p9.add(p10,BorderLayout.NORTH);\r\n p9.add(scrollNotes,BorderLayout.CENTER); \r\n //notes->grafica\r\n notes.setBorder(BorderFactory.createLoweredBevelBorder());\r\n notes.setFont(new Font("Arial",Font.ITALIC,15));\r\n notes.setBackground(new Color(254,228,151));\r\n notesTitle.setForeground(Color.white);\r\n notesTitle.setFont(new Font("Verdana",Font.PLAIN,18));\r\n \r\n //ricerca\r\n //ricerca->grafica\r\n searchTitle.setForeground(Color.white);\r\n searchTitle.setFont(new Font("Verdana",Font.PLAIN,13));\r\n\r\n //crediti\r\n //crediti->grafica\r\n credits.setForeground(Color.white);\r\n credits.setFont(new Font("Verdana",Font.PLAIN,13));\r\n \r\n //bottoni\r\n //bottoni->grafica \r\n b_saveAs.setBackground(NewCian);\r\n b_saveAs.setBorder(BorderFactory.createEmptyBorder());\r\n b_saveAs.setRolloverIcon(i_saveAsRoll);\r\n b_saveAs.setPreferredSize(new Dimension(80,60));\r\n \r\n b_save.setBackground(NewCian);\r\n b_save.setBorder(BorderFactory.createEmptyBorder());\r\n b_save.setRolloverIcon(i_saveRoll);\r\n b_save.setPreferredSize(new Dimension(80,60));\r\n \r\n b_compile.setBackground(NewCian);\r\n b_compile.setBorder(BorderFactory.createEmptyBorder());\r\n b_compile.setRolloverIcon(i_compileRoll);\r\n b_compile.setPreferredSize(new Dimension(80,60));\r\n \r\n b_exec.setBackground(NewCian);\r\n b_exec.setBorder(BorderFactory.createEmptyBorder());\r\n b_exec.setRolloverIcon(i_execRoll);\r\n b_exec.setPreferredSize(new Dimension(80,60));\r\n \r\n b_jar.setBackground(NewCian);\r\n b_jar.setBorder(BorderFactory.createEmptyBorder());\r\n b_jar.setRolloverIcon(i_jarRoll); \r\n b_jar.setPreferredSize(new Dimension(80,60));\r\n \r\n b_deleteFile.setBackground(NewCian);\r\n b_deleteFile.setBorder(BorderFactory.createEmptyBorder());\r\n b_deleteFile.setRolloverIcon(i_deleteFileRoll); \r\n b_deleteFile.setPreferredSize(new Dimension(80,60));\r\n \r\n b_display.setBackground(NewCian);\r\n b_display.setBorder(BorderFactory.createEmptyBorder());\r\n b_display.setRolloverIcon(i_displayRoll);\r\n b_display.setPreferredSize(new Dimension(80,60));\r\n \r\n b_search.setBackground(NewCian);\r\n b_search.setBorder(BorderFactory.createEmptyBorder());\r\n b_search.setRolloverIcon(i_searchRoll);\r\n \r\n b_deleteNotes.setBackground(NewCian);\r\n b_deleteNotes.setBorder(BorderFactory.createEmptyBorder());\r\n b_deleteNotes.setRolloverIcon(i_deleteRoll);\r\n \r\n //layout \r\n p12.add(searchTitle);\r\n p13.add(search);\r\n p13.add(b_search);\r\n p11.add(p12,BorderLayout.NORTH);\r\n p11.add(p13,BorderLayout.CENTER);\r\n strumenti.add(p11);\r\n p1.add(p3);\r\n p2.add(p7);\r\n p2.add(p9);\r\n p1.add(p2);\r\n Window.add(strumenti,BorderLayout.NORTH);\r\n Window.add(p1,BorderLayout.CENTER);\r\n Window.add(credits,BorderLayout.SOUTH);\r\n //layout->grafica\r\n p1.setBackground(NewCian);\r\n p2.setBackground(NewCian);\r\n p3.setBackground(NewCian);\r\n p4.setBackground(NewCian);\r\n p7.setBackground(NewCian);\r\n p8.setBackground(NewCian);\r\n p9.setBackground(NewCian);\r\n p10.setBackground(NewCian);\r\n p11.setBackground(NewCian);\r\n p12.setBackground(NewCian);\r\n p13.setBackground(NewCian);\r\n \r\n changeLanguage();\r\n MJPDisplay();\r\n }\r\n \r\n //carica impostazioni\r\n public void LoadSettings(boolean LoadAll){\r\n if(osnameInt==0) \r\n CsetFile=new CercaFile(".","settings.mjp",false);\r\n else\r\n CsetFile=new CercaFile("","settings.mjp",false);\r\n \r\n if(CsetFile.getResult()==false){\r\n if(osnameInt==0)\r\n new SaveFile("settings.mjp","Italiano\\ntrue\\n190\\n51\\n850\\n"+\r\n "600\\nnull\\nnull\\nnull\\nnull\\n");\r\n else\r\n new SaveFile("","settings.mjp","Italiano\\ntrue\\n190\\n51\\n"+\r\n "850\\n600\\nnull\\nnull\\nnull\\nnull\\n");\r\n setFile=new ReadFile("","settings.mjp");\r\n settings= Arrays.copyOf(setFile.getReadingFile("\\n"), 10);}\r\n else{\r\n setFile=new ReadFile("settings.mjp");\r\n settings= Arrays.copyOf(setFile.getReadingFile("\\n"), 10);\r\n }\r\n if(LoadAll==true){\r\n language=new ReadFile("language/",settings[0]+".lng");\r\n display=Boolean.parseBoolean(settings[1]);\r\n setLanguage= Arrays.copyOf(language.getReadingFile("\\n"), 33);\r\n changeLanguage();\r\n }\r\n locX=Integer.parseInt(settings[2]);\r\n locY=Integer.parseInt(settings[3]);\r\n sizeX=Integer.parseInt(settings[4]);\r\n sizeY=Integer.parseInt(settings[5]);\r\n try {System.setErr(new PrintStream(new FileOutputStream("SystemError.mjp")));} \r\n catch (FileNotFoundException ex){ex.printStackTrace();} \r\n Window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n }\r\n \r\n \r\n //carica e cambia lingua\r\n public void changeLanguage(){\r\n TitledBorder border;\r\n border=BorderFactory.createTitledBorder("");\r\n \r\n mi_new.setText(setLanguage[1]); //nuovo\r\n mi_newApp.setText(setLanguage[22]); //nuovo applet\r\n mi_open.setText(setLanguage[2]); //apri\r\n mi_close.setText(setLanguage[3]); //chiudi\r\n mi_exit.setText(setLanguage[4]); //esci\r\n m_options.setText(setLanguage[5]); //opzioni\r\n mi_language.setText(setLanguage[6]); //lingua\r\n codeTitle.setText(setLanguage[13]); //titolo codice\r\n searchTitle.setText(setLanguage[14]); //titolo cerca\r\n reportTitle.setText(setLanguage[15]); //titolo errori\r\n \r\n //salva con\r\n border=BorderFactory.createTitledBorder(setLanguage[26]); \r\n b_saveAs.setBorder(border);\r\n //salva\r\n border=BorderFactory.createTitledBorder(setLanguage[12]);\r\n b_save.setBorder(border);\r\n //compila\r\n border=BorderFactory.createTitledBorder(setLanguage[27]);\r\n b_compile.setBorder(border);\r\n //esegui\r\n border=BorderFactory.createTitledBorder(setLanguage[28]);\r\n b_exec.setBorder(border);\r\n //jarizza\r\n border=BorderFactory.createTitledBorder(setLanguage[29]);\r\n b_jar.setBorder(border);\r\n //cancella\r\n border=BorderFactory.createTitledBorder(setLanguage[30]);\r\n b_deleteFile.setBorder(border);\r\n //cambia\r\n border=BorderFactory.createTitledBorder(setLanguage[31]);\r\n b_display.setBorder(border);\r\n } \r\n \r\n //cambio visualizzazione\r\n public void MJPDisplay(){\r\n if(display==true)\r\n fullWin();\r\n else\r\n minWin();\r\n display=!display;\r\n Window.setTitle("Make a Java Project 1.0");\r\n Window.setBackground(Color.white);\r\n Window.setIconImage(logo);\r\n }\r\n\r\n //finestra minimizzata\r\n public void minWin(){\r\n Window.setLocation(locX,locY);\r\n Window.setSize(1000,150);\r\n Window.setResizable(false);\r\n Window.setVisible(true);\r\n visible=true;\r\n b_display.setIcon(i_display2);\r\n if(act==true){\r\n new SaveFile(codePathFile,codeTitleFile,code.getText());\r\n b_compile.setEnabled(true);\r\n b_save.setEnabled(false);\r\n }\r\n }\r\n \r\n //finestra piena\r\n public void fullWin(){\r\n Window.setLocation(locX,locY);\r\n Window.setSize(sizeX,sizeY);\r\n Window.setResizable(true);\r\n Window.setVisible(true);\r\n visible=true;\r\n b_display.setIcon(i_display1);\r\n if(act==true)\r\n openFile();\r\n }\r\n \r\n //salva impostazioni\r\n public void SaveSettings(boolean SaveAll){\r\n if(SaveAll==true){\r\n sub=""+!display;\r\n settings[1]=sub;\r\n }\r\n sub=""+((int)Window.getLocation().getX());\r\n settings[2]=sub;\r\n sub=""+((int)Window.getLocation().getY());\r\n settings[3]=sub;\r\n if(!display==true){\r\n sub=""+((int)Window.getWidth());\r\n settings[4]=sub;\r\n sub=""+((int)Window.getHeight());\r\n settings[5]=sub;\r\n }\r\n sub="";\r\n for(int i=0;i<10;i++)\r\n sub=sub+settings[i]+"\\n";\r\n if(osnameInt==0) \r\n new SaveFile("settings.mjp",sub);\r\n else\r\n new SaveFile("","settings.mjp",sub);\r\n }\r\n\r\n //compila\r\n public int MJPCompile(String file){\r\n int result;\r\n try{\r\n JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();\r\n result = compiler.run(null, null, null,file);\r\n }\r\n catch(Exception ex){result=-1;}\r\n return result;\r\n }\r\n \r\n //esegui\r\n public void MJPExec(String Path, String file, boolean set){\r\n //windows\r\n if(osnameInt==0){\r\n try{ \r\n int lenFile=file.length();\r\n String sub=file.substring(0,lenFile-5);\r\n if(set==false){\r\n String outCode="@echo off\\ncd "+Path+"\\njava "+sub+"\\necho.\\necho.\\npause\\nexit";\r\n new SaveFile("SystemOut.bat",outCode);\r\n Process process = Runtime.getRuntime().exec("cmd /c start SystemOut.bat");\r\n }\r\n else{\r\n String outCode="@echo off\\ncd "+Path+"\\necho "+setLanguage[23]+\r\n "\\nappletviewer "+sub+".html\\necho.\\necho.\\npause\\nexit";\r\n new SaveFile("SystemOut.bat",outCode);\r\n Process process = Runtime.getRuntime().exec("cmd /c start SystemOut.bat");\r\n }\r\n }\r\n catch (IOException e){report.setText(setLanguage[24]);}\r\n }\r\n //altri S.O.\r\n else\r\n report.setText(setLanguage[32]);\r\n }\r\n \r\n //apertura file\r\n public void openFile(){\r\n String subNotes=codeTitleFile.substring(0,codeTitleFile.length()-5);\r\n notesTitleFile="notes\\\\"+subNotes+".txt";\r\n ReadFile rfCode=new ReadFile(codePathFile,codeTitleFile);\r\n act=true;\r\n b_compile.setEnabled(true);\r\n b_exec.setEnabled(true);\r\n b_jar.setEnabled(true);\r\n b_deleteFile.setEnabled(true);\r\n codeTitle.setText(codeTitleFile);\r\n code.setText(rfCode.getStringToReadingFile());\r\n ReadFile rfNotes=new ReadFile(notesTitleFile);\r\n notes.setText(rfNotes.getStringToReadingFile());\r\n try {System.setErr(new PrintStream(new FileOutputStream("SystemError.mjp")));} \r\n catch (FileNotFoundException ex){ex.printStackTrace();}\r\n }\r\n \r\n //chiusura file\r\n public void chiudiFile(){\r\n code.setText("");\r\n notes.setText("");\r\n report.setText("");\r\n codePathFile="";\r\n codeTitleFile="file.error";\r\n codeTitle.setText(setLanguage[13]);\r\n notesTitleFile="";\r\n act=false;\r\n b_save.setEnabled(false);\r\n b_compile.setEnabled(false);\r\n b_exec.setEnabled(false);\r\n b_jar.setEnabled(false);\r\n b_deleteFile.setEnabled(false);\r\n mi_close.setEnabled(false);\r\n } \r\n \r\n public void chiudiMJP(){\r\n ConfirmD exitC=new ConfirmD(setLanguage[25],100,100);\r\n if(exitC.getResult()==true){\r\n SaveSettings(true);\r\n System.exit(0);\r\n }\r\n }\r\n \r\n //****************** azioni menu *******************************/\r\n\r\n //azione Menu->File->Nuovo\r\n public class Ami_new implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n NewJFileD njf=new NewJFileD("",false);\r\n codePathFile=njf.getPathOpenFile();\r\n codeTitleFile=njf.getTitleOpenFile();\r\n if(njf.getIsCreated()==true){\r\n setAp=false;\r\n mi_close.setEnabled(true);\r\n openFile();\r\n }\r\n }\r\n }\r\n \r\n //azione Menu->File->Nuovo Applet\r\n public class Ami_newApp implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n NewJFileD njf=new NewJFileD("",false);\r\n codePathFile=njf.getPathOpenFile();\r\n codeTitleFile=njf.getTitleOpenFile();\r\n if(njf.getIsCreated()==true){\r\n String sub=codeTitleFile.substring(0,codeTitleFile.length()-5);\r\n String codeHtml="<html><head><title>"+sub+\r\n "</title></head><body>"+"<APPLET code="+sub+".class "+\r\n "width=385 height=100></APPLET></body></html>";\r\n new SaveFile(codePathFile,sub+".html",codeHtml);\r\n setAp=true;\r\n mi_close.setEnabled(true);\r\n openFile();\r\n }\r\n }\r\n }\r\n \r\n //azione Menu->File->Apri\r\n public class Ami_open implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n OpenJFileD ajf=new OpenJFileD("java");\r\n codePathFile=ajf.getPathOpenFile();\r\n codeTitleFile=ajf.getTitleOpenFile();\r\n String sub=codeTitleFile.substring(0,codeTitleFile.length()-5);\r\n if(ajf.getIsOpened()==true){\r\n openFile();\r\n mi_close.setEnabled(true);\r\n }\r\n CercaFile isApp=new CercaFile(codePathFile,sub+".html",false);\r\n if(isApp.getResult()==true)\r\n setAp=true;\r\n else\r\n setAp=false;\r\n }\r\n }\r\n \r\n //azione Menu->File->Chiudi\r\n public class Ami_close implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n chiudiFile();\r\n }\r\n }\r\n \r\n //azione Menu->File->Esci\r\n public class Ami_exit implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n chiudiMJP();\r\n }\r\n }\r\n \r\n //azione Menu->Opzioni->Lingua\r\n public class Ami_language implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n LanguageD languageD=new LanguageD();\r\n sub=languageD.setLanguage();\r\n settings[0]=sub;\r\n SaveSettings(true);\r\n LoadSettings(true);\r\n }\r\n }\r\n\r\n //**************** azioni barra strumenti ************/\r\n \r\n //azione salva con nome\r\n public class Ab_saveAs implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n NewJFileD njf=new NewJFileD(code.getText(),false);\r\n codeTitleFile=njf.getTitleOpenFile();\r\n codePathFile=njf.getPathOpenFile();\r\n if(njf.getIsCreated()==true){\r\n codeTitle.setText(codeTitleFile);\r\n b_compile.setEnabled(true);\r\n b_exec.setEnabled(true);\r\n b_jar.setEnabled(true);\r\n b_deleteFile.setEnabled(true);\r\n mi_close.setEnabled(true);\r\n act=true;\r\n }\r\n }\r\n }\r\n \r\n //azione salva\r\n public class Ab_save implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n new SaveFile(codePathFile,codeTitleFile,code.getText());\r\n b_compile.setEnabled(true);\r\n b_save.setEnabled(false);\r\n }\r\n } \r\n \r\n //azione compila\r\n public class Ab_compile implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n int result;\r\n if(osnameInt==0)\r\n result=MJPCompile(codePathFile+"\\\\"+codeTitleFile);\r\n else\r\n result=MJPCompile(codePathFile+""+codeTitleFile);\r\n \r\n if(result==0)\r\n report.setText(setLanguage[20]);\r\n else if(result==-1)\r\n report.setText(setLanguage[21]);\r\n else{\r\n ReadFile ts=new ReadFile("SystemError.mjp");\r\n report.setText(ts.getStringToReadingFile());\r\n }\r\n }\r\n }\r\n \r\n //azione esegui\r\n public class Ab_exec implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n MJPExec(codePathFile,codeTitleFile,setAp);\r\n }\r\n }\r\n \r\n //azione crea file jar\r\n public class Ab_jar implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n new NewJarFileD();\r\n }\r\n }\r\n \r\n //azione cancella\r\n public class Ab_deleteFile implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n ConfirmD conf=new ConfirmD(setLanguage[30]+" "+codeTitleFile+" ?",(locX+100),(locY+100));\r\n if(conf.getResult()==true){\r\n String sub=codeTitleFile.substring(0,codeTitleFile.length()-5);\r\n File delJava=new File(codePathFile+"\\\\"+codeTitleFile);\r\n File delClass=new File(codePathFile+"\\\\"+sub+".class");\r\n File delHtml=new File(codePathFile+"\\\\"+sub+".html");\r\n if(delJava.exists())\r\n delJava.delete();\r\n if(delClass.exists())\r\n delClass.delete();\r\n if(delHtml.exists())\r\n delHtml.delete();\r\n chiudiFile();\r\n }\r\n }\r\n }\r\n\r\n //azione visualizzazione\r\n public class Ab_display implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n SaveSettings(false);\r\n LoadSettings(false);\r\n MJPDisplay();\r\n }\r\n }\r\n \r\n //azione cerca\r\n public class Ab_search implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n new Browser(search.getText());\r\n }\r\n }\r\n \r\n //************* azioni oggetti ***************/\r\n \r\n //abilita pulsanti quando si scrive il codice\r\n public class A_code implements KeyListener{\r\n public void keyPressed(KeyEvent k){\r\n if(act==true){\r\n b_compile.setEnabled(false);\r\n b_save.setEnabled(true);\r\n }\r\n }\r\n public void keyReleased(KeyEvent k){}\r\n public void keyTyped(KeyEvent k){}\r\n } \r\n \r\n //salvataggio automatico notes\r\n public class A_save_notes implements KeyListener{\r\n public void keyPressed(KeyEvent k){}\r\n public void keyTyped(KeyEvent k){}\r\n public void keyReleased(KeyEvent k){\r\n if(act==true){\r\n File notesDir=new File("notes");\r\n if(notesDir.isDirectory()==false)\r\n new File("notes").mkdir(); \r\n int lenTitle=codeTitleFile.length();\r\n String sub=codeTitleFile.substring(0,lenTitle-5);\r\n String notesTitleFile="notes\\\\"+sub+".txt";\r\n SaveFile notesFile;\r\n if(osnameInt==0)\r\n notesFile=new SaveFile(notesTitleFile,notes.getText());\r\n else\r\n notesFile=new SaveFile("",notesTitleFile,notes.getText()); \r\n }\r\n }\r\n }\r\n \r\n //cancella notes\r\n public class Ab_deleteNotes implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n notes.setText("");\r\n File delNotes=new File(notesTitleFile);\r\n if(delNotes.exists())\r\n delNotes.delete();\r\n }\r\n }\r\n \r\n //impostazioni di chiusura\r\n class WindowReturn implements WindowListener{\r\n public void windowOpened(WindowEvent e){}\r\n public void windowDeactivated(WindowEvent e){}\r\n public void windowDeiconified(WindowEvent e){}\r\n public void windowIconified(WindowEvent e){}\r\n public void windowActivated(WindowEvent e){}\r\n public void windowClosing(WindowEvent e){\r\n chiudiMJP();\r\n }\r\n public void windowClosed(WindowEvent e){}\r\n }\r\n \r\n}\r\n\r\n</pre>\r\n<p class=\"rtecenter\" style=\"\"><a href=\"/sites/default/files/images/20122307231442.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307231442.png\" style=\"height: 393px; width: 650px; \" /></a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/114\"><<Make Java Projects - Le Classi (parte 3)</a></p>\r\n<p class=\"rteright\" style=\"\"><a href=\"http://students.uniparthenope.it/?q=node/119\">Make java Projects - Tutorial>></a></p>\r\n<p> </p>\r\n<p class=\"rtecenter\" style=\"\"><em><strong><span style=\"font-size:16px;\"><a href=\"http://students.uniparthenope.it/?q=node/103\"><span style=\"color:#0000cd;\">1</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color:#0000cd;\">2</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color:#0000cd;\">3</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color:#0000cd;\">4</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/114\"><span style=\"color:#0000cd;\">5</span></a><span style=\"color:#0000cd;\"> -</span> <span style=\"color:#ff0000;\">6 </span><span style=\"color:#0000cd;\">- </span><a href=\"http://students.uniparthenope.it/?q=node/119\"><span style=\"color:#0000cd;\">7</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></span></strong></em></p>\r\n<p><br />\r\n </p>\r\n','','full_html'),('node','blog',0,117,150,'und',0,'<p> </p>\r\n<h1>\r\n <strong>How It's made - Ricerca di libri e riviste nella Biblioteca di Ateneo.</strong></h1>\r\n<p>Utilizzando il framework FRAPI (di cui si allega presentazione) implementare una API rest di interfaccia al portale della biblioteca di ateneo: <a href=\"http://192.167.9.94:8991/\">http://192.167.9.94:8991</a> Fornendo metodi per la ricerca di volumi e riviste.</p>\r\n<hr />\r\n<h2>\r\n Let's start.</h2>\r\n<hr />\r\n<h3>\r\n First Step:</h3>\r\n<p>Per recuperare tutti i Record che servono, bisogna analizzare scrupolosamente il portale.</p>\r\n<p>Questo è il più importante passo di tutta la discussione. Infatti, per creare l’API in modo che non dia problemi, è importante sapere come funziona ciò che serve. Quindi, armato di CURL e terminale, si analizza, linea dopo linea, ogni tag e ogni commento.</p>\r\n<p> </p>\r\n<h3>\r\n Second Step:</h3>\r\n<p>Dopo aver analizzato più e più volte il sorgente, ho notato che il portale setta un <strong>cookie </strong>che memorizza tutte le ricerche effettuate e tutti i record visitati, ricoprendo un ruolo di “<u>history</u>”.</p>\r\n<p>Questo cookie costituisce parte dell’URL insieme alle variabili <strong>request</strong>, la stringa di ricerca, e <strong>find_code</strong>, il campo di ricerca, passate in GET dal portale. Con un’apposita regex e la funzione PHP <em>preg_match_all()</em> è possibile estrarre il cookie, in modo tale da ricostruire il link, completo di request e find_code.</p>\r\n<p>Dunque, adesso è possibile eseguire la nostra ricerca.</p>\r\n<p> </p>\r\n<h3>\r\n Third Step:</h3>\r\n<p>Il portale restituisce, in base al numero di record, diversi output.</p>\r\n<p>Se i record <strong>sono minori </strong>o <strong>uguali</strong> di 5 record, il portale restituisce la scheda completa dei record; mentre, nel caso in cui i record sono <strong>maggiori</strong> di 5, il portale restituisce una tabella contentente 20 record per pagina e informazioni <u>limitate</u>. Quindi per ottenere le informazioni che servono, bisogna visitare il link del record, in modo di avere la scheda completa. </p>\r\n<p>Quindi, con la funzione strstr() controllo se CURL mi ha restituito la scheda completa del record oppure la tabella dei record.</p>\r\n<p>Nel primo caso, recupero tutte le righe della tabella, memorizzandole in un array associativo; nel secondo caso, recupero tutti i record e, in seguito, viene visitato il link per recuperare i campi della scheda completa che vengono memorizzati in un array associativo.</p>\r\n','<p> </p>\r\n<h1>\r\n <strong>How It's made - Ricerca di libri e riviste nella Biblioteca di Ateneo.</strong></h1>\r\n<p>Utilizzando il framework FRAPI implementare una API rest di interfaccia al portale della biblioteca di ateneo: <a href=\"http://192.167.9.94:8991/\">http://192.167.9.94:8991</a> fornendo metodi per la ricerca di volumi e riviste.</p>\r\n','full_html'),('node','blog',0,118,151,'und',0,'<p> </p>\r\n<p><img alt=\"\" src=\"http://i48.tinypic.com/2zgruwh.png\" /></p>\r\n<p><img alt=\"\" src=\"http://i48.tinypic.com/2efqel0.png\" /></p>\r\n<p class=\"rteright\" style=\"\"><em>a cura di Emilio Salomone e Flavio Tulino</em></p>\r\n<p> </p>\r\n<p> </p>\r\n<p>The italian job, si prefigge lo scopo di aiutare gli utenti e le aziende nella ricerca di occupazione per i primi e forza lavoro per i secondi.</p>\r\n<p>Tutto si basa su una semplice interfaccia web, che mette al corrente ogni utente dei nuovi ‘’annunci’’, che gli riguardano, presenti sulla piattaforma.</p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i50.tinypic.com/1zdrixi.jpg\" style=\"width: 200px; height: 300px; float: left; \" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<h3 class=\"rteindent4\">\r\n Questa è l’home page del nostro sito web, qui si può effettuare il login o , se non registrati, iscriversi, o come utente o come azienda</h3>\r\n<h3>\r\n </h3>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i49.tinypic.com/10cw705.jpg\" style=\"width: 500px; height: 200px; float: left; \" /></p>\r\n<h3>\r\n </h3>\r\n<h3>\r\n Qui di seguito è rappresentata l’home page a cui accede un utente, con la propria foto profilo e l’elenco degli annunci che riguardano i propri ambiti, con la possibilità di prenotarsi.</h3>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<h3>\r\n Qui di seguito è rappresentata la videoconferenza tra utente e azienda per il ‘’colloquio’’ preliminare via cam.</h3>\r\n<p><img alt=\"\" src=\"http://i49.tinypic.com/15n5ef5.jpg\" /></p>\r\n<p> </p>\r\n<h3>\r\n <strong>Conclusioni</strong></h3>\r\n<p> </p>\r\n<p>In conclusione, quando l’ azienda inizia la conferenza, gli utenti prenotati per l’ inserzione possono parteciparvi e sostenere un colloquio preliminare.<br />\r\n <br />\r\n Se l’ utente risponderà ai canoni richiesti dall’ azienda, sarà poi contattato per sostenere il vero e proprio colloquio.</p>\r\n<p><br />\r\n Ma prova tu stesso! Clicca sul logo e iscrivit a The Italian Job<a href=\"http://students.uniparthenope.it/~0124000317/italianjob/\" target=\"_blank\"><img alt=\"\" src=\"http://i48.tinypic.com/2zgruwh.png\" style=\"height: 79px; width: 100px; float: left; \" /></a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><u>Il sito è stato sviluppato con l' ausilio di Drupal e di OpenTok per la gestione delle videoconferenze. </u></p>\r\n<p><a href=\"http://drupal.org/\" target=\"_blank\">Drupal</a> - sito ufficiale</p>\r\n<p><a href=\"http://www.tokbox.com/opentok/api\" target=\"_blank\">OpenTok</a> - sito ufficiale </p>\r\n<p>Leggi anche il nostro tutorial su <a href=\"http://students.uniparthenope.it/?q=node/74\" target=\"_blank\">OpenTok</a>!</p>\r\n','','full_html'),('node','blog',0,119,152,'und',0,'<p>Per poter utilizzare <strong>MJP</strong>, bisogna soddisfare alcuni requisiti:</p>\r\n<ol style=\"\">\r\n <li>\r\n installare <em>JDK </em>con versione 1.6 o 1.7 e configurarne le variabili d'ambiente;</li>\r\n <li>\r\n Conoscere almeno le nozioni del linguaggio java.</li>\r\n</ol>\r\n<p>Per quanto riguarda l'utilizzo, dovrebbe risultare semplice già dal primo avvio, ma facciamo comunque un esempio.</p>\r\n<p class=\"rtecenter\" style=\"\"><a href=\"/sites/default/files/images/20122407184242.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407184242.png\" /></a><a href=\"/sites/default/files/images/20122407184244.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407184244.png\" /></a><a href=\"/sites/default/files/images/20122407184247.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407184247.png\" /></a><a href=\"/sites/default/files/images/20122407184250.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407184250.png\" /></a><a href=\"/sites/default/files/images/20122407184253.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407184253.png\" /></a><a href=\"/sites/default/files/images/20122407184256.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407184256.png\" /></a><a href=\"/sites/default/files/images/20122407185123.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407185123.png\" /></a></p>\r\n<p class=\"rtecenter\" style=\"\">Spero che il mio lavoro possa esservi utile in qualche modo. Alla prossima!!! </p>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/116\"><<Make Java Projects - Le Classi (parte 4)</a></p>\r\n<p class=\"rteright\"><a href=\"http://students.uniparthenope.it/?q=node/140\">Make Java Project - Presentazione e File>></a></p>\r\n<p class=\"rtecenter\" style=\"\"><strong><span style=\"font-size:16px;\"><a href=\"http://students.uniparthenope.it/?q=node/103\"><span style=\"color:#0000cd;\">1</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color:#0000cd;\">2</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color:#0000cd;\">3</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color:#0000cd;\">4</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/114\"><span style=\"color:#0000cd;\">5</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color:#0000cd;\">6</span></a><span style=\"color:#0000cd;\"> -</span> <span style=\"color: rgb(255, 0, 0); \">7 </span><span style=\"color:#0000cd;\">- </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></span></strong></p>\r\n<p class=\"rtecenter\"> </p>\r\n','','full_html'),('node','blog',0,120,153,'und',0,'<p>Classe Finestra :</p>\r\n<br />\r\n<br />\r\n<pre>\r\npackage rapidroll;\r\n\r\n\r\nimport javax.swing.*;\r\n\r\nimport java.awt.event.ActionEvent;\r\n\r\nimport java.awt.event.ActionListener;\r\n\r\nimport java.awt.Toolkit;\r\n\r\nimport java.awt.event.KeyEvent;\r\n\r\nimport java.awt.event.KeyListener;\r\n\r\nimport java.awt.Image;\r\n\r\nimport java.awt.BorderLayout;\r\n\r\nimport java.lang.Math;\r\n\r\n\r\npublic class Finestra extends JFrame{\r\n\r\n\r\n Pannello p=new Pannello();\r\n\r\n Label la=new Label();\r\n\r\n Timer timersos,timerrefresh,timersale,timerscende,timerrefresh2,timersale2;\r\n\r\n Timer timerPalla;\r\n\r\n public Finestra(){\r\n\r\n super("Rapid Roll!");\r\n\r\n \r\n\r\n Image Immagine;\r\n\r\n setSize(500,1000);\r\n\r\n Immagine = Toolkit.getDefaultToolkit().getImage("myicons\\\\rapid.png");\r\n\r\n this.setIconImage(Immagine);\r\n\r\n this.setVisible(true);\r\n\r\n \r\n\r\n setResizable(false);\r\n\r\n setVisible(true);\r\n\r\n setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n\r\n \r\n\r\n add(p);\r\n\r\n timersos=new Timer(3000,new ListenerTimerSos());\r\n\r\n timersale=new Timer(7,new ListenerTimerSale());\r\n\r\n timersale2=new Timer(5,new ListenerTimerSale2());\r\n\r\n timerscende=new Timer(3,new ListenerTimerScende());\r\n\r\n timerrefresh2=new Timer(68,new ListenerTimerRefreshsos2());\r\n\r\n timerrefresh=new Timer(89,new ListenerTimerRefreshsos());\r\n\r\n timerrefresh.setInitialDelay(4000);\r\n\r\n timerscende.setInitialDelay(4000);\r\n\r\n timersos.start();\r\n\r\n timerscende.start();\r\n\r\n timerrefresh.start();\r\n\r\n timerrefresh2.setInitialDelay(18000);\r\n\r\n timersale2.setInitialDelay(18000);\r\n\r\n timersale2.start();\r\n\r\n timerrefresh2.start();\r\n\r\n timersale.start();\r\n\r\n this.addKeyListener(new listenermov());\r\n\r\n }\r\n\r\n\r\n\r\npublic class ListenerTimerSos implements ActionListener{\r\n\r\n\r\n \r\n\r\n public void actionPerformed(ActionEvent ae) {\r\n\r\n p.la.sostegno.compari();\r\n\r\n p.la.repaint();\r\n\r\n if(p.la.sostegno.timing%4==0 && p.la.sostegno.timing>0) p.la.vite.compariVita(); \r\n\r\n p.la.io.vitapresa=false;\r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n\r\n\r\npublic class ListenerTimerScende implements ActionListener{\r\n\r\n public void actionPerformed(ActionEvent ae){\r\n\r\n \r\n\r\n if(p.la.io.down==true) p.la.io.scende();\r\n\r\n p.la.repaint();\r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n}\r\n\r\n\r\npublic class ListenerTimerSale implements ActionListener{ \r\n\r\n \r\n\r\n public void actionPerformed(ActionEvent ae){ \r\n\r\n \r\n\r\n if (p.la.io.down==false) p.la.io.sale();\r\n\r\n p.la.repaint();\r\n\r\n if(p.la.sostegno.timing==5) timersale.stop();\r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n}\r\n\r\n\r\npublic class ListenerTimerSale2 implements ActionListener{ \r\n\r\n \r\n\r\n public void actionPerformed(ActionEvent ae){ \r\n\r\n \r\n\r\n if (p.la.io.down==false) p.la.io.sale();\r\n\r\n p.la.repaint();\r\n\r\n p.la.repaint();\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n}\r\n\r\n public class ListenerTimerRefreshsos implements ActionListener{\r\n\r\n\r\n \r\n\r\n public void actionPerformed(ActionEvent ae) {\r\n\r\n p.la.sostegno.saleRect();\r\n\r\n p.la.repaint();\r\n\r\n if(p.la.sostegno.timing==5) timerrefresh.stop();\r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n public class ListenerTimerRefreshsos2 implements ActionListener{\r\n\r\n\r\n \r\n\r\n public void actionPerformed(ActionEvent ae) {\r\n\r\n p.la.sostegno.saleRect();\r\n\r\n p.la.repaint();\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\npublic class listenermov implements KeyListener{\r\n\r\n boolean destra=false,sinistra=false,giu=false,sinistra2=false,destra2=false;\r\n\r\n public void keyTyped(KeyEvent ke) {\r\n\r\n \r\n\r\n //non si puo' fare override di metodi , nel senso che keytyped non si puo' omettere e neanche keypressed e key released. Ce lo mettiamo ma è inutile\r\n\r\n }\r\n\r\n \r\n\r\n public void keyPressed(KeyEvent ke) { \r\n\r\n char c=ke.getKeyChar();\r\n\r\n if(c=='a') sinistra=true;\r\n\r\n if(c=='d') destra=true;\r\n\r\n \r\n\r\n\r\n if(sinistra==true){ p.la.io.muovesinistra(); p.la.repaint(); }\r\n\r\n if(destra==true){ p.la.io.muovedestra(); p.la.repaint(); } \r\n\r\n muro(); p.la.repaint();\r\n\r\n muro2(); p.la.repaint();\r\n\r\n \r\n\r\n}\r\n\r\n public void keyReleased(KeyEvent ke){\r\n\r\n char c=ke.getKeyChar();\r\n\r\n if (c=='a') sinistra=false;\r\n\r\n if (c=='d') destra=false;\r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n\r\n \r\n\r\n public void muro(){\r\n\r\n \r\n\r\n if(p.la.io.xLinea<=0) sinistra2=true;\r\n\r\n if(sinistra2) {\r\n\r\n p.la.io.muovedestra();\r\n\r\n sinistra2=false;\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n\r\npublic void muro2(){\r\n\r\n \r\n\r\n if(p.la.io.xLinea2>=p.la.getWidth()) destra2=true;\r\n\r\n if(destra2){ \r\n\r\n p.la.io.muovesinistra();\r\n\r\n destra2=false;\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\n\r\n\r\n}</pre>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Classe Label:<br />\r\n <br />\r\n <br />\r\n <pre>\r\npackage rapidroll;\r\n\r\n\r\nimport java.awt.*;\r\n\r\nimport javax.swing.*;\r\n\r\nimport java.net.*;\r\n\r\nimport java.util.*;\r\n\r\nimport java.awt.Transparency;\r\n\r\n\r\npublic class Label extends JLabel{\r\n\r\n public Sfera io;\r\n\r\n public Vita vite;\r\n\r\n public int punteggio;\r\n\r\n public int j=0;\r\n\r\n public int vitax,vitay;\r\n\r\n public int life;\r\n\r\n public Rect sostegno;\r\n\r\n \r\n\r\n public Label(){\r\n\r\n io=new Sfera(this);\r\n\r\n sostegno=new Rect(this);\r\n\r\n vite=new Vita(this);\r\n\r\n life=0;\r\n\r\n punteggio=0;\r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n public Dimension getPreferredSize(){ \r\n\r\n return new Dimension(500,1000);\r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n protected void paintComponent(Graphics g){\r\n\r\n super.paintComponent(g);\r\n\r\n \r\n\r\n \r\n\r\n\r\n this.setOpaque(true);\r\n\r\n this.setBackground(Color.LIGHT_GRAY);\r\n\r\n \r\n\r\n\r\n \r\n\r\n g.setColor(Color.RED);\r\n\r\n g.drawOval(io.xCord,io.yCord,30,30); //coordinate x e y (200 e 200) dell'estremita' in alto a sinistra del cerchio (le coordinate che dovrai far muovere)\r\n\r\n g.fillOval(io.xCord,io.yCord,30,30);\r\n\r\n g.setColor(new Color(0,0,0,0));\r\n\r\n \r\n\r\n g.drawLine(io.xLinea,io.yLinea,io.xLinea2,io.yLinea2);\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n for(j=0;j<500;j=j+3){\r\n\r\n g.setColor(Color.BLACK);\r\n\r\n g.drawLine(5+j,118,5+j,140);\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n g.setColor(Color.BLUE);\r\n\r\n g.drawRect(0,140,20,741);\r\n\r\n g.fillRect(0, 140, 20, 741);\r\n\r\n \r\n\r\n g.setColor(Color.BLUE);\r\n\r\n g.drawRect(480,140,20,741);\r\n\r\n g.fillRect(480, 140, 20, 741);\r\n\r\n \r\n\r\n \r\n\r\n for(int i=0;i<sostegno.arrayRect.length;i++){\r\n\r\n if(sostegno.arrayRect[i] != null){\r\n\r\n g.setColor(Color.blue);\r\n\r\n g.drawRoundRect(sostegno.arrayRect[i].xRect, sostegno.arrayRect[i].yRect, sostegno.width, sostegno.height, sostegno.arcWidth, sostegno.arcHeight);\r\n\r\n g.fillRoundRect(sostegno.arrayRect[i].xRect, sostegno.arrayRect[i].yRect, sostegno.width, sostegno.height, sostegno.arcWidth, sostegno.arcHeight);\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n //Seguono le vite extra che appaiono sui rettangoli : se l'utente non riesce a prendere il cuore in tempo , esso sparisce (si tratta di un paio di secondi)\r\n\r\n if(sostegno.arrayRect[0]!=null && sostegno.timing%4==0 && sostegno.timing>0 && io.vitapresa==false){\r\n\r\n g.setColor(Color.RED);\r\n\r\n g.drawOval(sostegno.arrayRect[0].xRect+35,sostegno.arrayRect[0].yRect-20,15,15);\r\n\r\n g.fillOval(sostegno.arrayRect[0].xRect+35,sostegno.arrayRect[0].yRect-20,15,15);\r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n //seguono i disegni delle vite\r\n\r\n \r\n\r\n for(int i=0;i<io.sferalife;i=i+20){\r\n\r\n g.setColor(Color.RED);\r\n\r\n g.drawOval(445+life,900,10,10); \r\n\r\n g.fillOval(445+life,900,10,10);\r\n\r\n life=life+20;\r\n\r\n if(life==io.sferalife) life=0;\r\n\r\n if(io.sferalife>60) io.sferalife=60; //altrimenti mi disegnerebbe pure le palline e\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n g.setColor(Color.BLUE);\r\n\r\n g.drawString("VITE RIMASTE ", 360, 910);\r\n\r\n \r\n\r\n g.setColor(Color.BLUE);\r\n\r\n g.drawString("SCORE "+punteggio ,10,910);\r\n\r\n \r\n\r\n if(io.sferalife==0) \r\n\r\n {\r\n\r\n \r\n\r\n g.setColor(Color.WHITE);\r\n\r\n g.drawRect(0, 0, 500, 1000);\r\n\r\n g.fillRect(0,0,500,1000);\r\n\r\n g.setColor(Color.BLACK); \r\n\r\n g.drawString("HAI PERSO !!!",120,470);\r\n\r\n g.drawString("HAI TOTALIZZATO "+punteggio+" PUNTI!",120,500);\r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n}</pre>\r\n <div>\r\n </div>\r\n</div>\r\n<p>Classe Pannello:</p>\r\n<br />\r\n<br />\r\n<br />\r\n<pre>\r\npackage rapidroll;\r\n\r\nimport java.awt.*;\r\n\r\nimport javax.swing.*;\r\n\r\nimport java.util.*;\r\n\r\n\r\npublic class Pannello extends JPanel{\r\n\r\n public Dimension getPreferredSize(){\r\n\r\n return new Dimension(500,1000);\r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\nLabel la;\r\n\r\n\r\n\r\npublic Pannello(){\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n la=new Label(); \r\n\r\n add(la);\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n}\r\n\r\n\r\n\r\n}</pre>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Classe Sfera :<br />\r\n <br />\r\n <pre>\r\npackage rapidroll;\r\n\r\nimport javax.swing.*;\r\n\r\nimport java.awt.event.ActionEvent;\r\n\r\nimport java.awt.Color;\r\n\r\nimport java.awt.event.ActionListener;\r\n\r\nimport java.awt.Toolkit;\r\n\r\nimport java.awt.event.KeyEvent;\r\n\r\nimport java.awt.event.KeyListener;\r\n\r\nimport java.awt.Image;\r\n\r\nimport java.awt.BorderLayout;\r\n\r\nimport java.lang.Math;\r\n\r\n\r\npublic class Sfera {\r\n\r\n \r\n\r\n public int xCord;\r\n\r\n public int yCord;\r\n\r\n public int xLinea;\r\n\r\n public int yLinea;\r\n\r\n public boolean vitapresa;\r\n\r\n public int xLinea2;\r\n\r\n public int yLinea2;\r\n\r\n public int i,c,actual;\r\n\r\n public int control,actual2,sferalife;\r\n\r\n boolean down;\r\n\r\n public int g,f,cont1,cont2;\r\n\r\n Label lab;\r\n\r\n \r\n\r\n public Sfera(Label lab){ \r\n\r\n xCord=200;\r\n\r\n sferalife=60;\r\n\r\n i=0; actual2=0;\r\n\r\n vitapresa=false;\r\n\r\n c=0;\r\n\r\n control=0;\r\n\r\n this.lab=lab;\r\n\r\n yCord=300;\r\n\r\n g=0;\r\n\r\n actual=1;\r\n\r\n down=true;\r\n\r\n control=0;\r\n\r\n f=0;\r\n\r\n xLinea=xCord;\r\n\r\n yLinea=yCord+30;\r\n\r\n xLinea2=xCord+30;\r\n\r\n yLinea2=yCord+30;\r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n public void muovesinistra()\r\n\r\n {\r\n\r\n xCord-=25;\r\n\r\n xLinea-=25;\r\n\r\n xLinea2-=25;\r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n public void muovedestra()\r\n\r\n {\r\n\r\n xCord+=25; \r\n\r\n xLinea+=25;\r\n\r\n xLinea2+=25;\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n public void scende()\r\n\r\n {\r\n\r\n yCord+=1; \r\n\r\n yLinea+=1;\r\n\r\n yLinea2+=1;\r\n\r\n if(yCord>950)\r\n\r\n {\r\n\r\n xCord=200;\r\n\r\n yLinea=330;\r\n\r\n yCord=300;\r\n\r\n yLinea2=330;\r\n\r\n sferalife-=20;\r\n\r\n xLinea2=xCord+30;\r\n\r\n xLinea=200;\r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n public void sale()\r\n\r\n {\r\n\r\n yCord-=1;\r\n\r\n yLinea-=1;\r\n\r\n yLinea2-=1;\r\n\r\n \r\n\r\n if(yCord<135) { \r\n\r\n xCord=200;\r\n\r\n yLinea=330;\r\n\r\n yCord=300;\r\n\r\n yLinea2=330;\r\n\r\n xLinea2=xCord+30;\r\n\r\n xLinea=200;\r\n\r\n sferalife-=20;\r\n\r\n down=true;\r\n\r\n }\r\n\r\n \r\n\r\n if(xLinea<lab.sostegno.arrayRect[lab.sostegno.actualrect].xRect || xLinea>lab.sostegno.arrayRect[lab.sostegno.actualrect].xRect+lab.sostegno.width && down==false)\r\n\r\n down=true;\r\n\r\n \r\n\r\n if(xLinea-lab.sostegno.arrayRect[0].xRect<25 && lab.sostegno.arrayRect[0].yRect-yLinea<30 && down==false && lab.sostegno.timing%4==0 && lab.sostegno.timing>0 && vitapresa==false){\r\n\r\n sferalife+=20;\r\n\r\n vitapresa=true;\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n\r\n\r\n \r\n\r\n \r\n\r\n }</pre>\r\n <div>\r\n </div>\r\n</div>\r\n<p>Classe Rect:</p>\r\n<br />\r\n<br />\r\n<br />\r\n<br />\r\n<pre>\r\npackage rapidroll;\r\n\r\nimport javax.swing.*;\r\n\r\nimport java.awt.Color;\r\n\r\nimport java.util.*;\r\n\r\n\r\npublic class Rect {\r\n\r\n \r\n\r\n sos[] arrayRect;\r\n\r\n Label mylab;\r\n\r\n public int width,height,arcWidth,arcHeight;\r\n\r\n public int timing,cont;\r\n\r\n public int actualrect;\r\n\r\n public Rect(Label mylab)\r\n\r\n {\r\n\r\n timing=-1;\r\n\r\n cont=0;\r\n\r\n width=120;\r\n\r\n height=20;\r\n\r\n arcWidth=20;\r\n\r\n arcHeight=15;\r\n\r\n actualrect=0;\r\n\r\n this.mylab=mylab;\r\n\r\n arrayRect=new sos[200]; \r\n\r\n }\r\n\r\n \r\n\r\npublic void saleRect()\r\n\r\n{\r\n\r\n int i;\r\n\r\n for(i=0;i<arrayRect.length;i++)\r\n\r\n if(arrayRect[i]!=null){\r\n\r\n arrayRect[i].yRect-=10;\r\n\r\n \r\n\r\n if(mylab.io.down==true){\r\n\r\n \r\n\r\n if(arrayRect[i].yRect-mylab.io.yLinea<13 && mylab.io.xLinea-arrayRect[i].xRect>-5 && mylab.io.xLinea-arrayRect[i].xRect<120 && arrayRect[i].yRect>400 && mylab.io.yCord<arrayRect[i].yRect){\r\n\r\n \r\n\r\n mylab.io.down=false;\r\n\r\n actualrect=i; \r\n\r\n mylab.punteggio+=10;\r\n\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\n}\r\n\r\n\r\n\r\npublic void compari()\r\n\r\n{\r\n\r\n int k;\r\n\r\n for(k=0;k<arrayRect.length;k++)\r\n\r\n if(arrayRect[k]==null) break;\r\n\r\n if(k>=arrayRect.length) k=arrayRect.length-2; \r\n\r\n \r\n\r\n for(int p=k-1;p>=0;p--) arrayRect[p+1]=arrayRect[p];\r\n\r\n arrayRect[0]=new sos(); \r\n\r\n timing++;\r\n\r\n if(timing==25) width=80;\r\n\r\n if(timing==50) width=40;\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n}\r\n\r\n\r\n\r\n\r\npublic class sos{\r\n\r\n public int xRect;\r\n\r\n public int yRect;\r\n\r\n public int larghezza;\r\n\r\n public int altezza;\r\n\r\n public int larghezzaArco;\r\n\r\n public int altezzaArco;\r\n\r\n public Color mycolour;\r\n\r\n public sos(){\r\n\r\n mycolour=Color.BLUE;\r\n\r\n this.larghezza=120;\r\n\r\n this.altezza=20;\r\n\r\n this.larghezzaArco=20;\r\n\r\n this.altezzaArco=15;\r\n\r\n xRect=5+(int)(Math.random()*450);\r\n\r\n yRect=950;\r\n\r\n }\r\n\r\n \r\n\r\n\r\n\r\n \r\n\r\n}\r\n\r\n\r\n\r\n}</pre>\r\n<div>\r\n <br />\r\n Classe Vite:<br />\r\n <br />\r\n <br />\r\n <pre>\r\npackage rapidroll;\r\n\r\nimport javax.swing.*;\r\n\r\nimport java.awt.Color;\r\n\r\nimport java.util.*;\r\n\r\n\r\npublic class Vita {\r\n\r\n life[] arrayVite;\r\n\r\n int timinglife;\r\n\r\n Label mylab2;\r\n\r\n public Vita(Label mylab2)\r\n\r\n {\r\n\r\n \r\n\r\n this.mylab2=mylab2;\r\n\r\n arrayVite=new life[200]; \r\n\r\n timinglife=0;\r\n\r\n }\r\n\r\n \r\n\r\n public void compariVita()\r\n\r\n{\r\n\r\n int k;\r\n\r\n for(k=0;k<arrayVite.length;k++)\r\n\r\n if(arrayVite[k]==null) break;\r\n\r\n if(k>=arrayVite.length) k=arrayVite.length-2; \r\n\r\n \r\n\r\n for(int p=k-1;p>=0;p--) arrayVite[p+1]=arrayVite[p];\r\n\r\n arrayVite[0]=new life(); \r\n\r\n timinglife++;\r\n\r\n }\r\n\r\n\r\n public class life {\r\n\r\n public int dimensionx,dimensiony;\r\n\r\n public life(){\r\n\r\n this.dimensionx=15;\r\n\r\n this.dimensiony=15;\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n\r\n\r\n \r\n\r\n} \r\n\r\n }</pre>\r\n <div>\r\n </div>\r\n <div>\r\n Metodo main (è incorporato in una classe chiamata "capo") :<br />\r\n <br />\r\n <pre>\r\npackage rapidroll;\r\n\r\n\r\npublic class capo {\r\n\r\n \r\n\r\npublic static void main(String[] arg)\r\n\r\n {\r\n\r\n Finestra fin=new Finestra();\r\n\r\n }\r\n\r\n \r\n\r\n}</pre>\r\n </div>\r\n</div>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,121,154,'und',0,'<p>Segue la relazione inerente al progetto da me realizzato , Rapid Roll:<br />\r\n <br />\r\n <a href=\"/sites/default/files/files/DocumentazioneProgettoJava_0.pdf\">DocumentazioneProgettoJava.pdf</a></p>\r\n<p> </p>\r\n<p>Per il file jar continuo ad avere problemi per quanto riguarda l'upload diretto sul blog. In ogni modo, ho uppato il file su google drive. E' facilmente scaricabile da questo link (il file jar da scaricare si chiama anagram.jar) :<br />\r\n <br />\r\n <a href=\"https://docs.google.com/file/d/0B4AAKi0MwIk3MGtmRmNkSnhvTXc/edit\">https://docs.google.com/file/d/0B4AAKi0MwIk3MGtmRmNkSnhvTXc/edit</a></p>\r\n','','full_html'),('node','blog',0,122,155,'und',0,'<p><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\"><em>La nostra app, sfrutta le API Rest messe a disposizione dalla Parthenope, per rendere fruibili tutte le news di tutte le facoltà dell’università Parthenope</em></span></span></p>\r\n<p><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\"><em>La nostra app prevede due activity :</em></span></span></p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\">• <em>MainActivity:</em></span></span></p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\"><em>Nella quale vengono acquisite tutte le facoltè per cui sono disponibile delle news;</em></span></span></p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\"><em>Essa attraverso un opportuno Listener, l’activity gestisce opportunamente l’evento associato ad ogni selezione.</em></span></span></p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\">• <em>ReadNews:</em></span></span></p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\"><em>Nella quale vengono letti i parametri ricevuti dalla MainActivity, e in base a questi ultimi, vengono mostrate le opportune news.</em></span></span></p>\r\n<p style=\"margin-left:18pt;\"> </p>\r\n<p class=\"rtecenter\" style=\"margin-left:18pt;\"><span style=\"font-size:20px;\"><span style=\"color:#ff0000;\"><span style=\"font-family:georgia,serif;\"><strong>MainActivity</strong></span></span></span></p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\">• <em>Caricata la lista delle facoltà nella Action Bar di android ( introdotta con Android 3.0 API level 11) l’activity aspetta la selezione della facoltà da parte dell’utente.</em></span></span></span></p>\r\n<p style=\"margin-left:36pt;\"> </p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\">• <em>Ad ogni scelta dell’utente, attraverso un opportuno Listener, gestisce l’evento richiamando opportunamente l’activity ReadNews, attraverso l’utilizzo degli Intent</em></span></span></span></p>\r\n<p> </p>\r\n<p><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\"><em>Nell’Intent, vengono passati anche dei parametri, che sono : </em></span></span></span></p>\r\n<p style=\"margin-left:54pt;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\">• <em>Url, delle news relative alla facoltà scelta;</em></span></span></span></p>\r\n<p style=\"margin-left:54pt;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\">• <em>Posizione, che occupa la facoltà nel JSONobject, in modo tale che l’activity news eviti di scorrere tutto l’oggetto. </em></span></span></span></p>\r\n<p style=\"margin-left:54pt;\"> </p>\r\n<p class=\"rtecenter\" style=\"margin-left:54pt;\"><span style=\"font-size:20px;\"><span style=\"color:#ff0000;\"><strong>MainActivity</strong></span></span></p>\r\n<p><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000ff;\"><span style=\"font-size:14px;\"><em>Il main activity si va a prendere dalle API tutte le Facoltà disponibili per poi inserirli nello spinner (simile ad una lista espansa).</em></span></span></span></p>\r\n<p><em style=\"font-size: 14px; color: rgb(0, 0, 255); font-family: georgia, serif; \">Purtroppo non avendo dispositivi ANDROID (non ditelo a nessuno), ci dobbiamo arrangiare con l’emulatore di Eclipse.</em></p>\r\n<p> </p>\r\n<p><em style=\"font-size: 14px; color: rgb(0, 0, 255); font-family: georgia, serif; \"><img alt=\"\" src=\"http://img706.imageshack.us/img706/9107/mainactivity.png\" style=\"margin-left: 100px; margin-right: 100px; width: 320px; height: 223px; \" /></em></p>\r\n<p> </p>\r\n<p><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\"><em>Cliccando su “Seleziona Facoltà” spuntano tutte le facoltà presenti nelle API</em></span></span></span></p>\r\n<p> </p>\r\n<p><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\"><em><img alt=\"\" src=\"http://img853.imageshack.us/edit_preview.php?l=img853/8854/mainactivity2.png&action=rotate\" style=\"margin-left: 100px; margin-right: 100px; width: 320px; height: 223px; \" /></em></span></span></span></p>\r\n<p> </p>\r\n<p><span style=\"font-size:14px;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><em>Cliccando su qualsiasi di queste facoltà il MainActivity chiamerà ReadNews che tramite le Api scelte opportunamente visualizzerà a video l’inizio di ogni news.</em></span></span></span></p>\r\n<p><span style=\"font-size:14px;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><em>Se per esempio cliccassimo su informatica il risultato ottenuto sarebbe il seguente:</em></span></span></span></p>\r\n<p> </p>\r\n<p><span style=\"font-size:14px;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><em><img alt=\"\" src=\"http://desmond.imageshack.us/Himg528/scaled.php?server=528&filename=facoltnuovo.png&res=landing\" style=\"margin-left: 100px; margin-right: 100px; width: 320px; height: 285px; \" /></em></span></span></span></p>\r\n<p> </p>\r\n<p> </p>\r\n<p><span style=\"font-size:14px;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><em>Cliccando su “AVVISO: Corso di Tecnologie Web” abbiamo finalmente la nostra news completa.</em></span></span></span></p>\r\n<p><span style=\"font-size:14px;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><em>Il risultato è </em></span></span></span></p>\r\n<p> </p>\r\n<p><span style=\"font-size:14px;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><em><img alt=\"\" src=\"http://desmond.imageshack.us/Himg651/scaled.php?server=651&filename=immaginepwk.png&res=landing\" style=\"margin-left: 100px; margin-right: 100px; width: 320px; height: 287px; \" /></em></span></span></span></p>\r\n<p><font color=\"#0000cd\" face=\"georgia, serif\"><span style=\"font-size: 14px;\"><i>Elio Papa e Antonio Pugliese</i></span></font></p>\r\n','','full_html'),('node','blog',0,123,156,'und',0,'<div class=\"rtejustify\">\r\n L'idea di questo software nasce dalla passione di quattro amici per il gioco della Stoppa, gioco di carte tradizionale del sud Italia ma principalmente della regione Campania.</div>\r\n<div class=\"rtejustify\">\r\n Si è pensato di rendere possibile il connubio tra tradizione e tecnologia in modo da poter diffondere e conservare anche se in piccola parte le tradizioni della nostra cultura.</div>\r\n<div class=\"rtejustify\">\r\n Il software "Stoppa Game" è basato sul protocollo Client-Server per far si che tutti in qualsiasi parte del mondo ne possano usufruire.</div>\r\n<div class=\"rtejustify\">\r\n E' stata implementata una chat per dare la possibilità a tutti gli utenti che giocano di socializzare ed eventualmente commentare la partita.</div>\r\n<div class=\"rtejustify\">\r\n Il Server gestisce la creazione dei tavoli da gioco che possono essere multipli e tutte le operazioni riguardanti le fasi di gioco.</div>\r\n<div class=\"rtejustify\">\r\n Il Client quindi, come giusto che sia, è solo un Interfaccia per gli utenti, per il momento è stato implementato oltre alle basi di gioco basiche un sistema di scommessa che non prevede un rilancio permettendo all'utente di giocare una sola partita.</div>\r\n<div class=\"rtejustify\">\r\n </div>\r\n<div class=\"rtejustify\">\r\n Il Software è stato implementato da Magro Massimiliano e Raffaele Schiavone</div>\r\n<div class=\"rtejustify\">\r\n </div>\r\n<div class=\"rtejustify\">\r\n <span>Attualmente è alla versione beta presentata come progetto di Programmazione III </span></div>\r\n<div class=\"rtejustify\">\r\n <span>Presto verrà rilasciato il tutorial su come far girare l’applicazione per chiunque fosse interessato a testarla.</span><br />\r\n </div>\r\n','','filtered_html'),('node','blog',0,124,157,'und',0,'<p> </p>\r\n<p>L’applicazione sviluppata per l’esame di programmazione 3 consiste di un videogioco interattivo, in due dimensioni, le cui meccaniche sono quelle classiche degli sparatutto a scorrimento 2D.</p>\r\n<p>Lo scopo e’ accumulare punteggi, eliminando navicelle dello stesso colore dell’astronave del giocatore, estendendo il timer, ed evitando di scontrarsi con i nemici.</p>\r\n<p>Il giocatore ha a disposizione n vite, e n secondi di timer. Quando il timer scade o si esauriscono le vite, la partita termina. Se si colpiscono navicelle del colore corretto, il punteggio totale accumulato aumenta, altrimenti diminuisce. Nel primo caso inoltre viene esteso il timer di gioco. Piu’ nemici del colore corretto vengono abbattuti quindi, piu’ si puo’ giocare e piu’ si accumulano punti.</p>\r\n<p>L’applicazione e’ sviluppata in Java.<br />\r\n </p>\r\n','','filtered_html'),('node','blog',0,125,158,'und',0,'<p> </p>\r\n<p> </p>\r\n<p><strong><img alt=\"\" src=\"http://i.imgur.com/nMufM.jpg\" /></strong></p>\r\n<p> </p>\r\n<p> </p>\r\n<p><strong><img alt=\"\" src=\"http://i.imgur.com/pgV1n.jpg\" /></strong><br />\r\n </p>\r\n<p> </p>\r\n<p><strong>CONTROLLI:</strong></p>\r\n<p><br />\r\n <strong>W= sopra</strong></p>\r\n<p><strong>A= sinistra</strong></p>\r\n<p><strong>D= destra</strong></p>\r\n<p><strong>S= sotto</strong></p>\r\n<p><strong>F= spara</strong></p>\r\n<p> </p>\r\n<p>Le classi implementate sono:</p>\r\n<p>Il metodo main e’ contenuto nella classe che ha lo stesso nome del gioco: PolygonWar.class</p>\r\n<p>Abbiamo poi la classe Astronave che definisce l’oggetto dell’astronave guidata dal giocatore.</p>\r\n<p>Abbiamo poi una serie di estensioni di alcune classi Swing, utilizzate per rappresentare graficamente l’ambiente di gioco (MiaFinestra, MioPannello,MiaLabel,LabelStat).</p>\r\n<p>C’e’ poi un’interfaccia, Spawner che viene implementata, e che serve a rappresentare gli oggetti che si occupano di dare vita e muovere le entita’ coinvolte nel gioco.</p>\r\n<p>Terminano la lista, una classe che si occupa di gestire e controllare le collisioni tra le entita’ diverse in gioco (player e nemici, o nemici e colpi sparati) e un oggetto che controlla il timer di gioco.<br />\r\n </p>\r\n<p>Segue una breve panoramica delle classi introdotte</p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n MIA FINESTRA (class)</h1>\r\n</div>\r\n<p>Estende la class JFrame dello Swing package.</p>\r\n<p>E’ utilizzata per rappresentare la finestra all’interno del quale sono inseriti gli altri elementi grafici che rappresentano il campo di gioco.</p>\r\n<p>Come variabili di classe contiene vari riferimenti ad oggetti della classe Timer, che vengono utilizzati per rappresentare il “clock” di movimento/aggiornamento/azione delle entita’ diverse coinvolte, e un riferimento all’oggetto di classe MioPannello che altro non e’ che un JPanel esteso, inserito nella finestra.</p>\r\n<p>All’interno della classe MiaFinestra e’ dichiarata tutta una serie di Inner Class che altro non sono che implementazioni di varie interfacce per il “grab “ dei segnali, lanciati dai timer o per la pressione di tasti quando la finestra e’ selezionata.<br />\r\n </p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n Miopannello(class)</h1>\r\n</div>\r\n<p>Estende la class JPanel, e altro non e’ che un pannello, di dimensione stabilita, che e’ inserito nell’oggetto di classe MiaFinestra, e contiene un riferimento all’oggetto di classe MiaLabel al suo interno inserito, e un riferimento all’oggetto di classe LabelStat, sempre inserito all’interno dell’oggetto pannello.</p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n MIAlabel(class)</h1>\r\n</div>\r\n<p>Estende la class JLabel. E’ uno degli elementi fondamentali dell’applicazione, in quanto all’interno del metodo (in overriding) paintComponent, vengono disegnate le entita’ in gioco. All’interno della MiaLabel quindi c’e’ tutta una serie di riferimenti ai vari oggetti di gioco (spawner vari, astronave e controllo collisioni)</p>\r\n<p> </p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n LABELSTAT(CLASS)</h1>\r\n</div>\r\n<p>Anch’essa estende la classe JLabel, ed e’ la seconda label inserita all’interno del pannello principale. Contiene tutta una serie di informazioni relative alle statistiche di gioco (vita e punteggio)</p>\r\n<p> </p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n Astronave (class)</h1>\r\n</div>\r\n<p>E’ una classe che si occupa di contenere le informazioni sulle coordinate dell’astronave del giocatore, sul colore attuale, un riferimento al timer che fa scattare ogni n secondi il colore, e i metodi che descrivono lo spostamento nelle varie direzioni dell’astronave. Le coordinate dell’astronave verranno poi disegnate dal metodo paintComponent della label.</p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n Classi spawner</h1>\r\n</div>\r\n<p>Gli oggetti delle varie classi xSpawner sono implementazioni dell’interfaccia Spawner. Si occupano di tenere traccia in strutture dati apposite, delle posizioni dei nemici/stelle/etc generati, e contiene i metodi necessari per aggiornarne le posizioni/generarne di nuovi. Questi metodi sono lanciati dai listener dei timer nella finestra principale.</p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n Collision controller (class)</h1>\r\n</div>\r\n<p>L’oggetto di questa classe contiene i riferimenti agli spawner, e ogni volta che vengono lanciati i suoi metodi di controllo, questo scorre tutti gli oggetti gia’ generati, e controlla che non siano avvenute collisioni tra nemici/astronave nemici/colpi, ed in tal caso si occupa di avvisare le entita’ coinvolte, in modo tale che la situazione venga subito gestita.</p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n Gaming timer (class)</h1>\r\n</div>\r\n<p>Questa classe contiene un contatore che rappresenta i secondi rimasti prima della fine della partita, e un oggetto di classe Timer sul quale e’ registrato un listener che ogni tot tempo decrementa il contatore. La classe ha inoltre i metodi necessari per aggiornare il timer incrementandolo (quando vengono colpiti nemici di colore esatto).</p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,126,159,'und',0,'<p> </p>\r\n<div>\r\n <h1>\r\n funzionamento generale</h1>\r\n</div>\r\n<p>· CREAZIONE E CARATTERISTICHE DEGLI OGGETTI</p>\r\n<p>Il programma parte dal main,che e’ statico.<br />\r\n Viene allocato un oggetto della classe MiaFinestra. Parte quindi il costruttore di quest’ultima, che definisce dimensioni e proprieta’ grafiche. Viene istanziato il pannello che verra’ inserito nella finestra, e vengono istanziati i vari oggetti della classe Timer.</p>\r\n<p>Sul timer1 vengono registrati 2 listener, uno per la simulazione dell’attrito (l’astronave che si sposta lentamente all’indietro) e uno per il movimento delle “stelle” (il pulviscolo sullo sfondo). Si fa partire il timer1. Sul timer2 viene aggiunto il listener per la generazione di nemici. E viene fatto partire. Sempre sul timer1 si aggiunge il listener per l’aggiornamento posizione nemici, e quello per l’aggiornamento dei colpi sparati (quindi gia’ generati).<br />\r\n Viene allocato un oggetto di classe GamingTimer, e viene attivato.<br />\r\n Viene inoltre creato un altro oggetto di classe Timer (che pero’ verra’ attivato solo quando la partita sara’ terminata, e su questo viene registrato un listener che fa chiudere la finestra quando dopo n secondi dall’attivazione del timer,questo scatta).<br />\r\n Viene poi registrato sulla finestra un listener che scatta quando vengono premuti tasti e la finestra e’ selezionata.<br />\r\n </p>\r\n<p>Tornando al pannello (oggetto di classe MioPannello) che abbiamo istanziato e inserito nella finestra, parte quindi il costruttore MioPannello(), viene creata la label di classe MiaLabel e viene inserita nel pannello, e viene creato l’oggetto di classe LabelStat, seconda label che viene sempre inserita nel pannello. In fase di creazione delle 2 label, sono passati i riferimenti incrociati affinche’ si possa meglio tenere traccia all’interno delle label, degli altri componenti grafici.</p>\r\n<p>Guardando a come l'oggetto di classe MiaLabel viene instanziato, parte il costruttore, e vengono istanziati gli oggetti di classe MiaFinestra (per contenere il riferimento alla finestra che contiene la label) , StarSpawn,EnemySpawner,Astronave,BulletSpawner e CollisionController.<br />\r\n Inoltre all’interno dell’oggetto MiaLabel e’ presente un flag (inizializzato a false) chiamato printGameOverStat che verra’ utilizzato come indicato in seguito.<br />\r\n Centrale nel funzionamento dell’applicazione e’ il metodo paintComponent contenuto nella classe MiaLabel che “sovrascrive” il metodo ereditato dalla classe madre JLabel.<br />\r\n Questo parte alla creazione della MiaLabel, e ogni volta che viene chiamato il metodo repaint() dell’oggetto MiaLabel. Quando il metodo paintComponent() parte, innanzitutto controlla il valore del flag printGameOverStat: se e’ false non fa nulla, altrimenti stampa una schermata che indica il punteggio raggiunto, con la scritta GAMEOVER, e attiva il timer4 della MiaFinestra (timer che quando scattera’, fara’ partire il listener che vi e’ registrato sopra, che fa il dispose() della finestra, ovvero la chiude, e quindi chiudendosi la finestra termina il processo).<br />\r\n Se quindi il flag e’ false, allora si scorre innanzitutto nell’array che contiene le coordinate x (e su quello delle y) dei punti che rappresentano il pulviscolo/stelle sullo sfondo, e si stampano quelle presenti nell’array contenuto nell’oggetto di classe StarSpawner. Per come la StarSpawner gestisce l’array contenente coordinate, appena, scorrendolo, si incontra un elemento non inizializzato, vuol dire che dopo non c’e’ piu’ nulla e quindi si puo’ smettere di scorrere. Quindi in questo modo abbiamo stampato i puntini che rappresentano stelle/pulviscolo dello sfondo in movimento, nella loro posizione attuale.<br />\r\n Ora e’ il momento di disegnare le navicelle nemiche. Si scorre sulle strutture dati che, all’interno dell’oggetto di classe EnemySpawner, contengono le coordinate delle navicelle nemiche. Ogni navicella ha un flag che indica se e’ stato colpito o no. Se risultava precedentemente colpito, non scompare dalla struttura dati, ma il metodo paintComponent non lo disegna. Il procedimento e’ il seguente: il paintComponent scorre sulla struttura dati contenente coordinate nemici. Se incontra elemento non inizializzato, allora per quanto detto sopra, non ci sono piu’ nemici da disegnare, e quindi fa break ed esce dal ciclo. Altrimenti se trova un elemento inizializzato, nel caso in cui il valore del flag sia ==0, allora il nemico non e’ stato colpito, quindi lo disegna normalmente saltando avanti nel ciclo. Altrimenti il valore del flag indichera’ la fase attuale in cui il nemico COLPITO si trova nel ciclo dell’esplosione, quindi disegna (in base al valore del flag che essendo >0 indica il cammino nell’esplosione) una forma gialla/rossa/arancione che rappresenta una vampata di fuoco. Nel caso in cui il flag sia uscito fuori range massimo, vuol dire che non solo e’ stato colpito ma ha anche terminato la fase di esplosione, quindi semplicemente non viene disegnato nulla.<br />\r\n Ora il metodo paintComponent() stampa i proiettili generati (sempre secondo lo stesso procedimento utilizzato per il pulviscolo)<br />\r\n Ora per il disegno dell’astronave controllata dal giocatore: l’astronave viene disegnata sia se e’ iniziata la fase dell’esplosione (perche’ il giocatore ha esaurito tutte le vite disponibili) sia se questa non e’ iniziata.<br />\r\n Nel caso in cui non sia iniziata, viene disegnata solo l’astronave (utilizzando le coordinate contenute nell’oggetto di classe Astronave chiamato pg e controllando il valore dello stato dei propulsori che quindi andranno disegnati/non disegnati). Se l’esplosione e’ iniziata, si fa come sopra, tuttavia seguendo un procedimento simile a quello utilizzato per il “cammino dell’esplosione” per le navicelle nemiche, viene disegnata una diversa forma (rappresentante il fuoco) al di sopra dell’astronave (per dare l’effetto dell’astronave coperta di fiamme), e si incrementa il flag che rappresenta la fase dell’esplosione. Se incrementando la fase dell’esplosione, il frame esce fuori un determinato range, vuol dire che anche l’esplosione e’ terminata, quindi facciamo sparire l’astronave e incrementiamo ancora il flag. Quando il flag superera’ anche il secondo limite, viene attivato il flag printGameOverStat, e quindi si arrivera’ nel caso descritto precedentemente.</p>\r\n<p>Tornando a guardare alla seconda label inserita nel pannello (cioe’ l’oggetto di classe LabelStat), quando questo e’ inizializzata, parte il costruttore che inizializza le vite a 3 e il punteggio a 0.Anche questa fa override del metodo paintComponent della classe madre JLabel, per disegnare nella parte bassa del pannello (in cui e’ inserita) il tempo rimanente (ottenuto lanciando il metodo getTime() dell’oggetto GamingTimer) e le vite rimaste.</p>\r\n<p>Gli spawner che abbiamo inizializzato sopra, conterranno strutture dati apposite per contenere i riferimenti agli oggetti istanziati, con relativi flag e coordinate. In genere, tranne nel caso della classe StarSpawner, gli altri spawner hanno una inner class che definisce gli oggetti associati (es classe Bullet che e’ inner class della classe BulletSpawner e classe Enemy che e’ inner class della classe EnemySpawner) e che viene utilizzata per istanziare oggetti, ognuno con le proprie coordinate/flag, di cui si terra’ traccia in strutture dati generali nello Spawner.</p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p>· COMPORTAMENTO DINAMICO</p>\r\n<p>Il comportamento dinamico (movimento, reazione, azione) dell’applicazione e’ implementato attraverso un uso massiccio di oggetti di classi listener da noi definiti, che implementano relative interfacce a seconda del segnale che vogliono “intercettare”.</p>\r\n<p><strong><u>Timer timer1</u></strong>: su questo sono registrati oggetti di classi ListenerTimerStelle, ListenerPerAttrito ,ListenerTimerAggiornaEnemy, ListenerTimerAggiornaBullet.</p>\r\n<p>Scatta ogni 100 ms, lanciando un segnale, che e’ intercettato dagli oggetti delle varie classi Listener registrati su di esso. Quindi ogni 100 ms parte il metodo actionPerformed() del ListenerTimerStelle, che si occupa di lanciare i metodi update() e spawn() dell’oggetto di classe StarSpawn. Questo fara’ muovere le stelle e ne fara’ generare una nuova. Inoltre lancia immediatamente il metodo per il controllo delle eventuali collisioni tra colpi sparati e nemici, dell’oggetto di classe CollisionController<br />\r\n Sempre per il timer1, parte anche il metodo actionPerformed() dell’oggetto di classe ListenerPerAttrito: questo controlla che l’astronave non si trovi troppo vicina al bordo inferiore, e se cosi’ non e’ richiama il metodo attrito() dell’oggetto di classe Astronave. Questo metodo sposta verso il basso le coordinate y dell’oggetto pg di classe Astronave, e aggiorna anche la posizione dei propulsori.<br />\r\n Sempre per il timer1 parte l’actionPerformed() dell’oggetto di classe ListenerTimerAggiornaEnemy, che si occupa di richiamare il controllo dell’oggetto classe CollisionController per valuta che non ci siano collisioni tra nemici e colpi, poi chiama il metodo update() dell’oggetto EnemySpawner, richiama il controllo collisione tra player e astronavi nemiche (sempre dall’oggetto di classe CollisionController) e lancia infine il repaint() della Label.<br />\r\n Secondo lo stesso principio funziona anche per il ListenerTimerAggiornaBullet.<br />\r\n <br />\r\n </p>\r\n<p><strong><u>Timer timer2</u></strong>: vi e’ registrato oggetto di classe ListenerTimerSpawnEnemy</p>\r\n<p>Il funzionamento di questo timer e’ simile a quello del timer1, con la differenza che questo timer ha un clock molto piu’ ampio, perche’ i nemici vanno generati piu’ lentamente del pulviscolo di sfondo.</p>\r\n<p><strong><u>Timer timer4:</u></strong> vi e’registrato un Listener che fa il dispose() della finestra. Questo timer dura molto piu’ degli altri, e non e’ attivato se non quando nella Label e’ stata stampata la schermata di GAME OVER.</p>\r\n<p>L’oggetto di classe ListenerKeyUp, che implementa l’interfaccia KeyListener, definisce i metodi che partiranno quando verra’ premuto un tasto (o due assieme, visto che sono permessi anche gli spostamenti in diagonale, e gli spari menrte ci si sposta) o quando verra’ rilasciato.<br />\r\n </p>\r\n<p>Quando il CollisionController si accorge che abbiamo colpito un nemico di un colore corretto, dice alla LabelStat di incrementare il punteggio, altrimenti di decrementarlo, e analogamente gestisce il tempo rimanente.<br />\r\n Ogni volta che l’oggetto di classe CollisionController si accorge che un nemico viene colpito, gestisce il flag dell’oggetto Enemy che avvia l’animazione dell’esplosione ed il flag che indica che il proiettile e’ esploso e non va disegnato. Allo stesso modo quando il giocatore si scontra con un nemico, fa quanto sopra ed inoltre avvisa l’oggetto di classe LabelStat chiamandone il metodo colpito(). Questa, se le vite non sono terminate, si limita a decrementarle. Altrimenti se le vite sono terminate, avvia l’animazione relativa all’esplosione dell’astronave del giocatore, che quando sara’ terminata portera’ alla rappresentazione della schermata di GAME OVER, con relativa attivazione del timer4 per il dispose della finestra.</p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><br />\r\n <strong><u>CONDIZIONE TERMINAZIONE PARTITA:</u></strong></p>\r\n<p>· SE PERDIAMO TUTTE LE VITE:</p>\r\n<p style=\"margin-left:35.4pt;\">CollisionController (se giocatore colpito)->lancia colpito() della LabelStat..->La LabelStat se si accorge che le vite sono terminate->imposta il flag animazione esplosione sull’oggetto Astronave->ad ogni nuovo paintComponent si prosegue con l’esplosione->terminata la quale e’ impostato il flag printGameOverStat->questo disegna screen di game over e attiva timer4->dopo n secondi parte il segnale dal timer4, che fa partire il metodo dell’oggetto classe Listener registratovi, che fa il dispose() della finestra ,che si chiude, e quindi il processo termina.</p>\r\n<p>· SE SCADE IL TEMPO</p>\r\n<p style=\"margin-left:35.4pt;\">Il tempo di gioco rimanente e ‘gestito dall’oggetto di classe GamingTimer. Ogni volta che e’ aggiornato, questo lancia il metodo repaint() dell’oggetto di classe LabelStat. Questa quindi dovra’ all’interno del metodo paintComponent() ridisegnare la label col nuovo tempo, ma prima di fare questo controlla che non sia scaduto: in tal caso imposta il flag printGameOverStat nell’altra label a true, quindi al prossimo paintComponent dell’oggetto MiaLabel, verra’ disegnata la schermata di GameOver, verra’ attivato quindi il timer4 e dopo n secondi parita’ segnale, che fara’ partire il metodo actionPerformed() del listener registrato sul timer4, che lancera’ il dispose() della finestra.</p>\r\n','','full_html'),('node','blog',0,127,160,'und',0,'<p><img alt=\"\" src=\"http://i.imgur.com/U5MVX.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i.imgur.com/JPFMW.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i.imgur.com/JtRhp.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i.imgur.com/IqCEy.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i.imgur.com/djomU.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i.imgur.com/2NBxl.jpg\" /></p>\r\n','','full_html'),('node','blog',0,129,162,'und',0,'<p><a href=\"/sites/default/files/files/polygonwar.rar\">SorgentiJavaPolygonWar.rar</a></p>\r\n','','full_html'),('node','forum',0,131,170,'und',0,'<p>Innanzitutto mi scuso se non è la sezione Adatta, in ogni caso scrivo qui per coloro che hanno già esperienze nell'utilizzo di FRAPI per la creazione di API REST.</p>\r\n<p>Sotto una prima osservazione mi riesce difficile capire come grazie a questo software si riescano a creare delle API, allora mi era sorto un enorme dubbio. Ma cos'è in realtà un API?</p>\r\n<p>Googlando ho trovato che API sta per <i><b>Application Programming Interface</b></i> <b>API</b> (<i>Interfaccia di Programmazione di un'Applicazione</i>) si indica ogni insieme di <span class=\"new\">procedure</span> disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per l'espletamento di un determinato compito all'interno di un certo programma. (fonti Wikipedia).</p>\r\n<p>Quindi una routine di funzioni che permettono la realizzazione di qun qualcosa. Ma la domanda mia è la seguente:</p>\r\n<p>Se io decido ad esempio di realizzare qualcosa in PHP , ad esempio la gestione e la visualizzazione di una tabella (due API differenti), come utilizzo frapi per permettere ciò? Non posso direttamente creare pagine in PHP che permettano di fare ciò attraverso l'aiuto di mysql molto semplicemente?</p>\r\n<p>Non mi è chiara ancora l'utilità di FRAPI sinceramente. anxche perchè guardando il video tutorial su questo link: http://getfrapi.com/ non si capisce chiaramente cos'è che fà di preciso. vorrei delle delucvidazioni a riguardo.</p>\r\n<p>Dato che mi trovo, nel caso riuscissi a creare queste BENEDETTE API (facendo sempre l'esempio della modifica e visualizzazione di una tabella), come le utilizzo per la creazione di un Modulo DRUPAL? non ho capito bene come mettere in comune le cose. Se qualcuno può delucidarmi anche su questo.</p>\r\n<p>Ringrazio anticipatamente chi mi aiuta nella comprensione</p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,132,171,'und',0,'<p>Gestire i file sui dispositivi con iOS (iPhone, iPad e iPod) può essere davvero difficile, ma con <strong>FNFileManager </strong>puoi avere il pieno controllo della cartella <em>Documents.</em></p>\r\n<p><a data-mce-=\"\" href=\"http://www.iprog.it/blog/wp-content/uploads/2011/09/fnfilemanager_esempio.png\"><img alt=\"\" class=\"size-medium wp-image-1797 alignright\" data-mce-=\"\" height=\"300\" src=\"http://www.iprog.it/blog/wp-content/uploads/2011/09/fnfilemanager_esempio-154x300.png\" title=\"fnfilemanager_esempio\" width=\"154\" /></a></p>\r\n<p>Download Demo: <a data-mce-=\"\" data-redirect-href-updated=\"true\" dir=\"ltr\" href=\"https://github.com/fabiosoft/FNFileManager\" rel=\"nofollow\" target=\"_blank\" title=\"https://github.com/fabiosoft/FNFileManager\">https://github.com/fabiosoft/FNFileManager</a></p>\r\n<p>Facciamo una panoramica sulle tre funzioni principali di questa libreria statica:</p>\r\n<h3>\r\n <object classid=\"d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0\" height=\"210\" width=\"320\"><param name=\"quality\" value=\"high\" /><param name=\"movie\" value=\"http://www.youtube.com/watch?v=MSvyjGspJJI\" /><embed height=\"210\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" quality=\"high\" src=\"http://www.youtube.com/watch?v=MSvyjGspJJI\" type=\"application/x-shockwave-flash\" width=\"320\"></embed></object></h3>\r\n<p>[<a href=\"http://www.youtube.com/watch?v=MSvyjGspJJI\" target=\"_blank\">http://www.youtube.com/watch?v=MSvyjGspJJI</a>] - il video potrebbe non vedersi qui.</p>\r\n<h3>\r\n Salva un documento</h3>\r\n<p>Il metodo "<strong>saveFile</strong>" ha due parametri, entrambi obbligatori:</p>\r\n<p><strong>FileName </strong>di tipo NSString indica il nome del file, <strong>DEVI </strong>includere l'estensione del documento.</p>\r\n<p><strong>StringToSave </strong>di tipo NSString la stringa che vuoi salvare nel documento.</p>\r\n<blockquote>\r\n <p>Ex:</p>\r\n <pre>\r\nFNFileManager *fileManager=[[[FNFileManager alloc]init]autorelease];\r\nNSString *stringToSave=@"Hello FNFileManager!";\r\nNSString *fileStatus=[fileManager saveFile:@"example.txt" withString:stringToSave];</pre>\r\n</blockquote>\r\n<p><strong>saveFile</strong> ritorna <em>nil </em>se c'è stato un errore ed il file non è stato salvato con successo.</p>\r\n<h3>\r\n Leggi il documento</h3>\r\n<p>Il metodo "<strong>readFile</strong>" ha soltanto un parametro, ovviamente, obbligatorio:</p>\r\n<p><strong>FileName </strong>di tipo NSString indica il nome del file che si desidera leggere, <strong>DEVI </strong>includere l'estensione del documento.</p>\r\n<blockquote>\r\n <p>Ex:</p>\r\n <pre>\r\n[code lang="obj-c"]FNFileManager *fileManager=[[[FNFileManager alloc]init]autorelease];\r\nNSString *textSaved=[fileManager readFile:@"example.txt"];</pre>\r\n</blockquote>\r\n<p><strong>readFile</strong> ritorna <em>nil </em>se il file non esiste oppure è corrotto, altrimenti conterrà il testo letto.</p>\r\n<h3>\r\n Cancella Documento</h3>\r\n<p>Il metodo "<strong>deleteFile</strong>" ha soltanto un parametro, ovviamente, obbligatorio:</p>\r\n<p><strong>FileName </strong>di tipo NSString indica il nome del file che vuoi eliminare, <strong>DEVI </strong>includere l'estensione del documento e l'azione non può essere annullata.</p>\r\n<blockquote>\r\n <p>Ex:</p>\r\n <pre>\r\nFNFileManager *fileManager=[[[FNFileManager alloc]init]autorelease];\r\nBOOL returnDel=[fileManager deleteFile:@"example.txt"];</pre>\r\n</blockquote>\r\n<p><strong>deleteFile</strong> ritorna <em>YES </em>se il file è stato cancellato con successo, altrimenti ritorna <em>NO.</em></p>\r\n<p><em>PS: prova il progetto su un dispositivo reale e non sul simulatore.</em></p>\r\n','','filtered_html'),('node','blog',0,133,172,'und',0,'<p> </p>\r\n<p class=\"rtejustify\">Essendo in costante crescita il numero di persone che utilizzano sia tablet che smartphone nonchè il web come mezzo di lavoro e/o di svago, è stato quasi d'obbligo far nascere un nuovo framework che permetta, a chiunque abbia un sito internet o abbia intenzione di crearlo, di poterlo ottimizzare per tutti i terminali mobili.</p>\r\n<p class=\"rtejustify\">Il framework in questione è iWebKit.</p>\r\n<p class=\"rtejustify\">iWebKit è basato quasi interamente su HTML, ciò permette a chiunque di apprendere facilmente e con rapidità il metodo di utilizzo.</p>\r\n<p class=\"rtejustify\">Essendo al momento la migliore soluzione per l'ottimizzazione di siti internet, è stato utilizzato per una più corretta visualizzazione del sito ccmmma.uniparthenope.it su smartphone e tablet (ovviamente senza escludere che può essere tranquillamente visitato da altri dispositvi come laptop, pc desktop, ecc...).</p>\r\n<p class=\"rtejustify\">Il progetto prevede il restyling dell'intera interfaccia grafica ottimizzata, appunto, per smartphone e tablet. </p>\r\n<p class=\"rtejustify\">Le sezioni implementate sono:</p>\r\n<p class=\"rtejustify\"> - <strong>Previsioni</strong></p>\r\n<p class=\"rtejustify\"> - <strong>Strumenti</strong></p>\r\n<p class=\"rtejustify\"> - <strong>Modelli</strong></p>\r\n<p class=\"rtejustify\"> - <strong>Info</strong></p>\r\n<p class=\"rtejustify\">Nella sezione <em>previsioni</em> è possibile visualizzare tutti i modelli di mappe tematiche messe a disposizione dell'utente, nonchè, cliccando su una qualsiasi delle mappe, è possibile accedere in una sezione dove è possibile cercare una mappa tematica che più soddisfi l'esigenze del visitatore. Ciò è possibile tramite una form dove si può modificare il tipo di modello, la località, il tipo di visualizzazione, la data e l'ora. Vista la grossa mole di luoghi da ricercare, è stata implementata una funzione <em>autocomplete</em> per scremare i luoghi man mano che si digita la località desiderata.</p>\r\n<p class=\"rtejustify\">Nelle sezioni <em>Strumenti, Modelli e Info</em>, sono presenti, rispettivamente,<i> </i>gli strumenti utilizzati per le rilevazioni, i tipi di modelli consultabili e le informazioni riguardanti il ccmmma.</p>\r\n<p class=\"rtejustify\">Il progetto è stato implementato utilizzando come linguaggio di programmazione il PHP con l'ausilio di JavaScript, JQuery.</p>\r\n<p class=\"rtejustify\">Rilascerò quanto prima una guida sull'utilizzo del framework iWebKit 5.5</p>\r\n','','filtered_html'),('node','forum',0,134,173,'und',0,'<p> </p>\r\n<div class=\"rtecenter\" style=\"\">\r\n Progetto Sebeto @ UniParthenope SoC: Summer of Code!</div>\r\n<div class=\"rtecenter\" style=\"\">\r\n <span style=\"font-size:16px;\"><strong>Sfida #1: HPC in Java</strong></span></div>\r\n<div>\r\n </div>\r\n<div>\r\n Date le due librerie:</div>\r\n<div>\r\n http://math.nist.gov/javanumerics/jama/</div>\r\n<div>\r\n http://code.google.com/p/aparapi/</div>\r\n<div>\r\n </div>\r\n<div>\r\n Creare una versione della libreria Jama che sfrutta il parallelismo offerto dalle aparapi. Valutare performance ed alternative (sempre in Java). Ad esmepio, valutare l'uso dei JTP: http://docs.oracle.com/javase/tutorial/essential/concurrency/</div>\r\n<div>\r\n </div>\r\n<div>\r\n Leggere: http://www.cs.ncl.ac.uk/research/trs/papers/772.pdf</div>\r\n<div>\r\n </div>\r\n<div>\r\n Pubblicare le proprie esperienze ed il risultato del proprio lavoro su http://students.uniparthenope.it/blogs</div>\r\n<div>\r\n </div>\r\n','','full_html'),('node','blog',0,135,174,'und',0,'<p><a href=\"https://www.dropbox.com/s/tq1c698qf3evvuy/Guida.pdf\">Guida in PDF</a></p>\r\n<p>Siccome non ci sono grandissime guide sull’utilizzo del framework FRAPI, meglio scriverne una in italiano. Iniziamo a creare un' API che restituisce il nome e il prezzo di una lista di prodotti.</p>\r\n<p>La nostra API se riceve un parametro uguale ad 1 mostra un certo output, altrimenti restituisce errore.</p>\r\n<hr />\r\n<p align=\"center\">---Per l’installazione locale e la configurazione vi rimando per il momento alla pagina ufficiale <a href=\"http://frapi.github.com/installing/index.html\">http://frapi.github.com/installing/index.html</a> ----</p>\r\n<hr />\r\n<p>Bene, se avete seguito la guida senza errori, andando su <u>admin.frapi</u> si apre la pagina di login. Le credenziali di base per l’accesso sono:</p>\r\n<p>Username : admin</p>\r\n<p>Password : password</p>\r\n<p> </p>\r\n<p>Una volta effettuato l’accesso, si può incominciare a creare l’azione.</p>\r\n<p> </p>\r\n<hr />\r\n<h2>\r\n - Creazione dell'azione</h2>\r\n<p>Clicchiamo su <strong><em>Actions</em></strong>, si apre una pagina contente azioni predefinite.</p>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"Scarica la guida\" src=\"http://desmond.imageshack.us/Himg811/scaled.php?server=811&filename=schermata072456139alle2.png&res=landing\" style=\"width: 640px; height: 478px; \" /></p>\r\n<p> </p>\r\n<p>Nella barra laterale (<em>Submenu</em>) cliccare su “<strong><em>Add new Action</em></strong>”.</p>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"Scarica la guida\" src=\"http://desmond.imageshack.us/Himg11/scaled.php?server=11&filename=schermata072456139alle2.png&res=landing\" style=\"width: 534px; height: 603px; \" /></p>\r\n<p> </p>\r\n<p>Adesso bisogna compilare il form per creare la nostra azione. Se la nostra api deve ricevere uno o più parametri, basta cliccare su “<strong><em>Add Parameter</em></strong>” e poi assegnare il nome del parametro.</p>\r\n<p>Compilato il form cliccare su <em>Save</em>. Adesso bisogna sincronizzare il pannello cliccando su <strong><em>Sync Now</em></strong>.</p>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"Scarica la guida\" src=\"http://desmond.imageshack.us/Himg338/scaled.php?server=338&filename=schermata072456139alle2.png&res=landing\" style=\"width: 640px; height: 123px; \" /></p>\r\n<p> </p>\r\n<p>Bene abbiamo creato la nostra API. E’ possibile già testare l’API tramite il pannello tester.</p>\r\n<p> </p>\r\n<hr />\r\n<p> </p>\r\n<h2>\r\n - Creazione dell'errore</h2>\r\n<p> </p>\r\n<p>Clicchiamo su Errors e poi, dal <em>Submenu</em>, “<strong><em>Add new Error</em></strong>”. Completiamo il form e clicchiamo su Submit.</p>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"Scarica la guida\" src=\"http://desmond.imageshack.us/Himg802/scaled.php?server=802&filename=schermata072456140alle2.png&res=landing\" style=\"width: 640px; height: 629px; \" /></p>\r\n<p> </p>\r\n<p>Bene, per il momento è possibile chiudere il pannello di gestione FRAPI e passare finalmente alla programmazione dell’API.</p>\r\n<br />\r\n<hr />\r\n<p> </p>\r\n<p> </p>\r\n<h2>\r\n - Programmazione dell'API</h2>\r\n<p> </p>\r\n<p>Per aprire il nostro file bisogna recarsi nella cartella principale di FRAPI, andare su custom/actions. Adesso basta aprire il nostro file con un qualsiasi editor e incominciare a programmare.</p>\r\n<p> </p>\r\n<p>Prima di tutto notiamo che FRAPI ha già inserito del codice all’interno del file. E’ importante non cancellare né classi, né metodi. Infatti, i metodi sono i metodi di richiamo dell’API ( GET, POST, HEAD, PUT, DELETE ).</p>\r\n<p>Quindi, se volessimo richiamare un metodo POST, tutto il codice della nostra API sarà scritto all’interno del metodo POST.</p>\r\n<p> </p>\r\n<p>Nel nostro caso, utilizzeremo il metodo GET, quindi tutto il nostro codice sarà scritto all’interno del metodo <em>executeGet() .</em></p>\r\n<p>Il primo controllo è verificare se il parametro passato in GET è uguale ad 1. Per ricavare il parametro, FRAPI ci mette a disposizione un metodo:</p>\r\n<p class=\"rtecenter\" style=\"\">getParam(‘<em>nomeparametro</em>’, self::”<em>tipo_parametro”);</em></p>\r\n<p>I tipi di parametri sono:</p>\r\n<ul>\r\n <li>\r\n Integer: <em>self::TYPE_INT</em>, <em>self::TYPE_INTEGER</em>, <em>self::TYPE_LONG</em></li>\r\n <li>\r\n Double: <em>self::TYPE_DOUBLE</em></li>\r\n <li>\r\n Float: <em>self::TYPE_FLOAT</em></li>\r\n <li>\r\n Boolean: <em>self::TYPE_BOOLEAN</em></li>\r\n <li>\r\n String: <em>self::TYPE_STRING</em></li>\r\n <li>\r\n Array: <em>self::TYPE_ARRAY</em></li>\r\n <li>\r\n Safe Output (htmlentities): <em>self::TYPE_OUTPUT</em></li>\r\n <li>\r\n File: <em>self::TYPE_FILE</em></li>\r\n</ul>\r\n<p> </p>\r\n<p>Dunque:</p>\r\n<p> </p>\r\n<p style=\"margin-left:70.8pt;\"> </p>\r\n<pre>\r\npublic function executeGet() { \r\n\r\n$valid = $this->hasRequiredParameters($this->requiredParams); \r\n\r\n if ( $valid instanceof Frapi_Error ) { \r\n\r\n return $valid; \r\n\r\n }\r\n\r\nif ( $this->getParam('is_yes',self::TYPE_OUTPUT) == 1 ){\r\n\r\n //Codice API\r\n\r\n /*Creiamo un’ array associativo con all’interno tutti i campi che ci interessano*/\r\n\r\n $this->data['Prodotto'][0] = array(\r\n\r\n 'name' => 'MacBook Pro',\r\n\r\n 'price' => '999 €'\r\n\r\n );\r\n \r\n\r\n $this->data['Prodotto'][1] = array(\r\n 'name' => 'Hp',\r\n \r\n 'price' => '899 €'\r\n \r\n\r\n );\r\n \r\n\r\n $this->data['Prodotto'][2] = array(\r\n 'name' => 'Hp',\r\n \r\n 'price' => '799 €'\r\n \r\n\r\n );\r\n} else {\r\n\r\n //Richiamo errore FRAPI\r\n\r\n throw new Frapi_Error ('NO_TRUE');\r\n\r\n}\r\n\r\nreturn $this->toArray();\r\n\r\n}</pre>\r\n<p>Benissimo. L'API restituisce l'array associativo popolato dal nome e il prezzo del prodotto. Adesso testiamo la nostra API.</p>\r\n<p> </p>\r\n<hr />\r\n<h2>\r\n - Tester FRAPI</h2>\r\n<p>Accediamo al pannello Tester di FRAPI e completiamo il form per ottenere l'output desiderato.</p>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"Scarica la guida\" src=\"http://img706.imageshack.us/img706/6808/schermata082456141alle1.png\" style=\"width: 786px; height: 405px; \" /></p>\r\n<p>Clicchiamo <em>Run Test, </em>ed ecco il nostro risultato! (<strong>Beautify</strong>)</p>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"\" src=\"http://desmond.imageshack.us/Himg525/scaled.php?server=525&filename=schermata082456141alle1.png&res=landing\" style=\"width: 640px; height: 314px; \" /></p>\r\n<p class=\"rtecenter\" style=\"\"> </p>\r\n<hr />\r\n<h2>\r\n - Consumare l'API da PHP</h2>\r\n<p>Utilizziamo la nostra API per stampare una tabella prodotti. Utilizzeremo <strong>CURL</strong> per mandare la richiesta all'API, dopodichè utilizzeremo la funzione PHP<em> json_decode() </em>per decodificare l'output di CURL.</p>\r\n<p>Quindi:</p>\r\n<p> </p>\r\n<pre>\r\n<?\r\n\r\n//Inizializziamo CURL con l'indirizzo della nostra API e con i relativi parametri\r\n$s = curl_init("http://api.frapi/hello_world.json?is_yes=1");\r\n\r\ncurl_setopt($s, CURLOPT_RETURNTRANSFER, TRUE);\r\n\r\n$json = curl_exec($s);\r\n\r\ncurl_close($s);\r\n\r\n$obj = json_decode($json);<span class=\"Apple-tab-span\" style=\"white-space:pre\"> </span>\r\n\r\n?>\r\n\r\n<table border="1">\r\n\r\n<tr><td>Nome Prodotto</td><td>Prezzo</td></tr>\r\n\r\n<? foreach($obj->Prodotto as $value){ ?>\r\n\r\n<tr><td><? echo $value->name; ?></td><td><? echo $value->price; ?></td></tr>\r\n\r\n<? } ?>\r\n\r\n</table></pre>\r\n<p> </p>\r\n<p>Ed ecco il nostro output!</p>\r\n<p class=\"rtecenter\"><img alt=\"Scarica la guida\" src=\"http://desmond.imageshack.us/Himg716/scaled.php?server=716&filename=schermata082456141alle1.png&res=landing\" style=\"width: 173px; height: 112px; \" /></p>\r\n<p class=\"rtecenter\"> </p>\r\n','','full_html'),('node','blog',0,136,175,'und',0,'<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120408222305.jpeg\" /></p>\r\n<p><span style=\"color: rgb(51, 51, 51); font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; line-height: 19px; \">Ciao a tutti ragazzi con l’arrivo del nuovo OS di casa apple sono state aggiunte tante succose novità e prima di ripartire per le vacanze vorrei mostravene almeno una , da questo momento in poi è davvero molto semplice inviare un tweet, una mail ecc direttamente dalla nostra app ma non perdiamoci in chiacchiere e iniziamo subito con la creazione di un nuovo progetto di tipo cocoa application .</span></p>\r\n<h2>\r\n <span style=\"color: rgb(51, 51, 51); font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; line-height: 19px; \">Rechiamoci nel file AppDelegate.h e scriviamo il seguente codice :</span></h2>\r\n<div>\r\n <table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\r\n <tbody>\r\n <tr>\r\n <td>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">#import <Cocoa/Cocoa.h></p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@interface AppDelegate : NSObject <NSApplicationDelegate,NSSharingServicePickerDelegate,NSSharingServiceDelegate></p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@property (assign) IBOutlet NSButton *shareButton;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@property (assign) IBOutlet NSImageView *imageView;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@property(nonatomic,retain)IBOutlet NSTextView *textview;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">- (IBAction)condividi:(id)sender;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@property (assign) IBOutlet NSWindow *window;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@end</p>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n<p> </p>\r\n<h2 style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">\r\n <strong style=\"border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; \">Creiamo l’interfaccia grafica</strong></h2>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">Rechiamoci presso il file MainMenu.xib e impostiamo l’interfaccia grafica in questo modo :</p>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">1 textview</p>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">1 button</p>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">1 imageview</p>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \"><a href=\"/sites/default/files/images/20120408222448.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120408222448.png\" /></a></p>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \"> </p>\r\n<p style=\"border: 0px; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; \">Ora non ci resta che fare tutti gli opportuni collegamenti .</p>\r\n<p style=\"border: 0px; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; \">E’arrivato il momento di implementare il codice vero e proprio quindi ora tocca al file AppDelegate.m andiamo a scrivere il seguente codice :</p>\r\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\r\n <tbody>\r\n <tr>\r\n <td>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">#import “AppDelegate.h”</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@implementation AppDelegate</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@synthesize shareButton;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@synthesize textview;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@synthesize imageView;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \"> </p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">- (void)dealloc</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">{</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">[super dealloc];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">}</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">- (void)applicationDidFinishLaunching:(NSNotification *)aNotification</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">{</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">//inizializzo l’immagine del bottono share</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">[self.shareButton setImage:[NSImage imageNamed:NSImageNameShareTemplate]];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">[self.shareButton sendActionOn:NSLeftMouseDownMask];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">}</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">- (IBAction)condividi:(id)sender {</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">//creiamo un mutable array per inserire al suo interno il testo e l’immagini da condividere</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">NSMutableArray *shareObject=[NSMutableArray arrayWithObject:[self.textview string]];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">NSImage *image=[self.imageView image];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">if (image) {</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">[shareObject addObject:image];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">}</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">//creiamo l’oggetto per la condivisione lo allochiamo e lo inizializiamo con il mutable array</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">NSSharingServicePicker *sharingPicker=[[NSSharingServicePicker alloc]initWithItems:shareObject];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">//impostiamo il delegate</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">sharingPicker.delegate=self;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">//mostra le condivisioni</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">[sharingPicker showRelativeToRect:[self.shareButton bounds] ofView:self.shareButton preferredEdge:NSMaxYEdge];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">}</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@end</p>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p> </p>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">Il risultato finale dovrebbe essere simile a questo :</p>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120408222618.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120408222618.png\" /></a></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n','','filtered_html'),('node','blog',0,137,176,'und',0,'<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120408222305.jpeg\" /></p>\r\n<p><span>Ciao a tutti ragazzi con l’arrivo del nuovo OS di casa apple sono state aggiunte tante succose novità e prima di ripartire per le vacanze vorrei mostravene almeno una , da questo momento in poi è davvero molto semplice inviare un tweet, una mail ecc direttamente dalla nostra app ma non perdiamoci in chiacchiere e iniziamo subito con la creazione di un nuovo progetto di tipo cocoa application .</span></p>\r\n<h2>\r\n <span>Rechiamoci nel file AppDelegate.h e scriviamo il seguente codice :</span></h2>\r\n<div>\r\n <table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\r\n <tbody>\r\n <tr>\r\n <td>\r\n <p>#import <Cocoa/Cocoa.h></p>\r\n <p>@interface AppDelegate : NSObject <NSApplicationDelegate,NSSharingServicePickerDelegate,NSSharingServiceDelegate></p>\r\n <p>@property (assign) IBOutlet NSButton *shareButton;</p>\r\n <p>@property (assign) IBOutlet NSImageView *imageView;</p>\r\n <p>@property(nonatomic,retain)IBOutlet NSTextView *textview;</p>\r\n <p>- (IBAction)condividi:(id)sender;</p>\r\n <p>@property (assign) IBOutlet NSWindow *window;</p>\r\n <p>@end</p>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n<p> </p>\r\n<h2>\r\n <strong>Creiamo l’interfaccia grafica</strong></h2>\r\n<p>Rechiamoci presso il file MainMenu.xib e impostiamo l’interfaccia grafica in questo modo :</p>\r\n<p>1 textview</p>\r\n<p>1 button</p>\r\n<p>1 imageview</p>\r\n<p><a href=\"/sites/default/files/images/20120408222448.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120408222448.png\" /></a></p>\r\n<p> </p>\r\n<p>Ora non ci resta che fare tutti gli opportuni collegamenti .</p>\r\n<p>E’arrivato il momento di implementare il codice vero e proprio quindi ora tocca al file AppDelegate.m andiamo a scrivere il seguente codice :</p>\r\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\r\n <tbody>\r\n <tr>\r\n <td>\r\n <p>#import “AppDelegate.h”</p>\r\n <p>@implementation AppDelegate</p>\r\n <p>@synthesize shareButton;</p>\r\n <p>@synthesize textview;</p>\r\n <p>@synthesize imageView;</p>\r\n <p> </p>\r\n <p>- (void)dealloc</p>\r\n <p>{</p>\r\n <p>[super dealloc];</p>\r\n <p>}</p>\r\n <p>- (void)applicationDidFinishLaunching:(NSNotification *)aNotification</p>\r\n <p>{</p>\r\n <p>//inizializzo l’immagine del bottono share</p>\r\n <p>[self.shareButton setImage:[NSImage imageNamed:NSImageNameShareTemplate]];</p>\r\n <p>[self.shareButton sendActionOn:NSLeftMouseDownMask];</p>\r\n <p>}</p>\r\n <p>- (IBAction)condividi:(id)sender {</p>\r\n <p>//creiamo un mutable array per inserire al suo interno il testo e l’immagini da condividere</p>\r\n <p>NSMutableArray *shareObject=[NSMutableArray arrayWithObject:[self.textview string]];</p>\r\n <p>NSImage *image=[self.imageView image];</p>\r\n <p>if (image) {</p>\r\n <p>[shareObject addObject:image];</p>\r\n <p>}</p>\r\n <p>//creiamo l’oggetto per la condivisione lo allochiamo e lo inizializiamo con il mutable array</p>\r\n <p>NSSharingServicePicker *sharingPicker=[[NSSharingServicePicker alloc]initWithItems:shareObject];</p>\r\n <p>//impostiamo il delegate</p>\r\n <p>sharingPicker.delegate=self;</p>\r\n <p>//mostra le condivisioni</p>\r\n <p>[sharingPicker showRelativeToRect:[self.shareButton bounds] ofView:self.shareButton preferredEdge:NSMaxYEdge];</p>\r\n <p>}</p>\r\n <p>@end</p>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p> </p>\r\n<p>Il risultato finale dovrebbe essere simile a questo :</p>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120408222618.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120408222618.png\" /></a></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n','','full_html'),('node','forum',0,138,177,'und',0,'<p>Dato che sono alle prime armi nell'utilizzo di DRUPAL, volevo chiedere ai più esperti:</p>\r\n<p>è possibile creare un database e creare un modulo drupal che interagisca con esso? se si in che modo?<br />\r\n mi potete fare un semplice e banale esempio su una tabella?</p>\r\n<p>le tabelle devo crearle all'interno del db di drupal? oppure posso usare un DB a parte?</p>\r\n<p>se devo usare tabelle mie ''personali'' integrate nel db di drupa, come faccio a rendere ''generale'' il modulo se devo comunque indicare in PHP che la connession al db deve essere effettuata su quelle tabelle?</p>\r\n<p>Ho sentito parlare del modulo WEB FORM di drupal. potrebbe rappresentare una partenza per creare un modulo che interagisca con un DB?</p>\r\n<p>come faccio poi a gestire chi può usare il modulo e chi no?</p>\r\n<p>Ho un pò di confusione a riguardo. Vi prego di istruirmi e di darmi una mano, magari consigli su come poter sviluppare questo applicativo. Vi ringrazio</p>\r\n','','filtered_html'),('node','forum',0,139,178,'und',0,'<p><span class=\"messageBody\" data-ft=\"{"type":3}\"><span class=\"userContent\"><span>Ho installato FRAPI seguendo la guida passo passo, ma lanciando il server, al link students.uniphartenope.it:NUM_</span><wbr />PORTA mi da schermata bianca..a qualcun'altro è capitata sta cosa?</span></span></p>\r\n<p>Qualche consiglio?</p>\r\n','','filtered_html'),('node','blog',0,140,179,'und',0,'<p>Da quest'articolo potete scaricare la presentazione e il programma MJP. Il jar non funziona ancora al 100%, per cui vi lascio i file scompattati.<br />\r\n Avviatelo dalla riga di comando o se utilizzate sistemi operativi Windows potete lanciare con lo script "start" presente nei file.</p>\r\n<p>Il tutto si trova in un unico zip scaricabile da questo link: <a href=\"/sites/default/files/files/progetto.zip\">progetto.zip</a></p>\r\n<p>Nei prossimi articoli, vedremo come utilizzare programmi esterni con java.</p>\r\n<p> </p>\r\n<p> </p>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/119\"><<Make Java Projects - Tutorial</a><br />\r\n </p>\r\n<p class=\"rtecenter\"><strong><span style=\"font-size: 16px; \"><a href=\"http://students.uniparthenope.it/?q=node/103\"><span style=\"color: rgb(0, 0, 205); \">1</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color: rgb(0, 0, 205); \">2</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color: rgb(0, 0, 205); \">3</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color: rgb(0, 0, 205); \">4</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/114\"><span style=\"color: rgb(0, 0, 205); \">5</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color: rgb(0, 0, 205); \">6</span></a><span style=\"color: rgb(0, 0, 205); \"> -</span> <a href=\"http://students.uniparthenope.it/?q=node/119\"><span style=\"color:#0000cd;\">7</span></a><span style=\"color:#0000cd;\"> </span><span style=\"color:#0000cd;\">-</span><span style=\"color: rgb(255, 0, 0); \"> 8</span></span></strong></p>\r\n<div>\r\n </div>\r\n','','full_html'),('node','forum',0,141,180,'und',0,'<p> </p>\r\n<p class=\"p1\">Salve a tutti!</p>\r\n<p class=\"p1\">Stavo leggendo un po' di documentazione...oltre alle classiche api di prenotazione esami e piano di studi, esiste un API che restituisca l'anagrafica dalla matricola o le tasse pagate??</p>\r\n<p class=\"p2\">C'è qualche db da consultare nel caso ci fosse la necessità di crearle??</p>\r\n<p class=\"p1\">Grazie. </p>\r\n','','filtered_html'),('node','forum',0,142,181,'und',0,'<p>Misteriosamente... l' API della biblioteca non è più reperibile. Qualcuno potrebbe aiutarmi a capire?</p>\r\n<p>Come è possibile che il virtual server smetta di funzionare improvvisamente (sempre che sia questo il problema)?</p>\r\n<p>http://students.uniparthenope.it:19091/library.json?request=giunta</p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,144,182,'und',0,'<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120909090957.jpeg\" /></p>\r\n<p><span style=\"font-size:14px;\">BTChat è una semplice libreria che permette di creare in maniere facile e veloce una chat per dispositivi ios .</span></p>\r\n<p><span style=\"font-size:14px;\">La comunicazione viene effettuata tramite il BT.</span></p>\r\n<p><span style=\"font-size:14px;\">La prima cosa da fare ovviamente è scaricare la libreria dal seguente indirizzo <a href=\"https://github.com/flexkid/BTChat\">link</a></span></p>\r\n<p><span style=\"font-size:14px;\">Questa classe necessita del framework <span style=\"color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif; line-height: 22px; \">GameKit quindi importatelo all'interno del vostro progetto , il prossimo passo è quello di importare i duei file </span></span><span style=\"color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; \">BTChat.h e .m all'interno del vostro programma . </span></p>\r\n<p><font color=\"#333333\" face=\"Helvetica, arial, freesans, clean, sans-serif\"><span style=\"font-size: 14px; line-height: 22px;\">All'interno del file scaricato potete trovare un progetto d'esempio come potete notare il tutto è realmente molto semplice .</span></font></p>\r\n<p><font color=\"#333333\" face=\"Helvetica, arial, freesans, clean, sans-serif\"><span style=\"font-size: 14px; line-height: 22px;\">Spero che vi possa essere utile ^_^</span></font></p>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,145,184,'und',0,'<p>In questo tutorial vedremo come mandare in esecuzione altri programmi installati sul proprio pc utilizzando java.</p>\r\n<p>La classe da utilizzare è Process con il metodo Runtime.getRuntime().exec(); Process è una classe che appartiene al package "java.io"; può creare eccezioni di tipo "IOException", quindi la gestiamo con un blocco di try e catch.</p>\r\n<p>Quando utilizziamo questa classe, dobbiamo tener presente che essa opera esternamente alla Java Virtual Machine, pertanto può introdurre problemi di portabilità delle vostre applicazioni tra i diversi sistemi operativi.</p>\r\n<p>Per risolvere tale problema possiamo implementare un blocco d’istruzioni per ogni piattaforma e versione, poiché un blocco di codice implementato per Windows 7 può non funzionare per Windows XP (ovviamente può anche funzionare, quindi testate l'applicazione prima di implementare).</p>\r\n<p>Documentazione Oracle: <a href=\"http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html\">http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html</a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p>Esempio:</p>\r\n<pre>\r\nimport java.io.*;\r\n\r\nclass esempio{\r\n public static void main(String [] args){\r\n /*inserite il percorso del software da aprire;\r\n sotto piattaforma Windows bisogna inserire doppio "\\\\" invece di '\\'\r\n per definire le path, ad esempio*/\r\n String soft="C:\\\\Program Files\\\\CCleaner\\\\CCleaner.exe";\r\n \r\n //definire i blocchi di try e catch\r\n try{Process RunExe=Runtime.getRuntime().exec(soft);}\r\n catch(IOException e){\r\n System.out.println("ERRORE: software o percorso non trovato!");\r\n };\r\n }\r\n}\r\n\r\n</pre>\r\n','','full_html'),('node','new',0,146,185,'und',0,'<p>Da oggi è possibile utilizzare i database Oracle all'interno delle proprie pagine web in php mantenute nello spazio web linux offerto dal Progetto Sebeto.</p>\r\n<p>Documentazione a riguardo è consultabile qui: http://st-curriculum.oracle.com/obe/db/11g/r2/prod/appdev/opensrclang/phphol2010_db/php_db.htm</p>\r\n<p>NB: Non è necessario impostare l'ambiente. I database Oracle sono già usabili da PHP</p>\r\n<p>NB: Al momento non è disponibile alcun server demo, nè server dedicati alle attività degli studenti, è da ricordare, invece, il server mysql che supporta i database degli utenti. Per l'amministrazione usare http://students.uniparthenope.it/phpmyadmin con le proprie credenziali contenute nel file README presente nella propria directory $HOME.</p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,147,186,'und',0,'<p>Le API dell'università Parthenope sono in continua espansione grazie a programmatori come voi, oggi voglio presentarvi la mia.</p>\r\n<h1>\r\n RESTful Insegnamenti API</h1>\r\n<p><span>Pubblicata una prima versione dell'interfaccia RESTful per gli insegnamnti svolti della nostra università.</span></p>\r\n<h1>\r\n <span>Recupero Insegnamenti</span></h1>\r\n<p>Per recuperare gli insegnamenti disponibili ci basterà richiamare tramite GET la pagina base</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/insegnamenti.php</code></p>\r\n<p>In questo modo otterremo una risposta davvero enorme vista la quantità di insegnamenti disponibili, quindi possiamo sfruttare il parametro facoltativo <em>limit </em>che ci permetterà di limitare il risulato in questo modo:</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/insegnamenti.php?limit=3</code></p>\r\n<p>La risposta, in <em>application/json </em>sarà simile a questa:</p>\r\n<p><code>{<br />\r\n"meta": {<br />\r\n"total": 3,<br />\r\n"code": "200"<br />\r\n},<br />\r\n"insegnamento": [<br />\r\n{<br />\r\n"COD_INSE": "130",<br />\r\n"DESCRIZIONE": "ECONOMIA E FINANZA DELLE IMPRESE DI ASS.",<br />\r\n"DESC_BREVE": "ECONOMIA E FINANZA DELLE IMPRESE DI ASS.",<br />\r\n"DESCRIZIONE_NOITA": "INSURANCE ECONOMICS AND FINANCE"<br />\r\n},<br />\r\n{<br />\r\n"COD_INSE": "131",<br />\r\n"DESCRIZIONE": "ECONOMIA E FINANZA ORGANIZZ.COMPLESSE",<br />\r\n"DESC_BREVE": "ECONOMIA E FINANZA ORGANIZZ.COMPLESSE",<br />\r\n"DESCRIZIONE_NOITA": null<br />\r\n},<br />\r\n{<br />\r\n"COD_INSE": "132",<br />\r\n"DESCRIZIONE": "ECONOMIA E POLITICA AGRARIA",<br />\r\n"DESC_BREVE": "ECONOMIA E POLITICA AGRARIA",<br />\r\n"DESCRIZIONE_NOITA": null<br />\r\n}<br />\r\n<br />\r\n...<br /><br />\r\n ],<br />\r\n "disclaimer": {<br />\r\n "Description": null,<br />\r\n "Version": "1.0",<br />\r\n "Author": "Fabio Nisci",<br />\r\n "Author URI": "http:\\/\\/www.fabiosoft.com"<br />\r\n }<br />\r\n }</code></p>\r\n<h3>\r\n Note finali</h3>\r\n<p>Errori: Codice 200 -> tutto ok</p>\r\n<p>Errore 500 errore del server</p>\r\n<p>altro -> errore connessione db</p>\r\n<p>PARAMS limit -> imposta il limite delle righe ricevuto se non c'è le visualizza tutte</p>\r\n<p>In questo modo avremo a disposizione tutte le informazioni che ci interessano.</p>\r\n','','filtered_html'),('node','blog',0,148,187,'und',0,'<p>Le API dell'università Parthenope sono in continua espansione grazie a programmatori come voi, oggi voglio presentarvi la mia.</p>\r\n<h1>\r\n RESTful Corsi API</h1>\r\n<p><span>Pubblicata una prima versione dell'interfaccia RESTful per gli corsi svolti della nostra università.</span></p>\r\n<h1>\r\n <span>Recupero Corsi</span></h1>\r\n<p>Per recuperare i corsi di Laurea disponibili ci basterà richiamare tramite GET la pagina base</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/corsi.php</code></p>\r\n<p>In questo modo otterremo una risposta davvero enorme vista la quantità di corsi disponibili, quindi possiamo sfruttare il parametro facoltativo <em>limit </em>che ci permetterà di limitare il risulato in questo modo:</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/corsi.php?limit=3</code></p>\r\n<p>La risposta, in <em>application/json </em>sarà simile a questa:</p>\r\n<p><code>{<br />\r\n"meta": {<br />\r\n"total": 3,<br />\r\n"code": "200"<br />\r\n},<br />\r\n"corso": [<br />\r\n{<br />\r\n"COD_CORSO": "2002",<br />\r\n"DESCRIZIONE": "MATEMATICA",<br />\r\n"DESC_BREVE": "MATEMATICA",<br />\r\n"CODICE_MURST": "10101",<br />\r\n"DESCRIZIONE_NOITA": null<br />\r\n},<br />\r\n{<br />\r\n"COD_CORSO": "2003",<br />\r\n"DESCRIZIONE": "FISICA",<br />\r\n"DESC_BREVE": "FISICA",<br />\r\n"CODICE_MURST": "10102",<br />\r\n"DESCRIZIONE_NOITA": null<br />\r\n},<br />\r\n{<br />\r\n"COD_CORSO": "2004",<br />\r\n"DESCRIZIONE": "ASTRONOMIA",<br />\r\n"DESC_BREVE": "ASTRONOMIA",<br />\r\n"CODICE_MURST": "10103",<br />\r\n"DESCRIZIONE_NOITA": null<br />\r\n}<br />\r\n],<br />\r\n"disclaimer": {<br />\r\n"Description": "Corsi di Laurea Universit\\u00e0 Parthenope",<br />\r\n"Version": "1.0",<br />\r\n"Author": "Fabio Nisci",<br />\r\n"Author URI": "http:\\/\\/www.fabiosoft.com"<br />\r\n}<br />\r\n}</code></p>\r\n<p>Possiamo inoltre usare il parametro <em>desc </em>che ci permetterà di "ricercare" un determinato corso per descrizione, ricordiamoci solo di sostituire i caratteri speciali come lo spazio con i relativi HTMLpercent escape:</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/corsi.php?desc=ingegneria%20info</code></p>\r\n<p>ed otterremo una risultato simile a questo:</p>\r\n<p>{<br />\r\n "meta": {<br />\r\n "total": 6,<br />\r\n "code": "200"<br />\r\n },<br />\r\n "corso": [<br />\r\n {<br />\r\n "COD_CORSO": "2217",<br />\r\n "DESCRIZIONE": "INGEGNERIA INFORMATICA",<br />\r\n "DESC_BREVE": "INGEGNERIA INFORMATICA",<br />\r\n "CODICE_MURST": "20515",<br />\r\n "DESCRIZIONE_NOITA": null<br />\r\n },<br />\r\n {<br />\r\n "COD_CORSO": "2218",<br />\r\n "DESCRIZIONE": "INGEGNERIA INFORMATICA E AUTOMATICA",<br />\r\n "DESC_BREVE": "INGEGNERIA INFORMATICA E AUTOMATICA",<br />\r\n "CODICE_MURST": "20516",<br />\r\n "DESCRIZIONE_NOITA": null<br />\r\n },</p>\r\n<p>....</p>\r\n<p><br />\r\n }</p>\r\n<h3>\r\n Note finali</h3>\r\n<p><br />\r\n Codice 200 -> tutto ok<br />\r\n Errore 430 -> errore nei parametri<br />\r\n Errore 500 errore del server, altro -> errore connessione db</p>\r\n<p>PARAMETRI<br />\r\n limit -> imposta il limite delle righe ricevuto se non c'è le visualizza tutte<br />\r\n desc -> cerca nei corsi per descrizione</p>\r\n<p><em>entrambi i parametri sono facoltativi, ma non possono essere usati insieme.</em></p>\r\n<p>In questo modo avremo a disposizione tutte le informazioni che ci interessano.</p>\r\n','','filtered_html'),('node','blog',0,149,188,'und',0,'<h1>\r\n RESTful Insegnamenti - Corsi API</h1>\r\n<p><span>Pubblicata una prima versione dell'interfaccia RESTful per gli insegnamnti svolti della nostra università.</span></p>\r\n<h1>\r\n <span>Recupero Insegnamenti in base al Corso di Laurea</span></h1>\r\n<p>Per recuperare i corsi di Laurea disponibili ci basterà richiamare tramite GET la pagina base</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/corsi.php</code></p>\r\n<p><code>{<br />\r\n"meta": {<br />\r\n"total": 3,<br />\r\n"code": "200"<br />\r\n},<br />\r\n"corso": [<br />\r\n{<br />\r\n"COD_CORSO": "2002",<br />\r\n"DESCRIZIONE": "MATEMATICA",<br />\r\n"DESC_BREVE": "MATEMATICA",<br />\r\n"CODICE_MURST": "10101",<br />\r\n"DESCRIZIONE_NOITA": null<br />\r\n},<br /> \r\n...\r\n<br />\r\n}<br />\r\n],<br />\r\n"disclaimer": {<br />\r\n"Description": "Corsi di Laurea Universit\\u00e0 Parthenope",<br />\r\n"Version": "1.0",<br />\r\n"Author": "Fabio Nisci",<br />\r\n"Author URI": "http:\\/\\/www.fabiosoft.com"<br />\r\n}<br />\r\n}</code></p>\r\n<p>In questo modo otterremo in risposta una lista di tutti i corsi di laurea che possiamo filtrare in base alle regola già documentate nell'API relativa ai corsi. Il dato che ci interessa è quello contenuto nella chiave: <code></code>"<code>COD_CORSO</code>" che ci permtterà di filtrare gli insegnamenti in base al corso di laurea richiesto.</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/insegnamenti_corsi.php?cdl=XXX</code></p>\r\n<p>Una volta ottenuto il codice del corso, possiamo inserirlo nel paramtro <em>cdl </em>presente nell'api <strong>insegnamenti-corsi.</strong></p>\r\n<p>La risposta, in <em>application/json </em>sarà simile a questa:</p>\r\n<p>{<br />\r\n "meta": {<br />\r\n "total": 76,<br />\r\n "code": "200"<br />\r\n },<br />\r\n "insegnamento": [<br />\r\n {<br />\r\n "COD_INSE": "469",<br />\r\n "DESCRIZIONE": "FISICA GENERALE II",<br />\r\n "DESC_BREVE": "FISICA GENERALE II",<br />\r\n "DESCRIZIONE_NOITA": "GENERAL PHYSICS II"<br />\r\n },<br />\r\n {<br />\r\n "COD_INSE": "1ING",<br />\r\n "DESCRIZIONE": "GEOMETRIA I",<br />\r\n "DESC_BREVE": "GEOMETRIA I",<br />\r\n "DESCRIZIONE_NOITA": "GEOMETRY I"<br />\r\n },<br />\r\n {<br />\r\n "COD_INSE": "7IM",<br />\r\n "DESCRIZIONE": "ANALISI MATEMATICA I CFU 6",<br />\r\n "DESC_BREVE": "ANALISI MATEMATICA I CFU 6",<br />\r\n "DESCRIZIONE_NOITA": "MATHEMATICAL ANALYSIS I"<br />\r\n },<br />\r\n {</p>\r\n<p>...</p>\r\n<p>}</p>\r\n<p>PS: il codice per Informatica è "0124"</p>\r\n<h3>\r\n Note finali</h3>\r\n<p>Codice 200 -> tutto ok<br />\r\n Errore 400 -> parametro mancante<br />\r\n Errore 500 errore del server, altro -> errore connessione db</p>\r\n<p>PARAMS<br />\r\n cdl -> codice del corso di laurea da cui estrarre gli insegnamenti. Ricavarlo dall'api "corsi"</p>\r\n<p>In questo modo avremo a disposizione tutte le informazioni che ci interessano.</p>\r\n','','filtered_html'),('node','forum',0,150,189,'und',0,'<p>SALVE..!!!</p>\r\n<p>ESSENDO IL MIO PRIMO ACCESSO IN SEBETO</p>\r\n<p>VOLEVO DELLE DRITTE PER POTER CARICARE LE MIE PAGINE DI PROVA </p>\r\n<p>SULL'INDIRIZZO STUDENTS.UNIPARTHENOPE/.......(MATRICOLA)</p>\r\n<p>COME SI FA'....</p>\r\n','','filtered_html'),('node','forum',0,151,190,'und',0,'<p>Il titolo della discussione rende tutto...sono impossibilitato ad usare FRAPI per rendere pubbliche le api sviluppate, ma finchè ci poteva essere errore nel codice stavo tentando una soluzione (nonostante lo script funzionasse senza errori all'esterno di FRAPI). </p>\r\n<p>Mi restituiva sempre questo messaggio:</p>\r\n<p>http://imageshack.us/photo/my-images/11/schermata092456184alle1.png/</p>\r\n<p><img alt=\"\" src=\"http://imageshack.us/a/img11/5549/schermata092456184alle1.png\" /></p>\r\n<p>fino a ieri mattina tutto ok...poi nel pomeriggio il nulla! È persino sparita la possibilità di sincronizzare le nuove Action, quindi tutto fermo.</p>\r\n<p>http://imageshack.us/photo/my-images/827/schermata092456184alle1.png/</p>\r\n<p><img alt=\"\" src=\"http://imageshack.us/a/img827/5549/schermata092456184alle1.png\" /></p>\r\n<p>Qualcuno ha idee o suggerimenti su come risolvere?</p>\r\n<p>Qualunque idee è bene accetta.</p>\r\n<p>Ciao</p>\r\n','','filtered_html'),('node','blog',0,152,191,'und',0,'<p>Dopo molto lavoro sono felice di annunciare a tutti voi la realizzazione dell'API di <strong>autenticazione</strong> degli studenti!</p>\r\n<p>Passando i parametri di matricola e password verifica e risponde se l'utente esiste oppure no, da l', da un'API terza possiamo effettuare tutte le nostre operazioni che magari richiedono l'autenticità di matricola e password.</p>\r\n<h1>\r\n Vediamo come funziona:</h1>\r\n<p>GET http://students.uniparthenope.it:54379/authentication.json?username=XXXXXXX&password=XXXXXX</p>\r\n<p>(ovviamente al posto delle X andranno i nostri dati personali)</p>\r\n<p>In caso di <strong>esistenza </strong>dello studente riceveremo una risposta positiva di messaggio sia di codice 200 come al solito.</p>\r\n<div>\r\n {</div>\r\n<div>\r\n "meta": {</div>\r\n<div>\r\n "Message": "Utente trovato",</div>\r\n<div>\r\n "code": "200"</div>\r\n<div>\r\n },</div>\r\n<div>\r\n </div>\r\n<div>\r\n In caso di <strong>inesistenza</strong> invece riceveremo una risposta negativa.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <div>\r\n "meta": {</div>\r\n <div>\r\n "Message": "Utente non trovato",</div>\r\n <div>\r\n "code": "404"</div>\r\n <div>\r\n },</div>\r\n</div>\r\n<p>Un modo davvero semplice che vi permetterà di risparmiare molte operazioni solo per la verifica delle informazioni ricevute dall'utente.</p>\r\n<h1>\r\n Vediamo un esempio su come possiamo usare l'API in <em>PHP:</em></h1>\r\n<p>if((isset($_GET['username']) && isset($_GET['password']))){</p>\r\n<p>//verifico credenziali</p>\r\n<div>\r\n $url = sprintf("http://students.uniparthenope.it:54379/authentication.json?username=%s&password=%s",$_GET['username'],$_GET['password']);<span class=\"Apple-tab-span\"> </span></div>\r\n<div>\r\n $s = curl_init($url);</div>\r\n<div>\r\n curl_setopt($s, CURLOPT_RETURNTRANSFER, TRUE);</div>\r\n<div>\r\n $json = curl_exec($s);</div>\r\n<div>\r\n curl_close($s);</div>\r\n<div>\r\n $obj = json_decode($json);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (isset($obj->{'meta'}->{'code'}) && $obj->{'meta'}->{'code'}=='200'){</div>\r\n<div>\r\n //Lo studente esiste</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else{</div>\r\n<div>\r\n //Lo studente non esiste</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n Ho usato le variabili username e password passate via GET ma l'utilizzo è pressocchè identico se usato altri metodi per passare le variabili.</div>\r\n<h1>\r\n Note Finali:</h1>\r\n<div>\r\n Codice 200 -> tutto ok</div>\r\n<div>\r\n Errore 400 -> parametri mancanti</div>\r\n<div>\r\n Errore 404 -> utente non esistente</div>\r\n<div>\r\n Errore 500 errore del server, altro -> errore connessione db</div>\r\n<div>\r\n </div>\r\n<div>\r\n PARAMS</div>\r\n<div>\r\n username, password</div>\r\n<p>In questo modo avremo a disposizione tutte le informazioni che ci interessano.</p>\r\n','','full_html'),('node','blog',0,153,192,'und',0,'<h1>\r\n RESTful Versamenti Effettuati API</h1>\r\n<div>\r\n Pubblicata una prima versione dell'interfaccia RESTful per i <strong>versamenti effettuati</strong> (pagati) verso la nostra università.</div>\r\n<h1>\r\n Recupero Versamenti</h1>\r\n<div>\r\n Per recuperare i versanti ci basterà richiamare tramite GET la pagina base</div>\r\n<div>\r\n </div>\r\n<div>\r\n GET http://students.uniparthenope.it:54379/payments.json?username=XXX&password=XXX</div>\r\n<div>\r\n </div>\r\n<div>\r\n In questo modo otterremo una risposta breve e concisa sulla situazione dell'utente.</div>\r\n<div>\r\n </div>\r\n<div>\r\n La risposta, in <em>application/json</em> sarà simile a questa:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <div>\r\n {</div>\r\n <div>\r\n "meta": {</div>\r\n <div>\r\n "total": 9,</div>\r\n <div>\r\n "code": "200"</div>\r\n <div>\r\n },</div>\r\n <div>\r\n "data": [</div>\r\n <div>\r\n {</div>\r\n <div>\r\n "COD_VERS": "1001",</div>\r\n <div>\r\n "DESCRIZIONE": "VERSAMENTO PRIMA RATA",</div>\r\n <div>\r\n "IMPORTO": "287"</div>\r\n <div>\r\n },</div>\r\n <div>\r\n {</div>\r\n <div>\r\n ...</div>\r\n <div>\r\n }</div>\r\n</div>\r\n<div>\r\n </div>\r\n<div>\r\n Nel caso volessimo i <a href=\"http://students.uniparthenope.it/?q=node/154\"><strong>pagamenti in debito</strong></a> dobbiamo rivolgerci all'apposita API.</div>\r\n<h1>\r\n Note finali</h1>\r\n<div>\r\n <div>\r\n Codice 200 -> tutto ok</div>\r\n <div>\r\n Errore 431 -> parametro mancante</div>\r\n <div>\r\n Errore 500 errore del server, altro -> errore connessione db</div>\r\n <div>\r\n </div>\r\n <div>\r\n PARAMS</div>\r\n <div>\r\n username, password -> credenziali studente</div>\r\n</div>\r\n<div>\r\n </div>\r\n<div>\r\n In questo modo avremo a disposizione tutte le informazioni che ci interessano.</div>\r\n<div>\r\n </div>\r\n','','filtered_html'),('node','blog',0,154,193,'und',0,'<h1>\r\n RESTful Versamenti in Debito API</h1>\r\n<div>\r\n Pubblicata una prima versione dell'interfaccia RESTful per i <strong>versamenti in debito</strong> (da pagare) verso la nostra università.</div>\r\n<h1>\r\n Recupero Versamenti</h1>\r\n<div>\r\n Per recuperare i versanti ci basterà richiamare tramite GET la pagina base</div>\r\n<div>\r\n </div>\r\n<div>\r\n GET http://students.uniparthenope.it:54379/duepayments.json?username=XXX&password=XXX</div>\r\n<div>\r\n </div>\r\n<div>\r\n In questo modo otterremo una risposta breve e concisa sulla situazione dell'utente.</div>\r\n<div>\r\n </div>\r\n<div>\r\n La risposta, in <em>application/json</em> sarà simile a questa:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <div>\r\n {</div>\r\n <div>\r\n "meta": {</div>\r\n <div>\r\n "total": 2,</div>\r\n <div>\r\n "code": "200"</div>\r\n <div>\r\n },</div>\r\n <div>\r\n "data": [</div>\r\n <div>\r\n {</div>\r\n <div>\r\n "COD_VERS": "1001",</div>\r\n <div>\r\n "DESCRIZIONE": "VERSAMENTO PRIMA RATA",</div>\r\n <div>\r\n "IMPORTO": "290"</div>\r\n <div>\r\n },</div>\r\n <div>\r\n {</div>\r\n <div>\r\n ...</div>\r\n <div>\r\n }</div>\r\n <div>\r\n </div>\r\n</div>\r\n<div>\r\n </div>\r\n<div>\r\n Nel caso volessimo i <a href=\"http://students.uniparthenope.it/?q=node/153\"><strong>pagamenti effettuati</strong> </a>dobbiamo rivolgerci all'apposita API.</div>\r\n<h1>\r\n Note finali</h1>\r\n<div>\r\n <div>\r\n Codice 200 -> tutto ok</div>\r\n <div>\r\n Errore 431 -> parametro mancante</div>\r\n <div>\r\n Errore 500 errore del server, altro -> errore connessione db</div>\r\n <div>\r\n </div>\r\n <div>\r\n PARAMS</div>\r\n <div>\r\n username, password -> credenziali studente</div>\r\n</div>\r\n<div>\r\n </div>\r\n<div>\r\n In questo modo avremo a disposizione tutte le informazioni che ci interessano.</div>\r\n<div>\r\n </div>\r\n','','filtered_html'),('node','blog',0,156,195,'und',0,'<p>In questo articolo vorrei descrivervi brevemente come utilizzare le api studenti con Arduino + Ethernet Shield.</p>\r\n<p>Utilizzando lo sketch già pronto <strong>WebClient</strong> reperibile all’interno dell’ide Arduino in File->Esempi->Ethernet basta modificare semplicemente lo sketch in questo modo:</p>\r\n<h2>\r\n Modifica 1:</h2>\r\n<pre>\r\n<span style=\"color: #CC6600;\">IPAddress</span> server(192,167,9,33); <span style=\"color: #7E7E7E;\">// IP di students.uniparthenope.it</span> </pre>\r\n<h2>\r\n Modifica 2:</h2>\r\n<pre>\r\n <span style=\"color: #CC6600;\">if</span> (client.<span style=\"color: #CC6600;\">connect</span>(server, 54379)) { \r\n <span style=\"color: #7E7E7E;\">//il client si collega all'indirizzo server con porta 54379</span>\r\n <span style=\"color: #CC6600;\"><b>Serial</b></span>.<span style=\"color: #CC6600;\">println</span>(<span style=\"color: #006699;\">"connected"</span>);\r\n <span style=\"color: #7E7E7E;\">// Costruzione della chiamata http standar 1.1</span>\r\n client.<span style=\"color: #CC6600;\">println</span>(<span style=\"color: #006699;\">"GET /authentication.json?username=0108001007&password=PASSWORD HTTP/1.1"</span>);\r\n <span style=\"color: #7E7E7E;\">//Importante: nello standar 1.1 è necessario inserire anche la riga host</span>\r\n client.<span style=\"color: #CC6600;\">println</span>(<span style=\"color: #006699;\">"Host: studentes.uniparthenope.it:54379"</span>); \r\n <span style=\"color: #7E7E7E;\">//chiudere sempre con una new-line</span>\r\n client.<span style=\"color: #CC6600;\">println</span>(); \r\n }\r\n\r\n</pre>\r\n<h2>\r\n Output dal monitor seriale:</h2>\r\n<pre style=\"background:#000;color:#f8f8f8\">\r\nconnecting...\r\nconnected\r\nHTTP/1.1 200 OK\r\nServer: nginx/1.2.1\r\nDate: Fri, 21 Sep 2012 17:00:43 GMT\r\nContent-Type: application/json; charset=utf-8\r\nTransfer-Encoding: chunked\r\nConnection: keep-alive\r\nX-Powered-By: PHP/5.3.10-1ubuntu3.2\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Headers: *\r\nAccess-Control-Allow-Credentials: true\r\nAccess-Control-Allow-Methods: POST,GET,PUT,DELETE,HEAD\r\nAccess-Control-Max-Age: 604800\r\n\r\nbf\r\n{"meta":{"Message":"Utente trovato","code":"200"},"disclaimer":{"Description":"Verifica esistenza studente.","Version":"1.0","Author":"Fabio Nisci","Author URI":"http:\\/\\/www.fabiosoft.com"}}\r\n0\r\n\r\n\r\ndisconnecting.\r\n\r\n</pre>\r\n<h2>\r\n </h2>\r\n<h2>\r\n Esempi di casi d'uso:</h2>\r\n<p>Dare accesso a livello <em>hardware</em> ai soli studenti della nostra Università: a strumentazioni di laboratorio (stampanti, cnc, etc), aree ad eccesso limitato (tipo badge)...</p>\r\n<p> </p>\r\n<p> </p>\r\n<p class=\"rtecenter\"><span style=\"font-size:16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n','','full_html'),('node','blog',0,157,196,'und',0,'<p>Queste le slide del corso!</p>\r\n<p>http://box.uniparthenope.it/public.php?service=files&token=f83d7bd0cdd01eb732b416e65468940f1bb67820&file=/inserimento-mondo-lavoro/scienzeTecnologieLavoro_02.pptx</p>\r\n<p> </p>\r\n','','filtered_html'),('node','new',0,158,197,'und',0,'<p>Cari,</p>\r\n<p>vi invito a partecipare alle borse Google.</p>\r\n<p>Tutti i dettagli ed il modulo di partecipazione qui: http://www.google.com/intl/en/jobs/students/tech/internships/</p>\r\n<p>E' una grande opportunità da non perdere.</p>\r\n<p>Il forum dedicato alle disctussioni su questo argomento è raggiungibile facendo click <a href=\"http://students.uniparthenope.it/?q=forum/10\">qui</a>.</p>\r\n<p>Happy google-coding!</p>\r\n<p> </p>\r\n','','filtered_html'),('node','new',0,159,198,'und',0,'<p>In tema di internship questo è veramente cool, specialmente per i multimediali: https://jobs.ea.com/students/</p>\r\n<p>Non esitate a partecipare!</p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,160,199,'und',0,'<p>Oramai lo sapete...ho realizzato diverse API per la nostra Università Parthenope, ed ancora ho qualche asso nella manica in sviluppo...</p>\r\n<p>Oggi vi voglio presentare <strong><em>NISCIdocs</em></strong>!</p>\r\n<h3>\r\n Cos'è NISCIdocs?</h3>\r\n<p>NISCIidocs è una specifica implementazione di un "<em>framework</em>" completo per la descrizione, produzione, consumo, e visualizzare di <em>RESTful web services</em>. L'obiettivo principale di NISCIdocs è quello di distribuire, a sistemi client e sviluppatori, la documentazione per aggiornare allo stesso ritmo del server. La documentazione di metodi, parametri e modelli sono strettamente integrate nel codice server, consentendo alle API ed ai client di rimanere sempre in sincronia. Con NISCIdocs, la distribuzione, gestione, e l'utilizzo di API potenti non è mai stato così <strong>facile</strong>.</p>\r\n<h3>\r\n Perché è utile NISCIdocs?</h3>\r\n<div>\r\n Risolve contemporaneamente le esigenze di server, client e documentazione. Senza avere nessuna conoscenza o applicazione esterne lo sviluppatore terzo è in grado, compilando delle semplici caselle di input, di effettuare chiamate alla API e contgrollarne immediatamente il risultato. Le chiamate GET, PUT, POST e DELETE non sarrano più un mistero implementativo.</div>\r\n<div>\r\n </div>\r\n<hr />\r\n<div>\r\n Trovate tutto su <a href=\"http://students.uniparthenope.it/~0124000074/greta/viewer.html\">http://bit.ly/nisciDocsViewer</a> dov'è presente un viewer con le API da me realizzate e la loro documentazione dettagliata, a breve la home page si arrichirà di strumenti nuovi.</div>\r\n<div>\r\n </div>\r\n<div>\r\n Attendo idee, pareri e suggerimenti in un commento a questo articolo, oppure inviandomi una email a fabio.nisci@studenti.uniparthenope.it</div>\r\n<div>\r\n </div>\r\n<div>\r\n Saluti</div>\r\n','','filtered_html'),('node','blog',0,161,200,'und',0,'<h1 class=\"rtecenter\">\r\n <span style=\"font-family:lucida sans unicode,lucida grande,sans-serif;\"><strong>Bones | and | Dogs</strong></span></h1>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><em>Bones and Dogs</em> è un gioco ARCADE, ambientato in un normale giardinetto di casa. Il gioco consiste, comandando tramite tasti direzionali un cagnolino, di raccogliere all'interno del giardino quanti più ossicini possibili, in modo da totalizzare quanti più punti possibili. </span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Durante il gioco, il cane comandato dall'utente, attenderà il lancio di ossicini all'interno del giardino, che saranno lanciati a loro volta da un ragazzo. La difficoltà del gioco stà nell'evitare degli oggetti (che elencheremo nei prossimi post) che verranno lanciati insieme agli ossicini. Se si calpestano tali oggetti, il gioco finisce. All'interno del giardino saranno presenti Rocce e alberi per non rendere la vita facile al giocatore che comanda il nostro cagnolino.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>IDEE per implementazioni future:</strong> Durante il gioco, la velocità del lancio di oggetti (ossicini e oggetti che provocano il Game Over) aumenterà in modo da aumentare notevolmente le difficoltà di gioco.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Il Game verrà implementato in <strong>Java </strong>(per l'esame di programmazione III), sviluppato utilizzando l'IDE NetBeans 7.2. La descrizione del gioco avverrà in modo più dettagliata nei prossimi articoli, anche perchè con esempi illustrativi il gioco verrà reso più chiaro a chi li leggerà. L'implementazione della finestra di gioco verrà implementata come descritto nell'immagine sottostante:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i50.tinypic.com/2r5szed.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nella <strong>Finestra di Gioco</strong> faremo muovere tramite tasti direzionali il nostro cagnolino per raccogliere gli oggetti che verranno lanciati dalla sinistra della finestra di gioco.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Seguirà nel blocco dell' <strong>Animazione Uomo</strong> l'animazione del ragazzo che lancerà gli oggetti. Si tenderà a far coincidere i tempi dell'animazione con i tempi di lancio in modo da rendere quasi reale il lancio di oggetti.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Infine nel blocco <strong>Stat e Score</strong> verranno visualizzati il punteggio accumulato, e le vite disponibili del cane. NB: non è ancora deciso se segnalare il Game Over subito, oppure dopo la perdita di un TOT di vite. Verrà deciso in che modo nei prossimi articoli.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">nel prossimo Articolo illustreremo la creazione della finestra di gioco, con l'aggiunta di uno sfondo grafico in Java, e in che modo far interagire il nostro cagnolino all'interno di essa.</span></p>\r\n<p> </p>\r\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\r\n<center>\r\n <p><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\"><font color=\"red\"><b>1</b></font></a> - <a href=\"http://students.uniparthenope.it/?q=node/163\"> 2 </a> - <a href=\"http://students.uniparthenope.it/?q=node/176\"> 3 </a> - <a href=\"http://students.uniparthenope.it/?q=node/188\"> 4 </a> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\r\n <p> </p>\r\n</center>\r\n','','full_html'),('node','blog',0,162,201,'und',0,'<p> </p>\r\n<h1 class=\"rtecenter\">\r\n <span style=\"font-size:28px;\"><strong>Introduzione</strong></span></h1>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">Questa app, permette a tutti coloro che vogliono intraprendere la carriera universitaria, di effettuare la scelta più giusta, secondo le proprie abilità.\r\n\r\nEssa è stata sviluppata per l’OS Android (di Google) e per la nostra università ( Università degli studi di Napoli Parthenope).\r\n\r\n\r\nEssa si presenta all'utente con la pagina di Benvenuto (ImageButton Android):</span></span></pre>\r\n<div>\r\n </div>\r\n<div>\r\n <a href=\"http://students.uniparthenope.it/sites/default/files/images/20120510123608.png\" target=\"_blank\"><img alt=\"\" src=\"http://students.uniparthenope.it/sites/default/files/styles/large/public/images/20120510123608.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">Cliccando su di esso si ha accesso al menù (ListView Android con immagini)</span></span></pre>\r\n<div>\r\n </div>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120510123804.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123804.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\"><span style=\"font-size:18px;\">Da qui si puo' effettuare la scelta che si desidera e quindi avventurarsi nel mondo dell'Universita' degli Studi di Napoli Parthenope.\r\n\r\n\r\n\r\nIn questo caso l'utente ha cliccato su Manifestazioni di Orientamento:</span></span></pre>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120510123829.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123829.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">In quest altro caso invece l'utente ha cliccato su Offerta Formativa:</span></span></pre>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120510123855.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123855.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">Questa pagina è caratterizzata da 5 immagini(ImageButton Android) che permettono all'utente di selezionare la Brochure della Facolta' che desidera.\r\n\r\n\r\nIndovinate quale facolta' è stata selezionata per effettuare questa prova?</span></span></pre>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120510123915.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123915.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">La peculiarità di questa pagina è che la Brochure può essere sfogliata come se fosse un vero e proprio libro.\r\n\r\n\r\n\r\n<span style=\"font-family:verdana,geneva,sans-serif;\"><u><strong>Copyright Papa Elio e Pugliese Antonio (P&P)</strong></u></span>\r\n\r\n\r\nIn allegato trovate l'apk per testare l'applicazione sul vostro device <u>ANDROID a partire dalla versione 3.0</u></span></span></pre>\r\n<p> </p>\r\n<p><font face=\"\'courier new\', courier, monospace\" size=\"4\"><u>Link:</u></font></p>\r\n<p><a href=\"http://box.uniparthenope.it/?app=files&getfile=download.php?file=/orientamento.apk\" style=\"font-family: \'courier new\', courier, monospace; font-size: 16px; \">http://box.uniparthenope.it/?app=files&getfile=download.php?file=/orientamento.apk</a></p>\r\n','','full_html'),('node','blog',0,163,202,'und',0,'<h1 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\">Bones | and | Dogs</span></h1>\r\n<h2 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\"><span style=\"color: rgb(47, 79, 79);\">Ambiente di Gioco</span></span></h2>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nell'articolo precedente abbiamo descritto in cosa consisteva il gioco, e in che modo si sarebbe strutturato a livello di GUI (graphical user interfaces). Oggi descriveremo in che modo è possibile creare un ambiente di gioco posizionando il nostro protagonista di game, e su cosa dovrà camminare. prima di passare al dunque elencheremo gli strumenti utilizzati fin'ora. In java sono state implementate per il momento le seguenti classi, che andremo ad elencarne il funzionamento in dettaglio all'interno di quest'articolo:</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe WindowsGame: </strong>Conterrà tutti gli oggetti dedicati al solo funzionamento del gioco. In pratica rappresenta la finestra descritta nell'articolo precedente. La classe è stata tramite un Jframe, importando la libreria <u>swing</u> di <u>javax</u>.</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">public class WindowsGame extends JFrame{\r\n...\r\n}\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">all'interno di questa classe andremmo ad inserire due pannelli: Uno per lo <strong>sfondo</strong> di gioco e un altro per le rimanenti <strong>componenti</strong> di gioco (nel nostro caso, il cane).</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe Wallpaper: </strong>conterrà l'inserimento dell'immagine di sfondo. La estenderemo come JPanel per far si che, come pannello, la possiamo aggiungere alla finestra</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">public class Wallpaper extends JPanel\r\n{\r\n...\r\n}\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">al suo interno andremo a costruire, tramite le librerie swing e awt utilizzando le classi <u>ImageIcon</u> e <u>Image</u> il nostro sfondo. indicheremo il path delle nostre immagini presenti nel workspace di Netbeans, e le andiamo a disegnare tramite la glasse <u>g2d</u> usando il metodo apposito al disegnare l'immagine.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nella classe della Finestra andriamo a costruire il pannello dedicato allo sfondo, e poi lo aggiungiamo alla finestra</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">w = new Wallpaper();\r\nadd(w);\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">il risultato è il seguente:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i46.tinypic.com/2u4u3di.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe Dog: </strong>è la classe che si occupa del nostro cane, che successivamente andremo a comandare con i nostri tasti direzionali. Per adesso ci occupiamo di come adattarlo all'immagine di sfondo che abbiamo inserito nella nostra finestra. Otteniamo l'immagine del nostro cane con la stessa sintassi citata per importare lo sfondo. Questa volta la classe non la estendiamo come pannello, ma in maniera più intelligente la andremo ad aggiungere in un'altra classe, che si occuperà di muovere, olgre al cane, altri ed eventuali oggetti.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe BoardGame: </strong>La classe più IMPORTANTE implementata fin'ora. E' incaricata a contenere il nostyro cane, e tutti gli oggetti che dovranno muoversi durante l'avvio del gioco. Per adesso ci occupiamo di inserire solo l'immagine del cane. Quindi la estendiamo come pannello e la inseriamo alla nostra finestra. Le sintassi di inserimento sono uguali a quelle dell'inseriemnto dello sfondo.</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">public class BoardGame extends JPanel\r\n{ ...\r\n public BoardGame() \r\n { dog = new Dog();\r\n ...\r\n }\r\n ...\r\n}\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">se aggiungiamo questo pannello alla nostra finestra, non otteniamo i risultati che vogliamo. Infatti lo sfondo coprirà completamente il nostro cane, viceversa se invertiamo gli add() il pannello contenente il cane coprirà lo sfondo. Come risolviamo? Ricercando sul web, ho scoperto che è possibile rendere trasparente un pannello. In questo caso rendiamo trasparente il pannello della Boardgame in questo modo:</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">Color c=new Color(tonalità ROSSO,tonalità BLU,tonalità VERDE,GAMMA);\r\n setBackground(c);\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">brevemente, spieghiamo che il valore di GAMMA a rendere opaco o meno il pannello di gioco, quindi se settiamo tutti i valori di RED, BLUE, GREEN al massimo, il colore che otteniamo è il WHITE, e se lo rendiamo opaco (opacizzando anche il pannello, e annullando i layout) otteniamo la sovrapposizione CORRETTA dei pannelli nella nostra finestra.</span></p>\r\n<p align=\"center\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i46.tinypic.com/4jxix5.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nel prossimo articolo illustreremo la logica movimenti del cane in che modo si pensa di implementarli.</span></p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\r\n<p class=\"rtecenter\"><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\">1</a> - <strong><a href=\"http://students.uniparthenope.it/?q=node/163\"><span style=\"color:#ff0000;\"> 2 </span></a></strong> - <a href=\"http://students.uniparthenope.it/?q=node/176\"> 3 </a> - <a href=\"http://students.uniparthenope.it/?q=node/188\"> 4 </a> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6</a></span> <span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\r\n','','full_html'),('node','blog',0,164,203,'und',0,'<p>Il primo giorno di progettazione del videogioco si incentra nella scelta del motore grafico da utilizzare.</p>\r\n<p>Le scelte sono state diverse,tutte su per giu ottimali e rispondevano alla seguente classifica:</p>\r\n<p>Cryengine 3 (Crysis)</p>\r\n<p>Source SDK (Half Life 2)</p>\r\n<p>Id tech 5 (Doom 4)</p>\r\n<p>Unreal engine (Unreal tournament 3)</p>\r\n<p>Doom engine (Doom 2)</p>\r\n<p> </p>\r\n<p>Purtroppo per colpa delle limitate potenzialità delle nostre macchine da calcolo si è scelto di utilizzare il doom engine che si è utilizzato per famosissimi giochi FPS tra i quali ovviamente doom e duke nukem.</p>\r\n<p>Ci apprestiamo alla creazione della mappa per il progetto di blood rush parthenope . . . seguiranno aggiornamenti</p>\r\n<p> </p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,165,204,'und',0,'<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121010151640.png\" /></p>\r\n<p> </p>\r\n<p class=\"p1\"><b>iArduino è una semplice applicazione che consente la comunicazione tra iPhone e il microcontroller Arduino.</b><span class=\"s1\"><b> E' possibile effettuare la comunicazione tramite la </b></span><b> Ethernet shield o la wifly shield .</b></p>\r\n<p class=\"p1\"><b>il suo utilizzo è veramente molto semplice basta scegliere con quale delle due shield effettuare la comunicazione impostare i vari parametri e il gioco è fatto .</b></p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121010152019.jpeg\" /><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121010152020.jpeg\" /></p>\r\n<p> </p>\r\n<p class=\"p1\"><b>I gadget possibili da creare sono veramente molti qui potete trovare alcuni spunti :</b></p>\r\n<p><a href=\"http://www.youtube.com/watch?v=g1zDPa0lCEM&list=UUjQ2z1ygV9tv55QAc2q3JHA&index=1&feature=plcp\">http://www.youtube.com/watch?v=g1zDPa0lCEM&list=UUjQ2z1ygV9tv55QAc2q3JHA&index=1&feature=plcp</a></p>\r\n<p>http://www.youtube.com/watch?v=6rEkUmjcy50&feature=BFa&list=UUjQ2z1ygV9tv55QAc2q3JHA</p>\r\n<p><span style=\"color: rgb(51, 51, 51); font-family: Tahoma, Arial, Verdana, sans-serif; font-size: 13px;\">iArduino is very special app that allow you to communicate with Arduino via The ethernet shield and wif</span><span style=\"color: rgb(51, 51, 51); font-family: Tahoma, Arial, Verdana, sans-serif; font-size: 13px;\">ly shild if you want to use it in ways wifly you must create an ad hoc connection</span></p>\r\n<p> </p>\r\n<p><strong>Download</strong></p>\r\n<p>http://itunes.apple.com/us/app/iarduino/id507874147?mt=8</p>\r\n','','full_html'),('node','blog',0,166,205,'und',0,'<p><strong>mysql++</strong> è un programma eseguibile da riga di comando che permette di eseguire delle query su un database mysql. Ho scritto questo software in C++, studiando e sfruttando le funzioni dell'header mysql.h. Il codice segue il paradigma di programmazione ad oggetti e semplifica la gestione di un database mysql da riga di comando, in locale o da remoto. L'utente può connettersi al database con le sue credenziali, ed effettuare quali e quante query vuole. </p>\r\n<p>Oltre a poter essere usato come programma per interrogare un database, può essere usato come parte integrante dei vostri progetti che fanno uso di una base di dati basata sul DBMS MySQL, scritti in C++.</p>\r\n<p>Nel file .zip che allegherò all'articolo, troverete l'eseguibile (ovviamente solo per sistemi Unix/Linux) e i vari file .cpp e .h che compongono il programma. Potrete modificarli e usarli come vorrete, rispettando i termini della licenza GNU GPL.</p>\r\n<p>Non dimenticate che, per usare questi codici nei vostri programmi, al momento della compilazione, dovete linkare anche la libreria libmysql (nome su osx), altrimenti il vostro compilatore lancerà qualche imprecazione!</p>\r\n<p>Il codice è ampiamente commentato, in modo da chiarire ogni vostro dubbio. Se trovate bug non esitate a contattarmi o a commentare! <img alt=\"wink\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif\" title=\"wink\" width=\"20\" /></p>\r\n<p>...e perchè no, potete usarlo anche per esercitarvi in vista dell'esame di Basi di Dati! <img alt=\"wink\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif\" title=\"wink\" width=\"20\" /></p>\r\n<p>L'uso da riga di comando è:</p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><a href=\"/sites/default/files/images/20121210151041.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121210151041.png\" /></a></p>\r\n<p style=\"\">Più genericamente, quindi: <strong>mysql++ nome_utente hostname nome_database porta</strong></p>\r\n<p>Good Coding!!</p>\r\n<p><strong>Ecco il file .zip:</strong></p>\r\n<p><strong><a href=\"/sites/default/files/files/mysql%2B%2B_3.zip\">mysql++.zip</a></strong></p>\r\n','','full_html'),('node','forum',0,167,206,'und',0,'<p>In seguito ad un malfunzionamento sel server (adesso rispristinato) chiedo a chiunque abbia creato e quindi reso utilizzabili delle API di far ripartire il servizio ngix.</p>\r\n<p>Ecco il comanda da digitare:</p>\r\n<code>$HOME/opt/nginx-1.2.1/sbin/nginx</code>\r\n<p>Ho già provato a contattare i maggiori sviluppatori ma non posso raggiungere tutti, cosa che con questo post spero di fare il più velocemente possibile visto che alcuni utenti potrebbero usare le API e trovarsi spiazzati in queste ore.</p>\r\n<p>Grazie.</p>\r\n<p>PS: vi prego di segnalare eventuali risoluzioni o problemi qui sotto o con un email diretta.</p>\r\n<p>Ciao.</p>\r\n','','filtered_html'),('node','blog',0,168,207,'und',0,'<p>Salve a tutti, oggi comincio a lavorare sul progetto che ho deciso di sviluppare per l'esame di Programmazione III.JCrypto nasce dalla mia passione per la crittografia e sarà un programma che permetterà di conoscere e capire il funzionamento di alcuni dei cifrari più famosi, oltre a permettere di cifrare i propri testi. Per cominciare probabilmente svilupperò il cifrario di Cesare (per saperne di più: <a href=\"http://it.wikipedia.org/wiki/Cifrario_di_Cesare\">http://it.wikipedia.org/wiki/Cifrario_di_Cesare</a>) e poi cercherò di svilupparne altri. Ovviamente il tutto sarà decorato da interfaccia grafica e il mio intento è quello di continuare questo progetto oltre ai fini dell'esame, infatti cercherò nei prossimi mesi di implementare altri cifrari. Al più presto pubblicherò i primi passi dello sviluppo.</p>\r\n<p>PF</p>\r\n','','filtered_html'),('node','blog',0,169,208,'und',0,'<p><img alt=\"servizi parthenope by Fabio Nisci Logo\" src=\"http://students.uniparthenope.it/~0124000074/iosapp/img/renders/Icon-72%402x.png\" /> Servizi Parthenope offre la possibilità di accedere ai servizi riservati agli studenti dell’Università e non solo.</p>\r\n<ul>\r\n <li>\r\n ALCUNE DELLE FUNZIONI....</li>\r\n <br />\r\n <li>\r\n News dell’Università di Ateneo, delle Facoltà e dei dipartimenti</li>\r\n <li>\r\n Rubrica del personale Universitario</li>\r\n <li>\r\n Consultare i libri presenti nella Biblioteca</li>\r\n <br />\r\n <li>\r\n GLI STUDENTI DELLA UNIVERSITÀ PARTHENOPE POSSONO INOLTRE:</li>\r\n <br />\r\n <li>\r\n Accedere all'area riservata con le proprie credenziali</li>\r\n <li>\r\n Visualizzare il proprio piano di studi</li>\r\n <li>\r\n Monitorare la propria situazione finanziaria di Tasse e versamenti.</li>\r\n <li>\r\n Prenotare gli esami disponibili</li>\r\n <li>\r\n Cancellare le prenotazioni esami effettuate.</li>\r\n <li>\r\n Visualizzare Medie e Statistiche sul proprio andamento universitario.</li>\r\n</ul>\r\n<p>Vi lascio con la landing page dove potrete trovare screenshot e funzioni principali: <a href=\"http://students.uniparthenope.it/~0124000074/iosapp/\" target=\"_blank\">http://students.uniparthenope.it/~0124000074/iosapp/ </a></p>\r\n<p>Applicazione sviluppata da <a href=\"mailto:fabio.nisci@studenti.uniparthenope.it\">Fabio Nisci</a> & <a href=\"http://www.fabiosoft.com\" target=\"_blank\">fabiosoft.com</a></p>\r\n<p>Disponibile su <a href=\"https://itunes.apple.com/it/app/servizi-parthenope-uniparthenope/id571062892?mt=8\">AppStore</a>! </p>\r\n','','filtered_html'),('node','blog',0,170,209,'und',0,'<p>Il programma che sto per esporvi tratta la realizzazione di un servizio Java per la raccolta e la memorizzazione in un database relazionale mysql dei dati acquisiti dai servizi http://www.campanialive.it e http://www.campaniameteo.it in modo periodico.<br />\r\n Il software in questione oltre a popolare il db, dispone di una semplice interfaccia Java Desktop per visualizzare i dati memorizzati nel database.</p>\r\n<p>Il programma in sostanza acquisisce dai siti sopra citati i dati generati dai sensori delle stazioni meteo campane e li inserisce nell'apposite tabelle MySql per poi essere visualizzati dal programma di interfaccia Java Desktop.</p>\r\n<p>Innanzitutto c'è da precisare una distinzione dei dati acquisiti (che sono stati separati in tabelle diverse); dati statici, cioè quei dati che sarebbe stato inutile acquisire ogni volta, cioè il nome della stazione meteo, i dati di georeferenziazione ecc.; e dati dei sensori meteo, cioè la temperatura, l'umidità la velocità del vento ecc., insomma quei dati che sono acquisiti periodicamente soggetti ad aggiornamenti costanti.</p>\r\n<p> </p>\r\n<p>Per campanialive.it è stata utilizzata la libreria “html parser” che permette di trattare la pagina HTML come una pagina XML ed è stato creato un filtro apposito (basato su questa libreria) che ha permesso di acquisire i valori specifici che indicavano i sensori della stazione meteo.</p>\r\n<p>Per campaniameteo.it si è dovuta utilizzare la libreria “JTidy” che ha “trasformato” la pagina HTML in XML, correggendo gli errori di sintassi e permettendo l’acquisizione dei valori utili. </p>\r\n<p> </p>\r\n<p>Per quanto riguarda i dati delle stazioni meteo (id stazione, nome stazione , provincia, latitudine, longitudine, sito di provenienza) è stato riempito manualmente un ArrayList di “stazioni meteo” dove vi erano presenti tutte le stazioni meteo sia di campanialive.it che campaniameteo.it che, in base al sito di provenienza, verrà utilizzato il filtro apposito citato precedentemente per l’acquisizione dei valori utili.</p>\r\n<p> </p>\r\n<p>Per far si che la scansione dei sensori meteo avvenisse periodicamente una volta avviato il programma, si è utilizzata l’interfaccia ScheduledExecutorService della libreria java.util.concurrent.<br />\r\n Grazie ad una gestione multithread infatti, si è potuto far avviare ogni intervallo di tempo prestabilito il metodo “ExecuteQuery”, che va ad eseguire la Query per l’inserimento dei parametri acquisiti dagli url delle stazioni meteo.</p>\r\n<p> </p>\r\n<p>L’interfaccia di visualizzazione presenta due ComboBox che permettono la scelta, prima della provincia in una ComboBox, e poi (solo una volta scelta la provincia) la scelta della stazione meteo tra l’elenco che si viene a creare nell’altra ComboBox.</p>\r\n<p>Fatte entrambe le scelte cliccando su un pulsante, appare nella TextArea sottostante l’elenco dei sensori con i rispettivi parametri acquisiti alla rispettiva data e ora.</p>\r\n<p>Mentre in un Label poco sopra, appaiono altre info sulla stazione meteo selezionata.</p>\r\n<p> </p>\r\n<p>Il progetto completo e altro materiale di spiegazione del codice lo potete scaricare al seguente <a href=\"http://www.alsoft.it/Progetto%20Alessandro%20Liccardo%20P3.rar\" target=\"_blank\">link</a></p>\r\n','','filtered_html'),('node','blog',0,171,210,'und',0,'<p class=\"rtecenter\"><object width=\"420\" height=\"315\"><param name=\"movie\" value=\"//www.youtube.com/v/NclcqkGq8oU?version=3&hl=it_IT&rel=0\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"//www.youtube.com/v/NclcqkGq8oU?version=3&hl=it_IT&rel=0\" type=\"application/x-shockwave-flash\" width=\"420\" height=\"315\" allowscriptaccess=\"always\" allowfullscreen=\"true\"></embed></object></p>\r\n<p> </p>\r\n<p>Tuco 1.0 è una targhetta elettronica a porta: "intelligente", <em>open source</em> e <em>open hardware</em>.</p>\r\n<p>E' stata concepita per essere installata (teoricamente) sulle porte degli studi della nostra università.</p>\r\n<p>Lo scopo della targhetta è visualizzare in tempo reale informazioni del tipo: numero dello studio, docente/i, orari di ricevimento, contatti mail e/o telefonici etc etc... ma soprattutto <strong>avvisi</strong> presi in tempo reale da uno dei canali di comunicazione dell'università.</p>\r\n<p>E' stata realizzata sfruttando l'hardware del famoso progetto 100% Italiano chiamato "<a href=\"http://www.arduino.cc\">Arduino</a>".</p>\r\n<p>Questo prototipo in particolare usa: <a href=\"http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove\">Arduino Duemilanove</a>, <a href=\"http://arduino.cc/en/Main/ArduinoEthernetShield\">Ethernet Shield</a>, un router (modificato) WiFi <a href=\"https://www.google.it/search?num=10&hl=it&safe=off&biw=1600&bih=756&q=fonera+2100&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=ryF4UNSjGObc4QTJtoG4Dg\">Fonera 2100 </a>e un display <u>grafico</u> (<strong>G-</strong>LCD) parallelo <a href=\"https://www.google.it/search?num=10&hl=it&safe=off&biw=1600&bih=756&q=fonera+2100&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=ryF4UNSjGObc4QTJtoG4Dg#um=1&hl=it&safe=off&tbm=isch&sa=1&q=KS0107&oq=KS0107&gs_l=img.3..0i24.20551.20551.0.21015.1.1.0.0.0.0.159.159.0j1.1.0...0.0...1c.1.IPccq-BH3FE&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&fp=1569b646711603fa&bpcl=35243188&biw=1600&bih=756\">KS010<span style=\"font-size: 16px;\"><strong>7</strong></span></a></p>\r\n<p>Quindi da oggi, le targhette stampate sulle porte della nostra università, potrebbero trasformarsi da queste:</p>\r\n<p><a href=\"http://imageshack.us/a/img819/7645/32004523964655204561918.jpg\"><img alt=\"\" height=\"191\" src=\"http://imageshack.us/a/img819/7645/32004523964655204561918.jpg\" width=\"255\" /></a></p>\r\n<p>A qualcosa di molto simile a questa:</p>\r\n<p><a href=\"http://imageshack.us/a/img440/6928/dscn1128h.jpg\"><img alt=\"\" height=\"203\" src=\"http://imageshack.us/a/img440/6928/dscn1128h.jpg\" width=\"271\" /></a></p>\r\n<p> </p>\r\n<h2>\r\n Come è stato realizzato questo progetto?</h2>\r\n<h3>\r\n Parte hardware:</h3>\r\n<p>Dopo aver configurato le impostazioni del firmware <a href=\"http://www.dd-wrt.com/\">DD-WRT</a> (<em>open</em>) correttamente, il nostro router Fonera deve collegarsi alla propria rete WiFi in modalità repeater WiFi (una valida alternativa della Fonera è il<span class=\"productModel\"> <a href=\"http://www.tp-link.it/products/details/?categoryid=241&model=TL-WR702N\">TL-WR702N</a></span>)</p>\r\n<p>Il router andrà collegato all'ethernet shield con un normale cavo RJ45</p>\r\n<p>Il wiring fatto tra GLCD e Arduino si può trovare sulla documentazione ufficiale della librearia grafica GLCD per Arduino: <a href=\"http://www.arduino.cc/playground/Code/GLCDks0108\">http://www.arduino.cc/playground/Code/GLCDks0108</a></p>\r\n<p>Avendo l'accortezza, però, di cambiare i pin:</p>\r\n<p>GLCD - ARDUINO</p>\r\n<p>9 -> D2<br />\r\n 10 -> D3</p>\r\n<p>e</p>\r\n<div>\r\n 16 ->A1</div>\r\n<div>\r\n 15 ->A2</div>\r\n<div>\r\n </div>\r\n<div>\r\n Per poi ottenere questo:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <a href=\"http://img338.imageshack.us/img338/1044/wiu.png\"><img alt=\"\" height=\"495\" src=\"http://img338.imageshack.us/img338/1044/wiu.png\" width=\"472\" /></a></div>\r\n<h3>\r\n Parte software:</h3>\r\n<p>Dopo aver scaricato e configurato la propria <a href=\"http://www.arduino.cc/en/Main/software\">Arduino IDE</a>, bisogna scaricare ed installare nel path giusto la libreria grafica <a href=\"http://http://www.arduino.cc/playground/Code/GLCDks0108\">GLCD.</a></p>\r\n<p>All'interno della libreria grafica GLCD vanno modificato alcuni file in questo modo:</p>\r\n<p>In: glcd/glcd_Config.h</p>\r\n<p>Bisogna: commentare <b>#include "config/ks0108_Panel.h"</b> e togliere il commento da <b>//#include "config/ks0108_Manual_Config.h"</b></p>\r\n<p>In: glcd/config/ks0108_Manual_Config.h</p>\r\n<p>Bisgona: modificare la linea</p>\r\n<pre style=\"background: none repeat scroll 0% 0% rgb(0, 0, 0); color: rgb(248, 248, 248);\">\r\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData2Pin</span> 10\r\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData3Pin</span> 11\r\n</pre>\r\n<p>in</p>\r\n<pre style=\"background: none repeat scroll 0% 0% rgb(0, 0, 0); color: rgb(248, 248, 248);\">\r\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData2Pin</span> 2\r\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData3Pin</span> 3\r\n</pre>\r\n<p>Save & exit.</p>\r\n<p>Questa modifica è necessaria in quanto sia l'etherne shield che il glcd hanno in comune i pin 10 e 11, dunque per evitare incompatibilità tra i due hardware, la libreria va modificata come sopra</p>\r\n<p> </p>\r\n<h3>\r\n Il firmware:</h3>\r\n<p>Il firmware, da me scritto, è presente nella mia cartella personale su: <a href=\"http://box.uniparthenope.it/public.php?service=files&token=1d3ba5b17f36d42cbfd06cc402aeaf69636daa54&file=/Tuco\">box.uniparthenope.it</a></p>\r\n<p>Circa i punti salienti del firmware, posso aggiungere che la funzione principale loop (un loop infinito) è strutturata quanto segue:</p>\r\n<pre>\r\n<span style=\"color: rgb(204, 102, 0);\">void</span> <span style=\"color: rgb(204, 102, 0);\"><b>loop</b></span>() { \r\n logo();\r\n cornice();\r\n numero();\r\n mail();\r\n myConnect();\r\n parse();\r\n disconnect();\r\n}\r\n</pre>\r\n<p>In particolare:</p>\r\n<p><strong>Logo</strong></p>\r\n<p>è una funzione che restituisce due immagini bitmap, opportunamente realizzate con un tool (in java e <em>open</em>) all'interno della libreria grafica glcd.</p>\r\n<p>In particolare restituisce il logo della nostra università diviso in due metà.</p>\r\n<p> </p>\r\n<p><strong>Cornice</strong></p>\r\n<p>Grazie all'uso dell'oggetto gText ho strutturato il display in tre parti:</p>\r\n<p><a href=\"http://imageshack.us/a/img823/7963/immaginerv.jpg\"><img alt=\"\" height=\"172\" src=\"http://imageshack.us/a/img823/7963/immaginerv.jpg\" width=\"376\" /></a></p>\r\n<p>Questo mi permette di avere le informazioni divise per aree grafiche tematiche:</p>\r\n<p>Nella superiore visualizzo nome e cognome del/dei docenti e numero dello studio.</p>\r\n<p>Al centro tutte le informazioni DINAMICHE</p>\r\n<p>Nella parte inferiore l'orario di ricevimento</p>\r\n<p> </p>\r\n<p><strong>Numero</strong> e <strong>Mail</strong></p>\r\n<p>Sono due funzioni che stampano sul gText.centrale rispettivamente: numero stanza e l'indirizzo email.</p>\r\n<p> </p>\r\n<p><strong>myConnect</strong></p>\r\n<p>E' la funzione che mi permette di instaurare un collegamento in modalità <em>client</em>, tra la mia arduino ed il server sebeto.</p>\r\n<p>In particolare myConnect cerca di instaurare il collegamento, ma se dopo tre tentativi non riesce a stabilire una connessione, avviene un hardreset grazie alla macro definita nell'header del firmware.</p>\r\n<p>Una volta stabilita la connessione, effettuo il comando GET verso l'api news (settata in modo tale da restituire un solo avviso)</p>\r\n<p> </p>\r\n<p><strong>parse</strong></p>\r\n<p>E' la funzione che realizza il parsing del primo avviso restituito dall'api news, in particolare cerca la sottostringa <em>content</em> e memorizza il contenuto dei primi 300caratteri in un buffer.</p>\r\n<p>Il buffer viene stampato char by char con un ritardo di 50ms tra un char e l'altro.</p>\r\n<p> </p>\r\n<p><strong>disconnect</strong></p>\r\n<p>realizza la disconnessione dell'arduino dal server.</p>\r\n<p> </p>\r\n<h2>\r\n Note finali:</h2>\r\n<ul>\r\n <li>\r\n Non avendo un sistema di avvisi centralizzato e comune, in <em>questo prototipo</em>, è stato utilizzato l'api news a scopo dimostrativo.</li>\r\n <li>\r\n Se avessimo un sistema di avvisi centralizzato si potrebbe modificare il firmware in questo modo:</li>\r\n</ul>\r\n<ol class=\"rteindent1\">\r\n <li>\r\n una query join tra il numero di porta a cui è stato assegnato l'arduino e il DB dei docenti</li>\r\n <li>\r\n la query potrebbe restituire molte informazioni, ad esempio: nome, cognome, email, telefono etc etc</li>\r\n <li>\r\n il primo/i avviso di ogni docente di quello studio</li>\r\n <li>\r\n print delle informazioni scelte su glcd</li>\r\n</ol>\r\n<ul>\r\n <li>\r\n Il limite degli avvisi in <em>questo prototipo</em>, è stato fissato a 300 per ragioni di memoria, leggibilità e perchè fa più figo pensare gli avvisi come dei <strong>tweet</strong></li>\r\n <li>\r\n Essendo open source, ogni idea e modifica è facilmente realizzabile</li>\r\n <li>\r\n Nel video il display sembra rovinato o sbiadito: è un effetto dovuto ai filtri video di YouTube.</li>\r\n <li>\r\n Eventuali combinazioni hardware possono essere:</li>\r\n</ul>\r\n<ol class=\"rteindent1\">\r\n <li>\r\n Router -> Ethernet Shield -> Arduino -> Glcd (è il mio prototipo)</li>\r\n <li>\r\n Router -> <a href=\"http://arduino.cc/en/Main/ArduinoBoardEthernet\">Arduino Ethernet</a> -> Glcd</li>\r\n <li>\r\n <a href=\"http://arduino.cc/en/Main/ArduinoWiFiShield\">Arduino WiFi Shield</a> -> Arduino -> GLCD</li>\r\n <li>\r\n <a href=\"http://www.linksprite.com/product/showproduct.php?id=74&lang=en\">Arduino + WiFi </a>(su singola pcb) -> Glcd (la combinazione migliore per spazio)</li>\r\n</ol>\r\n<p> </p>\r\n<p><strong>Alcune foto:</strong></p>\r\n<p><a href=\"http://img35.imageshack.us/i/dscn1122t.jpg/\" target=\"_blank\"><img border=\"0\" src=\"http://img35.imageshack.us/img35/3417/dscn1122t.th.jpg\" /></a><br />\r\n <a href=\"http://img707.imageshack.us/i/dscn1127h.jpg/\" target=\"_blank\"><img border=\"0\" src=\"http://img707.imageshack.us/img707/9273/dscn1127h.th.jpg\" /></a><br />\r\n <a href=\"http://img716.imageshack.us/i/dscn1126yt.jpg/\" target=\"_blank\"><img border=\"0\" src=\"http://img716.imageshack.us/img716/981/dscn1126yt.th.jpg\" /></a></p>\r\n<p> </p>\r\n<h2>\r\n Il progetto, inoltre, è apparso su:</h2>\r\n<p> </p>\r\n<p>Arduino.cc: <a href=\"http://blog.arduino.cc/2012/11/13/tuco-1-0-a-digital-door-plate/\" target=\"_blank\">http://blog.arduino.cc/2012/11/13/tuco-1-0-a-digital-door-plate/</a></p>\r\n<p>Adafruit.com: <a href=\"http://www.adafruit.com/blog/2012/10/15/electronic-doorplate-with-arduino/\" target=\"_blank\">http://www.adafruit.com/blog/2012/10/15/electronic-doorplate-with-arduino/</a></p>\r\n<p> </p>\r\n<h1>\r\n </h1>\r\n<h1 class=\"rtecenter\">\r\n <a href=\"http://box.uniparthenope.it/public.php?service=files&t=a6e87afde0e5f32b0f3734027bfba36a\">Tuco 1.0 firmware</a></h1>\r\n<p class=\"rtecenter\"><a href=\"http://box.uniparthenope.it/public.php?service=files&t=a6e87afde0e5f32b0f3734027bfba36a\"><img alt=\"\" src=\"http://api.ning.com/files/W*UwkBxt9kVhZew1rsI2iG7Zc0pIEdNe2KiaTGrlsO2qAgsDlycKf2aJli2gMtz02sem8NRQxBkaRkRA5u0kgwXbOwFYIAfB/Tuco_01.jpg\" style=\"width: 97px; height: 97px;\" /></a></p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><span style=\"font-size: 16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n','','full_html'),('node','forum',0,172,211,'und',0,'<p><span style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \">Ciao a tutti!</span><br style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \" />\r\n <span style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \">Ragazzi qualcuno potrebbe linkarmi una buona guida (abbastanza approfondita) per l'uso delle regex? </span><br style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \" />\r\n <span style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \">Le uso da sempre e sinceramente perdo troppo tempo per capire come costruirne una. Quindi vorrei conoscere bene le regole per una buona costruzione di una regex.</span><br style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \" />\r\n <span style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \">Vi ringrazio in anticipo! :D</span></p>\r\n','','filtered_html'),('node','blog',0,173,212,'und',0,'<p><span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \">Salve, ho appena finito il cifrario di Cesare, ci ho messo un po' di tempo perchè per rendere più efficiente l'algoritmo, ho approfondito l'aritmetica modulare, anche se ciò che mi ha impiegato più tempo è stato fare a cazzotti con l' interfaccia grafica dove , devo essere sincero, sono proprio scarso :) , ho perso molto tempo solo per decidere quale layout manager utilizzare, e poi quando avevo quasi deciso di disporre i componenti a mano, ho trovato il GroupLayout che per ora mi sta aiutando. Non so se sarà quello definitivo ma per ora ho optato per quello.</span><br style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \" />\r\n <span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \">Il mio obiettivo adesso e quello di implementate il cifrario di Vigenere e se ci riesco mi riterrei soddisfatto, sia perchè è il mio preferito, sia perchè è più complesso (rispetto a quello di Cesare).</span><br style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \" />\r\n <span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \">A presto avrete mie notizie. </span></p>\r\n','','filtered_html'),('node','blog',0,174,213,'und',0,'<p>Salve a tutti!</p>\r\n<p>Di recente molti studenti (incluso me) all'università, stanno lamentando il fatto di non saper configurare NetBeans per il deployment sul server sebeto, come suggerito dal prof. Montella.</p>\r\n<p>Non ho configurato NetBeans, bensì ho fatto una cosa più divertente . Ho scritto uno shell script che copia i files indicati nel path (o direttamente una cartella) nella vostra home sul server students.uniparthenope.it. </p>\r\n<p>Per farvi capire meglio:</p>\r\n<p>Avete dei files o delle cartelle che volete copiare sul vostro spazio personale? Bene. Avviato lo script, esso usa il comando di sincronizzazione remota di files, rsync, per copiare tutti i files contenuti nella directory che potete fornirgli, in una cartella nella vostra home sul server, chiamata<strong> "ultimi_file_copiati"</strong>.</p>\r\n<p>Lo script si chiama deploy e prende in input la matricola di uno studente oppure lo username di un amministratore o docente, ed anche la directory contenente i files da copiare. </p>\r\n<p>Grazie alle espressioni regolari, il formato della matricola accettato, sarà 0...000...., mentre quello dei docenti/amministratori nome.cognome.</p>\r\n<p>Breve delucidazione su come lanciare lo script:</p>\r\n<p>Assumendo che vi troviate nella cartella dove è situato lo script, digitate:</p>\r\n<p><b>./deploy numero_matricola path_files</b></p>\r\n<p>ad esempio:</p>\r\n<p><strong>./deploy 0101010101 /users/utente/programmi/files_da_copiare/</strong></p>\r\n<p>Questo script è compatibile soltanto con sistemi Unix/Linux!</p>\r\n<p>Ecco lo script:</p>\r\n<p><a href=\"/sites/default/files/files/deploy.rar\">deploy.rar</a></p>\r\n','','full_html'),('node','blog',0,175,214,'und',0,'<p>Finalmente, dopo quasi due mesi di lavoro, è pronto il web-software per la gestione degli orari degli insegnamenti dei corsi di facoltà.</p>\r\n<p>Lo sviluppo è in Php e Javascript, ed è utilizzabile su CMS Drupal.</p>\r\n<p>Il software permetterà ai dipendenti della Presidenza di organizzare gli orai degli insegnamenti con i relativi parametri (giorno, ora, aula, anno, semestre ecc..) abbandonando il consueto "lavoro a mano" per pubblicare poi i PDF.</p>\r\n<p>L'accesso al software può essere pubblico per visualizzare gli orari, e privato per editare le informazioni.</p>\r\n<p>Il form è molto semplice:</p>\r\n<p><img src=\"http://students.uniparthenope.it/~0124000028/blog.jpg\" /></p>\r\n<p>In questo caso vediamo gli insegnamenti previsti per il corso di Informatica (0124) del primo anno per il primo semestre. Come si vede, l'indirizzo è GENERALE poichè non è specificato per le nuove matricole.</p>\r\n<p>Si può notare inoltre che la tabella non è editabile, poichè l'uente non è autenticato.</p>\r\n<p>Se invece si accede come mebro della Presidenza:</p>\r\n<p><img alt=\"\" src=\"http://students.uniparthenope.it/~0124000028/2.jpg\" /></p>\r\n<p>Si ha la possibilità di editare la tabella. Ed ecco come appare il form di input per un orario:</p>\r\n<p><img alt=\"\" src=\"http://students.uniparthenope.it/~0124000028/3.jpg\" /></p>\r\n<p>Ovviamente sono possibili anche le operazioni di modifica ed eliminazione.</p>\r\n<p>In conclusione, il software è pronto, purtroppo però mancano ancora i dati ufficiali (corsi, piani di studio, codici insegnamenti, ecc)da prelevare dal DB dell' Università Parthenope per un corretto funzionamento.</p>\r\n<p>Saluti a Tutti!</p>\r\n','','full_html'),('node','blog',0,176,215,'und',0,'<h1 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\">Bones | and | Dogs</span></h1>\r\n<h2 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\"><span style=\"color: rgb(47, 79, 79);\">I Movimenti e gli Ostacoli</span></span></h2>\r\n<p> </p>\r\n<p class=\"rtejustify\"><span style=\"font-family:tahoma,geneva,sans-serif;\">Passiamo adesso col descrivervi in che modo il nostro protagonista di gioco si muoverà all'interno della nostra window. Ho implementato i Movimenti all'interno della classe <strong>Dog</strong> che ricordiamo aveva i frame del cane, comprese le animazioni, che vi mostro nell'immagine sottostante:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i47.tinypic.com/2nb85na.png\" style=\"width: 200px; height: 200px;\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">All'interno della classe ho implementato dei metodi tramite la <strong>java.awt.event</strong> che utilizzano la <strong>KeyEvent</strong> Con i quali fà cambiare FRAME del cane in base a cosa viene premuto. Ovviamente, siccome stiamo ragionando in termini di Coordinate (x,y), la posizione effettiva dell'oggetto che contiene l'immagine del cane, viene traslata di:</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">x=x-1; y=y+0; // Movimento a SINISTRA\r\nx=x+1; y=y+0; // Movimento a DESTRA\r\ny=y-1; x=x+0; // Movimento in ALTO\r\ny=y+1; x=x+0; // Movimento in BASSO\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Ad ogni movimento, se annulliamo la coordinata opposta, questo ci permette di muovere il personaggio solo seguendo i TASTI DIREZIONALI, annullando così il movimento in DIAGONALE. L'oggetto <strong>Dog</strong> che sarà costruito sulla nostra <strong>BoardGame</strong> , si muoverà tramite l'implementazione della classe tramite <strong>ActionListener</strong> che si mette in ascolto in attessa che arrivi un INPUT (nel nostro caso la Tastiera).</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Effettuando brevi test, il cane viene comandato alla perfezione usando i tasti direzionali della tastiera. Ho limitato anche la fuoriuscita dell'oggetto da noi comandato, settando dei limiti sulle X e sulle Y (che massimo non può oltrepassare; i loro valori sono gli stessi delle dimensioni della window).</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\">Adesso andiamo a Riempire un pò il nostro giardinetto. Avevo pensato che se il lancio d'ossi avvenisse senza ostacoli, il gioco sarebbe stato troppo monotono, e molto molto facile. Sono riuscito ad aumentare la difficoltà pensando di piazzare nella nostra Board, alcuni ostacoli: Alberi e Rocce. Quindi ho creato due classi Apposite per i rispettivi ostacoli: la classe <strong>Tree</strong> e la Classe <strong>Stone. </strong>Questo è il risultato dopo l'implementazione delle due classi, dopo averle incorporate ovviamente nella nostra <strong>GameBoard:</strong></span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i50.tinypic.com/nzfwd2.png\" style=\"width: 517px; height: 354px;\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Ma come si implementa una cosa del genere?? beh il discorso è alquanto semplice, anche perchè mi sono diciamo anticipato per quanto riguarderà il discorso collisioni. Cosi' come sono fatte, il cane attraverserà ogni singolo oggetto sulla mappa. Per anticiparmi ho costruito una griglia 2d settando la posizione di tali oggetti (una volta spawnati ovviamente) a 1. Ecco il codice:</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">public class Tree \r\n{\r\n private int [] x;\r\n private int [] y;\r\n ...\r\n public Tree()\r\n { ...\r\n // la nostra GameBoard conterrà massimo 3 Alberi. \r\n // quindi creiamo due array\r\n // per il salvataggio delle loro coordinate\r\n x = new int [3];\r\n y = new int [3];\r\n \r\n // generiamo in maniera Random le coordinate dei nostri Alberi\r\n // e le salviamo negli array di appoggio\r\n for (int i=0 ; i<3 ; i++)\r\n { \r\n // restringiamo il campo di spawn perchè le immagini degli alberi\r\n // sono di dimensioni più grosse\r\n x [i] = 40 + (int)(Math.random()*430);\r\n y [i] = 40 + (int)(Math.random()*230);\r\n }\r\n }\r\n \r\n // ritorna la coordinata X dell'I esimo Albero\r\n public int getX(int i) \r\n {\r\n return x[i];\r\n }\r\n\r\n // ritorna la coorinata Y dell'I esimo Albero\r\n public int getY(int i) \r\n {\r\n return y[i];\r\n }\r\n \r\n // ritorna l'immagine dell' Albero\r\n public Image getImage() \r\n {\r\n return tree;\r\n }\r\n ...\r\n}\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Questo è in linea di massima la realizzazione del nostro ambiente di gioco. Ricordo che le soluzioni sono più di una, e per il momento ho implementato questo tipo di soluzione perchè la ritenevo più opportuna. Nulla a togliere che con l'avanzamento del gioco potrò variare lo spawn di oggetti per gestire meglio le collisioni, ma in linea di massima la logica è sempre la stessa.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Lo Spawn avviene all'interno della classe <strong>BoardGame</strong> nel metodo astratto <strong>paint:</strong></span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">// Spawn Random degli Alberi\r\n for (int i=0 ; i<3 ; i++) \r\n {\r\n int c=tree.getX(i);\r\n int d=tree.getY(i);\r\n // a questo punto disegnamo la figura nelle coordinate [c,d]\r\n ... \r\n }\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Noteremo che ad ogni avvio del gioco la posizione degli oggetti Varia grazie ai poteri della funzione <strong>random. </strong>Qualche esempio illustrativo:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" height=\"225\" src=\"http://i47.tinypic.com/51y69.png\" width=\"338\" /> <img alt=\"\" height=\"227\" src=\"http://i45.tinypic.com/4zukk9.png\" width=\"339\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Per oggi è tutto. Nel prossimo articolo cominciamo a descrivere le collisioni sugli ostacoli per evitare che il gli passi attraverso. Anticipiamo che L'idea principale è quella di creare una Griglia 2D, in modo da posizionare con l'etichetta "1" la posizione dell'oggetto. Quando il cane mentre cammina incontrerà nella sua posizione x,y il numero 1 esso dovrà fermarsi. Per il momento l'idea è questa. Nel prossimo articolo spiegheremo se questa soluzione è quella efficiente, in caso contrario vi elencherò una delle possibili soluzioni alle collisioni con oggetti.</span><br />\r\n </p>\r\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\r\n<p class=\"rtecenter\"><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\">1</a> - <a href=\"http://students.uniparthenope.it/?q=node/163\"> 2 </a> - <strong><a href=\"http://students.uniparthenope.it/?q=node/176\"><span style=\"color:#ff0000;\"> 3 </span></a></strong> - <a href=\"http://students.uniparthenope.it/?q=node/188\"> 4 </a> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6</a></span> <span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\r\n','','full_html'),('node','blog',0,177,216,'und',0,'<h2>\r\n Presentazione:</h2>\r\n<p>Ecco (ancora in via di sviluppo) l'API REST di Trenitalia; recupera informazioni riguardo prezzi, tipo di treno ed orari per destinazioni desiderate.</p>\r\n<p>Ad ora è possibile testare l'API solo per alcune tratte (di solito <u>brevi</u> e <u>senza cambi</u>).</p>\r\n<p>Molto presto sarà disponibile l'API completa.</p>\r\n<hr />\r\n<h2>\r\n Esempio d'uso:</h2>\r\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width: 207px; \">\r\n <tbody>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n </td>\r\n <td style=\"width: 73px; \">\r\n Variabili GET</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Stazione di partenza</td>\r\n <td style=\"width: 73px; \">\r\n stazin</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Stazione di arrivo</td>\r\n <td style=\"width: 73px; \">\r\n stazout</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Giorno</td>\r\n <td style=\"width: 73px; \">\r\n datag</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Mese</td>\r\n <td style=\"width: 73px; \">\r\n datam</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Anno</td>\r\n <td style=\"width: 73px; \">\r\n dataa</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Ora</td>\r\n <td style=\"width: 73px; \">\r\n timsh</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Minuti</td>\r\n <td style=\"width: 73px; \">\r\n timsm</td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p class=\"rtecenter\" style=\"\"><a href=\"http://students.uniparthenope.it:19091/fs_trenitalia.json?stazin=Napoli&stazout=aversa&datag=18&datam=10&dataa=2012&timsh=16\">http://students.uniparthenope.it:19091/fs_trenitalia.json?stazin=Napoli&stazout=aversa&datag=18&datam=10&dataa=2012&timsh=1</a><a href=\"http://students.uniparthenope.it:19091/fs_trenitalia.json?stazin=Napoli&stazout=aversa&datag=18&datam=10&dataa=2012&timsh=16&timsm=52\">6&timsm=52</a></p>\r\n<hr />\r\n<p><strong><span style=\"color:#ff0000;\">WORK STILL IN PROGRESS</span></strong></p>\r\n','','full_html'),('node','blog',0,178,217,'und',0,'<p>Salve a tutti! Scrivo questo tutorial per spiegare brevemente, a chi non lo so sapesse, come configurare Netbeans per effettuare il deployment automatico sul nostro spazio web, <em>Students .</em></p>\r\n<p>Il primo passo è, ovviamente, quello di avviare l' IDE Netbeans (<em>per questo tutorial mi baso sulla versione 7.2</em>).</p>\r\n<p>Come al solito ci troviamo davanti alla schermata di default, e clicchiamo sull' icona <em>Nuovo Progetto</em>.<br />\r\n Ora scegliamo la tipologia di applicazione che andremo a sviluppare (<em>io ho scelto PHP Application</em>)<strong><sup>1</sup></strong>.</p>\r\n<p> </p>\r\n<p>Impostiamo così come facciamo di solito, senza nessun particolare accorgimento.</p>\r\n<p><img alt=\"\" src=\"http://i46.tinypic.com/28stylu.png\" style=\"width: 700px; height: 400px; \" /></p>\r\n<p> </p>\r\n<p>Il passo successivo ci porterà alla schermata in cui dovremo decidere se utilizzare la nostra applicazione in locale o se vogliamo cambiare questa impostazione.</p>\r\n<p> </p>\r\n<p>Dobbiamo quindi passare da questa situazione</p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i47.tinypic.com/2ia6801.png\" style=\"width: 700px; height: 394px; \" /></p>\r\n<p> </p>\r\n<p>A questa di seguito, scegliendo l' opzione Run As <em>Remote Web Server</em> dalla dropdown list.<br />\r\n Possiamo anche decidere quando fare l' upload dei file, potendo scegliere tra <em>On Save</em>, <em>On Run </em>e <em>Manually</em>; a voi la scelta.</p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i47.tinypic.com/2jflwcw.png\" style=\"height: 394px; width: 700px; \" /></p>\r\n<p> </p>\r\n<p>Il prossimo passo da compiere è quello di cliccare sul tasto <em>Menage... </em>per impostare la connessione con il server (<em>nell' immagine appare già, avendola io precedentemente settata</em>)</p>\r\n<p> </p>\r\n<p>Apparirà una schemata, con dei campi che dobbiamo compilare.</p>\r\n<ul>\r\n <li>\r\n Inseriamo <em>students.uniparthenope.it</em> nel campo relativo all' <strong>Host Name</strong>;</li>\r\n <li>\r\n la <em>Matricola</em> nel campo <strong>Username</strong>;</li>\r\n <li>\r\n la nostra <em>Password</em> per l'accesso;</li>\r\n <li>\r\n impostiamo la <em>Initial Directory</em> che sarà <strong>/home/MATRICOLA/public_html</strong></li>\r\n</ul>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i49.tinypic.com/2dhtnc1.png\" style=\"height: 544px; width: 700px; \" /></p>\r\n<p> </p>\r\n<p>A questo punto clicchiamo su <em>Test Connection</em>; se verrà mostrato il messaggio di successo, clicchiamo su <em>OK</em> e iniziamo a sviluppare la nostra applicazione.</p>\r\n<p><br />\r\n Adesso, a seconda del metodo di upload scelto precedentemente, quando cliccheremo su <em>Salva </em>o su <em>Esegui</em> i nostri file saranno direttamente caricati sullo spazio <em>students.uniparthenope</em></p>\r\n<p>Per la versione PDF clicca <a href=\"http://box.uniparthenope.it/public.php?service=files&token=24ee301d57d5212c5991298c553fbdaf420dd18e&file=/NetBeans_students.pdf\">qui</a></p>\r\n<p> </p>\r\n<p><u><strong>Note:</strong></u></p>\r\n<p><u><strong>1. Il metodo descritto funziona senza problemi quando si sviluppa un' applicazione PHP. Non è lo stesso per le applicazioni Java</strong></u></p>\r\n','','full_html'),('node','blog',0,179,218,'und',0,'<p> </p>\r\n<p>Di seguito sono riportati alcuni esempi di php.</p>\r\n<p> </p>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>1.HELLO WORLD !!!</strong></div>\r\n<p> </p>\r\n<div>\r\n Semplice script PHP che invia il testo "HELLO WORLD !!!" al browser</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php //inizio</div>\r\n<div>\r\n //Uno script PHP inizia sempre con <? php e finisce con ? ></div>\r\n<div>\r\n echo "HELLO WORLD !!!"; //echo è l'istruzione utilizzata per visualizzare il testo. Si può usare anche print</div>\r\n<div>\r\n //fine</div>\r\n<div>\r\n ?> </div>\r\n<div>\r\n </div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>2. IF...ELSE</strong></div>\r\n<div>\r\n Il seguente esempio stampa in output il messaggio "Buon fine settimana!" se il giorno corrente è Venerdì,"Buona Domenica!!!" se il giorno corrente è Domenica, "Buona giornata!!!" se è un altro giorno:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n $d=date("D"); //una variabile in PHP inizia con il segno $ seguito dal nome della variabile</div>\r\n<div>\r\n if($d=="Fri")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Buon fine settimana!!!";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n elseif ($d=="Sun")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Buona Domenica!!!";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Buona giornata!!!";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>3. FILE</strong></div>\r\n<div>\r\n L'esempio seguente apre una file e lo legge riga per riga</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php </div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "Apro il file hello : "; </div>\r\n<div>\r\n //fopen("nome_file","modalità_apertura"), apre il file</div>\r\n<div>\r\n $file = fopen("hello.php","r") or exit("Impossibile aprire il file!");</div>\r\n<div>\r\n //fgetc legge il file carattere per carattere, feof fino alla fine del file</div>\r\n<div>\r\n //fgets legge il file riga per riga</div>\r\n<div>\r\n while(!feof($file));</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo fgets($file);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //chiusura file</div>\r\n<div>\r\n fclose($file);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file hello.php conterrà: </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n echo "Hello World";</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>4.FILE UPLOAD</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Il seguente esempio consente di caricare un file da un modulo e richiama uno script php che consente di stampare le info del file caricato</div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <form action="upload_file.php" method="post"</div>\r\n<div>\r\n option indica che i file saranno caricati in upload_file</div>\r\n<div>\r\n enctype="multipart/form-data"</div>\r\n<div>\r\n enctype specifica il tipo di contenuto da utilizzareper l'invio del modulo</div>\r\n<div>\r\n multipart/form-data viene utilizzato quando un modulo necessita di dati binari, come il contenuto di un file, da caricare</div>\r\n<div>\r\n ></div>\r\n<div>\r\n </div>\r\n<div>\r\n <label for="file">Filename:</label> </div>\r\n<div>\r\n </div>\r\n<div>\r\n <input type="file" name="file" id="file"/></div>\r\n<div>\r\n <br /></div>\r\n<div>\r\n <input type="submit" name="submit" value="Submit"/> </div>\r\n<div>\r\n </div>\r\n<div>\r\n </form></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file "upload_file.php" stampa le informazioni del file caricato, contiene: </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n if($_FILES["file"]["error"] > 0)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Error:" .$_FILES["file"]["error"]. "<br />";</div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro codice di errore del file caricato</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Upload: " . $_FILES["file"]["name"] . "<br />"; </div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro nome del file caricato</div>\r\n<div>\r\n echo "Type: " . $_FILES["file"]["type"] . "<br />";</div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro tipo del file caricato</div>\r\n<div>\r\n echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";</div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro dimensione in byte del file caricato</div>\r\n<div>\r\n echo "Stored in: " . $_FILES["file"]["tmp_name"];</div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro copia temporanea del file sul server</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>5.</strong></div>\r\n<div>\r\n Il seguente esempio consente di caricare un file da un modulo e richiama uno script php che consente di stampare le info del file caricato e stampa un messaggio d'errore nel caso in cui il file non rispetta le dimensioni richieste</div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <form action="upload_file2.php" method="post"</div>\r\n<div>\r\n option indica che i file saranno caricati in upload_file</div>\r\n<div>\r\n enctype="multipart/form-data"</div>\r\n<div>\r\n enctype specifica il tipo di contenuto da utilizzareper l'invio del modulo</div>\r\n<div>\r\n multipart/form-data viene utilizzato quando un modulo necessita di dati binari, come il contenuto di un file, da caricare</div>\r\n<div>\r\n ></div>\r\n<div>\r\n </div>\r\n<div>\r\n <label for="file">Filename:</label> </div>\r\n<div>\r\n </div>\r\n<div>\r\n <input type="file" name="file" id="file"/></div>\r\n<div>\r\n <br /></div>\r\n<div>\r\n <input type="submit" name="submit" value="Submit"/></div>\r\n<div>\r\n </div>\r\n<div>\r\n </form></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file upload_file2.php contiene :</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n $allowedExts = array("jpg", "jpeg", "gif", "png", "c");</div>\r\n<div>\r\n $extension = end(explode(".", $_FILES["file"]["name"]));</div>\r\n<div>\r\n //si possono caricare caricare gif,jpeg e png di dimensione inferiore a 20 kb.</div>\r\n<div>\r\n if ((($_FILES["file"]["type"] == "image/gif")</div>\r\n<div>\r\n || ($_FILES["file"]["type"] == "image/jpeg")</div>\r\n<div>\r\n || ($_FILES["file"]["type"] == "image/png")</div>\r\n<div>\r\n || ($_FILES["file"]["type"] == "image/pjpeg"))</div>\r\n<div>\r\n && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n if ($_FILES["file"]["error"] > 0)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Error: " . $_FILES["file"]["error"] . "<br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Upload: " . $_FILES["file"]["name"] . "<br />";</div>\r\n<div>\r\n echo "Type: " . $_FILES["file"]["type"] . "<br />";</div>\r\n<div>\r\n echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";</div>\r\n<div>\r\n echo "Stored in: " . $_FILES["file"]["tmp_name"];</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else //se il file non rispetta le dimensioni richieste verrà stampato il messaggio d'errore</div>\r\n<div>\r\n {</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "Upload: " . $_FILES["file"]["name"] . "<br />";</div>\r\n<div>\r\n echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";</div>\r\n<div>\r\n echo "Errore file! " ;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>6. COOKIES</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Un cookie è un file che il server incorpora sul computer dell'utente.</div>\r\n<div>\r\n L'esempio seguente mostra due modi per recuperare il valore di un cookie.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //setcookie () imposta un cookie.</div>\r\n<div>\r\n setcookie("user", "Roberta Scarpato", time()+3600);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n // Recupero coockies</div>\r\n<div>\r\n echo "Primo modo recupero coockies : <br />";</div>\r\n<div>\r\n echo $_COOKIE["user"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "<br /> Secondo modo recupero coockies : <br />";</div>\r\n<div>\r\n //isset verifica se il coockies è stato impostato </div>\r\n<div>\r\n if (isset($_COOKIE["user"]))</div>\r\n<div>\r\n //in caso affermativo stamapa: </div>\r\n<div>\r\n echo "Benvenuto -> " . $_COOKIE["user"] . "!<br />";</div>\r\n<div>\r\n else</div>\r\n<div>\r\n echo "Welcome guest!<br />";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //eliminazione coockies</div>\r\n<div>\r\n //setcookie("user", "", time()-3600);</div>\r\n<div>\r\n </div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>7. SESSIONI</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Una sessione PHP consente di memorizzare le informazioni dell'utente sul server per l'utilizzo successivo </div>\r\n<div>\r\n </div>\r\n<div>\r\n L'esempio seguente,conta le volte che una pagina viene visualizzata. Se "views" è stato impostato, è possibile incrementare il contatore. Se "views" non esiste, creiamo una variabile "views":</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //avvia una sessione</div>\r\n<div>\r\n session_start();</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n //si utilizza una variabile PHP $_SESSION per recuperare le variabili di sessione</div>\r\n<div>\r\n </div>\r\n<div>\r\n //isset controlla se il valore della variabile $_SESSION['views'] è già impostato</div>\r\n<div>\r\n </div>\r\n<div>\r\n if(isset($_SESSION['views']))</div>\r\n<div>\r\n //in caso affermativo vuol dire che non è la prima visita dell'utente e quindi la variabile viene incrementata</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $_SESSION['views']=$_SESSION['views']+1;</div>\r\n<div>\r\n //unset libera la variabile</div>\r\n<div>\r\n //unset($_SESSION['views']);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else //altrimenti la si imposta alla prima visita</div>\r\n<div>\r\n $_SESSION['views']=1;</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "Valore Views=". $_SESSION['views'];</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //Stampa la variabile views</div>\r\n<div>\r\n echo "<br /> Visita numero =". $_SESSION['views'];</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n ?></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //ripristina la sessione e si perdono tutti i dati della sessione </div>\r\n<div>\r\n //session_destroy();</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>8. E-MAIL</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n In PHP è possibile inviare messaggi di posta elettronica all'interno di uno script,con la funzione mail().</div>\r\n<div>\r\n L'esempio seguente invia un messaggio di testo a un determinato indirizzo e-mail controllando se il campo e-mail nel modulo è valido.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n // funzione che controlla il campo e-mail nel modulo:</div>\r\n<div>\r\n function controlla($field)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //filter_var() funzione che analizza l'e-mail</div>\r\n<div>\r\n //FILTER_SANITIZE_EMAIL rimuove tutti i caratteri illegali all'interno dell'indirizzo</div>\r\n<div>\r\n $field=filter_var($field, FILTER_SANITIZE_EMAIL);</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n if(filter_var($field, FILTER_VALIDATE_EMAIL))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n // se l'email è corretta ritorna true altrimenti false</div>\r\n<div>\r\n return TRUE;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n return FALSE;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //isset controlla se il campo email è già stato impostato</div>\r\n<div>\r\n if (isset($_REQUEST['email']))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n </div>\r\n<div>\r\n //in caso affermativo procede controllando se l'indirizzo è valido invocando la funzione controlla</div>\r\n<div>\r\n //request ritorna il valore di una variabile</div>\r\n<div>\r\n $bool = controlla($_REQUEST['email']);</div>\r\n<div>\r\n if ($bool==FALSE)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //in caso negativo si ha un messaggio d'errore</div>\r\n<div>\r\n echo "Invalid input";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {//altrimenti si invia l'email assegnadno i valori per parametri della funzione mail()</div>\r\n<div>\r\n $email = $_REQUEST['email'] ;</div>\r\n<div>\r\n $subject = $_REQUEST['subject'] ;</div>\r\n<div>\r\n $message = $_REQUEST['message'] ;</div>\r\n<div>\r\n //mail consente di inviare mail specificando indirizzo dest, oggetto e messaggio</div>\r\n<div>\r\n mail("nome.cognome@studenti.uniparthenope.it", "Subject: $subject",$message,"From: $email" );</div>\r\n<div>\r\n echo "Mail inviata! <br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {//in caso negativo si compilano i campi</div>\r\n<div>\r\n echo "</div>\r\n<div>\r\n <form method='post' action='mailform.php'></div>\r\n<div>\r\n Email: <input name='email' type='text' /><br /></div>\r\n<div>\r\n Subject: <input name='subject' type='text' /><br /></div>\r\n<div>\r\n Message:<br /></div>\r\n<div>\r\n <textarea name='message' rows='15' cols='40'></div>\r\n<div>\r\n </textarea><br /></div>\r\n<div>\r\n <input type='submit' /></div>\r\n<div>\r\n </form>";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>9. GESTIONE DEGLI ERRORI</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n L'esempio seguente consente di rilevare un errore e inviare una e-mail con un messaggio di errore,terminando lo script se si verifica un errore specifico</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //funzione per gestire degli errori,parametri: livello di errore e messaggio d'errore</div>\r\n<div>\r\n function errori($errno, $errstr)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "<b>Error:</b> [$errno] $errstr<br />"; //stampa il messaggio d'errore </div>\r\n<div>\r\n echo "Webmaster has been notified"; //viene inviata una mail per informare dell'errore</div>\r\n<div>\r\n //error_log ()invia l' errore in un file specificato o una destinazione</div>\r\n<div>\r\n error_log("Error: [$errno] $errstr",1,</div>\r\n<div>\r\n "indirizzo@prova.com","From: indirizzo2@prova.com");</div>\r\n<div>\r\n die();//dichiarazione d'errore</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //gestore errori che ha come parametro la funzione creata eil livello d'errore, E_USER_WARNING avverte la presenza di un errore. L'esecuzione dello script non viene interrotta</div>\r\n<div>\r\n set_error_handler("errori",E_USER_WARNING);</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n //testiamo la variabile test, se il valore è >1 si genera un errore</div>\r\n<div>\r\n $test=2;</div>\r\n<div>\r\n if ($test>1)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //attivazione errore con trigger_error,il messaggio rappresenterà il messaggio d'errore, sarà quindi il contenuto di errstr</div>\r\n<div>\r\n trigger_error("Valore errato! il valore deve essere 1 o minore! ",E_USER_WARNING);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>10.ECCEZIONI</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Un'eccezione è un errore particolare che si può verificare durante l'esecuzione di un codice.</div>\r\n<div>\r\n La gestione delle eccezioni modifica il normale flusso di esecuzione in seguito a un'eccezione.</div>\r\n<div>\r\n L'esepio seguente mostra come gestire le eccezioni.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //classe eccez che estende exception ereditando quindi tutti i metodi </div>\r\n<div>\r\n class eccez extends Exception</div>\r\n<div>\r\n {</div>\r\n<div>\r\n public function messaggio()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //assegna a msg il messaggio d'errore</div>\r\n<div>\r\n $msg = $this->getMessage().' Indirizzo e-mail non valido.';</div>\r\n<div>\r\n return $msg;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n $email = "indirizzo@prova.com";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Il blocco "try" contiene un blocco "try" per permettere di nuovo l'eccezione</div>\r\n<div>\r\n try</div>\r\n<div>\r\n {</div>\r\n<div>\r\n try</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //strpos controlla se nella stringa email c'è la parola example</div>\r\n<div>\r\n if(strpos($email, "example") !== FALSE)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //in caso affermatibo viene attivata l'eccezione</div>\r\n<div>\r\n throw new Exception($email);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n catch(Exception $e)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //Il blocco "catch" intercetta l'eccezione e ri-genera un oggetto eccez</div>\r\n<div>\r\n throw new eccez($email);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n catch (eccez $e) //viene catturata l'eccezione e si genera il messaggio </div>\r\n<div>\r\n {</div>\r\n<div>\r\n //display custom message</div>\r\n<div>\r\n echo $e->messaggio();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>11. FILTRI</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Un filtro PHP è utilizzato per verificare,validare e filtrare l'input dell'utente o dati personalizzati.</div>\r\n<div>\r\n L'esempio seguente verifica se i dati immessi dall'utente sono corretti.</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n <form method="get" ></div>\r\n<div>\r\n Name: <input type="text" name="name"/></div>\r\n<div>\r\n Age: <input type="text" name="age" /></div>\r\n<div>\r\n E-mail: <input type="text" name="email"/></div>\r\n<div>\r\n <input type="submit" //pulsante /> </div>\r\n<div>\r\n </div>\r\n<div>\r\n </form> </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //Un filtro PHP è utilizzato per controllare i dati provenienti da fonti non sicure.</div>\r\n<div>\r\n //per evitare di chiamare le funzioni filter_var o filter_input più volte, si utilizza la filter_var_array o le funzioni filter_input_array.</div>\r\n<div>\r\n </div>\r\n<div>\r\n $filters = array(</div>\r\n<div>\r\n //Imposta un array contenente il nome di variabili di input ed i filtri utilizzati per le variabili di input specificate</div>\r\n<div>\r\n "name" => array("filter"=>FILTER_SANITIZE_STRING), //verifica sela stringa è valida</div>\r\n<div>\r\n "age" => array("filter"=>FILTER_VALIDATE_INT,"options"=>array("min_range"=>1,"max_range"=>120)), //verifica se il valore intero è valido e seè compreso nel range</div>\r\n<div>\r\n "email"=> FILTER_VALIDATE_EMAIL); //verifica se l'email è corretta</div>\r\n<div>\r\n </div>\r\n<div>\r\n $result = filter_input_array(INPUT_GET, $filters); //filtra più variabili con gli stessi filtri o filtri diversi</div>\r\n<div>\r\n </div>\r\n<div>\r\n //se l'età è errata stampa un messaggio d'errore</div>\r\n<div>\r\n if (!$result["age"])</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo("Errore età. L'età deve essere compresa tra 1 e 120!<br />");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n //se l'email è errata stampa un messaggio d'errore</div>\r\n<div>\r\n elseif(!$result["email"])</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo("E-Mail non valida.<br />");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n //se la stringa è errata stampa un messaggio d'errore</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo("Dati utente validi!");</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>12. MYSQL</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n MySQL è un database,i cui dati vengono memorizzati in oggetti chiamate tabelle.Una tabella consiste di righe e colonne.</div>\r\n<div>\r\n L'esempio seguente mostra come creare un database e le rispettive tabelle.</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //per accedere ai dati di un database, è necessario creare una connessione al database.In PHP, questo è fatto con la funzione mysql_connect () che memorizza il collegamento in una variabile ($ con) e chiede come parametri:servername Specifica il server a cui connettersi,nome utente Specifica il nome utente per effettuare il login, password Consente di specificare la password per effettuare il login </div>\r\n<div>\r\n </div>\r\n<div>\r\n $con = mysql_connect("localhost","robertina","123");</div>\r\n<div>\r\n if (!$con)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //viene eseguito se la connessione fallisce</div>\r\n<div>\r\n die('Could not connect: ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n // CREATE DATABASE viene utilizzata per creare un database in MySQL. viene creato il database my_db</div>\r\n<div>\r\n if (mysql_query("CREATE DATABASE my_db",$con))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Database created";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Error creating database: " . mysql_error();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n //Un database deve essere selezionato prima che una tabella viene creata. Il database viene selezionato con la funzione mysql_select_db () </div>\r\n<div>\r\n mysql_select_db("my_db", $con);</div>\r\n<div>\r\n </div>\r\n<div>\r\n // L'istruzione CREATE TABLE viene utilizzato per creare una tabella in MySQL</div>\r\n<div>\r\n //imposta il campo personID come il campo chiave primaria,NOT NULL specifica he non deve essere nullo. il campo chiave primaria è usato con l'impostazione AUTO_INCREMENT.</div>\r\n<div>\r\n $sql = "CREATE TABLE Persone </div>\r\n<div>\r\n (</div>\r\n<div>\r\n </div>\r\n<div>\r\n personID int NOT NULL AUTO_INCREMENT, </div>\r\n<div>\r\n PRIMARY KEY(personID),</div>\r\n<div>\r\n Nome varchar(15),</div>\r\n<div>\r\n Cognome varchar(15),</div>\r\n<div>\r\n Età int</div>\r\n<div>\r\n )";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //esegue la query</div>\r\n<div>\r\n mysql_query($sql,$con);</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n // chiude la connessione</div>\r\n<div>\r\n mysql_close($con);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>13.</strong></div>\r\n<div>\r\n é possibile inserire i dati in un database prelevandoli da un form.</div>\r\n<div>\r\n L'esempio seguente crea un modulo HTML che può essere utilizzato per aggiungere nuovi record alla tabella "Persone".</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <form action="insert.php" method="post"</div>\r\n<div>\r\n si connete a un file insert.php che effettua una connessione a un database e recupera i dati inseriti nel form per memorizzarli nel database ></div>\r\n<div>\r\n Nome: <input type="text" name="nome" /></div>\r\n<div>\r\n Cognome: <input type="text" name="cognome" /></div>\r\n<div>\r\n Età: <input type="text" name="età" /></div>\r\n<div>\r\n <input type="submit" /></div>\r\n<div>\r\n </form></div>\r\n<div>\r\n </div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n La pagina insert.php conterrà: </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n $con = mysql_connect("localhost","robertina","1234");</div>\r\n<div>\r\n if (!$con)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n die('Could not connect: ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n mysql_select_db("my_db", $con);</div>\r\n<div>\r\n </div>\r\n<div>\r\n //questo file si connette a un database e recupera i valori dal form con le variabili PHP $ _POST.la funzione mysql_query () esegue l'istruzione INSERT INTO,usata per aggiungere nuovi record a una tabella di database, e un nuovo record viene aggiunto alla tabella "Persone".</div>\r\n<div>\r\n </div>\r\n<div>\r\n $sql="INSERT INTO Persone (Nome, Cognome, Età)VALUES('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (!mysql_query($sql,$con))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n die('Error: ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n //mysql_query ora seleziona tutti i dati memorizzati nella tabella "Persone" </div>\r\n<div>\r\n // * seleziona tutti i dati della tabella):</div>\r\n<div>\r\n $result = mysql_query("SELECT * FROM Persone");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //visualizza i dati in una tabella HTML</div>\r\n<div>\r\n echo "<table border='1'></div>\r\n<div>\r\n <tr></div>\r\n<div>\r\n <th>Nome</th></div>\r\n<div>\r\n <th>Cognome</th></div>\r\n<div>\r\n </tr>";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //mysql_fetch_array () restituisce la prima riga dal recordset come una matrice. Ogni chiamata a mysql_fetch_array () restituisce la riga successiva nel recordset. Il ciclo while scorre tutti i record del recordset. Per stampare il valore di ogni riga, si usa la variabile PHP $ row ($ row ['Nome'] e $ row ['Cognome']).</div>\r\n<div>\r\n </div>\r\n<div>\r\n while($row = mysql_fetch_array($result))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "<tr>";</div>\r\n<div>\r\n echo "<td>" . $row['Nome'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Cognome'] . "</td>";</div>\r\n<div>\r\n echo "</tr>";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "</table>";</div>\r\n<div>\r\n mysql_close($con);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>14.</strong></div>\r\n<div>\r\n L'esempio seguente mostra come aggiornare i valori in un database.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //crea connessione</div>\r\n<div>\r\n $con = mysql_connect("localhost","robertina","123");</div>\r\n<div>\r\n if (!$con)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n die('Errore connessione : ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //selezione database</div>\r\n<div>\r\n mysql_select_db("my_db", $con);</div>\r\n<div>\r\n </div>\r\n<div>\r\n //update aggiorna i campi di una tabella con nuovi valori</div>\r\n<div>\r\n //in qst caso aggiorna l'età nel record che ha come nome e cognome quelli indicati</div>\r\n<div>\r\n mysql_query("UPDATE Persone SET Età=23 WHERE Nome='roberta' AND Cognome='Scarpato'");</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n //selezione tutte i campi dalla tabella persone e le stampa ordinandole per età</div>\r\n<div>\r\n $result = mysql_query("SELECT * FROM Persone ORDER BY età");</div>\r\n<div>\r\n </div>\r\n<div>\r\n while($row = mysql_fetch_array($result))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo $row['Nome'];</div>\r\n<div>\r\n echo " " . $row['Cognome'];</div>\r\n<div>\r\n echo " " . $row['Età'];</div>\r\n<div>\r\n echo "<br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //cancella il record con il cognome indicato</div>\r\n<div>\r\n mysql_query("DELETE FROM Persone WHERE Cognome='Scarpato'");</div>\r\n<div>\r\n mysql_close($con);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>15. ODBC</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Una connessione ODBC consente di connettersi a qualsiasi database, su qualsiasi computer della rete, fino a quando una connessione ODBC è disponibile.</div>\r\n<div>\r\n L'esempio seguente mostra come creare una connessione al database, un set di risultati e visualizzare i dati in una tabella HTML.</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Con una connessione ODBC, è possibile connettersi a qualsiasi database fino a quando la connessione è disponibile.</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Si crea una connessione a un DSN denominato northwind, senza nome utente e nessuna password.</div>\r\n<div>\r\n $conn=odbc_connect('northwind','','');</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (!$conn)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n exit("Connessione Fallita: " . $conn);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n // Si crea un SQL prendendo tutti i campi da una tabella</div>\r\n<div>\r\n $sql="SELECT * FROM customers";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //odbc_exec () viene utilizzata per eseguire un'istruzione SQL</div>\r\n<div>\r\n $results=odbc_exec($conn,$sql);</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (!$results)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n exit("Error in SQL");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //stampa</div>\r\n<div>\r\n echo "<table><tr>";</div>\r\n<div>\r\n echo "<th>Companyname</th>";</div>\r\n<div>\r\n echo "<th>Contactname</th></tr>";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //odbc_fetch_row restituisce i record dal memorizzati in results. restituisce true se è in grado di restituire le righe, altrimenti false.Prende come parametri l'identificatore di risultato ODBC e un numero di riga (opzionale)</div>\r\n<div>\r\n </div>\r\n<div>\r\n while (odbc_fetch_row($results))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //dbc_result () legge i campi di un record. Prende due parametri: l'identificatore di risultato ODBC e un numero o un nome di campo.</div>\r\n<div>\r\n $compname=odbc_result($results,"CompanyName");</div>\r\n<div>\r\n $conname=odbc_result($results,"ContactName");</div>\r\n<div>\r\n echo "<tr><td>$compname</td>";</div>\r\n<div>\r\n echo "<td>$conname</td></tr>";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //chiude la connessione</div>\r\n<div>\r\n odbc_close($conn);</div>\r\n<div>\r\n echo "</table>";</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>16.XML PARSER EXPA</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Un file XML descrive la struttura dei dati.</div>\r\n<div>\r\n L'esempio seguente inizializza il parser XML in PHP, definisce alcuni gestori e analizzare il file XML.</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n </div>\r\n<div>\r\n //inizializzazione parser</div>\r\n<div>\r\n $parser=xml_parser_create();</div>\r\n<div>\r\n </div>\r\n<div>\r\n //funzione da usare con i tag di apertura</div>\r\n<div>\r\n function start($parser,$element_name,$element_attrs)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n switch($element_name)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n case "NOTE":</div>\r\n<div>\r\n echo "-- Note --<br />";</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n case "TO":</div>\r\n<div>\r\n echo "To: ";</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n case "FROM":</div>\r\n<div>\r\n echo "From: ";</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n case "HEADING":</div>\r\n<div>\r\n echo "Heading: ";</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n case "BODY":</div>\r\n<div>\r\n echo "Message: ";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //funzione da usare con i tag di chiusura</div>\r\n<div>\r\n function stop($parser,$element_name)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "<br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //funzione da usare con i caratteri di tipo data</div>\r\n<div>\r\n function char($parser,$data)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo $data;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //specificare la funzione da eseguire quando il parser incontra i tag di apertura e di chiusura</div>\r\n<div>\r\n xml_set_element_handler($parser,"start","stop");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //specifica quale funzione verrà eseguito quando il parser incontra dati di tipo carattere</div>\r\n<div>\r\n xml_set_character_data_handler($parser,"char");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //apre il file </div>\r\n<div>\r\n $fp=fopen("test.xml","r");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Dom è un'interfaccia standard per l'accesso e la manipolazione di documenti HTML e XML</div>\r\n<div>\r\n //crea nuovo documento Dom</div>\r\n<div>\r\n $xmlDoc = new DOMDocument();</div>\r\n<div>\r\n $xmlDoc->load("test.xml");</div>\r\n<div>\r\n </div>\r\n<div>\r\n print $xmlDoc->saveXML();</div>\r\n<div>\r\n </div>\r\n<div>\r\n //legge</div>\r\n<div>\r\n while ($data=fread($fp,4096))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //Analizza il file "test.xml" con la funzione xml_parse ()</div>\r\n<div>\r\n //in caso di errore richiama xml_error_string per convertire l'errore in stringa, xml_get_error_code restituisce il codice di errore,xml_get_current_line_number restituisce la linea dell'eerrore</div>\r\n<div>\r\n xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d",xml_error_string(xml_get_error_code($parser)),xml_get_current_line_number($parser)));</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //libera la memoria allocata</div>\r\n<div>\r\n xml_parser_free($parser);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file test.xml contiene:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?xml version="1.0" encoding="ISO-8859-1"?></div>\r\n<div>\r\n <note></div>\r\n<div>\r\n <to>Antonio</to></div>\r\n<div>\r\n <from>Roberta</from></div>\r\n<div>\r\n <heading>Promemoria</heading></div>\r\n<div>\r\n <body>Ci vediamo stasera!</body></div>\r\n<div>\r\n </note></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>17. SIMPLE XML</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Consente di ottenere gli attributi di un elemento e il testo.</div>\r\n<div>\r\n L'esempio seguente mostra come restituire i nomi degli elementi e dei dati dal file test.xml.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n </div>\r\n<div>\r\n //carica il file</div>\r\n<div>\r\n $xml = simplexml_load_file("test.xml");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Ottiene il nome del primo elemento </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n echo $xml->getName() . "<br />";</div>\r\n<div>\r\n //Creare un ciclo che si innesca su ogni nodo figlio, con la funzione children()</div>\r\n<div>\r\n foreach($xml->children() as $child)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //Output il nome dell'elemento e dati per ciascun nodo figlio</div>\r\n<div>\r\n echo $child->getName() . ": " . $child . "<br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file "test.xml" contiene:</div>\r\n<div>\r\n <note><to>Antonio</to><from>Roberta</from><heading>Promemoria</heading><body>Ci vediamo stasera!</body></note></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>18. AJAX</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n AJAX è una tecnica per la creazione veloce di pagine Web.Consente di aggiornare parti di una pagina web, senza ricaricare l'intera pagina.</div>\r\n<div>\r\n L'esempio seguente mostra come una pagina web comunica con un server web.</div>\r\n<div>\r\n Quando un utente digita un carattere nel campo di input, viene eseguita la funzione il "ShowHint ()" che viene attivata dall'evento "onkeyup".</div>\r\n<div>\r\n Pagina html:</div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <head></div>\r\n<div>\r\n <script></div>\r\n<div>\r\n //questa funzione è attivata dall'evento onkeyup</div>\r\n<div>\r\n function showHint(str)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //se il campo str.lenght è vuoto, viene cancellato il contenuto di txtHint e si esce dalla funzione</div>\r\n<div>\r\n if (str.length==0)</div>\r\n<div>\r\n { </div>\r\n<div>\r\n document.getElementById("txtHint").innerHTML="";</div>\r\n<div>\r\n return;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //altrimenti si crea un oggetto XMLHttpRequest,usato per trasferire XML o altri dati da e a un web server</div>\r\n<div>\r\n if (window.XMLHttpRequest)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n // per IE7, Firefox, Chrome, Opera, Safari</div>\r\n<div>\r\n xmlhttp=new XMLHttpRequest();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {// per IE6, IE5</div>\r\n<div>\r\n xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n xmlhttp.onreadystatechange=function() //onreadystatechange Gestore dell'evento lanciato ad ogni cambiamento di stato.</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //readyState Restituisce lo stato corrente dell'istanza di XMLHttpRequest:0 = non inizializzato, 1 = aperto, 2 = richiesta inviata, 3 = risposta in ricezione e 4 = risposta ricevuta.</div>\r\n<div>\r\n //status Restituisce il codice HTTP restituito dal server </div>\r\n<div>\r\n if (xmlhttp.readyState==4 && xmlhttp.status==200)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //responseText Restituisce la risposta del server in formato stringa e l'assegna a txtHint</div>\r\n<div>\r\n document.getElementById("txtHint").innerHTML=xmlhttp.responseText;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //open Specifica il metodo, l'URL e altri parametri opzionali per la richiesta.GET è utilizzato quando si richiedono dati.il secondo parametro è l'url,il terzo specifica se la richiesta deve essere gestita in modo asincrono oppure no ,true" significa che lo script può proseguire l'elaborazione senza aspettare la risposta dopo il metodo send()</div>\r\n<div>\r\n </div>\r\n<div>\r\n xmlhttp.open("GET","ajax.php?q="+str,true);</div>\r\n<div>\r\n xmlhttp.send(); //invia la richiesta a un server</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </script></div>\r\n<div>\r\n </head></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <p><b>Start typing a name in the input field below:</b></p></div>\r\n<div>\r\n <form> </div>\r\n<div>\r\n First name: <input type="text" onkeyup="showHint(this.value)" size="20" /></div>\r\n<div>\r\n </form></div>\r\n<div>\r\n <p>Suggestions: <span id="txtHint"></span></p></div>\r\n<div>\r\n </div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n Il codice sorgente di "ajax.php" controlla una serie di nomi, e restituisce il nome, corrispondente al carattere inserito, al browser:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n // ontrolla una serie di nomi, e restituisce il nome corrispondente (s) al browser:</div>\r\n<div>\r\n $a[]="Anna";</div>\r\n<div>\r\n $a[]="Brittany";</div>\r\n<div>\r\n $a[]="Cinderella";</div>\r\n<div>\r\n $a[]="Diana";</div>\r\n<div>\r\n $a[]="Eva";</div>\r\n<div>\r\n $a[]="Fiona";</div>\r\n<div>\r\n $a[]="Gunda";</div>\r\n<div>\r\n $a[]="Hege";</div>\r\n<div>\r\n $a[]="Inga";</div>\r\n<div>\r\n $a[]="Johanna";</div>\r\n<div>\r\n $a[]="Kitty";</div>\r\n<div>\r\n $a[]="Linda";</div>\r\n<div>\r\n $a[]="Nina";</div>\r\n<div>\r\n $a[]="Ophelia";</div>\r\n<div>\r\n $a[]="Petunia";</div>\r\n<div>\r\n $a[]="Amanda";</div>\r\n<div>\r\n $a[]="Raquel";</div>\r\n<div>\r\n $a[]="Cindy";</div>\r\n<div>\r\n $a[]="Doris";</div>\r\n<div>\r\n $a[]="Eve";</div>\r\n<div>\r\n $a[]="Evita";</div>\r\n<div>\r\n $a[]="Sunniva";</div>\r\n<div>\r\n $a[]="Tove";</div>\r\n<div>\r\n $a[]="Unni";</div>\r\n<div>\r\n $a[]="Violet";</div>\r\n<div>\r\n $a[]="Liza";</div>\r\n<div>\r\n $a[]="Elizabeth";</div>\r\n<div>\r\n $a[]="Ellen";</div>\r\n<div>\r\n $a[]="Wenche";</div>\r\n<div>\r\n $a[]="Vicky";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //in q è memorizzato il carattere scritto dall'utente</div>\r\n<div>\r\n $q=$_GET["q"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n //se la lunghezza di q è>0 cerca un nome corrispondente ai caratteri inseriti</div>\r\n<div>\r\n if (strlen($q) > 0)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //hint è la stringa di risposta</div>\r\n<div>\r\n $hint="";</div>\r\n<div>\r\n //cerca</div>\r\n<div>\r\n for($i=0; $i<count($a); $i++)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //controlla i caratteri delle stringhe presenti nell'array e lo assegna alla stringa di risposta</div>\r\n<div>\r\n if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n if ($hint=="")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $hint=$a[$i];</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $hint=$hint." , ".$a[$i];</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n // se non è stato trovato nessun carattere uguale si stampa il messaggio ""nessun suggerimento, altrimentiviene visualizzato il nome cercato</div>\r\n<div>\r\n if ($hint == "")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $response="Nessun suggerimento";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $response=$hint;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //output the response</div>\r\n<div>\r\n echo $response;</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>19.</strong></div>\r\n<div>\r\n L'esempio seguente mostra come una pagina web può scaricare informazioni da un database con AJAX</div>\r\n<div>\r\n Pagina Html:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <head></div>\r\n<div>\r\n <script></div>\r\n<div>\r\n /*quando un utente seleziona un nome nell'elenco a tendina , la funzione showUserviene eseguita. La funzione viene attivata dall'evento onchange*/</div>\r\n<div>\r\n function showUser(str)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n if (str=="")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n document.getElementById("txtHint").innerHTML="";</div>\r\n<div>\r\n return;</div>\r\n<div>\r\n } </div>\r\n<div>\r\n if (window.XMLHttpRequest)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xmlhttp=new XMLHttpRequest();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n xmlhttp.onreadystatechange=function()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n if (xmlhttp.readyState==4 && xmlhttp.status==200)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n document.getElementById("txtHint").innerHTML=xmlhttp.responseText;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n xmlhttp.open("GET","ajax2.php?q="+str,true);</div>\r\n<div>\r\n xmlhttp.send();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </script></div>\r\n<div>\r\n </head></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <form></div>\r\n<div>\r\n <select name="users" onchange="showUser(this.value)"</div>\r\n<div>\r\n ></div>\r\n<div>\r\n <option value="">Select a person:</option></div>\r\n<div>\r\n <option value="1">Homer Simpson</option></div>\r\n<div>\r\n <option value="2">Marge Simpson</option></div>\r\n<div>\r\n <option value="3">Zio Paperone</option></div>\r\n<div>\r\n <option value="4">Pippo Pluto</option></div>\r\n<div>\r\n </select></div>\r\n<div>\r\n </form></div>\r\n<div>\r\n <br /></div>\r\n<div>\r\n <div id="txtHint"><b>Informazioni persona.</b></div></div>\r\n<div>\r\n </div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Il codice sorgente in "ajax2.php" esegue una query su un database MySQL, e restituisce il risultato in una tabella HTML:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n $q=$_GET["q"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n //crea connessione al database</div>\r\n<div>\r\n $con = mysql_connect('localhost', '', '');</div>\r\n<div>\r\n if (!$con)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n die('Errore connessione ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n //seleziona il database</div>\r\n<div>\r\n mysql_select_db("ajax_demo", $con);</div>\r\n<div>\r\n //seleziona tutti i record</div>\r\n<div>\r\n $sql="SELECT * FROM user WHERE id = '".$q."'";</div>\r\n<div>\r\n </div>\r\n<div>\r\n $result = mysql_query($sql);</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "<table border='1'></div>\r\n<div>\r\n <tr></div>\r\n<div>\r\n <th>Nome</th></div>\r\n<div>\r\n <th>Cognome</th></div>\r\n<div>\r\n <th>Età</th></div>\r\n<div>\r\n <th>Città</th></div>\r\n<div>\r\n <th>Lavoro</th></div>\r\n<div>\r\n </tr>";</div>\r\n<div>\r\n //mysql_fetch_array restituisce una riga da un recordset come array o come matrice</div>\r\n<div>\r\n while($row = mysql_fetch_array($result))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "<tr>";</div>\r\n<div>\r\n echo "<td>" . $row['Nomr'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Cognome'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Età'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Città'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Lavoro'] . "</td>";</div>\r\n<div>\r\n echo "</tr>";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n echo "</table>";</div>\r\n<div>\r\n //chiusura connessione</div>\r\n<div>\r\n mysql_close($con);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n','','full_html'),('node','blog',0,180,219,'und',0,'<p>Ciao ragazzi,</p>\r\n<p>Mi chiamo Arenare Gabriele e sono uno studente d'informatica (percorso Tecnologie Multimediali) del 3° Anno fuori corso. Questo è il mio primo topic che scrivo, e volevo postare un po di Appunti, Tesine, Progetti ed Esercizi fatti per esami sostenuti durante questi anni... La maggior parte del materiale è stato fatto in gruppo, e quindi ringrazio anche i miei Amici / Colleghi Pasquale Forte e Alessandro Aiello... Speriamo che vi siano utili! :)</p>\r\n<p> </p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=d6df5834156025d0cb968fb753c1b92e8d7d2729&file=/%5BArenare%20Gabriele%5D%20Esercizi%20Programmazione%20I.rar\">Programmazione I - Esercizi</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=88bf8950e28f7bdeba920141fd6d29bc4140d03f&file=/%5BArenare%20Gabriele%5D%20Progetto%20Programmazione%20I%20-%20Risiko%2C%20Dizionario%20Contrari.zip\">Programmazione I - Progetto (Risiko - Dizionario dei Contrari)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=46e46b493ebd25a305b4ceb97ff7e369df1e645a&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Appunti%20Economia%20Aziendale.pdf\">Economia Aziendale - Appunti</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=d1f5313eaf1d4b5a3956e8953847f204aff52a82&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%20Alessandro%20Aiello%5D%20Esercizi%20Programmazione%20II.rar\">Programmazione II - Esercizi</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=752f6d7199479a68f11b15a4e8558201d6fa64ed&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%20Alessandro%20Aiello%5D%20Progetto%20Basi%20di%20dati%20-%20Gestione%20ANM.pdf\">Basi di Dati - Progetto (Gestione Anm)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=5c83c649658b6b80fc667592d17cddabb66fbc18&file=/%5BGabriele%20Arenare%5D%20Tesina%20Realt%C3%A0%20Virtuale%20-%20Tecnologia%203-D.pdf\">Realtà Virtuale - Tesina (Tecnologia 3D)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=eee2cccfd34263786adae3951079bbcb5222cb52&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Progetto%20Realt%C3%A0%20virtuale%20-%20Tris%203D.rar\">Realtà Virtuale - Progetto (Tris 3D)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=c223c9deaf9d8056d8a771ccfbc644b023f3f6cb&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Appunti%20Calcolo%20Numerico.pdf\">Calcolo Numerico - Appunti</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=3dceb7be73e8629d6a23485ec4065c163e711a22&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%20Alessandro%20Aiello%5D%20Progetto%20Reti%20-%20Animal%20Shop.pdf\">Reti di Calcolatori - Progetto (Animal Shop)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=0716ef60cd2dbb7e16b603eab1cf72d2ae9ba75c&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Appunti%20Metodi%20per%20la%20Comunicazione%20Multimediale.pdf\">Metodi per la Comunicazione Multimediale - Appunti</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=11f977bdaed29fcc8a465aa83b2a88f170086e07&file=/%5BArenare%20Gabriele%5D%20Tesina%20MCM%20-%20Audio%20MPEG%20layer%201-2-3.pdf\">Metodi per la Comunicazione Multimediale - Tesina (Mpeg Audio 1,2,3)</a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,181,220,'und',0,'<p>Cari colleghi, condivido con voi la prima fase di progettazione dell'app. android <strong>"time-show UNIPARTHENOPE".</strong></p>\r\n<p>Il progetto è strettamente collegato con il software realizzato per l'esame di tecnologie web (<a href=\"http://students.uniparthenope.it/?q=node/175\">http://students.uniparthenope.it/?q=node/175)</a>. </p>\r\n<p>Risorse essenziali per realizzare l'applicazione, sono le API inerenti agli orari degli insegnamenti dei corsi di facoltà, consultabili al seguente link: <a href=\"http://students.uniparthenope.it:10003/orario.json\">http://students.uniparthenope.it:10003/orario.json</a></p>\r\n<p>Come già spiegato nel mio ultimo articolo, si fa riferimento solo all'orario del corso di informatica, poiche si attendono sviluppi dall' "alto" XD</p>\r\n<p>Ritornando all'applicazione android, essa prevede la possibilità di accedere in modalità autenticata o modalita ospite. L'idea è quella di permettere alle matricole (e non) di consultare i corsi previsti in giornata, il giorno seguente, o l'intera settimana. Effettuando l'accesso con la propria matricola e password, tramite appositi filtri, la selezione del proprio corso avverrà in automatico; inoltre sarà possibile controllare se sono previsti corsi di esami NON ancora sostenuti. <br />\r\n In modalità ospite invece, sarà disponibile un form per la selezione di corsi specifici.</p>\r\n<p>Un primo screenshot dell'accesso all'app.</p>\r\n<p><a href=\"/sites/default/files/images/20122210120148.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122210120148.jpg\" style=\"height: 294px; width: 200px; \" /></a> </p>\r\n<p>Per ora ho sviluppato la fase di accesso autenticato:</p>\r\n<p><a href=\"/sites/default/files/images/20122210120415.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122210120415.jpg\" style=\"height: 294px; width: 200px; \" /></a></p>\r\n<p>Per controllare se il login è andato a buon fine, utilizzo le api disponibili per gli studenti:</p>\r\n<p><span style=\"color:#0000cd;\">http://api.uniparthenope.it:9998/student/exams/studyplanning.json?user=XXXX&password=XXXX</span></p>\r\n<p>L'avvenuto accesso registrerà i dati in un database locale, per gestire successivi utilizzi dell'applicazione.</p>\r\n<p>Il codice relativo alla gestione del database ed al "consumo" dei file JSON saranno resi disponibili nella documentazione ufficiale.</p>\r\n<p>Saluti a Tutti!</p>\r\n','','full_html'),('node','blog',0,182,221,'und',0,'<p>Salve a tutti, come da titolo sto aggiungendo al progetto il secondo algoritmo di cifratura,cioè l'algoritmo di Vigenère. L'algoritmo vero e proprio è ormai completo, ma sto trovando difficoltà nello sviluppo dell'interfaccia grafica, non ho ancora le idee ben chiare, ma vorrei inserire la tavola di Vigenère per mostrare in che modo opera l'algoritmo. Spero di riuscirci nel più breve tempo possibile.</p>\r\n<p>PF</p>\r\n','','filtered_html'),('node','page',0,183,222,'und',0,'<p> </p>\r\n<pre style=\"color: rgb(0, 0, 0); word-wrap: break-word; white-space: pre-wrap; \">\r\n GNU GENERAL PUBLIC LICENSE\r\n Version 3, 29 June 2007\r\n\r\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\r\n Everyone is permitted to copy and distribute verbatim copies\r\n of this license document, but changing it is not allowed.\r\n\r\n Preamble\r\n\r\n The GNU General Public License is a free, copyleft license for\r\nsoftware and other kinds of works.\r\n\r\n The licenses for most software and other practical works are designed\r\nto take away your freedom to share and change the works. By contrast,\r\nthe GNU General Public License is intended to guarantee your freedom to\r\nshare and change all versions of a program--to make sure it remains free\r\nsoftware for all its users. We, the Free Software Foundation, use the\r\nGNU General Public License for most of our software; it applies also to\r\nany other work released this way by its authors. You can apply it to\r\nyour programs, too.\r\n\r\n When we speak of free software, we are referring to freedom, not\r\nprice. Our General Public Licenses are designed to make sure that you\r\nhave the freedom to distribute copies of free software (and charge for\r\nthem if you wish), that you receive source code or can get it if you\r\nwant it, that you can change the software or use pieces of it in new\r\nfree programs, and that you know you can do these things.\r\n\r\n To protect your rights, we need to prevent others from denying you\r\nthese rights or asking you to surrender the rights. Therefore, you have\r\ncertain responsibilities if you distribute copies of the software, or if\r\nyou modify it: responsibilities to respect the freedom of others.\r\n\r\n For example, if you distribute copies of such a program, whether\r\ngratis or for a fee, you must pass on to the recipients the same\r\nfreedoms that you received. You must make sure that they, too, receive\r\nor can get the source code. And you must show them these terms so they\r\nknow their rights.\r\n\r\n Developers that use the GNU GPL protect your rights with two steps:\r\n(1) assert copyright on the software, and (2) offer you this License\r\ngiving you legal permission to copy, distribute and/or modify it.\r\n\r\n For the developers' and authors' protection, the GPL clearly explains\r\nthat there is no warranty for this free software. For both users' and\r\nauthors' sake, the GPL requires that modified versions be marked as\r\nchanged, so that their problems will not be attributed erroneously to\r\nauthors of previous versions.\r\n\r\n Some devices are designed to deny users access to install or run\r\nmodified versions of the software inside them, although the manufacturer\r\ncan do so. This is fundamentally incompatible with the aim of\r\nprotecting users' freedom to change the software. The systematic\r\npattern of such abuse occurs in the area of products for individuals to\r\nuse, which is precisely where it is most unacceptable. Therefore, we\r\nhave designed this version of the GPL to prohibit the practice for those\r\nproducts. If such problems arise substantially in other domains, we\r\nstand ready to extend this provision to those domains in future versions\r\nof the GPL, as needed to protect the freedom of users.\r\n\r\n Finally, every program is threatened constantly by software patents.\r\nStates should not allow patents to restrict development and use of\r\nsoftware on general-purpose computers, but in those that do, we wish to\r\navoid the special danger that patents applied to a free program could\r\nmake it effectively proprietary. To prevent this, the GPL assures that\r\npatents cannot be used to render the program non-free.\r\n\r\n The precise terms and conditions for copying, distribution and\r\nmodification follow.\r\n\r\n TERMS AND CONDITIONS\r\n\r\n 0. Definitions.\r\n\r\n "This License" refers to version 3 of the GNU General Public License.\r\n\r\n "Copyright" also means copyright-like laws that apply to other kinds of\r\nworks, such as semiconductor masks.\r\n\r\n "The Program" refers to any copyrightable work licensed under this\r\nLicense. Each licensee is addressed as "you". "Licensees" and\r\n"recipients" may be individuals or organizations.\r\n\r\n To "modify" a work means to copy from or adapt all or part of the work\r\nin a fashion requiring copyright permission, other than the making of an\r\nexact copy. The resulting work is called a "modified version" of the\r\nearlier work or a work "based on" the earlier work.\r\n\r\n A "covered work" means either the unmodified Program or a work based\r\non the Program.\r\n\r\n To "propagate" a work means to do anything with it that, without\r\npermission, would make you directly or secondarily liable for\r\ninfringement under applicable copyright law, except executing it on a\r\ncomputer or modifying a private copy. Propagation includes copying,\r\ndistribution (with or without modification), making available to the\r\npublic, and in some countries other activities as well.\r\n\r\n To "convey" a work means any kind of propagation that enables other\r\nparties to make or receive copies. Mere interaction with a user through\r\na computer network, with no transfer of a copy, is not conveying.\r\n\r\n An interactive user interface displays "Appropriate Legal Notices"\r\nto the extent that it includes a convenient and prominently visible\r\nfeature that (1) displays an appropriate copyright notice, and (2)\r\ntells the user that there is no warranty for the work (except to the\r\nextent that warranties are provided), that licensees may convey the\r\nwork under this License, and how to view a copy of this License. If\r\nthe interface presents a list of user commands or options, such as a\r\nmenu, a prominent item in the list meets this criterion.\r\n\r\n 1. Source Code.\r\n\r\n The "source code" for a work means the preferred form of the work\r\nfor making modifications to it. "Object code" means any non-source\r\nform of a work.\r\n\r\n A "Standard Interface" means an interface that either is an official\r\nstandard defined by a recognized standards body, or, in the case of\r\ninterfaces specified for a particular programming language, one that\r\nis widely used among developers working in that language.\r\n\r\n The "System Libraries" of an executable work include anything, other\r\nthan the work as a whole, that (a) is included in the normal form of\r\npackaging a Major Component, but which is not part of that Major\r\nComponent, and (b) serves only to enable use of the work with that\r\nMajor Component, or to implement a Standard Interface for which an\r\nimplementation is available to the public in source code form. A\r\n"Major Component", in this context, means a major essential component\r\n(kernel, window system, and so on) of the specific operating system\r\n(if any) on which the executable work runs, or a compiler used to\r\nproduce the work, or an object code interpreter used to run it.\r\n\r\n The "Corresponding Source" for a work in object code form means all\r\nthe source code needed to generate, install, and (for an executable\r\nwork) run the object code and to modify the work, including scripts to\r\ncontrol those activities. However, it does not include the work's\r\nSystem Libraries, or general-purpose tools or generally available free\r\nprograms which are used unmodified in performing those activities but\r\nwhich are not part of the work. For example, Corresponding Source\r\nincludes interface definition files associated with source files for\r\nthe work, and the source code for shared libraries and dynamically\r\nlinked subprograms that the work is specifically designed to require,\r\nsuch as by intimate data communication or control flow between those\r\nsubprograms and other parts of the work.\r\n\r\n The Corresponding Source need not include anything that users\r\ncan regenerate automatically from other parts of the Corresponding\r\nSource.\r\n\r\n The Corresponding Source for a work in source code form is that\r\nsame work.\r\n\r\n 2. Basic Permissions.\r\n\r\n All rights granted under this License are granted for the term of\r\ncopyright on the Program, and are irrevocable provided the stated\r\nconditions are met. This License explicitly affirms your unlimited\r\npermission to run the unmodified Program. The output from running a\r\ncovered work is covered by this License only if the output, given its\r\ncontent, constitutes a covered work. This License acknowledges your\r\nrights of fair use or other equivalent, as provided by copyright law.\r\n\r\n You may make, run and propagate covered works that you do not\r\nconvey, without conditions so long as your license otherwise remains\r\nin force. You may convey covered works to others for the sole purpose\r\nof having them make modifications exclusively for you, or provide you\r\nwith facilities for running those works, provided that you comply with\r\nthe terms of this License in conveying all material for which you do\r\nnot control copyright. Those thus making or running the covered works\r\nfor you must do so exclusively on your behalf, under your direction\r\nand control, on terms that prohibit them from making any copies of\r\nyour copyrighted material outside their relationship with you.\r\n\r\n Conveying under any other circumstances is permitted solely under\r\nthe conditions stated below. Sublicensing is not allowed; section 10\r\nmakes it unnecessary.\r\n\r\n 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\r\n\r\n No covered work shall be deemed part of an effective technological\r\nmeasure under any applicable law fulfilling obligations under article\r\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\r\nsimilar laws prohibiting or restricting circumvention of such\r\nmeasures.\r\n\r\n When you convey a covered work, you waive any legal power to forbid\r\ncircumvention of technological measures to the extent such circumvention\r\nis effected by exercising rights under this License with respect to\r\nthe covered work, and you disclaim any intention to limit operation or\r\nmodification of the work as a means of enforcing, against the work's\r\nusers, your or third parties' legal rights to forbid circumvention of\r\ntechnological measures.\r\n\r\n 4. Conveying Verbatim Copies.\r\n\r\n You may convey verbatim copies of the Program's source code as you\r\nreceive it, in any medium, provided that you conspicuously and\r\nappropriately publish on each copy an appropriate copyright notice;\r\nkeep intact all notices stating that this License and any\r\nnon-permissive terms added in accord with section 7 apply to the code;\r\nkeep intact all notices of the absence of any warranty; and give all\r\nrecipients a copy of this License along with the Program.\r\n\r\n You may charge any price or no price for each copy that you convey,\r\nand you may offer support or warranty protection for a fee.\r\n\r\n 5. Conveying Modified Source Versions.\r\n\r\n You may convey a work based on the Program, or the modifications to\r\nproduce it from the Program, in the form of source code under the\r\nterms of section 4, provided that you also meet all of these conditions:\r\n\r\n a) The work must carry prominent notices stating that you modified\r\n it, and giving a relevant date.\r\n\r\n b) The work must carry prominent notices stating that it is\r\n released under this License and any conditions added under section\r\n 7. This requirement modifies the requirement in section 4 to\r\n "keep intact all notices".\r\n\r\n c) You must license the entire work, as a whole, under this\r\n License to anyone who comes into possession of a copy. This\r\n License will therefore apply, along with any applicable section 7\r\n additional terms, to the whole of the work, and all its parts,\r\n regardless of how they are packaged. This License gives no\r\n permission to license the work in any other way, but it does not\r\n invalidate such permission if you have separately received it.\r\n\r\n d) If the work has interactive user interfaces, each must display\r\n Appropriate Legal Notices; however, if the Program has interactive\r\n interfaces that do not display Appropriate Legal Notices, your\r\n work need not make them do so.\r\n\r\n A compilation of a covered work with other separate and independent\r\nworks, which are not by their nature extensions of the covered work,\r\nand which are not combined with it such as to form a larger program,\r\nin or on a volume of a storage or distribution medium, is called an\r\n"aggregate" if the compilation and its resulting copyright are not\r\nused to limit the access or legal rights of the compilation's users\r\nbeyond what the individual works permit. Inclusion of a covered work\r\nin an aggregate does not cause this License to apply to the other\r\nparts of the aggregate.\r\n\r\n 6. Conveying Non-Source Forms.\r\n\r\n You may convey a covered work in object code form under the terms\r\nof sections 4 and 5, provided that you also convey the\r\nmachine-readable Corresponding Source under the terms of this License,\r\nin one of these ways:\r\n\r\n a) Convey the object code in, or embodied in, a physical product\r\n (including a physical distribution medium), accompanied by the\r\n Corresponding Source fixed on a durable physical medium\r\n customarily used for software interchange.\r\n\r\n b) Convey the object code in, or embodied in, a physical product\r\n (including a physical distribution medium), accompanied by a\r\n written offer, valid for at least three years and valid for as\r\n long as you offer spare parts or customer support for that product\r\n model, to give anyone who possesses the object code either (1) a\r\n copy of the Corresponding Source for all the software in the\r\n product that is covered by this License, on a durable physical\r\n medium customarily used for software interchange, for a price no\r\n more than your reasonable cost of physically performing this\r\n conveying of source, or (2) access to copy the\r\n Corresponding Source from a network server at no charge.\r\n\r\n c) Convey individual copies of the object code with a copy of the\r\n written offer to provide the Corresponding Source. This\r\n alternative is allowed only occasionally and noncommercially, and\r\n only if you received the object code with such an offer, in accord\r\n with subsection 6b.\r\n\r\n d) Convey the object code by offering access from a designated\r\n place (gratis or for a charge), and offer equivalent access to the\r\n Corresponding Source in the same way through the same place at no\r\n further charge. You need not require recipients to copy the\r\n Corresponding Source along with the object code. If the place to\r\n copy the object code is a network server, the Corresponding Source\r\n may be on a different server (operated by you or a third party)\r\n that supports equivalent copying facilities, provided you maintain\r\n clear directions next to the object code saying where to find the\r\n Corresponding Source. Regardless of what server hosts the\r\n Corresponding Source, you remain obligated to ensure that it is\r\n available for as long as needed to satisfy these requirements.\r\n\r\n e) Convey the object code using peer-to-peer transmission, provided\r\n you inform other peers where the object code and Corresponding\r\n Source of the work are being offered to the general public at no\r\n charge under subsection 6d.\r\n\r\n A separable portion of the object code, whose source code is excluded\r\nfrom the Corresponding Source as a System Library, need not be\r\nincluded in conveying the object code work.\r\n\r\n A "User Product" is either (1) a "consumer product", which means any\r\ntangible personal property which is normally used for personal, family,\r\nor household purposes, or (2) anything designed or sold for incorporation\r\ninto a dwelling. In determining whether a product is a consumer product,\r\ndoubtful cases shall be resolved in favor of coverage. For a particular\r\nproduct received by a particular user, "normally used" refers to a\r\ntypical or common use of that class of product, regardless of the status\r\nof the particular user or of the way in which the particular user\r\nactually uses, or expects or is expected to use, the product. A product\r\nis a consumer product regardless of whether the product has substantial\r\ncommercial, industrial or non-consumer uses, unless such uses represent\r\nthe only significant mode of use of the product.\r\n\r\n "Installation Information" for a User Product means any methods,\r\nprocedures, authorization keys, or other information required to install\r\nand execute modified versions of a covered work in that User Product from\r\na modified version of its Corresponding Source. The information must\r\nsuffice to ensure that the continued functioning of the modified object\r\ncode is in no case prevented or interfered with solely because\r\nmodification has been made.\r\n\r\n If you convey an object code work under this section in, or with, or\r\nspecifically for use in, a User Product, and the conveying occurs as\r\npart of a transaction in which the right of possession and use of the\r\nUser Product is transferred to the recipient in perpetuity or for a\r\nfixed term (regardless of how the transaction is characterized), the\r\nCorresponding Source conveyed under this section must be accompanied\r\nby the Installation Information. But this requirement does not apply\r\nif neither you nor any third party retains the ability to install\r\nmodified object code on the User Product (for example, the work has\r\nbeen installed in ROM).\r\n\r\n The requirement to provide Installation Information does not include a\r\nrequirement to continue to provide support service, warranty, or updates\r\nfor a work that has been modified or installed by the recipient, or for\r\nthe User Product in which it has been modified or installed. Access to a\r\nnetwork may be denied when the modification itself materially and\r\nadversely affects the operation of the network or violates the rules and\r\nprotocols for communication across the network.\r\n\r\n Corresponding Source conveyed, and Installation Information provided,\r\nin accord with this section must be in a format that is publicly\r\ndocumented (and with an implementation available to the public in\r\nsource code form), and must require no special password or key for\r\nunpacking, reading or copying.\r\n\r\n 7. Additional Terms.\r\n\r\n "Additional permissions" are terms that supplement the terms of this\r\nLicense by making exceptions from one or more of its conditions.\r\nAdditional permissions that are applicable to the entire Program shall\r\nbe treated as though they were included in this License, to the extent\r\nthat they are valid under applicable law. If additional permissions\r\napply only to part of the Program, that part may be used separately\r\nunder those permissions, but the entire Program remains governed by\r\nthis License without regard to the additional permissions.\r\n\r\n When you convey a copy of a covered work, you may at your option\r\nremove any additional permissions from that copy, or from any part of\r\nit. (Additional permissions may be written to require their own\r\nremoval in certain cases when you modify the work.) You may place\r\nadditional permissions on material, added by you to a covered work,\r\nfor which you have or can give appropriate copyright permission.\r\n\r\n Notwithstanding any other provision of this License, for material you\r\nadd to a covered work, you may (if authorized by the copyright holders of\r\nthat material) supplement the terms of this License with terms:\r\n\r\n a) Disclaiming warranty or limiting liability differently from the\r\n terms of sections 15 and 16 of this License; or\r\n\r\n b) Requiring preservation of specified reasonable legal notices or\r\n author attributions in that material or in the Appropriate Legal\r\n Notices displayed by works containing it; or\r\n\r\n c) Prohibiting misrepresentation of the origin of that material, or\r\n requiring that modified versions of such material be marked in\r\n reasonable ways as different from the original version; or\r\n\r\n d) Limiting the use for publicity purposes of names of licensors or\r\n authors of the material; or\r\n\r\n e) Declining to grant rights under trademark law for use of some\r\n trade names, trademarks, or service marks; or\r\n\r\n f) Requiring indemnification of licensors and authors of that\r\n material by anyone who conveys the material (or modified versions of\r\n it) with contractual assumptions of liability to the recipient, for\r\n any liability that these contractual assumptions directly impose on\r\n those licensors and authors.\r\n\r\n All other non-permissive additional terms are considered "further\r\nrestrictions" within the meaning of section 10. If the Program as you\r\nreceived it, or any part of it, contains a notice stating that it is\r\ngoverned by this License along with a term that is a further\r\nrestriction, you may remove that term. If a license document contains\r\na further restriction but permits relicensing or conveying under this\r\nLicense, you may add to a covered work material governed by the terms\r\nof that license document, provided that the further restriction does\r\nnot survive such relicensing or conveying.\r\n\r\n If you add terms to a covered work in accord with this section, you\r\nmust place, in the relevant source files, a statement of the\r\nadditional terms that apply to those files, or a notice indicating\r\nwhere to find the applicable terms.\r\n\r\n Additional terms, permissive or non-permissive, may be stated in the\r\nform of a separately written license, or stated as exceptions;\r\nthe above requirements apply either way.\r\n\r\n 8. Termination.\r\n\r\n You may not propagate or modify a covered work except as expressly\r\nprovided under this License. Any attempt otherwise to propagate or\r\nmodify it is void, and will automatically terminate your rights under\r\nthis License (including any patent licenses granted under the third\r\nparagraph of section 11).\r\n\r\n However, if you cease all violation of this License, then your\r\nlicense from a particular copyright holder is reinstated (a)\r\nprovisionally, unless and until the copyright holder explicitly and\r\nfinally terminates your license, and (b) permanently, if the copyright\r\nholder fails to notify you of the violation by some reasonable means\r\nprior to 60 days after the cessation.\r\n\r\n Moreover, your license from a particular copyright holder is\r\nreinstated permanently if the copyright holder notifies you of the\r\nviolation by some reasonable means, this is the first time you have\r\nreceived notice of violation of this License (for any work) from that\r\ncopyright holder, and you cure the violation prior to 30 days after\r\nyour receipt of the notice.\r\n\r\n Termination of your rights under this section does not terminate the\r\nlicenses of parties who have received copies or rights from you under\r\nthis License. If your rights have been terminated and not permanently\r\nreinstated, you do not qualify to receive new licenses for the same\r\nmaterial under section 10.\r\n\r\n 9. Acceptance Not Required for Having Copies.\r\n\r\n You are not required to accept this License in order to receive or\r\nrun a copy of the Program. Ancillary propagation of a covered work\r\noccurring solely as a consequence of using peer-to-peer transmission\r\nto receive a copy likewise does not require acceptance. However,\r\nnothing other than this License grants you permission to propagate or\r\nmodify any covered work. These actions infringe copyright if you do\r\nnot accept this License. Therefore, by modifying or propagating a\r\ncovered work, you indicate your acceptance of this License to do so.\r\n\r\n 10. Automatic Licensing of Downstream Recipients.\r\n\r\n Each time you convey a covered work, the recipient automatically\r\nreceives a license from the original licensors, to run, modify and\r\npropagate that work, subject to this License. You are not responsible\r\nfor enforcing compliance by third parties with this License.\r\n\r\n An "entity transaction" is a transaction transferring control of an\r\norganization, or substantially all assets of one, or subdividing an\r\norganization, or merging organizations. If propagation of a covered\r\nwork results from an entity transaction, each party to that\r\ntransaction who receives a copy of the work also receives whatever\r\nlicenses to the work the party's predecessor in interest had or could\r\ngive under the previous paragraph, plus a right to possession of the\r\nCorresponding Source of the work from the predecessor in interest, if\r\nthe predecessor has it or can get it with reasonable efforts.\r\n\r\n You may not impose any further restrictions on the exercise of the\r\nrights granted or affirmed under this License. For example, you may\r\nnot impose a license fee, royalty, or other charge for exercise of\r\nrights granted under this License, and you may not initiate litigation\r\n(including a cross-claim or counterclaim in a lawsuit) alleging that\r\nany patent claim is infringed by making, using, selling, offering for\r\nsale, or importing the Program or any portion of it.\r\n\r\n 11. Patents.\r\n\r\n A "contributor" is a copyright holder who authorizes use under this\r\nLicense of the Program or a work on which the Program is based. The\r\nwork thus licensed is called the contributor's "contributor version".\r\n\r\n A contributor's "essential patent claims" are all patent claims\r\nowned or controlled by the contributor, whether already acquired or\r\nhereafter acquired, that would be infringed by some manner, permitted\r\nby this License, of making, using, or selling its contributor version,\r\nbut do not include claims that would be infringed only as a\r\nconsequence of further modification of the contributor version. For\r\npurposes of this definition, "control" includes the right to grant\r\npatent sublicenses in a manner consistent with the requirements of\r\nthis License.\r\n\r\n Each contributor grants you a non-exclusive, worldwide, royalty-free\r\npatent license under the contributor's essential patent claims, to\r\nmake, use, sell, offer for sale, import and otherwise run, modify and\r\npropagate the contents of its contributor version.\r\n\r\n In the following three paragraphs, a "patent license" is any express\r\nagreement or commitment, however denominated, not to enforce a patent\r\n(such as an express permission to practice a patent or covenant not to\r\nsue for patent infringement). To "grant" such a patent license to a\r\nparty means to make such an agreement or commitment not to enforce a\r\npatent against the party.\r\n\r\n If you convey a covered work, knowingly relying on a patent license,\r\nand the Corresponding Source of the work is not available for anyone\r\nto copy, free of charge and under the terms of this License, through a\r\npublicly available network server or other readily accessible means,\r\nthen you must either (1) cause the Corresponding Source to be so\r\navailable, or (2) arrange to deprive yourself of the benefit of the\r\npatent license for this particular work, or (3) arrange, in a manner\r\nconsistent with the requirements of this License, to extend the patent\r\nlicense to downstream recipients. "Knowingly relying" means you have\r\nactual knowledge that, but for the patent license, your conveying the\r\ncovered work in a country, or your recipient's use of the covered work\r\nin a country, would infringe one or more identifiable patents in that\r\ncountry that you have reason to believe are valid.\r\n\r\n If, pursuant to or in connection with a single transaction or\r\narrangement, you convey, or propagate by procuring conveyance of, a\r\ncovered work, and grant a patent license to some of the parties\r\nreceiving the covered work authorizing them to use, propagate, modify\r\nor convey a specific copy of the covered work, then the patent license\r\nyou grant is automatically extended to all recipients of the covered\r\nwork and works based on it.\r\n\r\n A patent license is "discriminatory" if it does not include within\r\nthe scope of its coverage, prohibits the exercise of, or is\r\nconditioned on the non-exercise of one or more of the rights that are\r\nspecifically granted under this License. You may not convey a covered\r\nwork if you are a party to an arrangement with a third party that is\r\nin the business of distributing software, under which you make payment\r\nto the third party based on the extent of your activity of conveying\r\nthe work, and under which the third party grants, to any of the\r\nparties who would receive the covered work from you, a discriminatory\r\npatent license (a) in connection with copies of the covered work\r\nconveyed by you (or copies made from those copies), or (b) primarily\r\nfor and in connection with specific products or compilations that\r\ncontain the covered work, unless you entered into that arrangement,\r\nor that patent license was granted, prior to 28 March 2007.\r\n\r\n Nothing in this License shall be construed as excluding or limiting\r\nany implied license or other defenses to infringement that may\r\notherwise be available to you under applicable patent law.\r\n\r\n 12. No Surrender of Others' Freedom.\r\n\r\n If conditions are imposed on you (whether by court order, agreement or\r\notherwise) that contradict the conditions of this License, they do not\r\nexcuse you from the conditions of this License. If you cannot convey a\r\ncovered work so as to satisfy simultaneously your obligations under this\r\nLicense and any other pertinent obligations, then as a consequence you may\r\nnot convey it at all. For example, if you agree to terms that obligate you\r\nto collect a royalty for further conveying from those to whom you convey\r\nthe Program, the only way you could satisfy both those terms and this\r\nLicense would be to refrain entirely from conveying the Program.\r\n\r\n 13. Use with the GNU Affero General Public License.\r\n\r\n Notwithstanding any other provision of this License, you have\r\npermission to link or combine any covered work with a work licensed\r\nunder version 3 of the GNU Affero General Public License into a single\r\ncombined work, and to convey the resulting work. The terms of this\r\nLicense will continue to apply to the part which is the covered work,\r\nbut the special requirements of the GNU Affero General Public License,\r\nsection 13, concerning interaction through a network will apply to the\r\ncombination as such.\r\n\r\n 14. Revised Versions of this License.\r\n\r\n The Free Software Foundation may publish revised and/or new versions of\r\nthe GNU General Public License from time to time. Such new versions will\r\nbe similar in spirit to the present version, but may differ in detail to\r\naddress new problems or concerns.\r\n\r\n Each version is given a distinguishing version number. If the\r\nProgram specifies that a certain numbered version of the GNU General\r\nPublic License "or any later version" applies to it, you have the\r\noption of following the terms and conditions either of that numbered\r\nversion or of any later version published by the Free Software\r\nFoundation. If the Program does not specify a version number of the\r\nGNU General Public License, you may choose any version ever published\r\nby the Free Software Foundation.\r\n\r\n If the Program specifies that a proxy can decide which future\r\nversions of the GNU General Public License can be used, that proxy's\r\npublic statement of acceptance of a version permanently authorizes you\r\nto choose that version for the Program.\r\n\r\n Later license versions may give you additional or different\r\npermissions. However, no additional obligations are imposed on any\r\nauthor or copyright holder as a result of your choosing to follow a\r\nlater version.\r\n\r\n 15. Disclaimer of Warranty.\r\n\r\n THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\r\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\r\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY\r\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\r\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\r\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\r\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\r\n\r\n 16. Limitation of Liability.\r\n\r\n IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\r\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\r\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\r\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\r\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\r\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\r\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\r\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\r\nSUCH DAMAGES.\r\n\r\n 17. Interpretation of Sections 15 and 16.\r\n\r\n If the disclaimer of warranty and limitation of liability provided\r\nabove cannot be given local legal effect according to their terms,\r\nreviewing courts shall apply local law that most closely approximates\r\nan absolute waiver of all civil liability in connection with the\r\nProgram, unless a warranty or assumption of liability accompanies a\r\ncopy of the Program in return for a fee.\r\n\r\n END OF TERMS AND CONDITIONS\r\n\r\n How to Apply These Terms to Your New Programs\r\n\r\n If you develop a new program, and you want it to be of the greatest\r\npossible use to the public, the best way to achieve this is to make it\r\nfree software which everyone can redistribute and change under these terms.\r\n\r\n To do so, attach the following notices to the program. It is safest\r\nto attach them to the start of each source file to most effectively\r\nstate the exclusion of warranty; and each file should have at least\r\nthe "copyright" line and a pointer to where the full notice is found.\r\n\r\n <one line to give the program's name and a brief idea of what it does.>\r\n Copyright (C) <year> <name of author>\r\n\r\n This program is free software: you can redistribute it and/or modify\r\n it under the terms of the GNU General Public License as published by\r\n the Free Software Foundation, either version 3 of the License, or\r\n (at your option) any later version.\r\n\r\n This program is distributed in the hope that it will be useful,\r\n but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n GNU General Public License for more details.\r\n\r\n You should have received a copy of the GNU General Public License\r\n along with this program. If not, see <http://www.gnu.org/licenses/>.\r\n\r\nAlso add information on how to contact you by electronic and paper mail.\r\n\r\n If the program does terminal interaction, make it output a short\r\nnotice like this when it starts in an interactive mode:\r\n\r\n <program> Copyright (C) <year> <name of author>\r\n This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\r\n This is free software, and you are welcome to redistribute it\r\n under certain conditions; type `show c' for details.\r\n\r\nThe hypothetical commands `show w' and `show c' should show the appropriate\r\nparts of the General Public License. Of course, your program's commands\r\nmight be different; for a GUI interface, you would use an "about box".\r\n\r\n You should also get your employer (if you work as a programmer) or school,\r\nif any, to sign a "copyright disclaimer" for the program, if necessary.\r\nFor more information on this, and how to apply and follow the GNU GPL, see\r\n<http://www.gnu.org/licenses/>.\r\n\r\n The GNU General Public License does not permit incorporating your program\r\ninto proprietary programs. If your program is a subroutine library, you\r\nmay consider it more useful to permit linking proprietary applications with\r\nthe library. If this is what you want to do, use the GNU Lesser General\r\nPublic License instead of this License. But first, please read\r\n<http://www.gnu.org/philosophy/why-not-lgpl.html>.</pre>\r\n','','filtered_html'),('node','page',0,184,223,'und',0,'<p> </p>\r\n<pre style=\"color: rgb(0, 0, 0); word-wrap: break-word; white-space: pre-wrap; \">\r\n GNU LESSER GENERAL PUBLIC LICENSE\r\n Version 3, 29 June 2007\r\n\r\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\r\n Everyone is permitted to copy and distribute verbatim copies\r\n of this license document, but changing it is not allowed.\r\n\r\n\r\n This version of the GNU Lesser General Public License incorporates\r\nthe terms and conditions of version 3 of the GNU General Public\r\nLicense, supplemented by the additional permissions listed below.\r\n\r\n 0. Additional Definitions.\r\n\r\n As used herein, "this License" refers to version 3 of the GNU Lesser\r\nGeneral Public License, and the "GNU GPL" refers to version 3 of the GNU\r\nGeneral Public License.\r\n\r\n "The Library" refers to a covered work governed by this License,\r\nother than an Application or a Combined Work as defined below.\r\n\r\n An "Application" is any work that makes use of an interface provided\r\nby the Library, but which is not otherwise based on the Library.\r\nDefining a subclass of a class defined by the Library is deemed a mode\r\nof using an interface provided by the Library.\r\n\r\n A "Combined Work" is a work produced by combining or linking an\r\nApplication with the Library. The particular version of the Library\r\nwith which the Combined Work was made is also called the "Linked\r\nVersion".\r\n\r\n The "Minimal Corresponding Source" for a Combined Work means the\r\nCorresponding Source for the Combined Work, excluding any source code\r\nfor portions of the Combined Work that, considered in isolation, are\r\nbased on the Application, and not on the Linked Version.\r\n\r\n The "Corresponding Application Code" for a Combined Work means the\r\nobject code and/or source code for the Application, including any data\r\nand utility programs needed for reproducing the Combined Work from the\r\nApplication, but excluding the System Libraries of the Combined Work.\r\n\r\n 1. Exception to Section 3 of the GNU GPL.\r\n\r\n You may convey a covered work under sections 3 and 4 of this License\r\nwithout being bound by section 3 of the GNU GPL.\r\n\r\n 2. Conveying Modified Versions.\r\n\r\n If you modify a copy of the Library, and, in your modifications, a\r\nfacility refers to a function or data to be supplied by an Application\r\nthat uses the facility (other than as an argument passed when the\r\nfacility is invoked), then you may convey a copy of the modified\r\nversion:\r\n\r\n a) under this License, provided that you make a good faith effort to\r\n ensure that, in the event an Application does not supply the\r\n function or data, the facility still operates, and performs\r\n whatever part of its purpose remains meaningful, or\r\n\r\n b) under the GNU GPL, with none of the additional permissions of\r\n this License applicable to that copy.\r\n\r\n 3. Object Code Incorporating Material from Library Header Files.\r\n\r\n The object code form of an Application may incorporate material from\r\na header file that is part of the Library. You may convey such object\r\ncode under terms of your choice, provided that, if the incorporated\r\nmaterial is not limited to numerical parameters, data structure\r\nlayouts and accessors, or small macros, inline functions and templates\r\n(ten or fewer lines in length), you do both of the following:\r\n\r\n a) Give prominent notice with each copy of the object code that the\r\n Library is used in it and that the Library and its use are\r\n covered by this License.\r\n\r\n b) Accompany the object code with a copy of the GNU GPL and this license\r\n document.\r\n\r\n 4. Combined Works.\r\n\r\n You may convey a Combined Work under terms of your choice that,\r\ntaken together, effectively do not restrict modification of the\r\nportions of the Library contained in the Combined Work and reverse\r\nengineering for debugging such modifications, if you also do each of\r\nthe following:\r\n\r\n a) Give prominent notice with each copy of the Combined Work that\r\n the Library is used in it and that the Library and its use are\r\n covered by this License.\r\n\r\n b) Accompany the Combined Work with a copy of the GNU GPL and this license\r\n document.\r\n\r\n c) For a Combined Work that displays copyright notices during\r\n execution, include the copyright notice for the Library among\r\n these notices, as well as a reference directing the user to the\r\n copies of the GNU GPL and this license document.\r\n\r\n d) Do one of the following:\r\n\r\n 0) Convey the Minimal Corresponding Source under the terms of this\r\n License, and the Corresponding Application Code in a form\r\n suitable for, and under terms that permit, the user to\r\n recombine or relink the Application with a modified version of\r\n the Linked Version to produce a modified Combined Work, in the\r\n manner specified by section 6 of the GNU GPL for conveying\r\n Corresponding Source.\r\n\r\n 1) Use a suitable shared library mechanism for linking with the\r\n Library. A suitable mechanism is one that (a) uses at run time\r\n a copy of the Library already present on the user's computer\r\n system, and (b) will operate properly with a modified version\r\n of the Library that is interface-compatible with the Linked\r\n Version.\r\n\r\n e) Provide Installation Information, but only if you would otherwise\r\n be required to provide such information under section 6 of the\r\n GNU GPL, and only to the extent that such information is\r\n necessary to install and execute a modified version of the\r\n Combined Work produced by recombining or relinking the\r\n Application with a modified version of the Linked Version. (If\r\n you use option 4d0, the Installation Information must accompany\r\n the Minimal Corresponding Source and Corresponding Application\r\n Code. If you use option 4d1, you must provide the Installation\r\n Information in the manner specified by section 6 of the GNU GPL\r\n for conveying Corresponding Source.)\r\n\r\n 5. Combined Libraries.\r\n\r\n You may place library facilities that are a work based on the\r\nLibrary side by side in a single library together with other library\r\nfacilities that are not Applications and are not covered by this\r\nLicense, and convey such a combined library under terms of your\r\nchoice, if you do both of the following:\r\n\r\n a) Accompany the combined library with a copy of the same work based\r\n on the Library, uncombined with any other library facilities,\r\n conveyed under the terms of this License.\r\n\r\n b) Give prominent notice with the combined library that part of it\r\n is a work based on the Library, and explaining where to find the\r\n accompanying uncombined form of the same work.\r\n\r\n 6. Revised Versions of the GNU Lesser General Public License.\r\n\r\n The Free Software Foundation may publish revised and/or new versions\r\nof the GNU Lesser General Public License from time to time. Such new\r\nversions will be similar in spirit to the present version, but may\r\ndiffer in detail to address new problems or concerns.\r\n\r\n Each version is given a distinguishing version number. If the\r\nLibrary as you received it specifies that a certain numbered version\r\nof the GNU Lesser General Public License "or any later version"\r\napplies to it, you have the option of following the terms and\r\nconditions either of that published version or of any later version\r\npublished by the Free Software Foundation. If the Library as you\r\nreceived it does not specify a version number of the GNU Lesser\r\nGeneral Public License, you may choose any version of the GNU Lesser\r\nGeneral Public License ever published by the Free Software Foundation.\r\n\r\n If the Library as you received it specifies that a proxy can decide\r\nwhether future versions of the GNU Lesser General Public License shall\r\napply, that proxy's public statement of acceptance of any version is\r\npermanent authorization for you to choose that version for the\r\nLibrary.</pre>\r\n','','filtered_html'),('node','page',0,185,224,'und',0,'<p> </p>\r\n<br />\r\n<div>\r\n <pre style=\"color: rgb(0, 0, 0); word-wrap: break-word; white-space: pre-wrap; \">\r\n GNU Free Documentation License\r\n Version 1.3, 3 November 2008\r\n\r\n\r\n Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.\r\n <http://fsf.org/>\r\n Everyone is permitted to copy and distribute verbatim copies\r\n of this license document, but changing it is not allowed.\r\n\r\n0. PREAMBLE\r\n\r\nThe purpose of this License is to make a manual, textbook, or other\r\nfunctional and useful document "free" in the sense of freedom: to\r\nassure everyone the effective freedom to copy and redistribute it,\r\nwith or without modifying it, either commercially or noncommercially.\r\nSecondarily, this License preserves for the author and publisher a way\r\nto get credit for their work, while not being considered responsible\r\nfor modifications made by others.\r\n\r\nThis License is a kind of "copyleft", which means that derivative\r\nworks of the document must themselves be free in the same sense. It\r\ncomplements the GNU General Public License, which is a copyleft\r\nlicense designed for free software.\r\n\r\nWe have designed this License in order to use it for manuals for free\r\nsoftware, because free software needs free documentation: a free\r\nprogram should come with manuals providing the same freedoms that the\r\nsoftware does. But this License is not limited to software manuals;\r\nit can be used for any textual work, regardless of subject matter or\r\nwhether it is published as a printed book. We recommend this License\r\nprincipally for works whose purpose is instruction or reference.\r\n\r\n\r\n1. APPLICABILITY AND DEFINITIONS\r\n\r\nThis License applies to any manual or other work, in any medium, that\r\ncontains a notice placed by the copyright holder saying it can be\r\ndistributed under the terms of this License. Such a notice grants a\r\nworld-wide, royalty-free license, unlimited in duration, to use that\r\nwork under the conditions stated herein. The "Document", below,\r\nrefers to any such manual or work. Any member of the public is a\r\nlicensee, and is addressed as "you". You accept the license if you\r\ncopy, modify or distribute the work in a way requiring permission\r\nunder copyright law.\r\n\r\nA "Modified Version" of the Document means any work containing the\r\nDocument or a portion of it, either copied verbatim, or with\r\nmodifications and/or translated into another language.\r\n\r\nA "Secondary Section" is a named appendix or a front-matter section of\r\nthe Document that deals exclusively with the relationship of the\r\npublishers or authors of the Document to the Document's overall\r\nsubject (or to related matters) and contains nothing that could fall\r\ndirectly within that overall subject. (Thus, if the Document is in\r\npart a textbook of mathematics, a Secondary Section may not explain\r\nany mathematics.) The relationship could be a matter of historical\r\nconnection with the subject or with related matters, or of legal,\r\ncommercial, philosophical, ethical or political position regarding\r\nthem.\r\n\r\nThe "Invariant Sections" are certain Secondary Sections whose titles\r\nare designated, as being those of Invariant Sections, in the notice\r\nthat says that the Document is released under this License. If a\r\nsection does not fit the above definition of Secondary then it is not\r\nallowed to be designated as Invariant. The Document may contain zero\r\nInvariant Sections. If the Document does not identify any Invariant\r\nSections then there are none.\r\n\r\nThe "Cover Texts" are certain short passages of text that are listed,\r\nas Front-Cover Texts or Back-Cover Texts, in the notice that says that\r\nthe Document is released under this License. A Front-Cover Text may\r\nbe at most 5 words, and a Back-Cover Text may be at most 25 words.\r\n\r\nA "Transparent" copy of the Document means a machine-readable copy,\r\nrepresented in a format whose specification is available to the\r\ngeneral public, that is suitable for revising the document\r\nstraightforwardly with generic text editors or (for images composed of\r\npixels) generic paint programs or (for drawings) some widely available\r\ndrawing editor, and that is suitable for input to text formatters or\r\nfor automatic translation to a variety of formats suitable for input\r\nto text formatters. A copy made in an otherwise Transparent file\r\nformat whose markup, or absence of markup, has been arranged to thwart\r\nor discourage subsequent modification by readers is not Transparent.\r\nAn image format is not Transparent if used for any substantial amount\r\nof text. A copy that is not "Transparent" is called "Opaque".\r\n\r\nExamples of suitable formats for Transparent copies include plain\r\nASCII without markup, Texinfo input format, LaTeX input format, SGML\r\nor XML using a publicly available DTD, and standard-conforming simple\r\nHTML, PostScript or PDF designed for human modification. Examples of\r\ntransparent image formats include PNG, XCF and JPG. Opaque formats\r\ninclude proprietary formats that can be read and edited only by\r\nproprietary word processors, SGML or XML for which the DTD and/or\r\nprocessing tools are not generally available, and the\r\nmachine-generated HTML, PostScript or PDF produced by some word\r\nprocessors for output purposes only.\r\n\r\nThe "Title Page" means, for a printed book, the title page itself,\r\nplus such following pages as are needed to hold, legibly, the material\r\nthis License requires to appear in the title page. For works in\r\nformats which do not have any title page as such, "Title Page" means\r\nthe text near the most prominent appearance of the work's title,\r\npreceding the beginning of the body of the text.\r\n\r\nThe "publisher" means any person or entity that distributes copies of\r\nthe Document to the public.\r\n\r\nA section "Entitled XYZ" means a named subunit of the Document whose\r\ntitle either is precisely XYZ or contains XYZ in parentheses following\r\ntext that translates XYZ in another language. (Here XYZ stands for a\r\nspecific section name mentioned below, such as "Acknowledgements",\r\n"Dedications", "Endorsements", or "History".) To "Preserve the Title"\r\nof such a section when you modify the Document means that it remains a\r\nsection "Entitled XYZ" according to this definition.\r\n\r\nThe Document may include Warranty Disclaimers next to the notice which\r\nstates that this License applies to the Document. These Warranty\r\nDisclaimers are considered to be included by reference in this\r\nLicense, but only as regards disclaiming warranties: any other\r\nimplication that these Warranty Disclaimers may have is void and has\r\nno effect on the meaning of this License.\r\n\r\n2. VERBATIM COPYING\r\n\r\nYou may copy and distribute the Document in any medium, either\r\ncommercially or noncommercially, provided that this License, the\r\ncopyright notices, and the license notice saying this License applies\r\nto the Document are reproduced in all copies, and that you add no\r\nother conditions whatsoever to those of this License. You may not use\r\ntechnical measures to obstruct or control the reading or further\r\ncopying of the copies you make or distribute. However, you may accept\r\ncompensation in exchange for copies. If you distribute a large enough\r\nnumber of copies you must also follow the conditions in section 3.\r\n\r\nYou may also lend copies, under the same conditions stated above, and\r\nyou may publicly display copies.\r\n\r\n\r\n3. COPYING IN QUANTITY\r\n\r\nIf you publish printed copies (or copies in media that commonly have\r\nprinted covers) of the Document, numbering more than 100, and the\r\nDocument's license notice requires Cover Texts, you must enclose the\r\ncopies in covers that carry, clearly and legibly, all these Cover\r\nTexts: Front-Cover Texts on the front cover, and Back-Cover Texts on\r\nthe back cover. Both covers must also clearly and legibly identify\r\nyou as the publisher of these copies. The front cover must present\r\nthe full title with all words of the title equally prominent and\r\nvisible. You may add other material on the covers in addition.\r\nCopying with changes limited to the covers, as long as they preserve\r\nthe title of the Document and satisfy these conditions, can be treated\r\nas verbatim copying in other respects.\r\n\r\nIf the required texts for either cover are too voluminous to fit\r\nlegibly, you should put the first ones listed (as many as fit\r\nreasonably) on the actual cover, and continue the rest onto adjacent\r\npages.\r\n\r\nIf you publish or distribute Opaque copies of the Document numbering\r\nmore than 100, you must either include a machine-readable Transparent\r\ncopy along with each Opaque copy, or state in or with each Opaque copy\r\na computer-network location from which the general network-using\r\npublic has access to download using public-standard network protocols\r\na complete Transparent copy of the Document, free of added material.\r\nIf you use the latter option, you must take reasonably prudent steps,\r\nwhen you begin distribution of Opaque copies in quantity, to ensure\r\nthat this Transparent copy will remain thus accessible at the stated\r\nlocation until at least one year after the last time you distribute an\r\nOpaque copy (directly or through your agents or retailers) of that\r\nedition to the public.\r\n\r\nIt is requested, but not required, that you contact the authors of the\r\nDocument well before redistributing any large number of copies, to\r\ngive them a chance to provide you with an updated version of the\r\nDocument.\r\n\r\n\r\n4. MODIFICATIONS\r\n\r\nYou may copy and distribute a Modified Version of the Document under\r\nthe conditions of sections 2 and 3 above, provided that you release\r\nthe Modified Version under precisely this License, with the Modified\r\nVersion filling the role of the Document, thus licensing distribution\r\nand modification of the Modified Version to whoever possesses a copy\r\nof it. In addition, you must do these things in the Modified Version:\r\n\r\nA. Use in the Title Page (and on the covers, if any) a title distinct\r\n from that of the Document, and from those of previous versions\r\n (which should, if there were any, be listed in the History section\r\n of the Document). You may use the same title as a previous version\r\n if the original publisher of that version gives permission.\r\nB. List on the Title Page, as authors, one or more persons or entities\r\n responsible for authorship of the modifications in the Modified\r\n Version, together with at least five of the principal authors of the\r\n Document (all of its principal authors, if it has fewer than five),\r\n unless they release you from this requirement.\r\nC. State on the Title page the name of the publisher of the\r\n Modified Version, as the publisher.\r\nD. Preserve all the copyright notices of the Document.\r\nE. Add an appropriate copyright notice for your modifications\r\n adjacent to the other copyright notices.\r\nF. Include, immediately after the copyright notices, a license notice\r\n giving the public permission to use the Modified Version under the\r\n terms of this License, in the form shown in the Addendum below.\r\nG. Preserve in that license notice the full lists of Invariant Sections\r\n and required Cover Texts given in the Document's license notice.\r\nH. Include an unaltered copy of this License.\r\nI. Preserve the section Entitled "History", Preserve its Title, and add\r\n to it an item stating at least the title, year, new authors, and\r\n publisher of the Modified Version as given on the Title Page. If\r\n there is no section Entitled "History" in the Document, create one\r\n stating the title, year, authors, and publisher of the Document as\r\n given on its Title Page, then add an item describing the Modified\r\n Version as stated in the previous sentence.\r\nJ. Preserve the network location, if any, given in the Document for\r\n public access to a Transparent copy of the Document, and likewise\r\n the network locations given in the Document for previous versions\r\n it was based on. These may be placed in the "History" section.\r\n You may omit a network location for a work that was published at\r\n least four years before the Document itself, or if the original\r\n publisher of the version it refers to gives permission.\r\nK. For any section Entitled "Acknowledgements" or "Dedications",\r\n Preserve the Title of the section, and preserve in the section all\r\n the substance and tone of each of the contributor acknowledgements\r\n and/or dedications given therein.\r\nL. Preserve all the Invariant Sections of the Document,\r\n unaltered in their text and in their titles. Section numbers\r\n or the equivalent are not considered part of the section titles.\r\nM. Delete any section Entitled "Endorsements". Such a section\r\n may not be included in the Modified Version.\r\nN. Do not retitle any existing section to be Entitled "Endorsements"\r\n or to conflict in title with any Invariant Section.\r\nO. Preserve any Warranty Disclaimers.\r\n\r\nIf the Modified Version includes new front-matter sections or\r\nappendices that qualify as Secondary Sections and contain no material\r\ncopied from the Document, you may at your option designate some or all\r\nof these sections as invariant. To do this, add their titles to the\r\nlist of Invariant Sections in the Modified Version's license notice.\r\nThese titles must be distinct from any other section titles.\r\n\r\nYou may add a section Entitled "Endorsements", provided it contains\r\nnothing but endorsements of your Modified Version by various\r\nparties--for example, statements of peer review or that the text has\r\nbeen approved by an organization as the authoritative definition of a\r\nstandard.\r\n\r\nYou may add a passage of up to five words as a Front-Cover Text, and a\r\npassage of up to 25 words as a Back-Cover Text, to the end of the list\r\nof Cover Texts in the Modified Version. Only one passage of\r\nFront-Cover Text and one of Back-Cover Text may be added by (or\r\nthrough arrangements made by) any one entity. If the Document already\r\nincludes a cover text for the same cover, previously added by you or\r\nby arrangement made by the same entity you are acting on behalf of,\r\nyou may not add another; but you may replace the old one, on explicit\r\npermission from the previous publisher that added the old one.\r\n\r\nThe author(s) and publisher(s) of the Document do not by this License\r\ngive permission to use their names for publicity for or to assert or\r\nimply endorsement of any Modified Version.\r\n\r\n\r\n5. COMBINING DOCUMENTS\r\n\r\nYou may combine the Document with other documents released under this\r\nLicense, under the terms defined in section 4 above for modified\r\nversions, provided that you include in the combination all of the\r\nInvariant Sections of all of the original documents, unmodified, and\r\nlist them all as Invariant Sections of your combined work in its\r\nlicense notice, and that you preserve all their Warranty Disclaimers.\r\n\r\nThe combined work need only contain one copy of this License, and\r\nmultiple identical Invariant Sections may be replaced with a single\r\ncopy. If there are multiple Invariant Sections with the same name but\r\ndifferent contents, make the title of each such section unique by\r\nadding at the end of it, in parentheses, the name of the original\r\nauthor or publisher of that section if known, or else a unique number.\r\nMake the same adjustment to the section titles in the list of\r\nInvariant Sections in the license notice of the combined work.\r\n\r\nIn the combination, you must combine any sections Entitled "History"\r\nin the various original documents, forming one section Entitled\r\n"History"; likewise combine any sections Entitled "Acknowledgements",\r\nand any sections Entitled "Dedications". You must delete all sections\r\nEntitled "Endorsements".\r\n\r\n\r\n6. COLLECTIONS OF DOCUMENTS\r\n\r\nYou may make a collection consisting of the Document and other\r\ndocuments released under this License, and replace the individual\r\ncopies of this License in the various documents with a single copy\r\nthat is included in the collection, provided that you follow the rules\r\nof this License for verbatim copying of each of the documents in all\r\nother respects.\r\n\r\nYou may extract a single document from such a collection, and\r\ndistribute it individually under this License, provided you insert a\r\ncopy of this License into the extracted document, and follow this\r\nLicense in all other respects regarding verbatim copying of that\r\ndocument.\r\n\r\n\r\n7. AGGREGATION WITH INDEPENDENT WORKS\r\n\r\nA compilation of the Document or its derivatives with other separate\r\nand independent documents or works, in or on a volume of a storage or\r\ndistribution medium, is called an "aggregate" if the copyright\r\nresulting from the compilation is not used to limit the legal rights\r\nof the compilation's users beyond what the individual works permit.\r\nWhen the Document is included in an aggregate, this License does not\r\napply to the other works in the aggregate which are not themselves\r\nderivative works of the Document.\r\n\r\nIf the Cover Text requirement of section 3 is applicable to these\r\ncopies of the Document, then if the Document is less than one half of\r\nthe entire aggregate, the Document's Cover Texts may be placed on\r\ncovers that bracket the Document within the aggregate, or the\r\nelectronic equivalent of covers if the Document is in electronic form.\r\nOtherwise they must appear on printed covers that bracket the whole\r\naggregate.\r\n\r\n\r\n8. TRANSLATION\r\n\r\nTranslation is considered a kind of modification, so you may\r\ndistribute translations of the Document under the terms of section 4.\r\nReplacing Invariant Sections with translations requires special\r\npermission from their copyright holders, but you may include\r\ntranslations of some or all Invariant Sections in addition to the\r\noriginal versions of these Invariant Sections. You may include a\r\ntranslation of this License, and all the license notices in the\r\nDocument, and any Warranty Disclaimers, provided that you also include\r\nthe original English version of this License and the original versions\r\nof those notices and disclaimers. In case of a disagreement between\r\nthe translation and the original version of this License or a notice\r\nor disclaimer, the original version will prevail.\r\n\r\nIf a section in the Document is Entitled "Acknowledgements",\r\n"Dedications", or "History", the requirement (section 4) to Preserve\r\nits Title (section 1) will typically require changing the actual\r\ntitle.\r\n\r\n\r\n9. TERMINATION\r\n\r\nYou may not copy, modify, sublicense, or distribute the Document\r\nexcept as expressly provided under this License. Any attempt\r\notherwise to copy, modify, sublicense, or distribute it is void, and\r\nwill automatically terminate your rights under this License.\r\n\r\nHowever, if you cease all violation of this License, then your license\r\nfrom a particular copyright holder is reinstated (a) provisionally,\r\nunless and until the copyright holder explicitly and finally\r\nterminates your license, and (b) permanently, if the copyright holder\r\nfails to notify you of the violation by some reasonable means prior to\r\n60 days after the cessation.\r\n\r\nMoreover, your license from a particular copyright holder is\r\nreinstated permanently if the copyright holder notifies you of the\r\nviolation by some reasonable means, this is the first time you have\r\nreceived notice of violation of this License (for any work) from that\r\ncopyright holder, and you cure the violation prior to 30 days after\r\nyour receipt of the notice.\r\n\r\nTermination of your rights under this section does not terminate the\r\nlicenses of parties who have received copies or rights from you under\r\nthis License. If your rights have been terminated and not permanently\r\nreinstated, receipt of a copy of some or all of the same material does\r\nnot give you any rights to use it.\r\n\r\n\r\n10. FUTURE REVISIONS OF THIS LICENSE\r\n\r\nThe Free Software Foundation may publish new, revised versions of the\r\nGNU Free Documentation License from time to time. Such new versions\r\nwill be similar in spirit to the present version, but may differ in\r\ndetail to address new problems or concerns. See\r\nhttp://www.gnu.org/copyleft/.\r\n\r\nEach version of the License is given a distinguishing version number.\r\nIf the Document specifies that a particular numbered version of this\r\nLicense "or any later version" applies to it, you have the option of\r\nfollowing the terms and conditions either of that specified version or\r\nof any later version that has been published (not as a draft) by the\r\nFree Software Foundation. If the Document does not specify a version\r\nnumber of this License, you may choose any version ever published (not\r\nas a draft) by the Free Software Foundation. If the Document\r\nspecifies that a proxy can decide which future versions of this\r\nLicense can be used, that proxy's public statement of acceptance of a\r\nversion permanently authorizes you to choose that version for the\r\nDocument.\r\n\r\n11. RELICENSING\r\n\r\n"Massive Multiauthor Collaboration Site" (or "MMC Site") means any\r\nWorld Wide Web server that publishes copyrightable works and also\r\nprovides prominent facilities for anybody to edit those works. A\r\npublic wiki that anybody can edit is an example of such a server. A\r\n"Massive Multiauthor Collaboration" (or "MMC") contained in the site\r\nmeans any set of copyrightable works thus published on the MMC site.\r\n\r\n"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 \r\nlicense published by Creative Commons Corporation, a not-for-profit \r\ncorporation with a principal place of business in San Francisco, \r\nCalifornia, as well as future copyleft versions of that license \r\npublished by that same organization.\r\n\r\n"Incorporate" means to publish or republish a Document, in whole or in \r\npart, as part of another Document.\r\n\r\nAn MMC is "eligible for relicensing" if it is licensed under this \r\nLicense, and if all works that were first published under this License \r\nsomewhere other than this MMC, and subsequently incorporated in whole or \r\nin part into the MMC, (1) had no cover texts or invariant sections, and \r\n(2) were thus incorporated prior to November 1, 2008.\r\n\r\nThe operator of an MMC Site may republish an MMC contained in the site\r\nunder CC-BY-SA on the same site at any time before August 1, 2009,\r\nprovided the MMC is eligible for relicensing.\r\n\r\n\r\nADDENDUM: How to use this License for your documents\r\n\r\nTo use this License in a document you have written, include a copy of\r\nthe License in the document and put the following copyright and\r\nlicense notices just after the title page:\r\n\r\n Copyright (c) YEAR YOUR NAME.\r\n Permission is granted to copy, distribute and/or modify this document\r\n under the terms of the GNU Free Documentation License, Version 1.3\r\n or any later version published by the Free Software Foundation;\r\n with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.\r\n A copy of the license is included in the section entitled "GNU\r\n Free Documentation License".\r\n\r\nIf you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,\r\nreplace the "with...Texts." line with this:\r\n\r\n with the Invariant Sections being LIST THEIR TITLES, with the\r\n Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.\r\n\r\nIf you have Invariant Sections without Cover Texts, or some other\r\ncombination of the three, merge those two alternatives to suit the\r\nsituation.\r\n\r\nIf your document contains nontrivial examples of program code, we\r\nrecommend releasing these examples in parallel under your choice of\r\nfree software license, such as the GNU General Public License,\r\nto permit their use in free software.</pre>\r\n</div>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,186,225,'und',0,'<p>Nei sistemi operativi Unix e Unix-like, il comando crontab consente la pianificazione di comandi, ovvero consente di registrarli presso il sistema per essere poi mandati in esecuzione periodicamente.</p>\r\n<p>Generalmente, crontab usa un demone, chiamato crond, che è costantemente in esecuzione in background e, una volta al minuto, legge i contenuti del registro dei comandi pianificati ed esegue quelli per cui si è esaurito il periodo di attesa. Un comando mandato in esecuzione da crontab viene chiamato cronjob.</p>\r\n<script type=\"text/javascript\"><!--\r\ngoogle_ad_client = \"ca-pub-9382634443688186\";\r\n/* banner 468 x 60 */\r\ngoogle_ad_slot = \"0971897238\";\r\ngoogle_ad_width = 468;\r\ngoogle_ad_height = 60;\r\n//-->\r\n</script>\r\n<script type=\"text/javascript\"\r\nsrc=\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">\r\n</script>\r\n<h3>Operatori</h3>\r\n<p>Esistono diversi modi per specificare valori multipli in un campo: L'operatore virgola («,») specifica una lista di valori, ad esempio: «1,3,4,7,8». L'operatore trattino («-») specifica un intervallo di valori, ad esempio: «1-6», che equivale a «1,2,3,4,5,6». L'operatore asterisco («*») specifica tutti i possibili valori di un campo. Ad esempio, un asterisco nel campo dell'ora è equivalente a «ogni ora». Esiste anche un operatore supportato da alcune versioni estese del cron, l'operatore sbarra («/»), che può essere usato per saltare un certo numero di valori. Ad esempio, «*/3» nel campo dell'ora equivale a «0,3,6,9,12,15,18,21»; l'operatore «*» specifica «ogni ora», ma il «/3» indica che solo il primo, quarto, settimo e così via dei valori restituiti da «*» vengano usati.</p>\r\n<h3>\r\n Campi</h3>\r\n<pre>\r\n.---------------- [m]inute: minuto (0 - 59) \r\n| .------------- [h]our: ora (0 - 23)\r\n| | .---------- [d]ay [o]f [m]onth: giorno del mese (1 - 31)\r\n| | | .------- [mon]th: mese (1 - 12) OPPURE jan,feb,mar,apr... \r\n| | | | .---- [d]ay [o]f [w]eek: giorno della settimana (0 - 6) (domenica=0 o 7) OPPURE sun,mon,tue,wed,thu,fri,sat \r\n| | | | |\r\n\r\n* * * * * comando da eseguire</pre>\r\n<p>PS:Per «giorno della settimana» (5º campo), sia 0 che 7 sono considerati il valore domenica.</p>\r\n<p>Ok, dopo avervi raccontato tutta la favoletta "teorica" andiamo a vedere nella sostanza come si fa!</p>\r\n<p>Abbiamo principalmente due comandi, anche se ne esistono di altri:</p>\r\n<table border=\"0\" cellpadding=\"4\">\r\n <tbody>\r\n <tr valign=\"\\\'TOP\\\'\">\r\n <td align=\"\\\'LEFT\\\'\">\r\n crontab -e</td>\r\n <td align=\"\\\'LEFT\\\'\">\r\n Modifica il file crontab o o crea se non esiste</td>\r\n </tr>\r\n <tr valign=\"\\\'TOP\\\'\">\r\n <td align=\"\\\'LEFT\\\'\">\r\n crontab -l</td>\r\n <td align=\"\\\'LEFT\\\'\">\r\n Mostra il file crontab</td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p>A questo file che si aprirà, in base all'editor da noi scelto (nano, VI, VIM...) dobbiamo aggiungere una nuova riga con la sintassi precedentemente vista.</p>\r\n<p>Ad esempio questo fa un backup degli utenti alle 5:00 di ogni settimana:</p>\r\n<p>0 5 * * 1 tar -zcf /var/backups/home.tgz /home/</p>\r\n<p>Ad esempio ecco il cronjob che corre sulla mia $HOME per tenere sempre in esecuzione le API universitarie.</p>\r\n<p>0 * * * * $HOME/opt/nginx-1.2.1/sbin/nginx</p>\r\n<hr />\r\n<p>Siccome la ruota è già stata inventata e per non impazzire ulteriormente vi consiglio di usare un generatore, se ne trovano molti in giro, io vi coniglio <a href=\"http://www.openjs.com/scripts/jslibrary/demos/crontab.php\" target=\"_blank\">Crontab Code Generator</a> che oltre ad una semplice interfaccia grafica con cui possiamo anche selezionare più elementi contemporaneamente ad esempio per gli orari ci fornisce una spiegazione dettagliata approposito di crontab, che fa sempre comodo se ricerchiamo situazioni più complesse che non posso coprire nell'articolo.</p>\r\n<p>È tutto! Create e sperimentate i vostri cronjob!</p>\r\n','','filtered_html'),('node','blog',0,188,227,'und',0,'<h1 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\">Bones | and | Dogs</span></h1>\r\n<h2 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\"><span style=\"color: rgb(47, 79, 79);\">Le Collisioni e la Board per le Stat di Gioco</span></span></h2>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Con questo articolo andremo ad illustrare in che modo tutti gli oggetti che siamo riusciti a far apparire fin'ora sulla nostra Finestra, si accorgono di essere toccati o meno; Mi spiego meglio:</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">abbiamo precedentemente visto che, l'unico elemento che comandiamo da tastiera con i tasti direzionali, è il Cane (costruito nella classe <strong>Dog</strong>). Questo fà in modo che il Listener della Tastiera fà muovere lungo le coordinate X,Y (in base al tasto premuto) l'immagine stampata sulla BoardGame (costruito appunto tutto nella classe <strong>BoardGame</strong>). Infine abbiamo costruito senza movimenti, ma con precedimenti simili, alcuni ostacoli lungo il percorso che dovrà affontare i cane comandato da noi, ovvero Rocce ed Alberi (costriuti sulla board rispettivamente dalle classi <strong>Stone</strong> e <strong>Tree</strong>). Fatto questo breve riepilogo la domada è: Come facciamo a fermare il cane quando incontra un ostacolo?</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">La questione è semplice, se solo ragioniamo a come abbiamo fatto per limitare la sua camminata suo bordi della finestra: Se le sue coordinate superano quelle delle dimensioni della inestra, mantieni le sue coordinate stabili, senza nessun incremento.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Andiamo ad implementare la stessa cosa con gli ostacoli, dato che per ogni oggetto costruito conosciamo la "<em>x" </em>e la "<em>y"</em>.</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i50.tinypic.com/vr4hdw.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Come mostrato nella figura possiamo fare in modo che, se le coordinate del cane in quel momento sono uguali a quelle della roccia (ad esempio), esso esegue due passi indietro, oppure le coordinate rimandono quelle, sono scelte. La cosa important da fare e che esse non devono essere attraversate. Questa potrebbe essere una soluzione, ma ovviamente non è l'unico metodo. Per le immagini questo metodo è poco consigliato perchè, soprattutto con immagini grosse (nostro caso che mediamente ha immagini 50x50 px) non conviene perchè le coordinate vengono settate a livello di pixel e non a livello di immagine. Quindi si fermerebbe solo se precisamente incontriamo il pixel esatto di entrambe le immagini. Allora ho trovato un metodo molto più efficiente, m prima di descriverlo, commentiamo ul codice che permette di fermare il cane. Implementiamo un nuovo metodo nella classe Dog, chiamato appunto <strong>stop():</strong></span></p>\r\n<pre>\r\n<span style=\"font-family:tahoma,geneva,sans-serif;\">public void stop()\r\n{\r\n if (LEFT) \r\n {\r\n x++;\r\n ...\r\n }\r\n\r\n if (RIGHT) \r\n {\r\n x--;\r\n ...\r\n }\r\n\r\n if (UP) \r\n {\r\n y++;\r\n ...\r\n }\r\n\r\n if (DOWN) \r\n {\r\n y--;\r\n ...\r\n } \r\n \r\n }\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">valutando il metodo, questo ci fà capire che, in base a come stiamo camminando, dobbiamo fermare il cane su diverse coordinate. Esempio, se stiamo andando a SINISTRA, logicamente sarebbe da sciocchi continuare a decrementare la x (dato che per muoverlo a sinistra decrementiamo la x), e quindi settiamo la coordinata inversamente, facendolo arrestrare di un px. Stesso ragionamento và con le altre direzioni. Quindi andiamo a valutare la fermata sempre in base a Cosa si stà premendo (ecco spiegato il motivo per cui ho <strong>SCELTO</strong> di effettuare solo movimenti su, giu, destra, sinistra, senza movimenti in diagonale, altrimenti avremmo dovuto fare molti più controlli, ovviamente complessi).</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Come fermarli con gli oggetti? Semplice: altra soluzione è quella di tracciare per ogni immagine, un rettangolo (dato che le immagini, anche le nostre *.png a sfondo trasparente, sono rettangolari). Se le IMMAGINI intere si Intersecano, avvia il metodo <strong>stop()</strong> del cane.</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i50.tinypic.com/b3oiuw.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Con alcune funzioni matematiche presenti in <strong>awt</strong>, riusciamo a implementare ciò. Le collisioni le mettiamo in funzione gestendole tutte in una nuova classe (che le conterrà tutte, e in base all'oggetto che collide vi sarò un dato evento) <strong>CheckCollision().</strong></span></p>\r\n<p> </p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Infine, per non divulgarci troppo, andremo a descrivere come si rappresenta l'altro pannello legato alla Window Game, per le statistiche di gioco. Come spiegato nel primo articolo, esso doveva essere composto da un'animazione di un Uomo che simulava il lancio di oggetti, e una Label per le statistiche di gioco (Punteggi). Ecco uno screen:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i48.tinypic.com/257j4o6.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">L'omino è una GIF animata, che, in base al tempo di lancio (che descriveremo nei successivi articoli) varierà di velocità. Il punteggio viene stampato a suo fianco, in base a quanti ossi il cane riesce a raccogliere. Inizialmente era stato creato come <strong>nuovo Pannello</strong>, ma mi sono accorto che, inserendolo anche con dei Layout appositi (Grid, e Border), si sfalzavano tutte le immagini perchè vi era in contrasto con la soluzione del pannello trasparente (articolo uno se vi ricordate, per far apparire gli oggetti sullo sfondo). Ho preferito quindi stamparli direttamente usando il metodo Paint, assieme agli alti oggetti, ovviamente variando le coordinate di stampa.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">In questo artiolo ci siamo divulgati molto, ma era necessario per comprendere l'articolo successivo, il quale vi illustrerò come gestiamo il lancio degli oggetti, collegato il TEMPO DI LANCIO senza fermare l'esecuzione del resto del gioco.</span></p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\r\n<p class=\"rtecenter\"><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\">1</a> - <a href=\"http://students.uniparthenope.it/?q=node/163\"> 2 </a> - <a href=\"http://students.uniparthenope.it/?q=node/176\"> 3 </a> - <strong><a href=\"http://students.uniparthenope.it/?q=node/188\"><span style=\"color:#ff0000;\"> 4 </span></a></strong> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,189,228,'und',0,'<p>Cari colleghi l'app. android (proggetto per l'esame di programmazione 3) per la visualizzazione degli orari è quasi pronta.<br />\r\n L'unico requisito per il corretto funzionamento è la connessione ad internet.</p>\r\n<p>Nel mio ultimo articolo (<a href=\"http://students.uniparthenope.it/?q=node/181\">http://students.uniparthenope.it/?q=node/181</a>) l'ho presentata come un'app. accessibile sia per le matricole, sia per l'utente ospite.<br />\r\n Con l'avanzamento del lavoro mi sono reso conto che la realizzazione e la gestione dell'utente ospite è da considerare, a tutti gli effetti, come un secondo progetto. Pertanto la pubblicazione, così come l'oggetto d'esame, verterà soltanto sul lato "matricola autenticata". <br />\r\n <br />\r\n Con il beneplacido (da verificare) del prof. Montella ho proposto, la parte inerente agli "ospiti", ad un collega che magari potrebbe consegnarla come progetto d'esame.<br />\r\n In attesa delle risposte, sia del prof. che di questo mio amico, se qualcuno è interessato all'idea, può tranquillamente contattarmi.</p>\r\n<p>Passiamo ora ad alcuni screenshot dell'app.</p>\r\n<p>Al primo accesso ci troveremo di fronte alla seguente schermata:</p>\r\n<p><a href=\"/sites/default/files/images/20122710182856.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710182856.jpg\" style=\"width: 408px; height: 300px; \" /></a></p>\r\n<p>Inseriamo matricola e password (quella utilizzata per accedere in "servizi.uniparthenope"), accediamo al menu principale :</p>\r\n<p> <a href=\"/sites/default/files/images/20122710183211.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710183211.jpg\" style=\"width: 202px; height: 300px; \" /></a></p>\r\n<p>Proviamo ora (precisando che in questo preciso istante è SABATO) a cliccare su "Orario Giornaliero" e su "Orario di Domani":</p>\r\n<p><a href=\"/sites/default/files/images/20122710183441.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710183441.jpg\" style=\"width: 407px; height: 300px; \" /></a></p>\r\n<p>Come era facile intuire, non sono previsti corsi :-)<br />\r\n Da non considerare il posizionamento dei layout, poichè il tutto gira su emulatore che tende a sfasare le posizioni degli oggetti.</p>\r\n<p>Ora cliccando il tasto di default "Indietro" del nostro smartphone ritorniamo al menu principale e clicchiamo su "Orario Settimanale" :</p>\r\n<p><a href=\"/sites/default/files/images/20122710183808.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710183808.jpg\" style=\"width: 236px; height: 350px; \" /></a></p>\r\n<p>Possiamo ora navigare tra i vari orari disponibili a seconda del giorno o dell'anno che clicchiamo nel layout in alto.</p>\r\n<p>L' app è dotata anche di un menu con i relativi pulsanti "Login" e "Logout". Se clicchiamo il secondo saremo trasferiti alla "pagina di benvenuto", mentre tastando "Login", se già siamo loggati, ci ritroveremo :</p>\r\n<p><a href=\"/sites/default/files/images/20122710184348.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122710184348.jpg\" style=\"width: 204px; height: 300px; \" /></a></p>\r\n<p>Cliccando sul pulsante "Logout" saremo trasferiti al form iniziale di input di matricola e password.</p>\r\n<p>Ovviamente una volta effettuato il primo accesso, questo viene salvato nel database dell'applicazione, in modo tale che non ci si debba loggare ad ogni start dell'app.</p>\r\n<p>Come potrete notare, manca la gestione del "Orario Personale", che riguarderebbe la visualizzazione SOLO dei corsi degli insegnamenti che uno studente NON ha sostenuto.<br />\r\n Ad esempio: se la matricola X ha sostenuto l'esame di Matematica 1, allora l'orario previsto per Matematica 1 non dovrà essere visualizzato.</p>\r\n<p>Sono indeciso se realizzarlo o meno, data la scarsa utilità (a parer mio) dell'oggetto in questione.<br />\r\n Si accettano consigli!</p>\r\n<p>Saluti a tutti!</p>\r\n<p>PS: La visualizzazione online degli insegnamenti del corso di Informatica è disponibile al link <a href=\"http://students.uniparthenope.it/~0124000028/drupal-7.15/?q=node/1\">http://students.uniparthenope.it/~0124000028/drupal-7.15/?q=node/1</a></p>\r\n','','full_html'),('node','forum',0,190,229,'und',0,'<p> </p>\r\n<div>\r\n IMPORTANTE: Censimento API REST</div>\r\n<div>\r\n ------------------------------</div>\r\n<div>\r\n Tutti gli studenti (o ex tali :-)) che hanno sviluppato API REST attualmente in funzione su http://students.uniparthenope.it :PORTA, sono pregati di fare un post sul forum http://students.uniparthenope.it/node/190 in cui indicare:</div>\r\n<div>\r\n - Nome dell'API</div>\r\n<div>\r\n - Descrizione sintetica</div>\r\n<div>\r\n - URL</div>\r\n<div>\r\n - Elenco dei metodi esposti con sintassi e breve descrizione ed esempio da linea di comando usando curl</div>\r\n<div>\r\n - Eventuali note</div>\r\n<div>\r\n </div>\r\n<div>\r\n Le migliori API REST saranno selezionate per diventare API ufficiali uniparthenope e gli autori tester/developer del nuovo uniApiStore e uniApiSDK.</div>\r\n','','filtered_html'),('node','blog',0,191,230,'und',0,'<p>Salve colleghi, ho da poco ultimato la GUI per l'algoritmo di cifratura di Vigenère e ora ho intenzione di darvi un po' più di dettagli. Innanzitutto il sistema operativo utilizzato è ovviamente Linux e l'IDE da me scelto è Eclipse e per ora il progetto si compone di sole quattro classi anche se con molta probabilità non saranno quelle definitive. Le classi da me create sono: Start la quale contiene il metodo main, la classe JCrypto che rappresenta la GUI dell'intero programma compreso la gestione degli eventi ed è quindi la classe più estesa, poi sono presenti le classi Cesar e Vigenère che implementano i relativi algoritmi.</p>\r\n<p>La GUI dell'algoritmo di Cesare è composta da due JTextArea (una per il testo in chiaro e l'altra per il testo cifrato), poi sono presenti due JButton che permettono di cifrare e decifrare il testo inserito. Poi ci sono due JTextField in cui sono visualizzati l'alfabeto di partenza e l'alfabeto cifrante (cioè quello in cui ogni lettera è sostituita da quella 3 posizioni più avanti nell'alfabeto di partenza). La GUI dell'algoritmo di Vigenère è del tutto simile, la differenza consiste nel fatto che le due JTextArea sono più piccole per far spazio alla tavola di Vigenère che l'algoritmo utilizza per cifrare e decifrare. </p>\r\n<p>Al momento sto lavorando all'inserimento di alcuni menù per consentire di settare a proprio piacimento le chiavi dei due algoritmi. Non so se riuscirò a breve a inserire un ulteriore algoritmo di cifratura ( anche perché l'esame si avvicina XD) ma sicuramente provvederò a farlo in seguito. Intanto quando avrò finito i vari menù mi piacerebbe implementare un'altra funzionalità, cioè quella di poter cifrare e decifrare anche dei file txt salvati nel filesystem.</p>\r\n<p>A breve cercherò di pubblicare delle immagini relative al programma, se non l'ho ancora fatto e perchè vorrei pubblicare una versione definitiva.</p>\r\n<p>A presto.</p>\r\n<p>PF</p>\r\n','','filtered_html'),('node','forum',0,192,231,'und',0,'<p>Sarebbe utile realizzare una API REST che implementa un keystore relativo agli utenti uniparthenope.</p>\r\n<p>L'API potrebbe essere usata per memorizzare credenziali oppure impostazioni legate al profilo utente e comuni a differenti ambienti.</p>\r\n<p>Ad esempio, le impostazioni di una app mobile possono essere condivise da una webapp.</p>\r\n<p>Oppure se si dispone sia di un dispositivo iOS sia di uno Android l'utente ritrova le stesse impostazioni in ambo le applicazioni.</p>\r\n<p>Altro scenario: differenti applicazioni universitare non utilizzano lo stesso username/password. Questi possono essere memorizzati codificate nel keystore.</p>\r\n<p>Ovviamente questa API deve essere gestita unicamente via https e tutto il contenuto dei campi deve essere codificato con un sistema adeguato.</p>\r\n<p> </p>\r\n','','filtered_html'),('node','forum',0,193,232,'und',0,'<p><img alt=\"servizi parthenope by Fabio Nisci Logo\" src=\"http://students.uniparthenope.it/~0124000074/iosapp/img/renders/Icon-72%402x.png\" /> Servizi Parthenope offre la possibilità di accedere ai servizi riservati agli studenti dell’Università e non solo.</p>\r\n<ul>\r\n <li>\r\n ALCUNE DELLE FUNZIONI....</li>\r\n <br />\r\n <li>\r\n News dell’Università di Ateneo, delle Facoltà e dei dipartimenti</li>\r\n <li>\r\n Rubrica del personale Universitario</li>\r\n <li>\r\n Consultare i libri presenti nella Biblioteca</li>\r\n <br />\r\n <li>\r\n GLI STUDENTI DELLA UNIVERSITÀ PARTHENOPE POSSONO INOLTRE:</li>\r\n <br />\r\n <li>\r\n Accedere all'area riservata con le proprie credenziali</li>\r\n <li>\r\n Visualizzare il proprio piano di studi</li>\r\n <li>\r\n Monitorare la propria situazione finanziaria di Tasse e versamenti.</li>\r\n <li>\r\n Prenotare gli esami disponibili</li>\r\n <li>\r\n Cancellare le prenotazioni esami effettuate.</li>\r\n <li>\r\n Visualizzare Medie e Statistiche sul proprio andamento universitario.</li>\r\n</ul>\r\n<p>Attualmente <strong>Servizi Parthenope </strong>non è ancora disponibile su AppStore...ma arriverà a breve.</p>\r\n<p>Nel frattempo vi lascio con la landing page dove potrete trovare screenshot e funzioni principali: <a href=\"http://students.uniparthenope.it/~0124000074/iosapp/\" target=\"_blank\">http://students.uniparthenope.it/~0124000074/iosapp/ </a></p>\r\n<p>Applicazione sviluppata da <a href=\"mailto:fabio.nisci@studenti.uniparthenope.it\">Fabio Nisci</a> & <a href=\"http://www.fabiosoft.com\" target=\"_blank\">fabiosoft.com</a></p>\r\n<p>Disponibile su <a href=\"https://itunes.apple.com/it/app/servizi-parthenope-uniparthenope/id571062892?mt=8\">AppStore</a>!</p>\r\n<p>Usate questa discussione per segnalare eventuali malfunzionamenti, suggerimenti e idee a riguardo....</p>\r\n','','filtered_html'),('node','blog',0,194,233,'und',0,'<p>Salve ragazzi!</p>\r\n<p>Siamo Valeria e Daniela,oggi abbiamo cominciato per la prima volta a lavorare per il nostro progetto di tirocinio.</p>\r\n<p>Intendiamo postare step by step le fasi del nostro lavoro.</p>\r\n<p>Cominciamo con l’installazione di TomCat 7.0.32 che ci servirà in seguito.</p>\r\n<p>Speriamo possa essere utile a qualcuno questo post!</p>\r\n<p>Ecco la lista dei comandi che permetteranno di aver installato sul proprio account il seguente programma.</p>\r\n<p> </p>\r\n<p>Cominciamo:</p>\r\n<p><strong>cat README</strong></p>\r\n<p><em>“attiviamo java nel nostro ambiente di lavoro”</em></p>\r\n<p><strong>source/opt/java/sourceme</strong></p>\r\n<p><em>“successivamente creamo due cartelle”</em></p>\r\n<p><strong>mkdir dist</strong></p>\r\n<p><strong>mkdir opt</strong></p>\r\n<p><em>“Ci spostiamo nella cartella dist per installare il programma”</em></p>\r\n<p><strong>cd dist/</strong></p>\r\n<p><em>“Scarichiamo l’eseguibile dal sito di tomcat”</em></p>\r\n<p><strong>wget http://mirror.nohup.it/apache/tomcat/tomcat-7/v7.0.32/bin/apache-tomcat-7.0.32.tar.gz</strong></p>\r\n<p><em>“Procediamo all’estrazione e all’installazione del pacchetto”</em></p>\r\n<p><strong>tar -xvzf apache-tom-7.0.32.tar.gz</strong></p>\r\n<p><strong>mv apache-tomcat-7.0.32 ../opt/</strong></p>\r\n<p><strong>cd..</strong></p>\r\n<p><strong>cd opt/</strong></p>\r\n<p><strong>cd apache-tomcat-7.0.32/</strong></p>\r\n<p><strong>cd bin/</strong></p>\r\n<p><strong>./startup.sh</strong></p>\r\n<p><strong>./shutdown.sh</strong></p>\r\n<p><strong>Exit</strong></p>\r\n<p> </p>\r\n<p>L'installazione è completata!</p>\r\n<p><img alt=\"\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAocAAAB/CAIAAAASKP/oAAAgAElEQVR4nOydd1hU19b/1/RKhxnqMEPvzNCGjkjv0nufBgwwQ++996qAqCBqjOnFaOpNcpPYGynGWLAg9piYdp/3d+97f38MTQJiYrzmvTmfP3weD2f22fucmf09a+2114J/IyAgICAgIPw5gGfdAQQEBAQEBIR55lWZx+ffvHXr2rVrly9fnpmZuf/tt6dPn3Zzc4M/DGZATtee9w688eobb06WGzGVZEcxBFJ618RLrx84+Mbe3spNv7lVLJGd0f3C6wdf2dEd76FmmNz21sF33theH22hp+9RsO29A6+/LOP1/W9vzubqEwC8pU27Xz/4+iuvvPbGK/t2lvlSCPNNEWlm6Z1vvbH/4Ht7u3ODWLKDJIvwoqHX3t7/6suvvP7mwR6+NZ0AAE7ZQztfeuuNV19++dU33npparPABb3UJYppUNPAaK635hPdLgQEBASE/xtgsdivvvrq/v37c3Nz9+7du7+M7777TvbvIg8ePPjxxx/7+/s/++yze/fuzczMXL58+cqVK99///1DqpyZmXnjxo2ZmcsXL168cOHC3Tt3Tp48+YeqMgqDxROIBAKBQMDj0CjU0njweML8YczvaBeNxRMIBAIej8Wg0FgcgUAk4HEYNAqFweFll5sHj0WjAACDwy07uPySqPmmiAQ8FrPQPzQGh1/ZxMI1lx0GAEDjSWo6hoaO4byq1uooQ3n8771VCAgICAj/d3gqqpyekTE7e/3cN+fPnv367NmzN2/eOH78uIuLy7Me7P8lyOrGidXbt20dHd8x1V0cba/xrDuEgICAgPD0eSqqnJKSevnK1S++/Gp6enp6enp29trRI0ecHB2f9WAREBAQEBD+1DyJKl++fHl1VU5MTLp0aebU6TPHT5w8ceLE5cszhw4dcuRyn/VgERAQEBAQ/tQ8FVWOT0i4cOHSsWMnDh85evTo0UsXL3726adcRJUREBAQEBAeiUyVv//++zt37vzwww8/L+OXX36R/StDdvCnn35arspXrly5evXqSlWOi4//5vyFw0ePHTp0+PDhwxcunP/kk08cHBye9WAREBAQEBD+1MhU+ebNm8eOHfv0008PLePIkSOHDx8+ssCJEydmZmYePHgwMDDw2Wefffvtt49U5QsXjhw7dujwX1aV0WRTr9RMvjA13NZU9Rn3haxhYW2lTXrGvUBAQEBAWBcsFvvFF1+cOHHivffee3cZ77zzzsGDBw8cOHDgwMEDBw7s37//zTffPHjw7atXrw4PD8tU+cqVK6urcnxCwoWLF4+dOHFE5sG+dPHTTz9dUmUFPY8oUYFUkhftTJdb2kykwY3KzMgMtdfELtuvCxiyoVeKRCItSA+z0yUvHiazuBEZBZL8vOxQjhxhaWeUIjtEkJMvzUrfZEdfaoSgwg7MlEql0mQ/E/rSHiMFU6/EzJyEDQbUh/cdcaP54nxpTtomB+2Ht1eh1awCUgokkvyCpI16NAIAyBm5R6Rk5+bm5uWIMgPNCVgAAMDJmwXlDGzbWlVU195RW8E3Uv5tTwUnr+4eJ04M5Oo+sZRilZm+RRP7978+3iqJ2mBEe6IG1ax9Yni8QG1VypN2CwEBAQFhNXA43JkzZ956663bt2//+9///te//vXPf/7zf/7f//vll398++13d+9+e/vO3Rs3bl28OHPumwuvvvLqmekzW7ZsWUeVk5KSL83MnFyI9rpyeebQoc8cHbkAABTmBkF5TWtjbq64vbubH2qpigcAoNuFtfQNV27eO5LjILeokVgFhk9qXV9PTk5udUNTZW60kQIAAIFhJyhvra2pEOdkt3e2x3sy5bEAgMEaexV192Vn50gKCjuaSh20AQAATzOPyK7r6cjNzW1oaytK99WlAgBQzXwqmrurxl7ZXhaopzyv62iivGu8ZKC/SpQtqawaGWxN4CxuSVI08JW09rU0VItzsnPjPFhqBABgxnRu6assz8/KEvJS/UxlqkzUcBH2jtUGqgAA3iw8t0ro9NtkDCdPDy5sm9xa5aPwO5/rPGRN57jc9ubajJSkss3793YLXJ5ohxWW5Zw99lyHo4POk3XrISy87P/I5hAQEBD+LyNT5VdeeeXevXv/+Mc/fvzxx++/f3D//ne3bt25dOny+fMXz547f2b6y48/OXTi5Jm9e/eeOHF8ZGTk0KFDMlW+evXqtWvXfrUzKjX1ytWrX3711fT059PT07PXrh05csTJyREAVOwjCquKvJkEAMBbpNcVJsgsYGWzDQGOxlSfvPoUW4XFBFkappHlnTkeNAAAJW56fkmqmxoAKPsUtJcnW5MBABRDWoZLgg0VAQBvI+qoT7QBAACqY1JDbTwLAKgGTulVTcm2CgAA2v75BbmhNooAQNbj+ruYUzfwyzK8DFXmzXM0nmLuHurExAIAqPvkdPbmOgEAAEadGyOWNAhtVJfscgAAZkS9JIjy8DGCukFsaXOCPoGg7pHZtmVzd22yLVHFzC6trLlRHMVhygMAwyVaVFBTlRumqkQCinVsbkl1bW19dSk/UtZ/UDM2EDU2ZfiFSerqGxorMvwtVZauoOEQmpZXkeKuroB79NM19OWVlMYbAgCAqgnbyoROfuQH0ESHuNKa2vq6EiGPH+ji62FEAgAlM++0isa6uvrKeG5gbnGSEZf5iDawcsqb8mtrq2sbmgoSPIzwAFr2ntmVJWGBYYmpObV1dTU1eYFGcigAUHdNL61+7sCLWxvqamobKqQCH6NHdg8BAQHhvx2ZKr/66qt37tz5+edfHjx4cP/+d/fufTs3d/Prc+e//OLrM9NfHDt++qOPPzt+/NTe558/efKkTJXv37+/piqnp2fMzl7/5vxiFpGbx48dc3Z2BgB9v/iszHgrmZgobCipkzjaLmWTJPsUtKbbLaqygoFlakm1n2xZFmMYJijkJdoBAF7VMUZc3TnY1trc2tNbG+huQiUACksIKm5NNJN5o+X1PEUNVWEAQOO4Z0qkblQAACBYpxUURQWbLd0AB0FDlo+BynKnuQyUMtMrrjhDXyaGynbh4uau5kJxTVNrZ3WyG2veiNWNats6PjjY2dLaVFsSZY4CAKBo68dISyMtDEMymyua80urKlLtsHK6vk1bJgeKg7QUMQCgaGCb1b9vW0U0Qx5ll1ZenRMbGhgYFBqZ29SRGeMEADRTq7oX3t3V11iaEh0TL6nprsv1MZWf7xtHtOWdL+7sL7VmLDqksdZR1XW1+Yl2AKBkE8LP9NUDwCgYbYyvHZpsEYeyFdf7KqDICl5ptcNdNZFR0dEp/M7X3943VuiKxbJcs2p66gqToqOi86ubRl9/tZZtuabFTaFppVTUd9cLoyKjYoQFda3VUS5MBX3z7O7RFz/ePyIVpkZHRQoberuE3ppKaEWTDZExHTsGKhPioqJiwoO81m4YAQEB4S/BClX+/vsH3357/+7de9ev3zj79TdffP7V6VOfHzt26uPVVFkmyauoMi+TNzd3Y2Zm5sKFC+fPn79z5/bJEydkGTeZ3rFZ/CSOzGJT8SrtKOcu+i9ROKpvQcsyVZbXs0gqrg6SqTbOOCKvKiPNCQBA3SMqLUWUEhTgH5BSLPG10qQAAI7oV9CcylHBAwAoGPnn1TXGAICqlWuGtMBTtrJL4mRUVkVssl66AU7CetGvVRmtZJvR1tUpCpkP1MLquWV2HTjyYl8pPzAwXNpSn2VvRgMAINCNbF19/f0DgkIiyps7YxzwKCBo6IWLS3M2OZS0lDoYqtvGinM8FAConsmhkR6GtvaBlfVZBmqmXgK+jaU6Xplbv+fF50fa6qqqqmpbtr3x/tu7i4wAVM2cWnZNlYYyyAAAaO0gcVleHFdN1h05LWMO181al0qU9RtPcUkb2NJTmJDXtqW7f/PAcIck0Ej2OoFX0HMMFxU19G4f21KawJV571cDq6ThVdBTaTu/eI/TMHd2stCmqlhvyimXbNKVLbCr2Gb0jTc6cbRWbwMlZ+ie2N6Qrjf/zoK3jBYViBN0AEwj80e2lfrryNbdFd2kHaUhRkooAID4hiwP1OrtISAgIPzVWF+VT/92VebzBbdu3bp67drM5cszMzPffvvtqYXqFLremSXFWa40AABQ8S4rEzpaqi10BkP2kTan2cgtuGXlWTb82t5EC1lPjcMz8nmR5gCgGywUxW6cL/lgz6tK36AvD4AiBpWOFviq4AAA5A02ihqkXgCgYuWTW90QpgcAACSbjNy8SB+9pRvAFdQJvfWUlt0SDJmdUDcw3JPvb0xbWOHGGfvWTbzcJHInAgBgg4rLcpNc6StCwWiRdZ1peAwQ6axYaUWYmbpret3myamX9o3lxbIBwDg8Jj1cXJGTVvfGZHRYWVdJtJ6ePBB9KwaqvYK8nZ2dnZ2dufZsc2NtRQANa/uS1jLvhTAxrGW0ICvFh7X6U8Tg1I2sDFTwQNayct/gzrVkyqxqZVPbgBB/JgBJw8Qxuaa5IsPfmLB6E0BQ147Ob45ceZixMSErK4G9cCMoLpKGIq6d9uptoNUs/fPqeOzFAzSnYFGOiAPAScupFPnpYeeP04Nry5NM1QmAIlPSW/N8KUiAOAICAgLAE6jyd999t6YqCwTCO3fuzM3NXbt27erVq999992ZM6fd3d0BAK+xIT4tKcBWDo1GG4WU14pDzNUwAIBCodEYgrx/cTvPQYmERstqP1CY3E1iYbA6Go1WY4fll5ZsMicAgLpPlpQXZkdDo9FocBQ15QYaq6EAsOquOUXJFiQsGq/MiirszfOmAABWwdInTpS0UQWNRmu5ppUWizbq4WD+kmi0S3ZTjp+RGlZ2RTRJKbigf6C/nGPKkJOdhAIAQBEVPFLzaqtS2WpoNJoZK8319TcnomADr6hG4K1ORaPRRHZE7VB1JBENaCXmpoIOqbcGiqJhyubYWBmpq8kDAN4sMFQysrcy0DFZJGjaPZVvpyuPBpALLu6WRFmtWCFWt+T2vbS3OMEBjUajCQa+hfWNQn/WvDjqB+Y0bd5TF8VSe3TRClW2b+3E+y+ND/R19/Rt7y2LdmeSf+2rl4EiqZpkNg1l+zPRaDQaLWfgKKpoTOPSaW7pxcV8dw00Go1G6/sX7Ngz6GajuYZxi9WydixtLnSno9FoNBpNdwvLjON7kwDsEsW7n+/1YmvJ/hBUlp9io09BAZoqx+tqTDGjYHDyulGSttIo83W/swgICAj/vTy5Ks/Ozj548OAhVRYKhXfu3Llx48bs7KxMtKenpz08PAAAAM8Oie/ZtXf7th0vDlf6sOl4FAAAJ7aie8vk9j0vvPz81OS24UZpsEyX1Yxta7bvHt82uW+8UxzOoWABANAky4j81q3PT4yPjo/v6RbasmQbrFBkVWHH8Oj2yZ3jw73SUMV5sxCr67CxeefebdsnXxxrTvY2IqEBAPR9+A1Du7bvfv7l53fv3D42VJ9ApZDxprFDr7339ut7evv6t2zbOdSY5284f6cwJFYQv3nrCxMTO14aKg4wpGEBQEmLKWjqHNkxOTE+OtovNdZSQAMAWtk8tmKoK90Mi6ZZOgklmfORz1SbmKaxLYUemiTD2ObN9amWMpcBWZWV2zk0um371tGx8YmRtrJwrgozoXFiz76dA32j4+Pj26em+quTXemLimqR0rb3wy935ZhpER/5dNF4Mo1hxImU1jZWCXxYNOojRRyN1jDl1o5NbN06Nr5jz3hvU6a3pgIGCPqe6c1jL06Mj4yP7+ro3/LcnrGRAiOd1aPDMThldlz9jqnxsdGR8Yl94805XqZEALCPT2qb2Le5b3hs69jY+LatNaEGijgUAGDwOrE1O7ePT+wcHxwqi2TS13SxIyAgIPwFeCqqLBKJ7t69e/PmzevXr8v+vEyVAUuiquvosZgsXbr84tZksrKGji6LqaOpocVgMnW16PPBSWgMVlmTyWSyWFpqSzumAEVUoGmxWEwmk8lQo6CXLDeqmpYuk8ViaNPksIsH0XiCqjaLyWKxNFVIC4cJ8mpaDD0WQ0tTS5uhq8vQUsag0SiCIk2drqGpraury2SxGFp0hWW6hyUpa7JYLBaTrkBYbJ2gqKbDZLGYulpqi9ufUBiacVTttucmp17c3l2ayF3oOY6qrKokT0QDiqyoJE/BL9qtZBUNBpPFZDKZLF1tDSUKlqCkrkNTVVFRlQ2eQVcgLjNPcRRFVbqGqhwO8zgLsmiToKS0WFf6+mcCgLw6g8lkMlksbfrCWw1gycoaLBZTl8lkqKkoqdG0tGlE/FqFMlEogqKmLpPJ1GWyWJpq8kQUYPFEH3F+fSk/wNLE0ECPyWRqKBCXym8SFDR0mCyWrpYadS1DHgEBAeEvwpOossx9vaYq37p1a25u7vr16z/88MNyVf6LgCUr0dTV1VUVSdj1T36qoLAEEmltGX36GHtt6tzzxovP7drVn2/GesIt2AgICAj/zTwVVRYKhY+wlRH+amAJRKqcvJycvKICFYdF7GEEBASENXlCVZ6dnb1+/fpvWldGQEBAQEBAWJ3frcrff//9mqosEAhu3344Bvv0fAw2AgICAgICwlo8iSrPzs6urso8Pv/WrVvXrl2bmZm5dOnSt/funV7Yr4yAgICAgICwFk9FlTMyMm7Mzc3MXJ7P7XX79omF3F5/HXBaVt5+AYHeTvracs+6LwAAQNUyMjLQUPiDl3WxagZG6mtlJkFAQEBA+G08oSpfv359FVVOS0ubnZ395puFPNg3bhxbyIMNAECiW7mHRkdHR7ibLt/vo2jsFujv72is/PB2H5wm2zcqKjra39lQbSnTBo5m7BoQHR0VGeqkT1wWXUxmOYZsiooO83c2XBbri6HqOQRGR0dHe9tqKyydTdTheAWEbrTSJD6cwsPYPSgiMmqTn/OvKjDKMR18o6OjIqN9OJqKOAAga1m6+IRFREREhIcGcZk4WeMYEtM1oW3b3v7O4dHB6qIErd+4CRdLUbby3LTRYSm52BNDYIZJmquEbtp/ZES4oolHdv+bb22tiPJ3NVV/lN7jaEZOvhHRm4I9ObryS5vNUCpmbsGbIsL8PDgs+Ud8HAEBAeEvwpOr8tzc3EpVTklJuXzl6hdffjU9PT09PT07e+3IkSNOjo4AAAS6bbykrm+oualp63BHoreRAhYAQNnUo7x7vHPilTGxA3VRIzEUmlN4Wf9oY2PTYF9nOT9AmwIAgKMbx0maWrv7mhrqR/saQ7iaFAwAoNE69oLW4Zq6htaWpr66HBNZEmusIss3tWpgpKmpactgZ16cC50IAEBmOeTU9rbvOjhVEcRUWqjkiKdwglJ6R7trG1p7Osd7KgINF0s1kTUdUso6OvsGmhobmsUhJhpEANCNbh8b6+lurqurqSiKsZHJO57mkN61rT2OAQAUqxhJdabDb8soiVfSjqkd3bO1wuuPkipFh8yqalGI4e8rjEzRUdPTUl15lG4mruuvra4orW6eev29lk1rpg0DAKK+S3xubc/Eay91ZHC0Fk5EoXU8U0vq2sd2vzTIs0SCsxEQEBCeiionJiZdmpk5tVhf+crlQ5995sjlAoACO6yoviLITA4A5Oyz6gtibLQJAEC335QSaKfkn1+XbLNYnQJPMw4r6yoKYgIAqLvxC8oSHRUAQMmnoKc6k0MFAFAOax8qCjBQAAC8WWZru0jmJ1f04LVVRWoAAInJTalu5burAwDWIKygKDfIkgoAVDPf5BBnVR9hafrGpUqORHluaGaQJRkA0NqhRQP985Uc0cqWIfzCzmIvxsPWKzOiPj9wRXVEPF0/uqQ13ZyMVmSHFTS1tVSlOZAV9UyDU7OzYrxNNSkAoMH2jUrkZcR5KMoTAa/vE5cmEImyhOnhnvO5xNRMDLMa6hJd3BNEWdk5maFc1jJ7W9XMNSg6JYCtQn08y5eoH5ZTW5LusExYtR28kwTiLJEgM9GDAYDBEF2jkyPCfO3svdMFQlGOIMaHrQYAKBUjl/DG7QPbh7qK+HxhljjanamMBwBQjWrq47NlrzMGblHuRoR1ZRXvLGoqTrbXXrF1GsNJ72xNtsAiNSoQEBD+8jyJKsvc13Nzcz/88MNDqhwfn3Dh4qVjx08eOXL06NFjM5cuffrppw4ODvDrSo7VuY6cpep9ZO/VKjnKrFWMYRhPyovnAABJe0NCTlFVtVSSL6loqo315yiSAIUlBBe3JprJLG0F1gZhQ1kw/LqSY740KtB46QasWckRyJouUYVZbFnFKkXbCHFDXQUvWpArKRQEWqvPG53MmM6Rwfq6EokkNyttoy4AAFC09WMLy8IMdb3iG1tHWztaapI4aCXj4J5dr001xRvQMABAY3uXjb/1YnsaUwltHCGtL8vKTEvL4AlKm+tCvCwAgG5mVbnrzR3d7W1lUmlxS0dPRbqj7oLFbZM99sHX371dzl6q5Ah6nrysrAR/IwAgGriGR7joLP5JxSGjrDY7VH/xZJZLYHNfc2VZoSQ/t2BgoCmKi8cTNmZKJt57e+fYYE9unqSwprGnuSDQTBFUTTbENo71j/Z3lonFeZLCRC99FQIAgKoFv6KxsDg/1nbdIpELqHrnt5Yk261QZaKSi7AbUWUEBAQEeGJVnpubW0WV4+Ljz1+4eOTY8cOHjxw5cuTixQuffvKJvb09ADC9Y0SLlRxVvUs7KrgOjPm+rFLJ0TyxqDpQptp4k4j86ox0ZwAARW44L7uiTMjP5Jc0Frma0IgAKDzRr6Aphb1QyTEgv64pFgBUrVzSJQWesqpQJE5GVXXEpqWiRmtUcgSiYXh5XVtOnExnAcNyTW569cgro+3VAkFuc3dNuhVLCQCAqucYGJ3O4/EEwuyOjgY/CxwAUUMvXFySE+5U2lJmp6doEZGV40YFUPZN3hTupmtk4soXRWvJabvyRC5sLZKiZdXU81MdJWKhUJBT2P/y397fW8wEUDHltu17sSnZQgkAAG8YU1iTH82Zr22lYuLsH5Hoa6UsywsOOLJtTPfWHW0FtX2D5VVNzX09NUl2C2WryYYhWTUVGQ6LdbHkTLJrarIiFuphaDkWdTW6aGPRBKpk+/M9OdYyr7mqR2p5Ta6POgCARZRXWpj7r5JyUcz8YjJqBrZ01ZTn8TwN1xdVRJUREBAQHs3vU+XDhw8/ePBApso3btxYxVY+f+Hi0eMnDh9dpsoO9gDA9M0sKRI5y1ypip6lldmO7MUEzViKb0FLup38gpNYXt9GUNcTbyL7o9GmzHxerBUAaPrzBDEe+rKTnHhlia4sKgCKGFI+kr9RZsgp6G0QNhT7A4CqtXdudX2ITF6J7LS8/KjFihOwoMrKywUBrR8oaRvYXJ/qZrAQPY039W/Ytb9H4iMPAEDaVF6eFe+kusIRqxnd1JFCwABRnRUjKY+w1vLPaegZ3rLrua2FsZYAYB4dnRGWUSji97y7O9xP2lgcp2egCJTg2i3NMWlJMbGxsbGxURGBXm4W6gAabG5JS6nXghmKMonIzEr104NVwRL0Hb0cGFRQMvOOT0rY5MWhLwwIRXNIK64Vh7GW4qQ1I+sKE4y0F2KuUOCe3yViU1U11LM7W6MXi0Vqu0RkFSdzAAC4ycGCaD9NeAijjQEcZQBQYftEJteOdKcy15VVFZkqaz38DkRQlKnys0sJioCAgPBn4amockJC4sVLMydOnjp67Pix48dmZi599tlnXK4DAJCYAWm8lI3GAAC0DdI6SYS1xlIANGZDflOy5eLKLVbeYEN8caYXGQDwej7ZxWWxNhQA0AkSS9MDzWSyYsVrlgSb0lAAOJZfaXEsCwAAR/PP6SoNVgYAvKptSGpenCMOAKhWscXFOX4myypO2GbW8jy0F4Kg0HiSS3JVU3eNu53+8sAotJx6sLisuiRSFw8AiqH5+ZvCOFQ0OCdk5UbZyc7U31gy1BxPRANGmRVZ1CZ0UsXSLTYGBvpvsGfpqgEAxTokLGtoqjzQLbuAXz0xJXFkKmEBVKOqulK9GPAwKsZW7XsmcoKMAABAzVFU3SgONZlfwdZxi8+t7sjx1VJaUf/xV1CNgoTV1Rn2y6PGiOqpVYUpnnoL99kio6nIiIYjK9NLt0/UZ3DnO2BjJygQucoDADimJhQLQxkAoGSfWJwda66BA/Asn9yzY7ynrrysoqqyoyrVSBW9nipT3cXNhfFWK+PGiPaZnc3xhqt+BAEBAeEvxZOossx9vYoqJyUlz1y+fGb685OnTp86derqlSuHDh1ydJRN91SHiOTuHdsHBgb3jDSHuzDIGAAAy3BpY9fw0NTLb+zbPjLQUZHli0YBAF7d3KVh27b+geHJ0e6iJHdVAgAARpGbWNS6ZXKov6evf7JP6maihAcAQMnp5Hb19wwMbxnqHahIWdgnTNR3DmjdsWNgYHjXWKcwjKOIAwBgbkgpbx8ZmNj3+gs7x4Z720sjKRQS3jhy5O0jHx/cVV/f1NG3ub1CsHHeJAeCslmctHN0amho8LnNVeHG2kQA0LG0K+3p6R/ePNTXu3lztbOpOgYAsGqclIbNzREaAGh1o4iUaHs1AACQ58Z3TO2q9GYoWaX07uwSWKujAACUWHaV/YP9AwO9Pb39Q101+cG2SjoxtVtfPvDK6PBIX1/fwMj2wZasQH2lhdguNn9w/6nrrxVZ6Tw6thut6ZBa1JAbylgh3sp2CXW9QyPD/b29ff29E80CE0ABTlE1f3z36Mi27u7u3oHhbUOV4jAjWfsKVoHS7vHnhocGdo20ZkXaq1HRAAoMCwcP/8yWXaNVEX5O+o8sOkGzD8ttGR3aPPnSm6/s3balr7cv309dAQ+WcdUt3cPDO/btf3Pv+OBwV01+mPGj2kFAQED4L+epqHJqatrVq9fOnv36iy++/OKLL65fnz169IiTk6PskiRlurm9q7Ozi5O51mI9JWWmpZ2ji5Mdx9rGwdmJyzbTltldWAJRj+3k7OziYmOsIbfo48QoatRr8WEAACAASURBVJvYuLg4Ozk5OxjTcEu+T3VjDtfZxYVrY6KxJFg4ipyRrYuzs4uLtb4yed6gk9M0ZDu4Ojtw2Bw7rqOjA5uFw2LRcjqmlpbWbFtHR0cnZ1cHtqnmkpWJIqvosV1cXFyczXTkFjdaKzCM7ZxcXZy4HGPaYvfwDNuMzqldo2PPbe9vyvGdjw1Dkel6hiwtBSxgVHT1tGlLW8BUDCwdnJydnJycXRxtLBiqBCrD3M7M2MDAyNrJycnZxcFMW3FZuDVZTdfIgm2oTsY/MuxZzsSvoKNfulFllT/pmHIcXZydnJwcuTZMRUABUOkaOX0dPHcrR0dHJ2cXrrUJfdFdgJGj61s5u7g4O5lrPhxqrR/bXOBHXc9IJqnpmtu7uTjacaw5NvZcJycnC20yHg3K+jb2js6O9hxraxsHZxdHGwvdxw4dQ0BAQPgv5AlV+caNGzdv3lypyukZGdfn5i5cuHDu3Llz587dunXrxIkTLi4uz3qw/0lQFLqBJZvDNtVTozyrjbhYqpKmjo4ycf0zAUeRT2wafvHN/S9tbRbF2T32JVBEJQ2aAnZd3zUCAgICwuPwVFSZx+PduHnzypUrly5dunjx4r17d0+dPOn6F8u4+X8LFAajxtDTZTD1DfS11ZESyAgICAjPht+tyj/88MONGzdWV2U+X3Dr1u3Z69evXL165cqV7777DqlOgYCAgICAsC5PRZUFgpX1lc+cOYNUckRAQEBAQHg0v0+Vjxw5IlPlmzdvrqLKQqHw7t27N2/evH79+uzs7IMHD6anpz08PJ71YBEQEBAQEP7UPLkq37p1a3VVvnXr1tzc3PXr13/44QdElREQEBAQENbld6vyjz/+KDOUb9269eOPP/4ZVBklp21qa8+1szLRVX28Gk0UdRNre0euA4eltP7JCAgICAgIT5mnosoCmQf7xoIHe35deV6V8cpyNMXHriiIRdG11R6rMhIKoxeU19a/dffz+3pSzdbfqkOiO2dWtw6NbRkamOotttcjI3mYERAQEBCeLU+oyrdu3VpFlfl8we3bt+fm5q5eu3blypX73357+vRpdzcXAIq2hWteV11PQ3lSYGBwSJi7JV1uIZWGuqWTX1BoSEiAj6uxAgAATk6HE5sn7Bvryg4MDA7d5ONspikr/URWN3PyDg0NDgoO8TCjPZQ/GUV24He1JZtj1pNYxQ2itsYcC00CAJjGtjVl2qg8qkAwAgICAgLCU+epqDKPx7t58+a12WuXZmYuXrx49+7dkydPujpzAVQ4oVmDz+2YGh/pqK9vaunIDTOlEQEAdGzc6ge629raWlpaWke78rlMACLNNqZuuH/X3sn++vqmtq5yXqCVLHWlhVdqbnVnWXFRSWlXQ3aAnRp5UZmJSi6i7tak9VXZLr1EFMzVRAEAoPSiWupTNB7T742AgICAgPB0eHJVvn379kpVzsjInJubu3Tp0rmvv/767NmbN28eP37ceSG3l2WMb3qYx0OJFeX1Ja2t4jBTmZISbSMbOktMlVEAoGSiyytKWZkbWdPUwzeOFxMVGRHRNPnK5nzbpfSaJGXXx1NlTkqBKNRZCwMAgDOOb+7PU6dTn+xmIiAgICAgPBG/W5V/+uknmaG8iiqnpaXPzs6ePXt2enr6zOnTV69ePXLkiONCHmxuSgg/yldreS8M0zuKQpUV5g1eLJUSWNglsMADgJaNaVZZhvVDfZY3cM2obG9sKCuS5ucUtO9oTDbTIC/88bFV2S6zoSTZgylLR8mMbGnO0FAjr/MZBAQEBASEp8mTq/IqHuzk5OTLly+fOnXq2LGjR44cPn/+/Keffurg4CC7pHN6fGG6Px0AiMYB6XH++mo4BeP8JqmfyXwIGIpkmdZYYqGGBQAdO3Zxk9gGAEDRPCwuycOQCBb8th5BlKzUsLx7/nBjioHS0toy1iajvTFad92R05zzinmeOmQAAK3A2rYsZzUqUuEXAQEBAeFZspYqz87OfXX23OfTX546NX306MnfpsoJiYkXzl84fPjw3z/+6KOPPvzyyy8+/vhje3t72SVpThFlvVtGGupqNw/3VPC8dZSxAIwQaVd3c1NNdVV1fVPtQBXfGAAFABQts+jGscnWuvqu7q6eqgw7XQKo2MaJC1s662qrq1oHxp47+ObOLqEnjUowCs4prmhsHt6z/43Jnrr68txUL9ajhq4ZIylu7Gypq64a7W/wtpB/dAEmBAQEBASEp83DqvzzTz/9/L///vf//M//++GHn27evD07O3f58tWvvjr3ySeHjx07+WtVvn379ioe7Li4+HPnvvnoo4/fe++9d955+/TpUx9++KGNrc38NfGqBly/2LjYmGhPk8UIbKyWnXdIVEx0dHRMRIi3uepCB1EkBSOXyOjYuPggJwPVebe0PMPBKzw+Jjoqwpdr5+TpE+pupkDEadoFhEXGRIUF+fsHh8fERQR6WtEfOXh1c4fAyPjY6KgQBx1EkREQEBAQnjnLVfmf//znlStXa2trN2/ePDkxOb51fHJy8s033zx16syJE2eOHn1sVY6Jifnqq7MffPDB22+/feDAgRMnTnzwtw9sbW2f9WAREBAQEBD+1CxX5f/93/89e/brsJCQxsbG4eHhocHBsbGxV195+dSp06dPf7FClX/++efbC/z0008PqXJ0dMxXX3313nvvHThwYP/+/cePH//gA0SVERAQEBAQ1mG5Kv/jH/+4f/+7b859Mzc3d/36jZmZyxcvXrp0aeb8+YuHDx9f4cF+lCrLbOX333//4MGDb7311smTJ//2t78tebAREBAQEBAQVmO5Kv/rX/+6ePFSrji3rbV1aGior7dv8/DmF1944fixkydPTv8GWzk2Nvbrr899+OFH77333rvvvjs9Pf3RRx/Z2dk968EiICAgICD8qVmhyt98c56Xmbl58+bdu3dPTU09v3fvO++8PT39+alTn6+qynfu3Llz585KVY6PTzh//vxnnx36+9///vHHH589e/aTTz5Z3BmFgICAgICAsCq/9mCfP3/+2rVrV69cO3/+wrlz58+fv3Du3IW1PNirq3JSUvLMzMzJk6eOHTt25MiRCxcuHDp0iMvlPuvBIiAgIKwBGkskUUh4pEYNwjNmRbTXN9+cj4uNrSgvb29vb2lu7u7u3rN797Gjx3+brZyamnb16tWzZ89+/vnnZ86cuXbt2tGjR52cnB6+NF5OhaahrozH/pU2JaHwSjRtXQZDR10Rvf64USQlDQZDl6GuQsYtO0yQp2lo0ZXImIdbQFNUtXUYutoaysvLbKBxCnQGg8Fg0BUJy7Ok4OVomjq6DB0NRcLyRrByNAaDwdCkKRCXTU9YkgpdR1NFDv9wnhWCopoWQ5ehra5EXNl1NFVNh8Fg6GrRFMhYAEDhyIpqmto6OjqyrvwnC3ThKEo0DU0VIu4PzRKDQlNVNB6+Tb+Z+Uemo6misPwpoKkqmroMhq6mCgG3fvNEJU0dBkNXR0OB8ljF1R4fDIlK19ZlMLTp8vjlx3FyNG0dhq62pupjJN5BERXpGlo0RdKKdHtERQ1tdTV50uM9FJy8uuzrqvpQuTmSkiaDwdDVVJMjrPXJxwRFtgzOLS7YZI4kw0d4xqzYGXX16rXurq7XX3vt/ffff/fddz/44IOjR45+/fW5X++MepQqZ2RkyPJgf/PNN+fOnbt9+/aJEydcFvJgL6DqmtL8/MutduaP3lT83wNeTs0sJKt6cGpqYmL3eL27HZPwiFkUhaMYufJbJyYnd764tY0faC6bvjByahvTq/v2vre7KlRfZXGeQ6EUdQIKB0fGJ3ZvG2rL8ZufRXEkA7eoms0vTkxMvLilNsqVRZTNgTg5q/jyzpHJndvHJpsyWKqyNyM0lm4SVTU6vmNy77beyhQXKhYAAEVStAkVtO756IWOTGfmUo/laLrClt7RHVM7tk725nvS5RZfBdByes6RFYMvTExM7uktjODSAIBql1IzvGffzvGx8W07qqL0ab9vFsXLk0m/WQYV7KPrnnut291O53dcEU0mUNZ4TtyECnGI6e9MPoNCK+lahJUMjYzt2DWxpaksToWKBQAMSV7XPVrSvXNqYuK5yc7oQA7lkdabsoF9Xuee8fGJ3Ts3VxdGqSngH3EyABCVqI955wkK9GBR0dDU7okde3c2p9vrkWRvUih5jfi6HSPbJqfGh/uLwtUoj5JVrDzNl98wsPednWV+jMXc9yiMItNK1PXSrsmxirD1HwpFVceV19gzMrFzx9hIdy5LnYoGAMBQWRxx30vbdkw8P95TluSi+CTCjNHakFZWLfXXXTdVLwLCU2a5Kv/yyy8//PDjgwc/PHjw4N69+7Ozc1euXLt8+eq5cxc+++zoCg/2L7/8cmeBlarM4/Fu3bp17dq1y5cvz8zM3L9//9SpU65u7gAAgKHS9CxtOBwbtgHdLbtCZM7VBQAay9jKwoyhjMcpMy2trc311eQxBG1jcwtTYz06FQBwVGVdYzbbjKmoRlfR1je3MGfRKXh5RU1dAzMLUx1FPAYF6obmVmaGmoo4gpoBm2NlylJd83eKVdDSNzYzM2OoEXEKqrp6hqZmxppyGAwGo2ViZW3CosnjyerGtrYWhtpKuLUawSvrGpmYmRhrq+BxinQ9AyNTU0N1ypq/arp9RG1n80YbOgAo+Zb0lSdaa6w5o2OUjQOL2irTnLFYrCY3rqhEEmCEBwA528iKvBTb+MISfoC1xrxaoLAkVnxNX1UUEYslq5slFHdleZAAAGvoVdTYke2hBgDq3nn15QJ3HTQAkF35HW0Saz0lLBbnLuyrjtOXQwMKr8LmNXYWBmKxWEVDN0FpY7IdEQDwBhtyckR+ydkZ/IQAsyWj2Ca2vDzVXZWExSl4F4xMVAXLCndhKUyHtM7ByjQPjfnOoVAAoOwuyed52SivNd4VoPFEhpkNh8O2NjUx0tOgyuEBJadpYJbVVVUcs8mZzWazrfVpeAwaqJrG5sb6NCqgcURNI461MVNNTnZbUCQVpqUNh2PDMdRw5hcJ7TyNAACAqmlgxpa1zVKR3T4lhqmJob6Wjq4lm2PDMWPR5TAAgCarMoyTqvMrs9M3stkcjo2xthwBDQBAputbWHHYFqZMGvn3zeIoHNlL1NpQHA4AQNYOKexvjNIFADl9R0lLT2KAMQDgbVPrawqDzdf6FqPwNJPsjm3VSVwsFoulmSZW99dJwubFCS/PMLGx4XDYJtoaTE1leRKWqKRralUw1CD28bTncNhW5gzlR71QaLslFedlcJlYLFY/sm5nn9ROhwgAWFpYxWB9rBIZi1fQjsrrLU8yf0QjCg5x1XlJ1nFFFXwfk8Waq3g522hpeVaUZUJZXeSK/Hs4qrKWgbm+piJ58VXIfFNhe4tYSwkNAFbpPQMiRwoagKBuy2/ulHhisVglQ7e8yrZUX/VH9OSRoKmWwdKaylirx677joDw1Ph1xs3vvvv+3r1v5+Zufn3u/JdfnF0rD/ajVFkgENy5c+fGjRuzs7PXrl37/vvvz5w54+7uBoCS19mY0TA4uW3LlpGpvvLG0S3ZxlZaALBRUNoz9dqeDpGwcah7dGt3T1GiOStn85sf7O3O9NEDAALDJmtg/4cv9QT7+DsntR04cWoq30bezLNuzydH3xvOtFchoSFA2jI8tW+yVSBoGhnavrW3U+KvtMa4qdaRxSPvHj88nMYi20QPv3H476+2RZsQSSRSVPXg1smprc0CQfPWrVNbO2t5bgprNKLimNq482+H/9YSTqO4iva+f/idqbIg1qO9iEQ1prm9q0uQoDw/2UtXac1pUcnUPq2o3FdWuZJgGS/MTwpeVjrLJq0yO9hqQZUxZPngkrZkC5lCKFv459TkugMATpsbnlmYHefs6OjknVJQKE60Y+AAwIFfmR3IocnaNktqr45RIAFGSSOmrDlGll8creMRnVeYtixs3iAkOyfZ3/RXrmoAADXPvMZ4RxIGADDqVpElTXXJ5naOTi4OZgzleUlRcpdU1eTxgx0dHZ0cjFQf6cBGkZVsAyNbh4c72lt7era9vX88NNAI0MbheQ3PvfXy89vHNw8ODQ72Z3urkHBgGFU7NjlV5InGK2psqti9Z8dgkT8NAE1Vd0mo6t+5fcuW0Z19FS1bN+dwHPUAQIkTW97a0dPV0dHW1tVRaG2sDng5u9SWrfve2LG1f+fg5tE94/2VafYKWMAx3RLLJt944YVdkyMDg8NbxkqjTdUIAAAM3+zmvrFdz7/Qz2M/SaJWNJZu4uDo4heSXlge67iY0A4rTzO0cXX1Sc7Pz4qz1VnjtRBN0Q8obK0OWzxANfIUVDQkWQJQ1NzjCrvG9oxu2bJ1pGX44PNVsRwa3S6louP5Ay/vGd0yPLxloKspifuYi6go47gKXqSlOgkA8MYpnc0pBrI/6Dpk13Ykyq3bgD2/NsvPmLZi/UPNILr4V6qssSFjy2f3/t4f66T20HEFXUtbRzf3GEmtIMAYDwDyzI25nWWBMh1V2RBfll/gs+q3c33wWhuSy6sLvDR/38cREP5Qfnd1ikepslAovHv37u3bt2/cuDE3N/fjjz9OT0+7u3EBrxUgbKiTbNACAFBzSml58bUOruXCG667ZHJitLPAH/AUknWAP0fJ0DW8WOSqgJezcrDXoylruUakCGINsQAYAz9RXaM01i8kuaSpKz+IMW8dAZoSVP3SruFKnitgldQcgoLNsHJqps7+fr7eMnz9At2tdVQIAEC2DC9oqs0O8w4X1LS08D2VFqYosmZc21vP9WZHswGrwXLx8zEgKGtZuQUua8TfxYwmjwMAJYfEiuaKjADvmPymlup4+3X8hwB0x8j8ltEtz+3qDdtg+oh1QCUTu5SCEp95VbaIL65KjF+mkXYZVQ+rclBRU6K5bJVPxSqsoKomHAAAq8kOLBiaGuztGdi2rWXTxnlT14FXJgywoaMBAEWyTG7ty1agoDGK6lElDVEsFAAAWntDWplU6rt0RcOwnFVVGavp6FtQU+2Hka3ayuvYCDbvn9q2Z9fQwPD4YGOOp54cAADRwCu1pGugv7e7t2/3QKUPW5Wwtp+Azo7N724tCvVw3xAtqdoy0OxlNW94+xenx7ONHuoEQdEuvUXiTUQDAFnXJrGoPFAFcNoeKTVNZQFMFAAo2UTV7Xuzz9NOC7CqaV2Dg+WpQe7u7h7eot6X3t5XycQCEGh+VVtHKvwZAKBun1RYJ/acf6HjpodlBLmrwq/BstM6OzPtSE+wmEtUcBO294xuHeppy2EqLjYkZ+yaVjc68tyuQX6cu/JapjJZxTN3oCXGYElZlSw803KznFQ0XFNbe+q9TKkAgDfxz6ltEm1kyQMAQHRDdoi6ym/pI4nBzmxoSjUwkPk50CT7mIbuxuBAPz//0ILR0ZG+XLd12+AK6n6tyiS6UUzJr1RZ0cyT1zhel+pkKP/QcbOIwobeLYM7xuo4ugoYFABOgRmc1dJR6evr5xeV0vDCZK8kfGXJ18cCLWcRJGmojlv9jRMB4T/NE6ry3bt37969u7oq371799atWzdv3vz5558///xzD0dboDsniITxVguzD8k5v76Aaz+/sIT3zGtKs1kePqJqop9WkJ9ku2Hgby+K0/OiNqVEJi8kCMPaZ49+cHnuTF+U5tLsjiYpBxY2xS//bZI0TcMLejrbW2S0d/WVJy3+4OW86184dPHSJ3Wey36QBBVWZFHNJu1ljcjpOySU9XUtNtLZUxhhrj0fFqIRtfndU+e+2C/h/Ib7rmrDa64TmLHWrB2pZOYkrGoIld0bnFmsuCg5ellBy5WqrBBeOSBwkKm8spl/Tk1ZEACQjDxCUlP96AAAaOuQ1IQwJxoGAJxEzQVR9po4AEDhjOPa2jIVyCiMklZCTV+KzB+J0nKLlRbmbFi6otEqqozRZAdldYz0VsVwcPNPQdUwsefgm1vL3HQBQN49TSyVhKitMPZoIU2NWeb6irAmaAUd76z29rbmto7NXTXCcEv6/BMLLstI4Jg9ZJyRVbkZzbmeeDQAELUsYqTlPgqg6hgmzM2wWxA0vJ2oqmiDmw6QNpQPbW7u62hobG5ubm5uqimTRrLRgFJgbhTU8WT1U1TYvhn54g3zznZnXnhm8IZVYh8wJNuMzo4M2ydR5YXu0QLSW0r5K9PskA1CyqpKfbhriChe0Ta5tS1r2bsajRORV5xqbeyxSeAXb7Hqh2KbckI16WsuyqzsgbZDRGnP0GBxmL7KsmFqevLqmjs7GqtryzJ5TSKDddtZVZXJ6qup8jpYBNa0lgSQZYGLODmryOKOjs72yoKqFnG8KPz3GLsELY+EytpCj79KeAvCn56nosoikejevXsrVdnFAagmUeLC7IB5wcOaxHcO11sbLXiZuaL6ZKvlhgFR08BVMNiRESvuyPaSTOwqS4l0UQMAoOrYJuVXlVbWFLfUlaeGcemL5gLOM69h3gm7HsoGjryiuqKKKmlrbUmMj9WiSBDUgiTVIY/1I0Wpm7tllzcVVFTkttYUBjsbPKpCs7qZrRvXgAoAAGh6aGt3ubUlba2TSZp2MTk1CbKJWs1dKCmMc1o2O5smlmZ66S2sgqFw8tzUzqIQmatd1T21vjKGCQAq9oEiaa6r7DS6nyiPF84mAYCuf1VFhqMaFgBAw7eiI8dZAQ8okqYXv0O8EQMAQDDcJKzJC1w2y2n48njR7stCc1SMnRMr2yX5iZzli3FUuhe/orMlg44GADD1i8ktT9QjgKYl18/den4pQDmkuVNqYrTmGrMcnW5mwVh447ARd3SLI8xk/wuvyct01kcDgIKZd6iHOQUHBGW3rM4SbwIAYFgBOY2NeW44wBsHCIsLIue/CShWWPNQixNbFUA9vqIu2ONXhT4p6s5pVemy9yp5E7dEEc9x/qXLQ5SUF+uhBABYXedgbwd1hUV5Mk1sbUk0WWsUjwaNI7C9vK3mnz/JJbSqoTYUABR1DFw9bOa/fHKOxXX1wYFGa7SBUzALqB1s9zKT3VeiXWxRU0OuuQKeEyLOLU7UnHfcoBn2gV5OOgpYABQqraMshkUFANCyDQx2ZKLX9GGT1I39RTUljWUhJmsakcYexYU5j5GzzyK1MsNNa2UzZM1QSWXgCjcEia7P9YvxtdNdCgoxcvF0NJr/kmmyc3p6eNSVXiYNv/iS5Ji1btQ8KJQRXTedyfSRW9r/gFEwC5S01sYYPGkMNwLCH8VTUWWBQHjv3r07d+7cvHlT5sH+/PPPPTxcAQj6Pmml7a01IgFPIKhrHH35nVerSyLoSsa2QbGC7l0vb22UiIW81Hh3AwwAAF7DIGPzK9uLIywN7LK2vziW5a4IKLpFcOmOT78+uS3ZFKvEKdp96MwHY9l+BnIkfbe4zLz+Pa9sqc4WiTISw7mMNYdNZNrFNb5w7KtPOwM0UWreHftPHH+9M9GFQaGa+WSIS4f2vDhYyhdmp8X4W68dQSJn5Mbv3X9q+mC5gzxGK3b849Of7qkJs6WtNc8xHaOrOzrrK0QCvrBlZLQ6a5O2wtp2FkrBwCW0tqNcKMyqbmwuz9pkIA8AoGrmFpEqFjWM7d3eU1sozIzzkKfiAbAEbW5paxlfmJVfWNxaX+igBQCAUbUOzqhtbRQJeAJRXUsNf5MtHQsAQDZKL8qXFolFfEFnd3swm4pHAQBRyWhDZXs5XygqrqhqLBNYqwEAyOlYBiSKRZW9O3Zs6arMyUr111IjA9koZ+z9E5/ty+IlJ6XzM1Pj3Q3n14qJyoxYaU9Pi1CUVdlYWRTqowMAei4BjX0ttRW5QoGgrLu7MMVHQ37NsbNcvYbfeL1XkpmZyRdVN7QUpG3Um7eVTROKOttqSkRCXufAYHmKizweBWSzuLbJ4UqhMCe3becrL7+wpzGOq0NlcGMLOtvrRQKeQFBVO/TyO2801Sbo0klaDpEtnQ2Fkiw+j8cX8lLjPAzJcvq+os7J18dL/M315LV98wZ37puo2GSphQcAXd/k2s6OhmyRsKl7oCUvhKmCA6ZrVFJmtrh+7NVXx+pzcjKTIl3WL+j9MBgC2Seja6BHzBcKc4tK+kd7I+y1AUDNyDm3fqCjQSTgC2t7B9qqRdZaa+/VwZG40QWD/V18gSinuLypp9HfSRcAqEw7YVl9W71UyOcJRI3d/e35UUYqeABA2eS0DDYUiLMFOX2DvVkh5muFHOPUvfJHj05/2lGdHZeclikQhnHpVNkWNyOPhLRMoVCYKylob61y0V69ARk0C8+otBxR0/i+bZ2VUkF6jBuFgAY03sI3JTO7sGJw976BshxBkq+r4cIntLxFk5//6/RYsuviG6tNSGlXX0VBrkgoyOrdPiYItCZgADBkFdtgAZ/PE4hKq+vqS9Kt1goiWQCNyd+Y9O/U5GOGuAUNJmm4x1XVSd1+k08fAeGp8rRUWWYoz83Nzc7OPnjwYHr6jLu7OwAAnm7hl1wozRfn5WWHBftHxqRlBGoom3MjUrLFggyeUJwnEQvTvYxlzi4S3cIzLMxRA4Bm6OLlx6EDoDSsA+IE2QJhuCtDQd/Ua1OSUChK3GgsTzbamMzPyeZn8ES5+dLszDjXtX1jJH2nTUkCEY8XzKXJGduERKcK+PxoZyZVzjKIL8oW8TL4WXmSwqzkUFutNRuRN9sYm8rnp6X52ShRzZ2jE9IFmRmbHNTXjqAhanMC0wul+bmSvFRvhfX2epLVNALSJRJJQWFasPWCv5xmuTFeWCzN5mVkCrLFeeJUH0U5PACgsWiHyEyxpKAgKzWYsxgog1XV80iQSvPE+dKCRE8j2qLr0sA9ODO3UJonzvAxWvI0kMhu8Vl5EmmhIM7TZN6ylWdywjKLpWJBZiZPmJ1fIAzToVOAbOoTFZ/O42Vn5+TmScTCdG+TxQguNEnZLipPIi0oTAvlMhfcB2rmjok5xZK8/LyUFKKo5gAAIABJREFUjVTSo0KkqDQtv+SsbLFYLM6TFqb4mKkveVyVzP1iBQVSSa4gwHi+DTRe3TYiM1siyU6MC3Z2CxGmRLnqYQCUDD0TCqR54ry8nIjQgPCoNP4mPQ05ANDfEMbPLcjLzc2T5ApTvU3I8gYeCSJRVkZ8qLWBAsM9Jk8s5scFcnTwAAAUXYfg1IICqSQv0k5RZn7qeybyxJK8LF56Oi8rTyrOTNjweP6ZFTC90kS5EklBLi/YbfHLilFkuCVIpXm5kgJBmJ7WulHBaPNAYV6etCg3zdNuybchzzKLziqW5IrzpJIoR9qSmappH52WXVCQJ0h0W/urDYDTYm+MTOdnCoVZ4tzcvHxJjKuGnEyVTX0yRGKJRCLNzohwWCfsWZ3tlygqkmbzMjKFOeLcrOSNVCIa0Hh2sEAsFmcLMjIE4qI8XrDnosuBomPpkyCO32iiuexlRJkTnJRVIJXk5aSGLSwUYciq3Mi8vLzcfGkhL9rVcP2YMxSKrW1cYWoSq4iW/fTwatbx9WNdGebrhoMgIPzneCqqzOfzb9++PTc3d+3atStXrty/f//06QVVRkBAQPhTgFPWctgYaKf9uMvsCAj/CZ6KKmdmZt68efPq1auXLl26cOHCnTt3T5486erq+qwHi4CAgICA8Kfmqahyenr63Nzc+fPnv/rqqy+//HJubu7YsWPOzs7PerAICAgICAh/ap6KKqekpFy5cuWLL744efLk8ePHZ2ZmDh065Ojo+KwHi4CAgICA8KfmqahyYmLixUuXTpw4fujQZ5988snXX3/9ySef2NvbP+vBIiAgICAg/Kl5KqocFxd3/vz5Q4cOffThh++///7nn09/+OGHtra263cHAQEB4U+GLJU7AsJ/hqeiyrGxsd98883HH3/87rvvHjxw4MSJ4x988IGNzYpsA2gsgUAk4NZOY/BfCwZPJFPIZDJx3cGjcUQKhbLyRBSWQCQScL/aaorGk8lkComIe3jbEZZAplAo5JXFEzEEEplCJhN/dZhMppBJhIcLbKLxBBIRj1kxO6Gw822sUm8QgyeTyRQKiYibLzWExuKJJDKZ/FgD/4+AJZCI+D+2vONarPrIUBgcgUgmk8kUMomIX9kPFBa/yjNerW0ckUwmU8jEP74mKhpDIFHIZNLKolkYAolMoZBJv+r0qo3Ixv7wI0cvGzth/WeAwuLnv2krxoglyL7z2Kf2GLX9xaXJHlryf4ZvLMJfgqeiyjExMefOnfvoww/fefvtA2+9dfz48ffff5/DWZGRUmNDRtPO3TVsI7XVu/ZfCQpHtgjJb97y/NTkjsmaKINHFDRE47St46rGpqZ27dtcl+DBkk3QKDyJEyntnHhzvMhfd3nOSpKys6BjdNvknvH+2lSn+ckLjVXn+BX17du5c+e+/pJAG/X5WR6NYwbltm6e3DUxvrU8ki4nmzFRKAVtn/z+7ZNTe8c6pBFWMq1FYQn6HvG12w7ubkiy01manvFk+diKttGJ3ZNbxxpTbajLKh3gVE09xZ17Jyen9vYXR3JpAECxji7unnxu57bx7esN/D8Fyl7UvXmwNYn46PoSGPQTFvdD4Uns8PzOiTe3FQcwlzJdYCgWiW3j27dv3z45NdpREfNQ6SUM3Tm+ae/OyiDrdX4dZLpBct3ktu2TeyYHCwU+64wFAP3Y9cwxBLJrgqhn8rnJyd2jZeHG9IXXN6J8YMHmke1Tu8YH24SeK9/qVl6ObB9b2jP52qhko+ZSYmu8ok1q144d27b9f/beOrytK2v7XuccMUsWmhlFlswMkkFmiJmZmZmZ2YpjSNI0SblNmSFtyp2kzUBnOjPttGmTwnTaTtvnu97vef+QKW3tZOZppu/Mo9/lK5cjS/ug9r3X2vuse33r5PJwfezh9avxZHpcfe/y1qmttfXRQk+2zssTxSiG9pENC5ubW7dvTpdmeBNuhWc3piyY7i/2sr4JI2k9en4ebmGs/Pxzzz3x+OMPP/zw66+/9uRTTzortlUZT2ELRCKRyNhQEFjbVyN1NwUAKpsr4HMZJAQhMQVCAY9NISAYw4DH4xqwaQQAQAlkpoFQwGWSqDQKg83j8ZhUPEYk0ZhsLo/LIGEoAM2AL+BxaEQEpbCFIgGXdbCjOkpisA24XC6DgkOJZAaLzeVx6cRbHcHhuO5JLdr5hhCFEYPJ4jApB8dCKMMqqGqgtyqSz+dLQguamyqCzFEAoLsm97dVqoq7O0sjdutgA0YyjG2cGSwQ8XjGjp6F7ePZbjgAwCx8q3vG6mPFDAZDGt/Y1ZDlLkIAAO+SPjTR6qu04vP4MfXzDTHGVAQAx7ZP75jsSufx+FZumqr2nkQxBgAE2+C6xobkipbysszwfXWwXdK6BqujbY34AvOk7mNH60J0lUFQglCcPLg4Wp8oZzBYbBaDSsQAgO1XU18ZF2zDoDMYDCoRO/BUY3g8k8vnczlMCh4AMCKVZSDgGzBYBmyWAV/IYeg6XxKDy+VyuQYMhgHXwIDLZZIAAMHwdI5QwGPTaYc4DeBobJ5QJBIKTW1tj7RM5JEpOAAUR2HxhUKhSCTgskg64ULwFCY3tDS9NDlKLBSKRCIuYyfhQKAZ8AUikUgo4DFuVIKC7pLU11apLu7uKI2UGe4OawgGLgUT7fE8AyaDQaft93BG8fLIjNaJzZNDeVF+BxeoA8CxzbJ7teMVGh6Px7f3Kh5aaC4K1pWIBpTA4IpEIpGQS6cyaSQCDsWRWTxBdl91qszJRCQSCvjMQ62qTfyzu9prwhR8Hs+9YPT4WIXckAgAGDu0ZmGs1MKIL7AQ57fN18cfVgab5ZEx1F4eUNTTe10dbLLIs3iiNZrNYjAYdNp2VeudgyfRWVwWjbgXFUsTWwbrkqTmfJ4wuvXoRksMGweAMYxTO5b7GhOYDAZboi5tHyj0PaSy+j8HahrdMlofb2egD5T1/Ou4hfPKL7744tNPP/3YY4+9+dabTz/9tC6DTeS4HGmeOnnb5sbWqbGKpqnJAluZMQCEVHQtnbxL25oQXz+5uLk5N1EeZ2VWvnjvI7dNlWlsAIBq6V4x/9CTZ0fDwyJ9c4bvf/6F1TJntiSgVfvg0w8tF7rzKChEt0wePX5irjEuoXnh2G2bs8PFPgfVpaY7J7cun3vmyckMS7pLwuSpRx+9czxdSv+fGw0cBsM1q6k9J1dtZWFuYsw/fPTNsnPJaWqP0BVrIsvTS6ozwixBl64k4UGZ07ZPlTEKI7xxNF+pq8bFkUVUd5W4AwDBwi+trCE32MzY2MQxqry1ocDXEg8Ayry2qlh3XWlQijR3tCWGSQKMJUpoHk53wAEAoKZBKTV1GTIAQDACmURE7aKKSzP2u1PgSVTyduaaG1A1WhxAwQAA5Ytjart7M61srMxNDA1oO5LF9qtpqk+PURgbGxsbcg7RTLaFpHnz0ce2BtL9jAGALVE3rT760Hpr3fDA1Mn77xrOsjRAAcA5rXPl1H2nZ4uLZ267+9TRvixXAACmadrAmYfv2ahNPWgRA57mlNQxu7J1fHN1aWu0pLhzLJ1AAMAzzZM7NhcWFpaPaifb8tRmVDwAwTIgp/v0I/fde/b0hvbo+sbxrjQnAQkAAPMvGJ+YX11eXpob78p2Yx0qb9uXTJHd8kNVLpzuTbeyMDExMeSzd5rAkSx8jrS31fi7+hzJzIo6pAAXQjENLBsayKDunGOuPLKqsyfRAQBPlYTlD2rvPL6xsbXSPXx6uTJawhO5F/TN3vPEuTs2N46tb2gXxnO9iIfsN0YgkYnbTVsnd9ekyY0oAEB0yB7vSzPXvW6uLG4bTDok7bF97G4FXSXXq7JX6XRPirmpsYmJiMfafzsIvNPGH/rdA4OxLrtVMHFEKnlbo2meZaPlIRwSCoCgJAqDQTfgmZhYeEQUNbSmuR1kufrPQnAvnuzKcTc/uOSpHj0/P7dqDfZ777332muvnT9//rnnnr18+Z3nnnvORSkFHD8ot6e/LUZMJxJJtuHl0/c/OOYmFgIAhidQw1pOnT6x0pdK4xkK/JMT3XnS0NzuqkAWmWJkbs5jMSxU6WVVOVIqDqMp07vmxqs1Cq/Y5umNwRyJgIwAAI5IFyQOPHDnxmhDFNHA3CokJUmKkegia7HYyVGHk1hia8Kh4RAUx/ctHlkYKAiQBWT2Lx5tTzRj4hEUxzG1d3B02n2zg5WJARFQCtvYVrK/EWtDOgkFMs/cxmGncScnR3tbY9bB8TZqHZrbuvrAaa1269ix45t9GW7cg+fl2A4u2XVNal3pfqI4pb4tPWWf0ih/6OQY2TiY5kjFAAA4kuiajs5YAACc0DmiceXOjaPa9dMnxuNVTiQEQOfkGOa87eTolDE8XapzcjzS1L9t4YMa+2c119Wo97ZoE/3TTo4I0845p6k7nqzzTqKbyHJn7j62tHHq2PrxE3NdeR5CIgAAxSmmamjt+Lp29eja2ekqT1vmAflGhCDySSxqLvBgUuimFqYcOsMxrqQ0N8LM1LmssThUKWQZiCzN+AQSN7K5P8nd3ESR0N8WK6SRBCbmRjwmVxpU1N7ox8dTf+KSEVGCR/HoaFW0rQGJSKQF1q6cOLFcTMEBkEgsH02qs0KhUETklM8v9kTbAACK4QkBJcklCaFmRCKRSCLgUAQAEADX4HgXTw+lwiMoZOjYsarAm6gOpchtL4vap8oYxeFIz8LK0aNH14+vzY5XqFkkACDYBLYvnJouD3Z0jGxs7ypLlNNJB9xRZAP/8pnh1H2WDByJKq+m1JPOcUsdnRlL8DQmEYk8j5TORW1LlB0LwfAEUsZQzRErUzqRSCTexHQuAACObRxV313g4KjzgMHo/gXjE42ucrFY6p49vnJsvsLzhm24/cAzCs+Qpg4sr2q1R9dPHp0ZLA5g7io7VxHVdPSxlVqV+EeRL9XcIaO5N4m5p+KYgXlcx8bmHbdrO2rjuD+zeOIsEluHqxMcuPpAWc+/lFv1vPL7779/6dLF119//dVXX/397//w4osvusvFwPdMKy3NUO58qZgBDYON7i47FlIBVUMFXrx90S3PwTq3tihe7DX9yOmytLwQTUZ8lvv238geZQsPXvrdixOJlntfRoTICq8fzpKR9robiokkrfuYdmVBx8ra5lBRgMOOeVFI921PvnXpsc5gtm4KlUQPKJucW1pZWlxYWFhYProx01kUJAKilU/+4ObabiPa9Z40mREBzCNq++eOaZcXFhYWFldWF6cG89wPFlqqMnnk9mfPDqQ68hGE4VY30hLsZnpQ+pPt4FHY2r0dK+Mdk6uaMpL2Tcz/yMkxtnU6X0nTOTk6aSo726IAgGDuHZqeFWONIAjC9IzPTApXslEA8CjurY5zEeEAACHYp46MFTKpKMY2TO2Y2PZAQox80+rrK4P2tvhTTo7AMnVJbF9YGi/0o2x3XQbWyeMPP7bVHyenIohxeHFtRYmKsXdKEARBwC5ltKfQyfx6/9x9mHk65xVmJLqHLj1xe0ZkZmxStjpGAgCqmrx0F9eC+u6NO6aUdgnVHZlMNgGlUjI7qhIspX1nb+ttqvRwTy6sDwYg2Xrn7b9kR9d70yUigjS7oyTMbnuuFqFKswbHcykEFMMbuaR3rh1bmJ+bnV87dXSiOXpH7DzzY/Mi/a/39qKLAkrHF+eXlxbmF5ZX19ZqAm9C35Q/UOV9Z4QklCU0Dlf6AQDdQpnfu65dmp9f2jh77wMnBzLkRgc0TmS7542N5O/z9+TKosrq8hT2PjFFUZk/nS1I6i+LFvJudpIUz7byzuubO9afJdlbCIDgbOOaphe02rnxqdHy4oHSn/aM3M9POjnqjp1i4p7S3F9yoxJDdCNJdNPs8mylmn390kIEQRCGhWdpy3Bu2GGFvf9hqN7lY53ZXuaH2cDp0XMLuDW1vXJyP/zwQ11tr7fffvvDDz985ZVXvFxlwJQmVdQUBe14t5nFDcx0yh12MlWepX2Zsv29PsXERlUyN5CWWLPYGFa9dqw+60igIQAAgW0eltfWN706d2y4Ptrbdq8wPTG4uj/Z6qYOncK3ji0bGJhZntL2VwQ5m97yNBXROqB9YaEoQaLrVWLa23MjxMwDBuJUU/fMuv40KQAAsDzyK2vT/ER7f3bMaClQWe/oGkJk+pfMNmh054HjkdzWmWkPAFzX8OKaCm/dkYnCSirzY6RkALCN62vP8+DrNNyndrwmkEkAhGqkqZwp90cAAHAWmtzW2th9/h5GoYWFSQH7rJFoItvw6uHu3hr1fldbhlFk7chUf4Yu0LEPO1LXlm1HAo6ZrdzBdLtjp4R0j9bY2f3Awm9fG3bKiIKZ0Zy44sWOqArtVmNKiCsPACziyvOOtE13J0YMz1cVD67U+LIoCJDoHsWTbQmZXfOlwY3H5qrLqhMPnum0T+9qS3PZ0ViRqmF6LBOAKJSVTh6rlxABAIjixKqW6sidQ/crSStP9GcDAGJg5yKzYVEwiqZnYzxajAcAoNjHN42X3UzZOof05gK1zU6SFcHwVjKl7bY+4sW+le09MT/Y19ScbI3nIY6iBAPnxL6Zdqmx7kuDs9cUdfXVu3EprjEVBVUxzJ2JWbals8SOS8EAECRrtCHRlK57VelqJzg4tYNnilyS69omx/K8DtoH1Nazorb+JurbS3M68v1NdvQNxROt5UrrbSdPijKkurlNs3tQTIGV1F1iyaXv5h8oAmtVaX/3YHPkvvsRT6HZypyE26NaQVRme1nFDfYEQURMXgCfJyUh+1e84XFEJ64omEM32jdiIlintAxVJjjpA2U9/3JuYR3sP//5z++994d333332rVrr7/+urePOwBVHFPc2tdUEBkRrtGUNs/f88gdFflBbJqJjXtAVOvybZM1KfER4epAiSEKAEAyss5bumulLsVL4lp5/J7lkkAeANvcu3Dq4TfPr6Q6Ehjymq1nXrp3OMnDkEI0FAdGJHVrT42WxERFhgZ52x9oXgwEgW1I3dGn33xiSGWMYwUN3Hv+2ZOt4TLez/9syfVY+mX0DLWVZkRFRtT1daVbWh1sPodxHfwTW1qzIyKi8ms62qrTpQYAAExTiU9IdGTVxPpsZ2l6VFiAlELGAeApVsFNHQUREVEJ6XmdfV0qKwAAnKFbfFFHa3mkJjwisqSlrSTJS+eDxFIW1BRkZsREaiJbh6fTvVkkBAAoPLGmtSNPExGZVlDZ1VGrM+kj8yxcg6IjC7vn5kbbi2Kj1K4GLCIQjbOnzp1/ais5LlwVGh6mDpTshHR0I7v8jume6ojIqNy6mtq4GDsAsFcfmZjrr8qLi9BEZHeM9pbHmnEOXiVFs1FUr98/XxjiqgxqPXPXZLKbrge3OVI5f/L2Ok9jl8ze42cnkkUMFAChMKMGN9aGG8MdLJNmzp7sSztsRa+Fur2nqzArPkITronum7v7zrsmArylApeEhuHWkNDw8PAjxUOnH7xnvT1BbEgDALCLyekeaC+Nioyo6JmdaU225hE57qWDXXFHYjXhYXFVs6fvf2Cpxt/hYPVkmIp9QqIjK8ePzXaVZUSFB8ioZDxGpMTWdMwPl0VqIqOSMpqGRwtVu26GQDIwVWrqZhYWeor8BPQDb0qExFQX9i+NtGg0kdEZhZ3Tk2nhjgDAcgis7R5oK0+MCA/XRJb3TM215UgERABA/BqGR2vSY6MiEnunl1tTFQetW8Y4XoVTz7zyVEdVSpAqJEwT4WXPJmMAgGDG0iB1mEajiU1K7xwY1By6fpplLvMNiY6smd6abStMjQj1l5CJGI7KTGrsnhsoDtdERqfmtgwP5QTs6q1hUOHa69+8vJTmtZ3RIBslDd754nNnspMjgkPCwkJUclM8CkDlmWa3Lww1ajSaiJSSuumFicQbGVihWEVA6n9npJ23xu2fCucamD6UXPnf0R71ezlzpk/ZYHumj5k+UNbzr+dWeUZdu3btow8/+uCDD95///2//vWvb731lq+vLwAA1dwrrX5idKh/cLAvPyezvLKpJc2U7xKcV9c72NPe0d0/ONzf0Rgn0w1bqSYeiYUFYZaAmThHJaf7mwEgZp6plV2Dff3FETYcR0ViYVNfb291rIxNk8bWtvX2d7V39gwMjfY0l4cdbEhPdVTl1fb0d3fnqIyYUr/cita+7q4yjS3plj//wBSH5LVOjI0MDxeojFmHri5jGFmkt4wOD49NNGf72W7HxUZusRWdkyN9He0dXX39A331CQZMEgBgBLy6uLVveGyspzF7L6QlGUtia8ZGB/uHRsdrE/YlBGTRWa2DEyODfa3Jyt2naQh0ZnR1z+Dw6HhnRbzbts6wbb1zmidHB7o6Ojq7e4fGOrKtjOlAVySV1rV3dfb29vYPDvd3NsbLdzOLOJaxqnR4eGRsoik3ZGe2AMy8wmr6J4cHh4YaE7mswx+MYtkGpxdm+hkCztonMSnBTTdIA6p9REFRvJuIAsZBuVlqMYcIAIBj2IXmlyc503AcY/8jhVHiwz39jH1z67pHhwf7e3raMtKzWhorc3wRAsUuompwcHBoqKO2qjC3oLW1OFqmG9WxHNQ5TeOjI8PDJaqdh3s4bimNnYPDQ30drWUZGVWtdRUahwM3aOgWs3vJevsH+hsSudszo0hwUWvf4Mj4YFtunGz/R1g2nllNY4MDAx0FGkfhoTcljuyV2T04ODIx2Jig2ptj5ovdS3snhwf6B0dGS8MtduNmsFaXN/WOjQ521MYcpqcEc++E0vberu6unr7+/sGh4ZIwMxYeABCCIqG5q394eHikt6U45AZ5KROvI1VdEyN9HW0d3X39A901sUw6AQAAw4eWdQwMjkwMtKRH7H8ojGnrldowXndEaUHbPhfOsYU17d1dPT29/QND/T3tyW4UDAAAJbG8cvsGBweHx/vrIv0O9m3dAUF9rRXHXJQ1XGz/F49GZZc4+x0XmwfufDtY8rzhuc40ud51Wc8vwS1R5eLi4s8+++za1WsfffTRRx999NVXX/3qV3onRz169PxbIHCJSI4KsPrZH7TSo+dmuIWq/Omnn33yyScff/zx3//+90uXLulVWY8ePXr06DmcW6jKn3322dWrV69evfrtt99eunTJ39//lz5YPXr06NGj5/9pbokqFxUXf/75559++tknn1y9evWqLlbWq7IePXr06NFzOLdGlYuKdjLYV3cz2HpV1qNHjx49eg7nVq3B/vTTT69evXrlypUrV6588803Fy9e1M8r69GjR48ePYdzS1Q5Ly//k6tXP/zwo/ff/+D999//29/+9qtf/Wr7ySg9evTo0aPnfwxm4hqflqm2P6Ss/r8lt0SVc3JyP7py5U9/+tPvf/+H3//+D5999vkbb7zh7e19/aYN/bPbFxZrHS04v8iR/yKIXGMbxrfWtKtrHWm2whvdTBwrTdXU2tqxrbH6KOVelQpLVV733InJ0gDD/TUrMbI4qX12Sbs+P1wXt1cDkWnjWTSwcfTo0c3BEj/7vaIlXJ+szonVY6uLU2Uq+q5JAYntlt2/vLq2MdNdoLbcfTPfWVM3dXq5KV4suu7Z2dDyjpnVY6vzk/XR1te5X5ENnTM6j2m1a5tj1TGuPAAg22tKehbXVpcWl1dWW+IseTdyWvoZ4XskNS+sNikPKSvzT4ASvbM6KqMdbuSdCABgGZTbPXdyqjTQ6IcGCghNoGmZHW6Il+6+xLT2KNRdsqEyf4eD68wAAABG50XWLiwtazdWRgqTXP/xwzgMSURq//KmdlU7VhJotHuzYXifvKHZpbVjC2NtKYrDPg8AALahJf1zW2OFXnzavt2mssNqFpcn+/L8DyletocooKBvavXY6uJ4awJ5x2IKzzKMaVheWT26OdWZtb/s3L8SstzK9eVgj04R7cbv/fcFxTHt3J8KVr2iCn5FpX5Z5XfSXiQ6/CNUkyGvgFdC1a/4S1Nu6KeO46RJvV4JC3klNGDegLnbMmqhuCso5JWQoCeVlpIffYglja/u68l1Yf6nuWzeElXOzMz64IMPfvOb377zzuV3Ll/++OOPX331VU/PnSL2CIYnEglEhsAkomOyxdndFAAwHJ6A11XWwggEAh6HACAYDofD4XAYCgAIiuJweDwOQzAMxeFwOByKIoAiKIricHidMSCGJxB03ogIjrDz60+DoNtNowigKIpiOBweQwEAcHjCtgUtiiMS8bjDG8HjcBiGogAoimEYDneoTb2hd0n/cEV+jFQiSawaGayKO2xAQjX1Kuzsb8+VSqXqtJrWhkJPQwAAujJxoLc1qWVqqDpauquRKJGrLp0Yb5CJJS7+EbU9QwkSAADMxLWobaQ9L9TB0SEsv6Ot8ojOrhdxiuma6I0K9ZZKxPmd86UhfAoCgDEt4monhivFEql3RFpTR3u4NQAAwTqwrrWzqHO0pS5nfx1sRUrbZGe2t0IqcysdX58r9N/2P0TZlpFtMzO9pREODo5iO3MBiwAAbL+a1pb8FF97e3sHB3M++cZahuEJBAKBgMdhKAII6LwiggqPxMjs2bq/YNuv6t4CCILhCXgchuxeAgTDE4gEIp1nFNI82uYduF08C8XhCUTCvjsEQXF4HIYiKIYnEIh7Nw6C4fCuSWFJai9DAoFAIOJx270LguEJRLLQwt5KRL+h/SddkdDf25bcMjVUHSMzvK4HIXOEmb3H1yZ7x6t2Mkks+6j6/u7GDIlEEp7bMtRW5m5+YK0ZjM5PaJyba8sWiyUy/+j6ifnyVPfd3cF0R4lDERQBBAEExRGIkdUZISYiKoFAINzAadnYL6Ovvy09XCaRxDTNrPcUOPEJoHOnmJ1td1NI5e4Bdf1zpSEmhzTCdEsd6WtJaJoaqwq34+9Vq3FNaZoaaompHR448sPqHwiCohiK7l1FEMc1zK6OBvsqHB0cY+rGW5KkZBQAx7FPaZoZrZRIJD6RGd0D/fHKw8vHYChGwjAyhu0OQlH2Q+gBAAAgAElEQVQUJSIICghO9/q+S4kiKBHDyBhG/uH1RQg7b0YAQRGMQTcddPXYsuPiUIyMYddV6UZQwnYjN7hLUAQl8q3S7K1S6Nvv39eRIHgMI2MYCUNR3X9RFI8gOBQloggKCB7DCPvOFoKiJAwjYygGCAqg+wPuR8eOIAiBZRjs6FTBwcgYRsbQw+ypcSSePOgBiUDF5XpzjUuUfm94WNkc/HYAbq1XwD2WphE8boDE84LUVHRIx0gRlHurLkkccw0M3IzEd3gpqjlkBACEDncEeHQZ8r0FhgsBYc+Lja4LY/BmPoUtvcUqwX+aJt8iVU5NTX3vvT+++eZbr732+muvv/6nP/3ppZdecnd3BwCUYh9WNrhxcnNja6sns6R/IMfG2QQAQiq6FtePj5UEBuT3LawfmxnICTE2KZo+defaWHmELQDQrTzKJu8+t9kdHBrpm9V7+7lzE7lSjtSvevzEvWfn8t14FBSimie0R1d68/2DSsbXTqxNdWc4H9Sh0Z2Tm2ZO33t3b5IF0yW6d+nU2a3hZAcShUJO7V9dX5poyvIPqZo7eVo7VBNrf9Bl53oX9C+dufNUY4SA6ZM5u3H65Ep7tNWBfSjNLbe+Ic9PZ8ZBCWror5FIDgwUmDYu2c3dcZY4AACqMqusJl1lCgAY1UDEY2KuOc3FEbJddwoyQ10/VuajiwU5ytj6rnxnACDYqvJqm9NdKDgcjudf1NVaHmyDBwBpdltDiq/OyZHuUjLWGM4kAsYUxTaP5jtTAAAwM3V6Q12yAwAgJKaAZ0B2ii4oTt/vr0zlGgmYuoiXF1g7Ux9KwQEAYuCoKWvvz7M25VP3exKx/WrqSiN8jHE43GEDHR0ozlTh3ba4pV1ZWple3Fru8PU2BdQhqWHs7qcevPfUyfW1tbWjqzVhXDIB7JP7lhdn8t2AwDJM7Dp1cqEvx8cAAFCiVUBe7/ptmxtbx/vyKvp7s6U+1gCAGgWX90+vHtVqlxenezJYVBzgGe55o/NLq7293Rtr61u3L/eVhFtiiM7J8cxj999/55lN7dFjG8e70px0Jg1mmprJ5c3N1bnmeNsbVmndvmQu2U3FkfJ97hQ4Bj+2aqg5P1wRlNNe7KF7kWCtymlsTdVFzjhpbl1jaLjtAeeLJPLKGRwrM9yJFYy9k5t6OjXWAAhm5pXYPn9ma2NjY7aheXEgS2VvIHIv6J2976mH7trcOHZsQzt/AydHAoMn4G5Xn7NKHWrPVZr+0MkRsXItaemNPeQEYDSuIZeBeuR3FIXsuVMgGJUjFIhMzOIbehJ+oMo819iOE89vNodKd7MEFI6hiaGASMTjiFSXvNGRXBcyADDMgyrGGkN0ReL4wUfqC8q8DzkcRNTjG/BqaMir6uCn3Ww9UQTBU8XK4LcDAs65KO8ND7sYFnHZT1HK1d20zGSpx/nw0FdV6lcDnLMYOzX/UIKxlcvr6tCLYepng4LXZe7zJkQAeqil8/NB3seDwy9qos4rLVVkBAEAhJIg8XwmJPRVterVYN9hKvlgo0nUztD+9oiET+JiPgkPuRgWftFbHKKrA45gVBvXc6qwi2Fhl1RBC8Z4LknQ669+Rx30snfEC+4eK2Knh6Jj33B3SKQBAEJkmw15q94OD7sYFqR1DT7naOiAB0CMRgICXwsJeTUk6HEXayWKAACfZb4UGvtBfNznmpCLYeEX/ZWlvIOtABAEI5BYuguNZ0ok7vNG+MN80vjiO1xtI3XtEUWzfi7ZBNyBHSOKF9LpdkQCFUEJNIujvq6tPBoGAHiyLYWg62EszVyfV5rtN0xly2IquzpTHG/Cre3fjluiyklJSb/73bsvvvjS88+/8PwLL/z2t7994YUXXF3lgLK9UzsH+rL8LQwNDT1Tm5YefGjUxUkIAFQOz/hI7513ntqYKjWxl9jH5Gd6Cz0Sa8ebNHwGhcZg0GgMx9ji1pYyNwMaRRBUs3ByvjrQShzWqr13tdHPiomhAHSeiX3OxMP3nZztzTK0VbocKciQIjgCjc3n8bg6eDw+h0EmoCiJYR3dvnZiNMfFzCV55Pjd0yUyERlBUYQpsnUtW3zm3GZffbyRnXdAcmaCPYonMTjXN0In4hCMwpKmDR3f7ExwtPArXrz9dF+qOYtwsJOjuaqyvzcr2oXP49mEVSzcvVwsNz0oi81xcMmpb1bpav4RnFJqWzP2ZwsVuT9wcoxqHEpz0FUi5Igjqzs7YgAA8CJlZPPKXVvrx7bOnpw8Eiaj4BAAcC9sLQ6VCxAAQEiOacOTxUwqirGFSc39CbpEIGrsl9lYV63a26JVdMVPOjkCUWgWXdGVwWHiAQCoxpLM8duXJ+c2jm3etjXZmCzXaQbNObV19uSZE+tr6xu3D+dKTKkH9+WYoXNa7UBXgb9MKlVlt9x2x2ZCkBUAkWEgyOivLQ3xszE0NBSJODQMQYAgsIuonWlQEzEMx7DwiajobI/iAcJRxjYNjhSprAwNDV3iK+cefGzKX2kMCD6ypbevNMZHJpXKlCndWu1EAQuHkoWSjMkzp2dLAw0NDT2iq9p78j2YgBCoLF5UbV5tVrxMJDI0NOIxibqAAk/jCIytwuuWZopcyDdpyu2cc51nFJ7iUThxYqjQytxKFlEzXBdKJ2EAgHBl8U0DTfmBfB7P2DO5//RGZ7Typ7PYJI5P8dRwluPeKwbSsKL6Ug8SXR43PDOTHyE3NDS01xRNnj47kCQ2wJFZPFHRREu2QmpmaCgSCg63hd4BIdI9C1pKZM5GGAIAGDu0Zma4yMKIxxNZRbcvri+Uu9ywDbfCn/CMwvNsk5p+pMp8z+Shey7e1ROluD6R5JjWPb1+amtzqdFGREMBgMSXZHeNtyXweDyenU/Z0uZ8Y4z5IftglGsriBDy/IRGyV6ql6XGJAQlsgxzVEn/f7h3jxHNksaIc/A85yVOpiEA3DBTowxzvh+P56fwf9XLyZOEAiBcK5cXg93aGTRLGtPHzue3muAtMyIAPVwa/GWET58x3ZJhMePlPmfGJgFCNFee9lE2m/D8eLwAG/fXw4IWaQQKgtCIZGPyzg+FYkQi0FAg4IhG5vJ2F1mbgGpJo1lSiFQUAUBI1i73BXk0clmWNJoT1/G2QI9WHNFO4PhMVNQLDtYhlt6vh7rVmxo2SRWjphSUYjwSGPCYnYk7jWbJsz2qivqzh7kjHgEwLLAXhAl4fiKTLB/VebEIBcBheJGhTZ6bx7SxboskNoYAAB5HEJApe3tIJvNw+808ECOu+aiHLPLwW8dQdkZm6kUBAMDheb2+/mME/OFFdkWGdseDoy7FRjxpbqi4fqRLozErnT3bifi9bxrezLugtb8k4D/TPOSWqHJCQuLly79++ulnnnzyqSeefOrSpbefffY5pdQBeO4pZZU5XtuJJkQY1j7e4q7cdnJE/CpHytWWPDwAAEog4hG+o11+dUaojXLkzs3C+EQvdWpcttf29WL7lU+dee7lh4eTJfuq1eLpYfXjRV48OgYAgBFIeIqZLGvwtuMbazo2TpyeLA922q6lZxTRsXbP08/f3R5mujcrhDFM4ptHsuVUXSCBIxBxTAe/0onTJ3YbOX5qKEdhTtW93yZl4vS5Jx4/UeXNvkH/jGAcl/iGqeOnjh/fmGnuOdkTbW9+0GwU28Etv7kjXFdvn+CUUtuSkbxPlX/k5BjdPJ4jp+2pcnsMAGBGboHJ2amuHA6bYx6SkhYX7ERDAMC9qKsi2kWEgU6VR3SqzBIlt42m6AIz1Ngvo7GuKnhviz/p5EhkmvmXTy4t1UXsCAfHMm7owadvnypSGXM40iNVjUXZ3tupbYxIZ7LZbA7bp2CqPdvR+JCJOIaNZ8nYqfXVJe3mndrBwkhr+vZ2w5pyUqS21+0EkeWSM1gVREQBgGgkTq5tDWECRxlVXFcWsNOxGwQ2DLcFehsDxbtl9eRtt68vLy4tLS2v33b7CW2tFwZANQooGaj0xwMAsKRhBfWVQdufdc+NydX4/VRFZJwse2wsT3mzqny9kyOCJ4fUHT158rhWe+z42XMPnpzK19lFIijZxjtvYOPUiRNbc10jp7pTgt14P9kgieNdPPkjVa7Kd3HwiCo6UuC7W5acgMfvZieP9JVGCW66vjNC4thG149vTVe4iXa8OoFAc8kZWF47vnV0fmWlsXKg7Kc9I/fzk06OFOFPqTIgKIbhMOyHKV+MzGCx+YZRFdNdue5kPAKAoBxzTf3i1tbxraXR2a22/KL4g83CSARhj2/Qa6Ghr6lD3giP+L2LKR4ASJwQz+BnHHf6dryoU67oMaWhGCVN6vVCeNhratWFsOivAiQuJARQXJbSf5JE2okoUQqGoACAsVMdlRsOupUSzGKZ84g1FwNclDLo3cjot9Wq11Sq10M1f44MP26CY+AJaUr1pbCwt0ND3w4NfVsT+bqXNFs3Zc+3y5XYZV/nh8Go8Hbv4zLZO1fD0s7tAWu2Edt8wcujFME7msnv9bEVAz3LSd5vSjE2Fy9Z2O14oiMEDNWFCGSSaMg/+HV1yGvq0Lc0mncUxtvHyzRSyRWt14/5HM2kd6ki3w4LfTs09O2wsLdD1evmJNbepBBZYuF8j+zw2uwAhrJ7nS109q44PK/H13/0RqoMKI5DJAtEdqd83LoNaDvLTnACptlyoOplhfm+QRrKkUVU9fQk2d9iM6FfiluiyvHx8e+8887jjz/+yCOPPvLIo2++9aunn35GIbEHjktKeWWu904mRxjeOd6qkOyswfEp78uS7U+i0MxsIsqmO+PjGjd7YiqX5iuzkkLNAABQItM1qWVi8/677puq9HPg72YxUKq6pj95/3cTQTEimboPGmXb7R1HYfvlDs2fvPf0HUN5cjPW7n1GM4yu64zev5YBwXBECm1/I2SibhaaQDcIq5hbvf2u4yc7U6z4lJsauqEoSjFQVXUW2TvyD/oA3dIzr3koVbdsi6bMLqtJDzbd+7Mkq7UoxG7n+4SSmCHVS/VhOp3jKOMauvLlAMB1DSusLvfSnVPj8JLy3CgnEgCIU4Y7cj2EeAAAumvpWEMYkwgo3TiuYaHMBwAAMDN1RkNd0j5/D1NNcXFK0N4KMCDQeR65PSNT/WlS6t6rLPOE9oXZvhTdrjhEJDW25ziSgcrhGfJ2pv3wAa3D1bb2Bzo54kkkFodFwaEoiiImQdVDg7ma7T2JaS/JcrUlAADGNDI3ZONQIBt4FY3WBuIBALjOERVt9QFkoMujiuvKgnc2YRDYNNLh7SYEsCvsafP3syPhEGTfXBzQjf3yu/J08sJyCswsL/beHjT4FSeXxPkbAABQ+GZGfMrujDgiyRodybqxufA24syWolD7fX0LhicQiCQiwcA2qKSn3Be5/lZAUZTEdMmuqvBX2xyUwRZ6Zg+OVxhv37qIqU9qc09zgIjhGVueVhy8u56OwBIJeVQCCoAgGSO18cYsAACSgYmZgH7wDYuS6Fahhe3zK80xjj9RERpBMTzTyT2/qjX8xn2jPK+zMPCHhtoIyyyu/vovGgBgRCqbb8Rn7Z1nYAr37h22eUbfRB6Vupe4RFEUTzELSaxIz/c48GhwGa7qp8XGFjgERSme1q5POhsDAFC5ao/A+60Z20MlnKBKJm8WEq2tXJ9yk8XTUBTBBALJE+72YiICKC5J4b9Kp+yOCRlkmiURA4SRYCud3q6azcxzknZacADAzcn9lLm5Pw5DkeuMIwk4PBO/98PA7cz1ihwrnB3zKAAAVDLdloqnILRcT48+Ln2nU8RMbNzuNmeKWKbT7q6ZgEot5Wc9rKyBmS+WdRgRDUyctNYOUbsnAUe2ppCpGDHXLeRxB6EQRTCMGmTr+oh0x3qVYxqtdOliAwDgCFQbOomFAoZiNPx1e0jdN8ePkjnuCq+p6yfe8DiCMY1hTcZTd9/Hc3jSw0mly8WQRHN+yqydDDaCYjwqw4ZK5ux2uDiiIZXC3v4sLsnNZ53PtwQAjGBmKH3AL+BuewPq/u0RzLzyO4ZKff5jlwnfKlV+++13Hnvs8YcffuThhx958823nn76GYVCAsByS6lsbc0Pl8ukMllc6fidD5xIi1VSSRyhlYOyaOxod0aAh1wqdjDRXSOKsXXe0pmZqowwd7eak/fOF6qMAKhcx/i22559ZDZJxmApK7UPPrJeG+jAJuBYxo4ufpWTa20Jrkq5xNFWxDjwsHFMoTJ7+K7n7usNsqRxgrpPP3LfXL6LOQOPNzBX+Grqp1YaImRyZ4m9BZ96YCMEjrFfxcIDz5yqlQsZvITpc4/e3n/EXnSw+RuRJbJ0kEnETk7ixJqx+nQ3o4MbB4JIqk6vKVHJ5c5hGbVtDQUeIgAAsoGxrVghT+2aH6hIDFZIHUyIeAyAyHSKbayNdpY7ewRH1/UMxYsBAAjmPsmlLWVxcplUJo8tayxLC7QiAgAIAkrKU8KClXKZc2HXfImaT0EBgG7ocqSxSiOTy/2jMpo72kJ1q70YPEtHhTy6anCwrTTWzVlsSaPgAceJ777tkXMrmmAPmUQidnIwYW93PVwbRdXgRPURudxZnVNYmZjqjAA4RWZOTbena1zkMllISe94c7oV/8Al6Gaefr1L47mejk5OTpKwnI622iTXbZM+n4qW7oqkILlcmtu5OF0bziEhKM0lb3KhMUou91CVzt5z78mJfIWIwZFGlLT2lEbJZVKZLDK/7+y5M/mpngwqQRLfMNpZGOQhETs5OYmdHGyMWDgC2zG4aOBoX7IFl0Wgi6Mr+iaHMmS6jIs0Oa+zvTzOWS5PqJlY7M52EBGAaWznJFV6pHZtrHeluLtIHW2NDr7Xdi9Z59xA5RGVQupgSiTs9kgIx9xdk9e/1JNkxCYAAOAoHFM7uVTsKJZo8tubyxMlB45eAKPx4xtm5jvyZDK5Iii2YWK+NNkVAHiKqNb+gdIED7lMKpPH1Qwv9hQ5i4gAgIR3DHVlBrs6O/tUD6/257ofNCuOUuUp3fc/ea4mP0IuFYslMmsRVaeTKNvEwdFJLBYrvIMru8aTFYeNRClcUzuxQp7Ru9RfEhPoLLE3xmMIIBjXQix1D45qmFqq0zjLnMyNdwM2oV/23DMfPjGR6L573AH5fUMtCYFucrnctXx4baRUTcEDIDiywEoqFjuJxb7RWY2tjSrLn94HAEDoOW7+Z0xMwrhcL6H93WExn/qLvagEILMD/GO+8vcY4PH8eXx/e+c2uW00AVzs3c44OhXxuF5ckyFfzX9pvMr5VAqCMkykDwW4NQr4/jy+2sz6joDgDUsOk2I84OH3qMLMnEBgUkymffzOOluICRjCsVry85qzMPbmcr24XC8DjgMJPSzENLBq8fA6Zifw51vN+QafkwkcMEBMFGfcxYVGfH8eL9jIaNzVoxSj+JjLHw0JGmawVOYuz6udY6iCMpnHPVKROd2w09PnDierYD7Pn8drdgu84Govp7AzXP1OGRkGcbl+ho4PaWKu+DgoqAQAALrwiIvv/RKRP9+s0zXoGU/LoBs8FoIZ86zWvaVB179qYeT4UlLJfwfYRe3FVNQ0uaLFzCSAzwuVer4kNRHuLCah0rmLkfn/He3fv3t9OWadXj7HHcz9eTx/W+WTwd6zBjQqYMZ2Ph8nxr1ibqLh8by5Bu7bj4pgLFl4dW9vwqGLzf69uSWqnJiYePny5SeffOqxxx5/7LHHf3Xx0jPPPKtQKAEAOI5h5YMb2qX5paXFhvra3v7h0SJLoVdEVc/syuLc7OzC4vL8eH+6q24szLBQFba1JDmhBCvf7PKqSFsAxDKgoHNh/dhaW7IjR+KZ1za1pl3qTnfl0l1Su8fmlufnZucWl7QzQy1xP15LvwNdFlXdv3RMu1wbZcpUhNb1zR1dmmmMFbPYvoWj0/MLc7Ozc4sra1NdZeqDk2IGHqmto8vaxZkSNZ/pkdA9trg6O1alsTgwdBAo4mpG1rVL80sr2vYUG8ENvgIcS4fy8aPLK9qN0ZpIxXZGwdQ3rXVifXVxdmZ2bmFhca43k8cmAwCOREloHZtb1q7NDtbE7GY1adYeOX3HtEvzS9r1/jxfu91Vql4ZlaNLx1YX5yZLg2g7i35IbF5m79zisvbYVGde8HZq0cApqHxoXbs0OzMzOze/rB0vtzNjAsOjoHN0YXl+dmZmfnF5bmIgw2139SlBaJfYrl1Z1a6P1Cbu7DhINCl9i+srS0srI4VmosOWyxpYiysmji4vzM/PL2k3hkpU4r1YzUpd3j29pl2en61Wc3UTFTi6U0LH9MLKymxPd2NuQcvyUEOcBA8kC7+CvnXdndbUVN/dOzpVLbFkA4B/Xv3EknZpfn5peX68N8ONYeCc3LmwrJ3uKvN35jokta6tHZvvKgq2JwMACFwS60bXtavL2vYj9kICAIAstX1kbnVpfnZmZnZ+STs33Jp88L0GJj6pu5dsfmFxvi+Lz9nuvjAKK6R8an55dXGkPdOHBwBAN/fI7VnXXbGBEj+7GxgXoTSupnpucWl1fWk4P3Evl2zhFdI+v7GyML+0utaeJjPcHSvKj3SOzB3VLk4M5LjhD45yidaqvI4F7dLczMzs3Pzi0kpjnCUHDwAo0SNzcHJ+eXlZOzfamiQ/fPcsAnM6Jndv14XprjQWFQOUHFg8PrewOD83MzO/dGxppDjFfecTHGlIxdTZ8RI/+32Lo+zj6vtnj66uLM6NtsRvr9/HM4wiapYWFxeWVo9Ntmf6m/546/uhmU34BLykVr0UEHCHQnkuwOeUFRuIDAfn4Dc9FacCA58LVl8I9ug3YhEBAG+QK/d+MUR9ITj4AaXytJ/vswpLCxwAoDRb9yeCgy+o1BcCvY9ZsACIUgvnJ0NDz/s6F3O4UjPZQ2Gh5wOUVQZUFAAMHeb8VRdUwReCVRcC/aeM8Yf6NZN9LZ0fDgu5EBJ6lwPfcTt+pxyReT2lUl8IVl0I9r/PTsgm85u9gs+H+t8utk1h292h9hqzsoizcj0f4FLEwoBpWucdfEEdfEGlesnVWkZEAQAY5vO+gS+pVS/6+59VKh8K8N600kki3kHoeEdoyIWQsEflFoE3fOwXwZsLrMdsfjhMFHLN5gOinpaZeO5PUhuLtf6qCyHBL/pJk3B78xEkMrPaI/xFL1nuvutrJLBa9Au7oAq+EOI/Z8AUAABQU+VeT6lULwQGng9WXQj2v9deiAPAqFaqqtGpat//ZEMvnSrfc889n3766ddff/P5519cu/bp1avX3n//L5cuXX7rrUuvvfrGSy+98tTTz7366hs3q8rJycm/+93vzr9w/tlnn3vmmWffufzr555/3tXlxotC9OjRo+dfA4IzMHEaV0e86W6tYTN+1mfZ9dwqSCK7mMK6JOfDH4L7N0enyvfff/+1a9e+//77r776+q9//fKLL778+OOrv/3tu5cv/+bipXfefPPiy6+8/qu3Lp09e8ebb755Y1VOS0t777333njjjZdffuXChZd///s/nH/xRTe3n7nEgR49evT80xAoNg7u53y87w7wO2lr4X3jD+jR8y8Bj8dfunTp+eeff/HFF1977bWXX3nlwoULFy68fP78ed0C6ieeePLxx5947LHHH330sbNn7/jNb36zvLx8A1XOzs7+4IMPLl/+9cVLly5evPjBB395+eVXPDw8fumD1aNHjx49ev6fBofDXb58+U9/+tMTTzxx33333X///fc/sP1z7twDD5x74Ny5c+fOnXvg3AOPPvroK6+8cvXq1fn5+Ruocm5u7kcfXfnjH//47rvv/u53v7t69eprr73u5eX1Sx+snl8ID4B2gKHrfxoB/pPnhvTo0aPnn0Gnyl9++eW1a9e+/urrv+/j22+/1f2rQ/f7N998Mzs7ewNVzs/Pv3r1kw8//Oj999//85///MUXf33zzbd8fHx+6YPV8wuxDPAbgMXrf/4/gBssFdKjR4+e/3XoVPmLL7746KOPPvvssy/28de//lX37y5/+9vfvv766xurclFR0aeffvrJJ1c/+ujKhx9+9NVXX/3qV3onx//FrAJ0/OjFVwD06//06NGj53puiSoXFxd//vnnn3766SeffPLxxx///Zu/X7p06X+ZKhMNvNI7e/qHOspDPH8hN5vrwUzcIyPUUqObrER1sxgoomLdb+AeA8sAQz968Q2AGxeF0qNHj57/XdwSVS4pKfn8888///zza9euXb169dtvv7106ZK/v//2NkXyhIqByYmJ8cro/YZ+tprKzq6eohDL656iJBm4prSOj09MtxepxXvFXDgyTWnH1MTY6FBRMI++pzRGQYU9g2OTA23FIVZ7jTBMA3O7JiYmppoy3S33Cj0aeqU2dI81JspZ+yqKoQRiRFXP8NjEcGtJuOP19doploE5LdMT42OTdfFORmQA4CgTylsGR0dGRgZ72zNcybrHrEk8t/SO1eWBrMScmrbOrmqXG8nWDyBwTKOrR5vywh1/Nns4tkte20Bjmoz9czqs2IRXTN9x/vy5raH26ijJwZ4zelXWo0ePnpvjFqryF1988emnn167du277757++23t1WZ7RTX0NPcVKLRhFd0TlSnehiRAQCM/XOmJ4dy+7XzJW6MXaUmcu0Tq4dGW8PDNZnlze0NeS4CAACyvbq5d6i6ICUsNKSqZ6o02p5LAACM7JrcPz0QqQmPSkzrHBgItwMAAIqJR25zb3+dRqPJr+9pKYt3ZAMAMJWJg8MDRcPr83XhVgbbgoJRWCHFvTO9uaFh0ZmFk4sLlYE7ZXpRkSJtcH6mpSwtLCw03NuJz8ABgHnS2FR3Vlp0SIgqyF9mhMMAAKjGQeUzs9VeZACgSmLLW8t8/rHH6zAyyzeranG5M/RnKiqHtwir7WpN9+H9c5Gypa9C7Sn9Yfkqp4jBvrb4MH9fVUzv2gO90bQDBV+vynr06NFzc/ykKus0+Msvv9T9q/vlH85g/2SsLPQ5Uhh7OzsAACAASURBVNtY4StAAQCxTOpqyHKzpgMAzchBaiWiqKr6spXMnQoxVBOnlNbhHGcaAADNOb2sPldlBADsoMqeulQXDgCAIKZ/pj7KmgWAELwqx5oidYXYaPL41t5cMQAw7b3zW7sTbIgAANyA8prKOA8eABD4VlIbQ4J3QVtBsI3BdniO4IjGdgornRbyfXJ7R0vcAAAAbxacU1fRlGL9AwcK8/j+hnjB9XpFNrROae5LMCayrOJbN8+cXOxLk+MFioDmueMbfYWeNkwAsFLnd06srQxmi3gU4PqX943Pzs8vzo23lWzbNPHsbUoGx6tSCoaXl1e0c60ZfmZ7W7ZQF3ZMHWuNMeMS4GYwcM9p6KiK3e/q4JlePrKgXV6cnx4v9iKheDw1uWOkt68pPb1qdm5+SbvYVxUnJgEgRm5HGrYeuuu+s6dWZ2cXlrVtqTJD3UAqaWgo20lXM5QqtDZiH2zQqFdlPXr06Lk5fqzKf/vb37799tvvvvvuu+++2119/fXXX3/55Zf/wGqvzz77TDev/MnHH//973+/dOmSv58fAFiGpJTkp8l0ussKbB6o93Ax2t0birpuKNdlV5WZVpKsxs4wnWMOzja2tCk/0w0AMJo8vmpg5bY17bJ2Y7XbV2FGxAGCJ2kahjLEukibYRVc1tsVDwA8uW9+Ta2fTjiJspzG5oTofY4C7kV9JWprgx+XHqSYS2KzGpO4Otnhu8VUjK/NDw4srhzdmK+LlmzbzJjE9KxsbG6trWqX5iZKfMh4AKAYWx2paUp1k6RWDZaUxmVXN+a740lcn6bBsfY8LwMaAQGg8i2SeleGC9WGVJy6rq8jJ9Tb1dXNO6hwcKmrSoMA8Ozlg/c9fWqqKctXqXRPqBgeaElw3Sl1J82duOvFd89UiY23dRYhMIPKFpfm+2vCMIxlGZLXUh9rt3MkBOuwmvb2DO+9g/TKrJ4fq4oMcFEqFF6lvXMtyUwyztw1YPKhx85oO7OcFUqX0PS2gcEytRmQOSZ2aa0VXbVFIc7OCqWLgymLjAEAkNjh1ZPTK9qBVMkhHgcAoFdlPXr06LlZfqDK33333a9//eu4uLjIyMjo6OjExMTKysqJiYk33njjv/7rv25WlQsLiz777LNr1659/PHHV65c+eabby5e3F6DbaFOKSvOUuikjhPUPNLs7mqyvS8InhZynSozrCRZzT2ROtXG28VVtuVnewAAYqlJSY+N93Owt7cPyK+IdzdnIQA4UnjDSK6CozNUswmt7O07AgBcmW9BfUOQzryO7Jzb2hYfI907AZ7FvT9WZYxlHdq4sDCS47ddtxZnHVCx+OQLJ3ozQx0c5EntfbV+rqYIACBklsjM1s7e3lHimtsxWxxIRIAosoiraC6JVNQNNAcqHIPz6yuDDAAIPpnRKUFylSp1+miP3NwrpizPyYmPcYOHTt15enNpdnp6enbxxH0P3KmtdATgiT371pZKfLbtbDj+ebWV6b7bZi8EGocvMuYxCNvhKZHmXzw73pTsm9y6cHTz+Op8d6aSt1Nyl+eZWd9RG2O967LD9WtqrQx13TGOoYlSu0bjbUkUBqdqab05ctvbnCyOLGyoi7cBAJCnhObFBf3I/49sYGxuF1I+sbK6ujhV6EvSx8p69OjR8z/kB6r85ZdffvXVV3fccUdAQEBUVFRtbe3S0tILL7zw+eeff/311zerygUFBdeuXbty5cpf/vKXDz744Msvv3zrrbd8fX0BwDggr6mx1FfnACTQtDbluzvuzZ0Sg2oGsuSUHYmkmSlyO6aydE+1Eh0TC6rzo20AwCq2tDxVtT3hq8jvLlbbsAGAFFK30qjRCSzDLrSyr9wbANiOqrL23jhdYpvuXlBZkRBgsrtFcC3sLgo025eCxhiGARVT81MdSeK9CW68dWD76om2fC+dRobWNVZn+oowIJLJu2JHECR0j+cScEAUWKTUd0TbcaUJLSu3nbrrtrmCeDkAWEUmZR1p7qtKrbptNTWld7Ex1sqMBjjfuslWV3dHQ5FQJBTyeRwWk0oAEEqcm8c6Qncs06iu6eXlmYHbFfgRBEVRdK/iO4LSDPgsEgIYjW9mbmbEZ+7uOckupLK9I8tzzyEVBKHtTTkKq92FZPiQhtF0J6qBUFAxNZK2Y96ImnklV9QnOwIAeGTHlKaECAEAUBKNRsFjCIB7XmOWry2XxjV3cg8oHx5OsTnIf0ivynr06NFzk/xkBvv//J//88ILL/T09DzwwAN//OMfv//++6+//vofmFfOzc27cuXj999//7333vvDH/7w2WefvfHGG97e3gCAsl3jMjIS1dZCodAvp7+9KMSWhQAAkc7hCU0sk7tna0JtTflcNhUAEKKhNCS3IkMmEArFqqyGltoQKxQADHzyq0tT1BKhQCDgh9f0F6utDRAAjCVLayjyMxEJje1c8jum8jxxAIBQbHxicwsSHIVCoTK2srU+z9MIBQA8hcnli4QRjZNNSR4OIr4BHUURjGmSO3bm+GqLk52FEc/AgMPWWZ4BRpDH5PX0V4VKhUKhV2FjmY+/FQYQXNI22ZossRAKBSbBRSNTdRoSAgjDNKJmoiPeAgDH5IssLE0N6AQAQK1ColvW7+rSKKIyisfPblU7m1AQAEJg6UhfqdpMwGazWGw2i0EjETC8hWeo9sH7+yoiBAKB0MQrtXugO8vPcFv2HJK71u4/v1JgJ7qBzQvK90it72iMttqvlyghrKaxPj3Q0VAgEAhMzWPrB3JYdIzIErSeODvfmykQCARCoVtUcGVVqhMGACBPSm9vLvA3FAo90rvm+4qdTQgAroXjR4+fOXXytpPHV+emq9QMfaysR48ePf9TdlX5ypUrn3/+uW7d9VdfffX999+//fbbL7300vfff//VV1/9Y6u9srOz//Lhh+/+7t1f//rXly9fvnLlymuvvubp6QkAAIiDOm5k8+zW5vEzExXu1kxdV65I7ZzRntjc3Dq+tXliY2WoPkoXCXIsHBuWT25snjyz3JcdZLW9yhe1CCnoWT5zYmNtY+NEf5qdSCcICJGa/n/bO/MgOa7zsM9iAezSkilXZOwF2BVFviphKqlyHDGHnaRil8txVGWLcskmlcTlqthVSjl0iYxCSSRxLMAkVMJINkRgd+feORaABFICCRDc3dk5e47u6bt7+p7unnN3Z+/FUiBVqvzxXvf0zO7ioCjTDvtXXdjBzOv3vvcd73vvdffM2b+cCUai3r+68Cf/0npSZ2DiH/2zF7xzwVDk2sWv/d4/hantF377zy68Gg+FgqFgIBjwvjr51Mc//lPHf+UP/lcwPhcNvHrp8kww+upLf/E7v2Sp6sjov/iDr168NjsbvvqNL/36pz4x4PF4jj/ysd9/9tylYGQ2MHPxwh9/8tHjAx6Px/OJT3/26W9efPY3f/7n/snvPPH82f/6r055PB6P55F/8HvPvXz+Tx8fGTj1779y/i8+//fBnvDg0E8/+eL/mfKH/F5fYHb6G1974vFP/t0/Ouu9dOmVycm/DAQCoVjwf/75Zx/7mJ1af/lzz12cm//mf/zFMedPp+1j8OOPffaZc5N/8nj/3dNHxv/Nf7lwMTgb8PkCvunpL//uJwc8nqM//eifXbz8P85849KlKV8wEvrm1/7o8b8DVHjk5ONPPX/xWmQ2NPe/v/Qbj/3s0cEBj+fIsaGfevRn//mXLk4+9QvjsOOH4GZlFxcXlwfDzsorKysbGxtbFru7u3t7ezs7O+A+L/vNB/rGzS8+9ZSu6zRF4zheLpd1XS8UCp/5jPUTqgNHjg0NDw8PDzkeTB48dnxoeHj4+DHwd+h494bjo8eHh4eHh4/37I8ODB4Dbw8P9TwmewSUHhrqLT1gVzLQLXlsaPiR4aHjx46DJo8NDAx4jhw9duzoMavu4aH+VsEHxwYHuo0Ogt446/Z4Hj35b//8/wYCodi3z/3n3/6lQesW7yODg4NHBjwez8DgoGMH2jNw9PjQcLfNwYEjR48PHR0cPArlHjp2xNnLgSODg0ePDh4ZuPddVo/+yr/+0//2tT/8xwf9qKutv+Hh44MDnoHBo5/+zK9PBqae/Xf/8Jc/PT48PDx03Pnc+MCRo8dA13t3qQf+3u8+/ce/8Yn73AruZmUXFxeXB8POyuCi8raDnZ2dnZ0d538fNCt/4QtfUGSlVCrlkTySQyRJymazv/ZrH7lfchxwXvv9m82xjz36hy+88u1L075LLz/9nz7oX7W77PGc3vcm6n7jpouLi0s/ICuDjevtXkBK3nHwoFn585//vCAImUwmuZRcSiyxLJdKpX71V92V0UeVGY/npsfzRO/RcdfKLi4uLv0cPXqU4zjwbSG7vdy5cwf8a7O3t/dAWfmJJ56oVCpLS0sLCwvzb8/TFL20tPTYY4/dXxyX/y/5nMfzmsdzs/f4jsez71krFxcXFxdVVe/evfuDH/zg3fvx3nvv/ehHP/rWt76Vz+fvk5V5nk8kEvPzC2+/PU+SZCaT+a3f+s0TJ06Mjo6Ojo6OjI6MjoyMjI6MjI6OjB7MyOgIZHTksDIWY4Dx8fHxiYmJiYmTJ09OTExMTEyMj4+NjY+NjcEqR6zWxsbGxrvFYdHx8W7RUbv1B5BhxJLVKZIt2mi3ztHRsdHRsTHw5x4dsfsDDoDVMwtLaEf3RkZGRk5ARk50hXfUPe7stVX1+NjY2IHy2D0cHRkZgR09RNh78TNjY4+MjT0yOjo8Ojo8OjI8Mjo8Mjo0OnriXm1a4k70Mg6qPKx0n5q6OrpfFw+TYfwwxsa7HRzttXJPDaPg835RrZr7undyn0N2Tx05gANknZg4OTFx8uTJU6dOnrLoc5iDFNhjz243J/r9Dup13FHVwyv2vow4RwBnHFoadMZ6n7VtyZ3KtccEWKZX6z0OY9cCKji477DnD+5UDgUf7lM9HnV4VWOwRsc7jlqtPvWEjdNetoZtTpwYOdE/YHRjqquGU6dOnTr1c4Cfd/kJ8alPfWpubu6tt966cePGGw/ArVu3Xn75ZZqm9/b2Ds/Kn/ucJIlLS0uLi4nFhUSxWGQY5vr1787MzPj9fr/f7/P7fD6fz+/z+f0+v4OA3x/w+/0+n8/n9Xm93hmv1+v1eb0+UB6UCfgDAViPD7wRDAZDoVA4PDs7G4lEo9F4PB6LxyLRSDgM77H2B/xe78yMd8bn8/kDgUAwCMpHo9FYLBaNRiOzs+FQKBiAzXu9Mz14Z2a8Xq8PCuLA6wX1glJeb6+sPdLCjvv9oOf7qrLOCgQCgWAgGAwGg8FQKBiCXYtEo7FYfG5uLh6fi8fj8VgsFo1GZsOhYDAAZfbOzMzMTANmpi3RvT6fL+D3B4PBcDg8G4lEozFINBqNRCKzs7PhUCgUCAQClrwBaImAQ+4eGYEOg6EQkC4cDofC4VAf4XAoHA6GQ8FgKBiEUkJ9OTTl63UBoH9/IBAIhkLh2dlIJBKJRKPRWCwai0UjkdlQKBwMBoC3+IA6fdAHgJpisdjcXPzKlbm5uXg8Bk0bDgWDwQAwhd2THkN4oc/ZHgd6GQoFQQcBoZDVTdipYCAQCDi8FlbR9QOf3aLXB13IqT/gtDbRSCQSicyGw+FgKBgM+v1+aNfp6enpqampy5cvX758+dLU5ctTU1NTU1PT09MzVlvBUCgEQiAWi8fjV67MXb129dq1a1evXp27MhePx6AyLF30EOzaMxQOh2etaIrF4vH43Nzc3NzclStXr169evXKlbm5eCwanZ2dDYVCIVsHVvz2urztQf5+S/v8B8ZAnzXs2IJjgc/n9wegraORaDQajcbi8XgsFo9FI7ORcJ/7WR4U6fp6OAx9dhao3qolFo1Go7OzkdlwOBQKhkJB6/NYLBaLxWPxeDw+F4/GIpYG/T3eZBvY6/N6u69AT4CbA6MHg3bQ9DhWKHSQRx08TFijiP1OACrFHgOjsagD0HErBnxwgJuenp6ZngJuNXX58vT0NBzFHD4asgaNaCwen5u7cvXqtWvf+e53r1+/fv36a6+99trrFt97WF5/vzx0S38LCYfDwQfG5/MtLi52Op3NzU07K7/77rs9Wfn3n3wSRTEEyafTmUw6iyAIRVGappkOdPtVzTBqBvjXMA3DNHRD1/WqpmmapmiaqlU1rVqt6nq1WtUNw6zVjFrNME0dYpi1Wq1WrzebzVar1W4vr6ysdlZXVpZbrWa9XjdNo6pXtaomq4osy4qqatVq1TDMeq3eaDSbLfC1oM1Go2aaRrWqaZqiKJIkiX1IsizLsqIoiqKoigoB/5clSZJAAVmRZUWGn2uaVtW0qqZpqqZpqqZYJ0BkRQEnKIqjclXTVK1arYJeG4ZumLV6o9FqryyvrK52Vlc7ndXVzurq6srycqtZr9UMXder1aqmqaqqWGKqiqqqQHWGYZpmrdZoNtvt9vIKqACwsrKy3Gq1Go16rVYzazXTBIdpGmYfhmGahmnWarV6vV6v1xqNRrPZbLda7S5NQKvZbLXAy0azUa/XazXTNPVqVVNVVVFlRVUVTdUAerWq92AZul5vNFvtdnt5eWV5ZXV1ZXV1ud1uNRoN0zSAejRNA0o2dNM0641Gq91eXl1dBY/er6+vrVmO0GjUajXDMAy96kSvajq0kappqgZMqioqkK5a1Q1DNwzD0gBE16HKq1pVUzVVU1VgQUmWel1HkkRJEkVREAShIlQqQkUQBUmURGgkFfi2AU0EMXS9qmmqosiSKFQqPMexNE1TFEUSBI7jeJkkCIokaZpmWZavVARRlGVZ1TTdMOqNRrPVWl5Z7qytrW9sgq+x39jYWFvrrK6sLC+3W81mvV43bVPXTLNm1uq1eqMOTNpqt2w/WVtbW9/YgF+HD+4G3dqCv9MKa6rVajWoHNMwTMM0DcOhKsPQ++yrA6XqOlBjH1Vdr+owakDgqMDKKnhd1UE8NFutdrvVarfa7eXl5eXldrPRqNVM3TKwVq0C3eqGAdQLWgNuA8UwzVqtAfy50ajX63XTNHVdBwGoG4ZRq9UazUaz2WwBT2w3m42aaerVqqoqqiorMHSB6eEhOw84KChwOLCc3YDh5IwvQ6/q0K1BLNvjhGy1AaNbBk3LiiLJkqTIINotR6rV6o2mFYqARr1eM01D16uaqimKLIlipVLhOJ5jOZZlaJphGJ7nBUEQJUlWFMWW1TRNUF17eXl1dW19fXNzC95jtLe39w7kBw/PO+8XZyV37969e/fu/k1dwA8/Mty9e3dzc7PjwDTNnqz8wksvvfzyN1iWKxZLJRTFUAxF0VIvRfAH7R5FtFgsFYulQqFYyOeRHJLL5jLZbDaLZLMIguTzSD5fKBZLKFpC0WKpVLRAUQwrl8s4SVI0zTAMy/IVnmUZiiTKZawIastm0ulUKp1KZ9I5BMkXikUUxco4QZIMwzA0TeA4WirBoplUMplMJBKJxGIikUgsJRJLiaWlZDKZTKXT6Uwmk81kLTKZTCqVTkHSqVQ6nc6k09lMJpvN5HI5JJdDcrlcNpfLZDKZbDadyWQymXQ6k06l02l4SiqVSiaTyRSUMJPNZLLZbC6byeWyCJJF8oUSWiYIimZZrsLzfIXnKzzHcwxNkXgZKxYKeQRBstlcNptOp4GMoIocks8XCoVSqYRhZYKgaJrlOa5S4So8x7Ecx7IsDQZ7DMNKqG0Pp4V6QFEMw8pYuVwmCIIkKZqmGYZhGJphaIamADRF0TRJUSRFkiSB42UMs7Sbyzo7mEMQJJ/PFwqFYrFYLBaKxUKhUCgUiqUShpVxgqSARVkWSEtTJIGXS6ViPp9HECSXQ0At4AwcJ2ma4TheEARZliRJqHAsQ1MkgRNlDENLxWKhkM8X8jaFPFLII3kkBx0ul81lM9lsJgNFK+ShPJZgAFAHkkNyOXhKOpNJpVLJZCqZTC4tLS0lEonFxUQCHouLCwsLC/ML8/ML8wuLCwuLC4uLi4mlpWQqlc5kLCsBZy4Vgctms5l0OplILMy/ffvWzTffuPH9773++vXvfufatWvXrl6/fv31733vxhtv3Lp56+3bby8sLi4lk+lsFsnnSxiGEwTF0lyFFyVJURVZlSVJFIQKz7EMQ5MEUS5jztAroSUMw8p4mSAIkrLCiON4nhdFUZYVFcyMramQJIkVnqNpmgC2xdASiMeSdQBLFguFQr5QyOfBn4Kly57DqdV8Pp9H8uDRDSSH5LJIDgA8OZvLI0i+WEIxnCBIiqIZimZommEZhqYpHMfRUslhFnjkEATJI0geyeVymWwGBgiosVgslEolFEUxDMMwFC0VCgUEQdLZNDRKsVQq4xhOEARBUSRNkTheLhUL+Vwmm06lU8l0CsZucim5ZB1J60ilkumU3aAlC/C8XorFYrFYAv0HHchms5l0Jp1Op+HwkoSkkqlUMpVKptOpZAo0m0ylUqlMJpPNwsGthKJlHMcJgiBIkqRIEi+X0VKpAEbCZHJpcWHh7du3b968+eabb77xxo3vf//GjTdu3Xprfn4+kUiAgS6TzWYRJF8oFEsYVsZxkqJZriKIMpgZgRlNvd5oNMBk7mFpHET9nvQVticdYEmwbLFisfoRA+Rj8IONr7zySk9WvjI398Uv/gccx2VZAdN57jB4juN5nuc5nmc5luVYlmUZlqEZmqLBmE6SFElSFBz9reEZAGvmeb5SqQiiaK1YFVWRZVkQKjzPMQxN0xRJEHi5XC6XcQInQWUsy3JcRRDA2qbC8yzDUCRJEDheBlmkm5pKpSIKEhuO42C5QnQpl0Hd5XIZL5dxHCdwnMBxnCBIkiBJgiQIEpQE58KyWLmMHQiKYiiKYSiGlTCQBHGCpBiW4wURrMgVWVYVWZEkUajwPMuCdEiSFAkaIiGW3miW5Xi+IgiCJMmKomoaXOirsiyDpV2F5/ke0xxsNJ7nK3ylUhEEQRQESRIlSban8r1IkiRJkiCIArAEyzIMTZIkQeAECUcLiu4aFswRABzH8ZWKIEqSpIDFgaLIigw6DCb3cAJAkhRJUTTNwC6KkqwomqaBRRFYbYLmeZZhGQYsC4BiaJoBB5hHUGAeQZBQul7ILkDTJEkQBA7WrjgwKIZhGIqhVpKyASMvGI8RQB7J5/OFYrFYKpVQDCuXgb9QFE1RFEEQOFZG0VKxkEdy2XQ6tZRILM7Pv337rVs3b968+ebt27fn5xcSiaVkKp3J5ZB8vlgqoSAfWxMTSZIUVdV0XQM7TyrY1BEFoVKpdFXNsizLsc4wAqslsLbTdd0wzVq9XrOHxlpN16uqqkiSBL4mCEQiwzLdw5qnWQpmwNSNYRiGYVmG7cM6gQZQNHUANA1yMDCzIEqiJEuyLEpwM4LnOJahYQDjveFVxrAyhqJosdSd9qFYuUyQBEmBMGEYmqZpkiRxHMcwDCuXcYKAnsVyHMdVKrxQAcFGEni5jKFlsOBA4fQVRcEMBy2hKApXI6Bxa1BwRCbZC0XbHk2R9nCB447hYv8wgaKgqRJoECxPLDeCYvN8pSIIAs9xDE1TJEngVnrOgLSeTC4tJRYXE4mldDqdyyHAkTCw0sFxa+bNshwviKKsqFXdMM2aWauBrZXWj8dD5ey+MvtT8v583PnocefOHVEUn3zyyZ6snM/nv/KV//7cc89xHNfpdAzDOHjYVhRZVRRVVRVVUdXuPpAkiZIoiqIgCoIowO0/URAlWexuCYHdXxnkYEXVVLDpCPd9dU2Du4rg9IpQgVkcjj2CKEkS2NCGm0WyZKcmlmXgso90jAlwAeFMUM5M1jf3YFmO5Xie5XmO5zi+9yOWORh7SCJJkMpJAidJkqRphuUrgiTJcF9c08D2raLIsiQBVUF4oVIBr0Q4TwE6U1WtWtWsTa7uXqy1+d23tS5bydZ6DXbmFUWFW+Oavcdl9AM3Jg1rZ71a1RRVAbMfQFdGS8r93qGCFZpja7NarWoaSC2i1WFQUTeVaFq1qoPdYNMwwU6wqsiyJMnQrURJFPu2mQVBFARRFEShAhTYA29hWb3C8xVo4t68Ak1I9yZxsjvIdkfXMla2AUsxkmJYluV4juUYhqFpCixxsFKpUMjnspl0KplcSiwsLMzPzycSS6lUOpvNIflCEUUxsHNBUTRY41YqoigpsmJt1doXBqrwIsL+iRS8eKJqGtgjNuGFoXpz/zqoXq+ZhqFXq2CXFXiKdABgA7+P7r5u7/ytaxMQ+ELP9SNgNEmUJFlVFFWrVvWqrsMwsONXqHAsCxK8Pa23Js94GS9jZQzF0BKKYuUyToDAgrMSnuN4HsQm7VwDcHASCjZ34ZYDmBbS1sjQhaJp6w2mdzICfKV35ts7lPBwysvvGy4OHDEsT+s2CSYuDGOlYxgWMrwkJwgVnudZlqEovIyhxUIhn8sjuVwuB5bZhUIRxTCSpOwNMGuCzPMVoSKIErhKolvXsX6SWfkea+UDE/NhC+UPOUP+9bK1tfXuu+/Ksvz8889//etf78nKmqYtLCx8+ctffvrpp1999VVZkt95553dh2Fnd2dnZ2d7Z2fb/ioT8HJ3Z3d3d+eAM+7s7t7ZtR/g2tsD1djfhLK1vdWD/ST2LngCzC4Jf0164yA2rZ+e3rR/eNrCfrf36Cm46eDA+jc2NjY21tfX19fW1tbWOmtrnbW1tVXwZ219c3Nze3vL8eT47u6drtw73YfM7W9+cT5ovrvb1c3e3jvv7PUCNPcQFnLWdj/u7N25Y4sKpAOPwttmtWTc38h+MS279j9cD6qwxYK/Qbq3B86wNbVzENvbO9vbUHU72ztbB7F5T/pNuG7b0YkzglY7ndUOvMDf6XSAkdfXYQ1r6+tr62trnU5nZXllud1ut5rNJrj6XzNNsw7vo2i328tgBFpz1gDcbqf71T9OukF2oFX3bPUdernQoduH8ZkHwAp8aBDbN/pdxBITxLwVv9BG6+sb6xtd9QNtr66urq7C8XoZDNngdBMvPAAAAqZJREFUqvn6+vr6xjqM7q7t1oEdN5wxv7m9bbmBs2DPORsb6wcHtu0o4E+f/zh9bGtra8sxgDzIiOEUATS2sbm5udUzCoDBbWtzc2N9fa0DbzJYXm632+1mq9VqtVdWVjqdTreSjT4hYWWWl7zv68Lvnx7fdGBfYN5/jfmjww9/+ENFUaampp555pmvfvWrN27c6MnKzWbTNM1MJnP58uUXXnjh2WeevXDhwvmfOBfOg2YuQCYn7Y8mz08eftqFfukmJycnJyfhH4vzfW+cP+CUycnz9mGX31fmHpyfnDx37ty5s2fPnj177tzZc+fOgtdnz549t7/Z96/VD9wcF+7BB1fx+znrx2rdyQOYDxro8A/P3YsDT5icBB5w5syZM2dOnz59+sUXX3zxxRdPnz595syZM9A1Djr7Hh7/ANzLnh+sWn9c+frj9zCln3VwL70datVD6z/vLAYOUPL8vkHkfg10Xz/AydYZhzvS+R7R+86wnMpyrNOnoUom9yvl3CSs167lvg7yofFSLx+2OH99vPTSS88+++xzzz03MzNz+/ZtBEF6svLW1lan02k0GqqqFgqFK1euhEIhr9c7PT196dKlV13ux7cP4sMWyuXD5ECXcH3iwXHq69vgvx+qPB8qB3uT61R/q7l06dLU1NTrr7+ezWYRBCmVSj1ZeW9vb3t7GyRm0zRVVeV5niAIDMNKpZLzfksXFxcXFxeXHxPrTv5isVgkCIJl2Z6sfPfu3b29PbBibrfbtVpN0zRRFMH9MuA+hYNusnRxcXFxcXF5OOANhgzDcVylUpFluVqt9mTl9957DyTm7e3t9fX11dXVdrsN1s32U/wuLi4uLi4uHwj2AzG1Wq3ZbC4vL/dkZRcXFxcXF5cPHTcru7i4uLi4/E3h/wEdScs0CPzRpgAAAABJRU5ErkJggg==\" /></p>\r\n<p> </p>\r\n<p>A presto con il prossimo step!</p>\r\n<p>Valeria Guarino,Daniela Marino.</p>\r\n','','filtered_html'),('node','forum',0,195,234,'und',0,'<p>Pubblicata la versione 2.0 dell'APP Uniparthenope Servizi ... come sempre disponibile du GooglePlay ...</p>\r\n<p>Grazie a tutti per la collaborazione ed il testing ...</p>\r\n<p>Obiettivo => "migliorare ... :)" <img alt=\"laugh\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/teeth_smile.gif\" title=\"laugh\" width=\"20\" /></p>\r\n<p> </p>\r\n<p>Modificate alcune funzionalità e inserite di nuove:</p>\r\n<ul>\r\n <li>\r\n accesso ownCloud Parthenope</li>\r\n <li>\r\n Visualizzazione pagamenti tasse universitarie</li>\r\n <li>\r\n Nuovi layout per dispositivi a bassa risoluzione</li>\r\n <li>\r\n Nuovo layout Consultazione servizio Autobus (Transit)</li>\r\n <li>\r\n Nuova gestione del login e del logout</li>\r\n</ul>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,196,235,'und',0,'<p><u>- Nome dell'API</u><br />\r\n <strong>API Rest - Get Schedule</strong></p>\r\n<address>\r\n <u>- Descrizione sintetica</u><br />\r\n <strong>Le seguenti API restituiscono l'organizzazione settimanale degli orari degli insegnamenti dei corsi di laurea Uniparthenope.<br />\r\n Attualmente sono recuperabili solo il corso di Informatica (codice: 0124) ed il corso di Scienze Biologiche (codice:0 123).</strong></address>\r\n<address>\r\n <u>- URL</u><br />\r\n http://students.uniparthenope.it:10003/orario.json?corso=[CODICE CORSO]<br />\r\n <strong>Oppure con l'aggiunta delle opzioni :</strong><br />\r\n http://students.uniparthenope.it:10003/orario.json?corso=[CODICE CORSO]&anno=[1,2,3]&semestre=[1,2]<br />\r\n http://students.uniparthenope.it:10003/orario.json?corso=[CODICE CORSO]&anno=[1,2,3]&semestre=[1,2]&giorno=[Lun, Mar, Mer, Gio, Ven]<br />\r\n <br />\r\n <strong>L'ulr di esempio restituirà l'orario annuale per il corso di Informatica</strong><br />\r\n <a href=\"http://students.uniparthenope.it:10003/orario.json?corso=0124\">http://students.uniparthenope.it:10003/orario.json?corso=0124</a><br />\r\n </address>\r\n<address>\r\n <u>- Elenco dei metodi esposti con sintassi e breve descrizione ed esempio da linea di comando usando curl</u><br />\r\n <strong>Con Get-Times si ha anche la possibilità di selezionare dati filtrati, passando tramite il metodo "GET" nell'url CORSO, ANNO e SEMESTRE:</strong><br />\r\n <a href=\"http://students.uniparthenope.it:10003/orario.json?corso=0123&anno=2&semestre=1\">http://students.uniparthenope.it:10003/orario.json?corso=0123&anno=2&semestre=1</a></address>\r\n<address>\r\n <strong>Ed una maggior selezione specificando anche il GIORNO:</strong><br />\r\n <a href=\"http://students.uniparthenope.it:10003/orario.json?corso=0123&anno=2&semestre=1&giorno=Lun\">http://students.uniparthenope.it:10003/orario.json?corso=0123&anno=2&semestre=1&giorno=Lun</a></address>\r\n<br />\r\n<address>\r\n <strong>Esempio lettura file JSON in android:</strong></address>\r\n<address>\r\n <pre>\r\n</pre>\r\n <table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\r\n <tbody>\r\n <tr>\r\n <td>\r\n <div>\r\n {</div>\r\n <div>\r\n url="http://students.uniparthenope.it:10003/orario.json?corso=0124&anno=1&semestre=1&giorno=Lun";</div>\r\n <div>\r\n String read = readJSON(url);</div>\r\n <div>\r\n <span class=\"Apple-tab-span\"> </span>try {</div>\r\n <div>\r\n <span class=\"Apple-tab-span\"> </span>JSONArray jsonArray = new JSONArray(read);</div>\r\n <div>\r\n <span class=\"Apple-tab-span\"> </span>for (int i = 0; i < jsonArray.length(); i++) {</div>\r\n <div>\r\n <span class=\"Apple-tab-span\"> </span>JSONObject jsonObject = jsonArray.getJSONObject(i); </div>\r\n <div>\r\n <span class=\"Apple-tab-span\"> </span>jsonObject.getInt("Laboratorio");</div>\r\n <div>\r\n jsonObject.getString("nome_corso");</div>\r\n <div>\r\n }</div>\r\n <div>\r\n }</div>\r\n <div>\r\n <span class=\"Apple-tab-span\"> </span></div>\r\n <div>\r\n public String readJSON(String URL) {</div>\r\n <div>\r\n StringBuilder builder = new StringBuilder();</div>\r\n <div>\r\n HttpClient client = new DefaultHttpClient();</div>\r\n <div>\r\n HttpGet httpGet = new HttpGet(URL);</div>\r\n <div>\r\n try {</div>\r\n <div>\r\n HttpResponse response = client.execute(httpGet);</div>\r\n <div>\r\n StatusLine statusLine = response.getStatusLine();</div>\r\n <div>\r\n int statusCode = statusLine.getStatusCode();</div>\r\n <div>\r\n if (statusCode == 200) {</div>\r\n <div>\r\n HttpEntity entity = response.getEntity();</div>\r\n <div>\r\n InputStream content = entity.getContent();</div>\r\n <div>\r\n BufferedReader reader = new BufferedReader(new InputStreamReader(content));</div>\r\n <div>\r\n String line;</div>\r\n <div>\r\n while ((line = reader.readLine()) != null) {</div>\r\n <div>\r\n builder.append(line);</div>\r\n <div>\r\n }</div>\r\n <div>\r\n } else {</div>\r\n <div>\r\n Log.e( Prova01Activity.class.toString(), "Failed to download file");</div>\r\n <div>\r\n }</div>\r\n <div>\r\n } catch (ClientProtocolException e) {</div>\r\n <div>\r\n e.printStackTrace();</div>\r\n <div>\r\n } catch (IOException e) {</div>\r\n <div>\r\n e.printStackTrace();</div>\r\n <div>\r\n }</div>\r\n <div>\r\n return builder.toString();</div>\r\n <div>\r\n }</div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</address>\r\n<address>\r\n <em><u>- Eventuali note</u><br />\r\n I campi di ogni record del file JSON sono:</em><br />\r\n <strong><span>."corso": </span></strong><br />\r\n <span>Nome del corso di appartenenza dell'orario</span><br />\r\n <br />\r\n <strong><span>."cod": </span></strong><br />\r\n <span>Codice identificativo dell'insegnamento</span><br />\r\n <br />\r\n <strong><span>."nome_corso":</span></strong><br />\r\n <span>Nome dell'insegnamento</span><br />\r\n <br />\r\n <strong><span>."c_prefix": </span></strong><br />\r\n <span>Codice identificativo del corso di laurea in questione</span><br />\r\n <br />\r\n <strong><span>."cod_piano": </span></strong><br />\r\n <span>Codice identificativo per un definito Indirizzo del corso di laurea</span><br />\r\n <br />\r\n <strong><span>."anno": </span></strong><br />\r\n <span>Anno di appartenenza dell'insegnamento (1, 2, 3)</span><br />\r\n <br />\r\n <strong><span>."semestre": </span></strong><br />\r\n <span>Semestre di appartenenza dell'insegnamento (1, 2)</span><br />\r\n <br />\r\n <strong><span>."giorno": </span></strong><br />\r\n <span>Giorno in cui ha luogo la lezione dell'insegnamento in questione (Lun, Mar, Mer, Gio, Ven)</span><br />\r\n <br />\r\n <strong><span>."ora1": </span></strong><br />\r\n <span>Ora in cui ha luogo la lezione dell'insegnamento in questione (1 = "08:30 - 09:30", 2="09:30 - 10:30" e cosi via)</span><br />\r\n <br />\r\n <strong><span>."aula": </span></strong><br />\r\n <span>Aula in cui ha luogo l'insegnamento in questione</span><br />\r\n <br />\r\n <strong><span>."Laboratorio": </span></strong><br />\r\n <span>Valore binario (0 indica che non è ora di laboratorio, 1 indica che è ora di laboratorio)</span><br />\r\n <br />\r\n <strong><span>."nome":</span></strong><br />\r\n <span>Nome del corso di appartenenza dell'insegnamento in questione</span></address>\r\n<p> </p>\r\n','','full_html');
INSERT INTO `drupal_field_revision_body` VALUES ('node','page',0,1,1,'und',0,'<p><strong>Infrastruttura informatica centralizzata per i servizi web di utilità generale prodotti dagli studenti dell’Università di Napoli Parthenope.</strong></p>\r\n<p>Il Progetto Sebeto, attivato nel giugno 2012, è uno dei <a href=\"http://www.centro.uniparthenope.it/cce.asp?mode=dida_inno\">Progetti di Didattica Innovativa</a> basata su strumenti informatici, sostenuti e finanziti dal <a href=\"http://www.centro.uniparthenope.it\">Centro di Calcolo Elettronico di Ateneo</a>.</p>\r\n<p align=\"center\"><img src=\"http://web.uniparthenope.it/sites/default/files/styles/large/public/images/20122510173059.png\" width=\"192\" /></p>\r\n<p> </p>\r\n<p>Inizialmente pensato per gli studenti dei <a href=\"http://informatica.uniparthenope.it\">Corsi di Studio in Informatica</a>, è utilizzabile anche da tutti gli altri studenti dell'<a href=\"http://www.uniparthenope.it\">Ateneo</a>.</p>\r\n<p>Il responsabile scientifico del progetto è il prof. <a href=\"http://dsa.uniparthenope.it/raffaele.montella\">Raffaele Montella</a>.</p>\r\n<p>I docenti eventualmente interessati a coinvolgere i loro studenti nel progetto devono contattare il prof. Montella (raffaele.montella@uniparthenope.it).</p>\r\n<p> </p>\r\n<p>L'accesso alle risorse offerte da questo portale è consentito a tutti gli studenti dell'Università di Napoli Parthenope inserendo le proprie credenziali di accesso già usate per il portale http://www.servizi.uniparthenope.it e per la connessone wifi.</p>\r\n<p> </p>\r\n<p><a href=\"/?q=node/9\">Dettagli</a></p>\r\n<p><a href=\"/?q=node/10\">Il fiume Sebeto</a></p>\r\n<p><a href=\"/?q=node/2\">Persone</a></p>\r\n<p> </p>\r\n<p>Per informazioni relative a contenuti, proprietà intellettuale, licenze software e responsabilità, fare click <a href=\"http://students.uniparthenope.it/?q=node/8\">qui</a>.</p>\r\n','','full_html'),('node','page',0,2,2,'und',0,'<p><strong>Responsabile scientifico:</strong> Dr. Raffaele Montella - raffaele.montella@uniparthenope.it</p>\r\n<p><strong>Responsabile tecnico:</strong> Antonello Cioffi - antonello.cioffi@uniparthenope.it</p>\r\n<p><strong>Staff:</strong></p>\r\n<ul>\r\n <li>\r\n Giuseppe Agrillo - giuseppe.agrillo@uniparthenope.it</li>\r\n <li>\r\n Giuliano Intrito - giuliano.intrito@uniparthenope.it</li>\r\n <li>\r\n Nunzio Napolitano - nunzio.napolitano@uniparthenope.it</li>\r\n <li>\r\n Carlo Palmieri - carlo.palmieri@studenti.uniparthenope.it</li>\r\n</ul>\r\n<p><strong>Collaboratori:</strong></p>\r\n<ul>\r\n <li>\r\n Francesca Lucarelli - francesca.lucarelli@studenti.uniparthenope.it</li>\r\n <li>\r\n Fabio Nisci - fabio.nisci@studenti.uniparthenope.it</li>\r\n <li>\r\n Rosario Pellecchia - rosario.pellecchia@uniparthenope.it</li>\r\n <li>\r\n Mirko Zammartino - mirko.zammartino@studenti.uniparthenope.it</li>\r\n</ul>\r\n<p> </p>\r\n<p><strong>Strutture:</strong></p>\r\n<ul>\r\n <li>\r\n Centro di Calcolo [<a href=\"http://www.centro.uniparthenope.it\" target=\"_blank\">...</a>]</li>\r\n <li>\r\n Centro Campano per il Monitoraggio e la Modellistica Marina e Atmosferica [<a href=\"http://meteo.uniparthenope.it\" target=\"_blank\">...</a>]</li>\r\n <li>\r\n Ufficio Servizi Informatici Studenti e Docenti [<a href=\"http://www.uniparthenope.it/index.php/it/servizi/servizi-informatici\" target=\"_blank\">...</a>]</li>\r\n</ul>\r\n<p>Altri progetti di supporto alla didattica innovativa del <a href=\"http://www.centro.uniparthenope.it/cce.asp?mode=dida_inno\">Centro di Calcolo</a> dell'Università di Napoli Parthenope.</p>\r\n','','full_html'),('node','page',0,3,3,'und',0,'<p>In questa pagina sono riportati i collegamenti ai migliori contributi creativi da parte degli studenti coinvolti nel progetto.</p>\r\n<p>Per aggiungere la propria applicazione a quelle segnalate in questa pagina, fare click <a href=\"/node/add/product\">qui</a>.</p>\r\n<p><a href=\"/products\">Elenco completo</a><br />\r\n </p>\r\n<p>Un elenco degli spazi web degli utenti del portale è consultabile <a href=\"/?q=userhomes\">qui</a>.</p>\r\n<hr />\r\n<table border=\"0\">\r\n <tbody>\r\n <tr>\r\n <td>\r\n <a href=\"/?q=node/92\"><img alt=\"\" heigh=\"64\" src=\"/sites/default/files/styles/large/public/images/20121307082412.png\" width=\"64\" /></a></td>\r\n <td>\r\n <strong><a href=\"/?q=node/92\">UniParthenope – Servizi agli Studenti</a></strong><br />\r\n Applicazione mobile - Android</td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <a href=\"https://play.google.com/store/apps/details?id=pp.app.orientamento&feature=search_result#?t=W251bGwsMSwyLDEsInBwLmFwcC5vcmllbnRhbWVudG8iXQ..\"><img alt=\"\" heigh=\"64\" src=\"/sites/default/files/styles/large/public/images/20121307082412.png\" width=\"64\" /></a></td>\r\n <td>\r\n <strong><a href=\"https://play.google.com/store/apps/details?id=pp.app.orientamento&feature=search_result#?t=W251bGwsMSwyLDEsInBwLmFwcC5vcmllbnRhbWVudG8iXQ..\">UniParthenope – Orientamento e Offerta Formativa</a></strong><br />\r\n Applicazione mobile - Android</td>\r\n </tr>\r\n <tr>\r\n <td>\r\n <a href=\"https://itunes.apple.com/it/app/id571062892?mt=8&affId=403275\"><img alt=\"\" heigh=\"64\" src=\"/sites/default/files/styles/large/public/images/20121307082412.png\" width=\"64\" /></a></td>\r\n <td>\r\n <strong><a href=\"https://itunes.apple.com/it/app/id571062892?mt=8&affId=403275\">UniParthenope – Servizi agli Studenti</a></strong><br />\r\n Applicazione mobile - iPhone</td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<hr />\r\n<p> </p>\r\n','','full_html'),('node','page',0,4,4,'und',0,'<p>1. Accedere al portale in modalità utente registrato</p>\r\n<ol>\r\n <li>\r\n Fare click su <a href=\"/?q=node/login\">Sign In</a></li>\r\n <li>\r\n Inserire le proprie credenziali universitarie: matricola numerica 10 cifre e password servizi/uniparthenope</li>\r\n <li>\r\n Se l'accesso avviene per la prima volta sarà creato l'utente locale in maniera automatica</li>\r\n <li>\r\n Modificare le impostazioni del proprio account scegliendo i servizi da attivare</li>\r\n</ol>\r\n<p>L'attivazione dei servizi è soggetta ad approvazione dei responsabili. 2. Attivazione dei servizi</p>\r\n<ol>\r\n <li>\r\n Accedere al portale come utente registrato</li>\r\n <li>\r\n Utilizzare l'apposito modulo per l'attivazione o la disattivazione dei servizi</li>\r\n</ol>\r\n<p>3. Accesso tramite client SSH</p>\r\n<ol>\r\n <li>\r\n Essere sicuri di aver attivato il servizio web hosting</li>\r\n <li>\r\n A seconda del sistema operativo adoperato:\r\n <ul>\r\n <li>\r\n Windows: usare un client SSH come Putty</li>\r\n <li>\r\n Linux: da terminale digitare ssh MATRICOLA@students.uniparthenope.it</li>\r\n <li>\r\n OSX: da terminale digitare ssh MATRICOLA@students.uniparthenope.it</li>\r\n </ul>\r\n </li>\r\n</ol>\r\n<p>4. Contenuti web in ambiente Linux Sono nella directory public_html nella propria home. Il file README contiene le credenziali di accesso per il database. Il database è amministrabile tramite l'interfaccia <a href=\"http://web.uniparthenope.it/phpmyadmin\">web</a>. La propria home web è raggiungibile all'indirizzo http://students.uniparthenope.it/~MATRICOLA 5. Impostare l'ambiente Java (da accesso via ssh) source /opt/java/sourceme 6. Installare software in spazio utente</p>\r\n<ol>\r\n <li>\r\n Se non presente creare la directory $HOME/opt: mkdir $HOME/opt</li>\r\n <li>\r\n Se non presente creare la directory $HOME/dist: mkdir $HOME/dist</li>\r\n <li>\r\n Entrare in $HOME/dist: cd $HOME/dist</li>\r\n <li>\r\n Scaricare in $HOME/dist il file di distribuzione del software da installare: wget miofile-x.y.z.tar.gz</li>\r\n <li>\r\n Decompattare l'archivio: tar -xvzf miofile-x.y.z.tar.gz</li>\r\n <li>\r\n Spostare la directory del software in $HOME/opt: mv miofile-x.y.z $HOME/opt/</li>\r\n</ol>\r\n<p>7. Gestione del db I database MySql sono attivi per tutti gli utenti. Le credenziali di accesso sono nel file $HOME/README: cat $HOME/README Esempio: Nome Utente: ms_NOMEUTENTE Password: PASSWORD (numero casuale) Database: ms_NOMEUTENTE Per accedere a MySql attraverso la shell, usare il sequente comando mysql --user=ms_NOMEUTENTE --password=PASSWORD L'accesso al db è possibile attraverso l'apposita interfaccia web di gestione raggiungibile all'url: http://students.uniparthenope.it/phpmyadmin/ ATTENZIONE: Le credenziali per l'accesso al database MySql si riferiscono esclusivamente a questo e non influiscono in alcun modo con le credenziali di accesso alla macchina server. ATTENZIONE: Nella cartella public_html vanno inseriti esclusivamente tutti i file che sono letti o scritti dall'applicazione web</p>\r\n','','filtered_html'),('node','page',0,5,5,'und',0,'Il seguente software è stato provato con successo sulla piattaforma.\r\n\r\nDrupal\r\nhttp://www.drupal.org\r\n\r\nApache Tomcat - Application container\r\nhttp://tomcat.apache.org/\r\n\r\nRestlet - Api REST framework - Java\r\nhttp://www.restlet.org/\r\n\r\nJersey - Api REST framework - Java\r\nhttp://jersey.java.net/\r\n\r\nFRAPI - Api REST framework - PHP\r\nhttp://frapi.github.com/\r\n\r\nHibernate - Persistenza di oggetti\r\nhttp://www.hibernate.org/','','filtered_html'),('node','forum',0,6,6,'und',0,'Siamo alla ricerca di un logo per questo portale!\r\nChi ha capacità artistiche e voglia di collaborare?\r\n','','filtered_html'),('node','blog',0,7,7,'und',0,'Questo è un buon punto di partenza:\r\n\r\nhttp://mobiledrupal.com/content/overview-mobile-modules-drupal\r\n','','filtered_html'),('node','page',0,8,8,'und',0,'<p><strong>Informazioni dettagliate sul "Progetto Sebeto"</strong></p>\r\n<p> </p>\r\n<p><a href=\"/?q=node/9\">Dettagli</a></p>\r\n<p><a href=\"/?q=node/10\">Il fiume Sebeto</a></p>\r\n<p><a href=\"/?q=node/2\">Persone</a></p>\r\n<hr />\r\n<p><strong>Licenze</strong></p>\r\n<p>Tutto il materiale pubblicato sul portale del Progetto Sebeto è da intendersi aderente alla filosofia Open Source / Creative Commons.</p>\r\n<p>A tale proposito si riportano le seguenti licenze in lingua originale.</p>\r\n<p> </p>\r\n<p><a href=\"http://web.uniparthenope.it/?q=node/183\">GNU General Public License</a></p>\r\n<p><a href=\"http://web.uniparthenope.it/?q=node/184\">The GNU Lesser General Public License</a></p>\r\n<p><a href=\"http://web.uniparthenope.it/?q=node/185\">The GNU Free Documentation License</a></p>\r\n<p> </p>\r\n<p>Fonte: <a href=\"http://www.gnu.org/licenses/\">http://www.gnu.org/licenses/</a></p>\r\n<hr />\r\n<p><strong>Responsabilità</strong></p>\r\n<p>Le informazioni su questo sito sono fornite così come riportate senza alcuna garanzia, espressa o implicita, incluse, e non solo, le garanzie di commerciabilità, di appropriatezza ad un particolare scopo, o di non violazione. E’ possibile che le informazioni riportate in questo sito possano contenere imperfezioni tecniche o errori di stampa per cui l'Università Parthenope, il Centro di Calcolo Elettronico ed il Responsabile Scientifico declinano ogni responsabilità. Le informazioni potranno essere modificate o aggiornate senza preavviso alcuno. Il gestore potrà, inoltre, apportare modifiche e miglioramenti ai programmi descritti nel sito in qualsiasi momento senza alcun obbligo di preavviso. I “link” contenuti nel portale comportano la possibilità di abbandonare il sito. I siti a cui si accede tramite questi link non sono sotto il controllo dell'Università, di conseguenza, il questa non è responsabile per i contenuti di tali siti collegati o di siti a loro volta in essi contenuti, o per qualsiasi cambiamento o aggiornamento fatto in tali siti.</p>\r\n<p>Gli utenti con diritto di pubblicazione di contenuti agiscono sotto la propria responsabilità.</p>\r\n<hr />\r\n<p><strong>Copyright</strong></p>\r\n<p>Tutti gli utenti del sito potranno scaricare o stampare tutto o parte del materiale contenuto in questo sito solamente per un uso personale e non commerciale, impegnandosi a non modificare o alterare in alcun modo il materiale in esso contenuto, cancellare o modificare documenti coperti dal diritto di autore o marchi di fabbrica. Tutto il materiale contenuto nel sito è messo a disposizione solamente per il perseguimento di fini conformi alla legge. Nessuna delle informazioni contenute in questo sito potrà essere copiata, distribuita o trasmessa per un uso commerciale senza il consenso espresso dell'Università e/o dei detentori della relativa proprietà intellettuale. </p>\r\n<hr />\r\n<p> </p>\r\n<p><strong>Pubblicità</strong></p>\r\n<p>A meno di specifici accordi intercorsi fra il soggetto proponente l'oggetto della pubblicità e l'Università, non è consentito inserire pubblicità nelle pagine/applicazioni web presenti nello spazio di hosting fornito da questo progetto, in applicazioni per dispositivi mobili e attraverso componenti software sviluppati come API REST.</p>\r\n<p>In particolare è fatto divieto di pubblicizzare prodotti, servizi, attività commerciali, soggetti politici, etc a mezzo banner ed altri contenuti di qualsivoglia natura come, ad esempio, Google Ads e iAds.</p>\r\n<hr />\r\n<p><strong>Applicazioni su dispositivi mobili ("Apps")</strong></p>\r\n<p>Le applicazioni sviluppate nell'ambito di questo progetto devono riportare la seguente dicitura nella relativa descrizione:</p>\r\n<p>"Applicazione realizzata presso l'Università di Napoli Parthenope e con il sostegno del Progetto Sebeto del Centro di Calcolo Elettronico della stessa università"</p>\r\n<p>Sono individuabili 3 categorie di applicazioni:</p>\r\n<ol>\r\n <li>\r\n Applicazioni sviluppate con il supporto dell'Università e pubblicate sullo Store con il profilo "Università di Napoli Parthenope". Le applicazioni di questo tipo sono di proprietà dell'Università e possono essere utilizzate in maniera gratuita e/o a pagamento. L'applicazione fa utilizzo del nome e del logo dell'Università senza procedura di richiesta autorizzazione.<br />\r\n </li>\r\n <li>\r\n Applicazioni sviluppate in maniera volontaria, in seno a progetti di ricerca o come progetti di esame da studenti, ricercatori, personale tecnico/amministrativo o collaboratori dell'Università. Le applicazioni di questo tipo sono di proprietà dei singoli sviluppatori che devono richiedere l'<strong>uso del nome e del logo dell'Università</strong> ai responsabili del progetto Sebeto e del Centro di Calcolo Elettronico che supporta il Progetto Sebeto. L'applicazione deve essere fornita in maniera GRATUITA, non deve veicolare informazioni pubblicitarie se non preventivamente autorizzate e deve essere pubblicata sullo store con un profilo intestato allo sviluppatore che fa richiesta di uso del nome e del logo dell'Università.<br />\r\n Queste applicazioni devono portare la seguente dicitura:<br />\r\n <br />\r\n <em>Applicazione realizzata presso l'Università Parthenope di Napoli e con il sostegno del Progetto Sebeto del Centro di Calcolo Elettronico della stessa Università.</em><br />\r\n </li>\r\n <li>\r\n Applicazioni sviluppate utilizzando le API uniparthenope e o altre API, ma che <strong>non fanno uso di nome e logo dell'Università</strong>. Per queste applicazioni (che non devono ricadere nei casi 1 e 2) è fatto obbligo di citare le API utilizzate attraverso una dicitura del tipo:<br />\r\n <br />\r\n <em>Questa applicazione fa utilizzo delle seguenti API:</em>\r\n <div>\r\n <em>CCMMMA/uniParthenope - Centro Meteo Campano - http://meteo.uniparthenope.it<br />\r\n Studenti/uniParthenope - Progetto Sebeto - http://students.uniparthenope.it<br />\r\n Map/Google - Google.com - http://https://developers.google.com/maps/<br />\r\n ...</em><br />\r\n <br />\r\n L'elenco delle API qui è riportato a puro titolo di esempio.</div>\r\n </li>\r\n</ol>\r\n<p>Le applicazioni di categoria 1 possono essere sia Open che Closed Source a discrezione dell'Università.<br />\r\n Le applicazioni di categoria 2 e 3 possono essere sia Open che Closed Source a discrezione dello sviluppatore o del management di sviluppo.<br />\r\n Le applicazioni di categoria 3 possono veicolare pubblicità e/o essere a pagamento a discrezione dell'Autore in maniera conforme alla licenza d'uso delle singole API utilizzate.</p>\r\n<p> </p>\r\n<p>Tutte le applicazioni devono essere conformi ai principi morali dell'Università e non devono trasgredire l'ordine di legge.</p>\r\n<p>Un regolamento più articolato per la gestione delle applicazioni è in fase di redazione.</p>\r\n<p> </p>\r\n<div>\r\n <p><strong>Application Program Interface ("API")</strong></p>\r\n</div>\r\n<div>\r\n Le API sono interfacce software stabili e documentate su servizi offerti dall'Università.</div>\r\n<div>\r\n Le API ufficiali sono accessibili tramite lo url http://api.uniparthenope.it</div>\r\n<div>\r\n Una kit di sviluppo/documentazione per le API uniparthenope è di prossimo rilascio.</div>\r\n<div>\r\n Lo sviluppo delle API seguirà una filosofia open definta "apiStore".</div>\r\n<p> </p>\r\n<p>Le API vanno rilasciate come Open Source stando attenti alla gestione delle informazioni ricoperte da privacy di cui i singoli sviluppatori sono responsabili.</p>\r\n<p>Lo sviluppo ed rilascio deve avvenire conformemente alle licenze GPL/LGPL prima indicate.</p>\r\n<p>Tutte le API devono essere conformi ai principi morali dell'Università e non devono trasgredire l'ordine di legge.</p>\r\n<p>Un regolamento più articolato per la gestione delle API è in fase di redazione.</p>\r\n<div>\r\n <p> </p>\r\n <p><strong>Applicazioni Web ("WebApp")</strong></p>\r\n</div>\r\n<div>\r\n Le WebApp sono applicazioni la cui interfaccia è costituita da un portale web il cui hosting è mantenuto da una delle macchine del Progetto Sebeto.</div>\r\n<div>\r\n </div>\r\n<div>\r\n Questa applicazioni sono accessibili attraverso lo spazio web dell'utente all'indirizzo http://students.uniparthenope.it/~[MATRICOLA]/ se su macchina Linux o http://win.uniparthenope.it/[MATRICOLA]/ se su macchina Windows.</div>\r\n<div>\r\n </div>\r\n<div>\r\n Applicazioni particolarmente meritevoli di visibilità possono essere raggiunte tramite l'indirizzo http://web.uniparthenope.it/[APPLICAZIONE]/</div>\r\n<div>\r\n Lo status di applicazione visibile tramite questa modalità è da richiedere al Responsabile Scientifico.</div>\r\n<div>\r\n </div>\r\n<div>\r\n Tutte le WebApp devono avere ben visibile un collegamento ad una pagina che riporta, oltre alle indicazioni circa l'autore o il grippo di autori, anche la seguente dicitura:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <em>Applicazione web realizzata presso l'Università Parthenope di Napoli e con il sostegno del Progetto Sebeto del Centro di Calcolo Elettronico della stessa Università.</em></div>\r\n<div>\r\n </div>\r\n<div>\r\n Nel caso l'applicazione sia stata realizzata nell'ambito di un esame, la dicitura è la seguente:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <em>Applicazione realizzata nell'ambito dell'esame di [NOME ESAME]/Prof.|Prof.ssa [NOME DOCENTE] ( CdL in [NOME DEL CORSO DI LAUREA]) nell'anno accademico [ANNO ACCADEMICO] presso l'Università Parthenope di Napoli e con il sostegno del Progetto Sebeto del Centro di Calcolo Elettronico della stessa Università.</em></div>\r\n<div>\r\n </div>\r\n<div>\r\n Infine, per applicazioni realizzate come tesi di laurea, utilizzare il seguente testo:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <em>Applicazione realizzata come lavoro di tesi in [NOME DEL CORSO DI LAUREA] dal titolo "[TITOLO DELLA TESI]" sotto la guida del Prof.|Prof.ssa [NOME DEL RELATORE] presso l'Università Parthenope di Napoli e con il sostegno del Progetto Sebeto del Centro di Calcolo Elettronico della stessa Università.</em></div>\r\n<div>\r\n </div>\r\n<div>\r\n Nel caso in cui l'applicazione disponga di ulteriore documentazione sotto forma di blog su http://students.uniparthenope.it o documenti pdf e presentazioni ppt è consigliabile aggiungere anche questi link.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <hr />\r\n <div>\r\n <p><strong>Prodotti</strong></p>\r\n </div>\r\n <div>\r\n Sono definiti come "Prodotti" i progetti sviluppati nell'ambito del progetto che hanno qualità di stabilità ed utilità di servizio. </div>\r\n <div>\r\n </div>\r\n <div>\r\n I prodotti sono raggiungibili attraverso l'url http://web.uniparthenope.it/products/</div>\r\n <div>\r\n </div>\r\n <div>\r\n E' possibile aggiungere un proprio progetto ai prodotti utilizzando l'interfaccia disponibile nel menu social.</div>\r\n <p><br />\r\n </p>\r\n</div>\r\n<p> </p>\r\n','','filtered_html'),('node','page',0,9,9,'und',0,'<p><strong>1. Introduzione</strong></p>\r\n<p>Il progetto Sebeto ha come finalità la creazione di un’infrastruttura informatica in grado di fornire risorse produttive per valorizzare i prodotti applicativi di tipo web application provenienti dalle attività didattiche avanzate degli studenti di ogni grado (triennale, magistrale, dottorato) dell’Università di Napoli Parthenope, tramite il supporto alla produzione e gestione di portali web. Il progetto tende a creare un sistema completo e integrato per la pubblicazione su internet con lo scopo di aumentare la visibilità dei prodotti sia a livello di Ateneo sia, quando opportuno, a livello esterno.</p>\r\n<p><strong>2. Progettazione</strong></p>\r\n<p>I criteri progettuali adottati fanno leva su un analogo progetto sperimentale avviato a latere del corso di Tecnologie Web edizione 2010-2011, Corso di Laurea in Informatica (triennale) e Informatica Applicata (magistrale), Facoltà di Scienze e Tecnologie.</p>\r\n<p><strong>2.1 Analisi delle funzionalità</strong></p>\r\n<p>I servizi offerti tramite la realizzazione del progetto Sebeto sono così sintetizzabili:</p>\r\n<ol>\r\n <li>\r\n Pubblicazione di siti web accessibile tramite la connessione di ateneo</li>\r\n <li>\r\n Supporto tecnologico open source (Apache, PHP, MySQL)</li>\r\n <li>\r\n Supporto tecnologico proprietario (IIS, Asp.NET, SQL Server)</li>\r\n <li>\r\n Strumenti web based per la gestione degli spazi web (myPHPAdmin, aspNetEnterprise Manager, Accesso remoto ai file) 5. Sistema per la condivisione di file (iFolder)</li>\r\n</ol>\r\n<p><strong>2.2 Analisi dei requisiti</strong></p>\r\n<p>I seguenti requisiti funzionali devono essere garantiti dalla realizzazione del progetto</p>\r\n<ol>\r\n <li>\r\n Affidabilità: il sistema deve essere costituito da componenti hardware dedicate alla produzione e non al funzionamento occasionale. Deve essere garantito il backup elettrico, il mantenimento dei dati e l’ambiente idoneo al funzionamento del sistema.</li>\r\n <li>\r\n Sicurezza: il sistema di autenticazione degli utenti deve essere integrato con quello di ateneo sia per quanto riguarda l’accesso come personale docente e non docente, sia riguardo a quello come studente.</li>\r\n <li>\r\n Efficacia/Efficienza: hardware e connessione di rete devono garantire il funzionamento conveniente del sistema</li>\r\n <li>\r\n Compatibilità: gli utenti devono poter produrre le loro creazioni usando architetture di tipo libero o di tipo proprietario</li>\r\n</ol>\r\n<p><strong>3. Hardware e software necessari </strong></p>\r\n<p>L’architettura hardware è costituita da 3 server di tipo rack interconnessi tramite network ad alte prestazioni alla rete di ateneo ed opportunamente dimensionati in modo da garantire le funzionalità offerte in maniera ottimale:</p>\r\n<ol>\r\n <li>\r\n Server web Apache/PHP/MySQL: 2 CPU Intel Xeon 6 core, 48 GigaRAM, HD di sistema, 4 HD Sata da 2 TB configurati in raid 10, Sistema operativo Linux Server, stack FOSS</li>\r\n <li>\r\n Server web IIS/ASP.NET/SQLServer: 2CPU Intel Xeon 6 core, 48 GigaRAM, HD di sistema, 4 HD Sata da 2 TB configurati in raid 10, Sistema operativo Windows Server, stack IIS</li>\r\n <li>\r\n Server iFolder: 2 CPU Intel Xeon 6 core, 48 Giga RAM, Hard disk di sistema, 8 HD Sata da 3 TB configurati in raid 10, Sistema operativo Linux Server, iFolder</li>\r\n</ol>\r\n<p><strong>Caratteristiche software:</strong></p>\r\n<ol>\r\n <li>\r\n Uso di software open source (tranne nel caso del server 2), uso limitato della personalizzazione, integrazione nei servizi di ateneo.</li>\r\n <li>\r\n Autenticazione integrata basata sui servizi di ateneo (es. RADIUS)</li>\r\n <li>\r\n Domini web del tipo http://web.uniparthenope.it/[matricola|utentemail]/[win|linux] . Landing gestito dal server 1 ed eventuale redirect sul server 2.</li>\r\n</ol>\r\n<p>Funzionamento di default definibile dall’utente attraverso pannello di controllo. Possibilità, previo autorizzazione del CdC a promozione a dominio di terzo livello con nome simbolico. Esempio: Lo studente di matricola 111111111 crea un’applicazione web di interesse di ateneo.<br />\r\n Attraverso apposito modulo interattivo chiede di poter attivare l’applicazione xyz in modo tale che http://xyz.uniparthenope.it punta a http://web.uniparthenope.it/1111111111/linux/ 4. Gestione delle quote disco per server 1, 2 e 3</p>\r\n<p><strong>4. Vantaggi e produttività</strong></p>\r\n<p>La disponibilità di un’infrastruttura di questo tipo consente di innescare un circolo virtuoso di produttività grazie alla possibilità per gli studenti di mostrare i propri prodotti sulla rete. tramite il sistema di autenticazione integrato e la scrittura di una policy che gli utenti devono accettare per usufruire dei servizi, si trasferisce la responsabilità dei contenuti dal fornitore del servizio ai singoli produttori di materiale interattivo (cfr. recente giurisprudenza).<br />\r\n La possibilità di usufruire di un sistema di backup personale semplice e interattivo basato su iFolder consente di diminuire l’uso massiccio attualmente fatto del servizio parzialmente libero denominato Dropbox. Questo servizio, per quanto caratterizzato da una grande qualità, è pur sempre basato sul trasferimento di documenti su di un sito esterno.<br />\r\n L’esperienza maturata nella sperimentazione di un analogo servizio di fornitura di spazio web è forte di decine di interessanti produzioni da parte degli studenti (attualmente consultabili attraverso il portale http://sebeto.uniparthenope.it ).</p>\r\n<p><strong>5. Conclusioni e sviluppi futuri</strong></p>\r\n<p>Il progetto consente lo sviluppo e la disponibilità su internet dei prodotti software più innovativi prodotti dagli studenti nelle loro attività didattiche, stimolando gli studenti di ogni area culturale alla competizione e al miglioramento delle proprie competenze.<br />\r\n Un’evoluzione futura del sistema è la migrazione su di un cluster altoprestazionale ad architettura cloud per la gestione dinamica e a richiesta delle necessità elaborative. In questo modo gli utenti dell’Ateneo potrebbero disporre di macchine virtuali sempre in funzione, accessibili da ogni parte del mondo.<br />\r\n Questa evoluzione porterebbe ai seguenti risparmi:</p>\r\n<ul>\r\n <li>\r\n eliminazione dei computer personali di tipo desktop,</li>\r\n <li>\r\n eliminazione delle aule didattiche,</li>\r\n <li>\r\n centralizzazione dell’elaborazione con conseguente risparmio energetico (alimentazione, raffreddamento);</li>\r\n <li>\r\n possibilità di consolidamento delle macchine virtuali e spegnimento dei nodi non utilizzati.</li>\r\n</ul>\r\n<p>Infine, è importante sottolineare che il progetto contribuisce a migliorare la visibilità dell’Università degli Studi di Napoli Parthenope in campo nazionale e anche in campo internazionale.</p>\r\n','','full_html'),('node','page',0,10,10,'und',0,'<p> </p>\r\n<div>\r\n <img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706081718.jpg\" /></div>\r\n<p> </p>\r\n<p>Sebeto era il nome del fiume che bagnava l'antica Neapolis.</p>\r\n<p>Il suo antico nome greco, tramandatoci sul verso di alcune monete coniate fra il V secolo a.C. e il IV secolo a.C., era Sepeithos, traducibile come "andar con impeto", probabile riferimento al corso irruento del fiume.</p>\r\n<p>Storia e leggenda si fondono nella notte dei tempi: la greca Neapolis era divisa da Partenope da un fiume, forse navigabile, "fra lo monte S. Erasmo e lo monte di Patruscolo".</p>\r\n<p>La foce del fiume era sull'area dell'attuale piazza Municipio.</p>\r\n<p>Durante l’assedio romano (327 a.C.), il console Publilio Filone accampò il suo esercito fra Neapolis e Partenope alla foce, del fiume Sebeto, mentre il fiume è rappresentato come divinità nella fontana monumentale di Largo Sermoneta.</p>\r\n<p>La ricerca del Sebeto ha appassionato il Petrarca e tutt’oggi rappresenta un enigma irrisolto.</p>\r\n<p>Storia, leggenda, creatività, comunicazione, luoghi cari alla storia e all’eredità culturale dell’Ateneo hanno portato a scegliere in Sebeto il nome del progetto.</p>\r\n<p><a href=\"/sites/default/files/images/20122706082142.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706082142.jpg\" /></a></p>\r\n','','full_html'),('node','page',0,11,11,'und',0,'<p>Strumenti collaborativi a disposizione degli utenti registrati.</p>\r\n<p>Utilizzare lo strumento di ricerca per attivare relazioni di collaborazione ed amicizia fra utenti.</p>\r\n<p><strong>Contenuti:</strong></p>\r\n<ul>\r\n <li>\r\n <a href=\"/?q=node/add/new\">Aggiungi una notizia</a> (Solo membri staff e faculty)</li>\r\n <li>\r\n <a href=\"/?q=node/add/event\">Aggiungi un evento</a> (Solo membri staff e faculty)</li>\r\n <li>\r\n <a href=\"/?q=node/add/book\">Aggiungi un libro</a> (Solo membri staff e faculty)</li>\r\n <li>\r\n <a href=\"/?q=node/add/article\">Aggiungi un articolo</a> (Solo membri autori, staff e faculty)</li>\r\n <li>\r\n <a href=\"/?q=node/add/poll\">Aggiungi un sondaggio</a> (Solo membri staff e faculty)</li>\r\n</ul>\r\n<p> </p>\r\n<p><strong>Collaborazione:</strong></p>\r\n<ul>\r\n <li>\r\n <a href=\"/?q=messages\">Messaggi privati</a></li>\r\n <li>\r\n <a href=\"/?q=forum\">Il Forum</a></li>\r\n <li>\r\n <a href=\"/?q=blog\">I blog</a></li>\r\n</ul>\r\n<p> </p>\r\n<p><strong>Condivisione:</strong></p>\r\n<ul>\r\n <li>\r\n <a href=\"http://box.uniparthenope.it\">OwnCloud</a> di Ateneo (Autenticazione wifi/posta) - Servizio simile a Dropbox</li>\r\n <li>\r\n Spazio web degli utenti <a href=\"/?q=userhomes\">http://students.uniparthenope.it/?q=userhomes</a></li>\r\n</ul>\r\n','','full_html'),('node','book',0,15,15,'und',0,'Application Program Interface per la mobilità a Napoli','','filtered_html'),('node','book',0,15,16,'und',0,'Application Program Interface per la mobilità a Napoli\r\n\r\nIntroduction\r\n\r\nVersion\r\n\r\nv1.0\r\n\r\nAuthor\r\n\r\nAmbrosio Luigia, Esposito Lazzaro, Lucarelli Francesca, Taddeo Daniela\r\n\r\nDescription\r\n\r\nThe following document describe the RESTful API of the UniBusAPI service.\r\n\r\nAuthentication Schemes\r\n\r\nBasic Authentication\r\nOAuth\r\nBase URI\r\n\r\nhttp://api.uniparthenope.it:10018','','filtered_html'),('node','book',0,15,18,'und',0,'Application Program Interface per la mobilità a Napoli\r\n\r\nVersione: v1.0\r\n\r\nAutori: Ambrosio Luigia, Esposito Lazzaro, Lucarelli Francesca, Taddeo Daniela','','filtered_html'),('node','book',0,15,20,'und',0,'Application Program Interface per la mobilità a Napoli\r\n\r\nVersione: v1.0\r\n\r\nAutori: Ambrosio Luigia, Esposito Lazzaro, Lucarelli Francesca, Taddeo Daniela','','filtered_html'),('node','book',0,15,34,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\">\r\n \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n\r\n\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\n\r\n\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\n\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\n\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\n\r\npre {\r\n font: normal 100% monospace; \r\n}\r\n\r\n\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n\r\n\r\n\r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n\r\na{\r\n text-decoration: none;\r\n}\r\n\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n</head>\r\n<body>\r\n<h1> UniBUS </h1>\r\n<a name=\"introduction\"></a>\r\n<h4>Version</h4>\r\n<p>v1.0</p>\r\n<h4>Autori</h4>\r\n<p>Ambrosio Luigia, Esposito Lazzaro, Lucarelli Francesca, Taddeo Daniela</p>\r\n<h4>Servizi per la mobilità a Napoli</h4>\r\n<h4>Base URI</h4>\r\n<p>\r\n<a xmlns=\"\" href=\"http://api.uniparthenope.it:10018\">http://api.uniparthenope.it:10018</a>\r\n</p>','','full_html'),('node','book',0,15,35,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h1> UniBUS </h1>\r\n<a name=\"introduction\"></a>\r\n<h4>Version</h4>\r\n<p>v1.0</p>\r\n<h4>Autori</h4>\r\n<p>Ambrosio Luigia, Esposito Lazzaro, Lucarelli Francesca, Taddeo Daniela</p>\r\n<h4>Servizi per la mobilità a Napoli</h4>\r\n<h4>Base URI</h4>\r\n<p>\r\n<a xmlns=\"\" href=\"http://api.uniparthenope.it:10018\">http://api.uniparthenope.it:10018</a>\r\n</p>','','full_html'),('node','book',0,17,19,'und',0,'Application Program Interface per l\'interazione con i dati prodotti dal CCMMMA.','','filtered_html'),('node','book',0,17,76,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h1>CCMMMA API</h1>\r\n<a name=\"introduction\"></a>\r\n<h4>Version</h4>\r\n<p>v1.0</p>\r\n<h4>Autori</h4>\r\n<p>Roberto Melfi, Valerio Viglione</p>\r\n<h4>Previsioni meteo a cura del Centro Campano per il Monitoraggio e la Modellistica Marina e Atmosferica</h4>\r\n<h4>Base URI</h4>\r\n<p>\r\n<a xmlns=\"\" href=\"http://api.uniparthenope.it:9990\">http://api.uniparthenope.it:9990</a>\r\n</p>','','filtered_html'),('node','book',0,17,77,'und',0,'<p> </p>\r\n<p> </p>\r\n<p>\r\n <meta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\" />\r\n</p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n</p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n <script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n <style type=\"text/css\">\r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n} </style>\r\n <script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script></p>\r\n<h1>\r\n CCMMMA API</h1>\r\n<p><a name=\"introduction\"></a></p>\r\n<h4>\r\n Version</h4>\r\n<p>v1.0</p>\r\n<h4>\r\n Autori</h4>\r\n<p>Roberto Melfi, Valerio Viglione</p>\r\n<h4>\r\n Previsioni meteo a cura del Centro Campano per il Monitoraggio e la Modellistica Marina e Atmosferica</h4>\r\n<h4>\r\n Base URI</h4>\r\n<p><a href=\"http://api.uniparthenope.it:9990\" xmlns=\"\">http://api.uniparthenope.it:9990</a></p>\r\n','','full_html'),('node','article',0,18,21,'und',0,'“Immagina una grande sala, più o meno come un teatro, tranne per il fatto che le gallerie sono tutte intorno, anche nello spazio usualmente occupato dal palcoscenico. Sulle pareti di questa sala è dipinta la mappa del globo terrestre, dove il soffitto rappresenta le regioni polari del nord, l’Inghilterra è circa all’altezza della prima galleria, quindi, più verso il basso i tropici, l’Australia e, infine, l’Antartico nel livello inferiore.\r\n\r\nOgnuno dei posti delle gallerie è occupato da un calcolatore, una miriade di calcolatori sono al lavoro sul tempo atmosferico, relativo alla zona della mappa dove ciascuno di essi risiede e solo su quella occupandosi o di una singola equazione o di una parte di un’equazione. \r\n\r\nIl lavoro di ciascuna regione è coordinato da un calcolatore di rango superiore. Numerose piccole lampadine visualizzano istantaneamente i valori calcolati da ciascun calcolatore, così che quelli adiacenti possano leggerli in modo da mantenere la comunicazione dal nord al sud della mappa.\r\n\r\nDal pavimento si solleva un piedistallo alto circa la metà della sala, dotato di un pulpito dove risiede chi coordina l’intera operazione di calcolo grazie all’aiuto di molti assistenti che fanno da messaggeri. Uno dei suoi compiti è fare sì che la velocità di soluzione delle equazioni, relative ad ogni parte del globo, sia uniforme.\r\n\r\nIl coordinatore agisce come un direttore di orchestra, solo che gli strumenti che dirige sono strumenti per il calcolo. Ad esempio potrebbe utilizzare un raggio di luce blu per indicare quelle regioni che sono in ritardo e che devono aumentare la velocità di calcolo e uno di luce rossa per ridurre la velocità delle regioni troppo in anticipo, nella soluzione delle equazioni.\r\n\r\nQuattro impiegati di maggiore esperienza raccolgono i dati del tempo previsto man mano che questi vengono prodotti e, attraverso un sistema di posta pneumatica, li inviano in una sala dove regna il silenzio, dove vengono codificati e trasmessi perché vengano utilizzati. Quindi, i dati prodotti vengono conservati per un uso futuro.”\r\n\r\nTali, o di tal genere, i pensieri dell’eclettico scienziato inglese Luwis Fry Richardson, nato nell’ottobre del 1881 e morto nel settembre del 1953, passato alla storia come l’inventore delle previsioni meteorologiche mediante processi numerici, come mostrato nel suo articolo “Weather prediction by numerical process” del 1922. Leggere il suo scritto è entusiasmante: anticipa di decenni l’architettura di un supercalcolatore individuandone le componenti fondamentali ovvero i nodi di calcolo, la rete di comunicazione, i sistemi di controllo e sincronizzazione, la memorizzazione dei risultati per un uso futuro. Richardson, in maniera completamente innovativa, propone le previsioni meteo, come la soluzione delle equazioni differenziali, applicate alla fluidodinamica atmosferica, superando l’approccio puramente storico-statistico dell’analisi delle serie temporali, ancor oggi non caduto totalmente in disuso. Richardson, convinto e fervente pacifista, tanto da essere ritenuto ineleggibile agli onori accademici, interromperà i suoi studi sulla meteorologia computazionale, distruggendo i lavori ancora in attesa di pubblicazione, resosi conto dell’importanza strategica della stessa, durante gli eventi bellici. \r\n\r\nCome tutti i geni innovatori della storia, Richardson soffre l’anacronismo tecnologico che costringe le sue intuizioni a rimanere tali fino a pochi anni prima della sua morte, quando un evento di proporzioni epocali sta per verificarsi, per porre fine ad una delle guerre più sanguinose della storia, in termini di perdite civili: è necessaria una perfetta pianificazione, per creare ed espandere una testa di ponte alleata nel territorio a nord della Francia e fiaccare, e quindi ridurre all’impotenza, le forze del Reich nell’Europa centrale. Per far ciò, è necessaria abilità bellica, sono necessarie perfette previsioni meteo, per l’uso massiccio di paracadutisti e di mezzi anfibi. La data dell’alba del 6 giugno 1944 non può essere scelta con un lancio di dadi per quello che passerà alla storia come lo “Sbarco in Normandia”, l’operazione “Overlord”, il D-Day. E’ necessario supercalcolo e questa volta, circa 22 anni dopo l’articolo di Richardson, questa volta la tecnologia esiste, è disponibile ed è stata già utilizzata in altri contesti.\r\n\r\nJohn von Neumann, matematico ungherese, nato a Budapest del 1903 e trasferitosi negli Stati Uniti su invito dell’università di Princeton nel 1930, a partire dallo scoppio della seconda guerra mondiale si dedica alla matematica applicata ed alla creazione di macchine per il calcolo automatico. E’ considerato il padre dell’architettura dei calcolatori che porta ancor oggi il suo nome e che, in quegli anni, vede l’applicazione pratica nella creazione del mastodontico Electronic Numerical Integrator And Computer (ENIAC), il primo computer della storia. Presentato ufficialmente 1946, costato una cifra esorbitante e fortissimamente voluto dalle alte gerarchie militari, nel corso del suo processo evolutivo è stato ampiamente utilizzato durante il conflitto, inizialmente per i calcoli balistici, poi per la ricerca della soluzione al codice enigma, per il progetto Manhattan e, quindi, per produrre le previsioni meteo, al fine di pianificare l’invasione per la liberazione del territorio francese.\r\n\r\nRichardson morì nel 1953, dopo aver visto i propri studi di meteorologia computazionale applicati in primis per scopi bellici, ma, purtroppo, senza la soddisfazione di saperlo in vita, aveva raggiunto un altro primato: non solo il metodo di calcolo descritto nel 1922 risultava innovativo in quanto tale, ma anche l’approccio computazionale superava la cosiddetta architettura von Neumann. Aveva applicato, per la prima volta, in modo consapevole il calcolo parallelo, ma quelle che gli erano mancate erano state unicamente le alte prestazioni.\r\n\r\nLeonard Kleinrock, nel 1962 scrive nella sua tesi di dottorato che, probabilmente, assisteremo alla diffusione dei fornitori di risorse computazionali i quali, così come avviene per le linee elettriche e telefoniche, forniranno servizi per le case e gli uffici, distribuiti sul territorio nazionale anticipando gli accadimenti nel mondo del supercalcolo di quasi quaranta anni.\r\n\r\nMa, sul fronte del calcolo ad alte prestazioni, è il 1961 un anno di importanza storica, perché Seymour Cray progetta il primo supercomputer della storia, il CDC6600, per conto della Control Data Corporation, anche se solo nel 1982 viene presentato il CRAY X-MP, progettato dallo stesso Cray, ormai a capo dell’omonima azienda: è il primo computer dotato di multiprocessori, è effettivamente quello che oggi viene chiamato un calcolatore parallelo ad alte prestazioni e le previsioni meteo sono state una delle prime applicazioni progettate per funzionare, sfruttando appieno la potenza di calcolo disponibile. Finalmente, la domanda e l’offerta di potenza computazionale s’ incontrano, con soddisfazione di risultati.\r\n\r\nE’ l’inizio delle previsioni meteorologiche computazionali operazionali. La figura del meteorologo, analizzatore delle serie temporali e di segni atmosferici, comincia ad essere sostituita dall’interpretatore dei risultati prodotti dai modelli matematici. Presso la Pensylvania State University, nel corso degli anni 70, viene sviluppato il modello MM5. Il Mesoscale Model 5 è l\'ultimo di una serie di modelli per simulazione su mesoscala, sviluppati da Anthes e da Warner, che implementano, in maniera tecnologicamente efficace ed efficiente, quanto immaginato da Richardson all’inizio del secolo, utilizzando un approccio seriale.\r\nNel corso degli anni ’90, le architetture parallele si diffondono in ogni ramo applicativo scientifico, ingegneristico ed economico, così come aumenta l’offerta dei grandi produttori di macchine da calcolo parallelo ad alte prestazioni, come le Thinking Machines o l’IBM SP: tanta potenza, disponibile a costo estremamente elevato, costringe lo sviluppo di applicazioni di modellistica atmosferica ed oceanografica ad essere possibile solo a grandi enti di ricerca, tipicamente statunitensi, come la Argonne National Laboratory, dove vengono realizzate le librerie che permettono la comunicazione fra i processi residenti su differenti processori e come l’University Corporation for Atmosphere Research e il National Center for Atmospheric Research.\r\n\r\n In questo contesto, nella metà degli anni ’90, John Michalakes implementa la versione parallela del modello MM5, denominata MPP, grazie allo sviluppo di una libreria software che permette la decomposizione del dominio spaziale, su cui effettuare i calcoli di previsioni meteo, in aree ciascuna affidata ad un nodo di calcolo, mentre un nodo principale ne coordina le operazioni, e la sincronizzazione e ne raccoglie i risultati. Il sogno di Richardson viene così realizzato.\r\n\r\nRimane il problema del costo della potenza di calcolo. Nella prima metà degli anni ’90, l’acquisto di un calcolatore parallelo rimane ancora fuori della portata della maggior parte delle università e centri di ricerca, ma un eroe leggendario è destinato a cambiare la storia e, per certi versi, a salvare il mondo. E’ il 1994, quando alla NASA Donald Becker pensa di riutilizzare dei comuni personal computer, non più al top delle performance, per creare un sistema di calcolo parallelo con componenti completamente commerciali, esplorando la possibilità dell’high performance computing a basso costo. L’idea è tanto semplice quanto geniale: utilizzare comuni PC, come nodi di calcolo e nodi di controllo, ed una rete ad alte prestazioni per la comunicazioni fra le differenti componenti. Il sistema operativo scelto per questo tipo di applicazione è Linux e Beowulf , il leggendario eroe del poema epico inglese è il nome scelto per il progetto, il cui sviluppo viene preso presto in carico dalla comunità internazionale interessata, al calcolo scientifico. E’ la nascita dell’era delle previsioni meteorologiche a scala locale, che possono essere ottenute aumentando localmente la risoluzione del calcolo e, grazie alla disponibilità di high performance computing a costo accessibile, essere prodotte per ricerca o presso gli enti preposti alla gestione del territorio.\r\n\r\nNello stesso periodo dell’ascesa dei sistemi di supercalcolo di tipo Beowulf, un altro evento epocale cambia la storia dell’umanità tutta: le autostrade digitali non sono più un’oscura voce dei programmi dei governi di oltreoceano, ma Internet diventa economica, accessibile, veloce e stabile. Finisce l’era del dove ed inizia quella del quando, il mondo è a portata di click e, quindi, strumenti di acquisizione meteo, geograficamente distribuiti, centri di raccolta ed elaborazioni di dati satellitari, enti produttori di dati meteorologici ricavati da modelli, come l’European Center for Mesoscale Weather Forecast di Reading, nei pressi di Londra, sono finalmente interconnessi e capaci di elaborazioni operazionali con scala temporale, prossima al tempo reale. Grazie alla migliorata comprensione dei fenomeni atmosferici, ed ai legami con la dinamica oceanografica e biosferica, alla maggiore capacità dei sensori meteo, montati su piattaforme orbitali o aereotrasportati, grazie all’avanzamento nella teoria e nelle applicazioni dell’elaborazione dei dati meteo, all’interconnessione veloce di ciascuna di queste componenti, al calcolo distribuito su elaboratori geograficamente distanti ed al calcolo parallelo ad alte prestazioni, con il nuovo millennio, si raggiunge il traguardo dell’affidabilità previsionale delle 72 ore, ma, nel contempo, pressano due richieste da parte della comunità delle scienze applicate alla meteorologia: l’accoppiamento fra modelli differenti e la validazione degli stessi. Ancora una volta, risolte già da tempo le problematiche di tipo teorico, rimane ancora la necessità di potenza computazione.\r\n\r\nE’ il 1998 quando Ian Foster e Carl Kesselman, nell’ormai storico libro “The Grid: Blueprint for a New Computing Infrastructure “scrivono che una griglia computazionale è un’infrastruttura hardware e software che provvede ad un indipendente, consistente, pervasivo ed economico accesso a risorse computazionali ad alte prestazioni”. Il termine Grid è solitamente riferito alla linea di distribuzione elettrica: quello che Leonard Kleinrock, ritenuto uno dei padri di internet, aveva anticipato in maniera prematura nel 1962 diviene realtà alla fine del secolo. Successivamente, nel 2000, insieme a Steve Tuecke, nell’articolo “The Anatomy of the Grid”, i padri fondatori del Grid Computing focalizzano l’attenzione sul concetto di condivisione delle risorse ,non riduttivamente come scambio di file, ma, piuttosto,come accesso diretto al sistema di calcolo, al software, ai dati e agli strumenti in un ambiente di problem solving collaborativo, facente uso di strategie di ricerca ed allocazione dinamica delle risorse disponibili. In questo contesto la condivisione deve essere necessariamente controllata, in modo da garantire affidabilità e sicurezza e questo può essere fatto attraverso la creazione di organizzazioni virtuali trasversali ad enti, persone fisiche o organizzazioni reali. \r\n\r\nE’ la nascita dell’approccio collaborativo alle scienze computazionali e, ancora una volta, le applicazioni meteo rappresentano un ottimo piano di test per la nuova tecnologia e, viceversa, per la modellistica meteorologica il Grid Computing, come calcolo distribuito ad un più alto livello evolutivo, è la soluzione necessaria alle più pressanti richieste di accoppiamento e validazioni di modelli.\r\n\r\nIn un approccio a blocchi, è intuitivo pensare al modello atmosferico come l’ideale forzante per un modello di dinamica della circolazione oceanica ed ad uno per la propagazione delle onde marine indotte dal vento, mentre, contestualmente, lo stesso modello meteo può fornire forzanti ad un modello di evoluzione delle terre emerse, in termini di uso del suolo e conseguente attività biologica. In questo stesso contesto, possono essere inseriti modelli di tipo socioeconomico che permettono di valutare l’impatto antropico sul tempo atmosferico, sull’inquinamento dell’aria e dell’acqua. Due modelli si dicono accoppiati se un primo produce i dati utilizzati per inizializzare e controllare il secondo. L’accoppiamento può essere effettuato dopo che il primo modello ha prodotto i risultati, oppure stesso a livello di equazioni. In ambo i casi la necessità di calcolo da alte prestazioni cresce ed è necessaria una massiccia parallelizzazione al fine di rendere il problema risolvibile in tempi utili.\r\n\r\nLa validazioni dei modelli può essere effettuata mediante un’analisi statistica e da un confronto dei dati prodotti in previsione con quelli prodotti in seguito all’inizializzazione dello stesso modello con i dati successivamente acquisiti e relativi al mondo reale. Tuttavia, per poter avere un’indicazione della qualità della previsione in tempo reale e non a posteriori è necessario ripetere la previsione numerose volte, perturbando i dati di inizializzazione ed effettuando un’analisi di sensibilità sui risultati. Anche in questo caso, la necessità di calcolo parallelo ad alte prestazioni aumenta in maniera consistente per il gran numero di simulazioni da dover lanciare contemporaneamente.\r\n\r\nIl Grid Computing, grazie all’accesso sistematico alle risorse computazionali alto performanti, consente di risolvere queste problematiche in maniera efficace ed efficiente come dimostrato nel 2003 da Robert Jacob, Ian Foster ed altri nell’articolo “Automating Climate Science…”.\r\n\r\nL’accuratezza in termini spaziali, temporali e di affidabilità delle previsioni meteorologiche è indissolubilmente legata alle capacità computazionali disponibili, che risultano, quindi, d’ importanza strategica sia dal punto di vista del governo nazionale che del management locale di una qualsiasi nazione e forti sono stati gli investimenti in termini scientifici ed economici per fare si che la scala dell’affidabilità passasse dalle 72 ore d’ inizio millennio alle 144/150 attuali. Infiniti sono gli ambiti applicativi delle previsioni meteorologiche a scala locale, in cui l’alta risoluzione spaziale e temporale è un requisito principe, come nel caso della previsioni di eventi estremi, ad esempio alluvioni e mareggiate,e di manifestazioni sportive di estrema rilevanza economica per pubblico, per sponsor ed indotto tecnico- scientifico, come, ad esempio, la leggendaria Americas’s Cup, in cui ancora le possibilità offerte dal supercalcolo non sono state ancora pienamente sfruttate.\r\n\r\nAttualmente, le problematiche a lunga scala temporale, ovvero quelle legate alle previsione climatica, iniziano ad essere intimamente legate a quelle meteorologiche, a causa dei cambiamenti globali e all’incremento dei fenomeni estremi, anche in zone storicamente lontane da queste problematiche. In questo caso la richiesta di affidabilità computazionale, oltre che di pure prestazioni, è ancora più pressante poiché le simulazioni non coinvolgono solo giorni, ma mesi, anni, centinaia di anni e millenni.\r\nRichardson, padre dei metodi risolutori alla base della meteorologia computazionale, sarebbe stato sicuramente contento di sapere che il suo approccio è l’attuale chiave di volta per salvare il mondo piuttosto che per distruggerlo e… perché no, portare a casa anche la Vecchia Brocca. \r\n','','filtered_html'),('node','book',0,20,23,'und',0,'<p>Application Program Interface per il servizio studenti dell'Università di Napoli Parthenope</p>\r\n','','filtered_html'),('node','book',0,20,164,'und',0,'<p> </p>\r\n<p> </p>\r\n<p>\r\n <meta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\" />\r\n</p>\r\n<p> </p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n</p>\r\n<p> </p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n <script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n <style type=\"text/css\">\r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n\r\n\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\n\r\n\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\n\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\n\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\n\r\npre {\r\n font: normal 100% monospace; \r\n}\r\n\r\n\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n\r\n\r\n\r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n\r\na{\r\n text-decoration: none;\r\n}\r\n\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n} </style>\r\n <script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script></p>\r\n<p> </p>\r\n<p> </p>\r\n<p>\r\n <title></title>\r\n</p>\r\n<div id=\"watermark\">\r\n <div id=\"watermark-text\">\r\n <span>Uniparthenope Services API</span><span>v1.0</span></div>\r\n</div>\r\n<div class=\"shadow\" id=\"sidemenuopener\">\r\n <div id=\"sidemenuopenerbox\">\r\n <a class=\"button\" href=\"#\" id=\"menuopener\">TOC</a></div>\r\n <ol id=\"sidemenu\">\r\n <li>\r\n <a href=\"#\" id=\"lN65569\">[+] </a> <a href=\"#N65569\">Student Services</a>\r\n <ol id=\"XN65569\">\r\n <li>\r\n <a href=\"#N65876\">Book an exam</a></li>\r\n <li>\r\n <a href=\"#N65954\">Delete booked exam</a></li>\r\n <li>\r\n <a href=\"#N65580\">Get a study planning of a student</a></li>\r\n <li>\r\n <a href=\"#N65728\">Get available exams for reservation</a></li>\r\n <li>\r\n <a href=\"#N65802\">Get Booked exams</a></li>\r\n <li>\r\n <a href=\"#N65654\">Get passed exams of a student</a></li>\r\n </ol>\r\n </li>\r\n <li>\r\n <a href=\"#\" id=\"lN66033\">[+] </a> <a href=\"#N66033\">Teacher Services</a>\r\n <ol id=\"XN66033\">\r\n <li>\r\n <a href=\"#N66196\">Delete Exam date </a></li>\r\n <li>\r\n <a href=\"#N66118\">Get Booked Students </a></li>\r\n <li>\r\n <a href=\"#N66044\">Get Exam Dates </a></li>\r\n </ol>\r\n </li>\r\n </ol>\r\n</div>\r\n<h1>\r\n Uniparthenope Services API</h1>\r\n<p><a name=\"introduction\"></a></p>\r\n<h2>\r\n Introduction</h2>\r\n<h4>\r\n Version</h4>\r\n<p>v1.0</p>\r\n<h4>\r\n Author</h4>\r\n<p>R. Melfi, V. Viglione</p>\r\n<h4>\r\n Description</h4>\r\n<p>The following document describe the RESTful API of the Uniparthenope Service.</p>\r\n<h4>\r\n Authentication Schemes</h4>\r\n<p> </p>\r\n<ul>\r\n <li>\r\n Basic Authentication</li>\r\n <li>\r\n OAuth</li>\r\n</ul>\r\n<p> </p>\r\n<h4>\r\n Base URI</h4>\r\n<p><a href=\"http://api.uniparthenope.it:9998\" xmlns=\"\">http://api.uniparthenope.it:9998</a></p>\r\n<p><a name=\"index\"></a></p>\r\n<h2>\r\n Index of Resources and Operations</h2>\r\n<ol>\r\n <li xmlns=\"http://www.w3.org/1999/xhtml\">\r\n <a href=\"#N65569\">Student Services</a>\r\n <ol>\r\n <li>\r\n <a href=\"#N65876\">Book an exam</a></li>\r\n <li>\r\n <a href=\"#N65954\">Delete booked exam</a></li>\r\n <li>\r\n <a href=\"#N65580\">Get a study planning of a student</a></li>\r\n <li>\r\n <a href=\"#N65728\">Get available exams for reservation</a></li>\r\n <li>\r\n <a href=\"#N65802\">Get Booked exams</a></li>\r\n <li>\r\n <a href=\"#N65654\">Get passed exams of a student</a></li>\r\n </ol>\r\n </li>\r\n <li>\r\n <a href=\"#N66033\">Teacher Services</a>\r\n <ol>\r\n <li>\r\n <a href=\"#N66196\">Delete Exam date </a></li>\r\n <li>\r\n <a href=\"#N66118\">Get Booked Students </a></li>\r\n <li>\r\n <a href=\"#N66044\">Get Exam Dates </a></li>\r\n </ol>\r\n </li>\r\n</ol>\r\n<p><a name=\"N65569\" xmlns=\"\"></a></p>\r\n<h2 class=\"resource\">\r\n 1. Student Services</h2>\r\n<h4>\r\n Description</h4>\r\n<p>This resource represents exam services of a student.</p>\r\n<h4>\r\n Resource URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/</pre>\r\n<dl>\r\n</dl>\r\n<p><a name=\"N65876\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.1 Book an exam</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A POST request allow to make an exam reservation. Parameters required are student matriculation number, password and exam id. Example of use: curl - X POST –d "user=value1" –d "password=value2" -d "id=value3" http://api.uniparthenope.it:9998/student/exams/booking.json where value1 is a student matriculation number, value2 is a student password, value3 is a ID number of exam (get ID from available exams).</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/booking</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">POST </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n "id" : "xxxxxxx"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number, password and id exam (get ID from available exams).</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 231 custom</dt>\r\n <dd>\r\n Exam unavailable to book.</dd>\r\n <dt class=\"statuscode\">\r\n 232 custom</dt>\r\n <dd>\r\n Exam already booked.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {"response":\r\n {"code":"200",\r\n "msg":"OK"}\r\n }\r\n \r\n \r\n </pre>\r\n<p>The api allow to make an exam reservation. <a name=\"N65954\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.2 Delete booked exam</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A DELETE request allow to delete a booked exam. Parameters required are student matriculation number, password and exam id. Example of use: curl - X DELETE –d "user=value1" –d "password=value2" -d "id=value3" http://api.uniparthenope.it:9998/student/exams/booking.json where value1 is a student matriculation number, value2 is a student password, value3 is a ID number of exam (get ID from booked exams).</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/booking</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">DELETE </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n "id" : "x"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number, password and id exam (get ID from booked exams).</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 241 custom</dt>\r\n <dd>\r\n Id not valid for delete booked exam.</dd>\r\n <dt class=\"statuscode\">\r\n 242 custom</dt>\r\n <dd>\r\n Deletion unavailable.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {"response":\r\n {"code":"200",\r\n "msg":"OK"}\r\n }\r\n \r\n \r\n </pre>\r\n<p>The api allow to delete a booked exam. <a name=\"N65580\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.3 Get a study planning of a student</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Return a study planning of a student. Parameters required are student matriculation number and password. Example of use: curl - X GET –d "user=value1" –d "password=value2" http://api.uniparthenope.it:9998/student/exams/studyplanning.json where value1 is a student matriculation number, value2 is a student personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/studyplanning</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 201 Created</dt>\r\n <dd>\r\n No Content.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n {"studyplan":\r\n [{"Insegnamento":"APPLICAZIONI DI CALCOLO SCIENTIFICO E LAB. A.C.S.",\r\n "Esito":"SOSTENUTO",\r\n "CFU":" 12",\r\n "TAF":" C",\r\n "SSD":" MAT\\/08"\r\n },{\r\n "Insegnamento":"GRAFICA INTERATTIVA A LAB. G.I.",\r\n "Esito":"SOSTENUTO",\r\n "CFU":" 9",\r\n "TAF":" B",\r\n "SSD":" INF\\/01"\r\n },{\r\n "Insegnamento":"RICONOSCIMENTO E CLASSIFICAZIONE DI FORME",\r\n "Esito":"SOSTENUTO",\r\n "CFU":" 9",\r\n "TAF":" B",\r\n "SSD":" INF\\/01"\r\n },{\r\n \r\n ....\r\n \r\n }\r\n </pre>\r\n<p>The api return the study planning of a syudent. <a name=\"N65728\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.4 Get available exams for reservation</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Return a list of available exams for reservation. Parameters required are student matriculation number and password. Example of use: curl - X GET –d "user=value1" –d "password=value2" http://api.uniparthenope.it:9998/student/exams/booking/available.json where value1 is a student matriculation number, value2 is a student personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/booking/available</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 205 Reset Content</dt>\r\n <dd>\r\n No Content.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {\r\n "availableExams":\r\n {\r\n "01200001":\r\n {\r\n "Insegnamento":"PROGRAMMAZIONE SU RETI E LAB. P.R.",\r\n "link":"https:\\/\\/www.servizi.uniparthenope.it\\/self\\/GWEBPREN.GWEBPREN3 ..... ...... ....."\r\n }\r\n }\r\n \r\n ....\r\n }\r\n \r\n \r\n </pre>\r\n<p>The api return available exams for reservation. <a name=\"N65802\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.5 Get Booked exams</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A GET request return a list of student booked exams. Parameters required are student matriculation number and password. Example of use: curl - X GET –d "user=value1" –d "password=value2" http://api.uniparthenope.it:9998/student/exams/booking.json where value1 is a student matriculation number, value2 is a student personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/booking</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 240 custom</dt>\r\n <dd>\r\n No booked exams.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {\r\n "bookedexams":\r\n { "1":\r\n { "Insegnamento":"PROGRAMMAZIONE SU RETI E LAB. P.R.",\r\n "Data\\/Ora Appello":"18\\/05\\/2012 14:30",\r\n "Appello Modificato":"no",\r\n "Cancella":"https:\\/\\/www.servizi.uniparthenope.it\\/self\\/GWEBPREN.GWEBPREN4? ..... ",\r\n "Dettagli":"https:\\/\\/www.servizi.uniparthenope.it\\/self\\/SSGISSWF.SSGISSWF1? ..... "}\r\n }\r\n }\r\n \r\n \r\n </pre>\r\n<p>The api return booked exams. <a name=\"N65654\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.6 Get passed exams of a student</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Return passed exams of a student. Parameters required are student matriculation number and password. Example of use: curl - X GET –d "user=value1" –d "password=value2" http://api.uniparthenope.it:9998/student/exams/passed.json where value1 is a student matriculation number, value2 is a student personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/passed</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 250 custom</dt>\r\n <dd>\r\n Not passed exams.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {\r\n "exams":[{\r\n "Codice":"01200017",\r\n "Nome":"PROGRAMMAZIONE DI TERMINALI MOBILI",\r\n "Data":"15\\/07\\/2010",\r\n "Voto":"30",\r\n "CFU":"6"\r\n },{\r\n "Codice":"0111009",\r\n "Nome":"RICONOSCIMENTO E CLASSIFICAZIONE DI FORME",\r\n "Data":"21\\/07\\/2010",\r\n "Voto":"30 e lode",\r\n "CFU":"9"\r\n },{\r\n "Codice":"01200002",\r\n "Nome":"SICUREZZA DEI SISTEMI INFORMATICI",\r\n "Data":"30\\/07\\/2010",\r\n "Voto":"30",\r\n "CFU":"9"\r\n },{\r\n \r\n ...\r\n \r\n \r\n </pre>\r\n<p>The api return passed exams of a syudent. <a name=\"N66033\"></a></p>\r\n<h2 class=\"resource\">\r\n 2. Teacher Services</h2>\r\n<h4>\r\n Description</h4>\r\n<p>This resource represents Exam Dates Services of a teacher.</p>\r\n<h4>\r\n Resource URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/teacher/exams/</pre>\r\n<dl>\r\n</dl>\r\n<p><a name=\"N66196\"></a></p>\r\n<h3 class=\"operation\">\r\n 2.1 Delete Exam date</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A DELETE request allow to delete an Exam Date. Parameters required are teacher username, teacher password and ID exam (you can retrieve ID from Exam Dates API in Exam Date value, it's the ID number of Exam Date). Example of use: curl -X GET –d "user=value1" –d "password=value2" -d "id=value3" http://api.uniparthenope.it:9998/tacher/exams/edit.json where value1 is a teacher, value2 is a teacher personal password and value 3 is exam ID.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/teacher/exams/edit</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">DELETE </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "teacherUser",\r\n "password" : "mypassword"\r\n "id" : "examID"\r\n }\r\n </pre>\r\n<p>Parameters required are teacher username, teacher password and Exam ID.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 263 custom</dt>\r\n <dd>\r\n ID Exam not Found.</dd>\r\n <dt class=\"statuscode\">\r\n 264 custom</dt>\r\n <dd>\r\n Exam Deleted.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n {\r\n "bookedStudents": [{\r\n "id": "1 ",\r\n "matricola": "0120000065",\r\n "cognome": "VIGLIONE",\r\n "nome": "VALERIO",\r\n "convocazione": "",\r\n "prenotazione": "14\\/04\\/12 14:04"\r\n }, {\r\n "id": "2 ",\r\n "matricola": "0120000062",\r\n "cognome": "MELFI",\r\n "nome": "ROBERTO",\r\n "convocazione": "",\r\n "prenotazione": "16\\/04\\/12 14:58"\r\n }]\r\n }\r\n </pre>\r\n<p>Api delete an ezam date. <a name=\"N66118\"></a></p>\r\n<h3 class=\"operation\">\r\n 2.2 Get Booked Students</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A GET request return a list of booked students for an exam. Parameters required are teacher username, teacher password and ID exam (you can retrieve ID from Exam Dates API in Exam Date value, it's the ID number of Exam Date). Example of use: curl -X GET –d "user=value1" –d "password=value2" -d "id=value3" http://api.uniparthenope.it:9998/tacher/exams/bookedstudents.json where value1 is a teacher, value2 is a teacher personal password and value 3 is exam ID.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/teacher/exams/bookedstudents</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "teacherUser",\r\n "password" : "mypassword"\r\n "id" : "examID"\r\n }\r\n </pre>\r\n<p>Parameters required are teacher username, teacher password and Exam ID.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 260 custom</dt>\r\n <dd>\r\n No Exam Dates.</dd>\r\n <dt class=\"statuscode\">\r\n 261 custom</dt>\r\n <dd>\r\n No Booked Students.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n {\r\n "bookedStudents": [{\r\n "id": "1 ",\r\n "matricola": "0120000065",\r\n "cognome": "VIGLIONE",\r\n "nome": "VALERIO",\r\n "convocazione": "",\r\n "prenotazione": "14\\/04\\/12 14:04"\r\n }, {\r\n "id": "2 ",\r\n "matricola": "0120000062",\r\n "cognome": "MELFI",\r\n "nome": "ROBERTO",\r\n "convocazione": "",\r\n "prenotazione": "16\\/04\\/12 14:58"\r\n }]\r\n }\r\n </pre>\r\n<p>The api return booked students. <a name=\"N66044\"></a></p>\r\n<h3 class=\"operation\">\r\n 2.3 Get Exam Dates</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Return a list of exam dates. Parameters required are teacher username and password. Example of use: curl -X GET -d "user=value1" -d "password=value2" http://api.uniparthenope.it:9998/teacher/exams/dates.json where value1 is a teacher username, value2 is a teacher personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/teacher/exams/dates</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "teacherUser",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are teacher username and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 260 custom</dt>\r\n <dd>\r\n No Exam Dates.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n {"examDates":\r\n [{\r\n "Exam Name":"\\u00a0\\u00a0 Insegnamento di PROGRAMMAZ. III \\/ LAB. PROGRAMMAZ. III CFU 9 ( PRGRIII9 )<\\/br>",\r\n "Degree Course":"INFORMATICA (0108)\\n",\r\n "Study Course":"GENERALE (GEN)",\r\n "Exam Date":"\\u00b0 8357 del 20\\/04\\/2012, ore 13:00\\u00a0\\u00a0\\n",\r\n "Academic Year":"2010\\/2011","School Term":"Anticipata\\n ",\r\n "Teacher":"Dott. RAFFAELE MONTELLA",\r\n "Note":" APPELLO DI PROVA NON PRENOTATE",\r\n "Booked Student":"NOT BOOKED STUDENT"\r\n },{\r\n "Exam Name":"\\u00a0\\u00a0 Insegnamento di PROGRAMMAZIONE SU RETI E LAB. P.R. ( 01200001 )<\\/br>",\r\n "Degree Course":"INFORMATICA APPLICATA (0120)\\n",\r\n "Study Course":"GENERALE (GEN)",\r\n "Exam Date":"\\u00b0 8358 del 16\\/04\\/2012, ore 13:00\\u00a0\\u00a0\\n",\r\n "Academic Year":"2010\\/2011","School Term":"Straordinaria\\n ",\r\n "Teacher":"Dott. RAFFAELE MONTELLA",\r\n "Note":" APPELLO DI PROVA NON PRENOTATE",\r\n "Booked Student":"NOT BOOKED STUDENT"\r\n },{\r\n "Exam Name":"\\u00a0\\u00a0 Insegnamento di PROGRAMMAZIONE SU RETI E LAB. P.R. ( 01200001 )<\\/br>",\r\n "Degree Course":"INFORMATICA APPLICATA (0120)\\n",\r\n "Study Course":"GENERALE (GEN)",\r\n "Exam Date":"\\u00b0 8353 del 14\\/05\\/2012, ore 14:30\\u00a0\\u00a0\\n",\r\n "Academic Year":"2010\\/2011",\r\n "School Term":"Anticipata\\nElenco Prenotati (1)\\n\\n\\n ",\r\n "Lecture Room":"LNMCP ","Teacher":"Dott. RAFFAELE MONTELLA",\r\n "Booked Student":"https:\\/\\/www.servizi.uniparthenope.it\\/self\\/ssgisswb.ssgswpb1? ..."\r\n },{\r\n \r\n .....\r\n ]}\r\n \r\n }\r\n </pre>\r\n<p>The api return the exam dates of a teacher.</p>\r\n','','filtered_html'),('node','book',0,20,165,'und',0,'<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p>\r\n <meta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\" />\r\n</p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n</p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n <script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n <style type=\"text/css\">\r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n\r\n\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\n\r\n\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\n\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\n\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\n\r\npre {\r\n font: normal 100% monospace; \r\n}\r\n\r\n\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n\r\n\r\n\r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n\r\na{\r\n text-decoration: none;\r\n}\r\n\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n} </style>\r\n <script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p>\r\n <title></title>\r\n</p>\r\n<div id=\"watermark\">\r\n <div id=\"watermark-text\">\r\n <span>Uniparthenope Services API</span><span>v1.0</span></div>\r\n</div>\r\n<div class=\"shadow\" id=\"sidemenuopener\">\r\n <div id=\"sidemenuopenerbox\">\r\n <a class=\"button\" href=\"#\" id=\"menuopener\">TOC</a></div>\r\n <ol id=\"sidemenu\">\r\n <li>\r\n <a href=\"#\" id=\"lN65569\">[+] </a> <a href=\"#N65569\">Student Services</a>\r\n <ol id=\"XN65569\">\r\n <li>\r\n <a href=\"#N65876\">Book an exam</a></li>\r\n <li>\r\n <a href=\"#N65954\">Delete booked exam</a></li>\r\n <li>\r\n <a href=\"#N65580\">Get a study planning of a student</a></li>\r\n <li>\r\n <a href=\"#N65728\">Get available exams for reservation</a></li>\r\n <li>\r\n <a href=\"#N65802\">Get Booked exams</a></li>\r\n <li>\r\n <a href=\"#N65654\">Get passed exams of a student</a></li>\r\n </ol>\r\n </li>\r\n <li>\r\n <a href=\"#\" id=\"lN66033\">[+] </a> <a href=\"#N66033\">Teacher Services</a>\r\n <ol id=\"XN66033\">\r\n <li>\r\n <a href=\"#N66196\">Delete Exam date </a></li>\r\n <li>\r\n <a href=\"#N66118\">Get Booked Students </a></li>\r\n <li>\r\n <a href=\"#N66044\">Get Exam Dates </a></li>\r\n </ol>\r\n </li>\r\n </ol>\r\n</div>\r\n<h1>\r\n Uniparthenope Services API</h1>\r\n<p><a name=\"introduction\"></a></p>\r\n<h2>\r\n Introduction</h2>\r\n<h4>\r\n Version</h4>\r\n<p>v1.0</p>\r\n<h4>\r\n Author</h4>\r\n<p>R. Melfi, V. Viglione</p>\r\n<h4>\r\n Description</h4>\r\n<p>The following document describe the RESTful API of the Uniparthenope Service.</p>\r\n<h4>\r\n Authentication Schemes</h4>\r\n<p> </p>\r\n<ul>\r\n <li>\r\n Basic Authentication</li>\r\n <li>\r\n OAuth</li>\r\n</ul>\r\n<p> </p>\r\n<h4>\r\n Base URI</h4>\r\n<p><a href=\"http://api.uniparthenope.it:9998\" xmlns=\"\">http://api.uniparthenope.it:9998</a></p>\r\n<p><a name=\"index\"></a></p>\r\n<h2>\r\n Index of Resources and Operations</h2>\r\n<ol>\r\n <li xmlns=\"http://www.w3.org/1999/xhtml\">\r\n <a href=\"#N65569\">Student Services</a>\r\n <ol>\r\n <li>\r\n <a href=\"#N65876\">Book an exam</a></li>\r\n <li>\r\n <a href=\"#N65954\">Delete booked exam</a></li>\r\n <li>\r\n <a href=\"#N65580\">Get a study planning of a student</a></li>\r\n <li>\r\n <a href=\"#N65728\">Get available exams for reservation</a></li>\r\n <li>\r\n <a href=\"#N65802\">Get Booked exams</a></li>\r\n <li>\r\n <a href=\"#N65654\">Get passed exams of a student</a></li>\r\n </ol>\r\n </li>\r\n <li>\r\n <a href=\"#N66033\">Teacher Services</a>\r\n <ol>\r\n <li>\r\n <a href=\"#N66196\">Delete Exam date </a></li>\r\n <li>\r\n <a href=\"#N66118\">Get Booked Students </a></li>\r\n <li>\r\n <a href=\"#N66044\">Get Exam Dates </a></li>\r\n </ol>\r\n </li>\r\n</ol>\r\n<p><a name=\"N65569\" xmlns=\"\"></a></p>\r\n<h2 class=\"resource\">\r\n 1. Student Services</h2>\r\n<h4>\r\n Description</h4>\r\n<p>This resource represents exam services of a student.</p>\r\n<h4>\r\n Resource URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/</pre>\r\n<dl>\r\n</dl>\r\n<p><a name=\"N65876\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.1 Book an exam</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A POST request allow to make an exam reservation. Parameters required are student matriculation number, password and exam id. Example of use: curl - X POST –d "user=value1" –d "password=value2" -d "id=value3" http://api.uniparthenope.it:9998/student/exams/booking.json where value1 is a student matriculation number, value2 is a student password, value3 is a ID number of exam (get ID from available exams).</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/booking</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">POST </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n "id" : "xxxxxxx"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number, password and id exam (get ID from available exams).</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 231 custom</dt>\r\n <dd>\r\n Exam unavailable to book.</dd>\r\n <dt class=\"statuscode\">\r\n 232 custom</dt>\r\n <dd>\r\n Exam already booked.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {"response":\r\n {"code":"200",\r\n "msg":"OK"}\r\n }\r\n \r\n \r\n </pre>\r\n<p>The api allow to make an exam reservation. <a name=\"N65954\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.2 Delete booked exam</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A DELETE request allow to delete a booked exam. Parameters required are student matriculation number, password and exam id. Example of use: curl - X DELETE –d "user=value1" –d "password=value2" -d "id=value3" http://api.uniparthenope.it:9998/student/exams/booking.json where value1 is a student matriculation number, value2 is a student password, value3 is a ID number of exam (get ID from booked exams).</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/booking</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">DELETE </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n "id" : "x"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number, password and id exam (get ID from booked exams).</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 241 custom</dt>\r\n <dd>\r\n Id not valid for delete booked exam.</dd>\r\n <dt class=\"statuscode\">\r\n 242 custom</dt>\r\n <dd>\r\n Deletion unavailable.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {"response":\r\n {"code":"200",\r\n "msg":"OK"}\r\n }\r\n \r\n \r\n </pre>\r\n<p>The api allow to delete a booked exam. <a name=\"N65580\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.3 Get a study planning of a student</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Return a study planning of a student. Parameters required are student matriculation number and password. Example of use: curl - X GET –d "user=value1" –d "password=value2" http://api.uniparthenope.it:9998/student/exams/studyplanning.json where value1 is a student matriculation number, value2 is a student personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/studyplanning</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 201 Created</dt>\r\n <dd>\r\n No Content.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n {"studyplan":\r\n [{"Insegnamento":"APPLICAZIONI DI CALCOLO SCIENTIFICO E LAB. A.C.S.",\r\n "Esito":"SOSTENUTO",\r\n "CFU":" 12",\r\n "TAF":" C",\r\n "SSD":" MAT\\/08"\r\n },{\r\n "Insegnamento":"GRAFICA INTERATTIVA A LAB. G.I.",\r\n "Esito":"SOSTENUTO",\r\n "CFU":" 9",\r\n "TAF":" B",\r\n "SSD":" INF\\/01"\r\n },{\r\n "Insegnamento":"RICONOSCIMENTO E CLASSIFICAZIONE DI FORME",\r\n "Esito":"SOSTENUTO",\r\n "CFU":" 9",\r\n "TAF":" B",\r\n "SSD":" INF\\/01"\r\n },{\r\n \r\n ....\r\n \r\n }\r\n </pre>\r\n<p>The api return the study planning of a syudent. <a name=\"N65728\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.4 Get available exams for reservation</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Return a list of available exams for reservation. Parameters required are student matriculation number and password. Example of use: curl - X GET –d "user=value1" –d "password=value2" http://api.uniparthenope.it:9998/student/exams/booking/available.json where value1 is a student matriculation number, value2 is a student personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/booking/available</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 205 Reset Content</dt>\r\n <dd>\r\n No Content.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {\r\n "availableExams":\r\n {\r\n "01200001":\r\n {\r\n "Insegnamento":"PROGRAMMAZIONE SU RETI E LAB. P.R.",\r\n "link":"https:\\/\\/www.servizi.uniparthenope.it\\/self\\/GWEBPREN.GWEBPREN3 ..... ...... ....."\r\n }\r\n }\r\n \r\n ....\r\n }\r\n \r\n \r\n </pre>\r\n<p>The api return available exams for reservation. <a name=\"N65802\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.5 Get Booked exams</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A GET request return a list of student booked exams. Parameters required are student matriculation number and password. Example of use: curl - X GET –d "user=value1" –d "password=value2" http://api.uniparthenope.it:9998/student/exams/booking.json where value1 is a student matriculation number, value2 is a student personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/booking</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 240 custom</dt>\r\n <dd>\r\n No booked exams.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {\r\n "bookedexams":\r\n { "1":\r\n { "Insegnamento":"PROGRAMMAZIONE SU RETI E LAB. P.R.",\r\n "Data\\/Ora Appello":"18\\/05\\/2012 14:30",\r\n "Appello Modificato":"no",\r\n "Cancella":"https:\\/\\/www.servizi.uniparthenope.it\\/self\\/GWEBPREN.GWEBPREN4? ..... ",\r\n "Dettagli":"https:\\/\\/www.servizi.uniparthenope.it\\/self\\/SSGISSWF.SSGISSWF1? ..... "}\r\n }\r\n }\r\n \r\n \r\n </pre>\r\n<p>The api return booked exams. <a name=\"N65654\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.6 Get passed exams of a student</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Return passed exams of a student. Parameters required are student matriculation number and password. Example of use: curl - X GET –d "user=value1" –d "password=value2" http://api.uniparthenope.it:9998/student/exams/passed.json where value1 is a student matriculation number, value2 is a student personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/passed</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 250 custom</dt>\r\n <dd>\r\n Not passed exams.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {\r\n "exams":[{\r\n "Codice":"01200017",\r\n "Nome":"PROGRAMMAZIONE DI TERMINALI MOBILI",\r\n "Data":"15\\/07\\/2010",\r\n "Voto":"30",\r\n "CFU":"6"\r\n },{\r\n "Codice":"0111009",\r\n "Nome":"RICONOSCIMENTO E CLASSIFICAZIONE DI FORME",\r\n "Data":"21\\/07\\/2010",\r\n "Voto":"30 e lode",\r\n "CFU":"9"\r\n },{\r\n "Codice":"01200002",\r\n "Nome":"SICUREZZA DEI SISTEMI INFORMATICI",\r\n "Data":"30\\/07\\/2010",\r\n "Voto":"30",\r\n "CFU":"9"\r\n },{\r\n \r\n ...\r\n \r\n \r\n </pre>\r\n<p>The api return passed exams of a syudent. <a name=\"N66033\"></a></p>\r\n<h2 class=\"resource\">\r\n 2. Teacher Services</h2>\r\n<h4>\r\n Description</h4>\r\n<p>This resource represents Exam Dates Services of a teacher.</p>\r\n<h4>\r\n Resource URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/teacher/exams/</pre>\r\n<dl>\r\n</dl>\r\n<p><a name=\"N66196\"></a></p>\r\n<h3 class=\"operation\">\r\n 2.1 Delete Exam date</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A DELETE request allow to delete an Exam Date. Parameters required are teacher username, teacher password and ID exam (you can retrieve ID from Exam Dates API in Exam Date value, it's the ID number of Exam Date). Example of use: curl -X GET –d "user=value1" –d "password=value2" -d "id=value3" http://api.uniparthenope.it:9998/tacher/exams/edit.json where value1 is a teacher, value2 is a teacher personal password and value 3 is exam ID.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/teacher/exams/edit</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">DELETE </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "teacherUser",\r\n "password" : "mypassword"\r\n "id" : "examID"\r\n }\r\n </pre>\r\n<p>Parameters required are teacher username, teacher password and Exam ID.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 263 custom</dt>\r\n <dd>\r\n ID Exam not Found.</dd>\r\n <dt class=\"statuscode\">\r\n 264 custom</dt>\r\n <dd>\r\n Exam Deleted.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n {\r\n "bookedStudents": [{\r\n "id": "1 ",\r\n "matricola": "0120000065",\r\n "cognome": "VIGLIONE",\r\n "nome": "VALERIO",\r\n "convocazione": "",\r\n "prenotazione": "14\\/04\\/12 14:04"\r\n }, {\r\n "id": "2 ",\r\n "matricola": "0120000062",\r\n "cognome": "MELFI",\r\n "nome": "ROBERTO",\r\n "convocazione": "",\r\n "prenotazione": "16\\/04\\/12 14:58"\r\n }]\r\n }\r\n </pre>\r\n<p>Api delete an ezam date. <a name=\"N66118\"></a></p>\r\n<h3 class=\"operation\">\r\n 2.2 Get Booked Students</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A GET request return a list of booked students for an exam. Parameters required are teacher username, teacher password and ID exam (you can retrieve ID from Exam Dates API in Exam Date value, it's the ID number of Exam Date). Example of use: curl -X GET –d "user=value1" –d "password=value2" -d "id=value3" http://api.uniparthenope.it:9998/tacher/exams/bookedstudents.json where value1 is a teacher, value2 is a teacher personal password and value 3 is exam ID.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/teacher/exams/bookedstudents</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "teacherUser",\r\n "password" : "mypassword"\r\n "id" : "examID"\r\n }\r\n </pre>\r\n<p>Parameters required are teacher username, teacher password and Exam ID.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 260 custom</dt>\r\n <dd>\r\n No Exam Dates.</dd>\r\n <dt class=\"statuscode\">\r\n 261 custom</dt>\r\n <dd>\r\n No Booked Students.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n {\r\n "bookedStudents": [{\r\n "id": "1 ",\r\n "matricola": "0120000065",\r\n "cognome": "VIGLIONE",\r\n "nome": "VALERIO",\r\n "convocazione": "",\r\n "prenotazione": "14\\/04\\/12 14:04"\r\n }, {\r\n "id": "2 ",\r\n "matricola": "0120000062",\r\n "cognome": "MELFI",\r\n "nome": "ROBERTO",\r\n "convocazione": "",\r\n "prenotazione": "16\\/04\\/12 14:58"\r\n }]\r\n }\r\n </pre>\r\n<p>The api return booked students. <a name=\"N66044\"></a></p>\r\n<h3 class=\"operation\">\r\n 2.3 Get Exam Dates</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Return a list of exam dates. Parameters required are teacher username and password. Example of use: curl -X GET -d "user=value1" -d "password=value2" http://api.uniparthenope.it:9998/teacher/exams/dates.json where value1 is a teacher username, value2 is a teacher personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/teacher/exams/dates</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "teacherUser",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are teacher username and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 260 custom</dt>\r\n <dd>\r\n No Exam Dates.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n {"examDates":\r\n [{\r\n "Exam Name":"\\u00a0\\u00a0 Insegnamento di PROGRAMMAZ. III \\/ LAB. PROGRAMMAZ. III CFU 9 ( PRGRIII9 )<\\/br>",\r\n "Degree Course":"INFORMATICA (0108)\\n",\r\n "Study Course":"GENERALE (GEN)",\r\n "Exam Date":"\\u00b0 8357 del 20\\/04\\/2012, ore 13:00\\u00a0\\u00a0\\n",\r\n "Academic Year":"2010\\/2011","School Term":"Anticipata\\n ",\r\n "Teacher":"Dott. RAFFAELE MONTELLA",\r\n "Note":" APPELLO DI PROVA NON PRENOTATE",\r\n "Booked Student":"NOT BOOKED STUDENT"\r\n },{\r\n "Exam Name":"\\u00a0\\u00a0 Insegnamento di PROGRAMMAZIONE SU RETI E LAB. P.R. ( 01200001 )<\\/br>",\r\n "Degree Course":"INFORMATICA APPLICATA (0120)\\n",\r\n "Study Course":"GENERALE (GEN)",\r\n "Exam Date":"\\u00b0 8358 del 16\\/04\\/2012, ore 13:00\\u00a0\\u00a0\\n",\r\n "Academic Year":"2010\\/2011","School Term":"Straordinaria\\n ",\r\n "Teacher":"Dott. RAFFAELE MONTELLA",\r\n "Note":" APPELLO DI PROVA NON PRENOTATE",\r\n "Booked Student":"NOT BOOKED STUDENT"\r\n },{\r\n "Exam Name":"\\u00a0\\u00a0 Insegnamento di PROGRAMMAZIONE SU RETI E LAB. P.R. ( 01200001 )<\\/br>",\r\n "Degree Course":"INFORMATICA APPLICATA (0120)\\n",\r\n "Study Course":"GENERALE (GEN)",\r\n "Exam Date":"\\u00b0 8353 del 14\\/05\\/2012, ore 14:30\\u00a0\\u00a0\\n",\r\n "Academic Year":"2010\\/2011",\r\n "School Term":"Anticipata\\nElenco Prenotati (1)\\n\\n\\n ",\r\n "Lecture Room":"LNMCP ","Teacher":"Dott. RAFFAELE MONTELLA",\r\n "Booked Student":"https:\\/\\/www.servizi.uniparthenope.it\\/self\\/ssgisswb.ssgswpb1? ..."\r\n },{\r\n \r\n .....\r\n ]}\r\n \r\n }\r\n </pre>\r\n<p>The api return the exam dates of a teacher.</p>\r\n','','full_html'),('node','book',0,20,166,'und',0,'\r\n<p>\r\n <meta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\" />\r\n</p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n</p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n <script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n <style type=\"text/css\">\r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n\r\n\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\n\r\n\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\n\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\n\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\n\r\npre {\r\n font: normal 100% monospace; \r\n}\r\n\r\n\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n\r\n\r\n\r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n\r\na{\r\n text-decoration: none;\r\n}\r\n\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n} </style>\r\n <script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script></p>\r\n<p>\r\n <title></title>\r\n</p>\r\n<div id=\"watermark\">\r\n <div id=\"watermark-text\">\r\n <span>Uniparthenope Services API</span><span>v1.0</span></div>\r\n</div>\r\n<div class=\"shadow\" id=\"sidemenuopener\">\r\n <div id=\"sidemenuopenerbox\">\r\n <a class=\"button\" href=\"#\" id=\"menuopener\">TOC</a></div>\r\n <ol id=\"sidemenu\">\r\n <li>\r\n <a href=\"#\" id=\"lN65569\">[+] </a> <a href=\"#N65569\">Student Services</a>\r\n <ol id=\"XN65569\">\r\n <li>\r\n <a href=\"#N65876\">Book an exam</a></li>\r\n <li>\r\n <a href=\"#N65954\">Delete booked exam</a></li>\r\n <li>\r\n <a href=\"#N65580\">Get a study planning of a student</a></li>\r\n <li>\r\n <a href=\"#N65728\">Get available exams for reservation</a></li>\r\n <li>\r\n <a href=\"#N65802\">Get Booked exams</a></li>\r\n <li>\r\n <a href=\"#N65654\">Get passed exams of a student</a></li>\r\n </ol>\r\n </li>\r\n <li>\r\n <a href=\"#\" id=\"lN66033\">[+] </a> <a href=\"#N66033\">Teacher Services</a>\r\n <ol id=\"XN66033\">\r\n <li>\r\n <a href=\"#N66196\">Delete Exam date </a></li>\r\n <li>\r\n <a href=\"#N66118\">Get Booked Students </a></li>\r\n <li>\r\n <a href=\"#N66044\">Get Exam Dates </a></li>\r\n </ol>\r\n </li>\r\n </ol>\r\n</div>\r\n<h1>\r\n Uniparthenope Services API</h1>\r\n<p><a name=\"introduction\"></a></p>\r\n<h2>\r\n Introduction</h2>\r\n<h4>\r\n Version</h4>\r\n<p>v1.0</p>\r\n<h4>\r\n Author</h4>\r\n<p>R. Melfi, V. Viglione</p>\r\n<h4>\r\n Description</h4>\r\n<p>The following document describe the RESTful API of the Uniparthenope Service.</p>\r\n<h4>\r\n Authentication Schemes</h4>\r\n<p> </p>\r\n<ul>\r\n <li>\r\n Basic Authentication</li>\r\n <li>\r\n OAuth</li>\r\n</ul>\r\n<p> </p>\r\n<h4>\r\n Base URI</h4>\r\n<p><a href=\"http://api.uniparthenope.it:9998\" xmlns=\"\">http://api.uniparthenope.it:9998</a></p>\r\n<p><a name=\"index\"></a></p>\r\n<h2>\r\n Index of Resources and Operations</h2>\r\n<ol>\r\n <li xmlns=\"http://www.w3.org/1999/xhtml\">\r\n <a href=\"#N65569\">Student Services</a>\r\n <ol>\r\n <li>\r\n <a href=\"#N65876\">Book an exam</a></li>\r\n <li>\r\n <a href=\"#N65954\">Delete booked exam</a></li>\r\n <li>\r\n <a href=\"#N65580\">Get a study planning of a student</a></li>\r\n <li>\r\n <a href=\"#N65728\">Get available exams for reservation</a></li>\r\n <li>\r\n <a href=\"#N65802\">Get Booked exams</a></li>\r\n <li>\r\n <a href=\"#N65654\">Get passed exams of a student</a></li>\r\n </ol>\r\n </li>\r\n <li>\r\n <a href=\"#N66033\">Teacher Services</a>\r\n <ol>\r\n <li>\r\n <a href=\"#N66196\">Delete Exam date </a></li>\r\n <li>\r\n <a href=\"#N66118\">Get Booked Students </a></li>\r\n <li>\r\n <a href=\"#N66044\">Get Exam Dates </a></li>\r\n </ol>\r\n </li>\r\n</ol>\r\n<p><a name=\"N65569\" xmlns=\"\"></a></p>\r\n<h2 class=\"resource\">\r\n 1. Student Services</h2>\r\n<h4>\r\n Description</h4>\r\n<p>This resource represents exam services of a student.</p>\r\n<h4>\r\n Resource URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/</pre>\r\n<dl>\r\n</dl>\r\n<p><a name=\"N65876\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.1 Book an exam</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A POST request allow to make an exam reservation. Parameters required are student matriculation number, password and exam id. Example of use: curl - X POST –d "user=value1" –d "password=value2" -d "id=value3" http://api.uniparthenope.it:9998/student/exams/booking.json where value1 is a student matriculation number, value2 is a student password, value3 is a ID number of exam (get ID from available exams).</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/booking</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">POST </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n "id" : "xxxxxxx"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number, password and id exam (get ID from available exams).</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 231 custom</dt>\r\n <dd>\r\n Exam unavailable to book.</dd>\r\n <dt class=\"statuscode\">\r\n 232 custom</dt>\r\n <dd>\r\n Exam already booked.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {"response":\r\n {"code":"200",\r\n "msg":"OK"}\r\n }\r\n \r\n \r\n </pre>\r\n<p>The api allow to make an exam reservation. <a name=\"N65954\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.2 Delete booked exam</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A DELETE request allow to delete a booked exam. Parameters required are student matriculation number, password and exam id. Example of use: curl - X DELETE –d "user=value1" –d "password=value2" -d "id=value3" http://api.uniparthenope.it:9998/student/exams/booking.json where value1 is a student matriculation number, value2 is a student password, value3 is a ID number of exam (get ID from booked exams).</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/booking</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">DELETE </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n "id" : "x"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number, password and id exam (get ID from booked exams).</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 241 custom</dt>\r\n <dd>\r\n Id not valid for delete booked exam.</dd>\r\n <dt class=\"statuscode\">\r\n 242 custom</dt>\r\n <dd>\r\n Deletion unavailable.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {"response":\r\n {"code":"200",\r\n "msg":"OK"}\r\n }\r\n \r\n \r\n </pre>\r\n<p>The api allow to delete a booked exam. <a name=\"N65580\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.3 Get a study planning of a student</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Return a study planning of a student. Parameters required are student matriculation number and password. Example of use: curl - X GET –d "user=value1" –d "password=value2" http://api.uniparthenope.it:9998/student/exams/studyplanning.json where value1 is a student matriculation number, value2 is a student personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/studyplanning</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 201 Created</dt>\r\n <dd>\r\n No Content.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n {"studyplan":\r\n [{"Insegnamento":"APPLICAZIONI DI CALCOLO SCIENTIFICO E LAB. A.C.S.",\r\n "Esito":"SOSTENUTO",\r\n "CFU":" 12",\r\n "TAF":" C",\r\n "SSD":" MAT\\/08"\r\n },{\r\n "Insegnamento":"GRAFICA INTERATTIVA A LAB. G.I.",\r\n "Esito":"SOSTENUTO",\r\n "CFU":" 9",\r\n "TAF":" B",\r\n "SSD":" INF\\/01"\r\n },{\r\n "Insegnamento":"RICONOSCIMENTO E CLASSIFICAZIONE DI FORME",\r\n "Esito":"SOSTENUTO",\r\n "CFU":" 9",\r\n "TAF":" B",\r\n "SSD":" INF\\/01"\r\n },{\r\n \r\n ....\r\n \r\n }\r\n </pre>\r\n<p>The api return the study planning of a syudent. <a name=\"N65728\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.4 Get available exams for reservation</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Return a list of available exams for reservation. Parameters required are student matriculation number and password. Example of use: curl - X GET –d "user=value1" –d "password=value2" http://api.uniparthenope.it:9998/student/exams/booking/available.json where value1 is a student matriculation number, value2 is a student personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/booking/available</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 205 Reset Content</dt>\r\n <dd>\r\n No Content.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {\r\n "availableExams":\r\n {\r\n "01200001":\r\n {\r\n "Insegnamento":"PROGRAMMAZIONE SU RETI E LAB. P.R.",\r\n "link":"https:\\/\\/www.servizi.uniparthenope.it\\/self\\/GWEBPREN.GWEBPREN3 ..... ...... ....."\r\n }\r\n }\r\n \r\n ....\r\n }\r\n \r\n \r\n </pre>\r\n<p>The api return available exams for reservation. <a name=\"N65802\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.5 Get Booked exams</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A GET request return a list of student booked exams. Parameters required are student matriculation number and password. Example of use: curl - X GET –d "user=value1" –d "password=value2" http://api.uniparthenope.it:9998/student/exams/booking.json where value1 is a student matriculation number, value2 is a student personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/booking</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 240 custom</dt>\r\n <dd>\r\n No booked exams.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {\r\n "bookedexams":\r\n { "1":\r\n { "Insegnamento":"PROGRAMMAZIONE SU RETI E LAB. P.R.",\r\n "Data\\/Ora Appello":"18\\/05\\/2012 14:30",\r\n "Appello Modificato":"no",\r\n "Cancella":"https:\\/\\/www.servizi.uniparthenope.it\\/self\\/GWEBPREN.GWEBPREN4? ..... ",\r\n "Dettagli":"https:\\/\\/www.servizi.uniparthenope.it\\/self\\/SSGISSWF.SSGISSWF1? ..... "}\r\n }\r\n }\r\n \r\n \r\n </pre>\r\n<p>The api return booked exams. <a name=\"N65654\"></a></p>\r\n<h3 class=\"operation\">\r\n 1.6 Get passed exams of a student</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Return passed exams of a student. Parameters required are student matriculation number and password. Example of use: curl - X GET –d "user=value1" –d "password=value2" http://api.uniparthenope.it:9998/student/exams/passed.json where value1 is a student matriculation number, value2 is a student personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/student/exams/passed</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "01200000XX",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are student matriculation number and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 250 custom</dt>\r\n <dd>\r\n Not passed exams.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n \r\n {\r\n "exams":[{\r\n "Codice":"01200017",\r\n "Nome":"PROGRAMMAZIONE DI TERMINALI MOBILI",\r\n "Data":"15\\/07\\/2010",\r\n "Voto":"30",\r\n "CFU":"6"\r\n },{\r\n "Codice":"0111009",\r\n "Nome":"RICONOSCIMENTO E CLASSIFICAZIONE DI FORME",\r\n "Data":"21\\/07\\/2010",\r\n "Voto":"30 e lode",\r\n "CFU":"9"\r\n },{\r\n "Codice":"01200002",\r\n "Nome":"SICUREZZA DEI SISTEMI INFORMATICI",\r\n "Data":"30\\/07\\/2010",\r\n "Voto":"30",\r\n "CFU":"9"\r\n },{\r\n \r\n ...\r\n \r\n \r\n </pre>\r\n<p>The api return passed exams of a syudent. <a name=\"N66033\"></a></p>\r\n<h2 class=\"resource\">\r\n 2. Teacher Services</h2>\r\n<h4>\r\n Description</h4>\r\n<p>This resource represents Exam Dates Services of a teacher.</p>\r\n<h4>\r\n Resource URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/teacher/exams/</pre>\r\n<dl>\r\n</dl>\r\n<p><a name=\"N66196\"></a></p>\r\n<h3 class=\"operation\">\r\n 2.1 Delete Exam date</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A DELETE request allow to delete an Exam Date. Parameters required are teacher username, teacher password and ID exam (you can retrieve ID from Exam Dates API in Exam Date value, it's the ID number of Exam Date). Example of use: curl -X GET –d "user=value1" –d "password=value2" -d "id=value3" http://api.uniparthenope.it:9998/tacher/exams/edit.json where value1 is a teacher, value2 is a teacher personal password and value 3 is exam ID.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/teacher/exams/edit</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">DELETE </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "teacherUser",\r\n "password" : "mypassword"\r\n "id" : "examID"\r\n }\r\n </pre>\r\n<p>Parameters required are teacher username, teacher password and Exam ID.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 263 custom</dt>\r\n <dd>\r\n ID Exam not Found.</dd>\r\n <dt class=\"statuscode\">\r\n 264 custom</dt>\r\n <dd>\r\n Exam Deleted.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n {\r\n "bookedStudents": [{\r\n "id": "1 ",\r\n "matricola": "0120000065",\r\n "cognome": "VIGLIONE",\r\n "nome": "VALERIO",\r\n "convocazione": "",\r\n "prenotazione": "14\\/04\\/12 14:04"\r\n }, {\r\n "id": "2 ",\r\n "matricola": "0120000062",\r\n "cognome": "MELFI",\r\n "nome": "ROBERTO",\r\n "convocazione": "",\r\n "prenotazione": "16\\/04\\/12 14:58"\r\n }]\r\n }\r\n </pre>\r\n<p>Api delete an ezam date. <a name=\"N66118\"></a></p>\r\n<h3 class=\"operation\">\r\n 2.2 Get Booked Students</h3>\r\n<h4>\r\n Description</h4>\r\n<p>A GET request return a list of booked students for an exam. Parameters required are teacher username, teacher password and ID exam (you can retrieve ID from Exam Dates API in Exam Date value, it's the ID number of Exam Date). Example of use: curl -X GET –d "user=value1" –d "password=value2" -d "id=value3" http://api.uniparthenope.it:9998/tacher/exams/bookedstudents.json where value1 is a teacher, value2 is a teacher personal password and value 3 is exam ID.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/teacher/exams/bookedstudents</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "teacherUser",\r\n "password" : "mypassword"\r\n "id" : "examID"\r\n }\r\n </pre>\r\n<p>Parameters required are teacher username, teacher password and Exam ID.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 260 custom</dt>\r\n <dd>\r\n No Exam Dates.</dd>\r\n <dt class=\"statuscode\">\r\n 261 custom</dt>\r\n <dd>\r\n No Booked Students.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n {\r\n "bookedStudents": [{\r\n "id": "1 ",\r\n "matricola": "0120000065",\r\n "cognome": "VIGLIONE",\r\n "nome": "VALERIO",\r\n "convocazione": "",\r\n "prenotazione": "14\\/04\\/12 14:04"\r\n }, {\r\n "id": "2 ",\r\n "matricola": "0120000062",\r\n "cognome": "MELFI",\r\n "nome": "ROBERTO",\r\n "convocazione": "",\r\n "prenotazione": "16\\/04\\/12 14:58"\r\n }]\r\n }\r\n </pre>\r\n<p>The api return booked students. <a name=\"N66044\"></a></p>\r\n<h3 class=\"operation\">\r\n 2.3 Get Exam Dates</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Return a list of exam dates. Parameters required are teacher username and password. Example of use: curl -X GET -d "user=value1" -d "password=value2" http://api.uniparthenope.it:9998/teacher/exams/dates.json where value1 is a teacher username, value2 is a teacher personal password.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:9998/teacher/exams/dates</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET </span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n "user" : "teacherUser",\r\n "password" : "mypassword"\r\n }\r\n </pre>\r\n<p>Parameters required are teacher username and password.</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 200 OK</dt>\r\n <dd>\r\n OK.</dd>\r\n <dt class=\"statuscode\">\r\n 260 custom</dt>\r\n <dd>\r\n No Exam Dates.</dd>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n Bad Request.</dd>\r\n <dt class=\"statuscode\">\r\n 401 Unauthorized</dt>\r\n <dd>\r\n Unauthorized.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"js\">\r\n {\r\n {"examDates":\r\n [{\r\n "Exam Name":"\\u00a0\\u00a0 Insegnamento di PROGRAMMAZ. III \\/ LAB. PROGRAMMAZ. III CFU 9 ( PRGRIII9 )<\\/br>",\r\n "Degree Course":"INFORMATICA (0108)\\n",\r\n "Study Course":"GENERALE (GEN)",\r\n "Exam Date":"\\u00b0 8357 del 20\\/04\\/2012, ore 13:00\\u00a0\\u00a0\\n",\r\n "Academic Year":"2010\\/2011","School Term":"Anticipata\\n ",\r\n "Teacher":"Dott. RAFFAELE MONTELLA",\r\n "Note":" APPELLO DI PROVA NON PRENOTATE",\r\n "Booked Student":"NOT BOOKED STUDENT"\r\n },{\r\n "Exam Name":"\\u00a0\\u00a0 Insegnamento di PROGRAMMAZIONE SU RETI E LAB. P.R. ( 01200001 )<\\/br>",\r\n "Degree Course":"INFORMATICA APPLICATA (0120)\\n",\r\n "Study Course":"GENERALE (GEN)",\r\n "Exam Date":"\\u00b0 8358 del 16\\/04\\/2012, ore 13:00\\u00a0\\u00a0\\n",\r\n "Academic Year":"2010\\/2011","School Term":"Straordinaria\\n ",\r\n "Teacher":"Dott. RAFFAELE MONTELLA",\r\n "Note":" APPELLO DI PROVA NON PRENOTATE",\r\n "Booked Student":"NOT BOOKED STUDENT"\r\n },{\r\n "Exam Name":"\\u00a0\\u00a0 Insegnamento di PROGRAMMAZIONE SU RETI E LAB. P.R. ( 01200001 )<\\/br>",\r\n "Degree Course":"INFORMATICA APPLICATA (0120)\\n",\r\n "Study Course":"GENERALE (GEN)",\r\n "Exam Date":"\\u00b0 8353 del 14\\/05\\/2012, ore 14:30\\u00a0\\u00a0\\n",\r\n "Academic Year":"2010\\/2011",\r\n "School Term":"Anticipata\\nElenco Prenotati (1)\\n\\n\\n ",\r\n "Lecture Room":"LNMCP ","Teacher":"Dott. RAFFAELE MONTELLA",\r\n "Booked Student":"https:\\/\\/www.servizi.uniparthenope.it\\/self\\/ssgisswb.ssgswpb1? ..."\r\n },{\r\n \r\n .....\r\n ]}\r\n \r\n }\r\n </pre>\r\n<p>The api return the exam dates of a teacher.</p>\r\n','','full_html'),('node','book',0,20,168,'und',0,'<p>Uniparthenope Servizi Studenti API Doc</p>\r\n<p> </p>\r\n<p><a href=\"http://api.uniparthenope.it/doc/uniservice_it.html\">http://api.uniparthenope.it/doc/uniservice_it.html</a></p>\r\n','','filtered_html'),('node','book',0,20,169,'und',0,'<p><a href=\"http://api.uniparthenope.it/doc/uniservice_it.html\">Uniparthenope Servizi Studenti API Doc</a></p>\r\n<p> </p>\r\n<p> </p>\r\n','','filtered_html'),('node','book',0,21,24,'und',0,'<p>Application Program Interface per il servizio docenti dell'Università di Napoli Parthenope</p>\r\n','','filtered_html'),('node','forum',0,22,25,'und',0,'Questa potrebbe essere un\'idea di lavoro:\r\npreparare un kit standard costituito da\r\n1. Drupal\r\n2. moduli di autenticazione RADIUS\r\n3. tema standard UniParthenope\r\n4. eventuali moduli di interfaccia alle API (http://api.uniparthenope.it).\r\n\r\nVolontari? Potrebbe essere un progetto per l\'esame di Tecnologie Web o equivalente.\r\n\r\n','','filtered_html'),('node','blog',0,23,26,'und',0,'L\' Object-Relational Mapping (ORM) è una tecnica di programmazione che favorisce l\'integrazione di sistemi software aderenti al paradigma della programmazione orientata agli oggetti con sistemi RDBMS.\r\n\r\nUn prodotto ORM fornisce, mediante un\'interfaccia orientata agli oggetti, tutti i servizi inerenti alla persistenza dei dati, astraendo nel contempo le caratteristiche implementative dello specifico RDBMS utilizzato.\r\n\r\nI principali vantaggi nell\'uso di un tale sistema sono i seguenti.\r\n\r\nIl superamento (più o meno completo) dell\'incompatibilità di fondo tra il progetto orientato agli oggetti ed il modello relazionale sul quale è basata la maggior parte degli attuali RDBMS utilizzati; con una metafora legata al mondo dell\'elettrotecnica, si parla in questo caso di disadattamento dell\'impedenza tra paradigma relazionale e ad-oggetti (object/relational impedance mismatch).\r\n\r\nUn\'elevata portabilità rispetto alla tecnologia DBMS utilizzata: cambiando DBMS non devono essere riscritte le routine che implementano lo strato di persistenza; generalmente basta cambiare poche righe nella configurazione del prodotto per l\'ORM utilizzato.\r\n\r\nDrastica riduzione della quantità di codice da redigere; l\'ORM maschera dietro semplici comandi le complesse attività di creazione, prelievo, aggiornamento ed eliminazione dei dati (dette CRUD - Create, Read, Update, Delete). Tali attività occupano di solito una buona percentuale del tempo di stesura, testing e manutenzione complessivo. Inoltre, sono per loro natura molto ripetitive e, dunque, favoriscono la possibilità che vengano commessi errori durante la stesura del codice che le implementa.\r\n\r\nSuggerisce la realizzazione dell\'architettura di un sistema software mediante approccio stratificato, tendendo pertanto ad isolare in un solo livello la logica di persistenza dei dati, a vantaggio della modularità complessiva del sistema.\r\n\r\nI prodotti per l\'ORM attualmente più diffusi offrono spesso nativamente funzionalità che altrimenti andrebbero realizzate manualmente dal programmatore:\r\n<ul>\r\n<li>Caricamento automatico del grafo degli oggetti secondo i legami di associazione definiti a livello di linguaggio.<br/>\r\nIl caricamento di un\'ipotetica istanza della classe Studente, potrebbe automaticamente produrre il caricamento dei dati collegati sugli esami sostenuti. Tale caricamento, in più, può avvenire solo se il dato è effettivamente richiesto dal programma, ed è altrimenti evitato (tecnica nota con il nome di lazy-initialization).</li>\r\n<li>Gestione della concorrenza nell\'accesso ai dati durante conversazioni.<br/>\r\nConflitti durante la modifica di un dato da parte di più utenti in contemporanea, possono essere automaticamente rilevati dal sistema ORM.</li>\r\n<li>Meccanismi di caching dei dati.<br/>Per esempio, se accade che uno stesso dato venga prelevato più volte dal RDBMS, il sistema ORM può fornire automaticamente un supporto al caching che migliori le prestazioni dell\'applicazione e riduca il carico sul sistema DBMS.</li>\r\n<li>Gestione di una conversazione mediante uso del design pattern Unit of Work<br/>Ritarda tutte le azioni di aggiornamento dei dati al momento della chiusura della conversazione; in questo modo le richieste inviate al RDBMS sono quelle strettamente indispensabili (per es. viene eseguita solo l\'ultima di una serie di update su uno stesso dato, oppure non viene eseguita affatto una serie di update su di un dato che in seguito viene eliminato); inoltre il colloquio con il DBMS avviene mediante composizione di query multiple in un unico statement, limitando così al minimo il numero di round-trip-time richiesti e, conseguentemente, i tempi di risposta dell\'applicazione.</li>\r\n</ul>\r\nL\'uso di un ORM favorisce il raggiungimento di più alti standard qualitativi software, migliorando in particolare le caratteristiche di correttezza, manutenibilità, evolvibilità e portabilità.\r\n\r\n[crf. http://it.wikipedia.org/wiki/Object-relational_mapping] - contenuto in sviluppo.\r\n\r\nArticoli scientifici:\r\n\r\nAltre fonti:\r\nhttp://www.dcs.fmph.uniba.sk/diplomovky/obhajene/getfile.php/dp.orsag.orm.pdf?id=86&fid=147&type=application%2Fpdf\r\nhttp://www.uio.no/studier/emner/matnat/ifi/INF5750/h07/undervisningsmateriale/object-relational_mapping_and_hibernate.pdf\r\nhttp://www.cs.colorado.edu/~kena/classes/5448/s11/presentations/ordmpresentation.pdf\r\n\r\nStrumenti software:\r\nhttp://hibernate.org/\r\n\r\n','','filtered_html'),('node','blog',0,24,27,'und',0,'L\'integrazione portale/server RADIUS non funziona ancora al 100% ed è attualmente limitata alla sola autenticazione senza il trasferimento di attributi quali l\'email istituzionale (@studenti.uniparthenope.it oppure @uniparthenope.it).\r\n\r\nSenza l\'email impostata, non è possibile variare il proprio profilo per l\'attivazione dei servizi senza specificare una password che, però, non esiste (non è quella wifi/posta/servizi).\r\n\r\nPer ovviare a questo inconveniente, dopo il primo login è consigliabile inviare un messaggio privato all\'utente admin (ripeto, <em>admin</em>!) con il proprio nome, cognome ed indirizzo email istituzionale @studenti.uniparthenope.it o @uniparthenope.it.','','filtered_html'),('node','blog',0,25,28,'und',0,'Avviso di Seminario (parte integrante dei corsi di TW/P3L/PRL)\r\nJava Server Faces - A. Agliata CTO @ T&C Systems Group srl\r\nMercoledì 20 Giugno, ore 8:30 - 10:30, Aula 5, CDN C4','','filtered_html'),('node','event',0,26,29,'und',0,'Avviso di Seminario (parte integrante dei corsi di TW/P3L/PRL)\r\nJava Server Faces - A. Agliata CTO @ T&C Systems Group srl\r\nMercoledì 20 Giugno, ore 8:30 - 10:30, Aula 5, CDN C4\r\n\r\nAntonio Agliata, dottore in Informatica, è chief technical officer presso la T&C Systems Group srl, dove coordina e sviluppa software basati sul paradigma OOP (Obejct Oriented Programming) ed imperativo su differenti tecnologie web oriented e mobile. Tutor aziendale e correlatore di neolaureati in discipline informatiche ed ingegneristiche. ','','filtered_html'),('node','new',0,27,30,'und',0,'http://students.uniparthenope.it/?q=node/26\r\n','','filtered_html'),('node','blog',0,28,31,'und',0,'Suggerimenti per la progettazione di applicazioni destinate all\'uso attraverso i terminali mobili (ormai l\'80% del traffico internet).\r\n\r\n1. http://www.slideshare.net/bryanrieger/rethinking-the-mobile-web-by-yiibu\r\n2. http://www.webmetrics.com/content/download/4020/59629/file/Forrester_Mobile_App_Design_Best_Practices.pdf\r\n3. http://www.amazon.com/Super-Sad-True-Love-Story/dp/1400066409\r\n\r\nSeminare per raccogliere!','','filtered_html'),('node','blog',0,29,32,'und',0,'...ovvero vecchie tecnologie lustrate a nuovo.\r\nInvito a studiare i seguenti argomenti al fine di rendere \"up to date\" i progetti di Tecnologie Web:\r\n\r\njQuery è una libreria di funzioni (framework) javascript, cross-browser per le applicazioni web, che si propone come obiettivo quello di semplificare la programmazione lato client delle pagine HTML.\r\nPubblicato, per la prima volta il 22 agosto 2005 da John Resig, ha raggiunto la versione 1 (stabile) il 26 agosto dell\'anno successivo.\r\nTramite l\'uso della libreria jQuery è possibile, con poche righe di codice, effettuare svariate operazioni, come ad esempio ottenere l\'altezza di un elemento, o farlo scomparire con effetto dissolvenza.\r\nAnche la gestione degli eventi è completamente standardizzata, automatica; stessa cosa per quanto riguarda l\'utilizzo di AJAX, in quanto sono presenti alcune funzioni molto utili e veloci che si occupano di istanziare i giusti oggetti ed effettuare la connessione e l\'invio dei dati.\r\n[cfr. Wikipedia]\r\n\r\nhttp://jquery.com/\r\nhttp://jqueryui.com/\r\n\r\nE l\'immancabile w3schools: http://www.w3schools.com/jquery/default.asp\r\n\r\nIl primo che scrive un buon tutorial e lo \"blogga\" vince la consueta bambolina!','','filtered_html'),('node','book',0,30,36,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\">\r\n \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n\r\n\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\n\r\n\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\n\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\n\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\n\r\npre {\r\n font: normal 100% monospace; \r\n}\r\n\r\n\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n\r\n\r\n\r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n\r\na{\r\n text-decoration: none;\r\n}\r\n\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n\r\n<body>\r\n<h3 class=\"operation\"> Recupera tempo di arrivo dei bus</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce la previsione di arrivo dei bus alla palina<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/oraribus/<span class=\"uripart\">{ID_Palina}</span><span class=\"uripart\">{ID_Linea}</span>\r\n</pre>\r\n<h4>URI Parameters</h4>\r\n<dl>\r\n<dt class=\"uripart\">{ID_Palina}</dt>\r\n<dd>bus stop id</dd>\r\n<dt class=\"uripart\">{ID_Linea}</dt>\r\n<dd>bus line id</dd>\r\n</dl>\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\",\r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n \r\n \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"times\":[{\"0\":\"16.20\"}]\r\n \r\n </pre>\r\n L\'API restituisce la previsione di arrivo dei bus alla palina.\r\n \r\n </body>','','full_html'),('node','book',0,30,37,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\"> Recupera tempo di arrivo dei bus</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce la previsione di arrivo dei bus alla palina<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/oraribus/<span class=\"uripart\">{ID_Palina}</span><span class=\"uripart\">{ID_Linea}</span>\r\n</pre>\r\n<h4>URI Parameters</h4>\r\n<dl>\r\n<dt class=\"uripart\">{ID_Palina}</dt>\r\n<dd>bus stop id</dd>\r\n<dt class=\"uripart\">{ID_Linea}</dt>\r\n<dd>bus line id</dd>\r\n</dl>\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\",\r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n \r\n \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"times\":[{\"0\":\"16.20\"}]\r\n \r\n </pre>\r\n L\'API restituisce la previsione di arrivo dei bus alla palina.\r\n \r\n </body>','','full_html'),('node','book',0,30,68,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\"> Recupera tempo di arrivo dei bus</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce la previsione di arrivo dei bus alla palina<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/oraribus\r\n</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\",\r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n<h4>Exemple of use</h4> \r\ncurl -X GET -d \"ID_Palina=2700\" -d \"ID_Linea=C2\" http://api.uniparthenope.it:10018/oraribus.json\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"times\":[{\"0\":\"16.20\"}]\r\n \r\n </pre>\r\n L\'API restituisce la previsione di arrivo dei bus alla palina.\r\n \r\n </body>','','full_html'),('node','book',0,30,71,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\"> Recupera tempo di arrivo dei bus</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce la previsione di arrivo dei bus alla palina<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/oraribus\r\n</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\",\r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n<h4>Exemple of use</h4> \r\ncurl -X GET -d \"ID_Palina=2700\" -d \"ID_Linea=C2\" http://api.uniparthenope.it:10018/oraribus.json\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"times\":[{\"0\":\"16.20\"}]\r\n \r\n </pre>\r\n L\'API restituisce la previsione di arrivo dei bus alla palina.\r\n \r\n </body>','','full_html'),('node','book',0,30,72,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\"> Recupera tempo di arrivo dei bus</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce la previsione di arrivo dei bus alla palina<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/oraribus\r\n</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\",\r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n<h4>Exemple of use</h4> \r\ncurl -X GET -d \"ID_Palina=2700\" -d \"ID_Linea=C2\" http://api.uniparthenope.it:10018/oraribus.json\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"times\":[{\"0\":\"16.20\"}]\r\n \r\n </pre>\r\n L\'API restituisce la previsione di arrivo dei bus alla palina.\r\n \r\n </body>','','full_html'),('node','book',0,30,73,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\"> Recupera tempo di arrivo del bus</h3>\r\n<h4>Description</h4>Dato il numero di una palina e il nome di una linea, l\'API restituisce la previsione di arrivo del bus alla palina<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/oraribus\r\n</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\",\r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n<h4>Exemple of use</h4> \r\ncurl -X GET -d \"ID_Palina=2700\" -d \"ID_Linea=C2\" http://api.uniparthenope.it:10018/oraribus.json\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"times\":[{\"0\":\"16.20\"}]\r\n \r\n </pre>\r\n L\'API restituisce la previsione di arrivo dei bus alla palina.\r\n \r\n </body>','','full_html'),('node','book',0,32,39,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Fermate lungo la strada</h3>\r\n<h4>Description</h4> Dati il nome della strada e della città, l\'API restituisce l\'elenco delle paline ivi posizionate.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/infostradapalina/<span class=\"uripart\">{ID_Via}</span><span class=\"uripart\">{ID_Comune}</span>\r\n</pre>\r\n<h4>URI Parameters</h4>\r\n<dl>\r\n<dt class=\"uripart\">{ID_Via}</dt>\r\n<dd>street name</dd>\r\n<dt class=\"uripart\">{ID_Comune}</dt>\r\n<dd>city name</dd>\r\n</dl>\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Via\" : \"argine\",\r\n \"ID_Comune\" : \"napoli\"\r\n \r\n </pre>\r\n \r\n \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"palina\": [{\r\n \"ID\": {\r\n \"0\": \"4014\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"ARGINE\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8512294238736\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.3123214669019\"\r\n }\r\n }, {\r\n \"ID\": {\r\n \"0\": \"4003\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"ARGINE-PALERMO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8547015354947\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.3198190219982\"\r\n }\r\n }, {\r\n \"ID\": {\r\n \"0\": \"4323\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"ARGINE-M.PALERMO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.85458646518\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.3201701774699\"\r\n }\r\n }],...\r\n }\r\n </pre>\r\n l\'API restituisce l\'elenco delle paline ivi posizionate e la loro posizione espressa in latitudine e longitudine\r\n ','','full_html'),('node','book',0,32,58,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Fermate lungo la strada</h3>\r\n<h4>Description</h4> Dati il nome della strada e della città, l\'API restituisce l\'elenco delle paline ivi posizionate.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/infostradapalina</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Via\" : \"argine\",\r\n \"ID_Comune\" : \"napoli\"\r\n \r\n </pre>\r\n \r\n <h4>Esemple of use</h4>\r\n\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"palina\": [{\r\n \"ID\": {\r\n \"0\": \"4014\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"ARGINE\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8512294238736\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.3123214669019\"\r\n }\r\n }, {\r\n \"ID\": {\r\n \"0\": \"4003\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"ARGINE-PALERMO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8547015354947\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.3198190219982\"\r\n }\r\n }, {\r\n \"ID\": {\r\n \"0\": \"4323\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"ARGINE-M.PALERMO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.85458646518\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.3201701774699\"\r\n }\r\n }],...\r\n }\r\n </pre>\r\n l\'API restituisce l\'elenco delle paline ivi posizionate e la loro posizione espressa in latitudine e longitudine\r\n ','','full_html'),('node','book',0,32,59,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Fermate lungo la strada</h3>\r\n<h4>Description</h4> Dati il nome della strada e della città, l\'API restituisce l\'elenco delle paline ivi posizionate.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/infostradapalina</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Via\" : \"argine\",\r\n \"ID_Comune\" : \"napoli\"\r\n \r\n </pre>\r\n \r\n <h4>Esemple of use</h4>\r\ncurl -X GET -d \"ID_Via=argine\" -d \"ID_Comune=napoli\" http://api.uniparthenope.it:10018/infostradapalina.json\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"palina\": [{\r\n \"ID\": {\r\n \"0\": \"4014\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"ARGINE\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8512294238736\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.3123214669019\"\r\n }\r\n }, {\r\n \"ID\": {\r\n \"0\": \"4003\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"ARGINE-PALERMO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8547015354947\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.3198190219982\"\r\n }\r\n }, {\r\n \"ID\": {\r\n \"0\": \"4323\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"ARGINE-M.PALERMO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.85458646518\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.3201701774699\"\r\n }\r\n }],...\r\n }\r\n </pre>\r\n l\'API restituisce l\'elenco delle paline ivi posizionate e la loro posizione espressa in latitudine e longitudine\r\n ','','full_html'),('node','book',0,33,40,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">1.3 Info Comuni</h3>\r\n<h4>Description</h4>L\'API restituisce l\'elenco dei comuni serviti dai bus.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/comunibus/\r\n </pre>\r\n<h4>URI Parameters</h4>n/a<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>n/a<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"comune\":[\"CASALNUOVO\",\"SAN GIORGIO A CREMANO\",\"SAN SEBASTIANO\",\"POZZUOLI\",...\r\n \r\n </pre>\r\n L\'API restituisce l\'elenco dei comuni serviti dai bus.\r\n</body>','','full_html'),('node','book',0,33,60,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">1.3 Info Comuni</h3>\r\n<h4>Description</h4>L\'API restituisce l\'elenco dei comuni serviti dai bus.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/comunibus/\r\n </pre>\r\n<h4>URI Parameters</h4>n/a<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>n/a<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Esemple of use</h4>\r\n\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"comune\":[\"CASALNUOVO\",\"SAN GIORGIO A CREMANO\",\"SAN SEBASTIANO\",\"POZZUOLI\",...\r\n \r\n </pre>\r\n L\'API restituisce l\'elenco dei comuni serviti dai bus.\r\n</body>','','full_html'),('node','book',0,33,61,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">1.3 Info Comuni</h3>\r\n<h4>Description</h4>L\'API restituisce l\'elenco dei comuni serviti dai bus.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/comunibus/\r\n </pre>\r\n<h4>URI Parameters</h4>n/a<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>n/a<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Exemple of use</h4>\r\ncurl -X GET http://api.uniparthenope.it:10018/comunibus.json\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"comune\":[\"CASALNUOVO\",\"SAN GIORGIO A CREMANO\",\"SAN SEBASTIANO\",\"POZZUOLI\",...\r\n \r\n </pre>\r\n L\'API restituisce l\'elenco dei comuni serviti dai bus.\r\n</body>','','full_html'),('node','book',0,34,41,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n\r\n<h3 class=\"operation\">Info palina</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce le informazioni su di essa.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/infopalina/<span class=\"uripart\">{ID_Palina}</span>\r\n</pre>\r\n<h4>URI Parameters</h4>\r\n<dl>\r\n<dt class=\"uripart\">{ID_Palina}</dt>\r\n<dd>bus stop id</dd>\r\n</dl>\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\"\r\n \r\n </pre>\r\n \r\n \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"info\": [{\r\n \"NOME\": {\r\n \"0\": \"PIAZZALE TECCHIO STAZIONAMENTO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8227042196634\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1938999900937\"\r\n }\r\n }]\r\n \r\n\r\n </pre>\r\n l\'API restituisce la via lungo la quale è situata la palina, la latitudine e la longitudine della palina.\r\n','','full_html'),('node','book',0,34,62,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n\r\n<h3 class=\"operation\">Info palina</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce le informazioni su di essa.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/infopalina/<span class=\"uripart\">{ID_Palina}</span>\r\n</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\"\r\n \r\n </pre>\r\n<h4>Exemple of use</h4> \r\ncurl -X GET -d \"ID_Palina=2700\" http://api.uniparthenope.it:10018/infopalina.json \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"info\": [{\r\n \"NOME\": {\r\n \"0\": \"PIAZZALE TECCHIO STAZIONAMENTO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8227042196634\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1938999900937\"\r\n }\r\n }]\r\n \r\n\r\n </pre>\r\n l\'API restituisce la via lungo la quale è situata la palina, la latitudine e la longitudine della palina.','','full_html'),('node','book',0,34,63,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n\r\n<h3 class=\"operation\">Info palina</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce le informazioni su di essa.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/infopalina</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\"\r\n \r\n </pre>\r\n<h4>Exemple of use</h4> \r\ncurl -X GET -d \"ID_Palina=2700\" http://api.uniparthenope.it:10018/infopalina.json \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"info\": [{\r\n \"NOME\": {\r\n \"0\": \"PIAZZALE TECCHIO STAZIONAMENTO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8227042196634\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1938999900937\"\r\n }\r\n }]\r\n \r\n\r\n </pre>\r\n l\'API restituisce la via lungo la quale è situata la palina, la latitudine e la longitudine della palina.','','full_html'),('node','book',0,35,42,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Info veicoli di linea</h3>\r\n<h4>Description</h4>Dato il nome di una linea,l\'API restituisce l\'elenco dei veicoli che stanno servendo quella linea.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/posizionebus/<span class=\"uripart\">{ID_Linea}</span>\r\n</pre>\r\n<h4>URI Parameters</h4>\r\n<dl>\r\n<dt class=\"uripart\">{ID_Linea}</dt>\r\n<dd>bus line id</dd>\r\n</dl>\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n \r\n \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \r\n \"infoveicolo\": [{\r\n \"VEICOLO\": {\r\n \"0\": \"B615\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8219981914021\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.18735386692\"\r\n },\r\n \"NODOR\": {\r\n \"0\": \"2240\"\r\n },\r\n \"NODDES\": {\r\n \"0\": \"2236\"\r\n },\r\n \"CAP_DST\": {\r\n \"0\": \"2700\"\r\n },\r\n \"TIME\": {\r\n \"0\": \"14\\/06\\/2012 16.21.26\"\r\n }\r\n }, {\r\n \"VEICOLO\": {\r\n \"0\": \"T018\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8226966970438\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1942109734631\"\r\n },\r\n \"NODOR\": {\r\n \"0\": \"2700\"\r\n },\r\n \"NODDES\": {\r\n \"0\": \"2629\"\r\n },\r\n \"CAP_DST\": {\r\n \"0\": \"2700\"\r\n },\r\n \"TIME\": {\r\n \"0\": \"14\\/06\\/2012 16.20.56\"\r\n }\r\n }\r\n ]\r\n \r\n\r\n \r\n </pre>\r\n \'API restituisce l\'elenco dei veicoli che stanno servendo quella line e la loro posizione attuale.\r\n </body>','','full_html'),('node','book',0,35,64,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Info veicoli di linea</h3>\r\n<h4>Description</h4>Dato il nome di una linea,l\'API restituisce l\'elenco dei veicoli che stanno servendo quella linea.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/posizionebus</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n \r\n<h4>Exemple of use</h4>\r\ncurl -X GET -d \"ID_Linea=C2\" http://api.uniparthenope.it:10018/posizionebus.json \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \r\n \"infoveicolo\": [{\r\n \"VEICOLO\": {\r\n \"0\": \"B615\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8219981914021\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.18735386692\"\r\n },\r\n \"NODOR\": {\r\n \"0\": \"2240\"\r\n },\r\n \"NODDES\": {\r\n \"0\": \"2236\"\r\n },\r\n \"CAP_DST\": {\r\n \"0\": \"2700\"\r\n },\r\n \"TIME\": {\r\n \"0\": \"14\\/06\\/2012 16.21.26\"\r\n }\r\n }, {\r\n \"VEICOLO\": {\r\n \"0\": \"T018\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8226966970438\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1942109734631\"\r\n },\r\n \"NODOR\": {\r\n \"0\": \"2700\"\r\n },\r\n \"NODDES\": {\r\n \"0\": \"2629\"\r\n },\r\n \"CAP_DST\": {\r\n \"0\": \"2700\"\r\n },\r\n \"TIME\": {\r\n \"0\": \"14\\/06\\/2012 16.20.56\"\r\n }\r\n }\r\n ]\r\n \r\n\r\n \r\n </pre>\r\n \'API restituisce l\'elenco dei veicoli che stanno servendo quella line e la loro posizione attuale.\r\n </body>','','full_html'),('node','book',0,36,43,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\"> Linee Bus</h3>\r\n<h4>Description</h4>L\'API restituisce il nome di tutte le linee anm.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/infolinee/</pre>\r\n<h4>URI Parameters</h4>n/a<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>n/a<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \"linea\": [\"ALIB\", \"C1\", \"C11\", \"C12\", \"C13\",...\r\n \r\n </pre>\r\n L\'API restituisce il nome di tutte le linee anm.\r\n ','','full_html'),('node','book',0,36,65,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\"> Linee Bus</h3>\r\n<h4>Description</h4>L\'API restituisce il nome di tutte le linee anm.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/infolinee/</pre>\r\n<h4>URI Parameters</h4>n/a<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>n/a<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Exemple of use</h4>\r\n\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \"linea\": [\"ALIB\", \"C1\", \"C11\", \"C12\", \"C13\",...\r\n \r\n </pre>\r\n L\'API restituisce il nome di tutte le linee anm.\r\n ','','full_html'),('node','book',0,36,66,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\"> Linee Bus</h3>\r\n<h4>Description</h4>L\'API restituisce il nome di tutte le linee anm.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/infolinee/</pre>\r\n<h4>URI Parameters</h4>n/a<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>n/a<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Exemple of use</h4>\r\ncurl -X GET http://api.uniparthenope.it:10018/infolinee.json\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \"linea\": [\"ALIB\", \"C1\", \"C11\", \"C12\", \"C13\",...\r\n \r\n </pre>\r\n L\'API restituisce il nome di tutte le linee anm.\r\n ','','full_html'),('node','book',0,37,44,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\nh3 class=\"operation\">1.7 Percorso Bus</h3>\r\n<h4>Description</h4>Dato il nome della linea, L\'API restituisce il percorso del bus.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/percorsobus/<span class=\"uripart\">{ID_Linea}</span>\r\n</pre>\r\n<h4>URI Parameters</h4>\r\n<dl>\r\n<dt class=\"uripart\">{ID_Linea}</dt>\r\n<dd>bus line id</dd>\r\n</dl>\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n \r\n \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"stop\": [{\r\n \"ID\": {\r\n \"0\": \"2700\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"PIAZZALE TECCHIO STAZIONAMENTO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8227042196634\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1938999900937\"\r\n },\r\n \"VERSO\": {\r\n \"0\": \"As\"\r\n }\r\n }, {\r\n \"ID\": {\r\n \"0\": \"2629\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"TECCHIO-POLITECNICO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8239706843335\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1943130504403\"\r\n },\r\n \"VERSO\": {\r\n \"0\": \"As\"\r\n }\r\n },\r\n ....\r\n \r\n </pre>\r\n L\'API restituisce il percorso del bus indicando, per ogni fermata : l\'identificativo della palina, la via \r\n lungo la quale è situata la palina, la latitudine e la longitudine della palina, e il verso di percorrenza del bus.\r\n </body>','','filtered_html'),('node','book',0,37,45,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">1.7 Percorso Bus</h3>\r\n<h4>Description</h4>Dato il nome della linea, L\'API restituisce il percorso del bus.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/percorsobus/<span class=\"uripart\">{ID_Linea}</span>\r\n</pre>\r\n<h4>URI Parameters</h4>\r\n<dl>\r\n<dt class=\"uripart\">{ID_Linea}</dt>\r\n<dd>bus line id</dd>\r\n</dl>\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n \r\n \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"stop\": [{\r\n \"ID\": {\r\n \"0\": \"2700\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"PIAZZALE TECCHIO STAZIONAMENTO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8227042196634\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1938999900937\"\r\n },\r\n \"VERSO\": {\r\n \"0\": \"As\"\r\n }\r\n }, {\r\n \"ID\": {\r\n \"0\": \"2629\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"TECCHIO-POLITECNICO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8239706843335\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1943130504403\"\r\n },\r\n \"VERSO\": {\r\n \"0\": \"As\"\r\n }\r\n },\r\n ....\r\n \r\n </pre>\r\n L\'API restituisce il percorso del bus indicando, per ogni fermata : l\'identificativo della palina, la via \r\n lungo la quale è situata la palina, la latitudine e la longitudine della palina, e il verso di percorrenza del bus.\r\n </body>','','full_html'),('node','book',0,37,67,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">1.7 Percorso Bus</h3>\r\n<h4>Description</h4>Dato il nome della linea, L\'API restituisce il percorso del bus.<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/percorsobus\r\n</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Linea\" : \"C2\"\r\n \r\n </pre>\r\n<h4>Exemple of use</h4> \r\ncurl -X GET -d \"ID_Linea=C2\" http://api.uniparthenope.it:10018/percorsobus.json\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"stop\": [{\r\n \"ID\": {\r\n \"0\": \"2700\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"PIAZZALE TECCHIO STAZIONAMENTO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8227042196634\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1938999900937\"\r\n },\r\n \"VERSO\": {\r\n \"0\": \"As\"\r\n }\r\n }, {\r\n \"ID\": {\r\n \"0\": \"2629\"\r\n },\r\n \"NOME\": {\r\n \"0\": \"TECCHIO-POLITECNICO\"\r\n },\r\n \"LAT\": {\r\n \"0\": \"40.8239706843335\"\r\n },\r\n \"LON\": {\r\n \"0\": \"14.1943130504403\"\r\n },\r\n \"VERSO\": {\r\n \"0\": \"As\"\r\n }\r\n },\r\n ....\r\n \r\n </pre>\r\n L\'API restituisce il percorso del bus indicando, per ogni fermata : l\'identificativo della palina, la via \r\n lungo la quale è situata la palina, la latitudine e la longitudine della palina, e il verso di percorrenza del bus.\r\n </body>','','full_html'),('node','book',0,38,46,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Bus che servono la palina</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce l\'elenco dei nomi delle linee che la servono. <h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/transitpalina/<span class=\"uripart\">{ID_Palina}</span>\r\n</pre>\r\n<h4>URI Parameters</h4>\r\n<dl>\r\n<dt class=\"uripart\">{ID_Palina}</dt>\r\n<dd>bus stop id</dd>\r\n</dl>\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\"\r\n \r\n </pre>\r\n \r\n \r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \"linea\":[{\"0\":\"C1 \"},\r\n {\"0\":\"C2 \"},\r\n {\"0\":\"C6 \"}]\r\n \r\n </pre>\r\n L\'API restituisce l\'elenco dei nomi delle linee che servono la palina.\r\n </body>\r\n','','full_html'),('node','book',0,38,55,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Bus che servono la palina</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce l\'elenco dei nomi delle linee che la servono. <h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/transitpalina/</pre>\r\n<h4>URI Parameters</h4>\r\n<dl>\r\n<dt class=\"uripart\">{ID_Palina}</dt>\r\n<dd>bus stop id</dd>\r\n</dl>\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\"\r\n \r\n </pre>\r\n \r\n<h4>Esempio di utilizzo </h4>\r\n\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \"linea\":[{\"0\":\"C1 \"},\r\n {\"0\":\"C2 \"},\r\n {\"0\":\"C6 \"}]\r\n \r\n </pre>\r\n L\'API restituisce l\'elenco dei nomi delle linee che servono la palina.\r\n </body>','','full_html'),('node','book',0,38,56,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Bus che servono la palina</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce l\'elenco dei nomi delle linee che la servono. <h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/transitpalina/</pre>\r\n<h4>URI Parameters</h4>\r\n<dl>\r\n<dt class=\"uripart\">{ID_Palina}</dt>\r\n<dd>bus stop id</dd>\r\n</dl>\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\"\r\n \r\n </pre>\r\n \r\n<h4>Esempio di utilizzo </h4>\r\ncurl -X GET -d \"ID_Palina=2700\" http://api.uniparthenope.it:10018/transitpalina/\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \"linea\":[{\"0\":\"C1 \"},\r\n {\"0\":\"C2 \"},\r\n {\"0\":\"C6 \"}]\r\n \r\n </pre>\r\n L\'API restituisce l\'elenco dei nomi delle linee che servono la palina.\r\n </body>','','full_html'),('node','book',0,38,57,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Bus che servono la palina</h3>\r\n<h4>Description</h4>Dato il numero di una palina, l\'API restituisce l\'elenco dei nomi delle linee che la servono. <h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/transitpalina</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Resource Formats</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Authentication</h4>not required<h4>Request Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\"\r\n \r\n </pre>\r\n \r\n<h4>Exemple of use </h4>\r\ncurl -X GET -d \"ID_Palina=2700\" http://api.uniparthenope.it:10018/transitpalina.json\r\n<h4>Responses</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Response Entities</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \"linea\":[{\"0\":\"C1 \"},\r\n {\"0\":\"C2 \"},\r\n {\"0\":\"C6 \"}]\r\n \r\n </pre>\r\n L\'API restituisce l\'elenco dei nomi delle linee che servono la palina.\r\n </body>','','full_html'),('node','book',0,38,102,'und',0,'<p> </p>\r\n<p> </p>\r\n<p>\r\n <meta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\" />\r\n</p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n</p>\r\n<p> </p>\r\n<p>\r\n <link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n <script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n <style type=\"text/css\">\r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n} </style>\r\n <script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script></p>\r\n<h3 class=\"operation\">\r\n Bus che servono la palina</h3>\r\n<h4>\r\n Description</h4>\r\n<p>Dato il numero di una palina, l'API restituisce l'elenco dei nomi delle linee che la servono durante la giornata.</p>\r\n<h4>\r\n URI</h4>\r\n<pre>\r\nhttp://api.uniparthenope.it:10018/transitpalina</pre>\r\n<h4>\r\n URI Parameters</h4>\r\n<p>n/a</p>\r\n<h4>\r\n HTTP Method</h4>\r\n<p><span class=\"method\">GET</span></p>\r\n<h4>\r\n Resource Formats</h4>\r\n<ul>\r\n <li>\r\n application/json</li>\r\n</ul>\r\n<h4>\r\n Authentication</h4>\r\n<p>not required</p>\r\n<h4>\r\n Request Entities</h4>\r\n<pre class=\"brush: js\">\r\n \r\n "ID_Palina" : "2700"\r\n \r\n </pre>\r\n<h4>\r\n Exemple of use</h4>\r\n<p>curl -X GET -d "ID_Palina=2700" http://api.uniparthenope.it:10018/transitpalina.json</p>\r\n<h4>\r\n Responses</h4>\r\n<dl>\r\n <dt class=\"statuscode\">\r\n 400 Bad Request</dt>\r\n <dd>\r\n I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>\r\n Response Entities</h4>\r\n<pre class=\"brush: js\">\r\n \r\n \r\n "linea":[{"0":"C1 "},\r\n {"0":"C2 "},\r\n {"0":"C6 "}]\r\n \r\n </pre>\r\n<p>L'API restituisce l'elenco dei nomi delle linee che servono la palina durante la giornata.</p>\r\n<p>L'elenco può essere vuoto quando nessun bus transita per la palina durante la giornata.</p>\r\n','','full_html'),('node','blog',0,39,47,'und',0,'<h2>Semplice Esempio di Servlet</h2>\r\nPrerequisiti:\r\n• Istallare SDK Java\r\n• Istallare Tomcat web server\r\nCosa comprende questo esempio Servlet\r\n<ol>1. Come scrivere la classe Servlet.\r\n2. Come compilare la classe Servlet.\r\n3. Come estrarre i parametri dal form HTML da HttpServeletRequest.\r\n4. Come Implementare il descriptor file web.xml.\r\n5. Come creare il file WAR(Web application archive).\r\n6. Come eseguire la semplice applicazione in Tomcat web container.</ol>\r\nQuesta semplicissima applicazione web contiene un file HTML e una Servlet. L’applicazione prevede di inserire il nostro nome nel form HTML e visualizzare un messaggio di benvenuto all’utente.\r\nDescriviamo in sei passi la creazione di una semplice applicazione web.\r\n\r\n<strong>Passo1:</strong> Creare una struttura di directory come mostrato in figura:\r\n\r\n<img src=\"http://www.servletworld.com/sites/default/files/figures/servlet-example.png\" width=\"273\" height=\"276\" /> \r\n\r\n<strong>Passo2:</strong> Creare il file HTML form.html nella directory servlet-example/pages.\r\n<pre><html>\r\n <head>\r\n <title>The servlet example </title>\r\n </head>\r\n <body>\r\n <h1>A simple web application</h1>\r\n <form method="POST" action="WelcomeServlet">\r\n <label for="name">Enter your name </label>\r\n <input type="text" id="name" name="name"/><br><br>\r\n <input type="submit" value="Submit Form"/>\r\n <input type="reset" value="Reset Form"/>\r\n </form>\r\n </body>\r\n</html></pre></div>\r\n\r\n<strong>Passo3:</strong> Creare la classe WelcomeServlet.class.\r\n\r\nCopiare il codice che segue nel file WelcomeServlet.java e salvarlo nella directory servlet-example/WEB-INF/src/jsptube/tutorials/servletexample.\r\n\r\n<cite>Nota:</cite> Puoi salvare il file sorgente java in qualsiasi directory, ma è necessario salvare il file class compilato nella cartella WEB-INF/classes prima di creare il file WAR. Tutte le Servlet e altre classi usate per l’applicazione web devono essere presenti nella directory classes.\r\n\r\n<pre>\r\n \r\nimport java.io.IOException;\r\nimport java.io.PrintWriter;\r\n \r\nimport javax.servlet.ServletConfig;\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\n \r\npublic class WelcomeServlet extends HttpServlet {\r\n \r\n@Override\r\npublic void init(ServletConfig config) throws ServletException {\r\nsuper.init(config);\r\n}\r\n \r\n \r\nprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n/*\r\n* Get the value of form parameter\r\n*/\r\nString name = request.getParameter(\"name\");\r\nString welcomeMessage = \"Welcome \"+name;\r\n/*\r\n* Set the content type(MIME Type) of the response.\r\n*/\r\nresponse.setContentType(\"text/html\");\r\n \r\nPrintWriter out = response.getWriter();\r\n/*\r\n* Write the HTML to the response\r\n*/\r\nout.println(\"<html>\");\r\nout.println(\"<head>\");\r\nout.println(\"<title> A very simple servlet example</title>\");\r\nout.println(\"</head>\");\r\nout.println(\"<body>\");\r\nout.println(\"<h1>\"+welcomeMessage+\"</h1>\");\r\nout.println(\"<a href=/servletexample>\"+\"Click here to go back to input page \"+\"</a>\");\r\nout.println(\"</body>\");\r\nout.println(\"</html>\");\r\nout.close();\r\n \r\n}\r\n \r\npublic void destroy() {}\r\n} \r\n</pre>\r\nCompilare il file WelcomeServlet.java con il comando:\r\n\r\n<code> javac WelcomeServlet.java</code>\r\n\r\nIl nuovo file WelcomeServlet.class è stato aggiunto nella stessa cartella. Spostare il file WelcomeServlet.class nella cartella classes.\r\n<cite>Nota</cite> Importante: Per compilare una qualsiasi Servlet bisogna importare il file servlet-api.jar nel class path.\r\n\r\n<strong>Passo 4:</strong> Implementare il description file web.xml\r\n\r\nCopiare il seguente codice nel file web.xml e salvarlo nella directory servlet-example/WEB-INF.\r\n\r\n<pre>\r\n<web-app version=\"2.4\"\r\nxmlns=\"http://java.sun.com/xml/ns/j2ee\"\r\nxmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\nxsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee\r\nhttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\">\r\n \r\n <servlet>\r\n <servlet-name>WelcomeServlet</servlet-name>\r\n <servlet-class>jsptube.tutorials.servletexample.WelcomeServlet</servlet-class>\r\n </servlet>\r\n <servlet-mapping>\r\n <servlet-name>WelcomeServlet</servlet-name>\r\n <url-pattern>/WelcomeServlet</url-pattern>\r\n </servlet-mapping>\r\n <welcome-file-list>\r\n <welcome-file> /pages/form.html </welcome-file>\r\n </welcome-file-list>\r\n</web-app>\r\n</pre>\r\n<strong>Passo 5:</strong> Creare il file WAR.\r\n\r\nSpostarsi nella directory servletexamle e creare il file WAR usando il commando\r\n\r\n<code>Jar cvf servletexample.war *</code>\r\n\r\nQuesto comando racchiude tutti I contenuti delle sotto-directory di servlet-example in un archivio chiamato serverexample.war. \r\n\r\n<strong>Passo 6:</strong> Pubblicare l’applicazione web server\r\n\r\nPer Pubblicare l\'appilicazione web in Tomcat, copiare il file WAR nella cartella <TOMCAT_HOME>/webapp.\r\nUna volta avviato il server, Tomcat estrarrà il file WAR nella directory con lo stesso nome del file WAR.\r\nPer avviare il server, spostarsi nella directory <TOMCAT_HOME/bin> ed eseguire il file startup.bat.\r\nL’applicazione sarà accessibile all’indirizzo: http://localhost:8080/servletexample/.\r\nSe il server Tomcat è in esecuzione su una porta diversa da 8080 è necessario modificare l’URL. \r\nLa figura mostra l’esecuzione dell’applicazione web da browser.\r\n\r\n<img src=\"http://www.servletworld.com/sites/default/files/figures/servlet-example-screem1.png\" width=\"500\" height=\"356\" /> \r\n\r\nPer visualizzare l’applicazione sulla piattaforma web.uniparthenope.it vai all’indirizzo:\r\n\r\nhttp://students.uniparthenope.it:8088/servletexample/\r\n\r\nInserire il proprio nome nel form HTML e cliccare sul bottone “Submitt Form”, apparirà una nuova finestra con un messaggio di benvenuto.\r\n\r\n<strong>Come funziona l’applicazione web</strong>\r\n\r\nQuando si accede all\'applicazione attraverso l’URL, ad esempio http://localhost:8080/servletexample/ , il server web lancia il file form.html.\r\n<li>Il path \\pages\\form.html è specificato in <welcome-file> nel file web.xml, in questo modo il web server lancia il file HTML di default.</li>\r\n<li>Quando si inserisce il nome dell’utente nel form HTML e si clicca il pulsante “Submitt Form”, il browser invia la richiesta HTTP POST con il parametro nome.</li>\r\n<li>In base al tag <servlet-mapping> nel file web.xml, il web container delega la richiesta alla classe WelcomeServlet.</li>\r\n<li>Ricevuta la richiesta, la WelcomeServlet:</li>\r\n<ol>Estrae il parametro dall\'oggetto HttpServletRequest.</ol>\r\n<ol>Genera il messaggio di benvenuto.</ol>\r\n<ol>Genera il documento HTML e scrive la risposta all’oggetto HttpServletResponse.</ol>\r\n<li>Il browser riceve il documento HTML come risposta e lo visualizza nella nuova finestra. </li>\r\n\r\n<strong>Descrizione del codice java</strong>\r\n\r\nLe API Servlet di Java si compongono di due packages: javax.servlet e javax.servlet.http. Il primo package contiene classi e interfacce indipendenti dal protocollo HTTP, mentre il secondo contiene classi e interfacce specifiche per il protocollo HTTP. \r\nPer implementare una qualsiasi Servlet è necessario importare le classi:\r\n\r\n<pre>import java.io.IOException;\r\nimport java.io.PrintWriter;\r\nimport javax.servlet.ServletConfig;\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;</pre>\r\n\r\nDichiariamo la classe servlet WelcomeServlet:\r\n\r\n<code>public class WelcomeServlet extends HttpServlet { </code>\r\n\r\nOgni classe servlet deve implementare l\'interfaccia javax.servlet.Servlet. La classe HttpServlet fornisce le specifiche HTTP per l\'interfaccia Servlet. Generalmente nelle applicazioni web, le Servlet implementano l\'interfaccia javax.servlet.Servlet indirettamente, mediante l\'estensione della classe javax.servlet.http.HttpServlet.\r\nIl metodo init() definisce il ciclo di vita di una Servlet (cioè il tempo che intercorre dal suo caricamento al suo rilascio) ed è definito nell’interfaccia javax.servlet.Servlet.\r\n\r\n<code>public void init(ServletConfig config) throws ServletException {\r\nsuper.init(config);\r\n}</code>\r\n\r\nPassiamo successivamente alla dichiarazione del metodo doPost(). Il metodo doPost() è definito nella classe HttpServlet ed è usato per manipolare l\'HTTP POST request. Questo metodo prende come argomenti gli oggetti HttpServletRequest e HttpServletResponse. \r\nHttpservletRequest incapsula l’inforamzione contenuta nella richiesta. L’ oggetto HttpServletResponse incapsula la risposta http.\r\n\r\n<code>protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {</code>\r\n\r\nLa classe HttpServlet fornisce l’implementazione del metodo service() che invoca o il metodo doGet() o il metodo doPost() basati sui metodi di richiesta http. Visto che si è usato il metodo POST nel nostro file HTML, la servlet chiamerà il metodo doPost().\r\nIl metodo get.Parameter() invocato sull’oggetto HttpServletRequest estrae il valore del parametro della richiesta.\r\n\r\n<code> String name = request.getParameter(\"name\"); </code>\r\n\r\nConcateniamo il messaggio di benvenuto al parametro.\r\n\r\n<code>String welcomeMessage = \"Welcome \"+name;</code>\r\n\r\nLa risposta generata è un tipo text/html \r\n\r\n<code>response.setContentType(\"text/html\");</code>\r\n\r\nUtilizziamo l’oggetto java.io.PrintWinter associato con ServeltResponse per scrivere e ritornare la risposta al client.\r\n<pre>\r\nPrintWriter out = response.getWriter();\r\n/*\r\n* Write the HTML to the response\r\n*/\r\nout.println(\"<html>\");\r\nout.println(\"<head>\");\r\nout.println(\"<title> A very simple servlet example</title>\");\r\nout.println(\"</head>\");\r\nout.println(\"<body>\");\r\nout.println(\"<h1>\"+welcomeMessage+\"</h1>\");\r\nout.println(\"<a href=/servletexample>\"+\"Click here to go back to input page \"+\"</a>\");\r\nout.println(\"</body>\");\r\nout.println(\"</html>\");\r\nout.close();\r\n</pre>\r\n\r\nIl metodo destroy() termina il cliclo di vita delle servlet ed è definto nell’interfaccia java.servlet.Servlet.\r\n\r\n<code>public void destroy() {}</code>\r\n\r\n\r\nRealizzato da:\r\n<cite>Massimiliano Magro\r\nValentina Pelliccia</cite>','','full_html'),('node','blog',0,40,48,'und',0,'<p>La seguente procedura è utile per installare il CMS Drupal nel proprio spazio web.</p>\r\n<ol>\r\n <li>\r\n Accesso tramite ssh ssh NOMEUTENTE@students.uniparthenope.it<br />\r\n </li>\r\n <li>\r\n Entrare nella directory public_html<br />\r\n cd public_html<br />\r\n </li>\r\n <li>\r\n Scaricare Drupal Puntare il proprio browser su: http://drupal.org/project/drupal<br />\r\n </li>\r\n <li>\r\n Copiare il collegamento del file desiderato, ad esempio http://ftp.drupal.org/files/projects/drupal-7.14.tar.gz<br />\r\n </li>\r\n <li>\r\n Scaricare il file compresso nel proprio spazio web:<br />\r\n wget http://ftp.drupal.org/files/projects/drupal-7.14.tar.gz<br />\r\n </li>\r\n <li>\r\n Decomprimere il file e rimuovere l'archivio di distribuzione tar -xvzf drupal-7.14.tar.gz rm *.gz<br />\r\n </li>\r\n <li>\r\n Consultare il file $HOME/README per le credenziali di accesso al database less $HOME/README annotare nome utente e password<br />\r\n </li>\r\n <li>\r\n Creare la directory sites/default/files<br />\r\n cd drupal-7.14<br />\r\n mkdir sites/default/files<br />\r\n cp ./sites/default/default.settings.php ./sites/default/settings.php<br />\r\n chmod a+w sites/default<br />\r\n </li>\r\n <li>\r\n Puntare il proprio browser su http://students.uniparthenope.it/~NOMEUTENTE/drupal-7.14/ e seguire le istruzioni.<br />\r\n </li>\r\n <li>\r\n Inserire le credenziali database ed utente (vedere file $HOME/README)<br />\r\n </li>\r\n <li>\r\n Fare click su Save and Continue<br />\r\n </li>\r\n <li>\r\n Impostare il titolo del portale e l'account di amministrazione<br />\r\n </li>\r\n <li>\r\n Fare click su Save and Continue</li>\r\n <li>\r\n Visitare il proprio portale CMS navigando su http://students.uniparthenope.it/~NOMEUTENTE/drupal-7.14/<br />\r\n Esempio: http://students.uniparthenope.it/~raffmont/drupal-7.14/</li>\r\n</ol>\r\n<p>Consultare http://www.drupal.org per maggiori informazioni.</p>\r\n','','full_html'),('node','forum',0,41,49,'und',0,'Prof io ho un problema. \r\nRiesco nell\' upload dei file (tramite WinSCP da linea di comando; lo stesso anche con il client FTP FileZilla) ma non riesco ad accedere via browser. \r\n\r\nQuando navigo sulla pagina students.uniparthenope.it/~0124000315 tutto ok, ma se cerco di spostarmi su una cartella viene tornato l\'errore \"404 Not Found\".\r\nIdee su come possa risolvere ? \r\n\r\nGrazie in anticipo','','filtered_html'),('node','blog',0,42,50,'und',0,'Questa procedura è utile quando si lavora in locale sul proprio PC e poi si desidera effettuare il deployment di quanto creato sulla piattaforma students.uniparthenope.it\r\n\r\n1. Scegliere un layout e scaricarlo sul proprio PC\r\nAd esempio: http://superdit.com/2011/04/13/34-free-clean-html-css-website-layout-templates/\r\n\r\n2. Utilizzare un editor HTML come Aptana Studio (http://aptana.com/) per effettuare le modifiche necessarie\r\n\r\n3. Utilizzare un client FTP come Filezilla () per trasferire i file nella propria directory\r\nHostname: students.uniparthenope.it\r\nUsername: NOMEUTENTE (ad esempio la proopria matricola)\r\nPassword: la password wifi/servizi/posta\r\nPort: 22\r\nFare click su quick connect\r\n\r\n4. Copiare i file sul server\r\nA connessione avvenuta impostare\r\nRemote path: /home/NOMEUTENTE/public_html\r\nLocal path: la directory che contiene i file da trasferire\r\nFare click con il pulsante destro sulla directory da trasferire, selezionare Upload\r\nAttendere il completamento della copia.\r\n\r\n5. Prova di quanto fatto\r\nPuntare il proprio browser sulla directoy appena creata.\r\nAd esempio http://students.uniparthenope.it/~raffmont/myhome/\r\n\r\nPer altri client come Windows Secure Copy (WinSCP, http://winscp.net/) seguire una procedura analoga.','','filtered_html'),('node','forum',0,43,51,'und',0,'Gentile Prof,\r\nvolevo utilizzare il servizio di hosting linux messo a disposizione. Ho spuntato dal mio profilo la casella per attivare lo spazio, ma accedendo da terminale mi dice: \"Permission denied, please try again.\"\r\n\r\nOra mi chiedo se bisogna aspettare l\'attivazione dello spazio, oppure sbaglio qualcosa?\r\n\r\nRingrazio in anticipo.','','filtered_html'),('node','forum',0,44,52,'und',0,'Nello script di attivazione dei servizi è possibile fare in modo che l\'utente riceva un messaggio privato da parte dell\'amministratore come notifica che un servizio è stato attivato o disattivato?','','filtered_html'),('node','blog',0,46,54,'und',0,'<B>XML (eXtended Markup Language)</B> è lo standard più utilizzato ed universalmente riconosciuto per la scrittura dei dati.\r\n\r\nPer Java sono state sviluppare numerose librerie in grado di <B>interagire con i file XML</B>, ma un posto di particolare rilievo merita JDOM, essendo di semplice utilizzo, ma al tempo stesso molto potente e completa.\r\n\r\nUtilizzando JDOM sarete in grado di:\r\n<UL> <LI><P ALIGN=LEFT STYLE=\"margin-bottom: 0cm; font-style: normal; font-weight: normal; widows: 2; orphans: 2\"> Scorrere un file XML, dalla radice alle foglie\r\n <LI><P ALIGN=LEFT STYLE=\"font-style: normal; font-weight: normal; widows: 2; orphans: 2\"> Scrivere un file XML, definendone la struttura dell’albero senza vincoli di alcun tipo.</UL>\r\n\r\nLa libreria, nella sua versione 2.0.2, può essere scaricata al seguente <A HREF=\"http://www.jdom.org/dist/binary/jdom-2.0.2.zip\"> link</A>\r\n\r\nTutta la documentazione ed altre versione è possibile reperirla sul sito <A HREF=\"http://www.jdom.org/\"> ufficiale</A>\r\n\r\n<B>Leggere un file XML</B>\r\n\r\nPer cominciare bisogna creare un oggetto SAXBuilder:\r\n\r\n <pre><code>SAXBuilder builder = new SAXBuilder(); </code></pre>\r\n\r\nQuesto oggetto ci fornirà il metodo build che si occupa di effettuare il parsing del file XML passatogli in argomento, restituendolo in un oggetto Document\r\n\r\n<pre><code> Document doc = builder build(new File(name.xml)); </code></pre>\r\n\r\nPer poter riuscire a scorrere la struttura creata nell’oggetto doc è necessario ottenere la root del documento(Ogni file XML dovrebbe avere un unica root):\r\n<pre> <code> Element rootElement = document.getRootElement(); </code></pre>\r\n\r\nLa classe Element, che possiamo definire il cuore di JDom, ci fornisce funzionalità molto interessanti come:\r\n<UL> <LI><P ALIGN=LEFT STYLE=\"font-style: normal; font-weight: normal; widows: 2; orphans: 2\"> Ottenere tutti gli elementi figli di un elemento:\r\n<pre><code>\r\nList children = rootElement.getChildren();\r\nIterator iterator = children.iterator();\r\nwhile (iterator.hasNext()){\r\n Element element = (Element)iterator.next();\r\n /...\r\n}\r\n</code></pre>\r\n<LI><P ALIGN=LEFT STYLE=\"font-style: normal; font-weight: normal; widows: 2; orphans: 2\">Ottenere un elemento figlio di un elemento:</FONT></FONT></FONT></P>\r\n<pre><code>Element child =rootElement.getChild(“namechild”);</code></pre>\r\n<LI><P ALIGN=LEFT STYLE=\"font-style: normal; font-weight: normal; widows: 2; orphans: 2\">Ottenere tutti gli attributi di un elemento, vi ricordo che gli attributi sono composti da due campi(name e value):\r\n<pre><code> List attributes = rootElement.getAttributes();\r\nIterator iterator = children.iterator();\r\nwhile(iterator.hasNext()){\r\n Attribute attribute = (Attribute)iterator.next();\r\n String name = attribute.getName();\r\n String value = attribute.getValue();\r\n //... \r\n}\r\n</code></pre>\r\n <LI><P ALIGN=LEFT STYLE=\"font-style: normal; font-weight: normal; widows: 2; orphans: 2\">Ottenere un attributo di un elemento e/o il suo valore:\r\n<pre> <code>Attribute attribute = rootElement.getAttribute(“name”);\r\nString value = rootElement.getAttributeValue(“name”);\r\nint value =attribute.getIntValue();\r\n//...\r\n}\r\n</code></pre>\r\n <LI><P ALIGN=LEFT STYLE=\"font-style: normal; font-weight: normal; widows: 2; orphans: 2\">Ottenere il testo compreso fra i tag di apertura e chiusura dell’elemento:\r\n<pre><code> String text = rootElement.getText();</code></pre>\r\n</UL>\r\n\r\n<B>Scrivere un file XML</B>\r\n\r\nPer poter scrivere un file XML gli oggetti da utilizzare sono più o meno\r\ngli stessi. Occorre pertanto creare un oggetto Document e assegnargli\r\nun elemento in fase di costruzione:</SPAN></SPAN></FONT></FONT></FONT></H2>\r\n<pre><code>\r\nElement rootElement = new Element("ROOT");\r\nDocument document = new Document(rootElement);\r\n</code></pre>\r\n\r\nPossiamo quindi <B>assegnare all’elemento radice, attributi e figli</B>\r\n<pre><code>\r\nElement child1 = new Element("CHILD1");\r\nrootElement.addContent(child1); \r\nElement child2 = new Element("CHILD2");\r\nchild2.setText("TextChild2");\r\nchild1.addContent(child2);<BR>\r\nrootElement.setAttribute("AName","AVal");\r\n</code></pre>\r\n\r\nLa struttura create nell’oggetto document sarà la seguente:\r\n<pre> <code>\r\n<ROOT AName="AVal">\r\n <CHILD1> \r\n <CHILD2>Textchild2</CHILD2>\r\n </CHILD1>\r\n</ROOT> \r\n </code></pre>\r\n\r\nPer scrivere la struttura creata, abbiamo bisogno dalla classe XMLOutputter, che si preoccupa di eseguire l’output della struttura XML creata:\r\n<pre> <code>\r\nXMLOutputter outputter = new XMLOutputter();\r\noutputter.output(document, new FileOutputStream("name.xml"));\r\n</code></pre>\r\n\r\nIl metodo output prende in argomento l’oggetto Document e un oggetto OutputStream su cui scrivere il document. Ovviamete il file se non esiste, esso viene creato.\r\n\r\nPer poter manipolare il file basta unire le nozioni appena imparate per la lettura con quelle della scrittura.\r\n\r\n<B>Fare il parsing dell\' XML</B>\r\n<pre> <code>\r\nSAXBuilder builder = new SAXBuilder();\r\nDocument doc = builder.build(“name”);\r\n</code></pre>\r\n\r\n<B>Ottenere la root del documento</B>\r\n<pre> <code>Element root = doc.getRootElement();</code></pre>\r\n\r\n<B>Creare nuovi figli, e nuovi attributi</B>\r\n<pre> <code>\r\nElement newChild = new Element("NewChild").setText("NewText");\r\nAttrbute newAtt = new Attribute(“name”,”value”);\r\n</code></pre>\r\n\r\n<B>Aggiungere gli attributi al nuovo figlio</B>\r\n<pre> <code>newChild.setAttribute(newAtt);</code></pre>\r\n\r\n<B>Aggiungere il nuovo figlio alla root</B>\r\n<pre> <code> root.addContent(newChild);</code></pre>\r\n\r\n<B>Scrivere la struttura manipolata</B>\r\n<pre> <code>\r\nXMLOutputter outputter = new XMLOutputter();\r\noutputter.output(document, new FileOutputStream("name.xml"));\r\n</code></pre>','','full_html'),('node','blog',0,47,69,'und',0,'<p><strong>L'SDK Android utilizzato è 2.2 (API Level 10).</strong></p>\r\n<p><br />\r\n L'esempio esplicita come ottenere i dati relativi al piano di studi di uno studente di cui riportiamo di seguito le specifiche:</p>\r\n<p>GET piano di studi per uno studente:</p>\r\n<p>Operazione eseguita: Restituisce il piano di studi di un determinato studente.</p>\r\n<p>Metodo http: GET URI: http://api.uniparthenope.it:9998/student/exams/studyplanning</p>\r\n<p>Esempio di uso: http://api.uniparthenope.it:9998/student/exams/studyplanning.json?user=0108000xxx&password=xxxxxxx è richiesta l’autentificazione per cui all’API, per cui vengono inviati due stringhe rappresentanti ”user” e “password” dell’utente di cui si vuole visualizzare il piano di studi.</p>\r\n<p>Ma passiamo all'analisi del codice:</p>\r\n<p><strong>Le seguenti importazioni sono per il metodo di lettura del response dell'API:</strong></p>\r\n<pre>\r\nimport java.io.InputStream;\r\nimport java.io.InputStreamReader;\r\nimport java.io.BufferedReader;\r\nimport java.io.IOException;\r\nimport org.apache.http.HttpEntity;\r\nimport org.apache.http.HttpResponse;\r\nimport org.apache.http.StatusLine;\r\nimport org.apache.http.client.ClientProtocolException;\r\nimport org.apache.http.client.HttpClient;\r\nimport org.apache.http.client.methods.HttpGet;\r\nimport org.apache.http.impl.client.DefaultHttpClient;\r\n</pre>\r\n<p><strong>le seguenti occorrono invece per effettuare il parsing della stringa ottenuto dall'operazione GET:</strong></p>\r\n<pre>\r\nimport org.json.JSONArray;\r\nimport org.json.JSONObject;\r\n</pre>\r\n<p>Con il codice seguente memorizzo il risultato dell'operazione di GET in un array di elementi JSON.</p>\r\n<p>Java efettua direttamente le operazioni di parsing attraverso delle apposite classi.</p>\r\n<p><strong>Attenzione il parsing JSON necesssita sia inserito in un blocco try {} catch{}</strong></p>\r\n<p>Ottengo in tal modo la lista degli esami del piano di studi di un utente le cui credenziali sono memorizzate in due stringhe: user e password.</p>\r\n<p><strong>urlAPIFunction contiene la stringa dell'API considerata</strong></p>\r\n<pre>\r\ntry { \r\n urlAPIfunction="http://192.167.9.47:9998/student/exams/studyplanning.json?\r\n user="+user.toString()+"&password="+password.toString(); \r\n String readStringApiGetJson = readStringApiJson(urlAPIfunction); JSONObject jObject = new JSONObject(readStringApiGetJson); \r\n JSONArray jsonArray = jObject.getJSONArray("studyplan"); \r\n for (int i = 0; i < jsonArray.length(); i++) { \r\n JSONObject jsonObject = jsonArray.getJSONObject(i); \r\n ...... \r\n ...... \r\n jsonObject.getString("Insegnamento"); \r\n jsonObject.getString("Esito"); \r\n jsonObject.getString("CFU"); \r\n jsonObject.getString("TAF"); \r\n jsonObject.getString("SSD")" \r\n ...... \r\n ...... \r\n }\r\n\r\n</pre>\r\n<p>All'interno del ciclo possono essere utilizzati i dati ottenuti e contenuti nell'array JSON di nome studyplan.</p>\r\n<p>Le operazioni potrebbero ad esempio essere il riempimento di una ListView per lo scrolling verticale dei risultati ottenuti.</p>\r\n<p>Il cuore del codice è il metodo readStringApiJson per la lettura della response del metodo GET all'API.</p>\r\n<p>L'output JSON è restituito in una stringa ottenuta dalla classe StringBuilder.</p>\r\n<p>StringBuilder è utilizzata per gestire catene di testo mutabili (in particolare del metodo append e dei metodi replace).</p>\r\n<pre>\r\nprivate String readStringApiJson(String urlAPI) { \r\n StringBuilder builder = new StringBuilder(); \r\n HttpClient client = new DefaultHttpClient(); \r\n HttpGet httpGet = new HttpGet(urlAPI); \r\n try { \r\n HttpResponse response = client.execute(httpGet); \r\n StatusLine statusLine = response.getStatusLine(); \r\n int statusCode = statusLine.getStatusCode(); \r\n if (statusCode == 200) { \r\n HttpEntity entity = response.getEntity(); \r\n InputStream content = entity.getContent(); \r\n BufferedReader reader = new BufferedReader( new InputStreamReader(content)); \r\n String line; \r\n while ((line = reader.readLine()) != null) { \r\n builder.append(line); \r\n } \r\n } else { \r\n if (statusCode==240) { \r\n builder.append("Null"); \r\n } \r\n }\r\n } catch (ClientProtocolException e) { \r\n e.printStackTrace();\r\n } catch (IOException e) { \r\n e.printStackTrace(); \r\n } \r\n return builder.toString(); \r\n } \r\n</pre>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>','<p><strong>Il progeto API UniParthenope è ormai consolidato.</strong> Le API messe a disposizione dell'utenza sono di utilizzo immediato . <strong>Vediamo un esempio di utilizzazione di una delle API a disposizione con Android.</strong></p>\r\n','full_html'),('node','blog',0,49,74,'und',0,'<p>Questa guida mostra come creare un semplice modulo per Drupal 7.x.</p>\r\n<p>Risulterà utile per dare spazio alla propria creatività sviluppando applicazoni web integrate nel CMS D7 senza preoccuparsi di componenti come la gestione dei ruoli/utenti, i temi, l'aggiornamento delle funzionalità di base.</p>\r\n<p>L'idea è creare un semplice modulo che permette di avere un elenco delle home web degli utenti, ovvero l'url personale di chi ha attivato il servizio Hosting Linux offerto dall'Ateneo attraverso il portale http://students.uniparthenope.it</p>\r\n<p>Si assume operatività da shell dei comandi.</p>\r\n<p>Consideriamo di default la directory di insallazione di Drupal.</p>\r\n<p>Questo significa che se, ad esempio, Durpal è installato in /home/NOMEUTENTE/public_html/drupal-7.14/, la directory /sites sarà /var/www/drupal-7.14/sites</p>\r\n<p><strong>1. Impostare la root di Drupal</strong></p>\r\n<pre>\r\nexport DRUAPL_ROOT=$HOME/public_html/drupal-7.14</pre>\r\n<p> </p>\r\n<p><strong>2. Raggiungere la directory dei moduli</strong></p>\r\n<pre>\r\ncd $DRUPAL_HOME/sites/all/modules</pre>\r\n<p> </p>\r\n<p>3. Creare la directory del modulo</p>\r\n<pre>\r\nmkdir userhomes\r\ncd userhomes</pre>\r\n<p> </p>\r\n<p><strong>4. Creazione del file di descrizione del modulo</strong></p>\r\n<pre>\r\ncat > userhomes.info\r\n; $Id$\r\nname = userhomes\r\ndescription = Show public homes\r\npackage = Sebeto modules\r\ncore = 7.x\r\nfiles[] = userhhomes.module</pre>\r\n<p> </p>\r\n<p>[CTRL]+[D]</p>\r\n<p><strong>5. Creazione del file di implementazione del modulo</strong></p>\r\n<pre>\r\ncat >userhomes.php\r\n\r\n<?php\r\n\r\n function userhomes_menu() {\r\n\r\n $items = array();\r\n\r\n $items['userhomes'] = array( 'title' => t('User Homes'),'page callback' => 'userhomes_output', 'access arguments' => array('access content'), ); return $items;\r\n\r\n }\r\n<p> </p>\r\n<p> /* * Display output */<br />\r\n function userhomes_output() {<br />\r\n // open this directory<br />\r\n $myDirectory = opendir("/home/"); // get each entry while($entryName = readdir($myDirectory)) { $dirArray[] = $entryName; } // close directory closedir($myDirectory); // count elements in array $indexCount = count($dirArray); // sort 'em sort($dirArray); header('Content-type: text/plain; charset=UTF-8'); header('Content-Disposition: inline'); $htmlOut=""; $htmlOut.=""; for($index=0; $index < $indexCount; $index++) { if (substr("$dirArray[$index]", 0, 1) != ".") { // don't list hidden files $htmlOut.=""; $htmlOut.="\\n"; } } $htmlOut.= "</pre></p>\r\n<table>\r\n <tbody>\r\n <tr>\r\n <td>\r\n <a>$dirArray[$index]</a></td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p>"; return $htmlOut; } ?></p>\r\n<p>[CTRL]+[D]</p>\r\n<p><strong>6. Attivare e provare il modulo</strong><br />\r\n Fare login come amministratore e selezionare il menu Modules<br />\r\n Attivare il modulo<br />\r\n Puntare il proprio browser su http://students.uniparthenope.it/~NOMEUTENTE/drupal-7.14/?q=userhomes<br />\r\n Esempio: http://students.uniparthenope.it/~raffmont/drupal-7.14/?q=userhomes</p>\r\n<p>Questo esempio porta alla creazione di un modulo minimale che non rispetta appieno le linee guida da seguire per moduli compatibili con Drupal 7.</p>\r\n<p>Maggiori informazioni su <a href=\"http://drupal.org/node/361112\">http://drupal.org/node/361112</a></p>\r\n','','full_html'),('node','forum',0,50,75,'und',0,'Salve a tutti, ho scaricato il client di ownCloud su windows. \r\nAl momento della configurazione per la connessione al server, inserisco l\' url fornito http://box.uniparthenope.it/remote.php/webdav/\r\nma ho un errore di connessione: \"failed to connect\".\r\n\r\nQualcuno sa come risolvere? \r\n\r\nGrazie anticipatamente, Flavio\r\n\r\n\r\n\r\nEDITO : Mi rispondo da solo, l\' indirizzo da immetter al momento della configurazione è semplicemente http://box.uniparthenope.it','','filtered_html'),('node','book',0,51,78,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Recupera tutti i modelli disponibili</h3>\r\n<h4>Descrizione</h4>La chiamata restituisce l\'elenco dei modelli disponibili<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:10018/transitpalina</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Formato risorse</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Autenticazione</h4>non richiesta<h4>Entità richieste</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \"ID_Palina\" : \"2700\"\r\n \r\n </pre>\r\n \r\n<h4>Esempio</h4>\r\ncurl -X GET http://api.uniparthenope.it:9990/ccmmma/models/getmodels.json\r\n<h4>Risposta</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Entità restituite</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n {\"models\":{\"wrf3\":\"Meteo bassa risoluzione 144h\",\"wrf5\":\"Meteo alta risoluzione 24h\",\"clm3\":\"Vento altissima risoluzione 24h\",\"chm3\":\"Qualita\' dell\'aria bassa risoluzione 120h\",\"ww33\":\"Moto ondoso bassa risoluzione 144h\"}}\r\n \r\n </pre>\r\n L\'API restituisce l\'elenco dei modelli in produzione.\r\n </body>','','full_html'),('node','book',0,51,79,'und',0,'<html xmlns:api=\"http://www.ioexception.de/rest-api-doc\" xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shCore.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<link href=\"http://alexgorbatchev.com/pub/sh/current/styles/shThemeRDark.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js\" type=\"text/javascript\"></script><script src=\"http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js\" type=\"text/javascript\"></script>\r\n<style type=\"text/css\"> \r\nbody {\r\n background: #FFF;\r\n color: #333;\r\n font: normal 100% sans-serif;\r\nmargin-left: auto;\r\n margin-right: auto;\r\n\r\n line-height: 1.5;\r\n width:66%;\r\n}\r\n.uripart {\r\n background:#666;\r\n color: #fff;\r\n font-style: italic;\r\n}\r\nh1,h2,h3,h4,h5,h6 {\r\n color: #444;\r\n font-weight: normal;\r\n line-height: 1;\r\n margin-bottom: 0.6em;\r\n font-family: Helvetica, sans-serif;\r\n\r\n}\r\nh4,h5,h6 {font-weight: bold;}\r\nh1 {font-size: 2.6em;}\r\nh2 {font-size: 2em;margin-top:3em;}\r\nh3 {font-size: 1.5em;margin-top:1.5em;}\r\nh4 {font-size: 1.25em;}\r\nh5 {font-size: 1.1em;}\r\nh6 {font-size: 1em;}\r\nh1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin: 0;}\r\npre {\r\n font: normal 100% monospace; \r\n}\r\ndl { padding: 0.5em; } dt { background:#fff; float: left; clear: left; padding-left:0.3em; padding-right:0.3em; text-align: right; } dd { margin: 0 0 0 110px; padding: 0 0 0.5em 0; }\r\n\r\n.statuscode, .method {\r\n font: bold 100% monospace; \r\n}\r\n#watermark {\r\n position:fixed; \r\n left:0px; \r\n top:0px;\r\n width:32px;\r\n height:100%;\r\n background-color:#EEE;\r\n padding:0px;\r\n margin:0px;\r\n} \r\n#watermark-text {\r\n color:#999;\r\n border:0px solid red;\r\n writing-mode:tb-rl;\r\n -webkit-transform:rotate(90deg);\r\n -moz-transform:rotate(90deg);\r\n -o-transform: rotate(90deg);\r\n white-space:nowrap;\r\n display:block;\r\n bottom:0px;\r\n width:20px;\r\n height:20px;\r\n font-family: Helvetica, sans-serif;\r\n letter-spacing: 5px;\r\n font-size:24px;\r\n font-weight:normal;\r\n text-shadow: 0px 0px 1px #999;\r\n padding:0 10px 10px 5px;\r\n}\r\n#watermark-text span{\r\n padding-left: 30px;\r\n}\r\n#sidemenu {\r\nz-index:300; display:none;margin: 0; text-align:left;\r\n}\r\n#sidemenu li{\r\n font-size: 0.8em;\r\n}\r\n#sidemenu li a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\n#sidemenuopener{\r\nz-index:300; color: #333; background-color: #EEEEEE; border:1px solid #DDD; margin: 0; position: fixed; top: 16px; left: auto; width: 56px; right: 0px; text-align:center;\r\nmin-height:32px;\r\n}\r\n#sidemenuopener a{\r\n color: #333;\r\n font-weight:bold;\r\n}\r\na{\r\n text-decoration: none;\r\n}\r\n#sidemenuopenerbox{\r\n position: fixed; right:12px;\r\n}\r\n.shadow {\r\n -moz-box-shadow: 2px 2px 3px #333;\r\n -webkit-box-shadow: 2px 2px 3px #333;\r\n box-shadow: 2px 2px 3px #333;\r\n /* For IE 8 */\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\')\";\r\n /* For IE 5.5 - 7 */\r\n filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3, Direction=135, Color=\'#333333\');\r\n \r\n}\r\n </style>\r\n<script type=\"text/javascript\">\r\n SyntaxHighlighter.all();\r\n </script><script type=\"text/javascript\">\r\n function showElement(layer,sx,t1,t2){\r\n var l = document.getElementById(layer);\r\n var s = document.getElementById(sx);\r\n if(l.style.display==\"none\"){\r\n l.style.display=\"block\";\r\n l.backgroundPosition=\"top\";\r\n s.innerHTML= t2;\r\n } else {\r\n l.style.display=\"none\";\r\n s.innerHTML= t1;\r\n }\r\n }\r\n \r\n function boxSize(x,a,b){\r\n var el = document.getElementById(x);\r\n if(el.style.width === a){\r\n el.style.width = b;\r\n }\r\n else{\r\n el.style.width = a;\r\n }\r\n }\r\n \r\n </script>\r\n<body>\r\n<h3 class=\"operation\">Recupera tutti i modelli disponibili</h3>\r\n<h4>Descrizione</h4>La chiamata restituisce l\'elenco dei modelli disponibili<h4>URI</h4>\r\n<pre>http://api.uniparthenope.it:9990/ccmmma/models/getmodels</pre>\r\n<h4>URI Parameters</h4>\r\nn/a\r\n<h4>HTTP Method</h4>\r\n<span class=\"method\">GET</span>\r\n<h4>Formato risorse</h4>\r\n<ul>\r\n \r\n<li>application/json</li>\r\n \r\n</ul>\r\n<h4>Autenticazione</h4>non richiesta<h4>Entità richieste</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n \r\n </pre>\r\n \r\n<h4>Esempio</h4>\r\ncurl -X GET http://api.uniparthenope.it:9990/ccmmma/models/getmodels.json\r\n<h4>Risposta</h4>\r\n<dl>\r\n<dt class=\"statuscode\">400 Bad Request</dt>\r\n<dd> I dati richiesti sono completi o inconsistenti.</dd>\r\n</dl>\r\n<h4>Entità restituite</h4>\r\n \r\n \r\n<pre class=\"brush: js\">\r\n \r\n \r\n {\"models\":{\"wrf3\":\"Meteo bassa risoluzione 144h\",\"wrf5\":\"Meteo alta risoluzione 24h\",\"clm3\":\"Vento altissima risoluzione 24h\",\"chm3\":\"Qualita\' dell\'aria bassa risoluzione 120h\",\"ww33\":\"Moto ondoso bassa risoluzione 144h\"}}\r\n \r\n </pre>\r\n L\'API restituisce l\'elenco dei modelli in produzione.\r\n </body>','','full_html'),('node','blog',0,53,81,'und',0,'<p>Le seguenti parti di codice servono per effetture semplici elaborazioni con i dati meteo prodotti dal CCMMMA (http://meteo.uniparthenope.it Centro Campano per il Monitoraggio e la Modellistica Marina e Atmosferica).</p>\r\n<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706074320.png\" /><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706074335.png\" /><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706074343.png\" /></p>\r\n<pre>\r\n function uvToKnots($u10m, $v10m) {\r\n\r\n return (round(sqrt($u10m * $u10m + $v10m * $v10m)*1.94));\r\n\r\n }\r\n\r\n function uvToNDegs($u10,$v10m) {\r\n return (round(57.29578*atan2($u10m,$v10m)+180,2));\r\n }\r\n\r\n function getSkyIconText($wtext, $lang, $clf, $crh) {\r\n $suf='.png';\r\n $wtexti=0;\r\n if ($crh < 0.1) {\r\n if ($clf < 12.5) {\r\n $wicon='sunny';\r\n wtexti=0;\r\n } elseif ($clf < 37.5) {\r\n $wicon='cloudy1';\r\n $wtexti=1;\r\n } elseif ($clf < 62.5) {\r\n $wicon='cloudy2';\r\n $wtexti=2;\r\n } elseif ($clf < 87.5) {\r\n $wicon='cloudy4';\r\n $wtexti=3;\r\n } else {\r\n $wicon='cloudy5';\r\n $wtexti=4;\r\n }\r\n } elseif ($crh < 2) {\r\n $wicon='shower1';\r\n $wtexti=5;\r\n } elseif ($crh < 10) {\r\n $wicon='shower2';\r\n $wtexti=6;\r\n } else {\r\n $wicon='shower3';\r\n $wtexti=7;\r\n }\r\n\r\n //Weather icons urls\r\n $wiconurl='http://ccmmma.uniparthenope.it/sites/all/modules/home_page/icons/new/'.$wicon.$suf;\r\n $wtextLabel=$wtext[$lang][$wtexti];\r\n return(Array($wiconurl,$wtextLabel));\r\n }\r\n\r\n function knotsToBeaufort($ws10) {\r\n $bIndex=0;\r\n if ( $ws10 == 0) $bIndex=0;\r\n else if ( $ws10 >= 1 && $ws10<= 3) $bIndex=1;\r\n else if ( $ws10 >= 4 && $ws10<= 6) $bIndex=2;\r\n else if ( $ws10 >= 7 && $ws10<=10) $bIndex=3;\r\n else if ( $ws10 >=11 && $ws10<=16) $bIndex=4;\r\n else if ( $ws10 >=17 && $ws10<=21) $bIndex=5;\r\n else if ( $ws10 >=22 && $ws10<=27) $bIndex=6;\r\n else if ( $ws10 >=28 && $ws10<=33) $bIndex=7;\r\n else if ( $ws10 >=34 && $ws10<=40) $bIndex=8;\r\n else if ( $ws10 >=41 && $ws10<=47) $bIndex=9;\r\n\r\n return ($bIndex);\r\n }\r\n\r\n function knotsToText($windSS, $lang, $ws10) {\r\n $bIndex=knotsToBeaufort($ws10);\r\n\r\n return ($windSS[$lang][$bIndex]);\r\n }\r\n\r\n function ndegsToIndex($wd10) {\r\n\r\n if ( $wd10 >= 0 && $wd10< 11.25) $wd10i=0;\r\n if ( $wd10 >= 11.25 && $wd10< 33.75) $wd10i=1;\r\n if ( $wd10 >= 33.75 && $wd10< 56.25) $wd10i=2;\r\n if ( $wd10 >= 56.25 && $wd10< 78.75) $wd10i=3;\r\n if ( $wd10 >= 78.75 && $wd10<101.25) $wd10i=4;\r\n if ( $wd10 >=101.25 && $wd10<123.75) $wd10i=5;\r\n if ( $wd10 >=123.75 && $wd10<146.25) $wd10i=6;\r\n if ( $wd10 >=146.25 && $wd10<168.75) $wd10i=7;\r\n if ( $wd10 >=168.75 && $wd10<191.25) $wd10i=8;\r\n if ( $wd10 >=191.25 && $wd10<213.75) $wd10i=9;\r\n if ( $wd10 >=213.75 && $wd10<236.25) $wd10i=10;\r\n if ( $wd10 >=236.25 && $wd10<258.75) $wd10i=11;\r\n if ( $wd10 >=258.75 && $wd10<281.25) $wd10i=12;\r\n if ( $wd10 >=281.25 && $wd10<303.75) $wd10i=13;\r\n if ( $wd10 >=303.75 && $wd10<326.25) $wd10i=14;\r\n if ( $wd10 >=326.25 && $wd10<348.75) $wd10i=15;\r\n if ( $wd10 >=348.75 && $wd10<359.9999) $wd10i=0;\r\n\r\n return($wd10i);\r\n }\r\n\r\n function ndegsToText($windDS, $lang, $wd10) {\r\n $wd10i=ndegsToIndex($wd10);\r\n return ($windDS[$wd10i]);\r\n }\r\n\r\n $windDS = array("N", "NNE", "NE", "ENE",\r\n "E", "ESE", "SE", "SSE",\r\n "S", "SSW", "SW", "WSW",\r\n "W", "WNW", "NW", "NNW");\r\n\r\n $windSS["it"][0]="Calma";\r\n $windSS["it"][1]="Bava di vento";\r\n $windSS["it"][2]="Brezza leggera";\r\n $windSS["it"][3]="Brezza tesa";\r\n $windSS["it"][4]="Vento moderato";\r\n $windSS["it"][5]="Vento teso";\r\n $windSS["it"][6]="Vento fresco";\r\n $windSS["it"][7]="Vento forte";\r\n $windSS["it"][8]="Burrasca";\r\n $windSS["it"][9]="Burrasca forte";\r\n\r\n $windSS["en"][0]="Calm";\r\n $windSS["en"][1]="Light air";\r\n $windSS["en"][2]="Light breeze";\r\n $windSS["en"][3]="Gentle breeze";\r\n $windSS["en"][4]="Moderate breeze";\r\n $windSS["en"][5]="Fresh breeze";\r\n $windSS["en"][6]="Strong breeze";\r\n $windSS["en"][7]="Near gale";\r\n $windSS["en"][8]="Gale";\r\n $windSS["en"][9]="Strong gale";\r\n\r\n $wtext["it"][0]="Sereno";\r\n $wtext["it"][1]="Poco nuvoloso";\r\n $wtext["it"][3]="Nuvoloso";\r\n $wtext["it"][3]="Molto nuvoloso";\r\n $wtext["it"][4]="Coperto";\r\n $wtext["it"][5]="Rovesci";\r\n $wtext["it"][6]="Pioggia";\r\n $wtext["it"][7]="Forti pioggie";\r\n\r\n $wtext["en"][0]="Sunny";\r\n $wtext["en"][1]="Mainly clean";\r\n $wtext["en"][2]="Partially cloudy";\r\n $wtext["en"][3]="Cloudy";\r\n $wtext["en"][4]="Strongly Cloudy";\r\n $wtext["en"][5]="Shower";\r\n $wtext["en"][6]="Rain";\r\n $wtext["en"][7]="Tunderstones";\r\n\r\n</pre>\r\n<p>Potrebbe essere utile creare librerie per i diversi linguaggi di programmazione.</p>\r\n<p>I dati possono essere recuperati attraverso le API documentate <a href=\"http://students.uniparthenope.it/?q=node/17\">qui</a>. </p>\r\n<p><a href=\"/sites/default/files/images/20122706082258.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706082258.png\" /></a></p>\r\n','','full_html'),('node','forum',0,54,82,'und',0,'<p>Ciao a tutti. <br />\r\n Volevo sapere se è possibile "proteggere" i file caricati su public_html, cioè permetterne la lettura, e quindi la navigazione, ma non permettere il download.</p>\r\n<p>Grazie a tutti!</p>\r\n','','filtered_html'),('node','new',0,56,84,'und',0,'<p>E' stato appena attivato un nuovo <a href=\"http://web.uniparthenope.it/?q=forum/7\">forum</a> sul calcolo ad alte prestazioni mediante l'uso di device di tipo GPU sia mediante <a href=\"http://en.wikipedia.org/wiki/OpenCL\" target=\"_blank\">OpenCL</a> sia attraverso <a href=\"http://www.nvidia.com/object/cuda_home_new.html\" target=\"_blank\">CUDA</a>.</p>\r\n<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122706102350.jpeg\" /></p>\r\n','','filtered_html'),('node','book',0,57,85,'und',0,'<p>Questa sezione include i tutorial e le altre informazioni necessarie per creare moduli Drupal 7.x</p>\r\n','','filtered_html'),('node','book',0,57,87,'und',0,'<p>Questo tutorial consente di creare moduli Drupal 7.x</p>\r\n<p>Un modulo è una collezione di funzioni collegate con Drupal che provvedono al supporto per funzionalità aggiuntive per una specifica installazione Drupal. Al termine di questo tutorial si è in grado di creare un modulo base da usare come modello per applicazioni future.</p>\r\n<p>Questo tutorial non prepara per la creazione di moduli da rilasciare pubblicamente, ad esempio non compre argomenti come il caching, i permessi e la sicurezza. Usare questo tutorial come un punto di partenza.</p>\r\n<p><strong>Prerequisiti:</strong></p>\r\n<ul>\r\n <li>\r\n Conoscenza di base PHP incluso l'approccio OOP</li>\r\n <li>\r\n Conoscenza di base di database relazionali e SQL</li>\r\n <li>\r\n Gestire le installazioni di Drupal 7.x</li>\r\n <li>\r\n Accesso ad un server web</li>\r\n</ul>\r\n<p> </p>\r\n<p>Non c'è assunzione di conoscenza riguardo allo sviluppo di moduli Drupal.</p>\r\n<p> </p>\r\n','','filtered_html'),('node','book',0,58,88,'und',0,'<p><strong>Dare un nome al proprio modulo</strong></p>\r\n<p>Il primo passo nella creazione di un modulo consiste nello sceglierne un nome conciso e descrittivo. Questo nome sarà usato per tutti i file e come radice dei nomi delle function del modulo. Il nome deve incominciare con una lettera e deve contenere solo caratteri minuscoli ed eventualemente l'underscore (_). Ad esempio "current_posts" è un valido nome di modulo.</p>\r\n<p><strong>Nota importante:</strong> Assicurarsi di seguire la linea guida che prevede l'uso dei soli caratteri minuscoli poichè il nome del modulo rappresenta la radice delle function del modulo. Quando si implementa un hook (aggancio), Drupal riconossce le funzioni solo se hanno un nome la cui radice è il nome del file che implementa il modulo.</p>\r\n<p>E' anche importante che il modulo non abbia lo stesso nome di un qualsiasi altro nome o tema presente nella propria installazione.</p>\r\n<p><strong>Creare la directory ed il file del modulo</strong></p>\r\n<p>Supponiamo che il nome scelto sia "current_posts":</p>\r\n<ul>\r\n <li>\r\n Creare il folder del nome nel percorso di installazione.<br />\r\n <pre>\r\nmkdir sites/all/modules/current_posts</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Creare il file PHP con l'implementazione del modulo<br />\r\n <pre>\r\ncd sites/all/modules/current_posts\r\ntouch current_posts.module</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Aggiungere un tag di apertura PHP nel file current_posts.module<br />\r\n <pre>\r\n<?php</pre>\r\n </li>\r\n</ul>\r\n<p><strong>Stadard di codifica</strong></p>\r\n<p>Lo standard di codifica impone di non aggiungere nel file .module il tag di chiusura ?>. Se si include il tag di chiusura si va in contro a problemi di runtime nel caso di alcuni server. Negli esempio è spesso visibile il tag di chiusura unicamente per motivi legati alla formattazione del codice e non va incluso nel codice reale.</p>\r\n<p>Tutte le funzioni del modulo sono usate attraverso gli hook o agganci secondo la tecnica detta di callback. Le funzioni di hook sono così chiamate {nomemodulo}_{nomefunzione}, dove il nome della funzione è un suffisso predefinito che indica l'evento in risposta del quale la function viene invocata dal runtime di Drupal.</p>\r\n<p>Drupal chiamerà le funzioni di hook per recuperare dati specifici: il fatto di avere nomi aderenti ad uno standard sintattico e semantico consente a Drupal di sapere quali funzioni invocare.</p>\r\n<p> </p>\r\n','','full_html'),('node','book',0,58,93,'und',0,'<p><strong>Dare un nome al proprio modulo</strong></p>\r\n<p>Il primo passo nella creazione di un modulo consiste nello sceglierne un nome conciso e descrittivo. Questo nome sarà usato per tutti i file e come radice dei nomi delle function del modulo. Il nome deve incominciare con una lettera e deve contenere solo caratteri minuscoli ed eventualemente l'underscore (_). Ad esempio "current_posts" è un valido nome di modulo.</p>\r\n<p><strong>Nota importante:</strong> Assicurarsi di seguire la linea guida che prevede l'uso dei soli caratteri minuscoli poichè il nome del modulo rappresenta la radice delle function del modulo. Quando si implementa un hook (aggancio), Drupal riconossce le funzioni solo se hanno un nome la cui radice è il nome del file che implementa il modulo.</p>\r\n<p>E' anche importante che il modulo non abbia lo stesso nome di un qualsiasi altro nome o tema presente nella propria installazione.</p>\r\n<p><strong>Creare la directory ed il file del modulo</strong></p>\r\n<p>Supponiamo che il nome scelto sia "current_posts":</p>\r\n<ul>\r\n <li>\r\n Creare il folder del nome nel percorso di installazione.<br />\r\n <pre>\r\nmkdir sites/all/modules/current_posts</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Creare il file PHP con l'implementazione del modulo<br />\r\n <pre>\r\ncd sites/all/modules/current_posts\r\ntouch current_posts.module</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Aggiungere un tag di apertura PHP nel file current_posts.module<br />\r\n <pre>\r\n<?php</pre>\r\n </li>\r\n</ul>\r\n<p><strong>Stadard di codifica</strong></p>\r\n<p>Lo standard di codifica impone di non aggiungere nel file .module il tag di chiusura ?>. Se si include il tag di chiusura si va in contro a problemi di runtime nel caso di alcuni server. Negli esempio è spesso visibile il tag di chiusura unicamente per motivi legati alla formattazione del codice e non va incluso nel codice reale.</p>\r\n<p>Tutte le funzioni del modulo sono usate attraverso gli hook o agganci secondo la tecnica detta di callback. Le funzioni di hook sono così chiamate {nomemodulo}_{nomefunzione}, dove il nome della funzione è un suffisso predefinito che indica l'evento in risposta del quale la function viene invocata dal runtime di Drupal.</p>\r\n<p>Drupal chiamerà le funzioni di hook per recuperare dati specifici: il fatto di avere nomi aderenti ad uno standard sintattico e semantico consente a Drupal di sapere quali funzioni invocare.</p>\r\n<p> </p>\r\n','','full_html'),('node','forum',0,59,89,'und',0,'<p>Salve a tutti! <br />\r\n Ho un problema: </p>\r\n<p>ho creato uno script .php in locale che funziona tranquillamente (videoconferenza).<br />\r\n <br />\r\n Al momento dell' upload su Sebeto, da errore 500 server interno,<br />\r\n <br />\r\n Forse è dovuto all' uso della variabile globale $_SERVER ["REMOTE_ADDR"], anche se in un altro script l' ho utilizzata senza problemi.<br />\r\n <br />\r\n Idee?</p>\r\n','','filtered_html'),('node','page',0,60,90,'und',0,'<p>Questa pagina raccoglie gli strumenti di sviluppo messi a disposizione dal portale.</p>\r\n<ul>\r\n <li>\r\n Elenco delle <a href=\"/?q=userhomes\">home</a> web attive</li>\r\n <li>\r\n File <a href=\"/?q=apache2logs\">log</a> del server Apache2</li>\r\n <li>\r\n <a href=\"?q=node/63\">Console</a> per le API REST</li>\r\n</ul>\r\n<p>Altri strumenti saranno attivati.</p>\r\n','','full_html'),('node','forum',0,61,91,'und',0,'<p>Prof,</p>\r\n<p>volevo gentilmente sapere se lasciare i tag html all'interno del file xml, oppure pulito di ogni tag?</p>\r\n<p> </p>\r\n<p> </p>\r\n','','filtered_html'),('node','book',0,62,92,'und',0,'<p>c</p>\r\n','','filtered_html'),('node','book',0,62,94,'und',0,'<p>c</p>\r\n','','filtered_html'),('node','page',0,63,95,'und',0,'<p>La Socrata Open Data API console permette di sperimentare le chiamate alle API senza scrivere una sola line di codice.</p>\r\n<p>Usando una semplice sintassi, puoi provare differenti invocazioni e parametri prima di sviluppare un'applicazione di maggiore complessità.</p>\r\n<p><strong>Chiamate supportate</strong></p>\r\n<p>La SODA Console supporta attualmente le seguenti operazioni:</p>\r\n<ul>\r\n <li>\r\n <pre>\r\nget("<em>Service Path</em>", {"<em>Parameter Name</em>":"<em>Parameter Value</em>", ...})</pre>\r\n Esegue una richest di tipo <code>GET</code>e restituisce la risposta del server.</li>\r\n <li>\r\n <pre>\r\npost("<em>Service Path</em>", {"<em>Parameter Name</em>":"<em>Parameter Value</em>", ...}, "<em>Request Body</em>")</pre>\r\n Esegue una rchiesta di tipo <code>POST</code>e restituisce la risposta del server</li>\r\n</ul>\r\n<p><iframe frameborder=\"0\" height=\"500\" scrolling=\"yes\" src=\"http://opendata.socrata.com/console.html\" width=\"700\"></iframe></p>\r\n<p>Questa console funziona grazie agli strumenti messi a disposizione da <a href=\"http://www.socrata.com\" target=\"_new\">Socrata Inc</a></p>\r\n<p>Query di esempio</p>\r\n<ul>\r\n <li>\r\n Recupera le previsioni meteo sul Comune di Napoli:\r\n <pre>\r\n<a class=\"exec\" href=\"http://api.uniparthenope.it:9990/ccmmma/timeseries.json&region=com63049\">get("http://api.uniparthenope.it:9990/ccmmma/timeseries.json",{ "region":"com63049"})</a></pre>\r\n </li>\r\n <li>\r\n Recupera il proprio piano di studi (servono le credenziali UniParthenope):\r\n <pre>\r\n<a class=\"exec\" href=\"http://api.uniparthenope.it:9998/student/exams/studyplanning.json?user=0NNNNNNNNN&password=XXXXXX\">get("http://api.uniparthenope.it:9998/student/exams/studyplanning.json",{"user":"0NNNNNNNNN","password":"XXXXXX"})</a></pre>\r\n </li>\r\n <li>\r\n Data una palina ANM visualizza i bus in arrivo:\r\n <pre>\r\n<a class=\"exec\" href=\"http://api.uniparthenope.it:10018/oraribus.json?ID_Palina=3344&ID_Linea=C40\">get("http://api.uniparthenope.it:10018/oraribus.json", {"ID_Palina":"3344","ID_Linea":"C40"})</a></pre>\r\n </li>\r\n</ul>\r\n','','full_html'),('node','new',0,64,96,'und',0,'<p>E' stata appena attivata la console API REST basata su <a href=\"http://dev.socrata.com/\" target=\"_blank\">SODA</a>.</p>\r\n<p>E' disponibile qui: http://web.uniparthenope.it/?q=node/63</p>\r\n','','filtered_html'),('node','blog',0,65,97,'und',0,'<p>Questo tutorial, diviso in due parti, servirà a realizzare un piccolo e semplice modulo ultra-low cost per il data logging ambientale.</p>\r\n<p>In particolare andremo a campionare temperatura e quantità di luce, scrivendo i dati in un log file memorizzato su SD-Card.</p>\r\n<p>Verrà utilizzata la piattaforma open hardware e software “Arduino”.</p>\r\n<p>Info: <a href=\"http://arduino.cc\" target=\"_blank\">arduino.cc</a></p>\r\n<p> </p>\r\n<p><strong>Hardware:</strong></p>\r\n<p>Per iniziare, avremo bisogno di una scheda Arduino Uno o Duemilanove (ma anche Mega, 2560, mini, nano etc etc).</p>\r\n<p>Info: <a href=\"http://arduino.cc/it/main/boards\" target=\"_blank\" title=\"http://arduino.cc/it/main/boards\">http://arduino.cc/it/main/boards</a></p>\r\n<p>(Costo: ~25€ - Aiutiamo il progetto acquistando board 100% Made in Italy!)</p>\r\n<p><a href=\"http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front.jpg\"><img alt=\"\" class=\"alignnone\" height=\"163\" src=\"http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front.jpg\" title=\"http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front.jpg\" width=\"237\" /></a></p>\r\n<p> </p>\r\n<p>Questa piccola schedina, è un piccolo computer in miniatura, dove già c'è tutto il necessario per programmarla senza troppi fronzoli software o hardware (come programmatori costosi).</p>\r\n<p> </p>\r\n<p>Avremo bisogno, inoltre di qualche sensore: nel nostro caso andremo ad utilizzare un LM35 (questo potete comprarlo anche dai cinesi, costo: 1.50€) ed un LDR (light dependet resistor, costo0.30€)</p>\r\n<p>L’<strong>LM35</strong> si presenta in un package simil transistor (<a href=\"http://it.wikipedia.org/wiki/TO-92\" target=\"_blank\" title=\"TO-92\">TO-92</a>) a tre pin.</p>\r\n<p>Il pinout (piedinatura), da sinistra verso destra con la parte piatta rivolta verso l’osservatore è: +5V, output, GND.</p>\r\n<p><a href=\"http://blackstufflabs.files.wordpress.com/2012/06/lm35_0.jpg?w=300\"><img alt=\"\" class=\"alignnone\" height=\"152\" src=\"http://blackstufflabs.files.wordpress.com/2012/06/lm35_0.jpg?w=300\" title=\"http://blackstufflabs.files.wordpress.com/2012/06/lm35_0.jpg?w=300\" width=\"203\" /></a></p>\r\n<p>L’<strong>LDR</strong> è a tutti gli effetti un resistore variabile (tipo potenziometro), la sua resistenza cambia con la quantità di luce che si riflette su di esso.</p>\r\n<p>Non ha polarità, può essere innestato a piacimento: la tensione entra da un capo ed esce alterata dall’altra.</p>\r\n<p>Da accoppiare con una resistenza da 500 Ohm (costo: gratis)</p>\r\n<p><a href=\"http://robosense.in/images/stories/ldr.jpg\"><img alt=\"\" class=\"alignnone\" height=\"186\" src=\"http://robosense.in/images/stories/ldr.jpg\" title=\"http://robosense.in/images/stories/ldr.jpg\" width=\"248\" /></a></p>\r\n<p> </p>\r\n<p>Per comodità ho usato un modulo (shield) aggiuntivo all’arduino che mi permette di avere:</p>\r\n<ol>\r\n <li>\r\n Un RTC DS1307 (Real Time Clock) con batteria tampone, mantiene il tempo meglio del vostro orologio.</li>\r\n <li>\r\n Un card reader, i nostri output li andremo a scrivere su file.</li>\r\n <li>\r\n Led, non avendo monitor i led saranno le nostre spie.</li>\r\n <li>\r\n Fori per saldare i sensori o per usare una breadboard</li>\r\n</ol>\r\n<p> </p>\r\n<p>La shield vien venduta in kit di montaggio, significa che dovremo metter mano al saldatore (che male non fa).</p>\r\n<p>Sul sito del produttore vi è un ampio tutorial fotografico su come assemblarla: <a href=\"http://www.ladyada.net/make/logshield/solder.html\" target=\"_blank\" title=\"http://www.ladyada.net/make/logshield/solder.html\"> http://www.ladyada.net/make/logshield/solder.html</a></p>\r\n<p>Oppure potete guardare il mio fantastico soldering: <a href=\"http://youtu.be/SYV6rm0Xypo\">http://youtu.be/SYV6rm0Xypo</a></p>\r\n<p><a href=\"http://static.flickr.com/3319/4589675367_2192d37442.jpg\"><img alt=\"\" class=\"alignnone\" height=\"188\" src=\"http://static.flickr.com/3319/4589675367_2192d37442.jpg\" title=\"http://static.flickr.com/3319/4589675367_2192d37442.jpg\" width=\"245\" /></a></p>\r\n<p>(opzionale, costo: 19.50$<a href=\"http://www.ladyada.net/make/logshield/\" target=\"_blank\" title=\"http://www.ladyada.net/make/logshield/\"> http://www.ladyada.net/make/logshield/</a>)</p>\r\n<p> </p>\r\n<p> </p>\r\n<p><strong>Wiring:</strong></p>\r\n<p>Entrambi i sensori lavorano su una tensione di 5v, l’output di ognuno ha una tensione di uscita linearmente proporzionale alla temperatura o alla quantità di luce percepita.</p>\r\n<p>Arduino (il programmatore) ha il compito di leggere la tensione sui pin analogici, campionarla e renderla disponibile.</p>\r\n<p>Per approfondimenti circa dettagli di funzionamento e parametri costruttivi dei sensori:</p>\r\n<p><a href=\"https://www.national.com/ds/LM/LM35.pdf\" target=\"_blank\" title=\"https://www.national.com/ds/LM/LM35.pdf\">https://www.national.com/ds/LM/LM35.pdf</a></p>\r\n<p><a href=\"http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/40/LDR_NSL19_M51.pdf\" target=\"_blank\" title=\"http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/40/LDR_NSL19_M51.pdf\">http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/40/LDR_NSL19_M51.pdf</a></p>\r\n<p>Il wiring può esser fatto utilizzando una semplice breadboard oppure una millefori.</p>\r\n<p><a href=\"http://img822.imageshack.us/img822/4682/wiringok.png\" target=\"_blank\"><img alt=\"http://img822.imageshack.us/img822/4682/wiringok.png\" src=\"http://img822.imageshack.us/img822/4682/wiringok.png\" style=\"width: 255px; height: 203px;\" /></a></p>\r\n<p>(immagine realizzata con <a href=\"http://fritzing.org\">Fritzing.org</a>)</p>\r\n<p>Il risultato finale deve essere più o meno così</p>\r\n<p><a href=\"http://img560.imageshack.us/img560/2860/dscn6887.jpg\"><img alt=\"\" class=\"alignnone\" height=\"218\" src=\"http://img560.imageshack.us/img560/2860/dscn6887.jpg\" title=\"http://img560.imageshack.us/img560/2860/dscn6887.jpg\" width=\"292\" /></a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p><strong>Coding:</strong></p>\r\n<p><em>Premesse:</em></p>\r\n<p>Arduino, non è solo hardware ma anche: software, documentazione e community.</p>\r\n<p>Sul sito ufficiale (<a href=\"http://arduino.cc\" target=\"_blank\">arduino.cc</a>) è possibile scaricare l’IDE che permette di programmare la propria Arduino via USB.</p>\r\n<p>Il linguaggio di programmazione è (simil) C.</p>\r\n<p>All’interno dell’ide, vi sono molti codici di prova già funzionanti, essa include gran parte delle librerie di cui avremo bisogno.</p>\r\n<p>Altre sono presenti nei siti dei corrispettivi produttori hardware o dai siti personali di utenti che hanno condiviso le proprie.</p>\r\n<p>Installare librerie di terze parti è molto semplice (un paio di copy&paste): google ci aiuterà non poco.</p>\r\n<p>Nel nostro caso andremo ad utilizzare le librerie RTC ed SD suggerite sulla pagina di adafruit relative alla logger shield utilizzata:<a href=\"http://www.ladyada.net/make/logshield/download.html\" target=\"_blank\" title=\"http://www.ladyada.net/make/logshield/download.html\"> http://www.ladyada.net/make/logshield/download.html</a></p>\r\n<p>E’ importante documentarsi sempre e approfonditamente sull’hardware su cui andremo a lavorare.</p>\r\n<p>Datasheet, reference, librerie, documentazione varia e google vanno sempre consultati quando abbiamo hardware tra le mani.</p>\r\n<p>Cercare: “lm35 arduino” o “ldr arduino” sia su google testo che immagini ci darà tantissima documentazione… per non parlare poi del forum ufficiale.</p>\r\n<p>Se prendiamo in considerazione Arduino Uno/Duemilanove con controller Atmega328, avremo 32kb di memoria flash per il codice (parte statica) e 2kb per i dati (parte dinamica).</p>\r\n<p>Seppur il compilatore (avr-gcc) ottimizza il codice, dobbiamo cercare di minimizzare al massimo l’uso della memoria.</p>\r\n<p>Esempio: se dobbiamo contare da 1 a 50 usiamo uno short invece di un int, usiamo piccole matrici, facciamo tanto swapping su memorie esterne, dimentichiamo l’allocazione dinamica (esiste ma…).</p>\r\n<p>Con l’esperienza capiremo che i codici scritti per arduino sono davvero molto leggeri: per muovere un braccio meccanico useremo al più 20righe di codice e un paio di variabili.</p>\r\n<p>Il costo computazionale è tipicamente molto basso… sarebbe da pazzi pensare di usare un microcontroller a 16mhz per calcoli metereologici!</p>\r\n<p> </p>\r\n<p>Il corpo dei codici da caricare (flashing) in Arduino è sempre formato da almeno due void function: setup e loop.</p>\r\n<p><strong>Setup:</strong> serve solo ad inizializzare alcuni valori, come ad esempio la modalità di funzione di alcuni pin, inizializzazione della seriale etc Entra in esecuzione una sola volta: all’inizio, appena diamo alimentazione.</p>\r\n<p><strong>Loop</strong>: è un loop. Un ciclo infinito, il cuore del nostro codice.</p>\r\n<p> </p>\r\n<p>La lettura analogica dell’lm35 verrà fatta sul pin 0 (zero) della nostra Arduino.</p>\r\n<p>Senza troppo addentrarci in tecnicismi, diremo banalmente che la tensione di uscita del nostro transistor è la temperatura captata in quell’istante.</p>\r\n<p>Info:<a href=\"http://www.ladyada.net/learn/sensors/tmp36.html\" target=\"_blank\" title=\"http://www.ladyada.net/learn/sensors/tmp36.html\"> http://www.ladyada.net/learn/sensors/tmp36.html</a></p>\r\n<p>L’lm35 misura temperature in Celsius su un range di -55° +150° con un accuratezza di 0.5°.</p>\r\n<p>Gli input analogici di arduino hanno una risoluzione di 10bit, ciò significa che avremo 2^10=1024 valori discreti.</p>\r\n<p>Ci sono molte tecniche (hardware e software) per leggere la temperatura in modo accurato, ma il modo più semplice è convertire la tensione di uscita in gradi Celsius con questa formula:</p>\r\n<p>temperaturaCelsius = (5.0 * sensor * 100.0)/1024.0;</p>\r\n<p>(Tensione di alimentazione del lm35 * tensione in output dall’lm35 * offset 100) / su 1024 valori</p>\r\n<p> </p>\r\n<p> </p>\r\n<p><strong><em>Obiettivo finale:</em></strong></p>\r\n<p><em>L’idea è quella di realizzare un log file di testo con questa struttura:</em></p>\r\n<p class=\"rtecenter\"><em>LUCE – TEMPERATURA – ORARIO</em></p>\r\n<p><em>• La campionatura, viene fatta ogni 3 secondi.</em> <em> </em></p>\r\n<p><em>• Le letture dell’ldr e dell’lm35 vengono mediate su 20letture consecutive (senza delay).</em> <em> </em></p>\r\n<p><em>• Stampa su porta seriale ad ogni scrittura per debugging.</em></p>\r\n<p> </p>\r\n<p> </p>\r\n<p><em>Tentativo_1:</em></p>\r\n<p>In questa primo sketch (sketch=programma=codice=algoritmo), leggeremo la temperatura dall’lm35 e andremo a scrivere sulla sd temperatura e orario.</p>\r\n<p>L’orario verrà di volta in volta *chiesto* al nostro RTC.</p>\r\n<p> </p>\r\n<pre>\r\n#include <<span style=\"color: #cc6600;\">SD</span>.h>\r\n#include <<span style=\"color: #cc6600;\">Wire</span>.h>\r\n#include <span style=\"color: #006699;\">"RTClib.h"</span>\r\n\r\nRTC_DS1307 RTC;\r\n\r\n<span style=\"color: #cc6600;\">const</span> <span style=\"color: #cc6600;\">int</span> chipSelect = 10;\r\n<span style=\"color: #cc6600;\">short</span> i=0;\r\n\r\n<span style=\"color: #cc6600;\">void</span> <span style=\"color: #cc6600;\"><strong>setup</strong></span>()\r\n{\r\n <span style=\"color: #7e7e7e;\">//seriale aperta a 9600 baud</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">begin</span>(9600);\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"Initializing SD card..."</span>);\r\n\r\n <span style=\"color: #7e7e7e;\">//inizializziamo i pin 3 e 4 per i led rosso-verde</span>\r\n <span style=\"color: #7e7e7e;\">//pin 10 riservato al card reader</span>\r\n <span style=\"color: #cc6600;\">pinMode</span>(10, <span style=\"color: #006699;\">OUTPUT</span>);\r\n <span style=\"color: #cc6600;\">pinMode</span>(3, <span style=\"color: #006699;\">OUTPUT</span>); \r\n <span style=\"color: #cc6600;\">pinMode</span>(4, <span style=\"color: #006699;\">OUTPUT</span>); \r\n\r\n <span style=\"color: #7e7e7e;\">//se il modulo sd non viene correttamente inizializzato</span>\r\n <span style=\"color: #cc6600;\">if</span> (!<span style=\"color: #cc6600;\">SD</span>.<span style=\"color: #cc6600;\">begin</span>(chipSelect)) {\r\n <span style=\"color: #7e7e7e;\">//messaggio di errore sul nostro monitor seriale</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"Card failed, or not present"</span>);\r\n\r\n <span style=\"color: #cc6600;\">for</span> (i=0;i<10;i++) {\r\n <span style=\"color: #7e7e7e;\">//blinking del led rosso</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">LOW</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100);\r\n }\r\n <span style=\"color: #cc6600;\">return</span>;\r\n }\r\n\r\n <span style=\"color: #7e7e7e;\">//se correttamente inizializzata...</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"card initialized."</span>);\r\n <span style=\"color: #7e7e7e;\">//blinking led verde</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(500); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">LOW</span>);\r\n\r\n <span style=\"color: #7e7e7e;\">//inizializziamo l'RTC</span>\r\n <span style=\"color: #cc6600;\">Wire</span>.<span style=\"color: #cc6600;\">begin</span>();\r\n RTC.<span style=\"color: #cc6600;\">begin</span>();\r\n <span style=\"color: #cc6600;\">if</span> (! RTC.isrunning()) {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"RTC is NOT running!"</span>);\r\n RTC.adjust(DateTime(__DATE__, __TIME__));\r\n }\r\n}\r\n\r\n<span style=\"color: #cc6600;\">void</span> <span style=\"color: #cc6600;\"><strong>loop</strong></span>()\r\n{\r\n <span style=\"color: #7e7e7e;\">//chiediamo il tempo all'RTC</span>\r\n DateTime now = RTC.now();\r\n <span style=\"color: #cc6600;\">int</span> analogPin=0;\r\n <span style=\"color: #cc6600;\">int</span> sensor =0; \r\n\r\n <span style=\"color: #7e7e7e;\">//aspettiamo 3secondi</span>\r\n <span style=\"color: #cc6600;\">delay</span>(2900);\r\n\r\n <span style=\"color: #7e7e7e;\">//leggiamo e convertiamo la temperatura dal pin 0 di arduino</span>\r\n sensor = <span style=\"color: #cc6600;\">analogRead</span>(analogPin);\r\n sensor = (5.0 * sensor * 100.0)/1024.0;\r\n\r\n <span style=\"color: #7e7e7e;\">//stampa sulla seriale</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">"Temperatura: "</span>);\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(sensor);\r\n\r\n <span style=\"color: #7e7e7e;\">//apriamo in scrittura il file sulla sd</span>\r\n <span style=\"color: #cc6600;\">File</span> dataFile = <span style=\"color: #cc6600;\">SD</span>.<span style=\"color: #cc6600;\">open</span>(<span style=\"color: #006699;\">"datalog.txt"</span>, <span style=\"color: #006699;\">FILE_WRITE</span>);\r\n\r\n <span style=\"color: #7e7e7e;\">//Scriviamo: TEMPERATURA - ORA:MINUTI:SECONDI</span>\r\n <span style=\"color: #cc6600;\">if</span> (dataFile) {\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(sensor);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">" - "</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(now.hour(), <span style=\"color: #006699;\">DEC</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">":"</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(now.minute(), <span style=\"color: #006699;\">DEC</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">":"</span>);\r\n dataFile.<span style=\"color: #cc6600;\">println</span>(now.second(), <span style=\"color: #006699;\">DEC</span>);\r\n <span style=\"color: #7e7e7e;\">//chiudiamo il file</span>\r\n dataFile.<span style=\"color: #cc6600;\">close</span>(); \r\n\r\n <span style=\"color: #7e7e7e;\">//blinking led verde</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">LOW</span>);\r\n } \r\n <span style=\"color: #cc6600;\">else</span> {\r\n\r\n <span style=\"color: #7e7e7e;\">//errore nell'apertura del file o card rimossa</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"error opening datalog.txt"</span>);\r\n <span style=\"color: #cc6600;\">for</span> (i=0;i<10;i++) {\r\n <span style=\"color: #7e7e7e;\">//blinkig led rosso</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">LOW</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100);\r\n }\r\n } \r\n}</pre>\r\n<p> </p>\r\n<p>Dopo il caricamento, apriamo il nostro monitor seriale (all'interno dell'ide c'è il proprio monitor seriale, ma possiamo utilizzare anche putty) a 9600baud sulla stessa porta USB su cui è attaccato il nostro arduino e avremo un output più o meno di questo tipo:</p>\r\n<pre>\r\n26 - 21:15:36\r\n25 - 21:17:15\r\n25 - 21:17:19\r\n25 - 21:17:22</pre>\r\n<p>Ogni volta verrà scritto un nuovo record nel nostro file che può essere elaborato in qualsiasi modo.</p>\r\n<p>In questo caso ho importato i dati su un foglio Excel:</p>\r\n<p><a href=\"http://img833.imageshack.us/img833/7668/capturesg.png\"><img alt=\"\" class=\"alignnone\" height=\"218\" src=\"http://img833.imageshack.us/img833/7668/capturesg.png\" title=\"http://img833.imageshack.us/img833/7668/capturesg.png\" width=\"365\" /></a></p>\r\n<p> </p>\r\n<p>Nel prossimo articolo uniremo alla temperatura anche la quantità di luce...</p>\r\n<p> </p>\r\n<p>Andrea Esposito</p>\r\n<p class=\"rtecenter\"><span style=\"font-size:16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n','','full_html'),('node','new',0,66,98,'und',0,'<p>http://www.raspberrypi.org/</p>\r\n','','filtered_html'),('node','forum',0,67,99,'und',0,'<p>Un saluto a tutti.</p>\r\n<p>Un problema mi affligge occupando <strong>troppo</strong> spazio nella mia testa.</p>\r\n<p> </p>\r\n<p>Utilizzando FRAPI, l' output in formato XML del progetto viene stampato senza alcun problema, la stessa cosa da terminale. Vanno benissimo.</p>\r\n<p>Ma appena accedo tramite browser, escono errori segnalandomi che non conosce le <strong>entità</strong>.</p>\r\n<p>Quale può essere il problema?</p>\r\n<p> </p>\r\n<p>Ripeto tramite XML e terminale funzionano perfettamente. Mi piacerebbe risolvere il problema anche per il browser. </p>\r\n<p> </p>\r\n<p>Ringrazio anticipatamente, augurandovi, come sempre, una</p>\r\n<p>Buona Programmazione.</p>\r\n','','filtered_html'),('node','new',0,68,100,'und',0,'<p>Ora http://students.uniparthenope.it è multilingua!</p>\r\n<p>E' al momento possibile scegliere la GUI in Italiano o in Inglese.</p>\r\n<p>Anche per i contenuti è stato attivato il supporto per ambo le lingue.</p>\r\n<p>Al momento sarà usato il solo Italiano... al momento :-)</p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,70,103,'und',0,'<p><strong>A.A.A. Cercasi Beta Tester per nuova applicazione Android per i servizi universitari agli studenti.</strong></p>\r\n<p>La richiesta è mirata alla prova di un'APP Android frutto del mio elaborato di tesi di Laurea triennale.</p>\r\n<p>Prova le funzionalità ... verifica il funzionamento ... interagisci con la tua Università ... controlla le News ... vedi gli orari degli Autobus ...</p>\r\n<p>... direttamente sul tuo terminale Android.</p>\r\n<p> </p>\r\n<p>Richiesto Smartphone con Android 2.2 o superiore (NO TABLET)</p>\r\n<p>Invia un tuo <strong>messaggio privato di adesione</strong> al progetto facendo click <a href=\"/?q=user/60\">qui</a>.</p>\r\n<p>Ti verrà inviata (nel giro di pochi giorni) la tua <u><strong>nuova APP Parthenope</strong></u> con cui accedere in tempo reale a tante nuove informazioni ...<img alt=\"wink\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif\" title=\"wink\" width=\"20\" /></p>\r\n<p> </p>\r\n<p>Ecco di seguito alcune screenshot delle possibili funzioni:</p>\r\n<p> </p>\r\n<p><a href=\"/sites/default/files/images/20120207141211.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120207141211.png\" /></a><a href=\"/sites/default/files/images/20120207141212.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120207141212.png\" /></a><a href=\"/sites/default/files/images/20120207141214.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120207141214.png\" /></a><a href=\"/sites/default/files/images/20120207141218.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120207141218.png\" /></a><a href=\"/sites/default/files/images/20120207141220.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120207141220.png\" /></a><a href=\"/sites/default/files/images/20120207141358.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120207141358.png\" /></a></p>\r\n<p> </p>\r\n<p>Discutiamone insieme sul <a href=\"/?q=forum/8\">forum</a> dedicato allo sviluppo di applicazioni per terminali mobili.</p>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,71,104,'und',0,'<p>Questa guida è relativa all'installazione di FRAPI (http://getfrapi.com/) sulla piattaforma di Hosting Linux offerta da UniParthenope tramite il Progetto Sebeto.</p>\r\n<p>E' necessario avere attivata l'opzione Hosting Linux nel proprio profilo.</p>\r\n<p>La documentazione ufficiale è disponibile su: http://frapi.github.com/</p>\r\n<ul>\r\n <li>\r\n Fare login tramite client ssh nel proprio spazio<br />\r\n <pre>\r\nssh NOMEUTENTE@students.uniparthenope.it</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Creare, se non presenti, le directory $HOME/opt e $HOME/dist<br />\r\n <pre>\r\nmkdir $HOME/opt\r\nmkdir $HOME/dist</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Scaricare l'ultima versione stabile del web server nginx (http://nginx.org/) (esempio)<br />\r\n <pre>\r\ncd $HOME/dist\r\nwget wget http://nginx.org/download/nginx-1.2.1.tar.gz\r\ntar -xvzf nginx-1.2.1.tar.gz\r\nrm nginx-1.2.1.tar.gz</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Compilare nginx<br />\r\n <pre>\r\ncd nginx-1.2.1\r\nmkdir $HOME/opt/nginx-1.2.1\r\n./configure --prefix=$HOME/opt/nginx-1.2.1\r\nmake 2>&1 | tee make.log\r\nmake install 2>&1 | tee install.log</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n <p>Puntare il proprio browser su: http://getfrapi.com/ e seguire i link per il recupero del repository GitHub (https://github.com/frapi/frapi/downloads#uploaded_downloads)</p>\r\n </li>\r\n <li>\r\n Scaricare l'ultima versione stabile di FRAPI (segue esempio)<br />\r\n <pre>\r\ncd $HOME/dist\r\nwget https://github.com/downloads/frapi/frapi/frapi-0.1.1.zip\r\nunzip frapi-0.1.1.zip\r\nrm frapi-0.1.1.zip\r\nmv frapi $HOME/opt</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Preparare l'ambiente<br />\r\n <pre>\r\nexport FRAPI_PATH=$HOME/opt/frapi/\r\ncd $FRAPI_PATH</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Impostare i permessi<br />\r\n <pre>\r\nsh ./setup.sh</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Impostare le directory di logging<br />\r\n <pre>\r\nmkdir -p $FRAPI_PATH/log/nginx/admin.frapi\r\nmkdir -p $FRAPI_PATH/log/nginx/api.frapi\r\n</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Configurare il web server nginx<br />\r\n <pre>\r\ncd $HOME/opt/nginx-1.2.1/conf\r\ncat > nginx.conf\r\n \r\nworker_processes 1;\r\n\r\nevents {\r\n worker_connections 1024;\r\n}\r\n\r\n\r\nhttp {\r\n include mime.types;\r\n default_type application/octet-stream;\r\n\r\n sendfile on;\r\n\r\n keepalive_timeout 65;\r\n\r\n server {\r\n listen ADMIN_FRAPI_PORT;\r\n server_name admin.frapi;\r\n access_log FRAPI_PATH/log/nginx/admin.frapi/access.log;\r\n\r\n root FRAPI_PATH/src/frapi/admin/public;\r\n index index.php;\r\n\r\n location / {\r\n try_files $uri $uri/ @api;\r\n }\r\n\r\n location @api {\r\n rewrite ^/(.*)$ /index.php?$1 last;\r\n }\r\n\r\n location ~ \\.php$ {\r\n fastcgi_pass 127.0.0.1:9000;\r\n fastcgi_index index.php;\r\n fastcgi_param SCRIPT_FILENAME FRAPI_PATH/src/frapi/admin/public/$fastcgi_script_name;\r\n include fastcgi_params;\r\n }\r\n }\r\n\r\nserver {\r\n listen API_FRAPI_PORT;\r\n server_name api.frapi;\r\n access_log FRAPI_PATH/log/nginx/api.frapi/access.log;\r\n\r\n root FRAPI_PATH/src/frapi/public;\r\n index index.php;\r\n\r\n location ~* ^.+\\.(jpg|js|jpeg|png|ico|gif|js|css|swf)$ {\r\n expires 24h;\r\n }\r\n\r\n location / {\r\n try_files $uri $uri/ @api;\r\n }\r\n\r\n location @api {\r\n rewrite ^/(.*)$ /index.php?$1 last;\r\n }\r\n\r\n location ~ ^/.*\\.php$ {\r\n fastcgi_pass 127.0.0.1:9000;\r\n fastcgi_index index.php;\r\n fastcgi_param SCRIPT_FILENAME FRAPI_PATH/src/frapi/public/$fastcgi_script_name;\r\n include fastcgi_params;\r\n }\r\n}\r\n}\r\n\r\n\r\n</pre>\r\n [CTRL]+[D]<br />\r\n <pre>\r\ncat > fastcgi.conf\r\n\r\nfastcgi_param SCRIPT_NAME $fastcgi_script_name;\r\nfastcgi_param QUERY_STRING $query_string;\r\nfastcgi_param REQUEST_METHOD $request_method;\r\nfastcgi_param CONTENT_TYPE $content_type;\r\nfastcgi_param CONTENT_LENGTH $content_length;\r\n\r\nfastcgi_param SCRIPT_NAME $fastcgi_script_name;\r\nfastcgi_param REQUEST_URI $request_uri;\r\nfastcgi_param DOCUMENT_URI $document_uri;\r\nfastcgi_param DOCUMENT_ROOT $document_root;\r\nfastcgi_param SERVER_PROTOCOL $server_protocol;\r\nfastcgi_param HTTPS $https if_not_empty;\r\n\r\nfastcgi_param GATEWAY_INTERFACE CGI/1.1;\r\nfastcgi_param SERVER_SOFTWARE nginx/$nginx_version;\r\n\r\nfastcgi_param REMOTE_ADDR $remote_addr;\r\nfastcgi_param REMOTE_PORT $remote_port;\r\nfastcgi_param SERVER_ADDR $server_addr;\r\nfastcgi_param SERVER_PORT $server_port;\r\nfastcgi_param SERVER_NAME $server_name;\r\n</pre>\r\n [CTRL]+[D]</li>\r\n</ul>\r\n<p><strong>Importante:</strong><br />\r\n sostituire FRAPI_PATH con il contenuto della variabile $FRAPI_PATH<br />\r\n sostituire FRAPI_API_PORT con il numero di porta per l'accesso alle API REST esposte tramite FRAPI<br />\r\n sostituire FRAPI_ADMIN_PORT con il numero di porta per l'accesso alla gestione delle API REST esposte tramite FRAPI</p>\r\n<ul>\r\n <li>\r\n Eseguire il web server<br />\r\n <pre>\r\n$HOME/opt/nginx-1.2.1/sbin/nginx</pre>\r\n </li>\r\n</ul>\r\n<ul>\r\n <li>\r\n Puntare il proprio browser su: http://students.uniparthenope.it:FRAPI_API_PORT oppure su http://students.uniparthenope.it:ADMIN_FRAPI_PORT</li>\r\n <li>\r\n Sviluppare i propri mattoni per il web 3.0!</li>\r\n <li>\r\n Interrompere il web server<br />\r\n <pre>\r\n$HOME/opt/nginx-1.2.1/sbin/nginx -s stop</pre>\r\n </li>\r\n</ul>\r\n<p>In altra documentazione saranno illustrate le linee guida da seguire per la creazione di API REST.</p>\r\n','','full_html'),('node','new',0,72,105,'und',0,'<p>Sono stati attivati i forum di discussione relativamente allo svuluppo di <a href=\"/?q=forum/9\">API REST</a> e di <a href=\"/?q=forum/8\">APP</a> per dispositivi mobili.</p>\r\n<p> </p>\r\n','','full_html'),('node','forum',0,73,106,'und',0,'<p><span>Salve a tutti, scrivo per chiedere delucidazioni ed aiuto in merito alla realizzazione di client che funga da interfaccia ad un web service, mi spiego meglio:</span><br />\r\n <br />\r\n <span>ho un web service che realizza tre funzioni, richiesta.wsdl, registrazione.wsdl, stato.wsdl ognuno di questi svolge delle operazioni a me ignote. </span><br />\r\n <span>So soltanto che a certi indirizzi sono esposti questi wsdl e che per comunicare con il web service devo passare da questi, i quali si aspettano dati formattati in un certo modo secondo un certo protocollo. (i dati e tipi di dati mi sono stati comunicati).</span><br />\r\n <br />\r\n <span>Detto ciò io dovrei quindi realizzare un client (mi hanno consigliato in PHP del quale sono a digiuno, preferirei JAVA se fosse equivalente) cosi da poter permettere la comunicazione con questo webservice dall'esterno.</span><br />\r\n <br />\r\n <span>In sintesi la piattaforma A espone un webservice ad un certo indirizzo, la piattaforma B ci vuole interagire, io devo realizzare questo canale di comunicazione che prenderà in input i dati passati dalla piattaforma B (problema di chi realizza la piattaforma B) e passarli alla piattaforma A per farli processare generando una risposta da restituire alla piattaforma B. Le indicazioni/suggerimenti sono di usare PHP per il client (preferirei JAVA se equivalente), e SOAP come protocollo per i dati.</span><br />\r\n <br />\r\n <span>Premesso che di PHP so mollto poco, e che non ho mai avuto a che fare con SOAP, tantomeno ho mai avuto a che fare con un web service, da dove dovrei iniziare? mi dareste delle indicazioni?</span></p>\r\n<p> </p>\r\n<p>giusto per capirci io sto partendo da qui: http://msdn.microsoft.com/en-us/library/ms996486.aspx</p>\r\n<p><br />\r\n <span>grazie mille </span><img alt=\"\" border=\"0\" src=\"http://forum.html.it/forum/images/smilies/biggrin.gif\" /></p>\r\n','','filtered_html'),('node','blog',0,74,107,'und',0,'<p> </p>\r\n<p> <img height=\"170\" src=\"http://i47.tinypic.com/34q3a7t.jpg\" width=\"387\" />a cura di Emilio Salomone e Flavio Tulino</p>\r\n<p> </p>\r\n<p>Tokbox è un sistema di videoconferenza che permette tramite API gratuite di integrare videochiamate singole o di gruppo all’interno del proprio sito web.</p>\r\n<p> </p>\r\n<p> </p>\r\n<ol>\r\n <li>\r\n <strong>Richiesta API Key Personale.</strong></li>\r\n</ol>\r\n<p> </p>\r\n<p style=\"margin-left:18.0pt;\">Ogni sviluppatore è identificato da una API Key che va richiesta tramite il seguente form :</p>\r\n<p style=\"margin-left:18.0pt;\"><a href=\"http://www.tokbox.com/opentok/api/documentation/gettingstarted#getAPIKey\">http://www.tokbox.com/opentok/api/documentation/gettingstarted#getAPIKey</a></p>\r\n<p style=\"margin-left:18.0pt;\"><img border=\"0\" height=\"207\" src=\"http://i45.tinypic.com/30vgj0z.jpg\" width=\"665\" /></p>\r\n<p style=\"margin-left:18.0pt;\">Inserire negli appositi campi Nome e Email e attendere qualche secondo per ricevere la mail contenente “API Key” e “API Secret” (Nei passi successivi ne verrà spiegato il metodo di utilizzo).</p>\r\n<p style=\"margin-left:18.0pt;\"> </p>\r\n<ol>\r\n <li value=\"2\">\r\n <strong>Descrizione e Download dei File Necessari</strong></li>\r\n</ol>\r\n<p> </p>\r\n<p style=\"margin-left:18.0pt;\">Scaricare il seguente pacchetto contenente i file necessari per l’implementazione :</p>\r\n<p style=\"margin-left:18.0pt;\"><a href=\"http://box.uniparthenope.it/public.php?service=files&token=a9e262eed137a62792aeb05076af8c96f83853eb&file=/Opentok.zip\">http://box.uniparthenope.it/public.php?service=files&token=a9e262eed137a62792aeb05076af8c96f83853eb&file=/Opentok.zip</a></p>\r\n<p style=\"margin-left:18.0pt;\"> </p>\r\n<p style=\"margin-left:18.0pt;\"> </p>\r\n<p style=\"margin-left:18.0pt;\">All’interno saranno presenti i seguenti file:</p>\r\n<p style=\"margin-left:18.0pt;\"><img border=\"0\" height=\"111\" src=\"http://i50.tinypic.com/nzpr0p.png\" width=\"463\" /></p>\r\n<p style=\"margin-left:36.0pt;\">- audio_video_only.php : è il file per il test della videoconferenza che va opportunamente modificato come sarà illustrato in seguito.</p>\r\n<p style=\"margin-left:36.0pt;\">- OpenTokArchive.php , OpenTokSDK.php , OpenTokSession.php : sono i file necessari per l’aspetto Server- side della videoconferenza.</p>\r\n<p style=\"margin-left:36.0pt;\">- samples.css : è il foglio di stile per la nostra videoconferenza.</p>\r\n<p> </p>\r\n<ol>\r\n <li value=\"3\">\r\n <strong>Implementazione</strong></li>\r\n</ol>\r\n<p> </p>\r\n<p>In questo esempio modificheremo opportunamente il file <strong>audio_video_only.php </strong>per la prova.</p>\r\n<p>Il primo passo è inserire il seguente codice PHP in testa al file audio_video_only.php :</p>\r\n<div style=\"background-color:LightGrey\">\r\n <p><?php</p>\r\n <p>require_once 'OpenTokSDK.php';</p>\r\n <p>$apiObj = new OpenTokSDK("<strong>API KEY</strong>","<strong>API_SECRET</strong>");</p>\r\n <p>$session = $apiObj->create_session($_SERVER["REMOTE_ADDR"]);</p>\r\n <p>?></p>\r\n</div>\r\n<p>In luogo di <strong>API KEY</strong> e <strong>API_SECRET </strong>vanno inseriti i corrispettivi contenuti nella mail ricevuta.</p>\r\n<p> </p>\r\n<ol>\r\n <li value=\"4\">\r\n <strong>Test e conclusioni</strong></li>\r\n</ol>\r\n<p> </p>\r\n<p>A questo punto si può testare l’effettivo funzionamento della videoconferenza aprendo la pagina da browser, si potrà notare che più utenti saranno collegati alla pagina (fino ad un max di 15), più finestre di chiamata si apriranno all’interno della stessa.</p>\r\n<p>Con queste semplici operazioni OpenTok promette e permette affidabilità e innovazione all’interno del proprio sito web!</p>\r\n<p>Per maggiori informazioni rimandiamo al tutorial in lingua inglese presente al seguente link :</p>\r\n<p><a href=\"http://www.tokbox.com/opentok/api/tools/js/tutorials/overview\">http://www.tokbox.com/opentok/api/tools/js/tutorials/overview</a> </p>\r\n<p> </p>\r\n<p>Per effettuare un test clicca <a href=\"http://students.uniparthenope.it/~0124000317/test-opentok/test.php\" target=\"_blank\">qui!</a></p>\r\n<p> </p>\r\n<p>A questo link è possibile scaricare la versione PDF :</p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=2d35876c340163cd2d8e11b373a8e1da2bf967d5&file=/Tutorial%20OpenTok.pdf\">Scarica</a></p>\r\n','','full_html'),('node','blog',0,75,108,'und',0,'<p>Arduino è il nome di una piattaformahardware per lo sviluppo di applicazioni basate sui microcontrollori ATMEL.</p>\r\n<p>Ideata in Italia nel 2005, è basata su una semplicissima scheda di I/O e su un ambiente di sviluppo che usa una libreria Wiring per semplificare la scrittura di programmi in C e C++ da far girare sulla scheda.</p>\r\n<p><a href=\"http://blackstufflabs.files.wordpress.com/2012/07/arduino_team.jpg?w=300\"><img alt=\"\" class=\"alignnone\" height=\"180\" src=\"http://blackstufflabs.files.wordpress.com/2012/07/arduino_team.jpg?w=300\" title=\"http://blackstufflabs.files.wordpress.com/2012/07/arduino_team.jpg?w=300\" width=\"270\" /></a></p>\r\n<p>Il progetto Arduino ha preso avvio in Italia ad Ivrea, nel 2005, con lo scopo di rendere disponibile a progettisti, studenti e semplici hobbisti, un dispositivo di sviluppo facile ed allo stesso tempo più economico rispetto a simili sistemi di prototipazione.</p>\r\n<p>A ottobre 2008 erano già stati venduti più di 50.000 esemplari di Arduino in tutto il mondo.</p>\r\n<p>Le schede uffi ciali usano i chip della serie megaAVR (nello specifi co, i modelli ATmega8, ATmega168, ATmega328, e ATmega1280) ma i loro cloni sono disponibili anche con altri microcontrollori.</p>\r\n<p><a href=\"http://justpushbuttons.com/blog/wp-content/uploads/2011/03/atmega328.jpg\"><img alt=\"\" class=\"alignnone\" height=\"137\" src=\"http://justpushbuttons.com/blog/wp-content/uploads/2011/03/atmega328.jpg\" title=\"http://justpushbuttons.com/blog/wp-content/uploads/2011/03/atmega328.jpg\" width=\"278\" /></a></p>\r\n<p>La scheda Arduino è pre-programmata con un bootloader che semplifica il caricamento dei programmi nella memoria Flash incorporata nel chip, rispetto ad altri dispositivi che richiedono, solitamente, un programmatore esterno.</p>\r\n<p>L’ambiente di programmazione integrato (IDE) di Arduino è un’applicazione multipiattaforma scritta in Java, ed è derivata dall’IDE creato per il linguaggio di programmazione Processing e adattato al progetto Wiring.</p>\r\n<p>È concepito per introdurre alla programmazione hobbisiti e neofiti, a digiuno di pratica nello sviluppo di software.</p>\r\n<p>Per poterla programmare da remoto senza alcun specifico programmatore, il microcontrollore viene fornito preprogrammato con uno specifico bootloader che instraderà in modo corretto il firmware nell’apposita area di memoria EEPROM durante la fase di programmazione.</p>\r\n<p>Collegare l'arduino al nostro pc è estremamente semplice, bisogna collegare tramite cavetto USB l'arduino al PC</p>\r\n<p><a href=\"http://www.ladyada.net/images/arduino/usbplugged_t.jpg\"><img alt=\"\" class=\"alignnone\" height=\"121\" src=\"http://www.ladyada.net/images/arduino/usbplugged_t.jpg\" title=\"http://www.ladyada.net/images/arduino/usbplugged_t.jpg\" width=\"145\" /></a></p>\r\n<p>Una volta collegata la nostra arduino alla porta usb avvengono due cose:</p>\r\n<p>1. viene data alimentazione alla nostra scheda che eseguirà da subito l'ultimo codice da noi caricato.</p>\r\n<p>Solitamente, la scheda arduino viene venduta con lo sketch "blink" già caricato su di essa, infatti un led smd post al di sotto del pin 13 inizierà a lampeggiare.</p>\r\n<p><a href=\"http://www.ladyada.net/images/arduino/diecledplaced.jpg\"><img alt=\"\" class=\"alignnone\" height=\"120\" src=\"http://www.ladyada.net/images/arduino/diecledplaced.jpg\" title=\"http://www.ladyada.net/images/arduino/diecledplaced.jpg\" width=\"180\" /></a></p>\r\n<p>2. arduino verrà riconosciuta dal nostro pc come periferica esterna: se si ha una duemilanove bisogna installare i driver del chipset (non open) FTDI, se è una UNO verrà riconosciuta automaticamente.</p>\r\n<p> </p>\r\n<p>I programmi, nel mondo arduino, vengono chiamati "sketch".</p>\r\n<p>Gli sketch vengono scritti, compilati e caricati sulla nostra scheda tramite l'IDE ufficiale.</p>\r\n<p>Una volta scaricata l'IDE dal sito ufficiale <a href=\"arduino.cc\" target=\"_blank\" title=\"arduino.cc\">arduino.cc</a> accertiamoci di aver selezionato la giusta porta COM della nostra arduino:</p>\r\n<p><a href=\"http://www.ladyada.net/images/arduino/winportselect.jpg\"><img alt=\"\" class=\"alignnone\" height=\"160\" src=\"http://www.ladyada.net/images/arduino/winportselect.jpg\" title=\"http://www.ladyada.net/images/arduino/winportselect.jpg\" width=\"283\" /></a></p>\r\n<p>E come target-board, la giusta scheda:</p>\r\n<p><a href=\"http://letsmakerobots.com/files/userpics/u5293/Arduino_IDE_Board_Select.jpg\"><img alt=\"\" class=\"alignnone\" height=\"311\" src=\"http://letsmakerobots.com/files/userpics/u5293/Arduino_IDE_Board_Select.jpg\" title=\"http://letsmakerobots.com/files/userpics/u5293/Arduino_IDE_Board_Select.jpg\" width=\"435\" /></a></p>\r\n<p> </p>\r\n<p>Sulla nostra ide 1.0.1 avremo i seguenti pulsanti:</p>\r\n<p><a href=\"http://img31.imageshack.us/img31/7966/cattura3a.png\"><img alt=\"\" class=\"alignnone\" height=\"62\" src=\"http://img31.imageshack.us/img31/7966/cattura3a.png\" title=\"http://img31.imageshack.us/img31/7966/cattura3a.png\" width=\"343\" /></a></p>\r\n<p>Verifica, Carica, Nuovo, Apri, Salva e Monitor Seriale.</p>\r\n<p>Possiamo tradurre i tasti in questo modo:</p>\r\n<p>Verifica: compila ma non carica il binario nel chip</p>\r\n<p>Carica: compila e carica il binario</p>\r\n<p>Nuovo: apre un nuovo file</p>\r\n<p>Apri: un file salvato</p>\r\n<p>Salva: un file da noi scritto</p>\r\n<p>Monitor Seriale: apre un monitor in ascolto sulla seriale di arduino, sarà la nostra finestra di colloquio con arduino.</p>\r\n<p>Riceveremo e mandermo caratteri.</p>\r\n<p> </p>\r\n<p>Avremo a disposizione decine di sketch già preconfezionati da poter testare da subito sulla nostra scheda:</p>\r\n<p><a href=\"http://img856.imageshack.us/img856/7868/immaginesui.png\"><img alt=\"\" height=\"269\" src=\"http://img856.imageshack.us/img856/7868/immaginesui.png\" title=\"http://img856.imageshack.us/img856/7868/immaginesui.png\" width=\"284\" /></a></p>\r\n<p> </p>\r\n<p>Il primo sketch che andremo a compilare e caricare sulla nostra scheda è un pò come il nostro primo "hello world" scritto in C qualche anno fa.</p>\r\n<p>In particolare apriremo l'esempio "blink":</p>\r\n<pre>\r\n<span style=\"color: #7E7E7E;\">/*</span>\r\n<span style=\"color: #7E7E7E;\"> Blink</span>\r\n<span style=\"color: #7E7E7E;\"> Accende il LED per un secondo, lo spegne per un altro secondo, ripetutamente</span>\r\n<span style=\"color: #7E7E7E;\"> */</span>\r\n\r\n<span style=\"color: #7E7E7E;\">//Il pin 13 ha un LED smd già saldato sulla maggior parte delle schede Arduino</span>\r\n<span style=\"color: #7E7E7E;\">//diamogli un nome:</span>\r\n<span style=\"color: #CC6600;\">int</span> led = 13;\r\n\r\n<span style=\"color: #7E7E7E;\">//la routine setup gira una sola volta dopo aver dato alimentazione o premuto il tasto reset</span>\r\n<span style=\"color: #CC6600;\">void</span> <span style=\"color: #CC6600;\"><b>setup</b></span>() { \r\n <span style=\"color: #7E7E7E;\">// inizializza il pin digitale 13 come output</span>\r\n <span style=\"color: #CC6600;\">pinMode</span>(led, <span style=\"color: #006699;\">OUTPUT</span>); \r\n}\r\n\r\n<span style=\"color: #7E7E7E;\">// la routine loop esegue le istruzioni all'infinito</span>\r\n<span style=\"color: #CC6600;\">void</span> <span style=\"color: #CC6600;\"><b>loop</b></span>() {\r\n <span style=\"color: #CC6600;\">digitalWrite</span>(led, <span style=\"color: #006699;\">HIGH</span>); <span style=\"color: #7E7E7E;\">// accende il led (HIGH il massimo voltaggio 5v)</span>\r\n <span style=\"color: #CC6600;\">delay</span>(1000); <span style=\"color: #7E7E7E;\">// wait per un secondo</span>\r\n <span style=\"color: #CC6600;\">digitalWrite</span>(led, <span style=\"color: #006699;\">LOW</span>); <span style=\"color: #7E7E7E;\">// spegne il led (LOW è la più bassa tensione)</span>\r\n <span style=\"color: #CC6600;\">delay</span>(1000); <span style=\"color: #7E7E7E;\">// aspetta per un secondo</span>\r\n}\r\n\r\n</pre>\r\n<p>Premiamo sul pulsante "Carica" e....</p>\r\n<p><a href=\"http://www.ladyada.net/images/arduino/myblinkupload.jpg\"><img alt=\"\" class=\"alignnone\" height=\"141\" src=\"http://www.ladyada.net/images/arduino/myblinkupload.jpg\" title=\"http://www.ladyada.net/images/arduino/myblinkupload.jpg\" width=\"545\" /></a></p>\r\n<p>...blinking!</p>\r\n<p>Eventualmente, si può innestare un led esterno (correttamente orientato) tra il pin GND e 13 come in molti esempi:</p>\r\n<p><a href=\"http://www.ladyada.net/images/arduino/ngled_t.jpg\"><img alt=\"\" class=\"alignnone\" height=\"225\" src=\"http://www.ladyada.net/images/arduino/ngled_t.jpg\" title=\"http://www.ladyada.net/images/arduino/ngled_t.jpg\" width=\"300\" /></a></p>\r\n<p>Non è propriamente corretto inserirlo direttamente in quanto il led verrebbe sovralimentato, andrebbe collegato con una resistenza da 1KOhm in serie, in questo modo:</p>\r\n<p><a href=\"http://www.ladyada.net/images/arduino/lesson3sch4.jpg\"><img alt=\"\" class=\"alignnone\" src=\"http://www.ladyada.net/images/arduino/lesson3sch4.jpg\" title=\"http://www.ladyada.net/images/arduino/lesson3sch4.jpg\" /></a><a href=\"http://www.ladyada.net/images/arduino/led13bb_t.jpg\"><img alt=\"\" class=\"alignnone\" height=\"254\" src=\"http://www.ladyada.net/images/arduino/led13bb_t.jpg\" title=\"http://www.ladyada.net/images/arduino/led13bb_t.jpg\" width=\"380\" /></a></p>\r\n<p> </p>\r\n<p>Il nostro primo "hello world" è terminato! </p>\r\n<p>Modificando leggermente il codice potremmo inserire più led, accenderli in modalità diverse, dando intensità e colori diversi...</p>\r\n<p> </p>\r\n<p> </p>\r\n<p>fonti:</p>\r\n<p>adafruit.com</p>\r\n<p>elettronicaIN</p>\r\n<p class=\"rtecenter\"><span style=\"font-size:16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n','','full_html'),('node','blog',0,76,109,'und',0,'<p>Nel precedente articolo abbiamo dato una prima ossatura al nostro data logger.</p>\r\n<p>Questa volta andremo ad inserire nel nostro sketch l'LDR e andremo a mediare i nostri valori dando un output più preciso possibile.</p>\r\n<p>Lo schema di massima del collegamento è il seguente:</p>\r\n<p><a href=\"http://www.ladyada.net/wiki/lib/exe/fetch.php?hash=988108&w=162&h=322&media=http%3A%2F%2Fwww.ladyada.net%2Fimages%2Fsensors%2Fcdsanasch.gif\"><img alt=\"\" class=\"alignnone\" height=\"195\" src=\"http://www.ladyada.net/wiki/lib/exe/fetch.php?hash=988108&w=162&h=322&media=http%3A%2F%2Fwww.ladyada.net%2Fimages%2Fsensors%2Fcdsanasch.gif\" title=\"http://www.ladyada.net/wiki/lib/exe/fetch.php?hash=988108&w=162&h=322&media=http%3A%2F%2Fwww.ladyada.net%2Fimages%2Fsensors%2Fcdsanasch.gif\" width=\"98\" /></a><a href=\"http://www.hobbytronics.co.uk/image/data/tutorial/arduino-tutorial/ldr_nightlight_breadboard.jpg\"><img alt=\"\" class=\"alignnone\" height=\"180\" src=\"http://www.hobbytronics.co.uk/image/data/tutorial/arduino-tutorial/ldr_nightlight_breadboard.jpg\" title=\"http://www.hobbytronics.co.uk/image/data/tutorial/arduino-tutorial/ldr_nightlight_breadboard.jpg\" width=\"243\" /></a></p>\r\n<p> </p>\r\n<p>Un primo sketch per la lettura dell'ldr può essere questo:</p>\r\n<pre>\r\n<span style=\"color: #cc6600;\">int</span> photocellPin = 1; <span style=\"color: #7e7e7e;\">// LDR connesso al pin analogico 1</span>\r\n<span style=\"color: #cc6600;\">int</span> photocellReading; <span style=\"color: #7e7e7e;\">// variabile di conversione </span>\r\n\r\nphotocellReading = <span style=\"color: #cc6600;\">analogRead</span>(photocellPin); \r\n<span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">"Luce = "</span>);\r\n<span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">print</span>(photocellReading); \r\n<span style=\"color: #7e7e7e;\">// scriviamo sulla seriale la quantità di luce percepita</span>\r\n\r\n<span style=\"color: #cc6600;\">if</span> (photocellReading < 10) {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" - Scuro"</span>);\r\n} \r\n<span style=\"color: #cc6600;\">else</span> <span style=\"color: #cc6600;\">if</span> (photocellReading < 200) {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" - Poca luce"</span>);\r\n} \r\n<span style=\"color: #cc6600;\">else</span> <span style=\"color: #cc6600;\">if</span> (photocellReading < 500) {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" - Luce"</span>);\r\n} \r\n<span style=\"color: #cc6600;\">else</span> <span style=\"color: #cc6600;\">if</span> (photocellReading < 800) {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" - Luminoso"</span>);\r\n} \r\n<span style=\"color: #cc6600;\">else</span> {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" - Molto luminoso"</span>);\r\n}</pre>\r\n<p> </p>\r\n<p>Minore è il valore percepito più sarà buio.</p>\r\n<p>In questo caso il valore letto è stato spalmato su 5 print, ottimo per il debug sulla seriale.</p>\r\n<p>Ora bisogna riorganizzare la nostra basetta e montare assieme LDR, LED e LM35 (sembra uno scoglilingua!) per ottenere questo:</p>\r\n<p><a href=\"http://img822.imageshack.us/img822/4682/wiringok.png\"><img alt=\"\" class=\"alignnone\" height=\"222\" src=\"http://img822.imageshack.us/img822/4682/wiringok.png\" title=\"http://img822.imageshack.us/img822/4682/wiringok.png\" width=\"278\" /></a></p>\r\n<p> </p>\r\n<p>Ora riorganizziamo lo sketch iniziale ed introduciamo media su 20 letture consecutive per poi ottenere questo sketch finale:</p>\r\n<pre>\r\n#include <<span style=\"color: #cc6600;\">SD</span>.h>\r\n#include <<span style=\"color: #cc6600;\">Wire</span>.h>\r\n#include <span style=\"color: #006699;\">"RTClib.h"</span>\r\n\r\nRTC_DS1307 RTC;\r\n\r\n<span style=\"color: #cc6600;\">const</span> <span style=\"color: #cc6600;\">int</span> chipSelect = 10;\r\n<span style=\"color: #cc6600;\">short</span> i=0;\r\n\r\n<span style=\"color: #cc6600;\">void</span> <span style=\"color: #cc6600;\"><strong>setup</strong></span>()\r\n{\r\n <span style=\"color: #7e7e7e;\">//seriale aperta a 9600 baud</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">begin</span>(9600);\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"Initializing SD card..."</span>);\r\n\r\n <span style=\"color: #7e7e7e;\">//inizializziamo i pin 3 e 4 per i led rosso-verde</span>\r\n <span style=\"color: #7e7e7e;\">//pin 10 riservato al card reader</span>\r\n <span style=\"color: #cc6600;\">pinMode</span>(10, <span style=\"color: #006699;\">OUTPUT</span>);\r\n <span style=\"color: #cc6600;\">pinMode</span>(3, <span style=\"color: #006699;\">OUTPUT</span>); \r\n <span style=\"color: #cc6600;\">pinMode</span>(4, <span style=\"color: #006699;\">OUTPUT</span>); \r\n\r\n <span style=\"color: #7e7e7e;\">//se il modulo sd non viene correttamente inizializzato</span>\r\n <span style=\"color: #cc6600;\">if</span> (!<span style=\"color: #cc6600;\">SD</span>.<span style=\"color: #cc6600;\">begin</span>(chipSelect)) {\r\n <span style=\"color: #7e7e7e;\">//messaggio di errore sul nostro monitor seriale</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"Card failed, or not present"</span>);\r\n\r\n <span style=\"color: #cc6600;\">for</span> (i=0;i<10;i++) {\r\n <span style=\"color: #7e7e7e;\">//blinking del led rosso</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">LOW</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100);\r\n }\r\n <span style=\"color: #cc6600;\">return</span>;\r\n }\r\n\r\n <span style=\"color: #7e7e7e;\">//se correttamente inizializzata...</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"card initialized."</span>);\r\n <span style=\"color: #7e7e7e;\">//blinking led verde</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(500); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">LOW</span>);\r\n\r\n <span style=\"color: #7e7e7e;\">//inizializziamo l'RTC</span>\r\n <span style=\"color: #cc6600;\">Wire</span>.<span style=\"color: #cc6600;\">begin</span>();\r\n RTC.<span style=\"color: #cc6600;\">begin</span>();\r\n <span style=\"color: #cc6600;\">if</span> (! RTC.isrunning()) {\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"RTC is NOT running!"</span>);\r\n RTC.adjust(DateTime(__DATE__, __TIME__));\r\n }\r\n}\r\n\r\n<span style=\"color: #cc6600;\">void</span> <span style=\"color: #cc6600;\"><strong>loop</strong></span>()\r\n{\r\n <span style=\"color: #7e7e7e;\">//chiediamo il tempo all'RTC</span>\r\n DateTime now = RTC.now();\r\n <span style=\"color: #cc6600;\">int</span> tempPin=0; <span style=\"color: #7e7e7e;\">//pin del sensore di temperatura</span>\r\n <span style=\"color: #cc6600;\">int</span> ldrPin=1; <span style=\"color: #7e7e7e;\">//pin del sensore di luce</span>\r\n\r\n <span style=\"color: #cc6600;\">int</span> campioni=20; <span style=\"color: #7e7e7e;\">//20 campioni</span>\r\n <span style=\"color: #cc6600;\">int</span> ii=0;\r\n <span style=\"color: #cc6600;\">float</span> tempc1=0; <span style=\"color: #7e7e7e;\">// variabile per la temperatura</span>\r\n <span style=\"color: #cc6600;\">long</span> <span style=\"color: #cc6600;\">unsigned</span> <span style=\"color: #cc6600;\">int</span> light=0; <span style=\"color: #7e7e7e;\">//variabile per la luce</span>\r\n <span style=\"color: #cc6600;\">float</span> samples1[campioni]; <span style=\"color: #7e7e7e;\">// array di campioni per la temperatura e luce</span>\r\n <span style=\"color: #cc6600;\">int</span> samples2[campioni]; \r\n\r\n <span style=\"color: #7e7e7e;\">//aspettiamo 3secondi</span>\r\n <span style=\"color: #cc6600;\">delay</span>(2900);\r\n\r\n <span style=\"color: #cc6600;\">for</span>(ii = 0; ii <= campioni-1 ; ii++)\r\n {\r\n <span style=\"color: #7e7e7e;\">//nell'II-esimo elemento dell'array Samples1 inseriamo il valore convertito della temperatura</span>\r\n samples1[ii] = (( 5.0 * <span style=\"color: #cc6600;\">analogRead</span>(tempPin) * 100.0) / 1024.0);\r\n <span style=\"color: #7e7e7e;\">//sommiamo le temperature di volta in volta in un altra variabile</span>\r\n tempc1 = tempc1 + samples1[ii];\r\n\r\n <span style=\"color: #7e7e7e;\">//non abbiamo bisogna di convertire il valore della quantità di luce, la recuperiamo direttamente</span>\r\n samples2[ii] = <span style=\"color: #cc6600;\">analogRead</span>(ldrPin);\r\n light=light + samples2[ii];\r\n }\r\n\r\n <span style=\"color: #7e7e7e;\">//dividiamo la sommatoria per N</span>\r\n tempc1 = tempc1/campioni; \r\n light = light /campioni;\r\n\r\n <span style=\"color: #7e7e7e;\">//stampiamo sul nostro monitor seriale per eventuale debugging</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">print</span>(tempc1);\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" C"</span>);\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">print</span>(light);\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">" light"</span>); \r\n\r\n <span style=\"color: #7e7e7e;\">//apriamo in scrittura il file sulla sd</span>\r\n <span style=\"color: #cc6600;\">File</span> dataFile = <span style=\"color: #cc6600;\">SD</span>.<span style=\"color: #cc6600;\">open</span>(<span style=\"color: #006699;\">"datalog.txt"</span>, <span style=\"color: #006699;\">FILE_WRITE</span>);\r\n\r\n <span style=\"color: #7e7e7e;\">//Scriviamo: LUCE - TEMPERATURA - ORA:MINUTI:SECONDI</span>\r\n <span style=\"color: #cc6600;\">if</span> (dataFile) {\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(light);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">" - "</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(tempc1);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">" - "</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(now.hour(), <span style=\"color: #006699;\">DEC</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">":"</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(now.minute(), <span style=\"color: #006699;\">DEC</span>);\r\n dataFile.<span style=\"color: #cc6600;\">print</span>(<span style=\"color: #006699;\">":"</span>);\r\n dataFile.<span style=\"color: #cc6600;\">println</span>(now.second(), <span style=\"color: #006699;\">DEC</span>);\r\n <span style=\"color: #7e7e7e;\">//chiudiamo il file</span>\r\n dataFile.<span style=\"color: #cc6600;\">close</span>(); \r\n\r\n <span style=\"color: #7e7e7e;\">//blinking led verde</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(4, <span style=\"color: #006699;\">LOW</span>);\r\n } \r\n <span style=\"color: #cc6600;\">else</span> {\r\n\r\n <span style=\"color: #7e7e7e;\">//errore nell'apertura del file o card rimossa</span>\r\n <span style=\"color: #cc6600;\"><strong>Serial</strong></span>.<span style=\"color: #cc6600;\">println</span>(<span style=\"color: #006699;\">"error opening datalog.txt"</span>);\r\n <span style=\"color: #cc6600;\">for</span> (i=0;i<10;i++) {\r\n <span style=\"color: #7e7e7e;\">//blinkig led rosso</span>\r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">HIGH</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100); \r\n <span style=\"color: #cc6600;\">digitalWrite</span>(3, <span style=\"color: #006699;\">LOW</span>); \r\n <span style=\"color: #cc6600;\">delay</span>(100);\r\n }\r\n } \r\n}</pre>\r\n<p>Perchè mediare? Nello sketch finale ho inserito questo codice:</p>\r\n<pre>\r\n <span style=\"color: #cc6600;\">for</span>(ii = 0; ii <= campioni-1 ; ii++)\r\n {\r\n <span style=\"color: #7e7e7e;\">//nell'II-esimo elemento dell'array Samples1 inseriamo il valore convertito della temperatura</span>\r\n samples1[ii] = (( 5.0 * <span style=\"color: #cc6600;\">analogRead</span>(tempPin) * 100.0) / 1024.0);\r\n <span style=\"color: #7e7e7e;\">//sommiamo le temperature di volta in volta in un altra variabile</span>\r\n tempc1 = tempc1 + samples1[ii];\r\n\r\n <span style=\"color: #7e7e7e;\">//non abbiamo bisogna di convertire il valore della quantità di luce, la recuperiamo direttamente</span>\r\n samples2[ii] = <span style=\"color: #cc6600;\">analogRead</span>(ldrPin);\r\n light=light + samples2[ii];\r\n }\r\n\r\n <span style=\"color: #7e7e7e;\">//dividiamo la sommatoria per N</span>\r\n tempc1 = tempc1/campioni; \r\n light = light /campioni;</pre>\r\n<p>I motivi principali sono due:</p>\r\n<ol>\r\n <li>\r\n una precisione leggermente migliore della lettura fatta col codice del primo articolo</li>\r\n <li>\r\n in realtà, la media via software può essere evitata se venisse introdotto un piccolo circuito tra sensori e pin.</li>\r\n</ol>\r\n<p>Campionare 20 volte successivamente, mi permette di evitare di introdurre altra circuiteria.</p>\r\n<p>Questo workaround ci permette di non avere valori sballati dovuti ad un effetto collaterale, a livello hardware, del "<a href=\"http://en.wikipedia.org/wiki/Sample_and_hold\" target=\"_blank\" title=\"http://en.wikipedia.org/wiki/Sample_and_hold\">Sample and Hold</a>"</p>\r\n<p>Aprire ed usare il monitor seriale ci permetterà di fare tanto debug... usatelo!</p>\r\n<p> </p>\r\n<p>Sul nostro file datalog.txt avremo finalmente i valori nel formato che ci eravamo prefissi di avere...</p>\r\n<p class=\"rtecenter\"><span style=\"font-size:16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n','','full_html'),('node','forum',0,77,110,'und',0,'<p> </p>\r\n<pre wrap=\"\">\r\nSalve,\r\ndopo aver fatto con il prof. Montella l'iscrizione al progetto Sebeto,\r\ne volendo installare drupal sullo spazio di Sebeto,\r\nnon riesco ad accedere con le info che sono salvate nel file README presenti directory home.\r\nAnche l'accesso tramite phpmyadmin\r\nall'indirizzo\r\n<a class=\"moz-txt-link-freetext\" href=\"http://students.uniparthenope.it/phpmyadmin/\">http://students.uniparthenope.it/phpmyadmin/</a>\r\nnon funziona...\r\nCosa devo fare?\r\nSaluti.</pre>\r\n','','filtered_html'),('node','blog',0,78,111,'und',0,'<h1>\r\n <strong>Ricerca di libri e riviste nella Biblioteca di Ateneo.</strong></h1>\r\n<p> </p>\r\n<h2>\r\n <strong>Description:</strong></h2>\r\n<div>\r\n Dato un titolo, un autore, un editore o in generale una parola, l' API restituisce l'elenco dei record che soddisfano la richiesta di ricerca.</div>\r\n<h2>\r\n </h2>\r\n<h2>\r\n <strong>URL:</strong></h2>\r\n<p>http://students.uniparthenope.it:19091/UniLibrary/searchbook.json</p>\r\n<h2>\r\n </h2>\r\n<h2>\r\n <strong>HTTP Method:</strong></h2>\r\n<p>GET</p>\r\n<p> </p>\r\n<h2>\r\n <strong>Resource Formats:</strong></h2>\r\n<ul>\r\n <li>\r\n <div>\r\n application/json;</div>\r\n </li>\r\n <li>\r\n <div>\r\n application/xml;</div>\r\n </li>\r\n</ul>\r\n<h2>\r\n </h2>\r\n<h2>\r\n <strong>Authentication:</strong></h2>\r\n<div>\r\n Not required.</div>\r\n<p> </p>\r\n<h2>\r\n <strong>Request entities:</strong></h2>\r\n<ul>\r\n <li>\r\n request (obbligatorio);</li>\r\n <li>\r\n by { all, author, title, editor, subject, isbn, issn, system_nbr } (Campo non obbligatorio, in caso di assenza, la ricerca sarà di tipo <em>all);</em></li>\r\n</ul>\r\n<p> </p>\r\n<h2>\r\n <strong>Responses:</strong></h2>\r\n<ul>\r\n <li>\r\n <strong>405 NO_METHOD </strong> Method not allowed.</li>\r\n <li>\r\n <strong>413 NO_REQUEST </strong> No data sent</li>\r\n <li>\r\n <strong>205 NO_RESULTS </strong> No data available</li>\r\n</ul>\r\n<p> </p>\r\n<h2>\r\n <strong>Prova l'API REST sulla console di students.uniparthenope.it:</strong></h2>\r\n<p><span style=\"color: rgb(68, 68, 68); font-family: Monaco, \'Lucida Console\', fixed; line-height: 15px; background-color: rgb(238, 238, 238); \">get("http://students.uniparthenope.it:19091/UniLibrary/searchbook.json", {"request":"giunta", "by":"all"})</span></p>\r\n<h2>\r\n </h2>\r\n<h2>\r\n <strong>Example of use:</strong></h2>\r\n<div>\r\n curl -X GET "http://students.uniparthenope.it:19091/UniLibrary/searchbook.json?request=giunta&by=author"</div>\r\n<div>\r\n </div>\r\n<h2>\r\n <strong>Response Entities: </strong></h2>\r\n<pre>\r\n</pre>\r\n<pre class=\"token\" style=\"color: rgb(85, 85, 85); line-height: 15px; background-color: rgb(238, 238, 238); \">\r\n{ RECORD: [ { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Giunta, Francesco "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Il bilancio / Francesco Giunta, Michele Pisani "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Il bilancio "</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 2. ed. "</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Milano : Apogeo, c2008 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" XIV, 704 p. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Idee & strumenti "</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Idee & strumenti "</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ISBN 978-88-503-28055 "</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Bilancio "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Pisani, Michele "</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 657.3 (ed. 22) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca Centrale "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca-Centrale( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"657-B/30 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Giunta, Francesco <\\1956- > "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Economia aziendale / Francesco Giunta "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Economia aziendale "</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Padova : Cedam, 2008 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" XVIII, 434 p. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ISBN 978-88-13-27348-4 "</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Aziende - Gestione "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 338.5 (ed. 21) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Polo Ing. Sc. Tecn. "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Polo-Ing.-Sc.-Tecn.( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"P1 338-E-16 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Giunta, Fausto "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Lineamenti di diritto penale dell’economia / Fausto Giunta "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 2. ed. "</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Torino : Giappichelli, 2004- "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" v. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Trittico giuridico, Manuali "</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Trittico giuridico. Manuali "</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ISBN 88-348-4568-4 (v. 1) "</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 345.450268 (ed. 20) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Giurisprudenza "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 1.: Delitti contro l’economia pubblica e reati societari. - 2004 "</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Giurisprudenza( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"R-0074 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Camera di commercio industria artigianato e agricoltura "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Raccolta degli usi della provincia di Napoli : 1990 : approvata con delibera della Giunta camerale n. 421 del 12.7.94 / Camera di commercio industria artigianato e agricoltura di Napoli "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" [Napoli] : Camera di commercio industria artigianato e agricoltura, stampa 1995 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 524 p. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ISBN 88- "</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Giurisprudenza "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Giurisprudenza( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"3O(001) "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Atti del XXIV Convegno nazionale dell’ Associazione italiana di cartografia Proceedings of the XXIV national meeting of the Associazione italiana di cartografia : L’Aquila, 25-28 maggio 1988 / Regione Abruzzo : Ufficio stampa della Giunta "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Atti del XXIV Convegno nazionale dell’ Associazione italiana di cartografia "</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" S. Atti di Teramo : Edigrafital, 1989 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 816 p. : ill. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Cartografia "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" (ed. 20) 526 "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Dip. di Scienze Applicate "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Fa parte di: Bollettino dell’Associazione Italiana di Cartografia "</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Dip.-di-Scienze-Applicate( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"S 526/12 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Rompiasio, Giulio "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Metodo in pratica di sommario o sia Compilazione delle leggi, terminazioni & ordini appartenenti agl’illustrissimi & eccellentissimi collegio e magistrato alle acque opera dell’avvocato fiscale Giulio Rompiasio : in Venezia 1733 / riedizione critica a cura di Giovanni Caniato "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Venezia : Ministero per i beni culturali e ambientali - Archivio di Stato di Venezia - Regione del Veneto - Giunta regionale, 1988 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 176, XXIV, 601 p. : ill., tav. ; 30 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Strumenti per la ricerca archivistica. Sez. 1., Repertori antichi ; 1 "</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Strumenti per la ricerca archivistica "</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 346.453104691 (ed. 19) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca Centrale "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" In test. al front.: Ministero per i beni culturali e ambientali, Archivio di Stato di Venezia; Giunta regionale del Veneto. "</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca-Centrale( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"346.00945/100 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Rovigo : le chiese : catalogo dei beni artistici e storici / [a cura] di Vittorio Sgarbi "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Venezia : Giunta regionale del Veneto Marsilio, 1988 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" XIV, 496 p., [32] c. di tav. : ill ; 29 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Rovigo - Chiese "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 759 (ed. 20) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca Centrale "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca-Centrale( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"759/101 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Giunta, Giovanni "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Il redditometro : l’accertamento sintetico dopo il Decreto Ministeriale del 21 Luglio 1983 (...) / di Giovanni Giunta "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" [Milano] : Ipsoa informatica, 1983 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 173 p. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ISBN 88-217-0083-6 "</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Reddito - Determinazione "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 343 "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca Centrale "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca-Centrale( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"336-R/1 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Conferenza nazionale sulla cartografia <\\1979 ; Firenze> "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Conferenza nazionale sulla cartografia : atti della conferenza promossa ed organizzata dalla regione Toscana con il patrocinio del Ministero della Ricerca Scientifica e Tecnologia e la collaborazione del Consiglio Nazionale delle Ricerche "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Conferenza nazionale sulla cartografia "</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Firenze : Giunta Regionale Toscana, 1979 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 607 p. ; 24 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Cartografia - Congressi "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 526 (ed. 21) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Dip. di Scienze Applicate "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Dip.-di-Scienze-Applicate( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"S 526/1 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Angelici, Mario "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Il giudizio di fronte alla Giunta provinciale amministrativa : in relazione anche alla riforma della giustizia amministrativa / Mario Angelici "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Padova : CEDAM, 1958 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" X, 170 p. ; 26 cm "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Giustizia amministrativa - Riforma "</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 350 (ed. 20) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca Centrale "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Biblioteca-Centrale( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"DEP I-0168 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Kamtz, Ludwig Friedrich "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Prelezioni di meteorologia / per Luigi Federigo Kamtz ; versione dal tedesco di V. Kohler e L. Del Re riveduta e corretta con la giunta di alquante note ricavate da quelle di Martins e Bravais "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Torino : dalla Societa Editrice della Biblioteca dei Comuni Italiani, 1853 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 2 v. "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 551.5 (ed. 21) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Fondo Borbonico "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Voll. 1-2: Brossure editoriali (19x12 cm); legature parz. scucite; carte intonse; foxing UNIPARTHENOPE "</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Vol. 1: Sul front. antiche segnature mss.: 94-g-2 [n.i.]; Class VII 736 Ingress 2425 del Registro inventario della Regia Marina Biblioteca dipartimentale di Napoli; ivi, inoltre, 551.52 class Dewey dell’IUN; 2851 [n.i.]; timbri A e B della Reale Biblioteca di Marina UNIPARTHENOPE "</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Vol. 1: 231 p., [2] c. di tav. ripieg.Vol. 2: 510 p., [2] c. di tav. ripieg. "</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Fondo-Borbonico( 2/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"BORB-G-30/I "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Jatta, Giovanni <\\1767-1844> "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Cenno storico sull’antichissima città di Ruvo nella Peucezia : colla giunta della breve istoria del famoso combattimento de’ tredici cavalieri italiani con altrettanti francesi ... / del giureconsulto napolitano Giovanni Jatta "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Napoli : dalla Tip. Porcelli, 1844 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 348, 30, 40 p., [2] c. di tav., [1] ritr. : ill. ; 28 cm. "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 945.751 (ed. 21) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Fondo Borbonico "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Contiene anche: Rubastinorum numorum catalogus / edidit Franciscus M. Avellinius "</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Legatura in quarto di pelle su piatti di cartone ricoperti di c. dec. (27x21x3 cm.); sul dorso A., tit. e fregi impressi in oro; ivi, inoltre, etichette con antiche segnature; tagli spruzzati; foxing UNIPARTHENOPE "</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Sulla controguardia ant. antiche segnature mss.: Sc.C.I-15 [n.i.]; 69 i 3 [n.i.]; Clas X N.° 156 Ingres 3482 del Registro inventario della Regia Marina Biblioteca dipartimentale di Napoli; sul r. della c. di g. ant. antica scegnatura ms.: 12L-N-12 [n.i.]; Timbri A e B della Reale Biblioteca di Marina UNIPARTHENOPE "</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Rubastinorum numorum catalogus "</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Fondo-Borbonico( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"BORB-P-32 "</span> }, { author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Jatta, Giovanni <\\1767-1844> "</span>, title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Cenno storico sull’antichissima città di Ruvo nella Peucezia : colla giunta della breve istoria del famoso combattimento de’ tredici cavalieri italiani con altrettanti francesi ... / del giureconsulto napolitano Giovanni Jatta "</span>, uniform_title: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, edition: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, publication: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Napoli : dalla Tip. Porcelli, 1844 "</span>, description: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 348, 30, 40 p., [2] c. di tav., [1] ritr. : ill. ; 28 cm. "</span>, series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, language: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" ita "</span>, standard_series: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, ISBN: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, subject: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, alternative_author: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, CCD: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" 945.751 (ed. 21) "</span>, info_copies: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Fondo Borbonico "</span>, general_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, notes_bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Contiene anche: Rubastinorum numorum catalogus / edidit Franciscus M. Avellinius "</span>, bond: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, known_example: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Legatura in quarto di pelle su piatti di cartone ricoperti di c. dec. (27x21x3 cm.); sul dorso A., tit. e fregi impressi in oro; ivi, inoltre, etichette con antiche segnature; tagli spruzzati; foxing UNIPARTHENOPE "</span>, ownership_note: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Sulla controguardia ant. antiche segnature mss.: Sc.C.I-15 [n.i.]; 69 i 3 [n.i.]; Clas X N.° 156 Ingres 3482 del Registro inventario della Regia Marina Biblioteca dipartimentale di Napoli; sul r. della c. di g. ant. antica scegnatura ms.: 12L-N-12 [n.i.]; Timbri A e B della Reale Biblioteca di Marina UNIPARTHENOPE "</span>, published: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">" Rubastinorum numorum catalogus "</span>, content: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">""</span>, library: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"Fondo-Borbonico( 1/ 0) "</span>, collocation: <span class=\"literal\" style=\"color: rgb(44, 120, 167); \">"BORB-P-32 "</span> } ] }</pre>\r\n','','full_html'),('node','forum',0,79,112,'und',0,'<p>Salve a tutti. <br />\r\n Avrei bisogno di creare un file .txt in una cartella.<br />\r\n Ho tutti i privilegi (almento credo) per creare le cartelle (ho anche provato con chmod) ma il txt non ne vuole sapere di comparire.<br />\r\n <br />\r\n Posto lo script:</p>\r\n<p><code></p>\r\n<div>\r\n <?php</div>\r\n<div>\r\n include 'database.php';</div>\r\n<div>\r\n session_start();</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (!isset($_POST["submit"])){</div>\r\n<div>\r\n </div>\r\n<div>\r\n $id = $_SESSION ["id_inserzione"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n $query = mysql_query("SELECT `username_utente` FROM `prenotazioni` WHERE `ID_inserzione`='$id'");</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo '<form action="response.php" method="POST">';</div>\r\n<div>\r\n while ($array = mysql_fetch_array($query)) {</div>\r\n<div>\r\n $user = $array['username_utente'];</div>\r\n<div>\r\n echo $user;</div>\r\n<div>\r\n echo '<input type="radio" name="resp['.$user.']" value="si"/> Si';</div>\r\n<div>\r\n echo '<input type="radio" name="resp['.$user.']" value="no"/> No <br/>';</div>\r\n<div>\r\n }</div>\r\n<div>\r\n echo '</div></div>\r\n<div>\r\n <input type="submit" name="submit" value="Invia"/></div>\r\n<div>\r\n </form>';</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n else {</div>\r\n<div>\r\n $check = $_POST ["resp"];</div>\r\n<div>\r\n // utetne è il nome dell' utente, risp è la risposta data</div>\r\n<div>\r\n $si = "Complimenti! Sei risultato ideoneo per la".$_SESSION["username"].</div>\r\n<div>\r\n ". A breve verrai contattato per la sostenere il vero e proprio colloquio";</div>\r\n<div>\r\n </div>\r\n<div>\r\n $no = "Ci dispiace ma non sei risultato idoneo per la " . $_SESSION["username"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n foreach ( $check as $utente => $risp ){</div>\r\n<div>\r\n echo $utente . " " . $risp . "<br/>";</div>\r\n<div>\r\n $path = 'http://students.uniparthenope.it/~0124000317/Progetto/users/'.$utente ."/";</div>\r\n<div>\r\n chmod ($path,0777);</div>\r\n<div>\r\n $path = $path . "message.txt";</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo $path;</div>\r\n<div>\r\n $file = fopen ($path,'w') or die("can't open file");</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n if ($risp == 'si') {</div>\r\n<div>\r\n fwrite ($file,$si);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n else {</div>\r\n<div>\r\n fwrite ($file,$no);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n fclose ($file);</div>\r\n<div>\r\n } // fine CICLO FOREACH</div>\r\n<div>\r\n </div>\r\n<div>\r\n // header ("location:home_azienda.php");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </code></div>\r\n<div>\r\n </div>\r\n','','filtered_html'),('node','blog',0,80,113,'und',0,'<p> </p>\r\n<p><strong>Modulo</strong>: meteo_parthenope</p>\r\n<p><strong>Autori</strong>: Gennaro Luca Russo (0111000047), Stefano Lardo (0111000034)</p>\r\n<p><strong>Contatti</strong>: gennaroluca.russo@studenti.uniparthenope.it, stefano.lardo@studenti.uniparthenope.it</p>\r\n<h1>\r\n Area Gestione per utente amministratore</h1>\r\n<p><strong>Step 1: Aggiungere nuova area</strong></p>\r\n<p>Aggiungere una nuova area significa inserire nel database (table meteo_areas) i poligoni riferiti alle aree sulle quali visualizzare le previsioni). La prima operazione è quella di selezionare il tipo di area che si vuole aggiungere attraverso il wkt file Le coordinate dei poligoni sono inserite in un file denominato wkt. Questo file contiene normalmente delle colonne divise da tabulazione che possono essere:</p>\r\n<p> 0 1 2 3 4</p>\r\n<p>wkt_geom COD_REG NOME_REG SHAPE_Leng SHAPE_Area</p>\r\n<p>Ogni colonna ha un indice che parte da 0 (zero). Per poter memorizzare le colonne nel db bisogna specificare l’indice è corrispondente alla attributo desiderato.</p>\r\n<p>Esempio:</p>\r\n<p><strong>Area type = reg</strong></p>\r\n<p><strong>Choose column wkt polygon = 0</strong></p>\r\n<p><strong>Choose column wkt place id = 1</strong></p>\r\n<p><strong>Choose column wkt place name = 2</strong></p>\r\n<p><strong>Choose column wkt parent code = Radice</strong></p>\r\n<p>La colonna <strong>Choose column wkt parent code </strong>deve avere valore = ‘Radice’ se le aree inserite rappresentano le aree della mappa (immagine) principale altrimenti bisogna specificare la colonna padre.</p>\r\n<p><img alt=\"Esempio inserimento area\" src=\"http://students.uniparthenope.it/~0111000047/_example_img/1.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p>Esempio con colonna padre:</p>\r\n<p> 0 1 2 3 4 5</p>\r\n<p>wkt_geom COD_REG COD_PRO NOME_PRO SHAPE_Leng SHAPE_Area</p>\r\n<p><strong>Area type = prov</strong></p>\r\n<p><strong>Choose column wkt polygon = 0</strong></p>\r\n<p><strong>Choose column wkt place id = 2</strong></p>\r\n<p><strong>Choose column wkt place name = 3</strong></p>\r\n<p><strong>Choose column wkt parent code = 1</strong></p>\r\n<p><img alt=\"Esempio inserimento area\" src=\"http://students.uniparthenope.it/~0111000047/_example_img/2.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><strong>Step 2: aggiungere nuova rappresentazione</strong></p>\r\n<p>Questa sezione permette di aggiungere rappresentazioni alle quali possono appartenere le mappe. Bisogna inserire un titolo e una descrizione.</p>\r\n<p>Esempio:</p>\r\n<p><strong>Representation name = Italia</strong></p>\r\n<p><strong>Representation description = Previsioni meteo Italia</strong></p>\r\n<p><img alt=\"Inserimento nuova rappresentazione\" src=\"http://students.uniparthenope.it/~0111000047/_example_img/3.jpg\" /></p>\r\n<p><strong>Step 3: Aggiungere una nuova mappa</strong></p>\r\n<p>Aggiungere una nuova mappa significa principalmente caricare un file immagine con il world file allegato. Il world file viene generato automaticamente da un programma tipo QGIS e contiene le informazioni per applicare le trasformazioni di rappresentazione tra coordinate della mappa a coordinate pixel. Questa operazione permette di creare dei poligoni linkabili sulle aree della mappa.</p>\r\n<p>Esempio di world file</p>\r\n<p>1602.3395311921715</p>\r\n<p>0</p>\r\n<p>0</p>\r\n<p>-1602.3395311921715</p>\r\n<p>141353.48636193937</p>\r\n<p>5251851.2737001237</p>\r\n<p>Nello specifico:</p>\r\n<p>§ Line 1: A: pixel size in the x-direction in map units/pixel</p>\r\n<p>§ Line 2: D: rotation about y-axis</p>\r\n<p>§ Line 3: B: rotation about x-axis</p>\r\n<p>§ Line 4: E: pixel size in the y-direction in map units, almost always negative<a href=\"http://en.wikipedia.org/wiki/World_file#cite_note-2\">[3]</a></p>\r\n<p>§ Line 5: C: x-coordinate of the center of the upper left pixel</p>\r\n<p>§ Line 6: F: y-coordinate of the center of the upper left pixel</p>\r\n<p> </p>\r\n<p>Esempio inserimento da modulo con mappa iniziale da visualizzare appena scelgo il tipo di rappresentazione:</p>\r\n<p><strong>Choose place type to add = reg</strong></p>\r\n<p><strong>Choose representation to add = Meteo Italia</strong></p>\r\n<p><strong>Map name = Italia</strong></p>\r\n<p><strong>Map code = radix</strong></p>\r\n<p><strong>Upload map image = </strong><strong>italia</strong><strong>.png</strong></p>\r\n<p><strong>Upload World file image = italia.pngw</strong></p>\r\n<p><strong><img alt=\"Inserimento nuova mappa\" src=\"http://students.uniparthenope.it/~0111000047/_example_img/4.jpg\" /></strong></p>\r\n<p>Esempio inserimento da modulo con mappa secondaria da visualizzare dopo aver cliccato su una mappa iniziale di una rappresentazione:</p>\r\n<p><strong>Choose place type to add = prov</strong></p>\r\n<p><strong>Choose representation to add = Meteo Italia</strong></p>\r\n<p><strong>Map name = Campania</strong></p>\r\n<p><strong>Map code = reg15</strong></p>\r\n<p><strong>Upload map image = campania.png</strong></p>\r\n<p><strong>Upload World file image = campania.pngw</strong></p>\r\n<p><img alt=\"Inserimento nuova mappa regione\" src=\"http://students.uniparthenope.it/~0111000047/_example_img/5.jpg\" /></p>\r\n','','full_html'),('node','forum',0,81,114,'und',0,'<p>Salve, oggi volevo provare a installare drupal sul mio spazio web ma al momento del trasferimento file il messaggio era il seguente "Data quota excedeed" , anche su uno spazio web completamente vuoto creando una semplice cartella! credo che ci siano problemi all'interno del server,non so se il problema è già noto ma ci tenevo a farlo presente.</p>\r\n<p>Confido nella vostra sapienza per una soluzione!</p>\r\n<p>Saluti!</p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,82,115,'und',0,'<p>Uno dei modi più semplice per inviare dati sul web è sicuramente usare le query string.</p>\r\n<p>La query string è quella parte dell'url che contiente dati da passare in input ad un programma.</p>\r\n<p>Una volta scritta il nostro sketch in arduino è estremamente semplice inviare i dati ad una webpage da noi scritta.</p>\r\n<p>Avremo bisogno di un modulo aggiuntivo alla nostra board: l'ethernet shield.</p>\r\n<p>Questo shield ha tutto il necessario per trasformare arduino in un client o in un piccolo webservice.</p>\r\n<p>Le librerie ufficiali sfruttano in modo quasi ottimale le potenzialità del suo chipset.</p>\r\n<p><a href=\"http://www.adafruit.com/adablog/wp-content/uploads/2010/08/ethshield.jpg\"><img alt=\"\" class=\"alignnone\" height=\"374\" src=\"http://www.adafruit.com/adablog/wp-content/uploads/2010/08/ethshield.jpg\" title=\"http://www.adafruit.com/adablog/wp-content/uploads/2010/08/ethshield.jpg\" width=\"488\" /></a></p>\r\n<p> </p>\r\n<p>Con l'ausilio di richieste HTTP 1.1, quali la GET, riusciamo agilmente nel nostro obiettivo.</p>\r\n<p> </p>\r\n<p>Arduino sketch:</p>\r\n<pre style=\"background:#000;color:#f8f8f8\">\r\n<span style=\"color:#8996a8\">#<span style=\"color:#afc4db\">include</span> &lt;SPI.h&gt;</span>\r\n<span style=\"color:#8996a8\">#<span style=\"color:#afc4db\">include</span> &lt;Ethernet.h&gt;</span>\r\nbyte mac[] = {\r\n0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; <span style=\"color:#aeaeae;font-style:italic\">//assegnamo un mac addres alla nostra arduino</span>\r\nbyte ip[] = {\r\n192,168,2,20 }; <span style=\"color:#aeaeae;font-style:italic\">//assegnamo un ip</span>\r\nbyte server[] = {\r\n46,16,168,17 }; <span style=\"color:#aeaeae;font-style:italic\">//l’ip del web service</span>\r\nClient <span style=\"color:#89bdff\">client</span>(server, 80);\r\n<span style=\"color:#aeaeae;font-style:italic\">//istanziamo un client che lavora sull’ip del web service sulla porta 80</span>\r\n<span style=\"color:#99cf50\">void</span> <span style=\"color:#89bdff\">setup</span>() {\r\n Ethernet.<span style=\"color:#dad085\">begin</span>(mac, ip);\r\n //istanziamo l’ethernet shield con mac ed ip\r\n Serial.<span style=\"color:#dad085\">begin</span>(9600);\r\n}\r\n<span style=\"color:#99cf50\">void</span> <span style=\"color:#89bdff\">loop</span>()\r\n{\r\n delay(1000);\r\n Serial.<span style=\"color:#dad085\">println</span>(“connecting…”);\r\n client.<span style=\"color:#dad085\">connect</span>(); //ci colleghiamo con i parametri di cui sopra\r\n if (client.<span style=\"color:#dad085\">connected</span>()) {\r\n Serial.<span style=\"color:#dad085\">println</span>(“connected”);\r\n //la nostra GET:\r\n client.<span style=\"color:#dad085\">println</span>(“GET http://www<span style=\"color:#3e87e3\">.QUALCOSA</span><span style=\"color:#3e87e3\">.com</span>/acquire<span style=\"color:#3e87e3\">.aspx</span>?username=USERFROMARDUINO&password=PASSFROMARDUINO&datastream=DATASTREAMFROMARDUINO&value=VALUEFROMARDUINO HTTP/1.1″);\r\n client.<span style=\"color:#dad085\">println</span> ( “Host: http://www<span style=\"color:#3e87e3\">.QUALCOSA</span><span style=\"color:#3e87e3\">.com</span>” ) ;\r\n client.<span style=\"color:#dad085\">println</span>(); //chiudere sempre con uno spazio vuoto\r\n }\r\n else {\r\n Serial.<span style=\"color:#dad085\">println</span>(“connection failed”);\r\n }\r\n if (client.<span style=\"color:#dad085\">available</span>()) {\r\n //stampiamo tutti i caratteri in risposta dal web service\r\n do {\r\n char c = client.<span style=\"color:#dad085\">read</span>();\r\n Serial.<span style=\"color:#dad085\">print</span>(c);\r\n }\r\n while (client.<span style=\"color:#dad085\">available</span>());\r\n }\r\n if (!client.<span style=\"color:#dad085\">connected</span>()) { //stoppiamo il nostro client\r\n Serial.<span style=\"color:#dad085\">println</span>();\r\n Serial.<span style=\"color:#dad085\">println</span>(“disconnecting.”);\r\n client.<span style=\"color:#dad085\">stop</span>();\r\n }\r\n}\r\n</pre>\r\n<p> </p>\r\n<p>Il nostro frontend acquire.aspx:</p>\r\n<pre style=\"background:#000;color:#f8f8f8\">\r\n<%@ <span style=\"color:#3e87e3\">Page</span> <span style=\"color:#3e87e3\">Language</span><span style=\"color:#e28964\">=</span>”<span style=\"color:#3e87e3\">C</span><span style=\"color:#aeaeae;font-style:italic\">#” AutoEventWireup=”true” CodeFile=”acquire.aspx.cs” Inherits=”acquire” </span>%>\r\n <span style=\"color:#89bdff\"><!<span style=\"color:#89bdff\"><span style=\"color:#89bdff\">DOCTYPE</span> html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”</span>></span>\r\n <span style=\"color:#89bdff\"><<span style=\"color:#89bdff\">html</span> <span style=\"color:#89bdff\">xmlns</span>=”<span style=\"color:#89bdff\">http:</span>//<span style=\"color:#89bdff\">www</span>.<span style=\"color:#89bdff\">w</span>3.<span style=\"color:#89bdff\">org</span>/1999/<span style=\"color:#89bdff\">xhtml</span>”></span>\r\n \r\n <span style=\"color:#89bdff\"><<span style=\"color:#89bdff\">head</span> <span style=\"color:#89bdff\">runat</span>=”<span style=\"color:#89bdff\">server</span>”></span>\r\n <span style=\"color:#89bdff\"><<span style=\"color:#89bdff\">title</span>></<span style=\"color:#89bdff\">title</span>></span>\r\n <span style=\"color:#89bdff\"></<span style=\"color:#89bdff\">head</span>></span>\r\n \r\n <span style=\"color:#89bdff\"><<span style=\"color:#89bdff\">body</span>></span>\r\n <span style=\"color:#89bdff\"><<span style=\"color:#89bdff\">form</span> <span style=\"color:#89bdff\">id</span>=”form1″ runat=”server”>\r\n <div>\r\n <asp:TextBox ID=”TextBox1″ runat=”server”></asp:TextBox>\r\n <asp:TextBox ID=”TextBox2″ runat=”server”></asp:TextBox>\r\n <asp:TextBox ID=”TextBox3″ runat=”server”></asp:TextBox>\r\n <asp:TextBox ID=”TextBox4″ runat=”server”></asp:TextBox>\r\n </div>\r\n </form>\r\n </body> \r\n </html>\r\n</span></pre>\r\n<p> </p>\r\n<p> </p>\r\n<p>Il backend in C# con il parsing della query string:</p>\r\n<pre style=\"background:#000;color:#f8f8f8\">\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Web;\r\nusing System.Web.UI;\r\nusing System.Web.UI.WebControls;\r\npublic partial class acquire : System.Web.UI.Page\r\n{\r\n protected void Page_Load(object sender, EventArgs e)\r\n {\r\n TextBox1.Text = Request.QueryString[<span style=\"color:#65b042\">"username"</span>];\r\n TextBox2.Text = Request.QueryString[<span style=\"color:#65b042\">"password"</span>];\r\n TextBox3.Text = Request.QueryString[<span style=\"color:#65b042\">"datastream"</span>];\r\n TextBox4.Text = Request.QueryString[<span style=\"color:#65b042\">"value"</span>];\r\n }\r\n}\r\n</pre>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><span style=\"font-size:16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n','','full_html'),('node','blog',0,84,117,'und',0,'<p><span>intento a scrivere codice posto sul blog quello che fin'ora sono riuscito a concludere nello sviluppo del videogioco Rapid Roll :</span><br />\r\n <span>Ho diviso in classi ogni componente che fa parte complessivamente del videogioco : sfera , rettangolo-sostegno e le classi label , panel e frame rispettivamente per : disegnare le componenti grafiche che vivono nel videogioco e implementare i timerlistener allo scopo di provvedere ad una temporizzazione adeguata degli eventi.Inoltre ho deciso di suddividere in altre due classi il comportamento della sfera ogniqualvolta scende e sale : queste classi accorpano i metodi che provvederanno ad incrementare/decrementare le coordinate della sfera a seconda della posizione in cui si trova o in funzione all'interazione che subisce con i rettangoli. Vediamo quello fatto fino ad ora :<br />\r\n <br />\r\n CLASSE FINESTRA:</span></p>\r\n<p> </p>\r\n<pre>\r\n package rapidroll;\r\n\r\n\r\n\r\n<p> </p>\r\n<div>\r\n </div>\r\n<div>\r\n import javax.swing.*;</div>\r\n<div>\r\n import java.awt.event.ActionEvent;</div>\r\n<div>\r\n import java.awt.event.ActionListener;</div>\r\n<div>\r\n import java.awt.Toolkit;</div>\r\n<div>\r\n import java.awt.event.KeyEvent;</div>\r\n<div>\r\n import java.awt.event.KeyListener;</div>\r\n<div>\r\n import java.awt.Image;</div>\r\n<div>\r\n import java.awt.BorderLayout;</div>\r\n<div>\r\n import java.lang.Math;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class Finestra extends JFrame{</div>\r\n<div>\r\n </div>\r\n<div>\r\n Pannello p=new Pannello();</div>\r\n<div>\r\n PallaSale ps=new PallaSale();</div>\r\n<div>\r\n PallaScende cntrl=new PallaScende();</div>\r\n<div>\r\n Label la=new Label();</div>\r\n<div>\r\n Timer timersos,timerrefresh,timersale,timerscende;</div>\r\n<div>\r\n Timer timerPalla;</div>\r\n<div>\r\n public Finestra(){</div>\r\n<div>\r\n super("Rapid Roll!");</div>\r\n<div>\r\n </div>\r\n<div>\r\n Image Immagine;</div>\r\n<div>\r\n setSize(500,1000);</div>\r\n<div>\r\n Immagine = Toolkit.getDefaultToolkit().getImage("D:\\\\Documenti\\\\Downloads\\\\rapid.png");</div>\r\n<div>\r\n this.setIconImage(Immagine);</div>\r\n<div>\r\n this.setVisible(true);</div>\r\n<div>\r\n </div>\r\n<div>\r\n setResizable(false);</div>\r\n<div>\r\n setVisible(true);</div>\r\n<div>\r\n setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</div>\r\n<div>\r\n </div>\r\n<div>\r\n add(p);</div>\r\n<div>\r\n timersos=new Timer(4000,new ListenerTimerSos());</div>\r\n<div>\r\n timersale=new Timer(7,new ListenerTimerSale());</div>\r\n<div>\r\n timerscende=new Timer(7,new ListenerTimerScende());</div>\r\n<div>\r\n </div>\r\n<div>\r\n timerrefresh=new Timer(80,new ListenerTimerRefreshsos());</div>\r\n<div>\r\n </div>\r\n<div>\r\n timerPalla=new Timer(1,new ListenerPalla());</div>\r\n<div>\r\n //timerPalla.setDelay(100); USALO QUANDO VUOI FARE IL BONUS DI RALLENTAMENTO</div>\r\n<div>\r\n timerscende.setInitialDelay(4000);</div>\r\n<div>\r\n timerPalla.setInitialDelay(4000);</div>\r\n<div>\r\n timersos.start();</div>\r\n<div>\r\n timerPalla.start();</div>\r\n<div>\r\n timerscende.start();</div>\r\n<div>\r\n timerrefresh.start();</div>\r\n<div>\r\n timersale.start();</div>\r\n<div>\r\n this.addKeyListener(new listenermov());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public class ListenerTimerSos implements ActionListener{</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void actionPerformed(ActionEvent ae) {</div>\r\n<div>\r\n p.la.sostegno.compari();</div>\r\n<div>\r\n p.la.repaint();</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class ListenerTimerScende implements ActionListener{</div>\r\n<div>\r\n public void actionPerformed(ActionEvent ae){</div>\r\n<div>\r\n </div>\r\n<div>\r\n if(p.la.io.down==true) p.la.io.scende();</div>\r\n<div>\r\n p.la.repaint();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n public class ListenerTimerSale implements ActionListener{ </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void actionPerformed(ActionEvent ae){ </div>\r\n<div>\r\n </div>\r\n<div>\r\n if (p.la.io.down==false) p.la.io.sale();</div>\r\n<div>\r\n p.la.repaint();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class ListenerTimerRefreshsos implements ActionListener{</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void actionPerformed(ActionEvent ae) {</div>\r\n<div>\r\n p.la.sostegno.saleRect();</div>\r\n<div>\r\n p.la.repaint();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public class ListenerPalla implements ActionListener{</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void actionPerformed(ActionEvent ae) {</div>\r\n<div>\r\n </div>\r\n<div>\r\n p.la.io.general();</div>\r\n<div>\r\n p.la.repaint();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public class listenermov implements KeyListener{</div>\r\n<div>\r\n boolean destra=false,sinistra=false,giu=false;</div>\r\n<div>\r\n public void keyTyped(KeyEvent ke) {</div>\r\n<div>\r\n </div>\r\n<div>\r\n //non si puo' fare override di metodi , nel senso che keytyped non si puo' omettere e neanche keypressed e key released. Ce lo mettiamo ma è inutile</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void keyPressed(KeyEvent ke) { </div>\r\n<div>\r\n char c=ke.getKeyChar();</div>\r\n<div>\r\n if(c=='a') sinistra=true;</div>\r\n<div>\r\n if(c=='d') destra=true;</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n if(sinistra==true){ p.la.io.muovesinistra(); p.la.repaint(); }</div>\r\n<div>\r\n if(destra==true){ p.la.io.muovedestra(); p.la.repaint(); } </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n public void keyReleased(KeyEvent ke){</div>\r\n<div>\r\n char c=ke.getKeyChar();</div>\r\n<div>\r\n if (c=='a') sinistra=false;</div>\r\n<div>\r\n if (c=='d') destra=false;</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<p>CLASSE LABEL:<br />\r\n </p>\r\n<pre>\r\n package rapidroll;\r\n\r\n </pre>\r\n<div>\r\n </div>\r\n<div>\r\n import java.awt.*;</div>\r\n<div>\r\n import javax.swing.*;</div>\r\n<div>\r\n import java.util.*;</div>\r\n<div>\r\n import java.awt.Transparency;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class Label extends JLabel{</div>\r\n<div>\r\n public Sfera io;</div>\r\n<div>\r\n public Rect sostegno;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public Label(){</div>\r\n<div>\r\n io=new Sfera(this);</div>\r\n<div>\r\n sostegno=new Rect();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public Dimension getPreferredSize(){ </div>\r\n<div>\r\n return new Dimension(500,1000);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n protected void paintComponent(Graphics g){</div>\r\n<div>\r\n super.paintComponent(g);</div>\r\n<div>\r\n </div>\r\n<div>\r\n this.setIcon(new ImageIcon("D:\\\\Documenti\\\\Downloads\\\\cielo.jpg"));</div>\r\n<div>\r\n g.setColor(Color.RED);</div>\r\n<div>\r\n g.drawOval(io.xCord,io.yCord,30,30); //coordinate x e y (200 e 200) dell'estremita' in alto a sinistra del cerchio (le coordinate che dovrai far muovere)</div>\r\n<div>\r\n g.fillOval(io.xCord,io.yCord,30,30);</div>\r\n<div>\r\n g.setColor(new Color(0,0,0,0));</div>\r\n<div>\r\n </div>\r\n<div>\r\n g.drawLine(io.xLinea,io.yLinea,io.xLinea2,io.yLinea2);</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n for(int i=0;i<sostegno.arrayRect.length;i++){</div>\r\n<div>\r\n if(sostegno.arrayRect[i] != null){</div>\r\n<div>\r\n g.setColor(Color.blue);</div>\r\n<div>\r\n g.drawRoundRect(sostegno.arrayRect[i].xRect, sostegno.arrayRect[i].yRect, 120, 20, 20, 15);</div>\r\n<div>\r\n g.fillRoundRect(sostegno.arrayRect[i].xRect, sostegno.arrayRect[i].yRect, 120, 20, 20, 15);</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n } </div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<p>CLASSE PallaSale:</p>\r\n<pre>\r\n \r\n\r\n </pre>\r\n<div>\r\n </div>\r\n<div>\r\n package rapidroll;</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public class PallaSale {</div>\r\n<div>\r\n </div>\r\n<div>\r\n public Pannello pannn=new Pannello();</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void pallasale(){</div>\r\n<div>\r\n </div>\r\n<div>\r\n if(pannn.la.io.down==false) </div>\r\n<div>\r\n pannn.la.io.sale();</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n <br />\r\n </div>\r\n<p>CLASSE PallaScende:</p>\r\n<pre>\r\n \r\n\r\n </pre>\r\n<div>\r\n </div>\r\n<div>\r\n package rapidroll;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class PallaScende {</div>\r\n<div>\r\n public Pannello pann=new Pannello();</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void controllo(){</div>\r\n<div>\r\n if(pann.la.io.down==true) </div>\r\n<div>\r\n pann.la.io.scende();</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n <br />\r\n <br />\r\n </div>\r\n<p>CLASSE Pannello:</p>\r\n<pre>\r\n \r\n\r\n </pre>\r\n<div>\r\n package rapidroll;</div>\r\n<div>\r\n import java.awt.*;</div>\r\n<div>\r\n import javax.swing.*;</div>\r\n<div>\r\n import java.util.*;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class Pannello extends JPanel{</div>\r\n<div>\r\n public Dimension getPreferredSize(){</div>\r\n<div>\r\n return new Dimension(500,1000);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Label la;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public Pannello(){</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n la=new Label(); </div>\r\n<div>\r\n add(la);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n <br />\r\n <br />\r\n </div>\r\n<p>CLASSE Rect</p>\r\n<pre>\r\n \r\n\r\n \r\n </pre>\r\n<div>\r\n <div>\r\n package rapidroll;</div>\r\n <div>\r\n import javax.swing.*;</div>\r\n <div>\r\n import java.util.*;</div>\r\n <div>\r\n </div>\r\n <div>\r\n public class Rect {</div>\r\n <div>\r\n </div>\r\n <div>\r\n sos[] arrayRect;</div>\r\n <div>\r\n int timing=0;</div>\r\n <div>\r\n </div>\r\n <div>\r\n public Rect()</div>\r\n <div>\r\n {</div>\r\n <div>\r\n arrayRect=new sos[20]; </div>\r\n <div>\r\n }</div>\r\n <div>\r\n </div>\r\n <div>\r\n public void saleRect()</div>\r\n <div>\r\n {</div>\r\n <div>\r\n for(int i=0;i<arrayRect.length;i++)</div>\r\n <div>\r\n if(arrayRect[i]!=null)</div>\r\n <div>\r\n arrayRect[i].yRect-=10; </div>\r\n <div>\r\n </div>\r\n <div>\r\n }</div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n public void compari()</div>\r\n <div>\r\n {</div>\r\n <div>\r\n int k;</div>\r\n <div>\r\n for(k=0;k<arrayRect.length;k++)</div>\r\n <div>\r\n if(arrayRect[k]==null) break;</div>\r\n <div>\r\n </div>\r\n <div>\r\n for(int i=k-1;i>=0;i--) arrayRect[i+1]=arrayRect[i];</div>\r\n <div>\r\n arrayRect[0]=new sos();</div>\r\n <div>\r\n </div>\r\n <div>\r\n }</div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n public class sos{</div>\r\n <div>\r\n public int xRect;</div>\r\n <div>\r\n public int yRect;</div>\r\n <div>\r\n public int larghezza;</div>\r\n <div>\r\n public int altezza;</div>\r\n <div>\r\n public int larghezzaArco;</div>\r\n <div>\r\n public int altezzaArco;</div>\r\n <div>\r\n public sos(){</div>\r\n <div>\r\n this.larghezza=120;</div>\r\n <div>\r\n this.altezza=20;</div>\r\n <div>\r\n this.larghezzaArco=20;</div>\r\n <div>\r\n this.altezzaArco=15;</div>\r\n <div>\r\n xRect=5+(int)(Math.random()*450);</div>\r\n <div>\r\n yRect=950;</div>\r\n <div>\r\n }</div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n }</div>\r\n <div>\r\n </div>\r\n <div>\r\n </div>\r\n <div>\r\n }</div>\r\n <div>\r\n <br />\r\n </div>\r\n</div>\r\n<p>CLASSE Sfera:</p>\r\n<pre>\r\n \r\n\r\n </pre>\r\n<div>\r\n package rapidroll;</div>\r\n<div>\r\n import javax.swing.*;</div>\r\n<div>\r\n import java.awt.event.ActionEvent;</div>\r\n<div>\r\n import java.awt.event.ActionListener;</div>\r\n<div>\r\n import java.awt.Toolkit;</div>\r\n<div>\r\n import java.awt.event.KeyEvent;</div>\r\n<div>\r\n import java.awt.event.KeyListener;</div>\r\n<div>\r\n import java.awt.Image;</div>\r\n<div>\r\n import java.awt.BorderLayout;</div>\r\n<div>\r\n import java.lang.Math;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class Sfera {</div>\r\n<div>\r\n </div>\r\n<div>\r\n public int xCord;</div>\r\n<div>\r\n public int yCord;</div>\r\n<div>\r\n public int xLinea;</div>\r\n<div>\r\n public int yLinea;</div>\r\n<div>\r\n public int xLinea2;</div>\r\n<div>\r\n public int yLinea2;</div>\r\n<div>\r\n public int i;</div>\r\n<div>\r\n boolean down;</div>\r\n<div>\r\n public int g,f,cont1,cont2;</div>\r\n<div>\r\n Label lab;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public Sfera(Label lab){ </div>\r\n<div>\r\n xCord=200;</div>\r\n<div>\r\n i=1;</div>\r\n<div>\r\n this.lab=lab;</div>\r\n<div>\r\n yCord=100;</div>\r\n<div>\r\n g=0;</div>\r\n<div>\r\n down=true;</div>\r\n<div>\r\n f=0;</div>\r\n<div>\r\n xLinea=xCord;</div>\r\n<div>\r\n yLinea=yCord+30;</div>\r\n<div>\r\n xLinea2=xCord+30;</div>\r\n<div>\r\n yLinea2=yCord+30;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void muovesinistra()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xCord-=25;</div>\r\n<div>\r\n xLinea-=25;</div>\r\n<div>\r\n xLinea2-=25;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void muovedestra()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xCord+=25; </div>\r\n<div>\r\n xLinea+=25;</div>\r\n<div>\r\n xLinea2+=25;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void scende()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n yCord+=1; </div>\r\n<div>\r\n yLinea+=1;</div>\r\n<div>\r\n yLinea2+=1;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void sale()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n yCord-=1;</div>\r\n<div>\r\n yLinea-=1;</div>\r\n<div>\r\n yLinea2-=1;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n public void general()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n for(g=0;g<lab.sostegno.arrayRect.length;g++)</div>\r\n<div>\r\n if(lab.sostegno.arrayRect[g]==null) break;</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n f=g-1;</div>\r\n<div>\r\n </div>\r\n<div>\r\n if((yLinea==lab.sostegno.arrayRect[f].yRect+5) && ((xLinea-lab.sostegno.arrayRect[f].xRect>-5) && (xLinea- lab.sostegno.arrayRect[f].xRect<120))){</div>\r\n<div>\r\n </div>\r\n<div>\r\n down=false; </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n if( (xLinea<lab.sostegno.arrayRect[f].xRect) || (xLinea>lab.sostegno.arrayRect[f].xRect+120)) {</div>\r\n<div>\r\n </div>\r\n<div>\r\n down=true; </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n</pre>\r\n<p> </p>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,85,118,'und',0,'<p>Seguono tre screenshot relativi al videogioco che sto sviluppando , Rapid Roll:<br />\r\n <br />\r\n Start del game : La sfera è sospesa in seguito al setInitialDelay di 4 secondi a cui sottopongo il metodo scendiPalla.<br />\r\n (ovvero la palla comincia a scendere dopo 4 secondi).<br />\r\n <a href=\"http://imageshack.us/photo/my-images/269/rapid1.jpg/\">http://imageshack.us/photo/my-images/269/rapid1.jpg/</a></p>\r\n<p>Nel secondo screenshot l'utente è riuscito a trovare un rettangolo ed appoggiarsi su di esso : <br />\r\n <a href=\"http://imageshack.us/photo/my-images/27/rapid2n.jpg/\">http://imageshack.us/photo/my-images/27/rapid2n.jpg/</a><br />\r\n <br />\r\n <br />\r\n Nel seguente , l'utente sceglie di abbandonare il rettangolo su cui risiedeva per scegliere il prossimo che sale :</p>\r\n<p><br />\r\n <a href=\"http://imageshack.us/photo/my-images/402/rapid3c.jpg/\">http://imageshack.us/photo/my-images/402/rapid3c.jpg/</a></p>\r\n<p>L'ultimo screenshot mostra la situazione in cui l'utente è caduto senza trovare nessun valido appoggio. Nei prossimi giorni provvederò a implementare la sconfitta con una scritta di Hai Perso! che apparirà ogniqualvolta l'utente non riesce a proseguire nel gioco.</p>\r\n<p><a href=\"http://imageshack.us/photo/my-images/802/rapid4.jpg/\">http://imageshack.us/photo/my-images/802/rapid4.jpg/</a><br />\r\n <br />\r\n <br />\r\n Appena apporterò cambiamenti nei prossimi giorni , provvederò a postare altri screenshot sul blog.<br />\r\n <br />\r\n <br />\r\n </p>\r\n','','filtered_html'),('node','blog',0,86,119,'und',0,'<p>Buonasera,<br />\r\n oggi sono riuscito a sviluppare un algoritmo migliore per quanto riguarda l'interazione che c'è tra pallina e rettangolo.<br />\r\n Ho deciso per una questione di complessità di gioco di aggiungere la presenza di rettangoli "fantasma".<br />\r\n Sembrano all'apparenza rettangoli di sostegno normali , ma la pallina li attraverserà di getto senza sostarci sopra.<br />\r\n Le modifiche riguardano prettamente la classe Sfera e in particolare il metodo general().<br />\r\n Segue il tutto:<br />\r\n <br />\r\n CLASSE Sfera modificata:</p>\r\n<pre>\r\n<div>\r\n package rapidroll;</div>\r\n<div>\r\n import javax.swing.*;</div>\r\n<div>\r\n import java.awt.event.ActionEvent;</div>\r\n<div>\r\n import java.awt.event.ActionListener;</div>\r\n<div>\r\n import java.awt.Toolkit;</div>\r\n<div>\r\n import java.awt.event.KeyEvent;</div>\r\n<div>\r\n import java.awt.event.KeyListener;</div>\r\n<div>\r\n import java.awt.Image;</div>\r\n<div>\r\n import java.awt.BorderLayout;</div>\r\n<div>\r\n import java.lang.Math;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public class Sfera {</div>\r\n<div>\r\n </div>\r\n<div>\r\n public int xCord;</div>\r\n<div>\r\n public int yCord;</div>\r\n<div>\r\n public int xLinea;</div>\r\n<div>\r\n public int yLinea;</div>\r\n<div>\r\n public int xLinea2;</div>\r\n<div>\r\n public int yLinea2;</div>\r\n<div>\r\n public int i,c,actual;</div>\r\n<div>\r\n public int control;</div>\r\n<div>\r\n boolean down;</div>\r\n<div>\r\n public int g,f,cont1,cont2;</div>\r\n<div>\r\n Label lab;</div>\r\n<div>\r\n </div>\r\n<div>\r\n public Sfera(Label lab){ </div>\r\n<div>\r\n xCord=200;</div>\r\n<div>\r\n i=0;</div>\r\n<div>\r\n c=0;</div>\r\n<div>\r\n control=0;</div>\r\n<div>\r\n this.lab=lab;</div>\r\n<div>\r\n yCord=300;</div>\r\n<div>\r\n g=0;</div>\r\n<div>\r\n actual=1;</div>\r\n<div>\r\n down=true;</div>\r\n<div>\r\n control=0;</div>\r\n<div>\r\n f=0;</div>\r\n<div>\r\n xLinea=xCord;</div>\r\n<div>\r\n yLinea=yCord+30;</div>\r\n<div>\r\n xLinea2=xCord+30;</div>\r\n<div>\r\n yLinea2=yCord+30;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void muovesinistra()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xCord-=25;</div>\r\n<div>\r\n xLinea-=25;</div>\r\n<div>\r\n xLinea2-=25;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void muovedestra()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xCord+=25; </div>\r\n<div>\r\n xLinea+=25;</div>\r\n<div>\r\n xLinea2+=25;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void scende()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n yCord+=1; </div>\r\n<div>\r\n yLinea+=1;</div>\r\n<div>\r\n yLinea2+=1;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n public void sale()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n yCord-=1;</div>\r\n<div>\r\n yLinea-=1;</div>\r\n<div>\r\n yLinea2-=1;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n public void general()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n </div>\r\n<div>\r\n if(control==0){</div>\r\n<div>\r\n </div>\r\n<div>\r\n for(g=0;g<2;g++)</div>\r\n<div>\r\n if(lab.sostegno.arrayRect[g]==null)</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n </div>\r\n<div>\r\n for(f=g-1;f>=0;f--) {</div>\r\n<div>\r\n </div>\r\n<div>\r\n if((yLinea==lab.sostegno.arrayRect[f].yRect+5) && ((xLinea-lab.sostegno.arrayRect[f].xRect>-5) && (xLinea-lab.sostegno.arrayRect[f].xRect<120))){</div>\r\n<div>\r\n down=false;</div>\r\n<div>\r\n System.out.println("Sono appoggiato!");</div>\r\n<div>\r\n i=f;</div>\r\n<div>\r\n actual=lab.sostegno.timing;</div>\r\n<div>\r\n control=1;</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else if(control==1){ </div>\r\n<div>\r\n if(lab.sostegno.timing>actual) i=1;</div>\r\n<div>\r\n if( ((xLinea<lab.sostegno.arrayRect[i].xRect) || (xLinea>lab.sostegno.arrayRect[i].xRect+120)) )</div>\r\n<div>\r\n {</div>\r\n<div>\r\n System.out.println("Adesso scendo\\n");</div>\r\n<div>\r\n down=true;</div>\r\n<div>\r\n control=0;</div>\r\n<div>\r\n </div>\r\n<div>\r\n c++;</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n } </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n</pre>\r\n<p> </p>\r\n<p>NOTA: Ho lasciato le stampe (System.out.println) che mi sono servite come Debugging e verifica di diverse cose.<br />\r\n Provvederò a toglierle una volta pronto il progetto finale.<br />\r\n Buonaserata</p>\r\n','','full_html'),('node','forum',0,87,120,'und',0,'<p><span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 14px; line-height: 21px; \">Ragazzi dopo le ultime modifiche che sono state apportate alla configurazione del server, sono stati eliminati nuovamente i permessi per scrivere e leggere i file nelle cartelle della public_html. </span><br style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 14px; line-height: 21px; \" />\r\n <span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 14px; line-height: 21px; \">Andando su questo link </span><a href=\"http://students.uniparthenope.it/~0111000047/?q=meteo/map/representations/7/26\" style=\"color: rgb(0, 113, 179); text-decoration: none; font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 14px; line-height: 21px; \">http://students.uniparthenope.it/~0111000047/?q=meteo/map/representations/7/26</a><span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 14px; line-height: 21px; \"> , dopo aver scelto la data, deve essere visualizzata la mappa che invece non viene scritta nell'apposita directory: <em>/home/0111000047/public_html/sites/default/files/map_images/forecast</em>, quindi visualizzata.</span></p>\r\n','','filtered_html'),('node','blog',0,88,121,'und',0,'<p>Riguardando il codice e facendo diverse altre prove ho notato che qualcosa non andava nel controllo della collisione tra la sfera e il rettangolo. Diversi rettangoli su cui la pallina si sarebbe dovuta appoggiare non hanno dato il comportamento previsto. E' successo che la pallina "ha bucato" il rettangolo.<br />\r\n Ho cambiato molte volte l'algoritmo di collisione ma il problema sussisteva e sembrava presentarsi in modo random.<br />\r\n Dando un'occhiata ai parametri passati alla creazione dei Timer per la temporizzazione degli eventi ho notato come a tempi più elevati corrispondeva una più precisa collisione con tutti i rettangoli. Proverò a cambiare temporizzazione per rendere il tutto meno veloce ma almeno più preciso. (si basti pensare che la pallina cadeva secondo il richiamo del metodo scende() chiamato nel timer ogni 7 millisecondi e che i rettangoli salivano secondo il richiamo del metodo aggiornaSos() che avveniva ogni 15 millisecondi).<br />\r\n <br />\r\n Appena avrò fatto un numero di prove sufficienti provvederò a postare l'aggiornamento del codice</p>\r\n','','filtered_html'),('node','forum',0,89,122,'und',0,'<p>Salve a tutti,</p>\r\n<p>mi sono collegato al sito per la prima volta tramite le credenziali dell'ateneo (login 0108001416). Vorrei attivare l'hosting linux nella sezione modifica del profilo utente. Nell'attivarlo però il sistema mi dice che devo specificare un indirizzo email: "<span>Il campo Indirizzo e-mail è obbligatorio</span>". Compilo i campi con la pass corrente con cui ho effettuato l'accesso e l'indirizzo email studenti e mi viene dato il seguente errore "<span>La password è mancante o non è corretta; è obbligatorio cambiare il </span><em class=\"placeholder\">Indirizzo e-mail</em><span>.</span>" La password con cui effettuo l'accesso non è considerata valida. </p>\r\n','','filtered_html'),('node','blog',0,90,123,'und',0,'<p>Come tutti avrete notato da diversi mesi chi aveva importato l'account nome.cognome@studenti.uniparthenope.it in Gmail non riesce più a ricevere la posta. Questo è successo perchè è cambiato il server POP da hotmail a outlook.</p>\r\n<p>Vediamo come ripristinare il servizio:</p>\r\n<p>Entrare in Gmail;</p>\r\n<p>Cliccare in alto a destra sul tasto impostazioni, si aprirà un menu a tendina, cliccate su impostazioni;</p>\r\n<p>Entrare nella scheda account e importazione;</p>\r\n<p>Nella sezione "controlla la posta da altri account(utilizzando POP3)",premere sul link "aggiungi un tuo account di posta POP3" se è la prima volta che importate l'account della Parthenope, altrimenti andate su modifica informazioni accanto all'indirizzo di posta già inserito in precedenza...si aprirà una nuova finestra che chiederà di inserire tutte le informazioni relative al proprio account;</p>\r\n<p>Compilare tutti i campi, e nel campo SERVER POP: inserire "<strong>pod51014.outlook.com</strong>" e nel campo porta: <strong>995</strong>;</p>\r\n<p>Salvare le modifiche e la nostra posta verrà nuovamente scaricata nel nostro account gmail!<br />\r\n </p>\r\n','','filtered_html'),('node','blog',0,91,124,'und',0,'<p><a href=\"/sites/default/files/images/20121207005125.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121207005125.jpg\" /></a>Salve !<br />\r\n Oggi ho aggiunto alla label gli spuntoni alla sommità e di lato i muri. <br />\r\n Se l'utente dovesse far finire la pallina sugli spuntoni , perderebbe una vita o eventualmente il gioco.<br />\r\n I muri bloccano la pallina dall'uscire dal riquadro.<br />\r\n In questi giorni implementerò il meccanismo delle vite.<br />\r\n Intanto posto uno screenshot dell'aggiornamento.<br />\r\n Buonasera</p>\r\n','','full_html'),('node','page',0,92,125,'und',0,'<p><strong>UniParthenope – Servizi agli Studenti</strong></p>\r\n<p><a href=\"/sites/default/files/images/20121307082412.png\" target=\"_blank\"><img alt=\"\" heigh=\"64\" src=\"/sites/default/files/styles/large/public/images/20121307082412.png\" width=\"64\" /></a></p>\r\n<p>Applicazione sperimentale dell’Università Parthenope di Napoli per la fruizione dei servizi di Ateneo attraverso un dispositivo di tipo Android.<br />\r\n UniParthenope Servizi offre la possibilità di accedere ai servizi riservati agli studenti dell’Università e non solo.<br />\r\n Gli utenti non registrati possono accedere a:</p>\r\n<ul>\r\n <li>\r\n News dell’Università di Ateneo, delle Facoltà e dei dipartimenti</li>\r\n <li>\r\n Mappa delle sedi Universitarie</li>\r\n <li>\r\n Rubrica del personale Universitario</li>\r\n <li>\r\n Linee e orario di prossimo arrivo, dei Bus per le sedi di Centro Direzionale e Via Acton</li>\r\n <li>\r\n Servizio Meteo per il territorio di Napoli relativo al giorno corrente ed il successivo</li>\r\n <li>\r\n Consultazione del sistema bibliotecario Universitario</li>\r\n</ul>\r\n<p>Gli studenti della Università Parthenope possono inoltre:</p>\r\n<ul>\r\n <li>\r\n Accedere con le proprie credenziali</li>\r\n <li>\r\n Visualizzare il proprio piano di studi</li>\r\n <li>\r\n Prenotare gli esami disponibili</li>\r\n <li>\r\n Cancellare le prenotazioni esami effettuate</li>\r\n</ul>\r\n<p>Supporto alla lingua Italiana e a quella Inglese.</p>\r\n<p> </p>\r\n<p>L'applicazione dal 20-07-2012 è scaricabile da <a href=\"https://play.google.com/store/apps/details?id=app.uni&feature=search_result#?t=W251bGwsMSwyLDEsImFwcC51bmkiXQ..\" target=\"_blank\">GOOGLEPLAY</a></p>\r\n<p> </p>\r\n<p>Contattare lo sviluppatore <a href=\"/?q=user/60\">Rosario Pellecchi</a>a per partecipare al programma di prova.</p>\r\n<p>L'area di discussione realativa a questa applicazione è disponibile [<a href=\"/?q=forum/8\">qui</a>].</p>\r\n<p><a href=\"/sites/default/files/images/20121307082627.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121307082627.png\" /></a><a href=\"/sites/default/files/images/20121307082717.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121307082717.png\" /></a></p>\r\n<p><a href=\"/sites/default/files/images/20121307082738.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121307082738.png\" /></a><a href=\"/sites/default/files/images/20121307082805.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121307082805.png\" /></a></p>\r\n<p><a href=\"/sites/default/files/images/20121307082821.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121307082821.png\" /></a><a href=\"/sites/default/files/images/20121307082850.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121307082850.png\" /></a></p>\r\n<p>Applicazione sviluppata da <a href=\"/?q=user/60\">Rosario Pellecchia</a> sotto la guida del relatore prof. <a href=\"/?q=user/3\">Raffaele Montella</a> come Elaborato di Laurea triennale in <a href=\"http://informatica.uniparthenope.it/\">Informatica</a> presso il <a href=\"http://lmncp.unipartenope.it\">Laboratorio di Modellistica Numerica e Calcolo Parallelo</a> - <a href=\"http://dsa.uniparhenope.it\">Dipartimento di Scienze Applicate</a> - <a href=\"http://www.scienzeetecnologie.uniparthenope.it/\">Facoltà di Scienze e Tecnologie</a>.</p>\r\n<p>Scarica la tesi in formato PDF: <a href=\"/sites/default/files/files//20122007085738.pdf\" target=\"_blank\">Tesi Rosario Pellecchia</a></p>\r\n<p>Scarica presentazione in Power Point: <a href=\"/sites/default/files/files/Presentazione_Tesi_Rosario_PELLECCHIA_mat_LI827.pdf\" target=\"_blank\">Presentazione Rosario Pellecchia</a></p>\r\n<p> </p>\r\n<p> </p>\r\n','','full_html'),('node','forum',0,93,126,'und',0,'<p>La nostra applicazione sperimentale per i servizi agli studenti ... :) ...</p>\r\n','','filtered_html'),('node','blog',0,94,127,'und',0,'<h1>\r\n RESTful News API </h1>\r\n<p class=\"rtejustify\" style=\"\">Pubblicata una prima versione dell'interfaccia RESTful per le news della nostra università. L'implementazione è basata sul framework php FRAPI, e attualmente sono presenti 9 'fonti', tra cui il portale di informatica ed economia. <br />\r\n L'endpoint delle API è <strong>http://students.uniparthenope.it:10112 ,</strong> i<em> mime-type</em> di comunicazione sono <em>application/json</em> e <em>application/xml.</em></p>\r\n<h2>\r\n Dettagli implementativi</h2>\r\n<p>L'architettura utilizzata è composta da tre componenti principali, <em>NewsSource</em>, <em>NewsProvider </em>e uno <em>Scraper</em>. Il NewsSource si occupa del recupero dalle news dal singolo portale tramite e utilizza lo Scraper per analizzare il documento HTML, NewsProvider è il business component che fornisce l'accesso agli NewsSource gestendo il caching delle response e l'implementazione HATEOAS.</p>\r\n<p><a href=\"https://dl.dropbox.com/u/8255905/schema.jpg\" target=\"_blank\"><img alt=\"\" src=\"https://dl.dropbox.com/u/8255905/schema.jpg\" style=\"height: 373px; width: 400px; \" /></a></p>\r\n<p><br />\r\n <a href=\"http://en.wikipedia.org/wiki/HATEOAS\">HATEOAS</a> è una tecnica che fa uso di <a href=\"http://en.wikipedia.org/wiki/Hypermedia\">Hypermedia</a> per gestire lo 'stato' di web service RESTful. Ogni risorsa web è collegata alle altre tramite link relationship proprio come le pagine web, quindi è possibile sfruttare queste relazioni per collegare (nel nostro caso paginare) diverse risorse.</p>\r\n<p>Per evitare la duplicazione del codice dei vari NewsSource, è stato applicato il pattern implementativo Template Method. NewsSource è una classe astratta che fornisce una struttura per tutte le classi NewsSource concrete, è possibile definire così una nuova fonte di news implementando solo pochi metodi.</p>\r\n<p><a href=\"http://i18.photobucket.com/albums/b141/pmtl3000/blog/template-method.png\" target=\"_blank\"><img alt=\"\" src=\"http://i18.photobucket.com/albums/b141/pmtl3000/blog/template-method.png\" style=\"width: 300px; height: 191px; \" /></a></p>\r\n<h3>\r\n </h3>\r\n<h3>\r\n <strong>Recupero Fonti</strong></h3>\r\n<pre>\r\n<em>GET http://students.uniparthenope.it:10112/sources\r\nAccept: application/json\r\nContent-Type: application/json</em></pre>\r\n<p>oppure semplicemente </p>\r\n<pre>\r\nGET <a href=\"http://students.uniparthenope.it:10112/sources.json\">http://students.uniparthenope.it:10112/sources.json</a></pre>\r\n<p>La risposta è una lista di fonti (source) con il loro nome e l'url corrispondente:</p>\r\n<p> </p>\r\n<pre>\r\n{"meta":{"total":9}, "sources":[\r\n {"source": {"name":"ECONOMIA","url":"http:..."}},\r\n {"source": "name":"SCIENZE_TECNOLOGIE","url":"http:..."}},\r\n ....,\r\n {"source": "name":"INFORMATICA","url":"http:..."}}\r\n]}</pre>\r\n<p> </p>\r\n<h3>\r\n <u><strong>Recupero News</strong></u></h3>\r\n<pre>\r\nGET http://students.uniparthenope.it:10112/news/:source?offset=0&length=6&force_refresh=false\r\nAccept: application/json\r\nContent-Type: application/json</pre>\r\n<p>oppure semplicemente </p>\r\n<pre>\r\nGET http://students.uniparthenope.it:10112/news/:source.json?offset=0&length=4&force_refresh=false</pre>\r\n<p class=\"rtejustify\" style=\"\">Il parametro<em> offset</em> specfica la posizione di partenza da cui recuperare un numero pari a <em>length </em>news<em>, anche :source</em> è un parametro e va sostituito con il nome della fonte desiderata. Se non viene specificato offset o length allora verranno considerati i loro valori di default che sono rispettivamente 0 e 6. L'implementazione ha un suo meccanismo interno di caching, nel caso in cui si vuole forzare il refresh delle notizie bisogna impostare il parametro opzionale force_refresh a true.<br />\r\n I risultati sono 'paginati' con la tecnica degli HATEOAS, quindi quando saranno presenti altre news oltre quelle specificate da offset+length la risposta del server conterrà un URL nel parametro next che potrà essere usato per continuare il recupero delle informazioni in modo sequenziale.</p>\r\n<p>Le news hanno i seguenti valori:</p>\r\n<p>title = Titolo della notizia<br />\r\n content = Contenuto della notizia<br />\r\n publishing_date = La data di pubblicazione (quando disponibile)<br />\r\n source = Link alla risorsa web da cui è stata recuperata la notizia</p>\r\n<p>Ad esempio la chiamata GET <a href=\"http://students.uniparthenope.it:10112/news/informatica.json\">http://students.uniparthenope.it:10112/news/economia.json</a> restituisce:</p>\r\n<pre>\r\n{"meta":{"total":6},\r\n "news_list":[\r\n {"news":{\r\n "title":"RECUPERO PASSWORD EMAIL STUDENTI ",\r\n "content":"E' stato attivato ...", \r\n "publishing_date":"21\\/06\\/2012 alle 12.05.59",\r\n "source":"http:..."}\r\n }, ...,\r\n {"news":{\r\n "title":"ATTIVITA` SEMINARIALI A.A. 2011-2012 ",\r\n "content":"ATTIVITA' SEMINARIALI A.A. 2011-2012 ...",\r\n "publishing_date":"25\\/06\\/2012 alle 9.45.19",\r\n "source":"http:..."}\r\n }],\r\n "next":"http://students.uniparthenope.it:10112/news/economia.json?offset=6&length=6"\r\n]}</pre>\r\n<div>\r\n </div>\r\n','','full_html'),('node','forum',0,95,128,'und',0,'<p>Salve,</p>\r\n<p>credo di aver cancellato per errore il file README con le credenziali di accesso al database, come posso recuperarle?</p>\r\n','','filtered_html'),('node','forum',0,96,129,'und',0,'<p>Queste sono alcune idee per lo sviluppo di API REST in modo da rendere più ricco il toolkit che stiamo sviluppando.</p>\r\n<p>L'idea è un framework da utilizzare per sviluppare APP ed altri componenti software utilizzando l'approccio dell'Internet delle Cose (Web 3.0, Internet of Things).</p>\r\n<ul>\r\n <li>\r\n <strong>Aule/Laboratori</strong><br />\r\n Sviluppare un modulo Drupal che consente agli appartenenti ad un gruppo di utenti di poter gestire un insieme di risorse (aule, laboratori) definendone l'uso in un arco temporale che può essere una tantum o ripetuto settimana per settimana.<br />\r\n Contestualmente una API REST espone quanto gestito dal modulo.</li>\r\n</ul>\r\n<ul>\r\n <li>\r\n <strong>Orari delle lezioni</strong><br />\r\n Sviluppare un modulo Drupal che consente agli appartenenti ad un gruppo di utenti di poter gestire un calendario di orari.<br />\r\n Contestualmente una API REST espone quanto gestito dal modulo.</li>\r\n</ul>\r\n<ul>\r\n <li>\r\n <strong>Guida dello studente</strong><br />\r\n Sviluppare un modulo Drupal che consente agli appartenenti ad un gruppo di utenti di poter gestire i programmi degli esami presenti nella guida dello studente.<br />\r\n Il modulo deve poter esportare i programmi in un formato importabile dagli strumenti di produzione, esempio rtf.<br />\r\n Un utente può avere diritto di modificare uno o più programmi su cui ha i permessi.<br />\r\n Contestualmente una API REST espone quanto gestito dal modulo.</li>\r\n</ul>\r\n<p>Altre idee per API non direttamente legate alla vita universitaria:</p>\r\n<ul>\r\n <li>\r\n Guida TV</li>\r\n <li>\r\n Cinema</li>\r\n <li>\r\n AIS</li>\r\n <li>\r\n Traffico</li>\r\n <li>\r\n ...</li>\r\n</ul>\r\n<p>La maggior parte di queste API sono sviluppabili come wrap su servizi già esistenti.</p>\r\n<p> </p>\r\n','','full_html'),('node','new',0,99,132,'und',0,'<p>Sono aperte <strong>2</strong> posizioni per tirocinio e tesi nell'ambito del Corso di Laurea Triennale in Informatica ed <strong>1</strong> posizione relativamente al Corso di Laurea Magistrale in Informatica Applicata presso il Laboratorio di Modellistica Numerica e Calcolo Parallelo http://lmncp.uniparthenope.it .</p>\r\n<p class=\"rtecenter\"><strong>Sviluppo di componenti software per il calcolo ad alte prestazioni basato su tecnologie di cloud computing e virtualizzazione di GPU.</strong></p>\r\n<p>Il Tirocinio consente di immergersi completamente in un ambiente stimolante ed altocompetitivo di alto profilo. In particolare è caratterizzato da una forte internazionalizzazione in ambito EU e, soprattutto, USA.</p>\r\n<p>Al tirocinio si accede previo colloquio conoscitivo e successivo iter standard.</p>\r\n<p>E' richiesta una buona preparazione pratica e teorica sui principali aspetti dell'Informatica ed in particolare riguardo allo sviluppo di componenti software e la conoscenza dei sistemi oprativi. E' necessaria una conoscenza della lingua inglese almeno a livello scolastico.</p>\r\n<p>Il tirocinio offre la possibilità (relativamente alla disponibilità di risorse) di periodi di permanenza all'estero.</p>\r\n<p>Per informazioni contattare il prof. <a href=\"mailto:giulio.giunta@uniparthenope.it?subject=%5BCloud%2FHPC%2FGPU%5D\">Giulio Giunta</a> o il dr. <a href=\"mailto:raffaele.montella@uniparthenope.it?subject=%5BCloud%2FHPC%2FGPU%5D\">Raffaele Montella</a>.</p>\r\n<p> </p>\r\n<p> </p>\r\n','','full_html'),('node','forum',0,100,133,'und',0,'<p>Maggiori dettagli:</p>\r\n<p>http://students.uniparthenope.it/?q=node/99</p>\r\n','','filtered_html'),('node','blog',0,101,134,'und',0,'<p> </p>\r\n<p>Questo progetto nasce dall’idea che, al giorno d’oggi, tutto è SMART (intelligente). Esistono gli smartphone, le Smart TV e perfino le Smart Car… E con l’avvento degli indirizzi IPV6 tutto potrà essere dotato di un indirizzo IP ed essere collegato alla rete. Quindi in futuro ci si aspettano i frigoriferi che ci diranno se è scaduto qualche alimento, la lavatrice che d’accordo con il forno e l’asciugatrice non saranno mai in funzione nello stesso momento per evitare scatti del contatore ecc. ecc…</p>\r\n<p>Beh, in un mondo così evoluto noi poveri esseri umani siamo ancora alle prese con domande del tipo:</p>\r\n<p>· Farà freddo stamattina?</p>\r\n<p>· Posso indossare la canottiera per andare a lavoro?</p>\r\n<p>· Ma l’arancione stona con il marrone?</p>\r\n<p>· Devo portare l’ombrello?</p>\r\n<p>Ed ecco che entra in gioco SMARTDRESS! Esso è un programma pensato esclusivamente per risolverci tutti questi dubbi, per aiutare l’utente a scegliere il vestito adatto alla giornata, senza essere più colti alla sprovvista da una giornata fredda di fine maggio, da un abbinamento sconsiderato di colori e dall’infradito perennemente odiato in tutti i luoghi di lavoro!</p>\r\n<p>SMARTDRESS scarica la temperatura e le condizioni atmosferiche della tua città, combina questi risultati con l’analisi dello stile dell’utente (estratto esaminando gli impegni giornalieri scritti su google calendar) e grazie ad un algoritmo interamente scritto ad hoc per l’abbinamento dei colori (basato sul cerchio di Itten) ci propone l’abbinamento più adatto alla giornata, risparmiando tempo e…brutte sorprese!</p>\r\n<p>SMARTDRESS è un programma interamente scritto in java ed è il frutto del lavoro e dell’intuizione di Credo Giovanni, Giustiniani Luigi e Pelliccia Valentina.</p>\r\n<p>Attualmente è alla versione 1.0 presentata come progetto di Programmazione III e lab.</p>\r\n<p>Presto qui su Sebeto verrà rilasciato il tutorial su come far girare l’applicazione su un sistema Windows per chiunque fosse interessato a testarla.</p>\r\n','','filtered_html'),('node','forum',0,102,135,'und',0,'<p>Volevo richiamare l'attenzione su un problema riguardante i permessi di scrittura sull' hosting.<br />\r\n <br />\r\n Una volta creata una cartella, non è possibile creare file al suo interno! <br />\r\n <br />\r\n Permessi negati, sia tramite funzioni PHP sia tramite Client.</p>\r\n','','filtered_html'),('node','blog',0,103,136,'und',0,'<p> </p>\r\n<p>Utilizzando il <em>Java Development Kit</em> (JDK) dell’ <em>Oracle</em> per compilare, verificare gli errori ed eseguire codice java, ho trovato monotono scrivere ogni volta i comandi testuali per eseguire le suddette operazioni, cambiare dall’editor di testo al compilatore e viceversa, per non parlare delle enormi righe dei percorsi per spostarmi da una directory all’altra e della grafica testuale (poiché il compilatore è implementato nella shell).</p>\r\n<ul>\r\n <li>\r\n <u>Prima soluzione</u>: scegliere una piattaforma di sviluppo diversa (<em>NetBeans </em>o <em>Eclipse</em>) che, come tutti i software professionali, richiede un minimo di preparazione all’uso, dato l’elevato numero di comandi a disposizione.<br />\r\n <u>Risultato</u>: idea scartata per mancanza di tempo e documentazione.</li>\r\n</ul>\r\n<ul>\r\n <li>\r\n <u>Seconda soluzione</u>: semplificare al massimo il numero di comandi da inserire e delle operazioni da eseguire utilizzando dei file batch (script per la shell di <em>Windows</em>) e inserendo tutti i sorgenti in una sola cartella.<br />\r\n <u>Risultato</u>: caos totale.</li>\r\n</ul>\r\n<p>Mettendo insieme tutti i problemi riscontrati, ho deciso di creare "<strong>Make Java</strong> <strong>Projects</strong>", una piattaforma di sviluppo intuitiva e semplice, che sfrutti le potenzialità del JDK e che non richieda nessuna preparazione all’uso. <br />\r\n Nasce così l’idea di sviluppare MJP come progetto per l’esame di <strong>Programmazione III</strong>.</p>\r\n<p> </p>\r\n<p class=\"rteright\" style=\"\"><a href=\"http://students.uniparthenope.it/?q=node/104\">Make Java Projects - Descrizione>></a><br />\r\n </p>\r\n<h3 class=\"rtecenter\">\r\n <span style=\"font-size:16px;\"><em><span style=\"color: rgb(255, 0, 0); \">1</span> <span style=\"color: rgb(0, 0, 205); \">- </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color: rgb(0, 0, 205); \">2</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color: rgb(0, 0, 205); \">3</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color: rgb(0, 0, 205); \">4</span></a><span style=\"color: rgb(0, 0, 205); \"> </span><span style=\"color: rgb(0, 0, 205); \">- </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color:#0000cd;\">5</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color:#0000cd;\">6</span></a><span style=\"color:#0000ff;\"> -</span><span style=\"color:#0000cd;\"> </span><a href=\"http://students.uniparthenope.it/?q=node/119\"><span style=\"color:#0000cd;\">7</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></em></span></h3>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,104,137,'und',0,'<p> </p>\r\n<p>Adoperando i comandi del <em>JDK</em>, <strong>MJP </strong>(scritto interamente in java) semplifica la creazione e la modifica dei file java mediante un editor di testo innestato nel programma, riporta eventuali errori di compilazione in una sezione dedicata, facilita l'esecuzione delle applet creando in modo automatico il file html per testare lo stesso e permette la creazione dei "<em>jar file</em>" con una procedura guidata.</p>\r\n<p><strong>MJP</strong> può assumere due interfacce grafiche: una <u>completa </u>in cui è possibile editare direttamente i sorgenti ed un'altra <u>minimizzata </u>per poter utilizzare un editor di testo esterno (ad esempio <em>JEdit </em>o <em>Notepad++</em> ).</p>\r\n<p>Inoltre, permette la ricerca di informazioni sul codice attraverso una barra di ricerca collegata direttamente alla documentazione <em>Oracle </em>("<a href=\"http://www.oracle.com/index.html\">http://www.oracle.com/index.html</a>") e consente di memorizzare eventuali note (salvate automaticamente) per ogni sorgente in un’apposita finestra.</p>\r\n<p>L’obiettivo principale è “<em>semplificare</em>” il lavoro dell’utente; a tal proposito ho cercato di rendere intuitiva l’interfaccia grafica, permettendo all’utente di individuare rapidamente i comandi principali e di scegliere la lingua desiderata (al momento sono 5 quelle disponibili).</p>\r\n<p> </p>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/103\"><< Make Java Projects - Come nasce</a></p>\r\n<p class=\"rteright\" style=\"\"><a href=\"students.uniparthenope.it/?q=node/109\">Make Java Projects - Le Classi (parte 1)>></a><br />\r\n </p>\r\n<h3 class=\"rtecenter\">\r\n <span style=\"font-size:16px;\"><em><a href=\"students.uniparthenope.it/?q=node/103\"><span style=\"color: rgb(0, 0, 205); \">1</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><span style=\"color: rgb(255, 0, 0); \">2</span><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color: rgb(0, 0, 205); \">3</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color: rgb(0, 0, 205); \">4</span></a><span style=\"color: rgb(0, 0, 205); \"> </span><span style=\"color: rgb(0, 0, 205); \">- </span><a href=\"http://students.uniparthenope.it/?q=node/114\"><span style=\"color:#0000cd;\">5</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color:#0000cd;\">6</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/119\"><span style=\"color:#0000cd;\">7</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></em></span><br />\r\n </h3>\r\n','','full_html'),('node','event',0,105,138,'und',0,'<p>Presentazione nell'aula ipermediale del Dipartimento di Scienze Applicate.</p>\r\n<p>Modalità:</p>\r\n<ul>\r\n <li>\r\n Presentazione di massimo 10 slides (Power Point o PDF) durata massima 15 minuti.</li>\r\n <li>\r\n Dimostrazione</li>\r\n</ul>\r\n<p>Segue discussione.</p>\r\n<p> </p>\r\n','','full_html'),('node','event',0,106,139,'und',0,'<p>Disponibilità online dell'applicazione Android per accedere ai servizi UniParthenope</p>\r\n','','full_html'),('node','blog',0,107,140,'und',0,'<p>Oggi ho apportato ulteriori modifiche al progetto inserendo un contatore di punteggio e un indicatore che mostra il rimanente totale delle vite a disposizione. L'implementazione di questi aspetti è risultata non molto complessa , dato il fatto che è bastato disegnare sulla label una stringa che rappresenta proprio il punteggio e tre sferette (in basso a destra) che rappresentano un modo grafico per indicare il numero di vite. Vediamo come realizzare praticamente questi due aspetti importanti di questo videogioco: <br />\r\n Ricordiamo dagli aggiornamenti precedenti che tutto il contenuto grafico del videogioco è disegnato su una label , la cui classe associata, ha nel progetto il nome Label.java (a fine post ci saranno dei link ai post precedenti per paragonare quello che sto scrivendo direttamente con il codice). Partiamo dalle vite:<br />\r\n <br />\r\n -Lavoriamo all'interno del metodo PaintComponent. Il nostro scopo è disegnare tre sferette in basso a destra che indicano appunto le 3 vite iniziali che l'utente ha a disposizione. Si potrebbe pensare di disegnare direttamente , richiamando tre volte il metodo drawOval. Questo non è ovviamente il procedimento adatto da intraprendere in quanto ogni qualvolta il giocatore fa cadere la pallina o la porta sugli spuntoni in alto della label, non si potrebbe andare ad eliminare una delle sferette, data l'invocazione statica dei metodi di disegno che abbiamo visto prima. Pertanto ho pensato di automatizzare il procedimento di disegno tramite un ciclo for. Ovvero, vengono disegnate (tramite sempre il metodo drawOval) tante sferette quante sono le possibilità che l'utente ha in quel momento a disposizione, utilizzando delle variabili locali al ciclo for per slittare opportunamente le coordinate delle stesse sferette (in modo che appaiano distanti di un tot punti). Vediamo da vicino il codice che implementa questo meccanismo : </p>\r\n<br />\r\n<br />\r\n<div>\r\n <pre>\r\n for(int i=0;i<io.sferalife;i=i+20){\r\n</pre>\r\n</div>\r\n<div>\r\n \r\n <pre>\r\n g.setColor(Color.RED);</pre>\r\n</div>\r\n<div>\r\n \r\n <pre>\r\n g.drawOval(445+life,900,10,10); </pre>\r\n</div>\r\n<div>\r\n \r\n <pre>\r\n g.fillOval(445+life,900,10,10);</pre>\r\n</div>\r\n<div>\r\n \r\n <pre>\r\n life=life+20;</pre>\r\n</div>\r\n<div>\r\n \r\n <pre>\r\n if(life==io.sferalife) life=0;</pre>\r\n</div>\r\n<div>\r\n }</div>\r\n<p><br />\r\n Si vede come ad ogni iterazione (che va incrementando per 20) viene incrementata di 20 una variabile locale al ciclo la quale opportunamente spiazzata consentirà di disegnare correttamente il quantitativo di sferette esatte rispetto al numero di vite rimaste all'utente. "sferalife" è una variabile dichiarata all'interno della classe Sfera che all'interno dei metodi scende() e sale() subirà un decremento ogni qualvolta l'utente perde.<br />\r\n <br />\r\n <br />\r\n -L'indicatore del punteggio è invece molto più semplice in quanto prevede solo il disegno sulla label di una stringa; ho utilizzato ovviamente il metodo drawString di Graphics settando il colore Blue e passando allo stesso metodo le coordinate della posizione della stringa. Ovviamente le stringhe sono due : una "SCORE : " a cui segue una variabile intera che incrementa di un certo tot ogni qualvolta la sfera riesce ad appoggiarsi ad un rettangolo , e un'altra stringa "VITE RIMASTE :" alla quale segue il disegno delle sferette di cui ho parlato prima. Segue il codice :</p>\r\n<br />\r\n<br />\r\n<div>\r\n <pre>\r\n g.setColor(Color.BLUE);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n g.drawString("VITE RIMASTE ", 360, 910);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n g.setColor(Color.BLUE);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n g.drawString("SCORE "+punteggio ,10,910);</pre>\r\n <p> </p>\r\n <p>Come già detto , il tutto è implementato all'interno della classe Label.<br />\r\n Seguono due link relativi ai post precedenti con all'interno il codice completo del programma , in modo tale da poter eseguire eventuali confronti.<br />\r\n Grazie per l'attenzione :)<br />\r\n <br />\r\n <a href=\"http://students.uniparthenope.it/?q=node/84\">http://students.uniparthenope.it/?q=node/84</a><br />\r\n <a href=\"http://students.uniparthenope.it/?q=node/86\">http://students.uniparthenope.it/?q=node/86</a></p>\r\n</div>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,108,141,'und',0,'<p>In relazione al post di prima , volevo inserire un paio di screenshot che mostrano visivamente il punteggio e l'indicatore di vite. </p>\r\n<p>Il gioco comincia , lo SCORE e' ovviamente a 0 e le vite sono al massimo : <br />\r\n <a href=\"/sites/default/files/images/20122107220630.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122107220630.jpg\" /></a></p>\r\n<p> </p>\r\n<p>Riusciamo ad appoggiarci sul secondo rettangolo che esce sulla sinistra e il punteggio aumenta. Andiamo avanti nel gioco e il punteggio continua ad incrementare fino ad arrivare ad 80 :<br />\r\n <br />\r\n <a href=\"/sites/default/files/images/20122107220719.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122107220719.jpg\" /></a></p>\r\n<p> </p>\r\n<p>Purtroppo perdo il controllo e vado a finire su uno degli spuntoni che si trovano in alto sulla label. Subiamo un decremento della vita e saranno disegnate solo due sferette (lo score è diverso perché lo screen è stato effettuato in un'altra partita) :<br />\r\n <br />\r\n <a href=\"/sites/default/files/images/20122107220817.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122107220817.jpg\" /></a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p>Accumuliamo ancora punteggio ma cadiamo e non riusciamo ad incontrare nessun rettangolo che ci puo' sorreggere. Abbiamo ad esempio ora una vita , di conseguenza perderemo il gioco. </p>\r\n<p><a href=\"/sites/default/files/images/20122107221021.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122107221021.jpg\" /></a><br />\r\n </p>\r\n<p><br />\r\n Dopo aver perso , ho scelto di inserire una schermata di FINE-GIOCO che consiste semplicemente nel disegno di un rettangolo bianco che ha le dimensioni proprio della finestra (deve ovviamente ricoprire il tutto) e all'interno due stringhe : una che indica proprio che la partita è finita e un'altra e un "memo" del punteggio effettuato nel gioco. Vediamo :<br />\r\n <br />\r\n <br />\r\n <a href=\"/sites/default/files/images/20122107221201.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122107221201.jpg\" /></a><br />\r\n <br />\r\n </p>\r\n<p>Grazie ancora per l'attenzione , buonasera <br />\r\n :)<br />\r\n </p>\r\n','','full_html'),('node','blog',0,109,142,'und',0,'<p> </p>\r\n<p>MJP opera al 90% su file, pertanto ho creato delle classi e dei metodi specifici per gestirli; in particolare quest’applicazione gestisce file con estensione “.java ”, “.class ”, “.jar ”, “.lng”, “.mjp” e “.txt ”. Tali classi possono essere adattate per qualsiasi vostra esigenza. Come in tutti i programmi, è possibile cercare, leggere, salvare o copiare i file, quindi:</p>\r\n<p>CercaFile</p>\r\n<pre>\r\n import java.io.*;\r\n import java.io.File.*;\r\n import javax.swing.tree.*;\r\n public class CercaFile{\r\n String testo[];\r\n String s=new String("");\r\n String tmp=new String();\r\n int i,j,len;\r\n boolean result;\r\n \r\n /*cerca tutti i file nella directory corrente*/\r\n public CercaFile(){\r\n File dir=new File(".");\r\n File lista[]=dir.listFiles();\r\n len=lista.length;\r\n testo=new String[len];\r\n \r\n for(i=0;i<len;i++)\r\n testo[i]=lista[i].getName()+"\\n";\r\n }\r\n \r\n /*cerca file filtrati per tipo nella directory corrente*/\r\n public CercaFile(String type){\r\n File dir=new File(".");\r\n File lista[]=dir.listFiles();\r\n len=lista.length;\r\n int j=0;\r\n testo=new String[len];\r\n \r\n for(i=0;i<len;i++){\r\n tmp=lista[i].getName();\r\n if(tmp.endsWith(type)==true)\r\n testo[j++]=tmp;\r\n }\r\n len=j;\r\n }\r\n \r\n /*cerca tutti i file nella directory scelta(select=true) oppure \r\n tutte le cartelle (select=false)*/\r\n public CercaFile(String path, boolean select){\r\n File dir=new File(path);\r\n File lista[]=dir.listFiles();\r\n len=lista.length;\r\n int j=0;\r\n testo=new String[len];\r\n \r\n if(select==true){\r\n for(i=0;i<len;i++)\r\n testo[j++]=lista[i].getName()\r\n }\r\n else{\r\n j=0;\r\n for(i=0;i<len;i++)\r\n if(lista[i].isDirectory() && !lista[i].isHidden() && \r\n lista[i].listFiles()!=null)\r\n testo[j++]=lista[i].getName();\r\n }\r\n len=j; <span class=\"Apple-tab-span\" style=\"white-space:pre\"> </span>\r\n }\r\n \r\n /*cerca file filtrati per tipo nella directory scelta*/\r\n public CercaFile(String path, String type){\r\n File dir=new File(path);\r\n File lista[]=dir.listFiles();\r\n len=lista.length;\r\n int j=0;\r\n testo=new String[len];\r\n \r\n for(i=0;i<len;i++){\r\n tmp=lista[i].getName();\r\n if(tmp.endsWith(type)==true)\r\n testo[j++]=tmp;\r\n }\r\n len=j;\r\n }\r\n \r\n /*cerca file specifico nella directory scelta*/\r\n public CercaFile(String path, String title, boolean select){\r\n File dir=new File(path);\r\n File lista[]=dir.listFiles();\r\n len=lista.length;\r\n testo=new String[1];\r\n testo[0]="null";\r\n result=select;\r\n \r\n for(i=0;i<len;i++){\r\n tmp=lista[i].getName();\r\n if(tmp.compareTo(title)==0){\r\n testo[0]=tmp;\r\n result=!select;\r\n }\r\n }\r\n len=1;\r\n }\r\n \r\n \r\n /*restituisce i file trovati in un array*/\r\n public String[] getListFiles(){\r\n return testo;\r\n }\r\n \r\n \r\n /*restituisce i file trovati in una stringa*/\r\n public String getListStringFiles(String separator){\r\n for(i=0;i<len;i++)\r\n s=s+testo[i]+separator;\r\n return s;\r\n }\r\n \r\n /*restituisce il numero di file trovati */\r\n public int getListLength(){\r\n return len;\r\n }\r\n \r\n /*restituisce un valore booleano se ha trovato il file \r\n nella cartella scelta CercaFile(String,String,boolean)*/\r\n public boolean getResult(){\r\n return result;\r\n }\r\n }\r\n\r\n</pre>\r\n<p> </p>\r\n<p> </p>\r\n<p>SaveFile</p>\r\n<pre>\r\nimport java.io.*;\r\n\r\npublic class SaveFile{\r\n String osname=System.getProperty("os.name");\r\n \r\n //salva il file con titolo e testo nella directory corrente\r\n public SaveFile(String title, String text){\r\n try {\r\n File file = new File("."+"\\\\"+title);\r\n FileWriter fw = new FileWriter(file);\r\n fw.write(text);\r\n fw.flush();\r\n fw.close();\r\n }\r\n catch(IOException e){e.printStackTrace();}\r\n }\r\n \r\n //salva il file con titolo e testo nella directory scelta\r\n public SaveFile(String path, String title, String text){\r\n try {\r\n File file;\r\n if(osname.startsWith("Windows")==true)\r\n file = new File(path+"\\\\"+title);\r\n else\r\n file = new File(path+""+title);\r\n FileWriter fw = new FileWriter(file);\r\n fw.write(text);\r\n fw.flush();\r\n fw.close();\r\n }\r\n catch(IOException e){e.printStackTrace();}\r\n }\r\n\r\n}\r\n</pre>\r\n<p> </p>\r\n<p> </p>\r\n<p>ReadFile</p>\r\n<pre>\r\nimport java.io.*;\r\n\r\npublic class ReadFile {\r\n String s=new String("");\r\n \r\n //lettura file nella directory corrente\r\n public ReadFile(String title){\r\n try{\r\n FileInputStream fstream = new FileInputStream(title);\r\n DataInputStream in = new DataInputStream(fstream);\r\n BufferedReader br = new BufferedReader(new InputStreamReader(in));\r\n String strLine;\r\n while ((strLine = br.readLine()) != null)\r\n s=s+strLine+"\\n";\r\n in.close();\r\n }\r\n catch (Exception e){}\r\n } \r\n \r\n //lettura file in una directory specifica\r\n public ReadFile(String path, String title){\r\n try{ \r\n FileInputStream fstream = new FileInputStream((""+path+title));\r\n DataInputStream in = new DataInputStream(fstream);\r\n BufferedReader br = new BufferedReader(new InputStreamReader(in)); \r\n String strLine;\r\n while ((strLine = br.readLine()) != null)\r\n s=s+strLine+"\\n";\r\n in.close();\r\n }\r\n catch (Exception e){}\r\n }\r\n \r\n //restituisce un array con la lettura dei file\r\n public String [] getReadingFile(String separator){\r\n String[] testo=s.split(separator);\r\n return testo;\r\n }\r\n \r\n //restituisce una stringa con la lettura dei file\r\n public String getStringToReadingFile(){\r\n return s;\r\n }\r\n \r\n //restituisce una stringa con la lettura di una riga specifica\r\n public String getRowReadingFile(int ind){\r\n String row[]=getReadingFile("\\n");\r\n return row[ind];\r\n }\r\n\r\n}\r\n</pre>\r\n<p> </p>\r\n<p> </p>\r\n<p>CopyFile</p>\r\n<pre>\r\nimport java.io.*;\r\n\r\npublic class CopyFile{\r\n //copia un file\r\n public CopyFile(String srFile, String dtFile){\r\n try{\r\n File f1 = new File(srFile);\r\n File f2 = new File(dtFile);\r\n InputStream in = new FileInputStream(f1);\r\n OutputStream out = new FileOutputStream(f2);\r\n\r\n byte[] buf = new byte[1024];\r\n int len;\r\n while ((len = in.read(buf)) > 0){\r\n out.write(buf, 0, len);\r\n }\r\n in.close();\r\n out.close();\r\n }\r\n catch(FileNotFoundException ex){}\r\n catch(IOException e){}\r\n }\r\n}\r\n</pre>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/104\"><<Make Java Projects - Descrizione</a></p>\r\n<p class=\"rteright\" style=\"\"><a href=\"http://students.uniparthenope.it/?q=node/111\">Make Java Projects - Le Classi (parte 2)>></a></p>\r\n<p class=\"rteright\" style=\"\"> </p>\r\n<h3 class=\"rtecenter\">\r\n <span style=\"font-size:16px;\"><em><a href=\"students.uniparthenope.it/?q=node/103\"><span style=\"color: rgb(0, 0, 205); \">1</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color: rgb(0, 0, 205); \">2</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><span style=\"color: rgb(255, 0, 0); \">3</span><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color: rgb(0, 0, 205); \">4</span></a><span style=\"color: rgb(0, 0, 205); \"> </span><span style=\"color: rgb(0, 0, 205); \">- </span><a href=\"http://students.uniparthenope.it/?q=node/114\"><span style=\"color:#0000cd;\">5</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color:#0000cd;\">6</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/119\"><span style=\"color:#0000cd;\">7</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></em></span><br />\r\n </h3>\r\n','','full_html'),('node','blog',0,111,144,'und',0,'<p> </p>\r\n<p>Le classi citate nell’articolo precedente, se combinate in maniera opportuna, possono dar vita a vari menù per la gestione dei file (ovviamente aggiungendo sempre un po’ di grafica). <strong>MJP </strong>utilizza le seguenti:</p>\r\n<p> </p>\r\n<p><strong>OpenJFileD </strong>(apertura file <em>java </em>con menù)</p>\r\n<pre>\r\nimport java.io.*;\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.awt.event.MouseEvent;\r\nimport javax.swing.*;\r\nimport javax.swing.JScrollPane.*;\r\nimport javax.swing.tree.*;\r\n\r\npublic class OpenJFileD extends JDialog{\r\n int ld,lf,j=0,cont=0;\r\n int row[];\r\n boolean dof=true,opened=true;\r\n Image logo=Toolkit.getDefaultToolkit().getImage("images/logo.png");\r\n \r\n JTree tree1=new JTree();\r\n JTree tree2=new JTree();\r\n TreePath tp[];\r\n CercaFile cFile,cDir;\r\n String directory[],file[];\r\n String path[]=new String[100];\r\n String sub,types;\r\n String sep=System.getProperty("file.separator");\r\n String home=System.getProperty("user.home");\r\n String osname=System.getProperty("os.name");\r\n \r\n //bottoni\r\n JButton b_open=new JButton("");\r\n JButton b_cancels=new JButton("");\r\n JButton b_back=new JButton("");\r\n \r\n //layout\r\n JLabel select=new JLabel("");\r\n JPanel p1=new JPanel(new FlowLayout());\r\n JPanel p2=new JPanel(new GridLayout(1,2));\r\n JScrollPane scrollTree; \r\n\r\n public OpenJFileD(String typeFile){\r\n //azioni\r\n b_open.addActionListener(new b_open());\r\n b_cancels.addActionListener(new b_cancels());\r\n b_back.addActionListener(new b_back());\r\n tree1.addMouseListener(new Select1());\r\n tree2.addMouseListener(new Select2());\r\n \r\n types=typeFile;\r\n path[j++]=home;\r\n caricaLista(path[0]+sep);\r\n \r\n //layout\r\n p2.add(tree1);\r\n p2.add(tree2);\r\n scrollTree=new JScrollPane(p2);\r\n p1.add(select);\r\n p1.add(new JLabel(" "));\r\n p1.add(b_open);\r\n p1.add(b_back);\r\n p1.add(b_cancels);\r\n p1.setBackground(new Color(255,204,56));\r\n add(scrollTree,BorderLayout.CENTER);\r\n add(p1,BorderLayout.SOUTH);\r\n \r\n //impostazioni finestra\r\n setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n changeLanguage();\r\n finestraD(true);\r\n }\r\n\r\n //impostazioni finestra\r\n public void finestraD(boolean Svis){\r\n setModal(true);\r\n pack();\r\n setSize(400,400);\r\n final Toolkit toolkit = Toolkit.getDefaultToolkit();\r\n final Dimension screenSize = toolkit.getScreenSize();\r\n final int x = (screenSize.width - getWidth()) / 2;\r\n final int y = (screenSize.height - getHeight()) / 2;\r\n setLocation(x, y);\r\n tree1.setRootVisible(false);\r\n tree2.setRootVisible(false);\r\n setResizable(false);\r\n setIconImage(logo);\r\n setVisible(Svis);\r\n }\r\n \r\n //carica e cambia la lingua\r\n public void changeLanguage(){\r\n CercaFile CsetFile=new CercaFile(".","settings.mjp",true);\r\n String TsetFile=new String(CsetFile.getListStringFiles(""));\r\n ReadFile setFile=new ReadFile("settings.mjp");\r\n String settings=setFile.getRowReadingFile(0);\r\n ReadFile language=new ReadFile("language/",settings+".lng");\r\n String setLanguage[]= java.util.Arrays.copyOf(language.getReadingFile("\\n"), 20);\r\n \r\n setTitle(setLanguage[2]);\r\n b_open.setText(setLanguage[2]); //apri\r\n b_cancels.setText(setLanguage[8]); //annulla\r\n b_back.setText(setLanguage[7]); //indietro\r\n select.setText(setLanguage[19]); //messaggio\r\n }\r\n\r\n public void caricaLista(String dir){\r\n //caricamento lista cartella \r\n cDir=new CercaFile(dir,false);\r\n ld=cDir.getListLength();\r\n directory = java.util.Arrays.copyOf(cDir.getListFiles(),ld);\r\n JTree trl1=new JTree(directory);\r\n tree1.setModel(trl1.getModel());\r\n DefaultTreeCellRenderer ico1 = new DefaultTreeCellRenderer();\r\n ico1.setLeafIcon(new ImageIcon("images/folder.png"));\r\n tree1.setCellRenderer(ico1);\r\n \r\n //caricamento lista file\r\n cFile=new CercaFile(dir,types);\r\n lf=cFile.getListLength();\r\n file = java.util.Arrays.copyOf(cFile.getListFiles(), lf);\r\n JTree trl2=new JTree(file);\r\n tree2.setModel(trl2.getModel());\r\n DefaultTreeCellRenderer ico2 = new DefaultTreeCellRenderer();\r\n ico2.setLeafIcon(new ImageIcon("images/java.png"));\r\n tree2.setCellRenderer(ico2);\r\n \r\n if(j>1)\r\n b_back.setEnabled(true);\r\n else\r\n b_back.setEnabled(false); \r\n }\r\n\r\n//apri cartella\r\n public void apriDir(){\r\n cont=0;\r\n try{\r\n String s=""+tp[0];\r\n sub=s.substring(7,s.length()-1);\r\n if(dof==true && row[0]<ld)\r\n path[j++]=sub;\r\n sub=caricaPath(sub);\r\n caricaLista(sub);\r\n }\r\n else\r\n select.setText(sub);\r\n }\r\n catch(NullPointerException npex){\r\n j=0;\r\n path[j++]=home;\r\n }\r\n }\r\n \r\n //carica percorso\r\n public String caricaPath(String subPath){\r\n subPath="";\r\n for(int i=0;i<j;i++)\r\n<j;i++) pre=\"\" return=\"\" subpath=\"subPath+path[i]+sep;\"> subPath=subPath+path[i]+sep;\r\n return subPath;\r\n }\r\n\r\n //azione bottone apri\r\n public class b_open implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n apriDir();\r\n if(dof==false)\r\n finestraD(false);\r\n }\r\n }\r\n\r\n //azione bottone indietro\r\n public class b_back implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n j--;\r\n sub=caricaPath(sub);\r\n caricaLista(sub); \r\n cont=0;\r\n }\r\n }\r\n \r\n //azione bottone annulla\r\n public class b_cancels implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n opened=false; \r\n finestraD(false);\r\n }\r\n }\r\n\r\n //azione tree1\r\n public class Select1 implements MouseListener{\r\n public void mouseClicked(MouseEvent me){\r\n row=tree1.getSelectionRows();\r\n tp=tree1.getSelectionPaths();\r\n dof=true;\r\n cont++;\r\n if(cont==2)\r\n apriDir();\r\n }\r\n public void mouseExited(MouseEvent me){\r\n cont=0;\r\n }\r\n public void mouseEntered(MouseEvent me){}\r\n public void mouseReleased(MouseEvent me){}\r\n public void mousePressed(MouseEvent me){}\r\n }\r\n\r\n //azione tree2\r\n public class Select2 implements MouseListener{\r\n public void mouseClicked(MouseEvent me){\r\n row=tree2.getSelectionRows();\r\n tp=tree2.getSelectionPaths();\r\n dof=false;\r\n String s=""+tp[0];\r\n sub=s.substring(7,s.length()-1);\r\n select.setText(sub);\r\n }\r\n public void mouseExited(MouseEvent me){}\r\n public void mouseEntered(MouseEvent me){}\r\n public void mouseReleased(MouseEvent me){}\r\n public void mousePressed(MouseEvent me){}\r\n }\r\n\r\n //restituisce il titolo del file aperto\r\n public String getTitleOpenFile(){\r\n return select.getText();\r\n }\r\n \r\n //restituisce il percorso del fine aperto\r\n public String getPathOpenFile(){\r\n sub=caricaPath(sub);\r\n return sub;\r\n }\r\n \r\n //restituisce vero se il file e' stato aperto\r\n public boolean getIsOpened(){\r\n return opened;\r\n }\r\n\r\n}</pre>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122207232743.png\" /></p>\r\n<p><u><em>Note</em></u>:<br />\r\n questa classe implementa i <em>JTree </em>per rappresentare le cartelle e file, azioni sul mouse per poter aprire le cartelle con un doppio click e tre <em>JButton </em>per tornare indietro nei percorsi, aprire le cartelle o il file scelto ed annullare l'apertura.</p>\r\n<p> </p>\r\n<p><strong>NewJFileD </strong>(creazione file <em>java </em>con menù)</p>\r\n<pre>\r\nimport java.io.*;\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.awt.event.MouseEvent;\r\nimport javax.swing.*;\r\nimport javax.swing.JScrollPane.*;\r\nimport javax.swing.tree.*;\r\n\r\npublic class NewJFileD extends JDialog{\r\n //creazione alberi\r\n JTree tree1=new JTree();\r\n JTree tree2=new JTree();\r\n TreePath tp[];\r\n \r\n int ld,lf,j=0,cont=0;\r\n int row[],x,y;\r\n boolean setJar,dof=true,create=true;\r\n CercaFile cFile,cDir;\r\n String directory[],file[];\r\n String path[]=new String[100];\r\n String sub,titleWin,txt,code,setJarS;\r\n String codeTitleFile,codePathFile;\r\n String sep=System.getProperty("file.separator");\r\n String home=System.getProperty("user.home");\r\n Image logo=Toolkit.getDefaultToolkit().getImage("images/logo.png");\r\n \r\n //bottoni\r\n JButton b_new=new JButton("");\r\n JButton b_cancels=new JButton("");\r\n JButton b_back=new JButton("");\r\n \r\n TextField Title=new TextField(20);\r\n \r\n //layout\r\n JPanel p1=new JPanel(new FlowLayout());\r\n JPanel p2=new JPanel(new GridLayout(1,2));\r\n JScrollPane scrollTree;\r\n \r\n public NewJFileD(String str, boolean isJar){\r\n if(isJar==true)\r\n setJarS="jar";\r\n else\r\n setJarS="java";\r\n \r\n setJar=isJar;\r\n \r\n //azioni\r\n b_new.addActionListener(new b_new());\r\n b_cancels.addActionListener(new b_cancels());\r\n b_back.addActionListener(new b_back());\r\n tree1.addMouseListener(new Select1());\r\n tree2.addMouseListener(new Select2());\r\n Title.addMouseListener(new Title());\r\n \r\n path[j++]=home;\r\n caricaLista(path[0]+sep);\r\n code=str;\r\n \r\n //layout\r\n p2.add(tree1);\r\n p2.add(tree2);\r\n scrollTree=new JScrollPane(p2);\r\n p1.add(Title);\r\n p1.add(new JLabel(" "));\r\n p1.add(b_new);\r\n p1.add(b_back);\r\n p1.add(b_cancels);\r\n p1.setBackground(new Color(255,204,56));\r\n add(scrollTree,BorderLayout.CENTER);\r\n add(p1,BorderLayout.SOUTH); \r\n \r\n //impostazioni iniziali\r\n b_new.setEnabled(false);\r\n setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n changeLanguage();\r\n finestraD(true);\r\n }\r\n \r\n //impostazioni finestra\r\n public void finestraD(boolean Svis){\r\n setTitle(titleWin);\r\n setModal(true);\r\n pack();\r\n setSize(550,400);\r\n //centra Finestra\r\n final Toolkit toolkit = Toolkit.getDefaultToolkit();\r\n final Dimension screenSize = toolkit.getScreenSize();\r\n x = (screenSize.width - getWidth()) / 2;\r\n y = (screenSize.height - getHeight()) / 2;\r\n setLocation(x, y);\r\n //nascondi root\r\n tree1.setRootVisible(false);\r\n tree2.setRootVisible(false);\r\n setResizable(false);\r\n setIconImage(logo);\r\n setVisible(Svis);\r\n }\r\n \r\n //carica e cambia lingua\r\n public void changeLanguage(){\r\n CercaFile CsetFile=new CercaFile(".","settings.mjp",true);\r\n String TsetFile=new String(CsetFile.getListStringFiles(""));\r\n ReadFile setFile=new ReadFile("settings.mjp");\r\n String settings=setFile.getRowReadingFile(0);\r\n ReadFile language=new ReadFile("language/",settings+".lng");\r\n String setLanguage[]= java.util.Arrays.copyOf(language.getReadingFile("\\n"), 20);\r\n \r\n b_new.setText(setLanguage[1]); //nuovo\r\n b_cancels.setText(setLanguage[8]); //annulla\r\n b_back.setText(setLanguage[7]); //indietro\r\n titleWin=setLanguage[1]; //titolo finestra\r\n txt=setLanguage[18]; //messaggio\r\n }\r\n \r\n //carica lista cartelle\r\n public void caricaLista(String dir){\r\n //caricamento albero dir\r\n cDir=new CercaFile(dir,false);\r\n ld=cDir.getListLength();\r\n directory = java.util.Arrays.copyOf(cDir.getListFiles(),ld);\r\n JTree trl1=new JTree(directory);\r\n tree1.setModel(trl1.getModel());\r\n DefaultTreeCellRenderer ico1 = new DefaultTreeCellRenderer();\r\n ico1.setLeafIcon(new ImageIcon("images/folder.png"));\r\n tree1.setCellRenderer(ico1);\r\n \r\n //caricamento albero file\r\n cFile=new CercaFile(dir,"."+setJarS);\r\n lf=cFile.getListLength();\r\n file = java.util.Arrays.copyOf(cFile.getListFiles(), lf);\r\n JTree trl2=new JTree(file);\r\n tree2.setModel(trl2.getModel());\r\n DefaultTreeCellRenderer ico2 = new DefaultTreeCellRenderer();\r\n ico2.setLeafIcon(new ImageIcon("images/"+"java"+".png"));\r\n tree2.setCellRenderer(ico2);\r\n \r\n if(j>1)\r\n b_back.setEnabled(true);\r\n else\r\n b_back.setEnabled(false); \r\n }\r\n \r\n //apri cartella\r\n public void apriDir(){\r\n cont=0;\r\n try{\r\n String s=""+tp[0];\r\n sub=s.substring(7,s.length()-1);\r\n if(dof==true && row[0]<ld){\r\n path[j++]=sub;\r\n sub=caricaPath(sub);\r\n caricaLista(sub);\r\n }\r\n else\r\n select.setText(sub);\r\n }\r\n catch(NullPointerException npex){\r\n j=0;\r\n path[j++]=home;\r\n }\r\n }\r\n \r\n //carica cartella\r\n public String caricaPath(String subPath){\r\n subPath="";\r\n for(int i=0;i<j;i++)\r\n subPath=subPath+path[i]+sep;\r\n return subPath;\r\n }\r\n \r\n //azione bottone nuovo\r\n public class b_new implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n if(Title.getText().compareTo("")==0){\r\n b_new.setEnabled(false);\r\n }\r\n else{\r\n codeTitleFile=Title.getText();\r\n if(codeTitleFile.endsWith("."+setJarS)==false)\r\n codeTitleFile=codeTitleFile+"."+setJarS;\r\n codePathFile=caricaPath("");\r\n CercaFile c=new CercaFile(codePathFile,codeTitleFile,false);\r\n boolean strc=c.getResult();\r\n if(strc==true){\r\n ConfirmD conf=new ConfirmD(txt+" "+codeTitleFile+" ?",(x+50),(y+50));\r\n if(conf.getResult()==true){\r\n new SaveFile(codePathFile,codeTitleFile,code);\r\n finestraD(false);\r\n } \r\n }\r\n else{\r\n new SaveFile(codePathFile,codeTitleFile,code);\r\n finestraD(false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //azione bottone back indietro\r\n public class b_back implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n j--;\r\n sub=caricaPath(sub);\r\n caricaLista(sub); \r\n cont=0;\r\n }\r\n }\r\n\r\n //azione bottone annulla\r\n public class b_cancels implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n create=false;\r\n finestraD(false);\r\n }\r\n }\r\n \r\n //azione albero 1 (tree1)\r\n public class Select1 implements MouseListener{\r\n public void mouseClicked(MouseEvent me){\r\n row=tree1.getSelectionRows();\r\n tp=tree1.getSelectionPaths();\r\n dof=true;\r\n cont++;\r\n if(cont==2)\r\n apriDir();\r\n }\r\n\r\n public void mouseExited(MouseEvent me){\r\n cont=0;\r\n }\r\n public void mouseEntered(MouseEvent me){}\r\n public void mouseReleased(MouseEvent me){}\r\n public void mousePressed(MouseEvent me){}\r\n }\r\n \r\n //azione albero 2 (tree2)\r\n public class Select2 implements MouseListener{\r\n public void mouseClicked(MouseEvent me){\r\n row=tree2.getSelectionRows();\r\n tp=tree2.getSelectionPaths();\r\n dof=false;\r\n String s=""+tp[0];\r\n sub=s.substring(7,s.length()-1);\r\n Title.setText(sub);\r\n b_new.setEnabled(true);\r\n }\r\n public void mouseExited(MouseEvent me){}\r\n public void mouseEntered(MouseEvent me){}\r\n public void mouseReleased(MouseEvent me){}\r\n public void mousePressed(MouseEvent me){}\r\n }\r\n \r\n //azione titolo\r\n public class Title implements MouseListener{\r\n public void mouseClicked(MouseEvent me){}\r\n public void mouseExited(MouseEvent me){\r\n if(Title.getText().compareTo("")==0)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("0")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("1")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("2")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("3")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("4")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("5")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("6")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("7")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("8")==true)\r\n b_new.setEnabled(false);\r\n else if(Title.getText().startsWith("9")==true)\r\n b_new.setEnabled(false);\r\n else\r\n b_new.setEnabled(true);\r\n }\r\n public void mouseEntered(MouseEvent me){}\r\n public void mouseReleased(MouseEvent me){}\r\n public void mousePressed(MouseEvent me){}\r\n }\r\n\r\n //restituisce il titolo del file creato \r\n public String getTitleOpenFile(){\r\n return codeTitleFile;\r\n }\r\n \r\n //restituisce il percorso del file creato\r\n public String getPathOpenFile(){\r\n return codePathFile;\r\n }\r\n \r\n //restituisce vero se il file e' stato creato\r\n public boolean getIsCreated(){\r\n return create;\r\n }\r\n}\r\n</pre>\r\n<p class=\"rtecenter\" style=\"\"><a href=\"http://students.uniparthenope.it/sites/default/files/images/20122207233020.png\" target=\"_blank\"><img alt=\"\" src=\"http://students.uniparthenope.it/sites/default/files/styles/large/public/images/20122207233020.png\" /></a></p>\r\n<p><u><em>Note</em></u>:<br />\r\n questa classe implementa un codice simile alla precendente, pertanto ci sono delle ridondanze che possono essere risolte (obiettivo futuro). A differenza della precedente, oltre ai tre pulsanti abbiamo una barra di testo in cui scrivere il nome del sorgente a patto che non inizi con un numero (requisito di java).</p>\r\n<p> </p>\r\n<p><strong>NewJarFileD </strong>(creazione file <em>jar </em>con menù)</p>\r\n<pre>\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.io.*;\r\nimport javax.swing.*;\r\n\r\npublic class NewJarFileD{\r\n int i,setNext=0;\r\n String codePathFile,codeTitleFile;\r\n ReadFile read;\r\n List loadedFile=new List(2,false);\r\n List loadedPath=new List(2,false);\r\n String setLanguage[];\r\n \r\n //finestre\r\n JDialog pag1=new JDialog();\r\n JDialog pag2=new JDialog();\r\n \r\n JLabel title=new JLabel("",JLabel.CENTER);\r\n JLabel separator=new JLabel("___________________________",JLabel.CENTER);\r\n JLabel authorTitle=new JLabel("",JLabel.CENTER);\r\n JTextField author=new JTextField(20);\r\n JLabel mainFileTitle=new JLabel("",JLabel.CENTER);\r\n JTextField mainFile=new JTextField(20);\r\n \r\n //bottoni\r\n JButton b_addElem=new JButton("");\r\n JButton b_delElem=new JButton("");\r\n JButton b_cancels=new JButton("");\r\n JButton b_next=new JButton("");\r\n JButton b_back=new JButton("");\r\n \r\n //layout\r\n JPanel p1=new JPanel(new FlowLayout());\r\n JPanel p2=new JPanel(new FlowLayout(FlowLayout.CENTER,5,10));\r\n JPanel p3=new JPanel(new GridLayout(2,1));\r\n JPanel p4=new JPanel(new GridLayout(5,1));\r\n JPanel p5=new JPanel(new FlowLayout(FlowLayout.CENTER,5,10));\r\n JPanel p6=new JPanel(new FlowLayout(FlowLayout.CENTER,5,10));\r\n \r\n public NewJarFileD(){ \r\n File Dir=new File("jar");\r\n if(Dir.isDirectory()==true)\r\n delDir();\r\n new File("jar").mkdir(); \r\n \r\n //azioni\r\n b_addElem.addActionListener(new Ab_addElem());\r\n b_delElem.addActionListener(new Ab_delElem());\r\n b_cancels.addActionListener(new Ab_cancels());\r\n b_next.addActionListener(new Ab_next());\r\n b_back.addActionListener(new Ab_back());\r\n \r\n pag1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n pag2.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n changeLanguage();\r\n finestra1D(true);\r\n }\r\n \r\n //carica e cambia la lingua\r\n public void changeLanguage(){\r\n CercaFile CsetFile=new CercaFile(".","settings.mjp",true);\r\n String TsetFile=new String(CsetFile.getListStringFiles(""));\r\n ReadFile setFile=new ReadFile("settings.mjp");\r\n String settings=setFile.getRowReadingFile(0);\r\n ReadFile language=new ReadFile("language/",settings+".lng");\r\n setLanguage= java.util.Arrays.copyOf(language.getReadingFile("\\n"), 41);\r\n \r\n b_addElem.setText(setLanguage[33]); //Aggiungi\r\n b_delElem.setText(setLanguage[34]); //Elimina\r\n b_cancels.setText(setLanguage[8]); //Annulla\r\n b_back.setText(setLanguage[7]); //Indietro\r\n authorTitle.setText(setLanguage[37]); //Autore\r\n mainFileTitle.setText(setLanguage[38]); //Classe Main \r\n }\r\n \r\n //carica prima finestra\r\n public void finestra1D(boolean Svis){\r\n p1.removeAll();\r\n p2.removeAll();\r\n p3.removeAll();\r\n \r\n title.setText(setLanguage[35]); //Scegli i file\r\n b_next.setText(setLanguage[36]); //Avanti\r\n b_next.setEnabled(true);\r\n b_back.setEnabled(false);\r\n \r\n p1.add(b_addElem);\r\n p1.add(b_delElem);\r\n p1.add(b_cancels);\r\n p2.add(b_next);\r\n p2.add(b_back);\r\n p3.add(p1);\r\n p3.add(p2); \r\n \r\n pag1.add(title,BorderLayout.NORTH);\r\n pag1.add(loadedFile,BorderLayout.CENTER);\r\n pag1.add(p3,BorderLayout.SOUTH);\r\n\r\n pag1.setSize(300,300);\r\n pag1.setLocation(100,100);\r\n pag1.setModal(true);\r\n pag1.setVisible(Svis);\r\n }\r\n \r\n //carica seconda finestra\r\n public void finestra2D(boolean Svis){\r\n p1.removeAll();\r\n p2.removeAll();\r\n p3.removeAll();\r\n \r\n title.setText(setLanguage[39]); //Compila il Manifest\r\n b_next.setText(setLanguage[40]); //Crea il file Jar\r\n b_back.setEnabled(true);\r\n \r\n p4.add(separator);\r\n p4.add(authorTitle);\r\n p5.add(author);\r\n p4.add(p5);\r\n p4.add(mainFileTitle);\r\n p6.add(mainFile);\r\n p4.add(p6);\r\n \r\n p1.add(b_cancels);\r\n p2.add(b_next);\r\n p2.add(b_back);\r\n p3.add(p1);\r\n p3.add(p2);\r\n \r\n pag2.add(title,BorderLayout.NORTH);\r\n pag2.add(p4,BorderLayout.CENTER);\r\n pag2.add(p3,BorderLayout.SOUTH);\r\n \r\n pag2.setSize(300,300);\r\n pag2.setLocation(100,100);\r\n pag2.setModal(true);\r\n pag2.setVisible(Svis);\r\n } \r\n \r\n //cancella cartella\r\n public void delDir(){\r\n CercaFile Del=new CercaFile("jar",true);\r\n int len=Del.getListLength();\r\n String DelList[]=java.util.Arrays.copyOf(Del.getListFiles(), len);\r\n for(int j=0;j<len;j++){\r\n System.out.println(DelList[j]);\r\n new File("jar\\\\"+DelList[j]).delete();}\r\n new File("jar").delete();\r\n }\r\n \r\n //azione bottone aggiungi elemento\r\n public class Ab_addElem implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n OpenJFileD ajf=new OpenJFileD("class");\r\n codePathFile=ajf.getPathOpenFile();\r\n codeTitleFile=ajf.getTitleOpenFile();\r\n if(ajf.getIsOpened()==true){\r\n loadedFile.add(codeTitleFile);\r\n loadedPath.add(codePathFile);\r\n i++;\r\n }\r\n }\r\n }\r\n \r\n //azione bottone cancella elemento\r\n public class Ab_delElem implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n int pos=loadedFile.getSelectedIndex();\r\n loadedFile.remove(pos);\r\n loadedPath.remove(pos);\r\n }\r\n }\r\n \r\n //azione bottone annulla\r\n public class Ab_cancels implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n delDir();\r\n finestra1D(false);\r\n finestra2D(false);\r\n }\r\n }\r\n \r\n //azione bottone crea e avanti \r\n public class Ab_next implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n if(setNext==0){\r\n if(i!=0){\r\n setNext=1;\r\n finestra1D(false);\r\n finestra2D(true);\r\n }\r\n }\r\n else{\r\n if((mainFile.getText()).compareTo("")!=0){\r\n for(int j=0;j<i;j++){\r\n codePathFile=loadedPath.getItem(j);\r\n codeTitleFile=loadedFile.getItem(j);\r\n new CopyFile(codePathFile+codeTitleFile,"jar//"+codeTitleFile);\r\n }\r\n NewJFileD njf=new NewJFileD("",true);\r\n codePathFile=njf.getPathOpenFile();\r\n codeTitleFile=njf.getTitleOpenFile();\r\n new SaveFile("jar//","Manifest.txt","Manifest-Version: 1.0\\n"+\r\n "Created-By: "+author.getText()+"\\n"+\r\n "Main-Class: "+mainFile.getText()+"\\n\\n");\r\n new SaveFile("CreateJar.bat","cd jar\\njar cmf Manifest.txt "\r\n +codePathFile+""+codeTitleFile+" *.class\\n"+\r\n "echo file Jar creato\\nexit");\r\n try{ \r\n Process process = Runtime.getRuntime().exec("cmd /c start CreateJar.bat");\r\n read=new ReadFile("jar//","nome_file");\r\n finestra2D(false);\r\n }\r\n catch (IOException e){\r\n b_next.setText("Errore creazione file Jar");\r\n b_next.setEnabled(false);\r\n }\r\n }\r\n }\r\n }\r\n } \r\n \r\n //azione bottone indietro\r\n public class Ab_back implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n finestra2D(false);\r\n finestra1D(true);\r\n setNext=0;\r\n }\r\n }\r\n}\r\n</pre>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122207233130.png\" /><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122207233145.png\" /></p>\r\n<p><u><em>Note</em></u>:<br />\r\n il nome delle classi sopraindicate termina con una '<em>D'</em>, ciò significa implementano delle <em>JDialog </em>modali (cioè finestre che non permettono l'uso del programma chiamante finchè sono aperte). Una delle classi utilizzate è <em>Process</em>, una classe nativa di java che s'interfaccia direttamente col sistema operativo, oltrepassando la <em>Java Virtual Machine</em>. Ciò provoca problemi di portabilità su altre piattaforme, infatti rendere questa classe compatibile con tutti i sistemi operativi è uno degli obiettivi futuri.</p>\r\n<p> </p>\r\n<p> </p>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/109\"><<Make Java Projects - Le Classi (parte 1)</a></p>\r\n<p class=\"rteright\" style=\"\"><a href=\"http://students.uniparthenope.it/?q=node/114\">Make Java Projects - Le Classi (parte 3)>></a><br />\r\n </p>\r\n<h3 class=\"rtecenter\">\r\n <span style=\"font-size:16px;\"><em><a href=\"students.uniparthenope.it/?q=node/103\"><span style=\"color: rgb(0, 0, 205); \">1</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color: rgb(0, 0, 205); \">2</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color: rgb(0, 0, 205); \">3</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><span style=\"color: rgb(255, 0, 0); \">4</span><span style=\"color: rgb(0, 0, 205); \"> </span><span style=\"color: rgb(0, 0, 205); \">- </span><a href=\"http://students.uniparthenope.it/?q=node/114\"><span style=\"color:#0000cd;\">5</span></a><span style=\"color: rgb(0, 0, 255); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color:#0000cd;\">6</span></a><span style=\"color:#0000cd;\"> - </span><span style=\"color:#0000cd;\"><a href=\"http://students.uniparthenope.it/?q=node/119\">7</a> - </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></em></span><br />\r\n </h3>\r\n','','full_html'),('node','blog',0,112,145,'und',0,'<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307090306.png\" /></p>\r\n<p>Salve a tutti amici e colleghi volevo segnalarvi una piccola libreria creata da me con la quale sarà possibile criptare e decriptare dei messaggi di testo .</p>\r\n<p>La libreria CRIPTACLASS può essere utilizzata per tutti i dispositivi apple <img alt=\"smiley\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/regular_smile.gif\" title=\"smiley\" width=\"20\" /></p>\r\n<p>Il suo utilizzo è veramente molto semplice, la prima cosa da fare è scaricarla dal seguente <a href=\"https://github.com/flexkid/CRIPTACLASS\">link</a> .</p>\r\n<p>Ora vi mi mostrerò come potete utilizzare La libreria CRIPTACLASS , per prima cosa bisogna creare un nuovo progetto in xcode , il template che utilizzeremo per questo esempio è il Single View Application </p>\r\n<p><a href=\"/sites/default/files/images/20122307090758.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307090758.png\" /></a></p>\r\n<p> </p>\r\n<p>Terminata la creazione del nuovo progetto il primo passo da compiere è importare la libreria all'interno di esso (semplicemente trasportandola )</p>\r\n<p><a href=\"/sites/default/files/images/20122307091113.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307091113.png\" /></a></p>\r\n<p> </p>\r\n<p><strong>Creazione dell'interfaccia grafica</strong></p>\r\n<p>Rechiamoci presso il file ViewController.xib e inseriamo all'interno della nostra view 2 textfield e 2 pushbutton</p>\r\n<p>il risultato dovrebbe essere simile a questo :</p>\r\n<p><a href=\"/sites/default/files/images/20122307091426.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307091426.png\" /></a></p>\r\n<p> </p>\r\n<p><strong>Dichiarazione degli oggetti </strong></p>\r\n<p>All'interno del file ViewController.h scriviamo il seguente codice :</p>\r\n<p> </p>\r\n<table>\r\n <tbody>\r\n <tr>\r\n </tr>\r\n <tr>\r\n <td class=\"webkit-line-content\">\r\n </td>\r\n </tr>\r\n <tr>\r\n <td class=\"webkit-line-number\">\r\n <p dir=\"rtl\" style=\"\"><span class=\"s1\" style=\"\">#import </span><UIKit/UIKit.h></p>\r\n <p class=\"p1\"><span class=\"s1\">#import </span>"CRIPTACLASS.h"//importiamo la libreria</p>\r\n <p class=\"p2\"><span class=\"s2\">@interface</span><span class=\"s3\"> ViewController : </span>UIViewController<span class=\"s3\"><</span>UITextFieldDelegate<span class=\"s3\">></span></p>\r\n <p class=\"p3\">@property<span class=\"s3\">(</span>nonatomic<span class=\"s3\">,</span>retain<span class=\"s3\">)</span>IBOutlet<span class=\"s3\"> </span><span class=\"s4\">UITextField</span><span class=\"s3\"> *input,*output; </span></p>\r\n <p class=\"p3\">@property<span class=\"s3\">(</span>nonatomic<span class=\"s3\">,</span>retain<span class=\"s3\">)</span><span class=\"s5\">CRIPTACLASS</span><span class=\"s3\"> *criptclass;</span></p>\r\n <p class=\"p4\">-(<span class=\"s2\">IBAction</span>)cript:(<span class=\"s2\">id</span>)sender;</p>\r\n <p class=\"p4\">-(<span class=\"s2\">IBAction</span>)decript:(<span class=\"s2\">id</span>)sender;</p>\r\n <p class=\"p3\">@end</p>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p style=\"\"> </p>\r\n<p><strong>Implementazione del codice</strong></p>\r\n<p class=\"p3\"><strong> </strong>Nel file ViewController.m scriviamo il seguente codice</p>\r\n<p class=\"p3\"> </p>\r\n<table>\r\n <tbody>\r\n <tr>\r\n </tr>\r\n <tr>\r\n <td class=\"webkit-line-content\">\r\n <p class=\"p3\"><span class=\"s1\">@synthesize</span> input,output,criptclass;</p>\r\n <p class=\"p1\">- (<span class=\"s1\">void</span>)viewDidLoad</p>\r\n <p class=\"p1\">{</p>\r\n <p class=\"p2\"><span class=\"s2\"> [</span><span class=\"s1\">super</span><span class=\"s2\"> </span>viewDidLoad<span class=\"s2\">];</span></p>\r\n <p class=\"p3\"><span class=\"s2\"> </span><span class=\"s3\">criptclass</span><span class=\"s2\">=[[</span><span class=\"s3\">CRIPTACLASS</span><span class=\"s2\"> </span><span class=\"s4\">alloc</span><span class=\"s2\">]</span><span class=\"s4\">init</span><span class=\"s2\">];</span>//allochiamo e inizializziamo il nuovo oggetto</p>\r\n <p class=\"p3\">}</p>\r\n <p class=\"p4\">-(<span class=\"s1\">IBAction</span>)cript:(<span class=\"s1\">id</span>)sender{</p>\r\n <p class=\"p3\"><span class=\"s2\"> </span>//richiamiamo il metodo per criptare il testo</p>\r\n <p class=\"p5\"><span class=\"s2\"> </span>output<span class=\"s2\">.</span><span class=\"s5\">text</span><span class=\"s2\"> = [</span>criptclass<span class=\"s2\"> </span><span class=\"s6\">encrypt</span><span class=\"s2\"> :</span>input<span class=\"s2\">.</span><span class=\"s5\">text</span><span class=\"s2\">];</span></p>\r\n <p class=\"p4\"> }</p>\r\n <p class=\"p1\">-(<span class=\"s1\">IBAction</span>)decript:(<span class=\"s1\">id</span>)sender{</p>\r\n <p class=\"p3\"><span class=\"s2\"> </span>//richiamiamo il metodo per decriptare il testo</p>\r\n <p class=\"p5\"><span class=\"s2\"> </span>output<span class=\"s2\">.</span><span class=\"s5\">text</span><span class=\"s2\"> = [</span>criptclass<span class=\"s2\"> </span><span class=\"s6\">decript</span><span class=\"s2\">:</span>input<span class=\"s2\">.</span><span class=\"s5\">text</span><span class=\"s2\">];</span></p>\r\n <p class=\"p4\">}</p>\r\n <p class=\"p1\">-(<span class=\"s1\">BOOL</span>)textFieldShouldReturn:(<span class=\"s5\">UITextField</span> *)textField {</p>\r\n <p class=\"p3\"><span class=\"s2\"> </span>//metodo per la chiudere la tastiera</p>\r\n <p class=\"p2\"><span class=\"s2\">[textField </span>resignFirstResponder<span class=\"s2\">];</span></p>\r\n <p class=\"p6\">return<span class=\"s2\"> </span>YES<span class=\"s2\">;</span></p>\r\n <p class=\"p1\">}</p>\r\n <div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p class=\"p3\">L'ultima operazione da eseguire è il collegamento dei vari oggetti</p>\r\n<p>Quindi tornando all'interno del file ViewController.xib fare un click col tasto destro sul file's owner e fare gli eventuali collegamenti con i vari oggetti :</p>\r\n<p><a href=\"/sites/default/files/images/20122307092707.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307092707.png\" /></a></p>\r\n<p> </p>\r\n<p>Se tutto è andato a buon fine il risultato finale dovrebbe essere simile al seguente :</p>\r\n<p><a href=\"/sites/default/files/images/20122307092845.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307092845.png\" /></a></p>\r\n<p> </p>\r\n<p>Tengo a precisare che questa libreria non utilizza nessun algoritmo "professionale " di cifratura come può essere sha , md5 ecc ma penso che per utilizzi "comuni" sia una buona soluzione.</p>\r\n<p>Grazie a tutti per l'attenzione e buona programmazione </p>\r\n','','full_html'),('node','blog',0,113,146,'und',0,'<p>Dopo aver effettuato numerose prove , mi sono accorto che nonostante l'aumento di velocità di salita dei rettangoli , il gioco risultava comunque troppo semplice ; per questo motivo ho deciso di inserire degli ostacoli al fine di rendere il tutto un pò più ostico al videogiocatore. Ho pensato a queste due nuove aggiunte :<br />\r\n -Incremento della velocità dei rettangoli<br />\r\n -Diminuzione della dimensione dei rettangoli<br />\r\n <br />\r\n Per quanto riguarda il primo aspetto , ricordiamo che i rettangoli si spostano verso l'alto grazie al richiamo del metodo saleRect() (diminuisce la coordinata y del rettangolo di 1) il quale è implementato tramite un timer appositamente creato per lo scopo. Pertanto , la velocità con cui il rettangolo si sposta verso l'alto è data unicamente da quante volte il metodo saleRect() è richiamato nell'unità di tempo. Per raggiungere l'obiettivo di ottenere un cambio di velocità , basta che teniamo in considerazione questo aspetto. Ogni qualvolta un rettangolo appare sulla label , una variabile intera che ho chiamato "timing" incrementa il suo valore di 1. Possiamo usare questa variabile per stabilire quanti rettangoli in totale sono apparsi fino a quel momento ed agire di conseguenza. Quindi , dopo i primi 5 rettangoli apparsi , succederà che il timer che gestiva la velocità dello spostamento dei rettangoli verso l'alto verrà fermato con il metodo stop() della classe Timer e ne verrà fatto partire un altro che stavolta avrà come argomento un valore di millisecondi diverso , nel nostro caso inferiore a quello di prima (ciò per ottenere un aumento della velocità).<br />\r\n A questo punto sorge una domanda : com'è possibile sincronizzare i timer in modo tale da far partire il secondo nel momento esatto in cui il primo ha cessato di agire? Data la natura non dinamia dei timer (dobbiamo essere noi a dichiarare per quanti millisecondi esso effettuerà una certa azione , e ciò deve essere un procedimento statico) , possiamo ricorrere ad un altro metodo della classe timer , il setInitialDelay(). In questo modo possiamo ritardare tramite questo metodo , l'avvio del secondo timer in modo tale che esso parti in concomitanza allo stop del primo.<br />\r\n Grazie a questo procedimento avremo l'effetto desiderato e dopo i primi rettangoli il gioco risulterà un po' più complesso.<br />\r\n <br />\r\n <br />\r\n Vediamo adesso in che modo possiamo riuscire ad ottenere una dimensione dei rettangoli minore. Sappiamo dai post precedenti , che il disegno di tutte le componenti che vivono nel videogioco sono effettuate su label. Ci concentreremo ovviamente sul disegno dei rettangoli : esso avviene tramite la chiamata del metodo drawRoundRect della classe graphics. Sappiamo che i parametri giusti da passare a questo metodo per ottenere il disegno di un rettangolo inarcato alle estremità sono : <br />\r\n <br />\r\n <code style=\"color: rgb(0, 0, 0); \"><b><a href=\"http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/Graphics.html#drawRoundRect(int, int, int, int, int, int)\">drawRoundRect</a></b>(int x, int y, int width, int height, int arcWidth, int arcHeight)</code><span style=\"color: rgb(0, 0, 0); font-family: \'Times New Roman\'; font-size: medium; \"> </span></p>\r\n<p>dove x e y sono le coordinate del vertice in alto a sinistra del rettangolo, width è la lunghezza , height l'altezza , arcWidth è la lunghezza dell'arco che rappresenta il lato sinistro e il lato destro del rettangolo e arcHeight e la relativa altezza. Per raggiungere il nostro scopo , dobbiamo ovviamente tenere in considerazione il campo width. (Dato che ci deve essere una diminuzione di questo valore per ottenere un rettangolo via via più "stretto").<br />\r\n <br />\r\n All'interno del costruttore della classe Rect inizializziamo tutti i campi appena visti ad un valore; nella fattispecie, width avrà il valore di 120. Quando andremo a disegnare i rettangoli che col tempo appariranno sulla label , accederemo in modo diretto a questi valori per ottenere il disegno desiderato. Adesso fermiamoci un attimo : ricordate la variabile timing a cui abbiamo fatto accenno prima (quella che tiene traccia del numero dei rettangoli apparsi sullo schermo) ?<br />\r\n Bene , è proprio di essa che si serviremo ancora. Quando la variabile timing avrà raggiunto un certo valore , allora procediamo a cambiare dinamicamente il valore di width; ciò si effettua banalmente tramite un controllo if-branch.<br />\r\n Pertanto, se timing ad esempio avrà il valore 25 (dall'inizio del gioco sono apparsi 25 rettangoli) allora a width , verrà assegnato un valore più basso. --> if(timing == 25) width=80;<br />\r\n <br />\r\n Si procede così per quante volte vogliamo. Ho deciso di fermare la diminuzione della dimensione a 50 dato che i rettangoli risultavano già abbastanza piccoli.Quindi dopo 50 rettangoli apparsi dall'inizio del gioco avremo la massima diminuzione. --> if(timing==50) width=40;<br />\r\n <br />\r\n Stasera provvederò a postare il codice relativo a questo aggiornamento ed eventualmente qualche screenshot dimostrativo.<br />\r\n <br />\r\n Grazie per l'attenzione , buona giornata<br />\r\n :)</p>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,114,147,'und',0,'<p> </p>\r\n<p>Le classi che migliorano <strong>MJP</strong> sono:</p>\r\n<p> </p>\r\n<p><strong>Browser </strong>(necessario per la ricerca e la visualizzazione della documentazione <em>java </em>da sito <em>Oracle)</em></p>\r\n<pre>\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.io.IOException;\r\nimport javax.swing.*;\r\nimport javax.swing.event.*;\r\nimport javax.swing.text.html.HTMLEditorKit;\r\n\r\npublic class Browser extends JPanel implements HyperlinkListener {\r\n private JEditorPane htmlEditorPane;\r\n private JTextField pageHtml;\r\n private JLabel statusBar=new JLabel(" ");;\r\n private List backList=new List(2,false);\r\n private int i=0;\r\n Image logo=Toolkit.getDefaultToolkit().getImage("images/logo.png");\r\n \r\n JFrame Window=new JFrame();\r\n //bottoni\r\n JButton b_back=new JButton("");\r\n JButton b_exit=new JButton("");\r\n //layout\r\n JPanel p1=new JPanel(new BorderLayout());\r\n JPanel p2=new JPanel(new FlowLayout(FlowLayout.CENTER));\r\n\r\n public Browser(String search){\r\n //azioni\r\n b_back.addActionListener(new Ab_back());\r\n b_exit.addActionListener(new Ab_chiudi());\r\n \r\n String searchR= search.replaceAll(" ", "%20");\r\n htmlEditorPane = createHtmlEditorPane();\r\n backList.add("http://search.oracle.com/search/search?start=1&search_p_main_operator=all&q="+searchR+"% 206&group=Documentation");\r\n pageHtml = new JTextField(backList.getItem(i));\r\n i++;\r\n String url = pageHtml.getText();\r\n loadPage(url);\r\n \r\n //layout\r\n p2.add(b_back);\r\n p2.add(b_exit);\r\n p2.add(pageHtml);\r\n p1.add(p2,BorderLayout.NORTH);\r\n p1.add(new JScrollPane(htmlEditorPane),BorderLayout.CENTER);\r\n p1.add(statusBar,BorderLayout.SOUTH);\r\n p2.setBackground(new Color(255,204,56));\r\n Window.add(p1);\r\n Window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n changeLanguage();\r\n finestra(search);\r\n }\r\n \r\n //carica e cambia lingua\r\n public void changeLanguage(){\r\n CercaFile CsetFile=new CercaFile(".","settings.mjp",true);\r\n String TsetFile=new String(CsetFile.getListStringFiles(""));\r\n ReadFile setFile=new ReadFile("settings.mjp");\r\n String settings=setFile.getRowReadingFile(0);\r\n ReadFile language=new ReadFile("language/",settings+".lng");\r\n String setLanguage[]= java.util.Arrays.copyOf(language.getReadingFile("\\n"), 20);\r\n \r\n b_back.setText(setLanguage[7]); //indietro\r\n b_exit.setText(setLanguage[3]); //chiudi\r\n }\r\n \r\n //caruca finestra\r\n public void finestra(String title){\r\n pageHtml.setEditable(false);\r\n Window.setTitle("Java Doc : "+title);\r\n Window.setSize(500,500);\r\n Window.setLocation(100,100);\r\n Window.setExtendedState(JFrame.MAXIMIZED_BOTH);\r\n Window.setIconImage(logo);\r\n Window.setVisible(true);\r\n }\r\n \r\n //crea contenitore pagina html\r\n protected JEditorPane createHtmlEditorPane() {\r\n JEditorPane editor = new JEditorPane();\r\n editor.setEditorKit(new HTMLEditorKit());\r\n editor.addHyperlinkListener(this);\r\n editor.setEditable(false);\r\n return editor;\r\n }\r\n \r\n //carica link pagina\r\n public void hyperlinkUpdate(HyperlinkEvent event){\r\n if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED){\r\n loadPage(event.getURL().toString());\r\n pageHtml.setText(event.getURL().toString());\r\n backList.add(event.getURL().toString());\r\n b_back.setEnabled(true);\r\n i++;\r\n } \r\n else if (event.getEventType() == HyperlinkEvent.EventType.ENTERED)\r\n statusBar.setText(" "+event.getURL().toString());\r\n else if (event.getEventType() == HyperlinkEvent.EventType.EXITED)\r\n statusBar.setText(" ");\r\n }\r\n \r\n //carica pagina html da intenet \r\n public void loadPage(String url){\r\n super.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));\r\n try{htmlEditorPane.setPage(url);}\r\n catch(IOException ex){JOptionPane.showMessageDialog(null, ex.getMessage() , url, JOptionPane.ERROR_MESSAGE);}\r\n super.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));\r\n }\r\n \r\n //azione bottone indietro\r\n public class Ab_back implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n i--;\r\n if(i>=0){\r\n pageHtml = new JTextField(backList.getItem(i));\r\n statusBar = new JLabel("");\r\n String url = pageHtml.getText();\r\n loadPage(url);\r\n }\r\n else{\r\n i++;\r\n b_back.setEnabled(false);\r\n }\r\n }\r\n }\r\n \r\n //azione bottone chiudi \r\n public class Ab_chiudi implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n Window.setVisible(false);\r\n } \r\n }\r\n}\r\n</pre>\r\n<p class=\"rtecenter\" style=\"\"><a href=\"/sites/default/files/images/20122307161805.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307161805.png\" style=\"height: 300px; width: 600px; \" /></a></p>\r\n<p><u>Note</u>:<br />\r\n questa classe permette la navigazione solo sul sito <em>Oracle </em>nella sezione della documentazione della versione 6, poichè per visualizzare correttamente la versione 7 occorre migliorarla.<br />\r\n Adattando il seguente codice si può creare una qualsiasi finestra di navigazione o un vero e proprio <strong>Browser</strong>.</p>\r\n<p> </p>\r\n<p><strong>ConfirmD </strong>(crea una finestra di conferma per una determinata operazione, ad esempio la chiusura del programma o la sovrascrittura di un file).</p>\r\n<pre>\r\nimport java.awt.*;\r\nimport javax.swing.*;\r\nimport java.awt.event.*;\r\n\r\npublic class ConfirmD{\r\n public boolean state;\r\n Image logo=Toolkit.getDefaultToolkit().getImage("images/logo.png");\r\n \r\n JDialog Window=new JDialog();\r\n JLabel message=new JLabel("testo",JLabel.CENTER);\r\n JPanel chs=new JPanel(new FlowLayout());\r\n JButton b_yes=new JButton("");\r\n JButton b_no=new JButton("");\r\n \r\n public ConfirmD(String str,int x,int y){\r\n //azioni\r\n b_yes.addActionListener(new b_yes());\r\n b_no.addActionListener(new b_no());\r\n \r\n message.setText(str);\r\n\r\n //layout\r\n chs.add(b_yes);\r\n chs.add(b_no);\r\n Window.add(message,BorderLayout.NORTH);\r\n Window.add(chs,BorderLayout.CENTER);\r\n //grafica\r\n message.setBackground(Color.white);\r\n chs.setBackground(Color.white); \r\n \r\n //impostazioni finestra\r\n Window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n changeLanguage();\r\n Window.setIconImage(logo);\r\n Window.setModal(true);\r\n Window.pack();\r\n Window.setSize(220,100);\r\n Window.setLocation(x,y);\r\n Window.setResizable(false);\r\n Window.setVisible(true);\r\n }\r\n \r\n \r\n //carica e cambia lingua\r\n public void changeLanguage(){\r\n CercaFile CsetFile=new CercaFile(".","settings.mjp",true);\r\n String TsetFile=new String(CsetFile.getListStringFiles(""));\r\n ReadFile setFile=new ReadFile("settings.mjp");\r\n String settings=setFile.getRowReadingFile(0);\r\n ReadFile language=new ReadFile("language/",settings+".lng");\r\n String setLanguage[]= java.util.Arrays.copyOf(language.getReadingFile("\\n"), 20);\r\n \r\n b_yes.setText(setLanguage[16]); //si\r\n b_no.setText(setLanguage[17]); //no\r\n }\r\n \r\n //azione bottone si\r\n class b_yes implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n state=true;\r\n Window.setVisible(false);\r\n }\r\n }\r\n \r\n //azione bottone no\r\n class b_no implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n state=false;\r\n Window.setVisible(false);\r\n }\r\n }\r\n \r\n //restituisce la scelta\r\n public boolean getResult(){\r\n return state;\r\n }\r\n}\r\n</pre>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307163309.png\" /> <img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307163318.png\" /></p>\r\n<p><u>Note</u>:<br />\r\n come scritto nell'articolo precedente, la '<em>D</em>' nel nome indica che questa classe implementa una <em>JDialog </em>modale.</p>\r\n<p> </p>\r\n<p><strong>LanguageD </strong>(permette di selezionare la lingua preferita tra le 5 disponibili, ottenute utilizzando <em><a href=\"http://translate.google.it/\">Google Traduttore</a></em> )</p>\r\n<p> </p>\r\n<pre>\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport javax.swing.*;\r\n\r\nclass LanguageD{\r\n JDialog Window=new JDialog();\r\n List language=new List(2,false);\r\n String s_language[],setting;\r\n String titleWin,sub="";\r\n Image logo=Toolkit.getDefaultToolkit().getImage("images/logo.png");\r\n \r\n JLabel l1=new JLabel("Lingua scelta: ");\r\n JLabel labelLanguage=new JLabel("");\r\n JLabel l2=new JLabel("_____________________");\r\n JLabel l3=new JLabel("Cambia lingua in: ");\r\n \r\n //bottoni\r\n JButton b_save = new JButton("");\r\n JButton b_cancels = new JButton("");\r\n\r\n //layout\r\n JPanel p1=new JPanel(new FlowLayout());\r\n JPanel p2=new JPanel(new FlowLayout());\r\n JPanel p3=new JPanel(new FlowLayout());\r\n JPanel p4=new JPanel(new FlowLayout());\r\n JPanel p5=new JPanel(new GridLayout(4,1));\r\n\r\n public LanguageD(){\r\n //cerca le lingue presenti e carica le impostazioni\r\n CercaFile filec=new CercaFile("language/",".lng");\r\n String lang[] = java.util.Arrays.copyOf(filec.getListFiles(), filec.getListFiles().len gth);\r\n s_language=new String[lang.length];\r\n for(int i=0;i<lang.length;i++){\r\n sub=lang[i].substring(0,(lang[i].length()-4));\r\n language.add(sub);\r\n s_language[i]=sub;\r\n }\r\n ReadFile RsetFile=new ReadFile("settings.mjp");\r\n setting=RsetFile.getRowReadingFile(0);\r\n labelLanguage.setText(setting);\r\n \r\n //azioni\r\n language.addItemListener(new selectLanguage());\r\n b_save.addActionListener(new b_save());\r\n b_cancels.addActionListener(new b_cancels());\r\n \r\n //layout\r\n p1.add(l1);\r\n p1.add(labelLanguage);\r\n p2.add(l2);\r\n p3.add(l3);\r\n p3.add(language);\r\n p4.add(b_save);\r\n p4.add(b_cancels);\r\n p5.add(p1);\r\n p5.add(p2);\r\n p5.add(p3);\r\n p5.add(p4);\r\n Window.add(p5);\r\n //\r\n Window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n changeLanguage();\r\n finestraD(true);\r\n }\r\n \r\n //carica e cambia lingua\r\n public void changeLanguage(){\r\n CercaFile CsetFile=new CercaFile(".","settings.mjp",true);\r\n String TsetFile=new String(CsetFile.getListStringFiles(""));\r\n ReadFile setFile=new ReadFile("settings.mjp");\r\n String settings=setFile.getRowReadingFile(0);\r\n ReadFile language=new ReadFile("language/",settings+".lng");\r\n String setLanguage[]= java.util.Arrays.copyOf(language.getReadingFile("\\n"), 20);\r\n \r\n b_save.setText(setLanguage[12]); //salva\r\n b_cancels.setText(setLanguage[8]); //annulla\r\n titleWin=setLanguage[9]; //titolo finestra\r\n l1.setText(setLanguage[10]); //messaggio 1\r\n l3.setText(setLanguage[11]); //messaggio 2\r\n }\r\n \r\n //impostazione finestra\r\n public void finestraD(boolean Svis){\r\n Window.setTitle(titleWin);\r\n Window.setIconImage(logo);\r\n Window.setModal(true);\r\n Window.pack();\r\n Window.setSize(300,300);\r\n final Toolkit toolkit = Toolkit.getDefaultToolkit();\r\n final Dimension screenSize = toolkit.getScreenSize();\r\n final int x = (screenSize.width - Window.getWidth()) / 2;\r\n final int y = (screenSize.height - Window.getHeight()) / 2;\r\n Window.setLocation(x, y);\r\n Window.setResizable(false);\r\n Window.setVisible(Svis);\r\n }\r\n \r\n //azione per selezione lingua\r\n class selectLanguage implements ItemListener{\r\n public void itemStateChanged(ItemEvent e){\r\n int indice=((Integer) e.getItem()).intValue();\r\n labelLanguage.setText(s_language[indice]);\r\n }\r\n }\r\n \r\n //azione bottone salva\r\n class b_save implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n sub=labelLanguage.getText();\r\n finestraD(false);\r\n }\r\n }\r\n \r\n //azione bottone annulla\r\n class b_cancels implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n sub=setting; \r\n finestraD(false);\r\n }\r\n }\r\n \r\n //restituisce lingua impostata\r\n public String setLanguage(){\r\n return sub;\r\n }\r\n}\r\n</pre>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307171413.png\" /></p>\r\n<p><u>Note</u>:<br />\r\n questa classe cambia la lingua indirettamente, ovvero imposta in un file chiamato "<em>settings.mjp</em>" la lingua selezionata, così ogni classe legge dallo stesso file le impostazioni e ricarica la lingua. Tale metodo permette di salvare le impostazioni alla chiusura del programma e di ricaricarle alla riapertura. <br />\r\n <strong>LanguageD</strong>, legge dalla directory language le lingue presenti ("<em>NomeLingua.lng</em>"). In questo modo, è possibile aggiungerne nuove traducendo una delle presenti e salvando il file con estensione ".<em>lng</em>" nella directory language.<br />\r\n Ovviamente anche questa classe può essere implementata in una qualsiasi altra applicazione.</p>\r\n<p> <br />\r\n </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/111\"><<Make Java Projects - Le Classi (parte 2)</a></p>\r\n<p class=\"rteright\" style=\"\"><a href=\"http://students.uniparthenope.it/?q=node/116\">Make Java Projects - Le Classi (parte 4)>></a><br />\r\n </p>\r\n<h3 class=\"rtecenter\">\r\n <span style=\"font-size:16px;\"><em><a href=\"students.uniparthenope.it/?q=node/103\"><span style=\"color:#0000cd;\">1</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color:#0000cd;\">2</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color:#0000cd;\">3</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color:#0000cd;\">4</span></a><span style=\"color:#0000cd;\"> -</span> <span style=\"color: rgb(255, 0, 0); \">5 </span><span style=\"color:#0000cd;\">- </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color:#0000cd;\">6</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/119\"><span style=\"color:#0000cd;\">7</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></em></span><br />\r\n </h3>\r\n','','full_html'),('node','blog',0,115,148,'und',0,'<p>Stamattina ho postato nuovi aggiornamenti relativi all'inserimento dei due ostacoli <br />\r\n -Incremento di velocità dei rettangoli che salgono<br />\r\n -Diminuzione dell'ampiezza dei rettangoli<br />\r\n ;;<br />\r\n <br />\r\n Qui segue il codice relativo all'incremento di velocità , ovvero l'implementazione di tutti i Timer necessari allo scopo (come funzionano nel dettaglio è stato oggetto del precedente post, che indicherò a fine pagina tramite il suo link)</p>\r\n<br />\r\n<br />\r\n<br />\r\n<div>\r\n <pre>\r\n package rapidroll;</pre>\r\n</div>\r\n<div>\r\n </div>\r\n<div>\r\n <pre>\r\nimport javax.swing.*;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.event.ActionEvent;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.event.ActionListener;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.Toolkit;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.event.KeyEvent;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.event.KeyListener;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.Image;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.awt.BorderLayout;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\nimport java.lang.Math;</pre>\r\n</div>\r\n<div>\r\n </div>\r\n<div>\r\n <pre>\r\npublic class Finestra extends JFrame{</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n Pannello p=new Pannello();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n Label la=new Label();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n Timer timersos,timerrefresh,timersale,timerscende,timerrefresh2,timersale2;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n Timer timerPalla;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public Finestra(){</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n super("Rapid Roll!");</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n Image Immagine;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n setSize(500,1000);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n Immagine = Toolkit.getDefaultToolkit().getImage("D:\\\\Documenti\\\\Downloads\\\\rapid.png");</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n this.setIconImage(Immagine);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n this.setVisible(true);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n setResizable(false);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n setVisible(true);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n add(p);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersos=new Timer(3000,new ListenerTimerSos());</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersale=new Timer(7,new ListenerTimerSale());</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersale2=new Timer(5,new ListenerTimerSale2());</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerscende=new Timer(3,new ListenerTimerScende());</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerrefresh2=new Timer(68,new ListenerTimerRefreshsos2());</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerrefresh=new Timer(82,new ListenerTimerRefreshsos());</pre>\r\n</div>\r\n<pre>\r\n</pre>\r\n<div>\r\n <pre>\r\n timerrefresh.setInitialDelay(4000);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerscende.setInitialDelay(4000);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersos.start();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerscende.start();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerrefresh.start();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerrefresh2.setInitialDelay(18000);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersale2.setInitialDelay(18000);</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersale2.start();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timerrefresh2.start();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n timersale.start();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n this.addKeyListener(new listenermov());</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public class ListenerTimerSos implements ActionListener{</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void actionPerformed(ActionEvent ae) {</pre>\r\n</div>\r\n<pre>\r\n</pre>\r\n<div>\r\n p.la.sostegno.compari();</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n // if(p.la.sostegno.timing%4==0 && p.la.sostegno.timing>0) p.la.vite.compariVita(); </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <pre>\r\n public class ListenerTimerScende implements ActionListener{</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void actionPerformed(ActionEvent ae){</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(p.la.io.down==true) p.la.io.scende();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public class ListenerTimerSale implements ActionListener{ </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void actionPerformed(ActionEvent ae){ </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if (p.la.io.down==false) p.la.io.sale();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(p.la.sostegno.timing==5) timersale.stop();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public class ListenerTimerSale2 implements ActionListener{ </pre>\r\n</div>\r\n<pre>\r\n</pre>\r\n<div>\r\n </div>\r\n<div>\r\n <pre>\r\n public void actionPerformed(ActionEvent ae){ </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if (p.la.io.down==false) p.la.io.sale();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public class ListenerTimerRefreshsos implements ActionListener{</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void actionPerformed(ActionEvent ae) {</pre>\r\n</div>\r\n<pre>\r\n</pre>\r\n<div>\r\n <pre>\r\n p.la.sostegno.saleRect();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(p.la.sostegno.timing==5) timerrefresh.stop();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public class ListenerTimerRefreshsos2 implements ActionListener{</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void actionPerformed(ActionEvent ae) {</pre>\r\n</div>\r\n<pre>\r\n</pre>\r\n<div>\r\n <pre>\r\n p.la.sostegno.saleRect();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public class listenermov implements KeyListener{</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n boolean destra=false,sinistra=false,giu=false,sinistra2=false,destra2=false;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void keyTyped(KeyEvent ke) {</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n //non si puo' fare override di metodi , nel senso che keytyped non si puo' omettere e neanche keypressed e key released. Ce lo mettiamo ma è inutile</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void keyPressed(KeyEvent ke) { </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n char c=ke.getKeyChar();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(c=='a') sinistra=true;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(c=='d') destra=true;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(sinistra==true){ p.la.io.muovesinistra(); p.la.repaint(); }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(destra==true){ p.la.io.muovedestra(); p.la.repaint(); } </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n muro(); p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n muro2(); p.la.repaint();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void keyReleased(KeyEvent ke){</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n char c=ke.getKeyChar();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if (c=='a') sinistra=false;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if (c=='d') destra=false;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void muro(){</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(p.la.io.xLinea<=0) sinistra2=true;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(sinistra2) {</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.io.muovedestra();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n sinistra2=false;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n public void muro2(){</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(p.la.io.xLinea2>=p.la.getWidth()) destra2=true;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n if(destra2){ </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n p.la.io.muovesinistra();</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n destra2=false;</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n <p> </p>\r\n <p>Mentre invece il codice relativo alla dimunzione di ampiezza dei rettangoli risiede nella classe Rect :</p>\r\n <br />\r\n <br />\r\n <br />\r\n <br />\r\n <div>\r\n <pre>\r\n package rapidroll;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n import javax.swing.*;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n import java.awt.Color;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n import java.util.*;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public class Rect {</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n sos[] arrayRect;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n Label mylab;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int width,height,arcWidth,arcHeight;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int timing,cont;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int actualrect;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public Rect(Label mylab)</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n {</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n timing=-1;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n cont=0;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n width=120;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n height=20;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n arcWidth=20;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n arcHeight=15;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n actualrect=0;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n this.mylab=mylab;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n arrayRect=new sos[200]; </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public void saleRect()</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n {</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n int i;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n for(i=0;i<arrayRect.length;i++)</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(arrayRect[i]!=null){</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n arrayRect[i].yRect-=10;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(mylab.io.down==true){</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(arrayRect[i].yRect-mylab.io.yLinea<10 && mylab.io.xLinea-arrayRect[i].xRect>-5 && mylab.io.xLinea-arrayRect[i].xRect<120 && arrayRect[i].yRect>400 && mylab.io.yCord<arrayRect[i].yRect){</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n mylab.io.down=false;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n actualrect=i; </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n mylab.punteggio+=10;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public void compari()</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n {</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n int k;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n for(k=0;k<arrayRect.length;k++)</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(arrayRect[k]==null) break;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(k>=arrayRect.length) k=arrayRect.length-2; </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n for(int p=k-1;p>=0;p--) arrayRect[p+1]=arrayRect[p];</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n arrayRect[0]=new sos(); </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n timing++;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(timing==25) width=80;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n if(timing==50) width=40;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public class sos{</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int xRect;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int yRect;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int larghezza;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int altezza;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int larghezzaArco;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public int altezzaArco;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public Color mycolour;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n public sos(){</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n mycolour=Color.BLUE;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n this.larghezza=120;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n this.altezza=20;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n this.larghezzaArco=20;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n this.altezzaArco=15;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n xRect=5+(int)(Math.random()*450);</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n yRect=950;</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <div>\r\n <pre>\r\n }</pre>\r\n </div>\r\n <div>\r\n <pre>\r\n </pre>\r\n </div>\r\n <br />\r\n <br />\r\n </div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n }</pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<div>\r\n <pre>\r\n </pre>\r\n</div>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,116,149,'und',0,'<p> </p>\r\n<p>Infine, la principale e l’ultima classe <strong>MJP</strong>, implementa le operazioni di compilazione, l’esecuzione e l’interfaccia grafica. Della compilazione se ne occupa la classe <em>JavaCompiler </em> col metodo <em>run</em>, che permette di compilare un sorgente java senza aprire un altro processo, ma sfruttando lo stesso della classe chiamante (condizione necessaria per poter reindirizzare gli errori e quindi poterli leggere nel programma).</p>\r\n<p>L’esecuzione, invece, è gestita dalla classe <em>Process</em> che, come detto in precedenza, oltrepassa la <em>Java Virtual Machine</em>, interfacciandosi direttamente con il sistema operativo, riscontrando spesso problemi di portabilità.</p>\r\n<p> </p>\r\n<p><strong>MJP</strong></p>\r\n<p> </p>\r\n<pre>\r\nimport java.awt.*;\r\nimport java.awt.event.*;\r\nimport java.awt.image.*;\r\nimport java.io.*;\r\nimport java.net.*;\r\nimport java.util.*;\r\nimport java.util.Date;\r\nimport javax.swing.*;\r\nimport javax.swing.JScrollPane.*;\r\nimport javax.swing.border.*;\r\nimport javax.tools.JavaCompiler;\r\nimport javax.tools.ToolProvider;\r\n\r\npublic class MJP{\r\n private boolean act=false,visible=false;\r\n private boolean setAp,display;\r\n private int locX,locY;\r\n private int sizeX,sizeY;\r\n private CercaFile CsetFile;\r\n private String TsetFile,sub;\r\n private ReadFile setFile,language;\r\n private String settings[],setLanguage[]; \r\n private String osname=System.getProperty("os.name");\r\n int osnameInt;\r\n \r\n JFrame Window=new JFrame();\r\n Image logo=Toolkit.getDefaultToolkit().getImage("images/logo.png");\r\n \r\n Color NewCian=new Color(100,157,213);\r\n Color NewOrange=new Color(255,204,56);\r\n \r\n //Menu\r\n JMenuBar bar=new JMenuBar();\r\n //Menu->File\r\n JMenu m_file=new JMenu("File");\r\n JMenuItem mi_new=new JMenuItem("");\r\n JMenuItem mi_newApp=new JMenuItem("");\r\n JMenuItem mi_open=new JMenuItem("");\r\n JMenuItem mi_close=new JMenuItem("");\r\n JMenuItem mi_exit=new JMenuItem("");\r\n //Menu->Opzioni\r\n JMenu m_options=new JMenu("");\r\n JMenuItem mi_language=new JMenuItem("");\r\n \r\n //icone->bottoni->strumenti\r\n ImageIcon i_saveAs = new ImageIcon("images/saveAs.png");\r\n ImageIcon i_save = new ImageIcon("images/save.png");\r\n ImageIcon i_compile = new ImageIcon("images/compile.png");\r\n ImageIcon i_exec = new ImageIcon("images/exec.png");\r\n ImageIcon i_jar = new ImageIcon("images/jar.png");\r\n ImageIcon i_deleteFile = new ImageIcon("images/deleteFile.png");\r\n ImageIcon i_display1 = new ImageIcon("images/display1.png"); \r\n ImageIcon i_display2 = new ImageIcon("images/display2.png"); \r\n ImageIcon i_search = new ImageIcon("images/search.png");\r\n ImageIcon i_delete = new ImageIcon("images/delete.png");\r\n \r\n ImageIcon i_saveAsRoll = new ImageIcon("images/saveAsRoll.png");\r\n ImageIcon i_saveRoll = new ImageIcon("images/saveRoll.png");\r\n ImageIcon i_compileRoll = new ImageIcon("images/compileRoll.png");\r\n ImageIcon i_execRoll = new ImageIcon("images/execRoll.png");\r\n ImageIcon i_jarRoll = new ImageIcon("images/jarRoll.png");\r\n ImageIcon i_deleteFileRoll = new ImageIcon("images/deleteFileRoll.png");\r\n ImageIcon i_displayRoll = new ImageIcon("images/displayRoll.png");\r\n ImageIcon i_searchRoll = new ImageIcon("images/searchRoll.png");\r\n ImageIcon i_deleteRoll = new ImageIcon("images/deleteRoll.png");\r\n \r\n //bottoni->strumenti\r\n JButton b_saveAs=new JButton(i_saveAs);\r\n JButton b_save=new JButton(i_save);\r\n JButton b_compile=new JButton(i_compile);\r\n JButton b_exec=new JButton(i_exec);\r\n JButton b_jar=new JButton(i_jar);\r\n JButton b_deleteFile=new JButton(i_deleteFile);\r\n JButton b_display=new JButton(i_display1); \r\n \r\n //layout\r\n JPanel strumenti=new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 10));\r\n JPanel p1=new JPanel(new GridLayout(1,2));\r\n JPanel p2=new JPanel(new GridLayout(2,1));\r\n \r\n //codice\r\n JLabel codeTitle=new JLabel("");\r\n JScrollPane scrollCode;\r\n JTextArea code=new JTextArea();\r\n JPanel p3=new JPanel(new BorderLayout());\r\n JPanel p4=new JPanel(new FlowLayout(FlowLayout.LEFT));\r\n String codeTitleFile;\r\n String codePathFile;\r\n \r\n //report\r\n JLabel reportTitle=new JLabel("");\r\n JTextArea report=new JTextArea();\r\n JScrollPane scrollReport;\r\n JPanel p7=new JPanel(new BorderLayout());\r\n JPanel p8=new JPanel(new FlowLayout(FlowLayout.LEFT));\r\n \r\n //notes \r\n JLabel notesTitle=new JLabel("Notes");\r\n JButton b_deleteNotes=new JButton(i_delete);\r\n JTextArea notes=new JTextArea();\r\n JScrollPane scrollNotes;\r\n JPanel p9=new JPanel(new BorderLayout()); \r\n JPanel p10=new JPanel(new FlowLayout(FlowLayout.LEFT));\r\n String notesTitleFile;\r\n \r\n //ricerca\r\n JLabel searchTitle=new JLabel("");\r\n JButton b_search=new JButton(i_search);\r\n TextField search=new TextField(20);\r\n JPanel p11=new JPanel(new BorderLayout()); \r\n JPanel p12=new JPanel(new FlowLayout(FlowLayout.LEFT));\r\n JPanel p13=new JPanel(new FlowLayout(FlowLayout.LEFT));\r\n \r\n //crediti\r\n JLabel credits=new JLabel("Di Somma Ciro",JLabel.CENTER);\r\n \r\n public MJP(){\r\n //impostazioni iniziali\r\n LoadSettings(true);\r\n b_save.setEnabled(false);\r\n b_compile.setEnabled(false);\r\n b_exec.setEnabled(false);\r\n b_jar.setEnabled(false);\r\n b_deleteFile.setEnabled(false);\r\n mi_close.setEnabled(false);\r\n act=false;\r\n if(osname.startsWith("Windows")==true)\r\n osnameInt=0;\r\n else if(osname.startsWith("Linux")==true)\r\n osnameInt=1;\r\n \r\n //grafica finestra\r\n final Container c = Window.getContentPane();\r\n c.setBackground(NewCian);\r\n \r\n //azioni menu\r\n mi_new.addActionListener(new Ami_new());\r\n mi_newApp.addActionListener(new Ami_newApp());\r\n mi_open.addActionListener(new Ami_open());\r\n mi_close.addActionListener(new Ami_close());\r\n mi_exit.addActionListener(new Ami_exit());\r\n mi_language.addActionListener(new Ami_language());\r\n\r\n //azioni bottoni\r\n b_saveAs.addActionListener(new Ab_saveAs());\r\n b_save.addActionListener(new Ab_save());\r\n b_compile.addActionListener(new Ab_compile());\r\n b_exec.addActionListener(new Ab_exec());\r\n b_jar.addActionListener(new Ab_jar());\r\n b_deleteFile.addActionListener(new Ab_deleteFile());\r\n b_display.addActionListener(new Ab_display());\r\n b_search.addActionListener(new Ab_search());\r\n\r\n //azioni elementi\r\n code.addKeyListener(new A_code());\r\n b_deleteNotes.addActionListener(new Ab_deleteNotes());\r\n notes.addKeyListener(new A_save_notes());\r\n Window.addWindowListener(new WindowReturn());\r\n\r\n //file\r\n m_file.add(mi_new);\r\n m_file.add(mi_newApp);\r\n m_file.add(mi_open);\r\n m_file.add(mi_close);\r\n m_file.addSeparator();\r\n m_file.add(mi_exit);\r\n //grafica->file\r\n mi_new.setBackground(Color.white);\r\n mi_newApp.setBackground(NewOrange);\r\n mi_open.setBackground(Color.white);\r\n mi_close.setBackground(NewOrange);\r\n mi_exit.setBackground(Color.white); \r\n \r\n //opzioni\r\n m_options.add(mi_language);\r\n //grafica->opzioni\r\n mi_language.setBackground(Color.white);\r\n \r\n //barra\r\n bar.add(m_file);\r\n bar.add(m_options);\r\n Window.setJMenuBar(bar);\r\n //grafica->barra\r\n bar.setBackground(NewOrange);\r\n \r\n //strumenti\r\n strumenti.add(b_saveAs);\r\n strumenti.add(b_save);\r\n strumenti.add(b_compile);\r\n if(osnameInt==0){ //windows\r\n strumenti.add(b_exec);\r\n strumenti.add(b_jar);\r\n }\r\n strumenti.add(b_deleteFile);\r\n strumenti.add(b_display);\r\n //grafica->strumenti\r\n strumenti.setBackground(NewCian);\r\n \r\n //codice\r\n code.setBorder(BorderFactory.createLoweredBevelBorder());\r\n code.setFont(new Font("Arial",Font.PLAIN,17));\r\n scrollCode=new JScrollPane(code,\r\n JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,\r\n JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);\r\n p4.add(codeTitle);\r\n p3.add(p4,BorderLayout.NORTH);\r\n p3.add(scrollCode,BorderLayout.CENTER);\r\n //grafica->codice\r\n codeTitle.setForeground(Color.white);\r\n codeTitle.setFont(new Font("Verdana",Font.PLAIN,18));\r\n \r\n //report\r\n report.setBorder(BorderFactory.createLoweredBevelBorder());\r\n report.setEditable(false);\r\n report.setBackground(new Color(233,233,233));\r\n report.setFont(new Font("Times New Roman",Font.PLAIN,15));\r\n scrollReport=new JScrollPane(report,\r\n JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,\r\n JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);\r\n p8.add(reportTitle);\r\n p7.add(p8,BorderLayout.NORTH);\r\n p7.add(scrollReport,BorderLayout.CENTER);\r\n //grafica->report\r\n reportTitle.setForeground(Color.white);\r\n reportTitle.setFont(new Font("Verdana",Font.PLAIN,18));\r\n \r\n //notes\r\n scrollNotes=new JScrollPane(notes,\r\n JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,\r\n JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);\r\n p10.add(notesTitle);\r\n p10.add(b_deleteNotes);\r\n p9.add(p10,BorderLayout.NORTH);\r\n p9.add(scrollNotes,BorderLayout.CENTER); \r\n //notes->grafica\r\n notes.setBorder(BorderFactory.createLoweredBevelBorder());\r\n notes.setFont(new Font("Arial",Font.ITALIC,15));\r\n notes.setBackground(new Color(254,228,151));\r\n notesTitle.setForeground(Color.white);\r\n notesTitle.setFont(new Font("Verdana",Font.PLAIN,18));\r\n \r\n //ricerca\r\n //ricerca->grafica\r\n searchTitle.setForeground(Color.white);\r\n searchTitle.setFont(new Font("Verdana",Font.PLAIN,13));\r\n\r\n //crediti\r\n //crediti->grafica\r\n credits.setForeground(Color.white);\r\n credits.setFont(new Font("Verdana",Font.PLAIN,13));\r\n \r\n //bottoni\r\n //bottoni->grafica \r\n b_saveAs.setBackground(NewCian);\r\n b_saveAs.setBorder(BorderFactory.createEmptyBorder());\r\n b_saveAs.setRolloverIcon(i_saveAsRoll);\r\n b_saveAs.setPreferredSize(new Dimension(80,60));\r\n \r\n b_save.setBackground(NewCian);\r\n b_save.setBorder(BorderFactory.createEmptyBorder());\r\n b_save.setRolloverIcon(i_saveRoll);\r\n b_save.setPreferredSize(new Dimension(80,60));\r\n \r\n b_compile.setBackground(NewCian);\r\n b_compile.setBorder(BorderFactory.createEmptyBorder());\r\n b_compile.setRolloverIcon(i_compileRoll);\r\n b_compile.setPreferredSize(new Dimension(80,60));\r\n \r\n b_exec.setBackground(NewCian);\r\n b_exec.setBorder(BorderFactory.createEmptyBorder());\r\n b_exec.setRolloverIcon(i_execRoll);\r\n b_exec.setPreferredSize(new Dimension(80,60));\r\n \r\n b_jar.setBackground(NewCian);\r\n b_jar.setBorder(BorderFactory.createEmptyBorder());\r\n b_jar.setRolloverIcon(i_jarRoll); \r\n b_jar.setPreferredSize(new Dimension(80,60));\r\n \r\n b_deleteFile.setBackground(NewCian);\r\n b_deleteFile.setBorder(BorderFactory.createEmptyBorder());\r\n b_deleteFile.setRolloverIcon(i_deleteFileRoll); \r\n b_deleteFile.setPreferredSize(new Dimension(80,60));\r\n \r\n b_display.setBackground(NewCian);\r\n b_display.setBorder(BorderFactory.createEmptyBorder());\r\n b_display.setRolloverIcon(i_displayRoll);\r\n b_display.setPreferredSize(new Dimension(80,60));\r\n \r\n b_search.setBackground(NewCian);\r\n b_search.setBorder(BorderFactory.createEmptyBorder());\r\n b_search.setRolloverIcon(i_searchRoll);\r\n \r\n b_deleteNotes.setBackground(NewCian);\r\n b_deleteNotes.setBorder(BorderFactory.createEmptyBorder());\r\n b_deleteNotes.setRolloverIcon(i_deleteRoll);\r\n \r\n //layout \r\n p12.add(searchTitle);\r\n p13.add(search);\r\n p13.add(b_search);\r\n p11.add(p12,BorderLayout.NORTH);\r\n p11.add(p13,BorderLayout.CENTER);\r\n strumenti.add(p11);\r\n p1.add(p3);\r\n p2.add(p7);\r\n p2.add(p9);\r\n p1.add(p2);\r\n Window.add(strumenti,BorderLayout.NORTH);\r\n Window.add(p1,BorderLayout.CENTER);\r\n Window.add(credits,BorderLayout.SOUTH);\r\n //layout->grafica\r\n p1.setBackground(NewCian);\r\n p2.setBackground(NewCian);\r\n p3.setBackground(NewCian);\r\n p4.setBackground(NewCian);\r\n p7.setBackground(NewCian);\r\n p8.setBackground(NewCian);\r\n p9.setBackground(NewCian);\r\n p10.setBackground(NewCian);\r\n p11.setBackground(NewCian);\r\n p12.setBackground(NewCian);\r\n p13.setBackground(NewCian);\r\n \r\n changeLanguage();\r\n MJPDisplay();\r\n }\r\n \r\n //carica impostazioni\r\n public void LoadSettings(boolean LoadAll){\r\n if(osnameInt==0) \r\n CsetFile=new CercaFile(".","settings.mjp",false);\r\n else\r\n CsetFile=new CercaFile("","settings.mjp",false);\r\n \r\n if(CsetFile.getResult()==false){\r\n if(osnameInt==0)\r\n new SaveFile("settings.mjp","Italiano\\ntrue\\n190\\n51\\n850\\n"+\r\n "600\\nnull\\nnull\\nnull\\nnull\\n");\r\n else\r\n new SaveFile("","settings.mjp","Italiano\\ntrue\\n190\\n51\\n"+\r\n "850\\n600\\nnull\\nnull\\nnull\\nnull\\n");\r\n setFile=new ReadFile("","settings.mjp");\r\n settings= Arrays.copyOf(setFile.getReadingFile("\\n"), 10);}\r\n else{\r\n setFile=new ReadFile("settings.mjp");\r\n settings= Arrays.copyOf(setFile.getReadingFile("\\n"), 10);\r\n }\r\n if(LoadAll==true){\r\n language=new ReadFile("language/",settings[0]+".lng");\r\n display=Boolean.parseBoolean(settings[1]);\r\n setLanguage= Arrays.copyOf(language.getReadingFile("\\n"), 33);\r\n changeLanguage();\r\n }\r\n locX=Integer.parseInt(settings[2]);\r\n locY=Integer.parseInt(settings[3]);\r\n sizeX=Integer.parseInt(settings[4]);\r\n sizeY=Integer.parseInt(settings[5]);\r\n try {System.setErr(new PrintStream(new FileOutputStream("SystemError.mjp")));} \r\n catch (FileNotFoundException ex){ex.printStackTrace();} \r\n Window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r\n }\r\n \r\n \r\n //carica e cambia lingua\r\n public void changeLanguage(){\r\n TitledBorder border;\r\n border=BorderFactory.createTitledBorder("");\r\n \r\n mi_new.setText(setLanguage[1]); //nuovo\r\n mi_newApp.setText(setLanguage[22]); //nuovo applet\r\n mi_open.setText(setLanguage[2]); //apri\r\n mi_close.setText(setLanguage[3]); //chiudi\r\n mi_exit.setText(setLanguage[4]); //esci\r\n m_options.setText(setLanguage[5]); //opzioni\r\n mi_language.setText(setLanguage[6]); //lingua\r\n codeTitle.setText(setLanguage[13]); //titolo codice\r\n searchTitle.setText(setLanguage[14]); //titolo cerca\r\n reportTitle.setText(setLanguage[15]); //titolo errori\r\n \r\n //salva con\r\n border=BorderFactory.createTitledBorder(setLanguage[26]); \r\n b_saveAs.setBorder(border);\r\n //salva\r\n border=BorderFactory.createTitledBorder(setLanguage[12]);\r\n b_save.setBorder(border);\r\n //compila\r\n border=BorderFactory.createTitledBorder(setLanguage[27]);\r\n b_compile.setBorder(border);\r\n //esegui\r\n border=BorderFactory.createTitledBorder(setLanguage[28]);\r\n b_exec.setBorder(border);\r\n //jarizza\r\n border=BorderFactory.createTitledBorder(setLanguage[29]);\r\n b_jar.setBorder(border);\r\n //cancella\r\n border=BorderFactory.createTitledBorder(setLanguage[30]);\r\n b_deleteFile.setBorder(border);\r\n //cambia\r\n border=BorderFactory.createTitledBorder(setLanguage[31]);\r\n b_display.setBorder(border);\r\n } \r\n \r\n //cambio visualizzazione\r\n public void MJPDisplay(){\r\n if(display==true)\r\n fullWin();\r\n else\r\n minWin();\r\n display=!display;\r\n Window.setTitle("Make a Java Project 1.0");\r\n Window.setBackground(Color.white);\r\n Window.setIconImage(logo);\r\n }\r\n\r\n //finestra minimizzata\r\n public void minWin(){\r\n Window.setLocation(locX,locY);\r\n Window.setSize(1000,150);\r\n Window.setResizable(false);\r\n Window.setVisible(true);\r\n visible=true;\r\n b_display.setIcon(i_display2);\r\n if(act==true){\r\n new SaveFile(codePathFile,codeTitleFile,code.getText());\r\n b_compile.setEnabled(true);\r\n b_save.setEnabled(false);\r\n }\r\n }\r\n \r\n //finestra piena\r\n public void fullWin(){\r\n Window.setLocation(locX,locY);\r\n Window.setSize(sizeX,sizeY);\r\n Window.setResizable(true);\r\n Window.setVisible(true);\r\n visible=true;\r\n b_display.setIcon(i_display1);\r\n if(act==true)\r\n openFile();\r\n }\r\n \r\n //salva impostazioni\r\n public void SaveSettings(boolean SaveAll){\r\n if(SaveAll==true){\r\n sub=""+!display;\r\n settings[1]=sub;\r\n }\r\n sub=""+((int)Window.getLocation().getX());\r\n settings[2]=sub;\r\n sub=""+((int)Window.getLocation().getY());\r\n settings[3]=sub;\r\n if(!display==true){\r\n sub=""+((int)Window.getWidth());\r\n settings[4]=sub;\r\n sub=""+((int)Window.getHeight());\r\n settings[5]=sub;\r\n }\r\n sub="";\r\n for(int i=0;i<10;i++)\r\n sub=sub+settings[i]+"\\n";\r\n if(osnameInt==0) \r\n new SaveFile("settings.mjp",sub);\r\n else\r\n new SaveFile("","settings.mjp",sub);\r\n }\r\n\r\n //compila\r\n public int MJPCompile(String file){\r\n int result;\r\n try{\r\n JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();\r\n result = compiler.run(null, null, null,file);\r\n }\r\n catch(Exception ex){result=-1;}\r\n return result;\r\n }\r\n \r\n //esegui\r\n public void MJPExec(String Path, String file, boolean set){\r\n //windows\r\n if(osnameInt==0){\r\n try{ \r\n int lenFile=file.length();\r\n String sub=file.substring(0,lenFile-5);\r\n if(set==false){\r\n String outCode="@echo off\\ncd "+Path+"\\njava "+sub+"\\necho.\\necho.\\npause\\nexit";\r\n new SaveFile("SystemOut.bat",outCode);\r\n Process process = Runtime.getRuntime().exec("cmd /c start SystemOut.bat");\r\n }\r\n else{\r\n String outCode="@echo off\\ncd "+Path+"\\necho "+setLanguage[23]+\r\n "\\nappletviewer "+sub+".html\\necho.\\necho.\\npause\\nexit";\r\n new SaveFile("SystemOut.bat",outCode);\r\n Process process = Runtime.getRuntime().exec("cmd /c start SystemOut.bat");\r\n }\r\n }\r\n catch (IOException e){report.setText(setLanguage[24]);}\r\n }\r\n //altri S.O.\r\n else\r\n report.setText(setLanguage[32]);\r\n }\r\n \r\n //apertura file\r\n public void openFile(){\r\n String subNotes=codeTitleFile.substring(0,codeTitleFile.length()-5);\r\n notesTitleFile="notes\\\\"+subNotes+".txt";\r\n ReadFile rfCode=new ReadFile(codePathFile,codeTitleFile);\r\n act=true;\r\n b_compile.setEnabled(true);\r\n b_exec.setEnabled(true);\r\n b_jar.setEnabled(true);\r\n b_deleteFile.setEnabled(true);\r\n codeTitle.setText(codeTitleFile);\r\n code.setText(rfCode.getStringToReadingFile());\r\n ReadFile rfNotes=new ReadFile(notesTitleFile);\r\n notes.setText(rfNotes.getStringToReadingFile());\r\n try {System.setErr(new PrintStream(new FileOutputStream("SystemError.mjp")));} \r\n catch (FileNotFoundException ex){ex.printStackTrace();}\r\n }\r\n \r\n //chiusura file\r\n public void chiudiFile(){\r\n code.setText("");\r\n notes.setText("");\r\n report.setText("");\r\n codePathFile="";\r\n codeTitleFile="file.error";\r\n codeTitle.setText(setLanguage[13]);\r\n notesTitleFile="";\r\n act=false;\r\n b_save.setEnabled(false);\r\n b_compile.setEnabled(false);\r\n b_exec.setEnabled(false);\r\n b_jar.setEnabled(false);\r\n b_deleteFile.setEnabled(false);\r\n mi_close.setEnabled(false);\r\n } \r\n \r\n public void chiudiMJP(){\r\n ConfirmD exitC=new ConfirmD(setLanguage[25],100,100);\r\n if(exitC.getResult()==true){\r\n SaveSettings(true);\r\n System.exit(0);\r\n }\r\n }\r\n \r\n //****************** azioni menu *******************************/\r\n\r\n //azione Menu->File->Nuovo\r\n public class Ami_new implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n NewJFileD njf=new NewJFileD("",false);\r\n codePathFile=njf.getPathOpenFile();\r\n codeTitleFile=njf.getTitleOpenFile();\r\n if(njf.getIsCreated()==true){\r\n setAp=false;\r\n mi_close.setEnabled(true);\r\n openFile();\r\n }\r\n }\r\n }\r\n \r\n //azione Menu->File->Nuovo Applet\r\n public class Ami_newApp implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n NewJFileD njf=new NewJFileD("",false);\r\n codePathFile=njf.getPathOpenFile();\r\n codeTitleFile=njf.getTitleOpenFile();\r\n if(njf.getIsCreated()==true){\r\n String sub=codeTitleFile.substring(0,codeTitleFile.length()-5);\r\n String codeHtml="<html><head><title>"+sub+\r\n "</title></head><body>"+"<APPLET code="+sub+".class "+\r\n "width=385 height=100></APPLET></body></html>";\r\n new SaveFile(codePathFile,sub+".html",codeHtml);\r\n setAp=true;\r\n mi_close.setEnabled(true);\r\n openFile();\r\n }\r\n }\r\n }\r\n \r\n //azione Menu->File->Apri\r\n public class Ami_open implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n OpenJFileD ajf=new OpenJFileD("java");\r\n codePathFile=ajf.getPathOpenFile();\r\n codeTitleFile=ajf.getTitleOpenFile();\r\n String sub=codeTitleFile.substring(0,codeTitleFile.length()-5);\r\n if(ajf.getIsOpened()==true){\r\n openFile();\r\n mi_close.setEnabled(true);\r\n }\r\n CercaFile isApp=new CercaFile(codePathFile,sub+".html",false);\r\n if(isApp.getResult()==true)\r\n setAp=true;\r\n else\r\n setAp=false;\r\n }\r\n }\r\n \r\n //azione Menu->File->Chiudi\r\n public class Ami_close implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n chiudiFile();\r\n }\r\n }\r\n \r\n //azione Menu->File->Esci\r\n public class Ami_exit implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n chiudiMJP();\r\n }\r\n }\r\n \r\n //azione Menu->Opzioni->Lingua\r\n public class Ami_language implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n LanguageD languageD=new LanguageD();\r\n sub=languageD.setLanguage();\r\n settings[0]=sub;\r\n SaveSettings(true);\r\n LoadSettings(true);\r\n }\r\n }\r\n\r\n //**************** azioni barra strumenti ************/\r\n \r\n //azione salva con nome\r\n public class Ab_saveAs implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n NewJFileD njf=new NewJFileD(code.getText(),false);\r\n codeTitleFile=njf.getTitleOpenFile();\r\n codePathFile=njf.getPathOpenFile();\r\n if(njf.getIsCreated()==true){\r\n codeTitle.setText(codeTitleFile);\r\n b_compile.setEnabled(true);\r\n b_exec.setEnabled(true);\r\n b_jar.setEnabled(true);\r\n b_deleteFile.setEnabled(true);\r\n mi_close.setEnabled(true);\r\n act=true;\r\n }\r\n }\r\n }\r\n \r\n //azione salva\r\n public class Ab_save implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n new SaveFile(codePathFile,codeTitleFile,code.getText());\r\n b_compile.setEnabled(true);\r\n b_save.setEnabled(false);\r\n }\r\n } \r\n \r\n //azione compila\r\n public class Ab_compile implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n int result;\r\n if(osnameInt==0)\r\n result=MJPCompile(codePathFile+"\\\\"+codeTitleFile);\r\n else\r\n result=MJPCompile(codePathFile+""+codeTitleFile);\r\n \r\n if(result==0)\r\n report.setText(setLanguage[20]);\r\n else if(result==-1)\r\n report.setText(setLanguage[21]);\r\n else{\r\n ReadFile ts=new ReadFile("SystemError.mjp");\r\n report.setText(ts.getStringToReadingFile());\r\n }\r\n }\r\n }\r\n \r\n //azione esegui\r\n public class Ab_exec implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n MJPExec(codePathFile,codeTitleFile,setAp);\r\n }\r\n }\r\n \r\n //azione crea file jar\r\n public class Ab_jar implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n new NewJarFileD();\r\n }\r\n }\r\n \r\n //azione cancella\r\n public class Ab_deleteFile implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n ConfirmD conf=new ConfirmD(setLanguage[30]+" "+codeTitleFile+" ?",(locX+100),(locY+100));\r\n if(conf.getResult()==true){\r\n String sub=codeTitleFile.substring(0,codeTitleFile.length()-5);\r\n File delJava=new File(codePathFile+"\\\\"+codeTitleFile);\r\n File delClass=new File(codePathFile+"\\\\"+sub+".class");\r\n File delHtml=new File(codePathFile+"\\\\"+sub+".html");\r\n if(delJava.exists())\r\n delJava.delete();\r\n if(delClass.exists())\r\n delClass.delete();\r\n if(delHtml.exists())\r\n delHtml.delete();\r\n chiudiFile();\r\n }\r\n }\r\n }\r\n\r\n //azione visualizzazione\r\n public class Ab_display implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n SaveSettings(false);\r\n LoadSettings(false);\r\n MJPDisplay();\r\n }\r\n }\r\n \r\n //azione cerca\r\n public class Ab_search implements ActionListener{\r\n public void actionPerformed(ActionEvent e){\r\n new Browser(search.getText());\r\n }\r\n }\r\n \r\n //************* azioni oggetti ***************/\r\n \r\n //abilita pulsanti quando si scrive il codice\r\n public class A_code implements KeyListener{\r\n public void keyPressed(KeyEvent k){\r\n if(act==true){\r\n b_compile.setEnabled(false);\r\n b_save.setEnabled(true);\r\n }\r\n }\r\n public void keyReleased(KeyEvent k){}\r\n public void keyTyped(KeyEvent k){}\r\n } \r\n \r\n //salvataggio automatico notes\r\n public class A_save_notes implements KeyListener{\r\n public void keyPressed(KeyEvent k){}\r\n public void keyTyped(KeyEvent k){}\r\n public void keyReleased(KeyEvent k){\r\n if(act==true){\r\n File notesDir=new File("notes");\r\n if(notesDir.isDirectory()==false)\r\n new File("notes").mkdir(); \r\n int lenTitle=codeTitleFile.length();\r\n String sub=codeTitleFile.substring(0,lenTitle-5);\r\n String notesTitleFile="notes\\\\"+sub+".txt";\r\n SaveFile notesFile;\r\n if(osnameInt==0)\r\n notesFile=new SaveFile(notesTitleFile,notes.getText());\r\n else\r\n notesFile=new SaveFile("",notesTitleFile,notes.getText()); \r\n }\r\n }\r\n }\r\n \r\n //cancella notes\r\n public class Ab_deleteNotes implements ActionListener{\r\n public void actionPerformed(ActionEvent ae){\r\n notes.setText("");\r\n File delNotes=new File(notesTitleFile);\r\n if(delNotes.exists())\r\n delNotes.delete();\r\n }\r\n }\r\n \r\n //impostazioni di chiusura\r\n class WindowReturn implements WindowListener{\r\n public void windowOpened(WindowEvent e){}\r\n public void windowDeactivated(WindowEvent e){}\r\n public void windowDeiconified(WindowEvent e){}\r\n public void windowIconified(WindowEvent e){}\r\n public void windowActivated(WindowEvent e){}\r\n public void windowClosing(WindowEvent e){\r\n chiudiMJP();\r\n }\r\n public void windowClosed(WindowEvent e){}\r\n }\r\n \r\n}\r\n\r\n</pre>\r\n<p class=\"rtecenter\" style=\"\"><a href=\"/sites/default/files/images/20122307231442.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122307231442.png\" style=\"height: 393px; width: 650px; \" /></a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/114\"><<Make Java Projects - Le Classi (parte 3)</a></p>\r\n<p class=\"rteright\" style=\"\"><a href=\"http://students.uniparthenope.it/?q=node/119\">Make java Projects - Tutorial>></a></p>\r\n<p> </p>\r\n<p class=\"rtecenter\" style=\"\"><em><strong><span style=\"font-size:16px;\"><a href=\"http://students.uniparthenope.it/?q=node/103\"><span style=\"color:#0000cd;\">1</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color:#0000cd;\">2</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color:#0000cd;\">3</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color:#0000cd;\">4</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/114\"><span style=\"color:#0000cd;\">5</span></a><span style=\"color:#0000cd;\"> -</span> <span style=\"color:#ff0000;\">6 </span><span style=\"color:#0000cd;\">- </span><a href=\"http://students.uniparthenope.it/?q=node/119\"><span style=\"color:#0000cd;\">7</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></span></strong></em></p>\r\n<p><br />\r\n </p>\r\n','','full_html'),('node','blog',0,117,150,'und',0,'<p> </p>\r\n<h1>\r\n <strong>How It's made - Ricerca di libri e riviste nella Biblioteca di Ateneo.</strong></h1>\r\n<p>Utilizzando il framework FRAPI (di cui si allega presentazione) implementare una API rest di interfaccia al portale della biblioteca di ateneo: <a href=\"http://192.167.9.94:8991/\">http://192.167.9.94:8991</a> Fornendo metodi per la ricerca di volumi e riviste.</p>\r\n<hr />\r\n<h2>\r\n Let's start.</h2>\r\n<hr />\r\n<h3>\r\n First Step:</h3>\r\n<p>Per recuperare tutti i Record che servono, bisogna analizzare scrupolosamente il portale.</p>\r\n<p>Questo è il più importante passo di tutta la discussione. Infatti, per creare l’API in modo che non dia problemi, è importante sapere come funziona ciò che serve. Quindi, armato di CURL e terminale, si analizza, linea dopo linea, ogni tag e ogni commento.</p>\r\n<p> </p>\r\n<h3>\r\n Second Step:</h3>\r\n<p>Dopo aver analizzato più e più volte il sorgente, ho notato che il portale setta un <strong>cookie </strong>che memorizza tutte le ricerche effettuate e tutti i record visitati, ricoprendo un ruolo di “<u>history</u>”.</p>\r\n<p>Questo cookie costituisce parte dell’URL insieme alle variabili <strong>request</strong>, la stringa di ricerca, e <strong>find_code</strong>, il campo di ricerca, passate in GET dal portale. Con un’apposita regex e la funzione PHP <em>preg_match_all()</em> è possibile estrarre il cookie, in modo tale da ricostruire il link, completo di request e find_code.</p>\r\n<p>Dunque, adesso è possibile eseguire la nostra ricerca.</p>\r\n<p> </p>\r\n<h3>\r\n Third Step:</h3>\r\n<p>Il portale restituisce, in base al numero di record, diversi output.</p>\r\n<p>Se i record <strong>sono minori </strong>o <strong>uguali</strong> di 5 record, il portale restituisce la scheda completa dei record; mentre, nel caso in cui i record sono <strong>maggiori</strong> di 5, il portale restituisce una tabella contentente 20 record per pagina e informazioni <u>limitate</u>. Quindi per ottenere le informazioni che servono, bisogna visitare il link del record, in modo di avere la scheda completa. </p>\r\n<p>Quindi, con la funzione strstr() controllo se CURL mi ha restituito la scheda completa del record oppure la tabella dei record.</p>\r\n<p>Nel primo caso, recupero tutte le righe della tabella, memorizzandole in un array associativo; nel secondo caso, recupero tutti i record e, in seguito, viene visitato il link per recuperare i campi della scheda completa che vengono memorizzati in un array associativo.</p>\r\n','<p> </p>\r\n<h1>\r\n <strong>How It's made - Ricerca di libri e riviste nella Biblioteca di Ateneo.</strong></h1>\r\n<p>Utilizzando il framework FRAPI implementare una API rest di interfaccia al portale della biblioteca di ateneo: <a href=\"http://192.167.9.94:8991/\">http://192.167.9.94:8991</a> fornendo metodi per la ricerca di volumi e riviste.</p>\r\n','full_html'),('node','blog',0,118,151,'und',0,'<p> </p>\r\n<p><img alt=\"\" src=\"http://i48.tinypic.com/2zgruwh.png\" /></p>\r\n<p><img alt=\"\" src=\"http://i48.tinypic.com/2efqel0.png\" /></p>\r\n<p class=\"rteright\" style=\"\"><em>a cura di Emilio Salomone e Flavio Tulino</em></p>\r\n<p> </p>\r\n<p> </p>\r\n<p>The italian job, si prefigge lo scopo di aiutare gli utenti e le aziende nella ricerca di occupazione per i primi e forza lavoro per i secondi.</p>\r\n<p>Tutto si basa su una semplice interfaccia web, che mette al corrente ogni utente dei nuovi ‘’annunci’’, che gli riguardano, presenti sulla piattaforma.</p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i50.tinypic.com/1zdrixi.jpg\" style=\"width: 200px; height: 300px; float: left; \" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<h3 class=\"rteindent4\">\r\n Questa è l’home page del nostro sito web, qui si può effettuare il login o , se non registrati, iscriversi, o come utente o come azienda</h3>\r\n<h3>\r\n </h3>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i49.tinypic.com/10cw705.jpg\" style=\"width: 500px; height: 200px; float: left; \" /></p>\r\n<h3>\r\n </h3>\r\n<h3>\r\n Qui di seguito è rappresentata l’home page a cui accede un utente, con la propria foto profilo e l’elenco degli annunci che riguardano i propri ambiti, con la possibilità di prenotarsi.</h3>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<h3>\r\n Qui di seguito è rappresentata la videoconferenza tra utente e azienda per il ‘’colloquio’’ preliminare via cam.</h3>\r\n<p><img alt=\"\" src=\"http://i49.tinypic.com/15n5ef5.jpg\" /></p>\r\n<p> </p>\r\n<h3>\r\n <strong>Conclusioni</strong></h3>\r\n<p> </p>\r\n<p>In conclusione, quando l’ azienda inizia la conferenza, gli utenti prenotati per l’ inserzione possono parteciparvi e sostenere un colloquio preliminare.<br />\r\n <br />\r\n Se l’ utente risponderà ai canoni richiesti dall’ azienda, sarà poi contattato per sostenere il vero e proprio colloquio.</p>\r\n<p><br />\r\n Ma prova tu stesso! Clicca sul logo e iscrivit a The Italian Job<a href=\"http://students.uniparthenope.it/~0124000317/italianjob/\" target=\"_blank\"><img alt=\"\" src=\"http://i48.tinypic.com/2zgruwh.png\" style=\"height: 79px; width: 100px; float: left; \" /></a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><u>Il sito è stato sviluppato con l' ausilio di Drupal e di OpenTok per la gestione delle videoconferenze. </u></p>\r\n<p><a href=\"http://drupal.org/\" target=\"_blank\">Drupal</a> - sito ufficiale</p>\r\n<p><a href=\"http://www.tokbox.com/opentok/api\" target=\"_blank\">OpenTok</a> - sito ufficiale </p>\r\n<p>Leggi anche il nostro tutorial su <a href=\"http://students.uniparthenope.it/?q=node/74\" target=\"_blank\">OpenTok</a>!</p>\r\n','','full_html'),('node','blog',0,119,152,'und',0,'<p>Per poter utilizzare <strong>MJP</strong>, bisogna soddisfare alcuni requisiti:</p>\r\n<ol style=\"\">\r\n <li>\r\n installare <em>JDK </em>con versione 1.6 o 1.7 e configurarne le variabili d'ambiente;</li>\r\n <li>\r\n Conoscere almeno le nozioni del linguaggio java.</li>\r\n</ol>\r\n<p>Per quanto riguarda l'utilizzo, dovrebbe risultare semplice già dal primo avvio, ma facciamo comunque un esempio.</p>\r\n<p class=\"rtecenter\" style=\"\"><a href=\"/sites/default/files/images/20122407184242.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407184242.png\" /></a><a href=\"/sites/default/files/images/20122407184244.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407184244.png\" /></a><a href=\"/sites/default/files/images/20122407184247.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407184247.png\" /></a><a href=\"/sites/default/files/images/20122407184250.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407184250.png\" /></a><a href=\"/sites/default/files/images/20122407184253.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407184253.png\" /></a><a href=\"/sites/default/files/images/20122407184256.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407184256.png\" /></a><a href=\"/sites/default/files/images/20122407185123.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122407185123.png\" /></a></p>\r\n<p class=\"rtecenter\" style=\"\">Spero che il mio lavoro possa esservi utile in qualche modo. Alla prossima!!! </p>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/116\"><<Make Java Projects - Le Classi (parte 4)</a></p>\r\n<p class=\"rteright\"><a href=\"http://students.uniparthenope.it/?q=node/140\">Make Java Project - Presentazione e File>></a></p>\r\n<p class=\"rtecenter\" style=\"\"><strong><span style=\"font-size:16px;\"><a href=\"http://students.uniparthenope.it/?q=node/103\"><span style=\"color:#0000cd;\">1</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color:#0000cd;\">2</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color:#0000cd;\">3</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color:#0000cd;\">4</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/114\"><span style=\"color:#0000cd;\">5</span></a><span style=\"color:#0000cd;\"> - </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color:#0000cd;\">6</span></a><span style=\"color:#0000cd;\"> -</span> <span style=\"color: rgb(255, 0, 0); \">7 </span><span style=\"color:#0000cd;\">- </span><a href=\"http://students.uniparthenope.it/?q=node/140\"><span style=\"color:#0000cd;\">8</span></a></span></strong></p>\r\n<p class=\"rtecenter\"> </p>\r\n','','full_html'),('node','blog',0,120,153,'und',0,'<p>Classe Finestra :</p>\r\n<br />\r\n<br />\r\n<pre>\r\npackage rapidroll;\r\n\r\n\r\nimport javax.swing.*;\r\n\r\nimport java.awt.event.ActionEvent;\r\n\r\nimport java.awt.event.ActionListener;\r\n\r\nimport java.awt.Toolkit;\r\n\r\nimport java.awt.event.KeyEvent;\r\n\r\nimport java.awt.event.KeyListener;\r\n\r\nimport java.awt.Image;\r\n\r\nimport java.awt.BorderLayout;\r\n\r\nimport java.lang.Math;\r\n\r\n\r\npublic class Finestra extends JFrame{\r\n\r\n\r\n Pannello p=new Pannello();\r\n\r\n Label la=new Label();\r\n\r\n Timer timersos,timerrefresh,timersale,timerscende,timerrefresh2,timersale2;\r\n\r\n Timer timerPalla;\r\n\r\n public Finestra(){\r\n\r\n super("Rapid Roll!");\r\n\r\n \r\n\r\n Image Immagine;\r\n\r\n setSize(500,1000);\r\n\r\n Immagine = Toolkit.getDefaultToolkit().getImage("myicons\\\\rapid.png");\r\n\r\n this.setIconImage(Immagine);\r\n\r\n this.setVisible(true);\r\n\r\n \r\n\r\n setResizable(false);\r\n\r\n setVisible(true);\r\n\r\n setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r\n\r\n \r\n\r\n add(p);\r\n\r\n timersos=new Timer(3000,new ListenerTimerSos());\r\n\r\n timersale=new Timer(7,new ListenerTimerSale());\r\n\r\n timersale2=new Timer(5,new ListenerTimerSale2());\r\n\r\n timerscende=new Timer(3,new ListenerTimerScende());\r\n\r\n timerrefresh2=new Timer(68,new ListenerTimerRefreshsos2());\r\n\r\n timerrefresh=new Timer(89,new ListenerTimerRefreshsos());\r\n\r\n timerrefresh.setInitialDelay(4000);\r\n\r\n timerscende.setInitialDelay(4000);\r\n\r\n timersos.start();\r\n\r\n timerscende.start();\r\n\r\n timerrefresh.start();\r\n\r\n timerrefresh2.setInitialDelay(18000);\r\n\r\n timersale2.setInitialDelay(18000);\r\n\r\n timersale2.start();\r\n\r\n timerrefresh2.start();\r\n\r\n timersale.start();\r\n\r\n this.addKeyListener(new listenermov());\r\n\r\n }\r\n\r\n\r\n\r\npublic class ListenerTimerSos implements ActionListener{\r\n\r\n\r\n \r\n\r\n public void actionPerformed(ActionEvent ae) {\r\n\r\n p.la.sostegno.compari();\r\n\r\n p.la.repaint();\r\n\r\n if(p.la.sostegno.timing%4==0 && p.la.sostegno.timing>0) p.la.vite.compariVita(); \r\n\r\n p.la.io.vitapresa=false;\r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n\r\n\r\npublic class ListenerTimerScende implements ActionListener{\r\n\r\n public void actionPerformed(ActionEvent ae){\r\n\r\n \r\n\r\n if(p.la.io.down==true) p.la.io.scende();\r\n\r\n p.la.repaint();\r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n}\r\n\r\n\r\npublic class ListenerTimerSale implements ActionListener{ \r\n\r\n \r\n\r\n public void actionPerformed(ActionEvent ae){ \r\n\r\n \r\n\r\n if (p.la.io.down==false) p.la.io.sale();\r\n\r\n p.la.repaint();\r\n\r\n if(p.la.sostegno.timing==5) timersale.stop();\r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n}\r\n\r\n\r\npublic class ListenerTimerSale2 implements ActionListener{ \r\n\r\n \r\n\r\n public void actionPerformed(ActionEvent ae){ \r\n\r\n \r\n\r\n if (p.la.io.down==false) p.la.io.sale();\r\n\r\n p.la.repaint();\r\n\r\n p.la.repaint();\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n}\r\n\r\n public class ListenerTimerRefreshsos implements ActionListener{\r\n\r\n\r\n \r\n\r\n public void actionPerformed(ActionEvent ae) {\r\n\r\n p.la.sostegno.saleRect();\r\n\r\n p.la.repaint();\r\n\r\n if(p.la.sostegno.timing==5) timerrefresh.stop();\r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n public class ListenerTimerRefreshsos2 implements ActionListener{\r\n\r\n\r\n \r\n\r\n public void actionPerformed(ActionEvent ae) {\r\n\r\n p.la.sostegno.saleRect();\r\n\r\n p.la.repaint();\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\npublic class listenermov implements KeyListener{\r\n\r\n boolean destra=false,sinistra=false,giu=false,sinistra2=false,destra2=false;\r\n\r\n public void keyTyped(KeyEvent ke) {\r\n\r\n \r\n\r\n //non si puo' fare override di metodi , nel senso che keytyped non si puo' omettere e neanche keypressed e key released. Ce lo mettiamo ma è inutile\r\n\r\n }\r\n\r\n \r\n\r\n public void keyPressed(KeyEvent ke) { \r\n\r\n char c=ke.getKeyChar();\r\n\r\n if(c=='a') sinistra=true;\r\n\r\n if(c=='d') destra=true;\r\n\r\n \r\n\r\n\r\n if(sinistra==true){ p.la.io.muovesinistra(); p.la.repaint(); }\r\n\r\n if(destra==true){ p.la.io.muovedestra(); p.la.repaint(); } \r\n\r\n muro(); p.la.repaint();\r\n\r\n muro2(); p.la.repaint();\r\n\r\n \r\n\r\n}\r\n\r\n public void keyReleased(KeyEvent ke){\r\n\r\n char c=ke.getKeyChar();\r\n\r\n if (c=='a') sinistra=false;\r\n\r\n if (c=='d') destra=false;\r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n\r\n \r\n\r\n public void muro(){\r\n\r\n \r\n\r\n if(p.la.io.xLinea<=0) sinistra2=true;\r\n\r\n if(sinistra2) {\r\n\r\n p.la.io.muovedestra();\r\n\r\n sinistra2=false;\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n\r\npublic void muro2(){\r\n\r\n \r\n\r\n if(p.la.io.xLinea2>=p.la.getWidth()) destra2=true;\r\n\r\n if(destra2){ \r\n\r\n p.la.io.muovesinistra();\r\n\r\n destra2=false;\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n}\r\n\r\n\r\n\r\n\r\n}</pre>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Classe Label:<br />\r\n <br />\r\n <br />\r\n <pre>\r\npackage rapidroll;\r\n\r\n\r\nimport java.awt.*;\r\n\r\nimport javax.swing.*;\r\n\r\nimport java.net.*;\r\n\r\nimport java.util.*;\r\n\r\nimport java.awt.Transparency;\r\n\r\n\r\npublic class Label extends JLabel{\r\n\r\n public Sfera io;\r\n\r\n public Vita vite;\r\n\r\n public int punteggio;\r\n\r\n public int j=0;\r\n\r\n public int vitax,vitay;\r\n\r\n public int life;\r\n\r\n public Rect sostegno;\r\n\r\n \r\n\r\n public Label(){\r\n\r\n io=new Sfera(this);\r\n\r\n sostegno=new Rect(this);\r\n\r\n vite=new Vita(this);\r\n\r\n life=0;\r\n\r\n punteggio=0;\r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n public Dimension getPreferredSize(){ \r\n\r\n return new Dimension(500,1000);\r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n protected void paintComponent(Graphics g){\r\n\r\n super.paintComponent(g);\r\n\r\n \r\n\r\n \r\n\r\n\r\n this.setOpaque(true);\r\n\r\n this.setBackground(Color.LIGHT_GRAY);\r\n\r\n \r\n\r\n\r\n \r\n\r\n g.setColor(Color.RED);\r\n\r\n g.drawOval(io.xCord,io.yCord,30,30); //coordinate x e y (200 e 200) dell'estremita' in alto a sinistra del cerchio (le coordinate che dovrai far muovere)\r\n\r\n g.fillOval(io.xCord,io.yCord,30,30);\r\n\r\n g.setColor(new Color(0,0,0,0));\r\n\r\n \r\n\r\n g.drawLine(io.xLinea,io.yLinea,io.xLinea2,io.yLinea2);\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n for(j=0;j<500;j=j+3){\r\n\r\n g.setColor(Color.BLACK);\r\n\r\n g.drawLine(5+j,118,5+j,140);\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n g.setColor(Color.BLUE);\r\n\r\n g.drawRect(0,140,20,741);\r\n\r\n g.fillRect(0, 140, 20, 741);\r\n\r\n \r\n\r\n g.setColor(Color.BLUE);\r\n\r\n g.drawRect(480,140,20,741);\r\n\r\n g.fillRect(480, 140, 20, 741);\r\n\r\n \r\n\r\n \r\n\r\n for(int i=0;i<sostegno.arrayRect.length;i++){\r\n\r\n if(sostegno.arrayRect[i] != null){\r\n\r\n g.setColor(Color.blue);\r\n\r\n g.drawRoundRect(sostegno.arrayRect[i].xRect, sostegno.arrayRect[i].yRect, sostegno.width, sostegno.height, sostegno.arcWidth, sostegno.arcHeight);\r\n\r\n g.fillRoundRect(sostegno.arrayRect[i].xRect, sostegno.arrayRect[i].yRect, sostegno.width, sostegno.height, sostegno.arcWidth, sostegno.arcHeight);\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n //Seguono le vite extra che appaiono sui rettangoli : se l'utente non riesce a prendere il cuore in tempo , esso sparisce (si tratta di un paio di secondi)\r\n\r\n if(sostegno.arrayRect[0]!=null && sostegno.timing%4==0 && sostegno.timing>0 && io.vitapresa==false){\r\n\r\n g.setColor(Color.RED);\r\n\r\n g.drawOval(sostegno.arrayRect[0].xRect+35,sostegno.arrayRect[0].yRect-20,15,15);\r\n\r\n g.fillOval(sostegno.arrayRect[0].xRect+35,sostegno.arrayRect[0].yRect-20,15,15);\r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n\r\n //seguono i disegni delle vite\r\n\r\n \r\n\r\n for(int i=0;i<io.sferalife;i=i+20){\r\n\r\n g.setColor(Color.RED);\r\n\r\n g.drawOval(445+life,900,10,10); \r\n\r\n g.fillOval(445+life,900,10,10);\r\n\r\n life=life+20;\r\n\r\n if(life==io.sferalife) life=0;\r\n\r\n if(io.sferalife>60) io.sferalife=60; //altrimenti mi disegnerebbe pure le palline e\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n g.setColor(Color.BLUE);\r\n\r\n g.drawString("VITE RIMASTE ", 360, 910);\r\n\r\n \r\n\r\n g.setColor(Color.BLUE);\r\n\r\n g.drawString("SCORE "+punteggio ,10,910);\r\n\r\n \r\n\r\n if(io.sferalife==0) \r\n\r\n {\r\n\r\n \r\n\r\n g.setColor(Color.WHITE);\r\n\r\n g.drawRect(0, 0, 500, 1000);\r\n\r\n g.fillRect(0,0,500,1000);\r\n\r\n g.setColor(Color.BLACK); \r\n\r\n g.drawString("HAI PERSO !!!",120,470);\r\n\r\n g.drawString("HAI TOTALIZZATO "+punteggio+" PUNTI!",120,500);\r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n}</pre>\r\n <div>\r\n </div>\r\n</div>\r\n<p>Classe Pannello:</p>\r\n<br />\r\n<br />\r\n<br />\r\n<pre>\r\npackage rapidroll;\r\n\r\nimport java.awt.*;\r\n\r\nimport javax.swing.*;\r\n\r\nimport java.util.*;\r\n\r\n\r\npublic class Pannello extends JPanel{\r\n\r\n public Dimension getPreferredSize(){\r\n\r\n return new Dimension(500,1000);\r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\nLabel la;\r\n\r\n\r\n\r\npublic Pannello(){\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n la=new Label(); \r\n\r\n add(la);\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n}\r\n\r\n\r\n\r\n}</pre>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Classe Sfera :<br />\r\n <br />\r\n <pre>\r\npackage rapidroll;\r\n\r\nimport javax.swing.*;\r\n\r\nimport java.awt.event.ActionEvent;\r\n\r\nimport java.awt.Color;\r\n\r\nimport java.awt.event.ActionListener;\r\n\r\nimport java.awt.Toolkit;\r\n\r\nimport java.awt.event.KeyEvent;\r\n\r\nimport java.awt.event.KeyListener;\r\n\r\nimport java.awt.Image;\r\n\r\nimport java.awt.BorderLayout;\r\n\r\nimport java.lang.Math;\r\n\r\n\r\npublic class Sfera {\r\n\r\n \r\n\r\n public int xCord;\r\n\r\n public int yCord;\r\n\r\n public int xLinea;\r\n\r\n public int yLinea;\r\n\r\n public boolean vitapresa;\r\n\r\n public int xLinea2;\r\n\r\n public int yLinea2;\r\n\r\n public int i,c,actual;\r\n\r\n public int control,actual2,sferalife;\r\n\r\n boolean down;\r\n\r\n public int g,f,cont1,cont2;\r\n\r\n Label lab;\r\n\r\n \r\n\r\n public Sfera(Label lab){ \r\n\r\n xCord=200;\r\n\r\n sferalife=60;\r\n\r\n i=0; actual2=0;\r\n\r\n vitapresa=false;\r\n\r\n c=0;\r\n\r\n control=0;\r\n\r\n this.lab=lab;\r\n\r\n yCord=300;\r\n\r\n g=0;\r\n\r\n actual=1;\r\n\r\n down=true;\r\n\r\n control=0;\r\n\r\n f=0;\r\n\r\n xLinea=xCord;\r\n\r\n yLinea=yCord+30;\r\n\r\n xLinea2=xCord+30;\r\n\r\n yLinea2=yCord+30;\r\n\r\n }\r\n\r\n \r\n\r\n \r\n\r\n public void muovesinistra()\r\n\r\n {\r\n\r\n xCord-=25;\r\n\r\n xLinea-=25;\r\n\r\n xLinea2-=25;\r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n public void muovedestra()\r\n\r\n {\r\n\r\n xCord+=25; \r\n\r\n xLinea+=25;\r\n\r\n xLinea2+=25;\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n public void scende()\r\n\r\n {\r\n\r\n yCord+=1; \r\n\r\n yLinea+=1;\r\n\r\n yLinea2+=1;\r\n\r\n if(yCord>950)\r\n\r\n {\r\n\r\n xCord=200;\r\n\r\n yLinea=330;\r\n\r\n yCord=300;\r\n\r\n yLinea2=330;\r\n\r\n sferalife-=20;\r\n\r\n xLinea2=xCord+30;\r\n\r\n xLinea=200;\r\n\r\n \r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n public void sale()\r\n\r\n {\r\n\r\n yCord-=1;\r\n\r\n yLinea-=1;\r\n\r\n yLinea2-=1;\r\n\r\n \r\n\r\n if(yCord<135) { \r\n\r\n xCord=200;\r\n\r\n yLinea=330;\r\n\r\n yCord=300;\r\n\r\n yLinea2=330;\r\n\r\n xLinea2=xCord+30;\r\n\r\n xLinea=200;\r\n\r\n sferalife-=20;\r\n\r\n down=true;\r\n\r\n }\r\n\r\n \r\n\r\n if(xLinea<lab.sostegno.arrayRect[lab.sostegno.actualrect].xRect || xLinea>lab.sostegno.arrayRect[lab.sostegno.actualrect].xRect+lab.sostegno.width && down==false)\r\n\r\n down=true;\r\n\r\n \r\n\r\n if(xLinea-lab.sostegno.arrayRect[0].xRect<25 && lab.sostegno.arrayRect[0].yRect-yLinea<30 && down==false && lab.sostegno.timing%4==0 && lab.sostegno.timing>0 && vitapresa==false){\r\n\r\n sferalife+=20;\r\n\r\n vitapresa=true;\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n\r\n\r\n \r\n\r\n \r\n\r\n }</pre>\r\n <div>\r\n </div>\r\n</div>\r\n<p>Classe Rect:</p>\r\n<br />\r\n<br />\r\n<br />\r\n<br />\r\n<pre>\r\npackage rapidroll;\r\n\r\nimport javax.swing.*;\r\n\r\nimport java.awt.Color;\r\n\r\nimport java.util.*;\r\n\r\n\r\npublic class Rect {\r\n\r\n \r\n\r\n sos[] arrayRect;\r\n\r\n Label mylab;\r\n\r\n public int width,height,arcWidth,arcHeight;\r\n\r\n public int timing,cont;\r\n\r\n public int actualrect;\r\n\r\n public Rect(Label mylab)\r\n\r\n {\r\n\r\n timing=-1;\r\n\r\n cont=0;\r\n\r\n width=120;\r\n\r\n height=20;\r\n\r\n arcWidth=20;\r\n\r\n arcHeight=15;\r\n\r\n actualrect=0;\r\n\r\n this.mylab=mylab;\r\n\r\n arrayRect=new sos[200]; \r\n\r\n }\r\n\r\n \r\n\r\npublic void saleRect()\r\n\r\n{\r\n\r\n int i;\r\n\r\n for(i=0;i<arrayRect.length;i++)\r\n\r\n if(arrayRect[i]!=null){\r\n\r\n arrayRect[i].yRect-=10;\r\n\r\n \r\n\r\n if(mylab.io.down==true){\r\n\r\n \r\n\r\n if(arrayRect[i].yRect-mylab.io.yLinea<13 && mylab.io.xLinea-arrayRect[i].xRect>-5 && mylab.io.xLinea-arrayRect[i].xRect<120 && arrayRect[i].yRect>400 && mylab.io.yCord<arrayRect[i].yRect){\r\n\r\n \r\n\r\n mylab.io.down=false;\r\n\r\n actualrect=i; \r\n\r\n mylab.punteggio+=10;\r\n\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\n}\r\n\r\n\r\n\r\npublic void compari()\r\n\r\n{\r\n\r\n int k;\r\n\r\n for(k=0;k<arrayRect.length;k++)\r\n\r\n if(arrayRect[k]==null) break;\r\n\r\n if(k>=arrayRect.length) k=arrayRect.length-2; \r\n\r\n \r\n\r\n for(int p=k-1;p>=0;p--) arrayRect[p+1]=arrayRect[p];\r\n\r\n arrayRect[0]=new sos(); \r\n\r\n timing++;\r\n\r\n if(timing==25) width=80;\r\n\r\n if(timing==50) width=40;\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n}\r\n\r\n\r\n\r\n\r\npublic class sos{\r\n\r\n public int xRect;\r\n\r\n public int yRect;\r\n\r\n public int larghezza;\r\n\r\n public int altezza;\r\n\r\n public int larghezzaArco;\r\n\r\n public int altezzaArco;\r\n\r\n public Color mycolour;\r\n\r\n public sos(){\r\n\r\n mycolour=Color.BLUE;\r\n\r\n this.larghezza=120;\r\n\r\n this.altezza=20;\r\n\r\n this.larghezzaArco=20;\r\n\r\n this.altezzaArco=15;\r\n\r\n xRect=5+(int)(Math.random()*450);\r\n\r\n yRect=950;\r\n\r\n }\r\n\r\n \r\n\r\n\r\n\r\n \r\n\r\n}\r\n\r\n\r\n\r\n}</pre>\r\n<div>\r\n <br />\r\n Classe Vite:<br />\r\n <br />\r\n <br />\r\n <pre>\r\npackage rapidroll;\r\n\r\nimport javax.swing.*;\r\n\r\nimport java.awt.Color;\r\n\r\nimport java.util.*;\r\n\r\n\r\npublic class Vita {\r\n\r\n life[] arrayVite;\r\n\r\n int timinglife;\r\n\r\n Label mylab2;\r\n\r\n public Vita(Label mylab2)\r\n\r\n {\r\n\r\n \r\n\r\n this.mylab2=mylab2;\r\n\r\n arrayVite=new life[200]; \r\n\r\n timinglife=0;\r\n\r\n }\r\n\r\n \r\n\r\n public void compariVita()\r\n\r\n{\r\n\r\n int k;\r\n\r\n for(k=0;k<arrayVite.length;k++)\r\n\r\n if(arrayVite[k]==null) break;\r\n\r\n if(k>=arrayVite.length) k=arrayVite.length-2; \r\n\r\n \r\n\r\n for(int p=k-1;p>=0;p--) arrayVite[p+1]=arrayVite[p];\r\n\r\n arrayVite[0]=new life(); \r\n\r\n timinglife++;\r\n\r\n }\r\n\r\n\r\n public class life {\r\n\r\n public int dimensionx,dimensiony;\r\n\r\n public life(){\r\n\r\n this.dimensionx=15;\r\n\r\n this.dimensiony=15;\r\n\r\n \r\n\r\n }\r\n\r\n \r\n\r\n\r\n\r\n \r\n\r\n} \r\n\r\n }</pre>\r\n <div>\r\n </div>\r\n <div>\r\n Metodo main (è incorporato in una classe chiamata "capo") :<br />\r\n <br />\r\n <pre>\r\npackage rapidroll;\r\n\r\n\r\npublic class capo {\r\n\r\n \r\n\r\npublic static void main(String[] arg)\r\n\r\n {\r\n\r\n Finestra fin=new Finestra();\r\n\r\n }\r\n\r\n \r\n\r\n}</pre>\r\n </div>\r\n</div>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,121,154,'und',0,'<p>Segue la relazione inerente al progetto da me realizzato , Rapid Roll:<br />\r\n <br />\r\n <a href=\"/sites/default/files/files/DocumentazioneProgettoJava_0.pdf\">DocumentazioneProgettoJava.pdf</a></p>\r\n<p> </p>\r\n<p>Per il file jar continuo ad avere problemi per quanto riguarda l'upload diretto sul blog. In ogni modo, ho uppato il file su google drive. E' facilmente scaricabile da questo link (il file jar da scaricare si chiama anagram.jar) :<br />\r\n <br />\r\n <a href=\"https://docs.google.com/file/d/0B4AAKi0MwIk3MGtmRmNkSnhvTXc/edit\">https://docs.google.com/file/d/0B4AAKi0MwIk3MGtmRmNkSnhvTXc/edit</a></p>\r\n','','full_html'),('node','blog',0,122,155,'und',0,'<p><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\"><em>La nostra app, sfrutta le API Rest messe a disposizione dalla Parthenope, per rendere fruibili tutte le news di tutte le facoltà dell’università Parthenope</em></span></span></p>\r\n<p><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\"><em>La nostra app prevede due activity :</em></span></span></p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\">• <em>MainActivity:</em></span></span></p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\"><em>Nella quale vengono acquisite tutte le facoltè per cui sono disponibile delle news;</em></span></span></p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\"><em>Essa attraverso un opportuno Listener, l’activity gestisce opportunamente l’evento associato ad ogni selezione.</em></span></span></p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\">• <em>ReadNews:</em></span></span></p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-size:14px;\"><span style=\"color:#0000cd;\"><em>Nella quale vengono letti i parametri ricevuti dalla MainActivity, e in base a questi ultimi, vengono mostrate le opportune news.</em></span></span></p>\r\n<p style=\"margin-left:18pt;\"> </p>\r\n<p class=\"rtecenter\" style=\"margin-left:18pt;\"><span style=\"font-size:20px;\"><span style=\"color:#ff0000;\"><span style=\"font-family:georgia,serif;\"><strong>MainActivity</strong></span></span></span></p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\">• <em>Caricata la lista delle facoltà nella Action Bar di android ( introdotta con Android 3.0 API level 11) l’activity aspetta la selezione della facoltà da parte dell’utente.</em></span></span></span></p>\r\n<p style=\"margin-left:36pt;\"> </p>\r\n<p style=\"margin-left:18pt;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\">• <em>Ad ogni scelta dell’utente, attraverso un opportuno Listener, gestisce l’evento richiamando opportunamente l’activity ReadNews, attraverso l’utilizzo degli Intent</em></span></span></span></p>\r\n<p> </p>\r\n<p><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\"><em>Nell’Intent, vengono passati anche dei parametri, che sono : </em></span></span></span></p>\r\n<p style=\"margin-left:54pt;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\">• <em>Url, delle news relative alla facoltà scelta;</em></span></span></span></p>\r\n<p style=\"margin-left:54pt;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\">• <em>Posizione, che occupa la facoltà nel JSONobject, in modo tale che l’activity news eviti di scorrere tutto l’oggetto. </em></span></span></span></p>\r\n<p style=\"margin-left:54pt;\"> </p>\r\n<p class=\"rtecenter\" style=\"margin-left:54pt;\"><span style=\"font-size:20px;\"><span style=\"color:#ff0000;\"><strong>MainActivity</strong></span></span></p>\r\n<p><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000ff;\"><span style=\"font-size:14px;\"><em>Il main activity si va a prendere dalle API tutte le Facoltà disponibili per poi inserirli nello spinner (simile ad una lista espansa).</em></span></span></span></p>\r\n<p><em style=\"font-size: 14px; color: rgb(0, 0, 255); font-family: georgia, serif; \">Purtroppo non avendo dispositivi ANDROID (non ditelo a nessuno), ci dobbiamo arrangiare con l’emulatore di Eclipse.</em></p>\r\n<p> </p>\r\n<p><em style=\"font-size: 14px; color: rgb(0, 0, 255); font-family: georgia, serif; \"><img alt=\"\" src=\"http://img706.imageshack.us/img706/9107/mainactivity.png\" style=\"margin-left: 100px; margin-right: 100px; width: 320px; height: 223px; \" /></em></p>\r\n<p> </p>\r\n<p><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\"><em>Cliccando su “Seleziona Facoltà” spuntano tutte le facoltà presenti nelle API</em></span></span></span></p>\r\n<p> </p>\r\n<p><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><span style=\"font-size:14px;\"><em><img alt=\"\" src=\"http://img853.imageshack.us/edit_preview.php?l=img853/8854/mainactivity2.png&action=rotate\" style=\"margin-left: 100px; margin-right: 100px; width: 320px; height: 223px; \" /></em></span></span></span></p>\r\n<p> </p>\r\n<p><span style=\"font-size:14px;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><em>Cliccando su qualsiasi di queste facoltà il MainActivity chiamerà ReadNews che tramite le Api scelte opportunamente visualizzerà a video l’inizio di ogni news.</em></span></span></span></p>\r\n<p><span style=\"font-size:14px;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><em>Se per esempio cliccassimo su informatica il risultato ottenuto sarebbe il seguente:</em></span></span></span></p>\r\n<p> </p>\r\n<p><span style=\"font-size:14px;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><em><img alt=\"\" src=\"http://desmond.imageshack.us/Himg528/scaled.php?server=528&filename=facoltnuovo.png&res=landing\" style=\"margin-left: 100px; margin-right: 100px; width: 320px; height: 285px; \" /></em></span></span></span></p>\r\n<p> </p>\r\n<p> </p>\r\n<p><span style=\"font-size:14px;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><em>Cliccando su “AVVISO: Corso di Tecnologie Web” abbiamo finalmente la nostra news completa.</em></span></span></span></p>\r\n<p><span style=\"font-size:14px;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><em>Il risultato è </em></span></span></span></p>\r\n<p> </p>\r\n<p><span style=\"font-size:14px;\"><span style=\"font-family:georgia,serif;\"><span style=\"color:#0000cd;\"><em><img alt=\"\" src=\"http://desmond.imageshack.us/Himg651/scaled.php?server=651&filename=immaginepwk.png&res=landing\" style=\"margin-left: 100px; margin-right: 100px; width: 320px; height: 287px; \" /></em></span></span></span></p>\r\n<p><font color=\"#0000cd\" face=\"georgia, serif\"><span style=\"font-size: 14px;\"><i>Elio Papa e Antonio Pugliese</i></span></font></p>\r\n','','full_html'),('node','blog',0,123,156,'und',0,'<div class=\"rtejustify\">\r\n L'idea di questo software nasce dalla passione di quattro amici per il gioco della Stoppa, gioco di carte tradizionale del sud Italia ma principalmente della regione Campania.</div>\r\n<div class=\"rtejustify\">\r\n Si è pensato di rendere possibile il connubio tra tradizione e tecnologia in modo da poter diffondere e conservare anche se in piccola parte le tradizioni della nostra cultura.</div>\r\n<div class=\"rtejustify\">\r\n Il software "Stoppa Game" è basato sul protocollo Client-Server per far si che tutti in qualsiasi parte del mondo ne possano usufruire.</div>\r\n<div class=\"rtejustify\">\r\n E' stata implementata una chat per dare la possibilità a tutti gli utenti che giocano di socializzare ed eventualmente commentare la partita.</div>\r\n<div class=\"rtejustify\">\r\n Il Server gestisce la creazione dei tavoli da gioco che possono essere multipli e tutte le operazioni riguardanti le fasi di gioco.</div>\r\n<div class=\"rtejustify\">\r\n Il Client quindi, come giusto che sia, è solo un Interfaccia per gli utenti, per il momento è stato implementato oltre alle basi di gioco basiche un sistema di scommessa che non prevede un rilancio permettendo all'utente di giocare una sola partita.</div>\r\n<div class=\"rtejustify\">\r\n </div>\r\n<div class=\"rtejustify\">\r\n Il Software è stato implementato da Magro Massimiliano e Raffaele Schiavone</div>\r\n<div class=\"rtejustify\">\r\n </div>\r\n<div class=\"rtejustify\">\r\n <span>Attualmente è alla versione beta presentata come progetto di Programmazione III </span></div>\r\n<div class=\"rtejustify\">\r\n <span>Presto verrà rilasciato il tutorial su come far girare l’applicazione per chiunque fosse interessato a testarla.</span><br />\r\n </div>\r\n','','filtered_html'),('node','blog',0,124,157,'und',0,'<p> </p>\r\n<p>L’applicazione sviluppata per l’esame di programmazione 3 consiste di un videogioco interattivo, in due dimensioni, le cui meccaniche sono quelle classiche degli sparatutto a scorrimento 2D.</p>\r\n<p>Lo scopo e’ accumulare punteggi, eliminando navicelle dello stesso colore dell’astronave del giocatore, estendendo il timer, ed evitando di scontrarsi con i nemici.</p>\r\n<p>Il giocatore ha a disposizione n vite, e n secondi di timer. Quando il timer scade o si esauriscono le vite, la partita termina. Se si colpiscono navicelle del colore corretto, il punteggio totale accumulato aumenta, altrimenti diminuisce. Nel primo caso inoltre viene esteso il timer di gioco. Piu’ nemici del colore corretto vengono abbattuti quindi, piu’ si puo’ giocare e piu’ si accumulano punti.</p>\r\n<p>L’applicazione e’ sviluppata in Java.<br />\r\n </p>\r\n','','filtered_html'),('node','blog',0,125,158,'und',0,'<p> </p>\r\n<p> </p>\r\n<p><strong><img alt=\"\" src=\"http://i.imgur.com/nMufM.jpg\" /></strong></p>\r\n<p> </p>\r\n<p> </p>\r\n<p><strong><img alt=\"\" src=\"http://i.imgur.com/pgV1n.jpg\" /></strong><br />\r\n </p>\r\n<p> </p>\r\n<p><strong>CONTROLLI:</strong></p>\r\n<p><br />\r\n <strong>W= sopra</strong></p>\r\n<p><strong>A= sinistra</strong></p>\r\n<p><strong>D= destra</strong></p>\r\n<p><strong>S= sotto</strong></p>\r\n<p><strong>F= spara</strong></p>\r\n<p> </p>\r\n<p>Le classi implementate sono:</p>\r\n<p>Il metodo main e’ contenuto nella classe che ha lo stesso nome del gioco: PolygonWar.class</p>\r\n<p>Abbiamo poi la classe Astronave che definisce l’oggetto dell’astronave guidata dal giocatore.</p>\r\n<p>Abbiamo poi una serie di estensioni di alcune classi Swing, utilizzate per rappresentare graficamente l’ambiente di gioco (MiaFinestra, MioPannello,MiaLabel,LabelStat).</p>\r\n<p>C’e’ poi un’interfaccia, Spawner che viene implementata, e che serve a rappresentare gli oggetti che si occupano di dare vita e muovere le entita’ coinvolte nel gioco.</p>\r\n<p>Terminano la lista, una classe che si occupa di gestire e controllare le collisioni tra le entita’ diverse in gioco (player e nemici, o nemici e colpi sparati) e un oggetto che controlla il timer di gioco.<br />\r\n </p>\r\n<p>Segue una breve panoramica delle classi introdotte</p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n MIA FINESTRA (class)</h1>\r\n</div>\r\n<p>Estende la class JFrame dello Swing package.</p>\r\n<p>E’ utilizzata per rappresentare la finestra all’interno del quale sono inseriti gli altri elementi grafici che rappresentano il campo di gioco.</p>\r\n<p>Come variabili di classe contiene vari riferimenti ad oggetti della classe Timer, che vengono utilizzati per rappresentare il “clock” di movimento/aggiornamento/azione delle entita’ diverse coinvolte, e un riferimento all’oggetto di classe MioPannello che altro non e’ che un JPanel esteso, inserito nella finestra.</p>\r\n<p>All’interno della classe MiaFinestra e’ dichiarata tutta una serie di Inner Class che altro non sono che implementazioni di varie interfacce per il “grab “ dei segnali, lanciati dai timer o per la pressione di tasti quando la finestra e’ selezionata.<br />\r\n </p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n Miopannello(class)</h1>\r\n</div>\r\n<p>Estende la class JPanel, e altro non e’ che un pannello, di dimensione stabilita, che e’ inserito nell’oggetto di classe MiaFinestra, e contiene un riferimento all’oggetto di classe MiaLabel al suo interno inserito, e un riferimento all’oggetto di classe LabelStat, sempre inserito all’interno dell’oggetto pannello.</p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n MIAlabel(class)</h1>\r\n</div>\r\n<p>Estende la class JLabel. E’ uno degli elementi fondamentali dell’applicazione, in quanto all’interno del metodo (in overriding) paintComponent, vengono disegnate le entita’ in gioco. All’interno della MiaLabel quindi c’e’ tutta una serie di riferimenti ai vari oggetti di gioco (spawner vari, astronave e controllo collisioni)</p>\r\n<p> </p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n LABELSTAT(CLASS)</h1>\r\n</div>\r\n<p>Anch’essa estende la classe JLabel, ed e’ la seconda label inserita all’interno del pannello principale. Contiene tutta una serie di informazioni relative alle statistiche di gioco (vita e punteggio)</p>\r\n<p> </p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n Astronave (class)</h1>\r\n</div>\r\n<p>E’ una classe che si occupa di contenere le informazioni sulle coordinate dell’astronave del giocatore, sul colore attuale, un riferimento al timer che fa scattare ogni n secondi il colore, e i metodi che descrivono lo spostamento nelle varie direzioni dell’astronave. Le coordinate dell’astronave verranno poi disegnate dal metodo paintComponent della label.</p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n Classi spawner</h1>\r\n</div>\r\n<p>Gli oggetti delle varie classi xSpawner sono implementazioni dell’interfaccia Spawner. Si occupano di tenere traccia in strutture dati apposite, delle posizioni dei nemici/stelle/etc generati, e contiene i metodi necessari per aggiornarne le posizioni/generarne di nuovi. Questi metodi sono lanciati dai listener dei timer nella finestra principale.</p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n Collision controller (class)</h1>\r\n</div>\r\n<p>L’oggetto di questa classe contiene i riferimenti agli spawner, e ogni volta che vengono lanciati i suoi metodi di controllo, questo scorre tutti gli oggetti gia’ generati, e controlla che non siano avvenute collisioni tra nemici/astronave nemici/colpi, ed in tal caso si occupa di avvisare le entita’ coinvolte, in modo tale che la situazione venga subito gestita.</p>\r\n<p> </p>\r\n<div>\r\n <h1>\r\n Gaming timer (class)</h1>\r\n</div>\r\n<p>Questa classe contiene un contatore che rappresenta i secondi rimasti prima della fine della partita, e un oggetto di classe Timer sul quale e’ registrato un listener che ogni tot tempo decrementa il contatore. La classe ha inoltre i metodi necessari per aggiornare il timer incrementandolo (quando vengono colpiti nemici di colore esatto).</p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,126,159,'und',0,'<p> </p>\r\n<div>\r\n <h1>\r\n funzionamento generale</h1>\r\n</div>\r\n<p>· CREAZIONE E CARATTERISTICHE DEGLI OGGETTI</p>\r\n<p>Il programma parte dal main,che e’ statico.<br />\r\n Viene allocato un oggetto della classe MiaFinestra. Parte quindi il costruttore di quest’ultima, che definisce dimensioni e proprieta’ grafiche. Viene istanziato il pannello che verra’ inserito nella finestra, e vengono istanziati i vari oggetti della classe Timer.</p>\r\n<p>Sul timer1 vengono registrati 2 listener, uno per la simulazione dell’attrito (l’astronave che si sposta lentamente all’indietro) e uno per il movimento delle “stelle” (il pulviscolo sullo sfondo). Si fa partire il timer1. Sul timer2 viene aggiunto il listener per la generazione di nemici. E viene fatto partire. Sempre sul timer1 si aggiunge il listener per l’aggiornamento posizione nemici, e quello per l’aggiornamento dei colpi sparati (quindi gia’ generati).<br />\r\n Viene allocato un oggetto di classe GamingTimer, e viene attivato.<br />\r\n Viene inoltre creato un altro oggetto di classe Timer (che pero’ verra’ attivato solo quando la partita sara’ terminata, e su questo viene registrato un listener che fa chiudere la finestra quando dopo n secondi dall’attivazione del timer,questo scatta).<br />\r\n Viene poi registrato sulla finestra un listener che scatta quando vengono premuti tasti e la finestra e’ selezionata.<br />\r\n </p>\r\n<p>Tornando al pannello (oggetto di classe MioPannello) che abbiamo istanziato e inserito nella finestra, parte quindi il costruttore MioPannello(), viene creata la label di classe MiaLabel e viene inserita nel pannello, e viene creato l’oggetto di classe LabelStat, seconda label che viene sempre inserita nel pannello. In fase di creazione delle 2 label, sono passati i riferimenti incrociati affinche’ si possa meglio tenere traccia all’interno delle label, degli altri componenti grafici.</p>\r\n<p>Guardando a come l'oggetto di classe MiaLabel viene instanziato, parte il costruttore, e vengono istanziati gli oggetti di classe MiaFinestra (per contenere il riferimento alla finestra che contiene la label) , StarSpawn,EnemySpawner,Astronave,BulletSpawner e CollisionController.<br />\r\n Inoltre all’interno dell’oggetto MiaLabel e’ presente un flag (inizializzato a false) chiamato printGameOverStat che verra’ utilizzato come indicato in seguito.<br />\r\n Centrale nel funzionamento dell’applicazione e’ il metodo paintComponent contenuto nella classe MiaLabel che “sovrascrive” il metodo ereditato dalla classe madre JLabel.<br />\r\n Questo parte alla creazione della MiaLabel, e ogni volta che viene chiamato il metodo repaint() dell’oggetto MiaLabel. Quando il metodo paintComponent() parte, innanzitutto controlla il valore del flag printGameOverStat: se e’ false non fa nulla, altrimenti stampa una schermata che indica il punteggio raggiunto, con la scritta GAMEOVER, e attiva il timer4 della MiaFinestra (timer che quando scattera’, fara’ partire il listener che vi e’ registrato sopra, che fa il dispose() della finestra, ovvero la chiude, e quindi chiudendosi la finestra termina il processo).<br />\r\n Se quindi il flag e’ false, allora si scorre innanzitutto nell’array che contiene le coordinate x (e su quello delle y) dei punti che rappresentano il pulviscolo/stelle sullo sfondo, e si stampano quelle presenti nell’array contenuto nell’oggetto di classe StarSpawner. Per come la StarSpawner gestisce l’array contenente coordinate, appena, scorrendolo, si incontra un elemento non inizializzato, vuol dire che dopo non c’e’ piu’ nulla e quindi si puo’ smettere di scorrere. Quindi in questo modo abbiamo stampato i puntini che rappresentano stelle/pulviscolo dello sfondo in movimento, nella loro posizione attuale.<br />\r\n Ora e’ il momento di disegnare le navicelle nemiche. Si scorre sulle strutture dati che, all’interno dell’oggetto di classe EnemySpawner, contengono le coordinate delle navicelle nemiche. Ogni navicella ha un flag che indica se e’ stato colpito o no. Se risultava precedentemente colpito, non scompare dalla struttura dati, ma il metodo paintComponent non lo disegna. Il procedimento e’ il seguente: il paintComponent scorre sulla struttura dati contenente coordinate nemici. Se incontra elemento non inizializzato, allora per quanto detto sopra, non ci sono piu’ nemici da disegnare, e quindi fa break ed esce dal ciclo. Altrimenti se trova un elemento inizializzato, nel caso in cui il valore del flag sia ==0, allora il nemico non e’ stato colpito, quindi lo disegna normalmente saltando avanti nel ciclo. Altrimenti il valore del flag indichera’ la fase attuale in cui il nemico COLPITO si trova nel ciclo dell’esplosione, quindi disegna (in base al valore del flag che essendo >0 indica il cammino nell’esplosione) una forma gialla/rossa/arancione che rappresenta una vampata di fuoco. Nel caso in cui il flag sia uscito fuori range massimo, vuol dire che non solo e’ stato colpito ma ha anche terminato la fase di esplosione, quindi semplicemente non viene disegnato nulla.<br />\r\n Ora il metodo paintComponent() stampa i proiettili generati (sempre secondo lo stesso procedimento utilizzato per il pulviscolo)<br />\r\n Ora per il disegno dell’astronave controllata dal giocatore: l’astronave viene disegnata sia se e’ iniziata la fase dell’esplosione (perche’ il giocatore ha esaurito tutte le vite disponibili) sia se questa non e’ iniziata.<br />\r\n Nel caso in cui non sia iniziata, viene disegnata solo l’astronave (utilizzando le coordinate contenute nell’oggetto di classe Astronave chiamato pg e controllando il valore dello stato dei propulsori che quindi andranno disegnati/non disegnati). Se l’esplosione e’ iniziata, si fa come sopra, tuttavia seguendo un procedimento simile a quello utilizzato per il “cammino dell’esplosione” per le navicelle nemiche, viene disegnata una diversa forma (rappresentante il fuoco) al di sopra dell’astronave (per dare l’effetto dell’astronave coperta di fiamme), e si incrementa il flag che rappresenta la fase dell’esplosione. Se incrementando la fase dell’esplosione, il frame esce fuori un determinato range, vuol dire che anche l’esplosione e’ terminata, quindi facciamo sparire l’astronave e incrementiamo ancora il flag. Quando il flag superera’ anche il secondo limite, viene attivato il flag printGameOverStat, e quindi si arrivera’ nel caso descritto precedentemente.</p>\r\n<p>Tornando a guardare alla seconda label inserita nel pannello (cioe’ l’oggetto di classe LabelStat), quando questo e’ inizializzata, parte il costruttore che inizializza le vite a 3 e il punteggio a 0.Anche questa fa override del metodo paintComponent della classe madre JLabel, per disegnare nella parte bassa del pannello (in cui e’ inserita) il tempo rimanente (ottenuto lanciando il metodo getTime() dell’oggetto GamingTimer) e le vite rimaste.</p>\r\n<p>Gli spawner che abbiamo inizializzato sopra, conterranno strutture dati apposite per contenere i riferimenti agli oggetti istanziati, con relativi flag e coordinate. In genere, tranne nel caso della classe StarSpawner, gli altri spawner hanno una inner class che definisce gli oggetti associati (es classe Bullet che e’ inner class della classe BulletSpawner e classe Enemy che e’ inner class della classe EnemySpawner) e che viene utilizzata per istanziare oggetti, ognuno con le proprie coordinate/flag, di cui si terra’ traccia in strutture dati generali nello Spawner.</p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p>· COMPORTAMENTO DINAMICO</p>\r\n<p>Il comportamento dinamico (movimento, reazione, azione) dell’applicazione e’ implementato attraverso un uso massiccio di oggetti di classi listener da noi definiti, che implementano relative interfacce a seconda del segnale che vogliono “intercettare”.</p>\r\n<p><strong><u>Timer timer1</u></strong>: su questo sono registrati oggetti di classi ListenerTimerStelle, ListenerPerAttrito ,ListenerTimerAggiornaEnemy, ListenerTimerAggiornaBullet.</p>\r\n<p>Scatta ogni 100 ms, lanciando un segnale, che e’ intercettato dagli oggetti delle varie classi Listener registrati su di esso. Quindi ogni 100 ms parte il metodo actionPerformed() del ListenerTimerStelle, che si occupa di lanciare i metodi update() e spawn() dell’oggetto di classe StarSpawn. Questo fara’ muovere le stelle e ne fara’ generare una nuova. Inoltre lancia immediatamente il metodo per il controllo delle eventuali collisioni tra colpi sparati e nemici, dell’oggetto di classe CollisionController<br />\r\n Sempre per il timer1, parte anche il metodo actionPerformed() dell’oggetto di classe ListenerPerAttrito: questo controlla che l’astronave non si trovi troppo vicina al bordo inferiore, e se cosi’ non e’ richiama il metodo attrito() dell’oggetto di classe Astronave. Questo metodo sposta verso il basso le coordinate y dell’oggetto pg di classe Astronave, e aggiorna anche la posizione dei propulsori.<br />\r\n Sempre per il timer1 parte l’actionPerformed() dell’oggetto di classe ListenerTimerAggiornaEnemy, che si occupa di richiamare il controllo dell’oggetto classe CollisionController per valuta che non ci siano collisioni tra nemici e colpi, poi chiama il metodo update() dell’oggetto EnemySpawner, richiama il controllo collisione tra player e astronavi nemiche (sempre dall’oggetto di classe CollisionController) e lancia infine il repaint() della Label.<br />\r\n Secondo lo stesso principio funziona anche per il ListenerTimerAggiornaBullet.<br />\r\n <br />\r\n </p>\r\n<p><strong><u>Timer timer2</u></strong>: vi e’ registrato oggetto di classe ListenerTimerSpawnEnemy</p>\r\n<p>Il funzionamento di questo timer e’ simile a quello del timer1, con la differenza che questo timer ha un clock molto piu’ ampio, perche’ i nemici vanno generati piu’ lentamente del pulviscolo di sfondo.</p>\r\n<p><strong><u>Timer timer4:</u></strong> vi e’registrato un Listener che fa il dispose() della finestra. Questo timer dura molto piu’ degli altri, e non e’ attivato se non quando nella Label e’ stata stampata la schermata di GAME OVER.</p>\r\n<p>L’oggetto di classe ListenerKeyUp, che implementa l’interfaccia KeyListener, definisce i metodi che partiranno quando verra’ premuto un tasto (o due assieme, visto che sono permessi anche gli spostamenti in diagonale, e gli spari menrte ci si sposta) o quando verra’ rilasciato.<br />\r\n </p>\r\n<p>Quando il CollisionController si accorge che abbiamo colpito un nemico di un colore corretto, dice alla LabelStat di incrementare il punteggio, altrimenti di decrementarlo, e analogamente gestisce il tempo rimanente.<br />\r\n Ogni volta che l’oggetto di classe CollisionController si accorge che un nemico viene colpito, gestisce il flag dell’oggetto Enemy che avvia l’animazione dell’esplosione ed il flag che indica che il proiettile e’ esploso e non va disegnato. Allo stesso modo quando il giocatore si scontra con un nemico, fa quanto sopra ed inoltre avvisa l’oggetto di classe LabelStat chiamandone il metodo colpito(). Questa, se le vite non sono terminate, si limita a decrementarle. Altrimenti se le vite sono terminate, avvia l’animazione relativa all’esplosione dell’astronave del giocatore, che quando sara’ terminata portera’ alla rappresentazione della schermata di GAME OVER, con relativa attivazione del timer4 per il dispose della finestra.</p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><br />\r\n <strong><u>CONDIZIONE TERMINAZIONE PARTITA:</u></strong></p>\r\n<p>· SE PERDIAMO TUTTE LE VITE:</p>\r\n<p style=\"margin-left:35.4pt;\">CollisionController (se giocatore colpito)->lancia colpito() della LabelStat..->La LabelStat se si accorge che le vite sono terminate->imposta il flag animazione esplosione sull’oggetto Astronave->ad ogni nuovo paintComponent si prosegue con l’esplosione->terminata la quale e’ impostato il flag printGameOverStat->questo disegna screen di game over e attiva timer4->dopo n secondi parte il segnale dal timer4, che fa partire il metodo dell’oggetto classe Listener registratovi, che fa il dispose() della finestra ,che si chiude, e quindi il processo termina.</p>\r\n<p>· SE SCADE IL TEMPO</p>\r\n<p style=\"margin-left:35.4pt;\">Il tempo di gioco rimanente e ‘gestito dall’oggetto di classe GamingTimer. Ogni volta che e’ aggiornato, questo lancia il metodo repaint() dell’oggetto di classe LabelStat. Questa quindi dovra’ all’interno del metodo paintComponent() ridisegnare la label col nuovo tempo, ma prima di fare questo controlla che non sia scaduto: in tal caso imposta il flag printGameOverStat nell’altra label a true, quindi al prossimo paintComponent dell’oggetto MiaLabel, verra’ disegnata la schermata di GameOver, verra’ attivato quindi il timer4 e dopo n secondi parita’ segnale, che fara’ partire il metodo actionPerformed() del listener registrato sul timer4, che lancera’ il dispose() della finestra.</p>\r\n','','full_html'),('node','blog',0,127,160,'und',0,'<p><img alt=\"\" src=\"http://i.imgur.com/U5MVX.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i.imgur.com/JPFMW.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i.imgur.com/JtRhp.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i.imgur.com/IqCEy.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i.imgur.com/djomU.jpg\" /></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i.imgur.com/2NBxl.jpg\" /></p>\r\n','','full_html'),('node','blog',0,129,162,'und',0,'<p><a href=\"/sites/default/files/files/polygonwar.rar\">SorgentiJavaPolygonWar.rar</a></p>\r\n','','full_html'),('node','forum',0,131,170,'und',0,'<p>Innanzitutto mi scuso se non è la sezione Adatta, in ogni caso scrivo qui per coloro che hanno già esperienze nell'utilizzo di FRAPI per la creazione di API REST.</p>\r\n<p>Sotto una prima osservazione mi riesce difficile capire come grazie a questo software si riescano a creare delle API, allora mi era sorto un enorme dubbio. Ma cos'è in realtà un API?</p>\r\n<p>Googlando ho trovato che API sta per <i><b>Application Programming Interface</b></i> <b>API</b> (<i>Interfaccia di Programmazione di un'Applicazione</i>) si indica ogni insieme di <span class=\"new\">procedure</span> disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per l'espletamento di un determinato compito all'interno di un certo programma. (fonti Wikipedia).</p>\r\n<p>Quindi una routine di funzioni che permettono la realizzazione di qun qualcosa. Ma la domanda mia è la seguente:</p>\r\n<p>Se io decido ad esempio di realizzare qualcosa in PHP , ad esempio la gestione e la visualizzazione di una tabella (due API differenti), come utilizzo frapi per permettere ciò? Non posso direttamente creare pagine in PHP che permettano di fare ciò attraverso l'aiuto di mysql molto semplicemente?</p>\r\n<p>Non mi è chiara ancora l'utilità di FRAPI sinceramente. anxche perchè guardando il video tutorial su questo link: http://getfrapi.com/ non si capisce chiaramente cos'è che fà di preciso. vorrei delle delucvidazioni a riguardo.</p>\r\n<p>Dato che mi trovo, nel caso riuscissi a creare queste BENEDETTE API (facendo sempre l'esempio della modifica e visualizzazione di una tabella), come le utilizzo per la creazione di un Modulo DRUPAL? non ho capito bene come mettere in comune le cose. Se qualcuno può delucidarmi anche su questo.</p>\r\n<p>Ringrazio anticipatamente chi mi aiuta nella comprensione</p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,132,171,'und',0,'<p>Gestire i file sui dispositivi con iOS (iPhone, iPad e iPod) può essere davvero difficile, ma con <strong>FNFileManager </strong>puoi avere il pieno controllo della cartella <em>Documents.</em></p>\r\n<p><a data-mce-=\"\" href=\"http://www.iprog.it/blog/wp-content/uploads/2011/09/fnfilemanager_esempio.png\"><img alt=\"\" class=\"size-medium wp-image-1797 alignright\" data-mce-=\"\" height=\"300\" src=\"http://www.iprog.it/blog/wp-content/uploads/2011/09/fnfilemanager_esempio-154x300.png\" title=\"fnfilemanager_esempio\" width=\"154\" /></a></p>\r\n<p>Download Demo: <a data-mce-=\"\" data-redirect-href-updated=\"true\" dir=\"ltr\" href=\"https://github.com/fabiosoft/FNFileManager\" rel=\"nofollow\" target=\"_blank\" title=\"https://github.com/fabiosoft/FNFileManager\">https://github.com/fabiosoft/FNFileManager</a></p>\r\n<p>Facciamo una panoramica sulle tre funzioni principali di questa libreria statica:</p>\r\n<h3>\r\n <object classid=\"d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0\" height=\"210\" width=\"320\"><param name=\"quality\" value=\"high\" /><param name=\"movie\" value=\"http://www.youtube.com/watch?v=MSvyjGspJJI\" /><embed height=\"210\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" quality=\"high\" src=\"http://www.youtube.com/watch?v=MSvyjGspJJI\" type=\"application/x-shockwave-flash\" width=\"320\"></embed></object></h3>\r\n<p>[<a href=\"http://www.youtube.com/watch?v=MSvyjGspJJI\" target=\"_blank\">http://www.youtube.com/watch?v=MSvyjGspJJI</a>] - il video potrebbe non vedersi qui.</p>\r\n<h3>\r\n Salva un documento</h3>\r\n<p>Il metodo "<strong>saveFile</strong>" ha due parametri, entrambi obbligatori:</p>\r\n<p><strong>FileName </strong>di tipo NSString indica il nome del file, <strong>DEVI </strong>includere l'estensione del documento.</p>\r\n<p><strong>StringToSave </strong>di tipo NSString la stringa che vuoi salvare nel documento.</p>\r\n<blockquote>\r\n <p>Ex:</p>\r\n <pre>\r\nFNFileManager *fileManager=[[[FNFileManager alloc]init]autorelease];\r\nNSString *stringToSave=@"Hello FNFileManager!";\r\nNSString *fileStatus=[fileManager saveFile:@"example.txt" withString:stringToSave];</pre>\r\n</blockquote>\r\n<p><strong>saveFile</strong> ritorna <em>nil </em>se c'è stato un errore ed il file non è stato salvato con successo.</p>\r\n<h3>\r\n Leggi il documento</h3>\r\n<p>Il metodo "<strong>readFile</strong>" ha soltanto un parametro, ovviamente, obbligatorio:</p>\r\n<p><strong>FileName </strong>di tipo NSString indica il nome del file che si desidera leggere, <strong>DEVI </strong>includere l'estensione del documento.</p>\r\n<blockquote>\r\n <p>Ex:</p>\r\n <pre>\r\n[code lang="obj-c"]FNFileManager *fileManager=[[[FNFileManager alloc]init]autorelease];\r\nNSString *textSaved=[fileManager readFile:@"example.txt"];</pre>\r\n</blockquote>\r\n<p><strong>readFile</strong> ritorna <em>nil </em>se il file non esiste oppure è corrotto, altrimenti conterrà il testo letto.</p>\r\n<h3>\r\n Cancella Documento</h3>\r\n<p>Il metodo "<strong>deleteFile</strong>" ha soltanto un parametro, ovviamente, obbligatorio:</p>\r\n<p><strong>FileName </strong>di tipo NSString indica il nome del file che vuoi eliminare, <strong>DEVI </strong>includere l'estensione del documento e l'azione non può essere annullata.</p>\r\n<blockquote>\r\n <p>Ex:</p>\r\n <pre>\r\nFNFileManager *fileManager=[[[FNFileManager alloc]init]autorelease];\r\nBOOL returnDel=[fileManager deleteFile:@"example.txt"];</pre>\r\n</blockquote>\r\n<p><strong>deleteFile</strong> ritorna <em>YES </em>se il file è stato cancellato con successo, altrimenti ritorna <em>NO.</em></p>\r\n<p><em>PS: prova il progetto su un dispositivo reale e non sul simulatore.</em></p>\r\n','','filtered_html'),('node','blog',0,133,172,'und',0,'<p> </p>\r\n<p class=\"rtejustify\">Essendo in costante crescita il numero di persone che utilizzano sia tablet che smartphone nonchè il web come mezzo di lavoro e/o di svago, è stato quasi d'obbligo far nascere un nuovo framework che permetta, a chiunque abbia un sito internet o abbia intenzione di crearlo, di poterlo ottimizzare per tutti i terminali mobili.</p>\r\n<p class=\"rtejustify\">Il framework in questione è iWebKit.</p>\r\n<p class=\"rtejustify\">iWebKit è basato quasi interamente su HTML, ciò permette a chiunque di apprendere facilmente e con rapidità il metodo di utilizzo.</p>\r\n<p class=\"rtejustify\">Essendo al momento la migliore soluzione per l'ottimizzazione di siti internet, è stato utilizzato per una più corretta visualizzazione del sito ccmmma.uniparthenope.it su smartphone e tablet (ovviamente senza escludere che può essere tranquillamente visitato da altri dispositvi come laptop, pc desktop, ecc...).</p>\r\n<p class=\"rtejustify\">Il progetto prevede il restyling dell'intera interfaccia grafica ottimizzata, appunto, per smartphone e tablet. </p>\r\n<p class=\"rtejustify\">Le sezioni implementate sono:</p>\r\n<p class=\"rtejustify\"> - <strong>Previsioni</strong></p>\r\n<p class=\"rtejustify\"> - <strong>Strumenti</strong></p>\r\n<p class=\"rtejustify\"> - <strong>Modelli</strong></p>\r\n<p class=\"rtejustify\"> - <strong>Info</strong></p>\r\n<p class=\"rtejustify\">Nella sezione <em>previsioni</em> è possibile visualizzare tutti i modelli di mappe tematiche messe a disposizione dell'utente, nonchè, cliccando su una qualsiasi delle mappe, è possibile accedere in una sezione dove è possibile cercare una mappa tematica che più soddisfi l'esigenze del visitatore. Ciò è possibile tramite una form dove si può modificare il tipo di modello, la località, il tipo di visualizzazione, la data e l'ora. Vista la grossa mole di luoghi da ricercare, è stata implementata una funzione <em>autocomplete</em> per scremare i luoghi man mano che si digita la località desiderata.</p>\r\n<p class=\"rtejustify\">Nelle sezioni <em>Strumenti, Modelli e Info</em>, sono presenti, rispettivamente,<i> </i>gli strumenti utilizzati per le rilevazioni, i tipi di modelli consultabili e le informazioni riguardanti il ccmmma.</p>\r\n<p class=\"rtejustify\">Il progetto è stato implementato utilizzando come linguaggio di programmazione il PHP con l'ausilio di JavaScript, JQuery.</p>\r\n<p class=\"rtejustify\">Rilascerò quanto prima una guida sull'utilizzo del framework iWebKit 5.5</p>\r\n','','filtered_html'),('node','forum',0,134,173,'und',0,'<p> </p>\r\n<div class=\"rtecenter\" style=\"\">\r\n Progetto Sebeto @ UniParthenope SoC: Summer of Code!</div>\r\n<div class=\"rtecenter\" style=\"\">\r\n <span style=\"font-size:16px;\"><strong>Sfida #1: HPC in Java</strong></span></div>\r\n<div>\r\n </div>\r\n<div>\r\n Date le due librerie:</div>\r\n<div>\r\n http://math.nist.gov/javanumerics/jama/</div>\r\n<div>\r\n http://code.google.com/p/aparapi/</div>\r\n<div>\r\n </div>\r\n<div>\r\n Creare una versione della libreria Jama che sfrutta il parallelismo offerto dalle aparapi. Valutare performance ed alternative (sempre in Java). Ad esmepio, valutare l'uso dei JTP: http://docs.oracle.com/javase/tutorial/essential/concurrency/</div>\r\n<div>\r\n </div>\r\n<div>\r\n Leggere: http://www.cs.ncl.ac.uk/research/trs/papers/772.pdf</div>\r\n<div>\r\n </div>\r\n<div>\r\n Pubblicare le proprie esperienze ed il risultato del proprio lavoro su http://students.uniparthenope.it/blogs</div>\r\n<div>\r\n </div>\r\n','','full_html'),('node','blog',0,135,174,'und',0,'<p><a href=\"https://www.dropbox.com/s/tq1c698qf3evvuy/Guida.pdf\">Guida in PDF</a></p>\r\n<p>Siccome non ci sono grandissime guide sull’utilizzo del framework FRAPI, meglio scriverne una in italiano. Iniziamo a creare un' API che restituisce il nome e il prezzo di una lista di prodotti.</p>\r\n<p>La nostra API se riceve un parametro uguale ad 1 mostra un certo output, altrimenti restituisce errore.</p>\r\n<hr />\r\n<p align=\"center\">---Per l’installazione locale e la configurazione vi rimando per il momento alla pagina ufficiale <a href=\"http://frapi.github.com/installing/index.html\">http://frapi.github.com/installing/index.html</a> ----</p>\r\n<hr />\r\n<p>Bene, se avete seguito la guida senza errori, andando su <u>admin.frapi</u> si apre la pagina di login. Le credenziali di base per l’accesso sono:</p>\r\n<p>Username : admin</p>\r\n<p>Password : password</p>\r\n<p> </p>\r\n<p>Una volta effettuato l’accesso, si può incominciare a creare l’azione.</p>\r\n<p> </p>\r\n<hr />\r\n<h2>\r\n - Creazione dell'azione</h2>\r\n<p>Clicchiamo su <strong><em>Actions</em></strong>, si apre una pagina contente azioni predefinite.</p>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"Scarica la guida\" src=\"http://desmond.imageshack.us/Himg811/scaled.php?server=811&filename=schermata072456139alle2.png&res=landing\" style=\"width: 640px; height: 478px; \" /></p>\r\n<p> </p>\r\n<p>Nella barra laterale (<em>Submenu</em>) cliccare su “<strong><em>Add new Action</em></strong>”.</p>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"Scarica la guida\" src=\"http://desmond.imageshack.us/Himg11/scaled.php?server=11&filename=schermata072456139alle2.png&res=landing\" style=\"width: 534px; height: 603px; \" /></p>\r\n<p> </p>\r\n<p>Adesso bisogna compilare il form per creare la nostra azione. Se la nostra api deve ricevere uno o più parametri, basta cliccare su “<strong><em>Add Parameter</em></strong>” e poi assegnare il nome del parametro.</p>\r\n<p>Compilato il form cliccare su <em>Save</em>. Adesso bisogna sincronizzare il pannello cliccando su <strong><em>Sync Now</em></strong>.</p>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"Scarica la guida\" src=\"http://desmond.imageshack.us/Himg338/scaled.php?server=338&filename=schermata072456139alle2.png&res=landing\" style=\"width: 640px; height: 123px; \" /></p>\r\n<p> </p>\r\n<p>Bene abbiamo creato la nostra API. E’ possibile già testare l’API tramite il pannello tester.</p>\r\n<p> </p>\r\n<hr />\r\n<p> </p>\r\n<h2>\r\n - Creazione dell'errore</h2>\r\n<p> </p>\r\n<p>Clicchiamo su Errors e poi, dal <em>Submenu</em>, “<strong><em>Add new Error</em></strong>”. Completiamo il form e clicchiamo su Submit.</p>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"Scarica la guida\" src=\"http://desmond.imageshack.us/Himg802/scaled.php?server=802&filename=schermata072456140alle2.png&res=landing\" style=\"width: 640px; height: 629px; \" /></p>\r\n<p> </p>\r\n<p>Bene, per il momento è possibile chiudere il pannello di gestione FRAPI e passare finalmente alla programmazione dell’API.</p>\r\n<br />\r\n<hr />\r\n<p> </p>\r\n<p> </p>\r\n<h2>\r\n - Programmazione dell'API</h2>\r\n<p> </p>\r\n<p>Per aprire il nostro file bisogna recarsi nella cartella principale di FRAPI, andare su custom/actions. Adesso basta aprire il nostro file con un qualsiasi editor e incominciare a programmare.</p>\r\n<p> </p>\r\n<p>Prima di tutto notiamo che FRAPI ha già inserito del codice all’interno del file. E’ importante non cancellare né classi, né metodi. Infatti, i metodi sono i metodi di richiamo dell’API ( GET, POST, HEAD, PUT, DELETE ).</p>\r\n<p>Quindi, se volessimo richiamare un metodo POST, tutto il codice della nostra API sarà scritto all’interno del metodo POST.</p>\r\n<p> </p>\r\n<p>Nel nostro caso, utilizzeremo il metodo GET, quindi tutto il nostro codice sarà scritto all’interno del metodo <em>executeGet() .</em></p>\r\n<p>Il primo controllo è verificare se il parametro passato in GET è uguale ad 1. Per ricavare il parametro, FRAPI ci mette a disposizione un metodo:</p>\r\n<p class=\"rtecenter\" style=\"\">getParam(‘<em>nomeparametro</em>’, self::”<em>tipo_parametro”);</em></p>\r\n<p>I tipi di parametri sono:</p>\r\n<ul>\r\n <li>\r\n Integer: <em>self::TYPE_INT</em>, <em>self::TYPE_INTEGER</em>, <em>self::TYPE_LONG</em></li>\r\n <li>\r\n Double: <em>self::TYPE_DOUBLE</em></li>\r\n <li>\r\n Float: <em>self::TYPE_FLOAT</em></li>\r\n <li>\r\n Boolean: <em>self::TYPE_BOOLEAN</em></li>\r\n <li>\r\n String: <em>self::TYPE_STRING</em></li>\r\n <li>\r\n Array: <em>self::TYPE_ARRAY</em></li>\r\n <li>\r\n Safe Output (htmlentities): <em>self::TYPE_OUTPUT</em></li>\r\n <li>\r\n File: <em>self::TYPE_FILE</em></li>\r\n</ul>\r\n<p> </p>\r\n<p>Dunque:</p>\r\n<p> </p>\r\n<p style=\"margin-left:70.8pt;\"> </p>\r\n<pre>\r\npublic function executeGet() { \r\n\r\n$valid = $this->hasRequiredParameters($this->requiredParams); \r\n\r\n if ( $valid instanceof Frapi_Error ) { \r\n\r\n return $valid; \r\n\r\n }\r\n\r\nif ( $this->getParam('is_yes',self::TYPE_OUTPUT) == 1 ){\r\n\r\n //Codice API\r\n\r\n /*Creiamo un’ array associativo con all’interno tutti i campi che ci interessano*/\r\n\r\n $this->data['Prodotto'][0] = array(\r\n\r\n 'name' => 'MacBook Pro',\r\n\r\n 'price' => '999 €'\r\n\r\n );\r\n \r\n\r\n $this->data['Prodotto'][1] = array(\r\n 'name' => 'Hp',\r\n \r\n 'price' => '899 €'\r\n \r\n\r\n );\r\n \r\n\r\n $this->data['Prodotto'][2] = array(\r\n 'name' => 'Hp',\r\n \r\n 'price' => '799 €'\r\n \r\n\r\n );\r\n} else {\r\n\r\n //Richiamo errore FRAPI\r\n\r\n throw new Frapi_Error ('NO_TRUE');\r\n\r\n}\r\n\r\nreturn $this->toArray();\r\n\r\n}</pre>\r\n<p>Benissimo. L'API restituisce l'array associativo popolato dal nome e il prezzo del prodotto. Adesso testiamo la nostra API.</p>\r\n<p> </p>\r\n<hr />\r\n<h2>\r\n - Tester FRAPI</h2>\r\n<p>Accediamo al pannello Tester di FRAPI e completiamo il form per ottenere l'output desiderato.</p>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"Scarica la guida\" src=\"http://img706.imageshack.us/img706/6808/schermata082456141alle1.png\" style=\"width: 786px; height: 405px; \" /></p>\r\n<p>Clicchiamo <em>Run Test, </em>ed ecco il nostro risultato! (<strong>Beautify</strong>)</p>\r\n<p class=\"rtecenter\" style=\"\"><img alt=\"\" src=\"http://desmond.imageshack.us/Himg525/scaled.php?server=525&filename=schermata082456141alle1.png&res=landing\" style=\"width: 640px; height: 314px; \" /></p>\r\n<p class=\"rtecenter\" style=\"\"> </p>\r\n<hr />\r\n<h2>\r\n - Consumare l'API da PHP</h2>\r\n<p>Utilizziamo la nostra API per stampare una tabella prodotti. Utilizzeremo <strong>CURL</strong> per mandare la richiesta all'API, dopodichè utilizzeremo la funzione PHP<em> json_decode() </em>per decodificare l'output di CURL.</p>\r\n<p>Quindi:</p>\r\n<p> </p>\r\n<pre>\r\n<?\r\n\r\n//Inizializziamo CURL con l'indirizzo della nostra API e con i relativi parametri\r\n$s = curl_init("http://api.frapi/hello_world.json?is_yes=1");\r\n\r\ncurl_setopt($s, CURLOPT_RETURNTRANSFER, TRUE);\r\n\r\n$json = curl_exec($s);\r\n\r\ncurl_close($s);\r\n\r\n$obj = json_decode($json);<span class=\"Apple-tab-span\" style=\"white-space:pre\"> </span>\r\n\r\n?>\r\n\r\n<table border="1">\r\n\r\n<tr><td>Nome Prodotto</td><td>Prezzo</td></tr>\r\n\r\n<? foreach($obj->Prodotto as $value){ ?>\r\n\r\n<tr><td><? echo $value->name; ?></td><td><? echo $value->price; ?></td></tr>\r\n\r\n<? } ?>\r\n\r\n</table></pre>\r\n<p> </p>\r\n<p>Ed ecco il nostro output!</p>\r\n<p class=\"rtecenter\"><img alt=\"Scarica la guida\" src=\"http://desmond.imageshack.us/Himg716/scaled.php?server=716&filename=schermata082456141alle1.png&res=landing\" style=\"width: 173px; height: 112px; \" /></p>\r\n<p class=\"rtecenter\"> </p>\r\n','','full_html'),('node','blog',0,136,175,'und',0,'<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120408222305.jpeg\" /></p>\r\n<p><span style=\"color: rgb(51, 51, 51); font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; line-height: 19px; \">Ciao a tutti ragazzi con l’arrivo del nuovo OS di casa apple sono state aggiunte tante succose novità e prima di ripartire per le vacanze vorrei mostravene almeno una , da questo momento in poi è davvero molto semplice inviare un tweet, una mail ecc direttamente dalla nostra app ma non perdiamoci in chiacchiere e iniziamo subito con la creazione di un nuovo progetto di tipo cocoa application .</span></p>\r\n<h2>\r\n <span style=\"color: rgb(51, 51, 51); font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; line-height: 19px; \">Rechiamoci nel file AppDelegate.h e scriviamo il seguente codice :</span></h2>\r\n<div>\r\n <table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\r\n <tbody>\r\n <tr>\r\n <td>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">#import <Cocoa/Cocoa.h></p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@interface AppDelegate : NSObject <NSApplicationDelegate,NSSharingServicePickerDelegate,NSSharingServiceDelegate></p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@property (assign) IBOutlet NSButton *shareButton;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@property (assign) IBOutlet NSImageView *imageView;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@property(nonatomic,retain)IBOutlet NSTextView *textview;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">- (IBAction)condividi:(id)sender;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@property (assign) IBOutlet NSWindow *window;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@end</p>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n<p> </p>\r\n<h2 style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">\r\n <strong style=\"border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; \">Creiamo l’interfaccia grafica</strong></h2>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">Rechiamoci presso il file MainMenu.xib e impostiamo l’interfaccia grafica in questo modo :</p>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">1 textview</p>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">1 button</p>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">1 imageview</p>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \"><a href=\"/sites/default/files/images/20120408222448.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120408222448.png\" /></a></p>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \"> </p>\r\n<p style=\"border: 0px; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; \">Ora non ci resta che fare tutti gli opportuni collegamenti .</p>\r\n<p style=\"border: 0px; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; \">E’arrivato il momento di implementare il codice vero e proprio quindi ora tocca al file AppDelegate.m andiamo a scrivere il seguente codice :</p>\r\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\r\n <tbody>\r\n <tr>\r\n <td>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">#import “AppDelegate.h”</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@implementation AppDelegate</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@synthesize shareButton;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@synthesize textview;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@synthesize imageView;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \"> </p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">- (void)dealloc</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">{</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">[super dealloc];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">}</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">- (void)applicationDidFinishLaunching:(NSNotification *)aNotification</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">{</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">//inizializzo l’immagine del bottono share</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">[self.shareButton setImage:[NSImage imageNamed:NSImageNameShareTemplate]];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">[self.shareButton sendActionOn:NSLeftMouseDownMask];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">}</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">- (IBAction)condividi:(id)sender {</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">//creiamo un mutable array per inserire al suo interno il testo e l’immagini da condividere</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">NSMutableArray *shareObject=[NSMutableArray arrayWithObject:[self.textview string]];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">NSImage *image=[self.imageView image];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">if (image) {</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">[shareObject addObject:image];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">}</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">//creiamo l’oggetto per la condivisione lo allochiamo e lo inizializiamo con il mutable array</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">NSSharingServicePicker *sharingPicker=[[NSSharingServicePicker alloc]initWithItems:shareObject];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">//impostiamo il delegate</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">sharingPicker.delegate=self;</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">//mostra le condivisioni</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">[sharingPicker showRelativeToRect:[self.shareButton bounds] ofView:self.shareButton preferredEdge:NSMaxYEdge];</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">}</p>\r\n <p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">@end</p>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p> </p>\r\n<p style=\"border: 0px; font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif; margin: 10px 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(51, 51, 51); line-height: 19px; \">Il risultato finale dovrebbe essere simile a questo :</p>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120408222618.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120408222618.png\" /></a></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n','','filtered_html'),('node','blog',0,137,176,'und',0,'<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120408222305.jpeg\" /></p>\r\n<p><span>Ciao a tutti ragazzi con l’arrivo del nuovo OS di casa apple sono state aggiunte tante succose novità e prima di ripartire per le vacanze vorrei mostravene almeno una , da questo momento in poi è davvero molto semplice inviare un tweet, una mail ecc direttamente dalla nostra app ma non perdiamoci in chiacchiere e iniziamo subito con la creazione di un nuovo progetto di tipo cocoa application .</span></p>\r\n<h2>\r\n <span>Rechiamoci nel file AppDelegate.h e scriviamo il seguente codice :</span></h2>\r\n<div>\r\n <table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\r\n <tbody>\r\n <tr>\r\n <td>\r\n <p>#import <Cocoa/Cocoa.h></p>\r\n <p>@interface AppDelegate : NSObject <NSApplicationDelegate,NSSharingServicePickerDelegate,NSSharingServiceDelegate></p>\r\n <p>@property (assign) IBOutlet NSButton *shareButton;</p>\r\n <p>@property (assign) IBOutlet NSImageView *imageView;</p>\r\n <p>@property(nonatomic,retain)IBOutlet NSTextView *textview;</p>\r\n <p>- (IBAction)condividi:(id)sender;</p>\r\n <p>@property (assign) IBOutlet NSWindow *window;</p>\r\n <p>@end</p>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n<p> </p>\r\n<h2>\r\n <strong>Creiamo l’interfaccia grafica</strong></h2>\r\n<p>Rechiamoci presso il file MainMenu.xib e impostiamo l’interfaccia grafica in questo modo :</p>\r\n<p>1 textview</p>\r\n<p>1 button</p>\r\n<p>1 imageview</p>\r\n<p><a href=\"/sites/default/files/images/20120408222448.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120408222448.png\" /></a></p>\r\n<p> </p>\r\n<p>Ora non ci resta che fare tutti gli opportuni collegamenti .</p>\r\n<p>E’arrivato il momento di implementare il codice vero e proprio quindi ora tocca al file AppDelegate.m andiamo a scrivere il seguente codice :</p>\r\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\r\n <tbody>\r\n <tr>\r\n <td>\r\n <p>#import “AppDelegate.h”</p>\r\n <p>@implementation AppDelegate</p>\r\n <p>@synthesize shareButton;</p>\r\n <p>@synthesize textview;</p>\r\n <p>@synthesize imageView;</p>\r\n <p> </p>\r\n <p>- (void)dealloc</p>\r\n <p>{</p>\r\n <p>[super dealloc];</p>\r\n <p>}</p>\r\n <p>- (void)applicationDidFinishLaunching:(NSNotification *)aNotification</p>\r\n <p>{</p>\r\n <p>//inizializzo l’immagine del bottono share</p>\r\n <p>[self.shareButton setImage:[NSImage imageNamed:NSImageNameShareTemplate]];</p>\r\n <p>[self.shareButton sendActionOn:NSLeftMouseDownMask];</p>\r\n <p>}</p>\r\n <p>- (IBAction)condividi:(id)sender {</p>\r\n <p>//creiamo un mutable array per inserire al suo interno il testo e l’immagini da condividere</p>\r\n <p>NSMutableArray *shareObject=[NSMutableArray arrayWithObject:[self.textview string]];</p>\r\n <p>NSImage *image=[self.imageView image];</p>\r\n <p>if (image) {</p>\r\n <p>[shareObject addObject:image];</p>\r\n <p>}</p>\r\n <p>//creiamo l’oggetto per la condivisione lo allochiamo e lo inizializiamo con il mutable array</p>\r\n <p>NSSharingServicePicker *sharingPicker=[[NSSharingServicePicker alloc]initWithItems:shareObject];</p>\r\n <p>//impostiamo il delegate</p>\r\n <p>sharingPicker.delegate=self;</p>\r\n <p>//mostra le condivisioni</p>\r\n <p>[sharingPicker showRelativeToRect:[self.shareButton bounds] ofView:self.shareButton preferredEdge:NSMaxYEdge];</p>\r\n <p>}</p>\r\n <p>@end</p>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p> </p>\r\n<p>Il risultato finale dovrebbe essere simile a questo :</p>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120408222618.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120408222618.png\" /></a></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n','','full_html'),('node','forum',0,138,177,'und',0,'<p>Dato che sono alle prime armi nell'utilizzo di DRUPAL, volevo chiedere ai più esperti:</p>\r\n<p>è possibile creare un database e creare un modulo drupal che interagisca con esso? se si in che modo?<br />\r\n mi potete fare un semplice e banale esempio su una tabella?</p>\r\n<p>le tabelle devo crearle all'interno del db di drupal? oppure posso usare un DB a parte?</p>\r\n<p>se devo usare tabelle mie ''personali'' integrate nel db di drupa, come faccio a rendere ''generale'' il modulo se devo comunque indicare in PHP che la connession al db deve essere effettuata su quelle tabelle?</p>\r\n<p>Ho sentito parlare del modulo WEB FORM di drupal. potrebbe rappresentare una partenza per creare un modulo che interagisca con un DB?</p>\r\n<p>come faccio poi a gestire chi può usare il modulo e chi no?</p>\r\n<p>Ho un pò di confusione a riguardo. Vi prego di istruirmi e di darmi una mano, magari consigli su come poter sviluppare questo applicativo. Vi ringrazio</p>\r\n','','filtered_html'),('node','forum',0,139,178,'und',0,'<p><span class=\"messageBody\" data-ft=\"{"type":3}\"><span class=\"userContent\"><span>Ho installato FRAPI seguendo la guida passo passo, ma lanciando il server, al link students.uniphartenope.it:NUM_</span><wbr />PORTA mi da schermata bianca..a qualcun'altro è capitata sta cosa?</span></span></p>\r\n<p>Qualche consiglio?</p>\r\n','','filtered_html'),('node','blog',0,140,179,'und',0,'<p>Da quest'articolo potete scaricare la presentazione e il programma MJP. Il jar non funziona ancora al 100%, per cui vi lascio i file scompattati.<br />\r\n Avviatelo dalla riga di comando o se utilizzate sistemi operativi Windows potete lanciare con lo script "start" presente nei file.</p>\r\n<p>Il tutto si trova in un unico zip scaricabile da questo link: <a href=\"/sites/default/files/files/progetto.zip\">progetto.zip</a></p>\r\n<p>Nei prossimi articoli, vedremo come utilizzare programmi esterni con java.</p>\r\n<p> </p>\r\n<p> </p>\r\n<p><a href=\"http://students.uniparthenope.it/?q=node/119\"><<Make Java Projects - Tutorial</a><br />\r\n </p>\r\n<p class=\"rtecenter\"><strong><span style=\"font-size: 16px; \"><a href=\"http://students.uniparthenope.it/?q=node/103\"><span style=\"color: rgb(0, 0, 205); \">1</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/104\"><span style=\"color: rgb(0, 0, 205); \">2</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/109\"><span style=\"color: rgb(0, 0, 205); \">3</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/111\"><span style=\"color: rgb(0, 0, 205); \">4</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/114\"><span style=\"color: rgb(0, 0, 205); \">5</span></a><span style=\"color: rgb(0, 0, 205); \"> - </span><a href=\"http://students.uniparthenope.it/?q=node/116\"><span style=\"color: rgb(0, 0, 205); \">6</span></a><span style=\"color: rgb(0, 0, 205); \"> -</span> <a href=\"http://students.uniparthenope.it/?q=node/119\"><span style=\"color:#0000cd;\">7</span></a><span style=\"color:#0000cd;\"> </span><span style=\"color:#0000cd;\">-</span><span style=\"color: rgb(255, 0, 0); \"> 8</span></span></strong></p>\r\n<div>\r\n </div>\r\n','','full_html'),('node','forum',0,141,180,'und',0,'<p> </p>\r\n<p class=\"p1\">Salve a tutti!</p>\r\n<p class=\"p1\">Stavo leggendo un po' di documentazione...oltre alle classiche api di prenotazione esami e piano di studi, esiste un API che restituisca l'anagrafica dalla matricola o le tasse pagate??</p>\r\n<p class=\"p2\">C'è qualche db da consultare nel caso ci fosse la necessità di crearle??</p>\r\n<p class=\"p1\">Grazie. </p>\r\n','','filtered_html'),('node','forum',0,142,181,'und',0,'<p>Misteriosamente... l' API della biblioteca non è più reperibile. Qualcuno potrebbe aiutarmi a capire?</p>\r\n<p>Come è possibile che il virtual server smetta di funzionare improvvisamente (sempre che sia questo il problema)?</p>\r\n<p>http://students.uniparthenope.it:19091/library.json?request=giunta</p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,144,182,'und',0,'<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120909090957.jpeg\" /></p>\r\n<p><span style=\"font-size:14px;\">BTChat è una semplice libreria che permette di creare in maniere facile e veloce una chat per dispositivi ios .</span></p>\r\n<p><span style=\"font-size:14px;\">La comunicazione viene effettuata tramite il BT.</span></p>\r\n<p><span style=\"font-size:14px;\">La prima cosa da fare ovviamente è scaricare la libreria dal seguente indirizzo <a href=\"https://github.com/flexkid/BTChat\">link</a></span></p>\r\n<p><span style=\"font-size:14px;\">Questa classe necessita del framework <span style=\"color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif; line-height: 22px; \">GameKit quindi importatelo all'interno del vostro progetto , il prossimo passo è quello di importare i duei file </span></span><span style=\"color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; \">BTChat.h e .m all'interno del vostro programma . </span></p>\r\n<p><font color=\"#333333\" face=\"Helvetica, arial, freesans, clean, sans-serif\"><span style=\"font-size: 14px; line-height: 22px;\">All'interno del file scaricato potete trovare un progetto d'esempio come potete notare il tutto è realmente molto semplice .</span></font></p>\r\n<p><font color=\"#333333\" face=\"Helvetica, arial, freesans, clean, sans-serif\"><span style=\"font-size: 14px; line-height: 22px;\">Spero che vi possa essere utile ^_^</span></font></p>\r\n<p> </p>\r\n','','full_html'),('node','blog',0,145,184,'und',0,'<p>In questo tutorial vedremo come mandare in esecuzione altri programmi installati sul proprio pc utilizzando java.</p>\r\n<p>La classe da utilizzare è Process con il metodo Runtime.getRuntime().exec(); Process è una classe che appartiene al package "java.io"; può creare eccezioni di tipo "IOException", quindi la gestiamo con un blocco di try e catch.</p>\r\n<p>Quando utilizziamo questa classe, dobbiamo tener presente che essa opera esternamente alla Java Virtual Machine, pertanto può introdurre problemi di portabilità delle vostre applicazioni tra i diversi sistemi operativi.</p>\r\n<p>Per risolvere tale problema possiamo implementare un blocco d’istruzioni per ogni piattaforma e versione, poiché un blocco di codice implementato per Windows 7 può non funzionare per Windows XP (ovviamente può anche funzionare, quindi testate l'applicazione prima di implementare).</p>\r\n<p>Documentazione Oracle: <a href=\"http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html\">http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html</a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p>Esempio:</p>\r\n<pre>\r\nimport java.io.*;\r\n\r\nclass esempio{\r\n public static void main(String [] args){\r\n /*inserite il percorso del software da aprire;\r\n sotto piattaforma Windows bisogna inserire doppio "\\\\" invece di '\\'\r\n per definire le path, ad esempio*/\r\n String soft="C:\\\\Program Files\\\\CCleaner\\\\CCleaner.exe";\r\n \r\n //definire i blocchi di try e catch\r\n try{Process RunExe=Runtime.getRuntime().exec(soft);}\r\n catch(IOException e){\r\n System.out.println("ERRORE: software o percorso non trovato!");\r\n };\r\n }\r\n}\r\n\r\n</pre>\r\n','','full_html'),('node','new',0,146,185,'und',0,'<p>Da oggi è possibile utilizzare i database Oracle all'interno delle proprie pagine web in php mantenute nello spazio web linux offerto dal Progetto Sebeto.</p>\r\n<p>Documentazione a riguardo è consultabile qui: http://st-curriculum.oracle.com/obe/db/11g/r2/prod/appdev/opensrclang/phphol2010_db/php_db.htm</p>\r\n<p>NB: Non è necessario impostare l'ambiente. I database Oracle sono già usabili da PHP</p>\r\n<p>NB: Al momento non è disponibile alcun server demo, nè server dedicati alle attività degli studenti, è da ricordare, invece, il server mysql che supporta i database degli utenti. Per l'amministrazione usare http://students.uniparthenope.it/phpmyadmin con le proprie credenziali contenute nel file README presente nella propria directory $HOME.</p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,147,186,'und',0,'<p>Le API dell'università Parthenope sono in continua espansione grazie a programmatori come voi, oggi voglio presentarvi la mia.</p>\r\n<h1>\r\n RESTful Insegnamenti API</h1>\r\n<p><span>Pubblicata una prima versione dell'interfaccia RESTful per gli insegnamnti svolti della nostra università.</span></p>\r\n<h1>\r\n <span>Recupero Insegnamenti</span></h1>\r\n<p>Per recuperare gli insegnamenti disponibili ci basterà richiamare tramite GET la pagina base</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/insegnamenti.php</code></p>\r\n<p>In questo modo otterremo una risposta davvero enorme vista la quantità di insegnamenti disponibili, quindi possiamo sfruttare il parametro facoltativo <em>limit </em>che ci permetterà di limitare il risulato in questo modo:</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/insegnamenti.php?limit=3</code></p>\r\n<p>La risposta, in <em>application/json </em>sarà simile a questa:</p>\r\n<p><code>{<br />\r\n"meta": {<br />\r\n"total": 3,<br />\r\n"code": "200"<br />\r\n},<br />\r\n"insegnamento": [<br />\r\n{<br />\r\n"COD_INSE": "130",<br />\r\n"DESCRIZIONE": "ECONOMIA E FINANZA DELLE IMPRESE DI ASS.",<br />\r\n"DESC_BREVE": "ECONOMIA E FINANZA DELLE IMPRESE DI ASS.",<br />\r\n"DESCRIZIONE_NOITA": "INSURANCE ECONOMICS AND FINANCE"<br />\r\n},<br />\r\n{<br />\r\n"COD_INSE": "131",<br />\r\n"DESCRIZIONE": "ECONOMIA E FINANZA ORGANIZZ.COMPLESSE",<br />\r\n"DESC_BREVE": "ECONOMIA E FINANZA ORGANIZZ.COMPLESSE",<br />\r\n"DESCRIZIONE_NOITA": null<br />\r\n},<br />\r\n{<br />\r\n"COD_INSE": "132",<br />\r\n"DESCRIZIONE": "ECONOMIA E POLITICA AGRARIA",<br />\r\n"DESC_BREVE": "ECONOMIA E POLITICA AGRARIA",<br />\r\n"DESCRIZIONE_NOITA": null<br />\r\n}<br />\r\n<br />\r\n...<br /><br />\r\n ],<br />\r\n "disclaimer": {<br />\r\n "Description": null,<br />\r\n "Version": "1.0",<br />\r\n "Author": "Fabio Nisci",<br />\r\n "Author URI": "http:\\/\\/www.fabiosoft.com"<br />\r\n }<br />\r\n }</code></p>\r\n<h3>\r\n Note finali</h3>\r\n<p>Errori: Codice 200 -> tutto ok</p>\r\n<p>Errore 500 errore del server</p>\r\n<p>altro -> errore connessione db</p>\r\n<p>PARAMS limit -> imposta il limite delle righe ricevuto se non c'è le visualizza tutte</p>\r\n<p>In questo modo avremo a disposizione tutte le informazioni che ci interessano.</p>\r\n','','filtered_html'),('node','blog',0,148,187,'und',0,'<p>Le API dell'università Parthenope sono in continua espansione grazie a programmatori come voi, oggi voglio presentarvi la mia.</p>\r\n<h1>\r\n RESTful Corsi API</h1>\r\n<p><span>Pubblicata una prima versione dell'interfaccia RESTful per gli corsi svolti della nostra università.</span></p>\r\n<h1>\r\n <span>Recupero Corsi</span></h1>\r\n<p>Per recuperare i corsi di Laurea disponibili ci basterà richiamare tramite GET la pagina base</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/corsi.php</code></p>\r\n<p>In questo modo otterremo una risposta davvero enorme vista la quantità di corsi disponibili, quindi possiamo sfruttare il parametro facoltativo <em>limit </em>che ci permetterà di limitare il risulato in questo modo:</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/corsi.php?limit=3</code></p>\r\n<p>La risposta, in <em>application/json </em>sarà simile a questa:</p>\r\n<p><code>{<br />\r\n"meta": {<br />\r\n"total": 3,<br />\r\n"code": "200"<br />\r\n},<br />\r\n"corso": [<br />\r\n{<br />\r\n"COD_CORSO": "2002",<br />\r\n"DESCRIZIONE": "MATEMATICA",<br />\r\n"DESC_BREVE": "MATEMATICA",<br />\r\n"CODICE_MURST": "10101",<br />\r\n"DESCRIZIONE_NOITA": null<br />\r\n},<br />\r\n{<br />\r\n"COD_CORSO": "2003",<br />\r\n"DESCRIZIONE": "FISICA",<br />\r\n"DESC_BREVE": "FISICA",<br />\r\n"CODICE_MURST": "10102",<br />\r\n"DESCRIZIONE_NOITA": null<br />\r\n},<br />\r\n{<br />\r\n"COD_CORSO": "2004",<br />\r\n"DESCRIZIONE": "ASTRONOMIA",<br />\r\n"DESC_BREVE": "ASTRONOMIA",<br />\r\n"CODICE_MURST": "10103",<br />\r\n"DESCRIZIONE_NOITA": null<br />\r\n}<br />\r\n],<br />\r\n"disclaimer": {<br />\r\n"Description": "Corsi di Laurea Universit\\u00e0 Parthenope",<br />\r\n"Version": "1.0",<br />\r\n"Author": "Fabio Nisci",<br />\r\n"Author URI": "http:\\/\\/www.fabiosoft.com"<br />\r\n}<br />\r\n}</code></p>\r\n<p>Possiamo inoltre usare il parametro <em>desc </em>che ci permetterà di "ricercare" un determinato corso per descrizione, ricordiamoci solo di sostituire i caratteri speciali come lo spazio con i relativi HTMLpercent escape:</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/corsi.php?desc=ingegneria%20info</code></p>\r\n<p>ed otterremo una risultato simile a questo:</p>\r\n<p>{<br />\r\n "meta": {<br />\r\n "total": 6,<br />\r\n "code": "200"<br />\r\n },<br />\r\n "corso": [<br />\r\n {<br />\r\n "COD_CORSO": "2217",<br />\r\n "DESCRIZIONE": "INGEGNERIA INFORMATICA",<br />\r\n "DESC_BREVE": "INGEGNERIA INFORMATICA",<br />\r\n "CODICE_MURST": "20515",<br />\r\n "DESCRIZIONE_NOITA": null<br />\r\n },<br />\r\n {<br />\r\n "COD_CORSO": "2218",<br />\r\n "DESCRIZIONE": "INGEGNERIA INFORMATICA E AUTOMATICA",<br />\r\n "DESC_BREVE": "INGEGNERIA INFORMATICA E AUTOMATICA",<br />\r\n "CODICE_MURST": "20516",<br />\r\n "DESCRIZIONE_NOITA": null<br />\r\n },</p>\r\n<p>....</p>\r\n<p><br />\r\n }</p>\r\n<h3>\r\n Note finali</h3>\r\n<p><br />\r\n Codice 200 -> tutto ok<br />\r\n Errore 430 -> errore nei parametri<br />\r\n Errore 500 errore del server, altro -> errore connessione db</p>\r\n<p>PARAMETRI<br />\r\n limit -> imposta il limite delle righe ricevuto se non c'è le visualizza tutte<br />\r\n desc -> cerca nei corsi per descrizione</p>\r\n<p><em>entrambi i parametri sono facoltativi, ma non possono essere usati insieme.</em></p>\r\n<p>In questo modo avremo a disposizione tutte le informazioni che ci interessano.</p>\r\n','','filtered_html'),('node','blog',0,149,188,'und',0,'<h1>\r\n RESTful Insegnamenti - Corsi API</h1>\r\n<p><span>Pubblicata una prima versione dell'interfaccia RESTful per gli insegnamnti svolti della nostra università.</span></p>\r\n<h1>\r\n <span>Recupero Insegnamenti in base al Corso di Laurea</span></h1>\r\n<p>Per recuperare i corsi di Laurea disponibili ci basterà richiamare tramite GET la pagina base</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/corsi.php</code></p>\r\n<p><code>{<br />\r\n"meta": {<br />\r\n"total": 3,<br />\r\n"code": "200"<br />\r\n},<br />\r\n"corso": [<br />\r\n{<br />\r\n"COD_CORSO": "2002",<br />\r\n"DESCRIZIONE": "MATEMATICA",<br />\r\n"DESC_BREVE": "MATEMATICA",<br />\r\n"CODICE_MURST": "10101",<br />\r\n"DESCRIZIONE_NOITA": null<br />\r\n},<br /> \r\n...\r\n<br />\r\n}<br />\r\n],<br />\r\n"disclaimer": {<br />\r\n"Description": "Corsi di Laurea Universit\\u00e0 Parthenope",<br />\r\n"Version": "1.0",<br />\r\n"Author": "Fabio Nisci",<br />\r\n"Author URI": "http:\\/\\/www.fabiosoft.com"<br />\r\n}<br />\r\n}</code></p>\r\n<p>In questo modo otterremo in risposta una lista di tutti i corsi di laurea che possiamo filtrare in base alle regola già documentate nell'API relativa ai corsi. Il dato che ci interessa è quello contenuto nella chiave: <code></code>"<code>COD_CORSO</code>" che ci permtterà di filtrare gli insegnamenti in base al corso di laurea richiesto.</p>\r\n<p><code>GET http://students.uniparthenope.it/~0124000074/api/insegnamenti_corsi.php?cdl=XXX</code></p>\r\n<p>Una volta ottenuto il codice del corso, possiamo inserirlo nel paramtro <em>cdl </em>presente nell'api <strong>insegnamenti-corsi.</strong></p>\r\n<p>La risposta, in <em>application/json </em>sarà simile a questa:</p>\r\n<p>{<br />\r\n "meta": {<br />\r\n "total": 76,<br />\r\n "code": "200"<br />\r\n },<br />\r\n "insegnamento": [<br />\r\n {<br />\r\n "COD_INSE": "469",<br />\r\n "DESCRIZIONE": "FISICA GENERALE II",<br />\r\n "DESC_BREVE": "FISICA GENERALE II",<br />\r\n "DESCRIZIONE_NOITA": "GENERAL PHYSICS II"<br />\r\n },<br />\r\n {<br />\r\n "COD_INSE": "1ING",<br />\r\n "DESCRIZIONE": "GEOMETRIA I",<br />\r\n "DESC_BREVE": "GEOMETRIA I",<br />\r\n "DESCRIZIONE_NOITA": "GEOMETRY I"<br />\r\n },<br />\r\n {<br />\r\n "COD_INSE": "7IM",<br />\r\n "DESCRIZIONE": "ANALISI MATEMATICA I CFU 6",<br />\r\n "DESC_BREVE": "ANALISI MATEMATICA I CFU 6",<br />\r\n "DESCRIZIONE_NOITA": "MATHEMATICAL ANALYSIS I"<br />\r\n },<br />\r\n {</p>\r\n<p>...</p>\r\n<p>}</p>\r\n<p>PS: il codice per Informatica è "0124"</p>\r\n<h3>\r\n Note finali</h3>\r\n<p>Codice 200 -> tutto ok<br />\r\n Errore 400 -> parametro mancante<br />\r\n Errore 500 errore del server, altro -> errore connessione db</p>\r\n<p>PARAMS<br />\r\n cdl -> codice del corso di laurea da cui estrarre gli insegnamenti. Ricavarlo dall'api "corsi"</p>\r\n<p>In questo modo avremo a disposizione tutte le informazioni che ci interessano.</p>\r\n','','filtered_html'),('node','forum',0,150,189,'und',0,'<p>SALVE..!!!</p>\r\n<p>ESSENDO IL MIO PRIMO ACCESSO IN SEBETO</p>\r\n<p>VOLEVO DELLE DRITTE PER POTER CARICARE LE MIE PAGINE DI PROVA </p>\r\n<p>SULL'INDIRIZZO STUDENTS.UNIPARTHENOPE/.......(MATRICOLA)</p>\r\n<p>COME SI FA'....</p>\r\n','','filtered_html'),('node','forum',0,151,190,'und',0,'<p>Il titolo della discussione rende tutto...sono impossibilitato ad usare FRAPI per rendere pubbliche le api sviluppate, ma finchè ci poteva essere errore nel codice stavo tentando una soluzione (nonostante lo script funzionasse senza errori all'esterno di FRAPI). </p>\r\n<p>Mi restituiva sempre questo messaggio:</p>\r\n<p>http://imageshack.us/photo/my-images/11/schermata092456184alle1.png/</p>\r\n<p><img alt=\"\" src=\"http://imageshack.us/a/img11/5549/schermata092456184alle1.png\" /></p>\r\n<p>fino a ieri mattina tutto ok...poi nel pomeriggio il nulla! È persino sparita la possibilità di sincronizzare le nuove Action, quindi tutto fermo.</p>\r\n<p>http://imageshack.us/photo/my-images/827/schermata092456184alle1.png/</p>\r\n<p><img alt=\"\" src=\"http://imageshack.us/a/img827/5549/schermata092456184alle1.png\" /></p>\r\n<p>Qualcuno ha idee o suggerimenti su come risolvere?</p>\r\n<p>Qualunque idee è bene accetta.</p>\r\n<p>Ciao</p>\r\n','','filtered_html'),('node','blog',0,152,191,'und',0,'<p>Dopo molto lavoro sono felice di annunciare a tutti voi la realizzazione dell'API di <strong>autenticazione</strong> degli studenti!</p>\r\n<p>Passando i parametri di matricola e password verifica e risponde se l'utente esiste oppure no, da l', da un'API terza possiamo effettuare tutte le nostre operazioni che magari richiedono l'autenticità di matricola e password.</p>\r\n<h1>\r\n Vediamo come funziona:</h1>\r\n<p>GET http://students.uniparthenope.it:54379/authentication.json?username=XXXXXXX&password=XXXXXX</p>\r\n<p>(ovviamente al posto delle X andranno i nostri dati personali)</p>\r\n<p>In caso di <strong>esistenza </strong>dello studente riceveremo una risposta positiva di messaggio sia di codice 200 come al solito.</p>\r\n<div>\r\n {</div>\r\n<div>\r\n "meta": {</div>\r\n<div>\r\n "Message": "Utente trovato",</div>\r\n<div>\r\n "code": "200"</div>\r\n<div>\r\n },</div>\r\n<div>\r\n </div>\r\n<div>\r\n In caso di <strong>inesistenza</strong> invece riceveremo una risposta negativa.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <div>\r\n "meta": {</div>\r\n <div>\r\n "Message": "Utente non trovato",</div>\r\n <div>\r\n "code": "404"</div>\r\n <div>\r\n },</div>\r\n</div>\r\n<p>Un modo davvero semplice che vi permetterà di risparmiare molte operazioni solo per la verifica delle informazioni ricevute dall'utente.</p>\r\n<h1>\r\n Vediamo un esempio su come possiamo usare l'API in <em>PHP:</em></h1>\r\n<p>if((isset($_GET['username']) && isset($_GET['password']))){</p>\r\n<p>//verifico credenziali</p>\r\n<div>\r\n $url = sprintf("http://students.uniparthenope.it:54379/authentication.json?username=%s&password=%s",$_GET['username'],$_GET['password']);<span class=\"Apple-tab-span\"> </span></div>\r\n<div>\r\n $s = curl_init($url);</div>\r\n<div>\r\n curl_setopt($s, CURLOPT_RETURNTRANSFER, TRUE);</div>\r\n<div>\r\n $json = curl_exec($s);</div>\r\n<div>\r\n curl_close($s);</div>\r\n<div>\r\n $obj = json_decode($json);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (isset($obj->{'meta'}->{'code'}) && $obj->{'meta'}->{'code'}=='200'){</div>\r\n<div>\r\n //Lo studente esiste</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else{</div>\r\n<div>\r\n //Lo studente non esiste</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n Ho usato le variabili username e password passate via GET ma l'utilizzo è pressocchè identico se usato altri metodi per passare le variabili.</div>\r\n<h1>\r\n Note Finali:</h1>\r\n<div>\r\n Codice 200 -> tutto ok</div>\r\n<div>\r\n Errore 400 -> parametri mancanti</div>\r\n<div>\r\n Errore 404 -> utente non esistente</div>\r\n<div>\r\n Errore 500 errore del server, altro -> errore connessione db</div>\r\n<div>\r\n </div>\r\n<div>\r\n PARAMS</div>\r\n<div>\r\n username, password</div>\r\n<p>In questo modo avremo a disposizione tutte le informazioni che ci interessano.</p>\r\n','','full_html'),('node','blog',0,153,192,'und',0,'<h1>\r\n RESTful Versamenti Effettuati API</h1>\r\n<div>\r\n Pubblicata una prima versione dell'interfaccia RESTful per i <strong>versamenti effettuati</strong> (pagati) verso la nostra università.</div>\r\n<h1>\r\n Recupero Versamenti</h1>\r\n<div>\r\n Per recuperare i versanti ci basterà richiamare tramite GET la pagina base</div>\r\n<div>\r\n </div>\r\n<div>\r\n GET http://students.uniparthenope.it:54379/payments.json?username=XXX&password=XXX</div>\r\n<div>\r\n </div>\r\n<div>\r\n In questo modo otterremo una risposta breve e concisa sulla situazione dell'utente.</div>\r\n<div>\r\n </div>\r\n<div>\r\n La risposta, in <em>application/json</em> sarà simile a questa:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <div>\r\n {</div>\r\n <div>\r\n "meta": {</div>\r\n <div>\r\n "total": 9,</div>\r\n <div>\r\n "code": "200"</div>\r\n <div>\r\n },</div>\r\n <div>\r\n "data": [</div>\r\n <div>\r\n {</div>\r\n <div>\r\n "COD_VERS": "1001",</div>\r\n <div>\r\n "DESCRIZIONE": "VERSAMENTO PRIMA RATA",</div>\r\n <div>\r\n "IMPORTO": "287"</div>\r\n <div>\r\n },</div>\r\n <div>\r\n {</div>\r\n <div>\r\n ...</div>\r\n <div>\r\n }</div>\r\n</div>\r\n<div>\r\n </div>\r\n<div>\r\n Nel caso volessimo i <a href=\"http://students.uniparthenope.it/?q=node/154\"><strong>pagamenti in debito</strong></a> dobbiamo rivolgerci all'apposita API.</div>\r\n<h1>\r\n Note finali</h1>\r\n<div>\r\n <div>\r\n Codice 200 -> tutto ok</div>\r\n <div>\r\n Errore 431 -> parametro mancante</div>\r\n <div>\r\n Errore 500 errore del server, altro -> errore connessione db</div>\r\n <div>\r\n </div>\r\n <div>\r\n PARAMS</div>\r\n <div>\r\n username, password -> credenziali studente</div>\r\n</div>\r\n<div>\r\n </div>\r\n<div>\r\n In questo modo avremo a disposizione tutte le informazioni che ci interessano.</div>\r\n<div>\r\n </div>\r\n','','filtered_html'),('node','blog',0,154,193,'und',0,'<h1>\r\n RESTful Versamenti in Debito API</h1>\r\n<div>\r\n Pubblicata una prima versione dell'interfaccia RESTful per i <strong>versamenti in debito</strong> (da pagare) verso la nostra università.</div>\r\n<h1>\r\n Recupero Versamenti</h1>\r\n<div>\r\n Per recuperare i versanti ci basterà richiamare tramite GET la pagina base</div>\r\n<div>\r\n </div>\r\n<div>\r\n GET http://students.uniparthenope.it:54379/duepayments.json?username=XXX&password=XXX</div>\r\n<div>\r\n </div>\r\n<div>\r\n In questo modo otterremo una risposta breve e concisa sulla situazione dell'utente.</div>\r\n<div>\r\n </div>\r\n<div>\r\n La risposta, in <em>application/json</em> sarà simile a questa:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <div>\r\n {</div>\r\n <div>\r\n "meta": {</div>\r\n <div>\r\n "total": 2,</div>\r\n <div>\r\n "code": "200"</div>\r\n <div>\r\n },</div>\r\n <div>\r\n "data": [</div>\r\n <div>\r\n {</div>\r\n <div>\r\n "COD_VERS": "1001",</div>\r\n <div>\r\n "DESCRIZIONE": "VERSAMENTO PRIMA RATA",</div>\r\n <div>\r\n "IMPORTO": "290"</div>\r\n <div>\r\n },</div>\r\n <div>\r\n {</div>\r\n <div>\r\n ...</div>\r\n <div>\r\n }</div>\r\n <div>\r\n </div>\r\n</div>\r\n<div>\r\n </div>\r\n<div>\r\n Nel caso volessimo i <a href=\"http://students.uniparthenope.it/?q=node/153\"><strong>pagamenti effettuati</strong> </a>dobbiamo rivolgerci all'apposita API.</div>\r\n<h1>\r\n Note finali</h1>\r\n<div>\r\n <div>\r\n Codice 200 -> tutto ok</div>\r\n <div>\r\n Errore 431 -> parametro mancante</div>\r\n <div>\r\n Errore 500 errore del server, altro -> errore connessione db</div>\r\n <div>\r\n </div>\r\n <div>\r\n PARAMS</div>\r\n <div>\r\n username, password -> credenziali studente</div>\r\n</div>\r\n<div>\r\n </div>\r\n<div>\r\n In questo modo avremo a disposizione tutte le informazioni che ci interessano.</div>\r\n<div>\r\n </div>\r\n','','filtered_html'),('node','blog',0,156,195,'und',0,'<p>In questo articolo vorrei descrivervi brevemente come utilizzare le api studenti con Arduino + Ethernet Shield.</p>\r\n<p>Utilizzando lo sketch già pronto <strong>WebClient</strong> reperibile all’interno dell’ide Arduino in File->Esempi->Ethernet basta modificare semplicemente lo sketch in questo modo:</p>\r\n<h2>\r\n Modifica 1:</h2>\r\n<pre>\r\n<span style=\"color: #CC6600;\">IPAddress</span> server(192,167,9,33); <span style=\"color: #7E7E7E;\">// IP di students.uniparthenope.it</span> </pre>\r\n<h2>\r\n Modifica 2:</h2>\r\n<pre>\r\n <span style=\"color: #CC6600;\">if</span> (client.<span style=\"color: #CC6600;\">connect</span>(server, 54379)) { \r\n <span style=\"color: #7E7E7E;\">//il client si collega all'indirizzo server con porta 54379</span>\r\n <span style=\"color: #CC6600;\"><b>Serial</b></span>.<span style=\"color: #CC6600;\">println</span>(<span style=\"color: #006699;\">"connected"</span>);\r\n <span style=\"color: #7E7E7E;\">// Costruzione della chiamata http standar 1.1</span>\r\n client.<span style=\"color: #CC6600;\">println</span>(<span style=\"color: #006699;\">"GET /authentication.json?username=0108001007&password=PASSWORD HTTP/1.1"</span>);\r\n <span style=\"color: #7E7E7E;\">//Importante: nello standar 1.1 è necessario inserire anche la riga host</span>\r\n client.<span style=\"color: #CC6600;\">println</span>(<span style=\"color: #006699;\">"Host: studentes.uniparthenope.it:54379"</span>); \r\n <span style=\"color: #7E7E7E;\">//chiudere sempre con una new-line</span>\r\n client.<span style=\"color: #CC6600;\">println</span>(); \r\n }\r\n\r\n</pre>\r\n<h2>\r\n Output dal monitor seriale:</h2>\r\n<pre style=\"background:#000;color:#f8f8f8\">\r\nconnecting...\r\nconnected\r\nHTTP/1.1 200 OK\r\nServer: nginx/1.2.1\r\nDate: Fri, 21 Sep 2012 17:00:43 GMT\r\nContent-Type: application/json; charset=utf-8\r\nTransfer-Encoding: chunked\r\nConnection: keep-alive\r\nX-Powered-By: PHP/5.3.10-1ubuntu3.2\r\nAccess-Control-Allow-Origin: *\r\nAccess-Control-Allow-Headers: *\r\nAccess-Control-Allow-Credentials: true\r\nAccess-Control-Allow-Methods: POST,GET,PUT,DELETE,HEAD\r\nAccess-Control-Max-Age: 604800\r\n\r\nbf\r\n{"meta":{"Message":"Utente trovato","code":"200"},"disclaimer":{"Description":"Verifica esistenza studente.","Version":"1.0","Author":"Fabio Nisci","Author URI":"http:\\/\\/www.fabiosoft.com"}}\r\n0\r\n\r\n\r\ndisconnecting.\r\n\r\n</pre>\r\n<h2>\r\n </h2>\r\n<h2>\r\n Esempi di casi d'uso:</h2>\r\n<p>Dare accesso a livello <em>hardware</em> ai soli studenti della nostra Università: a strumentazioni di laboratorio (stampanti, cnc, etc), aree ad eccesso limitato (tipo badge)...</p>\r\n<p> </p>\r\n<p> </p>\r\n<p class=\"rtecenter\"><span style=\"font-size:16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n','','full_html'),('node','blog',0,157,196,'und',0,'<p>Queste le slide del corso!</p>\r\n<p>http://box.uniparthenope.it/public.php?service=files&token=f83d7bd0cdd01eb732b416e65468940f1bb67820&file=/inserimento-mondo-lavoro/scienzeTecnologieLavoro_02.pptx</p>\r\n<p> </p>\r\n','','filtered_html'),('node','new',0,158,197,'und',0,'<p>Cari,</p>\r\n<p>vi invito a partecipare alle borse Google.</p>\r\n<p>Tutti i dettagli ed il modulo di partecipazione qui: http://www.google.com/intl/en/jobs/students/tech/internships/</p>\r\n<p>E' una grande opportunità da non perdere.</p>\r\n<p>Il forum dedicato alle disctussioni su questo argomento è raggiungibile facendo click <a href=\"http://students.uniparthenope.it/?q=forum/10\">qui</a>.</p>\r\n<p>Happy google-coding!</p>\r\n<p> </p>\r\n','','filtered_html'),('node','new',0,159,198,'und',0,'<p>In tema di internship questo è veramente cool, specialmente per i multimediali: https://jobs.ea.com/students/</p>\r\n<p>Non esitate a partecipare!</p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,160,199,'und',0,'<p>Oramai lo sapete...ho realizzato diverse API per la nostra Università Parthenope, ed ancora ho qualche asso nella manica in sviluppo...</p>\r\n<p>Oggi vi voglio presentare <strong><em>NISCIdocs</em></strong>!</p>\r\n<h3>\r\n Cos'è NISCIdocs?</h3>\r\n<p>NISCIidocs è una specifica implementazione di un "<em>framework</em>" completo per la descrizione, produzione, consumo, e visualizzare di <em>RESTful web services</em>. L'obiettivo principale di NISCIdocs è quello di distribuire, a sistemi client e sviluppatori, la documentazione per aggiornare allo stesso ritmo del server. La documentazione di metodi, parametri e modelli sono strettamente integrate nel codice server, consentendo alle API ed ai client di rimanere sempre in sincronia. Con NISCIdocs, la distribuzione, gestione, e l'utilizzo di API potenti non è mai stato così <strong>facile</strong>.</p>\r\n<h3>\r\n Perché è utile NISCIdocs?</h3>\r\n<div>\r\n Risolve contemporaneamente le esigenze di server, client e documentazione. Senza avere nessuna conoscenza o applicazione esterne lo sviluppatore terzo è in grado, compilando delle semplici caselle di input, di effettuare chiamate alla API e contgrollarne immediatamente il risultato. Le chiamate GET, PUT, POST e DELETE non sarrano più un mistero implementativo.</div>\r\n<div>\r\n </div>\r\n<hr />\r\n<div>\r\n Trovate tutto su <a href=\"http://students.uniparthenope.it/~0124000074/greta/viewer.html\">http://bit.ly/nisciDocsViewer</a> dov'è presente un viewer con le API da me realizzate e la loro documentazione dettagliata, a breve la home page si arrichirà di strumenti nuovi.</div>\r\n<div>\r\n </div>\r\n<div>\r\n Attendo idee, pareri e suggerimenti in un commento a questo articolo, oppure inviandomi una email a fabio.nisci@studenti.uniparthenope.it</div>\r\n<div>\r\n </div>\r\n<div>\r\n Saluti</div>\r\n','','filtered_html'),('node','blog',0,161,200,'und',0,'<h1 class=\"rtecenter\">\r\n <span style=\"font-family:lucida sans unicode,lucida grande,sans-serif;\"><strong>Bones | and | Dogs</strong></span></h1>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><em>Bones and Dogs</em> è un gioco ARCADE, ambientato in un normale giardinetto di casa. Il gioco consiste, comandando tramite tasti direzionali un cagnolino, di raccogliere all'interno del giardino quanti più ossicini possibili, in modo da totalizzare quanti più punti possibili. </span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Durante il gioco, il cane comandato dall'utente, attenderà il lancio di ossicini all'interno del giardino, che saranno lanciati a loro volta da un ragazzo. La difficoltà del gioco stà nell'evitare degli oggetti (che elencheremo nei prossimi post) che verranno lanciati insieme agli ossicini. Se si calpestano tali oggetti, il gioco finisce. All'interno del giardino saranno presenti Rocce e alberi per non rendere la vita facile al giocatore che comanda il nostro cagnolino.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>IDEE per implementazioni future:</strong> Durante il gioco, la velocità del lancio di oggetti (ossicini e oggetti che provocano il Game Over) aumenterà in modo da aumentare notevolmente le difficoltà di gioco.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Il Game verrà implementato in <strong>Java </strong>(per l'esame di programmazione III), sviluppato utilizzando l'IDE NetBeans 7.2. La descrizione del gioco avverrà in modo più dettagliata nei prossimi articoli, anche perchè con esempi illustrativi il gioco verrà reso più chiaro a chi li leggerà. L'implementazione della finestra di gioco verrà implementata come descritto nell'immagine sottostante:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i50.tinypic.com/2r5szed.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nella <strong>Finestra di Gioco</strong> faremo muovere tramite tasti direzionali il nostro cagnolino per raccogliere gli oggetti che verranno lanciati dalla sinistra della finestra di gioco.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Seguirà nel blocco dell' <strong>Animazione Uomo</strong> l'animazione del ragazzo che lancerà gli oggetti. Si tenderà a far coincidere i tempi dell'animazione con i tempi di lancio in modo da rendere quasi reale il lancio di oggetti.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Infine nel blocco <strong>Stat e Score</strong> verranno visualizzati il punteggio accumulato, e le vite disponibili del cane. NB: non è ancora deciso se segnalare il Game Over subito, oppure dopo la perdita di un TOT di vite. Verrà deciso in che modo nei prossimi articoli.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">nel prossimo Articolo illustreremo la creazione della finestra di gioco, con l'aggiunta di uno sfondo grafico in Java, e in che modo far interagire il nostro cagnolino all'interno di essa.</span></p>\r\n<p> </p>\r\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\r\n<center>\r\n <p><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\"><font color=\"red\"><b>1</b></font></a> - <a href=\"http://students.uniparthenope.it/?q=node/163\"> 2 </a> - <a href=\"http://students.uniparthenope.it/?q=node/176\"> 3 </a> - <a href=\"http://students.uniparthenope.it/?q=node/188\"> 4 </a> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\r\n <p> </p>\r\n</center>\r\n','','full_html'),('node','blog',0,162,201,'und',0,'<p> </p>\r\n<h1 class=\"rtecenter\">\r\n <span style=\"font-size:28px;\"><strong>Introduzione</strong></span></h1>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">Questa app, permette a tutti coloro che vogliono intraprendere la carriera universitaria, di effettuare la scelta più giusta, secondo le proprie abilità.\r\n\r\nEssa è stata sviluppata per l’OS Android (di Google) e per la nostra università ( Università degli studi di Napoli Parthenope).\r\n\r\n\r\nEssa si presenta all'utente con la pagina di Benvenuto (ImageButton Android):</span></span></pre>\r\n<div>\r\n </div>\r\n<div>\r\n <a href=\"http://students.uniparthenope.it/sites/default/files/images/20120510123608.png\" target=\"_blank\"><img alt=\"\" src=\"http://students.uniparthenope.it/sites/default/files/styles/large/public/images/20120510123608.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">Cliccando su di esso si ha accesso al menù (ListView Android con immagini)</span></span></pre>\r\n<div>\r\n </div>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120510123804.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123804.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\"><span style=\"font-size:18px;\">Da qui si puo' effettuare la scelta che si desidera e quindi avventurarsi nel mondo dell'Universita' degli Studi di Napoli Parthenope.\r\n\r\n\r\n\r\nIn questo caso l'utente ha cliccato su Manifestazioni di Orientamento:</span></span></pre>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120510123829.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123829.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">In quest altro caso invece l'utente ha cliccato su Offerta Formativa:</span></span></pre>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120510123855.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123855.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">Questa pagina è caratterizzata da 5 immagini(ImageButton Android) che permettono all'utente di selezionare la Brochure della Facolta' che desidera.\r\n\r\n\r\nIndovinate quale facolta' è stata selezionata per effettuare questa prova?</span></span></pre>\r\n<div>\r\n <a href=\"/sites/default/files/images/20120510123915.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20120510123915.png\" /></a></div>\r\n<div>\r\n </div>\r\n<pre>\r\n<span style=\"font-size:18px;\"><span style=\"font-family:courier new,courier,monospace;\">La peculiarità di questa pagina è che la Brochure può essere sfogliata come se fosse un vero e proprio libro.\r\n\r\n\r\n\r\n<span style=\"font-family:verdana,geneva,sans-serif;\"><u><strong>Copyright Papa Elio e Pugliese Antonio (P&P)</strong></u></span>\r\n\r\n\r\nIn allegato trovate l'apk per testare l'applicazione sul vostro device <u>ANDROID a partire dalla versione 3.0</u></span></span></pre>\r\n<p> </p>\r\n<p><font face=\"\'courier new\', courier, monospace\" size=\"4\"><u>Link:</u></font></p>\r\n<p><a href=\"http://box.uniparthenope.it/?app=files&getfile=download.php?file=/orientamento.apk\" style=\"font-family: \'courier new\', courier, monospace; font-size: 16px; \">http://box.uniparthenope.it/?app=files&getfile=download.php?file=/orientamento.apk</a></p>\r\n','','full_html'),('node','blog',0,163,202,'und',0,'<h1 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\">Bones | and | Dogs</span></h1>\r\n<h2 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\"><span style=\"color: rgb(47, 79, 79);\">Ambiente di Gioco</span></span></h2>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nell'articolo precedente abbiamo descritto in cosa consisteva il gioco, e in che modo si sarebbe strutturato a livello di GUI (graphical user interfaces). Oggi descriveremo in che modo è possibile creare un ambiente di gioco posizionando il nostro protagonista di game, e su cosa dovrà camminare. prima di passare al dunque elencheremo gli strumenti utilizzati fin'ora. In java sono state implementate per il momento le seguenti classi, che andremo ad elencarne il funzionamento in dettaglio all'interno di quest'articolo:</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe WindowsGame: </strong>Conterrà tutti gli oggetti dedicati al solo funzionamento del gioco. In pratica rappresenta la finestra descritta nell'articolo precedente. La classe è stata tramite un Jframe, importando la libreria <u>swing</u> di <u>javax</u>.</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">public class WindowsGame extends JFrame{\r\n...\r\n}\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">all'interno di questa classe andremmo ad inserire due pannelli: Uno per lo <strong>sfondo</strong> di gioco e un altro per le rimanenti <strong>componenti</strong> di gioco (nel nostro caso, il cane).</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe Wallpaper: </strong>conterrà l'inserimento dell'immagine di sfondo. La estenderemo come JPanel per far si che, come pannello, la possiamo aggiungere alla finestra</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">public class Wallpaper extends JPanel\r\n{\r\n...\r\n}\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">al suo interno andremo a costruire, tramite le librerie swing e awt utilizzando le classi <u>ImageIcon</u> e <u>Image</u> il nostro sfondo. indicheremo il path delle nostre immagini presenti nel workspace di Netbeans, e le andiamo a disegnare tramite la glasse <u>g2d</u> usando il metodo apposito al disegnare l'immagine.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nella classe della Finestra andriamo a costruire il pannello dedicato allo sfondo, e poi lo aggiungiamo alla finestra</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">w = new Wallpaper();\r\nadd(w);\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">il risultato è il seguente:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i46.tinypic.com/2u4u3di.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe Dog: </strong>è la classe che si occupa del nostro cane, che successivamente andremo a comandare con i nostri tasti direzionali. Per adesso ci occupiamo di come adattarlo all'immagine di sfondo che abbiamo inserito nella nostra finestra. Otteniamo l'immagine del nostro cane con la stessa sintassi citata per importare lo sfondo. Questa volta la classe non la estendiamo come pannello, ma in maniera più intelligente la andremo ad aggiungere in un'altra classe, che si occuperà di muovere, olgre al cane, altri ed eventuali oggetti.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\"><strong>Classe BoardGame: </strong>La classe più IMPORTANTE implementata fin'ora. E' incaricata a contenere il nostyro cane, e tutti gli oggetti che dovranno muoversi durante l'avvio del gioco. Per adesso ci occupiamo di inserire solo l'immagine del cane. Quindi la estendiamo come pannello e la inseriamo alla nostra finestra. Le sintassi di inserimento sono uguali a quelle dell'inseriemnto dello sfondo.</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">public class BoardGame extends JPanel\r\n{ ...\r\n public BoardGame() \r\n { dog = new Dog();\r\n ...\r\n }\r\n ...\r\n}\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">se aggiungiamo questo pannello alla nostra finestra, non otteniamo i risultati che vogliamo. Infatti lo sfondo coprirà completamente il nostro cane, viceversa se invertiamo gli add() il pannello contenente il cane coprirà lo sfondo. Come risolviamo? Ricercando sul web, ho scoperto che è possibile rendere trasparente un pannello. In questo caso rendiamo trasparente il pannello della Boardgame in questo modo:</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">Color c=new Color(tonalità ROSSO,tonalità BLU,tonalità VERDE,GAMMA);\r\n setBackground(c);\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">brevemente, spieghiamo che il valore di GAMMA a rendere opaco o meno il pannello di gioco, quindi se settiamo tutti i valori di RED, BLUE, GREEN al massimo, il colore che otteniamo è il WHITE, e se lo rendiamo opaco (opacizzando anche il pannello, e annullando i layout) otteniamo la sovrapposizione CORRETTA dei pannelli nella nostra finestra.</span></p>\r\n<p align=\"center\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i46.tinypic.com/4jxix5.png\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Nel prossimo articolo illustreremo la logica movimenti del cane in che modo si pensa di implementarli.</span></p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\r\n<p class=\"rtecenter\"><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\">1</a> - <strong><a href=\"http://students.uniparthenope.it/?q=node/163\"><span style=\"color:#ff0000;\"> 2 </span></a></strong> - <a href=\"http://students.uniparthenope.it/?q=node/176\"> 3 </a> - <a href=\"http://students.uniparthenope.it/?q=node/188\"> 4 </a> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6</a></span> <span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\r\n','','full_html'),('node','blog',0,164,203,'und',0,'<p>Il primo giorno di progettazione del videogioco si incentra nella scelta del motore grafico da utilizzare.</p>\r\n<p>Le scelte sono state diverse,tutte su per giu ottimali e rispondevano alla seguente classifica:</p>\r\n<p>Cryengine 3 (Crysis)</p>\r\n<p>Source SDK (Half Life 2)</p>\r\n<p>Id tech 5 (Doom 4)</p>\r\n<p>Unreal engine (Unreal tournament 3)</p>\r\n<p>Doom engine (Doom 2)</p>\r\n<p> </p>\r\n<p>Purtroppo per colpa delle limitate potenzialità delle nostre macchine da calcolo si è scelto di utilizzare il doom engine che si è utilizzato per famosissimi giochi FPS tra i quali ovviamente doom e duke nukem.</p>\r\n<p>Ci apprestiamo alla creazione della mappa per il progetto di blood rush parthenope . . . seguiranno aggiornamenti</p>\r\n<p> </p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,165,204,'und',0,'<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121010151640.png\" /></p>\r\n<p> </p>\r\n<p class=\"p1\"><b>iArduino è una semplice applicazione che consente la comunicazione tra iPhone e il microcontroller Arduino.</b><span class=\"s1\"><b> E' possibile effettuare la comunicazione tramite la </b></span><b> Ethernet shield o la wifly shield .</b></p>\r\n<p class=\"p1\"><b>il suo utilizzo è veramente molto semplice basta scegliere con quale delle due shield effettuare la comunicazione impostare i vari parametri e il gioco è fatto .</b></p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121010152019.jpeg\" /><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121010152020.jpeg\" /></p>\r\n<p> </p>\r\n<p class=\"p1\"><b>I gadget possibili da creare sono veramente molti qui potete trovare alcuni spunti :</b></p>\r\n<p><a href=\"http://www.youtube.com/watch?v=g1zDPa0lCEM&list=UUjQ2z1ygV9tv55QAc2q3JHA&index=1&feature=plcp\">http://www.youtube.com/watch?v=g1zDPa0lCEM&list=UUjQ2z1ygV9tv55QAc2q3JHA&index=1&feature=plcp</a></p>\r\n<p>http://www.youtube.com/watch?v=6rEkUmjcy50&feature=BFa&list=UUjQ2z1ygV9tv55QAc2q3JHA</p>\r\n<p><span style=\"color: rgb(51, 51, 51); font-family: Tahoma, Arial, Verdana, sans-serif; font-size: 13px;\">iArduino is very special app that allow you to communicate with Arduino via The ethernet shield and wif</span><span style=\"color: rgb(51, 51, 51); font-family: Tahoma, Arial, Verdana, sans-serif; font-size: 13px;\">ly shild if you want to use it in ways wifly you must create an ad hoc connection</span></p>\r\n<p> </p>\r\n<p><strong>Download</strong></p>\r\n<p>http://itunes.apple.com/us/app/iarduino/id507874147?mt=8</p>\r\n','','full_html'),('node','blog',0,166,205,'und',0,'<p><strong>mysql++</strong> è un programma eseguibile da riga di comando che permette di eseguire delle query su un database mysql. Ho scritto questo software in C++, studiando e sfruttando le funzioni dell'header mysql.h. Il codice segue il paradigma di programmazione ad oggetti e semplifica la gestione di un database mysql da riga di comando, in locale o da remoto. L'utente può connettersi al database con le sue credenziali, ed effettuare quali e quante query vuole. </p>\r\n<p>Oltre a poter essere usato come programma per interrogare un database, può essere usato come parte integrante dei vostri progetti che fanno uso di una base di dati basata sul DBMS MySQL, scritti in C++.</p>\r\n<p>Nel file .zip che allegherò all'articolo, troverete l'eseguibile (ovviamente solo per sistemi Unix/Linux) e i vari file .cpp e .h che compongono il programma. Potrete modificarli e usarli come vorrete, rispettando i termini della licenza GNU GPL.</p>\r\n<p>Non dimenticate che, per usare questi codici nei vostri programmi, al momento della compilazione, dovete linkare anche la libreria libmysql (nome su osx), altrimenti il vostro compilatore lancerà qualche imprecazione!</p>\r\n<p>Il codice è ampiamente commentato, in modo da chiarire ogni vostro dubbio. Se trovate bug non esitate a contattarmi o a commentare! <img alt=\"wink\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif\" title=\"wink\" width=\"20\" /></p>\r\n<p>...e perchè no, potete usarlo anche per esercitarvi in vista dell'esame di Basi di Dati! <img alt=\"wink\" height=\"20\" src=\"http://students.uniparthenope.it/sites/all/modules/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif\" title=\"wink\" width=\"20\" /></p>\r\n<p>L'uso da riga di comando è:</p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><a href=\"/sites/default/files/images/20121210151041.png\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20121210151041.png\" /></a></p>\r\n<p style=\"\">Più genericamente, quindi: <strong>mysql++ nome_utente hostname nome_database porta</strong></p>\r\n<p>Good Coding!!</p>\r\n<p><strong>Ecco il file .zip:</strong></p>\r\n<p><strong><a href=\"/sites/default/files/files/mysql%2B%2B_3.zip\">mysql++.zip</a></strong></p>\r\n','','full_html'),('node','forum',0,167,206,'und',0,'<p>In seguito ad un malfunzionamento sel server (adesso rispristinato) chiedo a chiunque abbia creato e quindi reso utilizzabili delle API di far ripartire il servizio ngix.</p>\r\n<p>Ecco il comanda da digitare:</p>\r\n<code>$HOME/opt/nginx-1.2.1/sbin/nginx</code>\r\n<p>Ho già provato a contattare i maggiori sviluppatori ma non posso raggiungere tutti, cosa che con questo post spero di fare il più velocemente possibile visto che alcuni utenti potrebbero usare le API e trovarsi spiazzati in queste ore.</p>\r\n<p>Grazie.</p>\r\n<p>PS: vi prego di segnalare eventuali risoluzioni o problemi qui sotto o con un email diretta.</p>\r\n<p>Ciao.</p>\r\n','','filtered_html'),('node','blog',0,168,207,'und',0,'<p>Salve a tutti, oggi comincio a lavorare sul progetto che ho deciso di sviluppare per l'esame di Programmazione III.JCrypto nasce dalla mia passione per la crittografia e sarà un programma che permetterà di conoscere e capire il funzionamento di alcuni dei cifrari più famosi, oltre a permettere di cifrare i propri testi. Per cominciare probabilmente svilupperò il cifrario di Cesare (per saperne di più: <a href=\"http://it.wikipedia.org/wiki/Cifrario_di_Cesare\">http://it.wikipedia.org/wiki/Cifrario_di_Cesare</a>) e poi cercherò di svilupparne altri. Ovviamente il tutto sarà decorato da interfaccia grafica e il mio intento è quello di continuare questo progetto oltre ai fini dell'esame, infatti cercherò nei prossimi mesi di implementare altri cifrari. Al più presto pubblicherò i primi passi dello sviluppo.</p>\r\n<p>PF</p>\r\n','','filtered_html'),('node','blog',0,169,208,'und',0,'<p><img alt=\"servizi parthenope by Fabio Nisci Logo\" src=\"http://students.uniparthenope.it/~0124000074/iosapp/img/renders/Icon-72%402x.png\" /> Servizi Parthenope offre la possibilità di accedere ai servizi riservati agli studenti dell’Università e non solo.</p>\r\n<ul>\r\n <li>\r\n ALCUNE DELLE FUNZIONI....</li>\r\n <br />\r\n <li>\r\n News dell’Università di Ateneo, delle Facoltà e dei dipartimenti</li>\r\n <li>\r\n Rubrica del personale Universitario</li>\r\n <li>\r\n Consultare i libri presenti nella Biblioteca</li>\r\n <br />\r\n <li>\r\n GLI STUDENTI DELLA UNIVERSITÀ PARTHENOPE POSSONO INOLTRE:</li>\r\n <br />\r\n <li>\r\n Accedere all'area riservata con le proprie credenziali</li>\r\n <li>\r\n Visualizzare il proprio piano di studi</li>\r\n <li>\r\n Monitorare la propria situazione finanziaria di Tasse e versamenti.</li>\r\n <li>\r\n Prenotare gli esami disponibili</li>\r\n <li>\r\n Cancellare le prenotazioni esami effettuate.</li>\r\n <li>\r\n Visualizzare Medie e Statistiche sul proprio andamento universitario.</li>\r\n</ul>\r\n<p>Vi lascio con la landing page dove potrete trovare screenshot e funzioni principali: <a href=\"http://students.uniparthenope.it/~0124000074/iosapp/\" target=\"_blank\">http://students.uniparthenope.it/~0124000074/iosapp/ </a></p>\r\n<p>Applicazione sviluppata da <a href=\"mailto:fabio.nisci@studenti.uniparthenope.it\">Fabio Nisci</a> & <a href=\"http://www.fabiosoft.com\" target=\"_blank\">fabiosoft.com</a></p>\r\n<p>Disponibile su <a href=\"https://itunes.apple.com/it/app/servizi-parthenope-uniparthenope/id571062892?mt=8\">AppStore</a>! </p>\r\n','','filtered_html'),('node','blog',0,170,209,'und',0,'<p>Il programma che sto per esporvi tratta la realizzazione di un servizio Java per la raccolta e la memorizzazione in un database relazionale mysql dei dati acquisiti dai servizi http://www.campanialive.it e http://www.campaniameteo.it in modo periodico.<br />\r\n Il software in questione oltre a popolare il db, dispone di una semplice interfaccia Java Desktop per visualizzare i dati memorizzati nel database.</p>\r\n<p>Il programma in sostanza acquisisce dai siti sopra citati i dati generati dai sensori delle stazioni meteo campane e li inserisce nell'apposite tabelle MySql per poi essere visualizzati dal programma di interfaccia Java Desktop.</p>\r\n<p>Innanzitutto c'è da precisare una distinzione dei dati acquisiti (che sono stati separati in tabelle diverse); dati statici, cioè quei dati che sarebbe stato inutile acquisire ogni volta, cioè il nome della stazione meteo, i dati di georeferenziazione ecc.; e dati dei sensori meteo, cioè la temperatura, l'umidità la velocità del vento ecc., insomma quei dati che sono acquisiti periodicamente soggetti ad aggiornamenti costanti.</p>\r\n<p> </p>\r\n<p>Per campanialive.it è stata utilizzata la libreria “html parser” che permette di trattare la pagina HTML come una pagina XML ed è stato creato un filtro apposito (basato su questa libreria) che ha permesso di acquisire i valori specifici che indicavano i sensori della stazione meteo.</p>\r\n<p>Per campaniameteo.it si è dovuta utilizzare la libreria “JTidy” che ha “trasformato” la pagina HTML in XML, correggendo gli errori di sintassi e permettendo l’acquisizione dei valori utili. </p>\r\n<p> </p>\r\n<p>Per quanto riguarda i dati delle stazioni meteo (id stazione, nome stazione , provincia, latitudine, longitudine, sito di provenienza) è stato riempito manualmente un ArrayList di “stazioni meteo” dove vi erano presenti tutte le stazioni meteo sia di campanialive.it che campaniameteo.it che, in base al sito di provenienza, verrà utilizzato il filtro apposito citato precedentemente per l’acquisizione dei valori utili.</p>\r\n<p> </p>\r\n<p>Per far si che la scansione dei sensori meteo avvenisse periodicamente una volta avviato il programma, si è utilizzata l’interfaccia ScheduledExecutorService della libreria java.util.concurrent.<br />\r\n Grazie ad una gestione multithread infatti, si è potuto far avviare ogni intervallo di tempo prestabilito il metodo “ExecuteQuery”, che va ad eseguire la Query per l’inserimento dei parametri acquisiti dagli url delle stazioni meteo.</p>\r\n<p> </p>\r\n<p>L’interfaccia di visualizzazione presenta due ComboBox che permettono la scelta, prima della provincia in una ComboBox, e poi (solo una volta scelta la provincia) la scelta della stazione meteo tra l’elenco che si viene a creare nell’altra ComboBox.</p>\r\n<p>Fatte entrambe le scelte cliccando su un pulsante, appare nella TextArea sottostante l’elenco dei sensori con i rispettivi parametri acquisiti alla rispettiva data e ora.</p>\r\n<p>Mentre in un Label poco sopra, appaiono altre info sulla stazione meteo selezionata.</p>\r\n<p> </p>\r\n<p>Il progetto completo e altro materiale di spiegazione del codice lo potete scaricare al seguente <a href=\"http://www.alsoft.it/Progetto%20Alessandro%20Liccardo%20P3.rar\" target=\"_blank\">link</a></p>\r\n','','filtered_html'),('node','blog',0,171,210,'und',0,'<p class=\"rtecenter\"><object width=\"420\" height=\"315\"><param name=\"movie\" value=\"//www.youtube.com/v/NclcqkGq8oU?version=3&hl=it_IT&rel=0\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"//www.youtube.com/v/NclcqkGq8oU?version=3&hl=it_IT&rel=0\" type=\"application/x-shockwave-flash\" width=\"420\" height=\"315\" allowscriptaccess=\"always\" allowfullscreen=\"true\"></embed></object></p>\r\n<p> </p>\r\n<p>Tuco 1.0 è una targhetta elettronica a porta: "intelligente", <em>open source</em> e <em>open hardware</em>.</p>\r\n<p>E' stata concepita per essere installata (teoricamente) sulle porte degli studi della nostra università.</p>\r\n<p>Lo scopo della targhetta è visualizzare in tempo reale informazioni del tipo: numero dello studio, docente/i, orari di ricevimento, contatti mail e/o telefonici etc etc... ma soprattutto <strong>avvisi</strong> presi in tempo reale da uno dei canali di comunicazione dell'università.</p>\r\n<p>E' stata realizzata sfruttando l'hardware del famoso progetto 100% Italiano chiamato "<a href=\"http://www.arduino.cc\">Arduino</a>".</p>\r\n<p>Questo prototipo in particolare usa: <a href=\"http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove\">Arduino Duemilanove</a>, <a href=\"http://arduino.cc/en/Main/ArduinoEthernetShield\">Ethernet Shield</a>, un router (modificato) WiFi <a href=\"https://www.google.it/search?num=10&hl=it&safe=off&biw=1600&bih=756&q=fonera+2100&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=ryF4UNSjGObc4QTJtoG4Dg\">Fonera 2100 </a>e un display <u>grafico</u> (<strong>G-</strong>LCD) parallelo <a href=\"https://www.google.it/search?num=10&hl=it&safe=off&biw=1600&bih=756&q=fonera+2100&um=1&ie=UTF-8&tbm=isch&source=og&sa=N&tab=wi&ei=ryF4UNSjGObc4QTJtoG4Dg#um=1&hl=it&safe=off&tbm=isch&sa=1&q=KS0107&oq=KS0107&gs_l=img.3..0i24.20551.20551.0.21015.1.1.0.0.0.0.159.159.0j1.1.0...0.0...1c.1.IPccq-BH3FE&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&fp=1569b646711603fa&bpcl=35243188&biw=1600&bih=756\">KS010<span style=\"font-size: 16px;\"><strong>7</strong></span></a></p>\r\n<p>Quindi da oggi, le targhette stampate sulle porte della nostra università, potrebbero trasformarsi da queste:</p>\r\n<p><a href=\"http://imageshack.us/a/img819/7645/32004523964655204561918.jpg\"><img alt=\"\" height=\"191\" src=\"http://imageshack.us/a/img819/7645/32004523964655204561918.jpg\" width=\"255\" /></a></p>\r\n<p>A qualcosa di molto simile a questa:</p>\r\n<p><a href=\"http://imageshack.us/a/img440/6928/dscn1128h.jpg\"><img alt=\"\" height=\"203\" src=\"http://imageshack.us/a/img440/6928/dscn1128h.jpg\" width=\"271\" /></a></p>\r\n<p> </p>\r\n<h2>\r\n Come è stato realizzato questo progetto?</h2>\r\n<h3>\r\n Parte hardware:</h3>\r\n<p>Dopo aver configurato le impostazioni del firmware <a href=\"http://www.dd-wrt.com/\">DD-WRT</a> (<em>open</em>) correttamente, il nostro router Fonera deve collegarsi alla propria rete WiFi in modalità repeater WiFi (una valida alternativa della Fonera è il<span class=\"productModel\"> <a href=\"http://www.tp-link.it/products/details/?categoryid=241&model=TL-WR702N\">TL-WR702N</a></span>)</p>\r\n<p>Il router andrà collegato all'ethernet shield con un normale cavo RJ45</p>\r\n<p>Il wiring fatto tra GLCD e Arduino si può trovare sulla documentazione ufficiale della librearia grafica GLCD per Arduino: <a href=\"http://www.arduino.cc/playground/Code/GLCDks0108\">http://www.arduino.cc/playground/Code/GLCDks0108</a></p>\r\n<p>Avendo l'accortezza, però, di cambiare i pin:</p>\r\n<p>GLCD - ARDUINO</p>\r\n<p>9 -> D2<br />\r\n 10 -> D3</p>\r\n<p>e</p>\r\n<div>\r\n 16 ->A1</div>\r\n<div>\r\n 15 ->A2</div>\r\n<div>\r\n </div>\r\n<div>\r\n Per poi ottenere questo:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <a href=\"http://img338.imageshack.us/img338/1044/wiu.png\"><img alt=\"\" height=\"495\" src=\"http://img338.imageshack.us/img338/1044/wiu.png\" width=\"472\" /></a></div>\r\n<h3>\r\n Parte software:</h3>\r\n<p>Dopo aver scaricato e configurato la propria <a href=\"http://www.arduino.cc/en/Main/software\">Arduino IDE</a>, bisogna scaricare ed installare nel path giusto la libreria grafica <a href=\"http://http://www.arduino.cc/playground/Code/GLCDks0108\">GLCD.</a></p>\r\n<p>All'interno della libreria grafica GLCD vanno modificato alcuni file in questo modo:</p>\r\n<p>In: glcd/glcd_Config.h</p>\r\n<p>Bisogna: commentare <b>#include "config/ks0108_Panel.h"</b> e togliere il commento da <b>//#include "config/ks0108_Manual_Config.h"</b></p>\r\n<p>In: glcd/config/ks0108_Manual_Config.h</p>\r\n<p>Bisgona: modificare la linea</p>\r\n<pre style=\"background: none repeat scroll 0% 0% rgb(0, 0, 0); color: rgb(248, 248, 248);\">\r\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData2Pin</span> 10\r\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData3Pin</span> 11\r\n</pre>\r\n<p>in</p>\r\n<pre style=\"background: none repeat scroll 0% 0% rgb(0, 0, 0); color: rgb(248, 248, 248);\">\r\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData2Pin</span> 2\r\n#<span style=\"color: rgb(226, 137, 100);\">define</span> <span style=\"color: rgb(137, 189, 255);\">glcdData3Pin</span> 3\r\n</pre>\r\n<p>Save & exit.</p>\r\n<p>Questa modifica è necessaria in quanto sia l'etherne shield che il glcd hanno in comune i pin 10 e 11, dunque per evitare incompatibilità tra i due hardware, la libreria va modificata come sopra</p>\r\n<p> </p>\r\n<h3>\r\n Il firmware:</h3>\r\n<p>Il firmware, da me scritto, è presente nella mia cartella personale su: <a href=\"http://box.uniparthenope.it/public.php?service=files&token=1d3ba5b17f36d42cbfd06cc402aeaf69636daa54&file=/Tuco\">box.uniparthenope.it</a></p>\r\n<p>Circa i punti salienti del firmware, posso aggiungere che la funzione principale loop (un loop infinito) è strutturata quanto segue:</p>\r\n<pre>\r\n<span style=\"color: rgb(204, 102, 0);\">void</span> <span style=\"color: rgb(204, 102, 0);\"><b>loop</b></span>() { \r\n logo();\r\n cornice();\r\n numero();\r\n mail();\r\n myConnect();\r\n parse();\r\n disconnect();\r\n}\r\n</pre>\r\n<p>In particolare:</p>\r\n<p><strong>Logo</strong></p>\r\n<p>è una funzione che restituisce due immagini bitmap, opportunamente realizzate con un tool (in java e <em>open</em>) all'interno della libreria grafica glcd.</p>\r\n<p>In particolare restituisce il logo della nostra università diviso in due metà.</p>\r\n<p> </p>\r\n<p><strong>Cornice</strong></p>\r\n<p>Grazie all'uso dell'oggetto gText ho strutturato il display in tre parti:</p>\r\n<p><a href=\"http://imageshack.us/a/img823/7963/immaginerv.jpg\"><img alt=\"\" height=\"172\" src=\"http://imageshack.us/a/img823/7963/immaginerv.jpg\" width=\"376\" /></a></p>\r\n<p>Questo mi permette di avere le informazioni divise per aree grafiche tematiche:</p>\r\n<p>Nella superiore visualizzo nome e cognome del/dei docenti e numero dello studio.</p>\r\n<p>Al centro tutte le informazioni DINAMICHE</p>\r\n<p>Nella parte inferiore l'orario di ricevimento</p>\r\n<p> </p>\r\n<p><strong>Numero</strong> e <strong>Mail</strong></p>\r\n<p>Sono due funzioni che stampano sul gText.centrale rispettivamente: numero stanza e l'indirizzo email.</p>\r\n<p> </p>\r\n<p><strong>myConnect</strong></p>\r\n<p>E' la funzione che mi permette di instaurare un collegamento in modalità <em>client</em>, tra la mia arduino ed il server sebeto.</p>\r\n<p>In particolare myConnect cerca di instaurare il collegamento, ma se dopo tre tentativi non riesce a stabilire una connessione, avviene un hardreset grazie alla macro definita nell'header del firmware.</p>\r\n<p>Una volta stabilita la connessione, effettuo il comando GET verso l'api news (settata in modo tale da restituire un solo avviso)</p>\r\n<p> </p>\r\n<p><strong>parse</strong></p>\r\n<p>E' la funzione che realizza il parsing del primo avviso restituito dall'api news, in particolare cerca la sottostringa <em>content</em> e memorizza il contenuto dei primi 300caratteri in un buffer.</p>\r\n<p>Il buffer viene stampato char by char con un ritardo di 50ms tra un char e l'altro.</p>\r\n<p> </p>\r\n<p><strong>disconnect</strong></p>\r\n<p>realizza la disconnessione dell'arduino dal server.</p>\r\n<p> </p>\r\n<h2>\r\n Note finali:</h2>\r\n<ul>\r\n <li>\r\n Non avendo un sistema di avvisi centralizzato e comune, in <em>questo prototipo</em>, è stato utilizzato l'api news a scopo dimostrativo.</li>\r\n <li>\r\n Se avessimo un sistema di avvisi centralizzato si potrebbe modificare il firmware in questo modo:</li>\r\n</ul>\r\n<ol class=\"rteindent1\">\r\n <li>\r\n una query join tra il numero di porta a cui è stato assegnato l'arduino e il DB dei docenti</li>\r\n <li>\r\n la query potrebbe restituire molte informazioni, ad esempio: nome, cognome, email, telefono etc etc</li>\r\n <li>\r\n il primo/i avviso di ogni docente di quello studio</li>\r\n <li>\r\n print delle informazioni scelte su glcd</li>\r\n</ol>\r\n<ul>\r\n <li>\r\n Il limite degli avvisi in <em>questo prototipo</em>, è stato fissato a 300 per ragioni di memoria, leggibilità e perchè fa più figo pensare gli avvisi come dei <strong>tweet</strong></li>\r\n <li>\r\n Essendo open source, ogni idea e modifica è facilmente realizzabile</li>\r\n <li>\r\n Nel video il display sembra rovinato o sbiadito: è un effetto dovuto ai filtri video di YouTube.</li>\r\n <li>\r\n Eventuali combinazioni hardware possono essere:</li>\r\n</ul>\r\n<ol class=\"rteindent1\">\r\n <li>\r\n Router -> Ethernet Shield -> Arduino -> Glcd (è il mio prototipo)</li>\r\n <li>\r\n Router -> <a href=\"http://arduino.cc/en/Main/ArduinoBoardEthernet\">Arduino Ethernet</a> -> Glcd</li>\r\n <li>\r\n <a href=\"http://arduino.cc/en/Main/ArduinoWiFiShield\">Arduino WiFi Shield</a> -> Arduino -> GLCD</li>\r\n <li>\r\n <a href=\"http://www.linksprite.com/product/showproduct.php?id=74&lang=en\">Arduino + WiFi </a>(su singola pcb) -> Glcd (la combinazione migliore per spazio)</li>\r\n</ol>\r\n<p> </p>\r\n<p><strong>Alcune foto:</strong></p>\r\n<p><a href=\"http://img35.imageshack.us/i/dscn1122t.jpg/\" target=\"_blank\"><img border=\"0\" src=\"http://img35.imageshack.us/img35/3417/dscn1122t.th.jpg\" /></a><br />\r\n <a href=\"http://img707.imageshack.us/i/dscn1127h.jpg/\" target=\"_blank\"><img border=\"0\" src=\"http://img707.imageshack.us/img707/9273/dscn1127h.th.jpg\" /></a><br />\r\n <a href=\"http://img716.imageshack.us/i/dscn1126yt.jpg/\" target=\"_blank\"><img border=\"0\" src=\"http://img716.imageshack.us/img716/981/dscn1126yt.th.jpg\" /></a></p>\r\n<p> </p>\r\n<h2>\r\n Il progetto, inoltre, è apparso su:</h2>\r\n<p> </p>\r\n<p>Arduino.cc: <a href=\"http://blog.arduino.cc/2012/11/13/tuco-1-0-a-digital-door-plate/\" target=\"_blank\">http://blog.arduino.cc/2012/11/13/tuco-1-0-a-digital-door-plate/</a></p>\r\n<p>Adafruit.com: <a href=\"http://www.adafruit.com/blog/2012/10/15/electronic-doorplate-with-arduino/\" target=\"_blank\">http://www.adafruit.com/blog/2012/10/15/electronic-doorplate-with-arduino/</a></p>\r\n<p> </p>\r\n<h1>\r\n </h1>\r\n<h1 class=\"rtecenter\">\r\n <a href=\"http://box.uniparthenope.it/public.php?service=files&t=a6e87afde0e5f32b0f3734027bfba36a\">Tuco 1.0 firmware</a></h1>\r\n<p class=\"rtecenter\"><a href=\"http://box.uniparthenope.it/public.php?service=files&t=a6e87afde0e5f32b0f3734027bfba36a\"><img alt=\"\" src=\"http://api.ning.com/files/W*UwkBxt9kVhZew1rsI2iG7Zc0pIEdNe2KiaTGrlsO2qAgsDlycKf2aJli2gMtz02sem8NRQxBkaRkRA5u0kgwXbOwFYIAfB/Tuco_01.jpg\" style=\"width: 97px; height: 97px;\" /></a></p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"> </p>\r\n<p class=\"rtecenter\"><span style=\"font-size: 16px;\"><span style=\"font-family: tahoma,geneva,sans-serif;\">Andrea Esposito<br />\r\n 108/1007</span></span></p>\r\n<p class=\"rtecenter\"><a href=\"http://www.google.com/recaptcha/mailhide/d?k=01m-mDCsJFfQsAaLrgzvL9Lg==&c=vSQbJUI9Aqlqz99YzeVhH3KYtGNS4BgR_7d2rB_OefmF5YwaZ_KXbuj35Lv6yThG\" target=\"_blank\"><img alt=\"\" src=\"http://services.nexodyne.com/email/customicon/OFeqqVJEXHjKHiO5bq0FICqaBADlPfyg0YIMBlt1DrM7TmDHh9TJz1E%3D/9JTPYwQ%3D/000000/ffffff/000000/6/image.png\" style=\"width: 296px; height: 21px;\" /></a></p>\r\n','','full_html'),('node','forum',0,172,211,'und',0,'<p><span style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \">Ciao a tutti!</span><br style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \" />\r\n <span style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \">Ragazzi qualcuno potrebbe linkarmi una buona guida (abbastanza approfondita) per l'uso delle regex? </span><br style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \" />\r\n <span style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \">Le uso da sempre e sinceramente perdo troppo tempo per capire come costruirne una. Quindi vorrei conoscere bene le regole per una buona costruzione di una regex.</span><br style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \" />\r\n <span style=\"color: rgb(51, 51, 51); font-family: \'lucida grande\', tahoma, verdana, arial, sans-serif; font-size: 13px; line-height: 17px; \">Vi ringrazio in anticipo! :D</span></p>\r\n','','filtered_html'),('node','blog',0,173,212,'und',0,'<p><span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \">Salve, ho appena finito il cifrario di Cesare, ci ho messo un po' di tempo perchè per rendere più efficiente l'algoritmo, ho approfondito l'aritmetica modulare, anche se ciò che mi ha impiegato più tempo è stato fare a cazzotti con l' interfaccia grafica dove , devo essere sincero, sono proprio scarso :) , ho perso molto tempo solo per decidere quale layout manager utilizzare, e poi quando avevo quasi deciso di disporre i componenti a mano, ho trovato il GroupLayout che per ora mi sta aiutando. Non so se sarà quello definitivo ma per ora ho optato per quello.</span><br style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \" />\r\n <span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \">Il mio obiettivo adesso e quello di implementate il cifrario di Vigenere e se ci riesco mi riterrei soddisfatto, sia perchè è il mio preferito, sia perchè è più complesso (rispetto a quello di Cesare).</span><br style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \" />\r\n <span style=\"color: rgb(59, 59, 59); font-family: Georgia, \'Times New Roman\', Times, serif; font-size: 13px; line-height: 20px; \">A presto avrete mie notizie. </span></p>\r\n','','filtered_html'),('node','blog',0,174,213,'und',0,'<p>Salve a tutti!</p>\r\n<p>Di recente molti studenti (incluso me) all'università, stanno lamentando il fatto di non saper configurare NetBeans per il deployment sul server sebeto, come suggerito dal prof. Montella.</p>\r\n<p>Non ho configurato NetBeans, bensì ho fatto una cosa più divertente . Ho scritto uno shell script che copia i files indicati nel path (o direttamente una cartella) nella vostra home sul server students.uniparthenope.it. </p>\r\n<p>Per farvi capire meglio:</p>\r\n<p>Avete dei files o delle cartelle che volete copiare sul vostro spazio personale? Bene. Avviato lo script, esso usa il comando di sincronizzazione remota di files, rsync, per copiare tutti i files contenuti nella directory che potete fornirgli, in una cartella nella vostra home sul server, chiamata<strong> "ultimi_file_copiati"</strong>.</p>\r\n<p>Lo script si chiama deploy e prende in input la matricola di uno studente oppure lo username di un amministratore o docente, ed anche la directory contenente i files da copiare. </p>\r\n<p>Grazie alle espressioni regolari, il formato della matricola accettato, sarà 0...000...., mentre quello dei docenti/amministratori nome.cognome.</p>\r\n<p>Breve delucidazione su come lanciare lo script:</p>\r\n<p>Assumendo che vi troviate nella cartella dove è situato lo script, digitate:</p>\r\n<p><b>./deploy numero_matricola path_files</b></p>\r\n<p>ad esempio:</p>\r\n<p><strong>./deploy 0101010101 /users/utente/programmi/files_da_copiare/</strong></p>\r\n<p>Questo script è compatibile soltanto con sistemi Unix/Linux!</p>\r\n<p>Ecco lo script:</p>\r\n<p><a href=\"/sites/default/files/files/deploy.rar\">deploy.rar</a></p>\r\n','','full_html'),('node','blog',0,175,214,'und',0,'<p>Finalmente, dopo quasi due mesi di lavoro, è pronto il web-software per la gestione degli orari degli insegnamenti dei corsi di facoltà.</p>\r\n<p>Lo sviluppo è in Php e Javascript, ed è utilizzabile su CMS Drupal.</p>\r\n<p>Il software permetterà ai dipendenti della Presidenza di organizzare gli orai degli insegnamenti con i relativi parametri (giorno, ora, aula, anno, semestre ecc..) abbandonando il consueto "lavoro a mano" per pubblicare poi i PDF.</p>\r\n<p>L'accesso al software può essere pubblico per visualizzare gli orari, e privato per editare le informazioni.</p>\r\n<p>Il form è molto semplice:</p>\r\n<p><img src=\"http://students.uniparthenope.it/~0124000028/blog.jpg\" /></p>\r\n<p>In questo caso vediamo gli insegnamenti previsti per il corso di Informatica (0124) del primo anno per il primo semestre. Come si vede, l'indirizzo è GENERALE poichè non è specificato per le nuove matricole.</p>\r\n<p>Si può notare inoltre che la tabella non è editabile, poichè l'uente non è autenticato.</p>\r\n<p>Se invece si accede come mebro della Presidenza:</p>\r\n<p><img alt=\"\" src=\"http://students.uniparthenope.it/~0124000028/2.jpg\" /></p>\r\n<p>Si ha la possibilità di editare la tabella. Ed ecco come appare il form di input per un orario:</p>\r\n<p><img alt=\"\" src=\"http://students.uniparthenope.it/~0124000028/3.jpg\" /></p>\r\n<p>Ovviamente sono possibili anche le operazioni di modifica ed eliminazione.</p>\r\n<p>In conclusione, il software è pronto, purtroppo però mancano ancora i dati ufficiali (corsi, piani di studio, codici insegnamenti, ecc)da prelevare dal DB dell' Università Parthenope per un corretto funzionamento.</p>\r\n<p>Saluti a Tutti!</p>\r\n','','full_html'),('node','blog',0,176,215,'und',0,'<h1 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\">Bones | and | Dogs</span></h1>\r\n<h2 class=\"rtecenter\">\r\n <span style=\"font-family:tahoma,geneva,sans-serif;\"><span style=\"color: rgb(47, 79, 79);\">I Movimenti e gli Ostacoli</span></span></h2>\r\n<p> </p>\r\n<p class=\"rtejustify\"><span style=\"font-family:tahoma,geneva,sans-serif;\">Passiamo adesso col descrivervi in che modo il nostro protagonista di gioco si muoverà all'interno della nostra window. Ho implementato i Movimenti all'interno della classe <strong>Dog</strong> che ricordiamo aveva i frame del cane, comprese le animazioni, che vi mostro nell'immagine sottostante:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i47.tinypic.com/2nb85na.png\" style=\"width: 200px; height: 200px;\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">All'interno della classe ho implementato dei metodi tramite la <strong>java.awt.event</strong> che utilizzano la <strong>KeyEvent</strong> Con i quali fà cambiare FRAME del cane in base a cosa viene premuto. Ovviamente, siccome stiamo ragionando in termini di Coordinate (x,y), la posizione effettiva dell'oggetto che contiene l'immagine del cane, viene traslata di:</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">x=x-1; y=y+0; // Movimento a SINISTRA\r\nx=x+1; y=y+0; // Movimento a DESTRA\r\ny=y-1; x=x+0; // Movimento in ALTO\r\ny=y+1; x=x+0; // Movimento in BASSO\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Ad ogni movimento, se annulliamo la coordinata opposta, questo ci permette di muovere il personaggio solo seguendo i TASTI DIREZIONALI, annullando così il movimento in DIAGONALE. L'oggetto <strong>Dog</strong> che sarà costruito sulla nostra <strong>BoardGame</strong> , si muoverà tramite l'implementazione della classe tramite <strong>ActionListener</strong> che si mette in ascolto in attessa che arrivi un INPUT (nel nostro caso la Tastiera).</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Effettuando brevi test, il cane viene comandato alla perfezione usando i tasti direzionali della tastiera. Ho limitato anche la fuoriuscita dell'oggetto da noi comandato, settando dei limiti sulle X e sulle Y (che massimo non può oltrepassare; i loro valori sono gli stessi delle dimensioni della window).</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\">Adesso andiamo a Riempire un pò il nostro giardinetto. Avevo pensato che se il lancio d'ossi avvenisse senza ostacoli, il gioco sarebbe stato troppo monotono, e molto molto facile. Sono riuscito ad aumentare la difficoltà pensando di piazzare nella nostra Board, alcuni ostacoli: Alberi e Rocce. Quindi ho creato due classi Apposite per i rispettivi ostacoli: la classe <strong>Tree</strong> e la Classe <strong>Stone. </strong>Questo è il risultato dopo l'implementazione delle due classi, dopo averle incorporate ovviamente nella nostra <strong>GameBoard:</strong></span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" src=\"http://i50.tinypic.com/nzfwd2.png\" style=\"width: 517px; height: 354px;\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Ma come si implementa una cosa del genere?? beh il discorso è alquanto semplice, anche perchè mi sono diciamo anticipato per quanto riguarderà il discorso collisioni. Cosi' come sono fatte, il cane attraverserà ogni singolo oggetto sulla mappa. Per anticiparmi ho costruito una griglia 2d settando la posizione di tali oggetti (una volta spawnati ovviamente) a 1. Ecco il codice:</span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">public class Tree \r\n{\r\n private int [] x;\r\n private int [] y;\r\n ...\r\n public Tree()\r\n { ...\r\n // la nostra GameBoard conterrà massimo 3 Alberi. \r\n // quindi creiamo due array\r\n // per il salvataggio delle loro coordinate\r\n x = new int [3];\r\n y = new int [3];\r\n \r\n // generiamo in maniera Random le coordinate dei nostri Alberi\r\n // e le salviamo negli array di appoggio\r\n for (int i=0 ; i<3 ; i++)\r\n { \r\n // restringiamo il campo di spawn perchè le immagini degli alberi\r\n // sono di dimensioni più grosse\r\n x [i] = 40 + (int)(Math.random()*430);\r\n y [i] = 40 + (int)(Math.random()*230);\r\n }\r\n }\r\n \r\n // ritorna la coordinata X dell'I esimo Albero\r\n public int getX(int i) \r\n {\r\n return x[i];\r\n }\r\n\r\n // ritorna la coorinata Y dell'I esimo Albero\r\n public int getY(int i) \r\n {\r\n return y[i];\r\n }\r\n \r\n // ritorna l'immagine dell' Albero\r\n public Image getImage() \r\n {\r\n return tree;\r\n }\r\n ...\r\n}\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Questo è in linea di massima la realizzazione del nostro ambiente di gioco. Ricordo che le soluzioni sono più di una, e per il momento ho implementato questo tipo di soluzione perchè la ritenevo più opportuna. Nulla a togliere che con l'avanzamento del gioco potrò variare lo spawn di oggetti per gestire meglio le collisioni, ma in linea di massima la logica è sempre la stessa.</span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Lo Spawn avviene all'interno della classe <strong>BoardGame</strong> nel metodo astratto <strong>paint:</strong></span></p>\r\n<pre>\r\n<span style=\"font-family:courier new,courier,monospace;\">// Spawn Random degli Alberi\r\n for (int i=0 ; i<3 ; i++) \r\n {\r\n int c=tree.getX(i);\r\n int d=tree.getY(i);\r\n // a questo punto disegnamo la figura nelle coordinate [c,d]\r\n ... \r\n }\r\n</span></pre>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Noteremo che ad ogni avvio del gioco la posizione degli oggetti Varia grazie ai poteri della funzione <strong>random. </strong>Qualche esempio illustrativo:</span></p>\r\n<p class=\"rtecenter\"><span style=\"font-family:tahoma,geneva,sans-serif;\"><img alt=\"\" height=\"225\" src=\"http://i47.tinypic.com/51y69.png\" width=\"338\" /> <img alt=\"\" height=\"227\" src=\"http://i45.tinypic.com/4zukk9.png\" width=\"339\" /></span></p>\r\n<p><span style=\"font-family:tahoma,geneva,sans-serif;\">Per oggi è tutto. Nel prossimo articolo cominciamo a descrivere le collisioni sugli ostacoli per evitare che il gli passi attraverso. Anticipiamo che L'idea principale è quella di creare una Griglia 2D, in modo da posizionare con l'etichetta "1" la posizione dell'oggetto. Quando il cane mentre cammina incontrerà nella sua posizione x,y il numero 1 esso dovrà fermarsi. Per il momento l'idea è questa. Nel prossimo articolo spiegheremo se questa soluzione è quella efficiente, in caso contrario vi elencherò una delle possibili soluzioni alle collisioni con oggetti.</span><br />\r\n </p>\r\n<p class=\"rtecenter\"><span style=\"font-family: tahoma,geneva,sans-serif;\"><strong>Indice Numerico Articoli:</strong></span></p>\r\n<p class=\"rtecenter\"><span style=\"font-size:20px;\"><a href=\"http://students.uniparthenope.it/?q=node/161\">1</a> - <a href=\"http://students.uniparthenope.it/?q=node/163\"> 2 </a> - <strong><a href=\"http://students.uniparthenope.it/?q=node/176\"><span style=\"color:#ff0000;\"> 3 </span></a></strong> - <a href=\"http://students.uniparthenope.it/?q=node/188\"> 4 </a> - <a href=\"http://students.uniparthenope.it/?q=node/200\"> 5 </a></span><span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/202\">6</a></span> <span style=\"font-size:20px;\">- <a href=\"http://students.uniparthenope.it/?q=node/206\">7</a></span></p>\r\n','','full_html'),('node','blog',0,177,216,'und',0,'<h2>\r\n Presentazione:</h2>\r\n<p>Ecco (ancora in via di sviluppo) l'API REST di Trenitalia; recupera informazioni riguardo prezzi, tipo di treno ed orari per destinazioni desiderate.</p>\r\n<p>Ad ora è possibile testare l'API solo per alcune tratte (di solito <u>brevi</u> e <u>senza cambi</u>).</p>\r\n<p>Molto presto sarà disponibile l'API completa.</p>\r\n<hr />\r\n<h2>\r\n Esempio d'uso:</h2>\r\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width: 207px; \">\r\n <tbody>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n </td>\r\n <td style=\"width: 73px; \">\r\n Variabili GET</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Stazione di partenza</td>\r\n <td style=\"width: 73px; \">\r\n stazin</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Stazione di arrivo</td>\r\n <td style=\"width: 73px; \">\r\n stazout</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Giorno</td>\r\n <td style=\"width: 73px; \">\r\n datag</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Mese</td>\r\n <td style=\"width: 73px; \">\r\n datam</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Anno</td>\r\n <td style=\"width: 73px; \">\r\n dataa</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Ora</td>\r\n <td style=\"width: 73px; \">\r\n timsh</td>\r\n </tr>\r\n <tr>\r\n <td style=\"width: 121px; \">\r\n Minuti</td>\r\n <td style=\"width: 73px; \">\r\n timsm</td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n<p class=\"rtecenter\" style=\"\"><a href=\"http://students.uniparthenope.it:19091/fs_trenitalia.json?stazin=Napoli&stazout=aversa&datag=18&datam=10&dataa=2012&timsh=16\">http://students.uniparthenope.it:19091/fs_trenitalia.json?stazin=Napoli&stazout=aversa&datag=18&datam=10&dataa=2012&timsh=1</a><a href=\"http://students.uniparthenope.it:19091/fs_trenitalia.json?stazin=Napoli&stazout=aversa&datag=18&datam=10&dataa=2012&timsh=16&timsm=52\">6&timsm=52</a></p>\r\n<hr />\r\n<p><strong><span style=\"color:#ff0000;\">WORK STILL IN PROGRESS</span></strong></p>\r\n','','full_html'),('node','blog',0,178,217,'und',0,'<p>Salve a tutti! Scrivo questo tutorial per spiegare brevemente, a chi non lo so sapesse, come configurare Netbeans per effettuare il deployment automatico sul nostro spazio web, <em>Students .</em></p>\r\n<p>Il primo passo è, ovviamente, quello di avviare l' IDE Netbeans (<em>per questo tutorial mi baso sulla versione 7.2</em>).</p>\r\n<p>Come al solito ci troviamo davanti alla schermata di default, e clicchiamo sull' icona <em>Nuovo Progetto</em>.<br />\r\n Ora scegliamo la tipologia di applicazione che andremo a sviluppare (<em>io ho scelto PHP Application</em>)<strong><sup>1</sup></strong>.</p>\r\n<p> </p>\r\n<p>Impostiamo così come facciamo di solito, senza nessun particolare accorgimento.</p>\r\n<p><img alt=\"\" src=\"http://i46.tinypic.com/28stylu.png\" style=\"width: 700px; height: 400px; \" /></p>\r\n<p> </p>\r\n<p>Il passo successivo ci porterà alla schermata in cui dovremo decidere se utilizzare la nostra applicazione in locale o se vogliamo cambiare questa impostazione.</p>\r\n<p> </p>\r\n<p>Dobbiamo quindi passare da questa situazione</p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i47.tinypic.com/2ia6801.png\" style=\"width: 700px; height: 394px; \" /></p>\r\n<p> </p>\r\n<p>A questa di seguito, scegliendo l' opzione Run As <em>Remote Web Server</em> dalla dropdown list.<br />\r\n Possiamo anche decidere quando fare l' upload dei file, potendo scegliere tra <em>On Save</em>, <em>On Run </em>e <em>Manually</em>; a voi la scelta.</p>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i47.tinypic.com/2jflwcw.png\" style=\"height: 394px; width: 700px; \" /></p>\r\n<p> </p>\r\n<p>Il prossimo passo da compiere è quello di cliccare sul tasto <em>Menage... </em>per impostare la connessione con il server (<em>nell' immagine appare già, avendola io precedentemente settata</em>)</p>\r\n<p> </p>\r\n<p>Apparirà una schemata, con dei campi che dobbiamo compilare.</p>\r\n<ul>\r\n <li>\r\n Inseriamo <em>students.uniparthenope.it</em> nel campo relativo all' <strong>Host Name</strong>;</li>\r\n <li>\r\n la <em>Matricola</em> nel campo <strong>Username</strong>;</li>\r\n <li>\r\n la nostra <em>Password</em> per l'accesso;</li>\r\n <li>\r\n impostiamo la <em>Initial Directory</em> che sarà <strong>/home/MATRICOLA/public_html</strong></li>\r\n</ul>\r\n<p> </p>\r\n<p><img alt=\"\" src=\"http://i49.tinypic.com/2dhtnc1.png\" style=\"height: 544px; width: 700px; \" /></p>\r\n<p> </p>\r\n<p>A questo punto clicchiamo su <em>Test Connection</em>; se verrà mostrato il messaggio di successo, clicchiamo su <em>OK</em> e iniziamo a sviluppare la nostra applicazione.</p>\r\n<p><br />\r\n Adesso, a seconda del metodo di upload scelto precedentemente, quando cliccheremo su <em>Salva </em>o su <em>Esegui</em> i nostri file saranno direttamente caricati sullo spazio <em>students.uniparthenope</em></p>\r\n<p>Per la versione PDF clicca <a href=\"http://box.uniparthenope.it/public.php?service=files&token=24ee301d57d5212c5991298c553fbdaf420dd18e&file=/NetBeans_students.pdf\">qui</a></p>\r\n<p> </p>\r\n<p><u><strong>Note:</strong></u></p>\r\n<p><u><strong>1. Il metodo descritto funziona senza problemi quando si sviluppa un' applicazione PHP. Non è lo stesso per le applicazioni Java</strong></u></p>\r\n','','full_html'),('node','blog',0,179,218,'und',0,'<p> </p>\r\n<p>Di seguito sono riportati alcuni esempi di php.</p>\r\n<p> </p>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>1.HELLO WORLD !!!</strong></div>\r\n<p> </p>\r\n<div>\r\n Semplice script PHP che invia il testo "HELLO WORLD !!!" al browser</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php //inizio</div>\r\n<div>\r\n //Uno script PHP inizia sempre con <? php e finisce con ? ></div>\r\n<div>\r\n echo "HELLO WORLD !!!"; //echo è l'istruzione utilizzata per visualizzare il testo. Si può usare anche print</div>\r\n<div>\r\n //fine</div>\r\n<div>\r\n ?> </div>\r\n<div>\r\n </div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>2. IF...ELSE</strong></div>\r\n<div>\r\n Il seguente esempio stampa in output il messaggio "Buon fine settimana!" se il giorno corrente è Venerdì,"Buona Domenica!!!" se il giorno corrente è Domenica, "Buona giornata!!!" se è un altro giorno:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n $d=date("D"); //una variabile in PHP inizia con il segno $ seguito dal nome della variabile</div>\r\n<div>\r\n if($d=="Fri")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Buon fine settimana!!!";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n elseif ($d=="Sun")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Buona Domenica!!!";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Buona giornata!!!";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>3. FILE</strong></div>\r\n<div>\r\n L'esempio seguente apre una file e lo legge riga per riga</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php </div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "Apro il file hello : "; </div>\r\n<div>\r\n //fopen("nome_file","modalità_apertura"), apre il file</div>\r\n<div>\r\n $file = fopen("hello.php","r") or exit("Impossibile aprire il file!");</div>\r\n<div>\r\n //fgetc legge il file carattere per carattere, feof fino alla fine del file</div>\r\n<div>\r\n //fgets legge il file riga per riga</div>\r\n<div>\r\n while(!feof($file));</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo fgets($file);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //chiusura file</div>\r\n<div>\r\n fclose($file);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file hello.php conterrà: </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n echo "Hello World";</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>4.FILE UPLOAD</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Il seguente esempio consente di caricare un file da un modulo e richiama uno script php che consente di stampare le info del file caricato</div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <form action="upload_file.php" method="post"</div>\r\n<div>\r\n option indica che i file saranno caricati in upload_file</div>\r\n<div>\r\n enctype="multipart/form-data"</div>\r\n<div>\r\n enctype specifica il tipo di contenuto da utilizzareper l'invio del modulo</div>\r\n<div>\r\n multipart/form-data viene utilizzato quando un modulo necessita di dati binari, come il contenuto di un file, da caricare</div>\r\n<div>\r\n ></div>\r\n<div>\r\n </div>\r\n<div>\r\n <label for="file">Filename:</label> </div>\r\n<div>\r\n </div>\r\n<div>\r\n <input type="file" name="file" id="file"/></div>\r\n<div>\r\n <br /></div>\r\n<div>\r\n <input type="submit" name="submit" value="Submit"/> </div>\r\n<div>\r\n </div>\r\n<div>\r\n </form></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file "upload_file.php" stampa le informazioni del file caricato, contiene: </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n if($_FILES["file"]["error"] > 0)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Error:" .$_FILES["file"]["error"]. "<br />";</div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro codice di errore del file caricato</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Upload: " . $_FILES["file"]["name"] . "<br />"; </div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro nome del file caricato</div>\r\n<div>\r\n echo "Type: " . $_FILES["file"]["type"] . "<br />";</div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro tipo del file caricato</div>\r\n<div>\r\n echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";</div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro dimensione in byte del file caricato</div>\r\n<div>\r\n echo "Stored in: " . $_FILES["file"]["tmp_name"];</div>\r\n<div>\r\n //1° parametro= nome di input del form, 2° parametro copia temporanea del file sul server</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>5.</strong></div>\r\n<div>\r\n Il seguente esempio consente di caricare un file da un modulo e richiama uno script php che consente di stampare le info del file caricato e stampa un messaggio d'errore nel caso in cui il file non rispetta le dimensioni richieste</div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <form action="upload_file2.php" method="post"</div>\r\n<div>\r\n option indica che i file saranno caricati in upload_file</div>\r\n<div>\r\n enctype="multipart/form-data"</div>\r\n<div>\r\n enctype specifica il tipo di contenuto da utilizzareper l'invio del modulo</div>\r\n<div>\r\n multipart/form-data viene utilizzato quando un modulo necessita di dati binari, come il contenuto di un file, da caricare</div>\r\n<div>\r\n ></div>\r\n<div>\r\n </div>\r\n<div>\r\n <label for="file">Filename:</label> </div>\r\n<div>\r\n </div>\r\n<div>\r\n <input type="file" name="file" id="file"/></div>\r\n<div>\r\n <br /></div>\r\n<div>\r\n <input type="submit" name="submit" value="Submit"/></div>\r\n<div>\r\n </div>\r\n<div>\r\n </form></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file upload_file2.php contiene :</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n $allowedExts = array("jpg", "jpeg", "gif", "png", "c");</div>\r\n<div>\r\n $extension = end(explode(".", $_FILES["file"]["name"]));</div>\r\n<div>\r\n //si possono caricare caricare gif,jpeg e png di dimensione inferiore a 20 kb.</div>\r\n<div>\r\n if ((($_FILES["file"]["type"] == "image/gif")</div>\r\n<div>\r\n || ($_FILES["file"]["type"] == "image/jpeg")</div>\r\n<div>\r\n || ($_FILES["file"]["type"] == "image/png")</div>\r\n<div>\r\n || ($_FILES["file"]["type"] == "image/pjpeg"))</div>\r\n<div>\r\n && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n if ($_FILES["file"]["error"] > 0)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Error: " . $_FILES["file"]["error"] . "<br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Upload: " . $_FILES["file"]["name"] . "<br />";</div>\r\n<div>\r\n echo "Type: " . $_FILES["file"]["type"] . "<br />";</div>\r\n<div>\r\n echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";</div>\r\n<div>\r\n echo "Stored in: " . $_FILES["file"]["tmp_name"];</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else //se il file non rispetta le dimensioni richieste verrà stampato il messaggio d'errore</div>\r\n<div>\r\n {</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "Upload: " . $_FILES["file"]["name"] . "<br />";</div>\r\n<div>\r\n echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";</div>\r\n<div>\r\n echo "Errore file! " ;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>6. COOKIES</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Un cookie è un file che il server incorpora sul computer dell'utente.</div>\r\n<div>\r\n L'esempio seguente mostra due modi per recuperare il valore di un cookie.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //setcookie () imposta un cookie.</div>\r\n<div>\r\n setcookie("user", "Roberta Scarpato", time()+3600);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n // Recupero coockies</div>\r\n<div>\r\n echo "Primo modo recupero coockies : <br />";</div>\r\n<div>\r\n echo $_COOKIE["user"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "<br /> Secondo modo recupero coockies : <br />";</div>\r\n<div>\r\n //isset verifica se il coockies è stato impostato </div>\r\n<div>\r\n if (isset($_COOKIE["user"]))</div>\r\n<div>\r\n //in caso affermativo stamapa: </div>\r\n<div>\r\n echo "Benvenuto -> " . $_COOKIE["user"] . "!<br />";</div>\r\n<div>\r\n else</div>\r\n<div>\r\n echo "Welcome guest!<br />";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //eliminazione coockies</div>\r\n<div>\r\n //setcookie("user", "", time()-3600);</div>\r\n<div>\r\n </div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>7. SESSIONI</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Una sessione PHP consente di memorizzare le informazioni dell'utente sul server per l'utilizzo successivo </div>\r\n<div>\r\n </div>\r\n<div>\r\n L'esempio seguente,conta le volte che una pagina viene visualizzata. Se "views" è stato impostato, è possibile incrementare il contatore. Se "views" non esiste, creiamo una variabile "views":</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //avvia una sessione</div>\r\n<div>\r\n session_start();</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n //si utilizza una variabile PHP $_SESSION per recuperare le variabili di sessione</div>\r\n<div>\r\n </div>\r\n<div>\r\n //isset controlla se il valore della variabile $_SESSION['views'] è già impostato</div>\r\n<div>\r\n </div>\r\n<div>\r\n if(isset($_SESSION['views']))</div>\r\n<div>\r\n //in caso affermativo vuol dire che non è la prima visita dell'utente e quindi la variabile viene incrementata</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $_SESSION['views']=$_SESSION['views']+1;</div>\r\n<div>\r\n //unset libera la variabile</div>\r\n<div>\r\n //unset($_SESSION['views']);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else //altrimenti la si imposta alla prima visita</div>\r\n<div>\r\n $_SESSION['views']=1;</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "Valore Views=". $_SESSION['views'];</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //Stampa la variabile views</div>\r\n<div>\r\n echo "<br /> Visita numero =". $_SESSION['views'];</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n ?></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //ripristina la sessione e si perdono tutti i dati della sessione </div>\r\n<div>\r\n //session_destroy();</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>8. E-MAIL</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n In PHP è possibile inviare messaggi di posta elettronica all'interno di uno script,con la funzione mail().</div>\r\n<div>\r\n L'esempio seguente invia un messaggio di testo a un determinato indirizzo e-mail controllando se il campo e-mail nel modulo è valido.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n // funzione che controlla il campo e-mail nel modulo:</div>\r\n<div>\r\n function controlla($field)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //filter_var() funzione che analizza l'e-mail</div>\r\n<div>\r\n //FILTER_SANITIZE_EMAIL rimuove tutti i caratteri illegali all'interno dell'indirizzo</div>\r\n<div>\r\n $field=filter_var($field, FILTER_SANITIZE_EMAIL);</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n if(filter_var($field, FILTER_VALIDATE_EMAIL))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n // se l'email è corretta ritorna true altrimenti false</div>\r\n<div>\r\n return TRUE;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n return FALSE;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //isset controlla se il campo email è già stato impostato</div>\r\n<div>\r\n if (isset($_REQUEST['email']))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n </div>\r\n<div>\r\n //in caso affermativo procede controllando se l'indirizzo è valido invocando la funzione controlla</div>\r\n<div>\r\n //request ritorna il valore di una variabile</div>\r\n<div>\r\n $bool = controlla($_REQUEST['email']);</div>\r\n<div>\r\n if ($bool==FALSE)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //in caso negativo si ha un messaggio d'errore</div>\r\n<div>\r\n echo "Invalid input";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {//altrimenti si invia l'email assegnadno i valori per parametri della funzione mail()</div>\r\n<div>\r\n $email = $_REQUEST['email'] ;</div>\r\n<div>\r\n $subject = $_REQUEST['subject'] ;</div>\r\n<div>\r\n $message = $_REQUEST['message'] ;</div>\r\n<div>\r\n //mail consente di inviare mail specificando indirizzo dest, oggetto e messaggio</div>\r\n<div>\r\n mail("nome.cognome@studenti.uniparthenope.it", "Subject: $subject",$message,"From: $email" );</div>\r\n<div>\r\n echo "Mail inviata! <br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {//in caso negativo si compilano i campi</div>\r\n<div>\r\n echo "</div>\r\n<div>\r\n <form method='post' action='mailform.php'></div>\r\n<div>\r\n Email: <input name='email' type='text' /><br /></div>\r\n<div>\r\n Subject: <input name='subject' type='text' /><br /></div>\r\n<div>\r\n Message:<br /></div>\r\n<div>\r\n <textarea name='message' rows='15' cols='40'></div>\r\n<div>\r\n </textarea><br /></div>\r\n<div>\r\n <input type='submit' /></div>\r\n<div>\r\n </form>";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>9. GESTIONE DEGLI ERRORI</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n L'esempio seguente consente di rilevare un errore e inviare una e-mail con un messaggio di errore,terminando lo script se si verifica un errore specifico</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //funzione per gestire degli errori,parametri: livello di errore e messaggio d'errore</div>\r\n<div>\r\n function errori($errno, $errstr)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "<b>Error:</b> [$errno] $errstr<br />"; //stampa il messaggio d'errore </div>\r\n<div>\r\n echo "Webmaster has been notified"; //viene inviata una mail per informare dell'errore</div>\r\n<div>\r\n //error_log ()invia l' errore in un file specificato o una destinazione</div>\r\n<div>\r\n error_log("Error: [$errno] $errstr",1,</div>\r\n<div>\r\n "indirizzo@prova.com","From: indirizzo2@prova.com");</div>\r\n<div>\r\n die();//dichiarazione d'errore</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //gestore errori che ha come parametro la funzione creata eil livello d'errore, E_USER_WARNING avverte la presenza di un errore. L'esecuzione dello script non viene interrotta</div>\r\n<div>\r\n set_error_handler("errori",E_USER_WARNING);</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n //testiamo la variabile test, se il valore è >1 si genera un errore</div>\r\n<div>\r\n $test=2;</div>\r\n<div>\r\n if ($test>1)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //attivazione errore con trigger_error,il messaggio rappresenterà il messaggio d'errore, sarà quindi il contenuto di errstr</div>\r\n<div>\r\n trigger_error("Valore errato! il valore deve essere 1 o minore! ",E_USER_WARNING);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>10.ECCEZIONI</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Un'eccezione è un errore particolare che si può verificare durante l'esecuzione di un codice.</div>\r\n<div>\r\n La gestione delle eccezioni modifica il normale flusso di esecuzione in seguito a un'eccezione.</div>\r\n<div>\r\n L'esepio seguente mostra come gestire le eccezioni.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //classe eccez che estende exception ereditando quindi tutti i metodi </div>\r\n<div>\r\n class eccez extends Exception</div>\r\n<div>\r\n {</div>\r\n<div>\r\n public function messaggio()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //assegna a msg il messaggio d'errore</div>\r\n<div>\r\n $msg = $this->getMessage().' Indirizzo e-mail non valido.';</div>\r\n<div>\r\n return $msg;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n $email = "indirizzo@prova.com";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Il blocco "try" contiene un blocco "try" per permettere di nuovo l'eccezione</div>\r\n<div>\r\n try</div>\r\n<div>\r\n {</div>\r\n<div>\r\n try</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //strpos controlla se nella stringa email c'è la parola example</div>\r\n<div>\r\n if(strpos($email, "example") !== FALSE)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //in caso affermatibo viene attivata l'eccezione</div>\r\n<div>\r\n throw new Exception($email);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n catch(Exception $e)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //Il blocco "catch" intercetta l'eccezione e ri-genera un oggetto eccez</div>\r\n<div>\r\n throw new eccez($email);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n catch (eccez $e) //viene catturata l'eccezione e si genera il messaggio </div>\r\n<div>\r\n {</div>\r\n<div>\r\n //display custom message</div>\r\n<div>\r\n echo $e->messaggio();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>11. FILTRI</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Un filtro PHP è utilizzato per verificare,validare e filtrare l'input dell'utente o dati personalizzati.</div>\r\n<div>\r\n L'esempio seguente verifica se i dati immessi dall'utente sono corretti.</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n <form method="get" ></div>\r\n<div>\r\n Name: <input type="text" name="name"/></div>\r\n<div>\r\n Age: <input type="text" name="age" /></div>\r\n<div>\r\n E-mail: <input type="text" name="email"/></div>\r\n<div>\r\n <input type="submit" //pulsante /> </div>\r\n<div>\r\n </div>\r\n<div>\r\n </form> </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //Un filtro PHP è utilizzato per controllare i dati provenienti da fonti non sicure.</div>\r\n<div>\r\n //per evitare di chiamare le funzioni filter_var o filter_input più volte, si utilizza la filter_var_array o le funzioni filter_input_array.</div>\r\n<div>\r\n </div>\r\n<div>\r\n $filters = array(</div>\r\n<div>\r\n //Imposta un array contenente il nome di variabili di input ed i filtri utilizzati per le variabili di input specificate</div>\r\n<div>\r\n "name" => array("filter"=>FILTER_SANITIZE_STRING), //verifica sela stringa è valida</div>\r\n<div>\r\n "age" => array("filter"=>FILTER_VALIDATE_INT,"options"=>array("min_range"=>1,"max_range"=>120)), //verifica se il valore intero è valido e seè compreso nel range</div>\r\n<div>\r\n "email"=> FILTER_VALIDATE_EMAIL); //verifica se l'email è corretta</div>\r\n<div>\r\n </div>\r\n<div>\r\n $result = filter_input_array(INPUT_GET, $filters); //filtra più variabili con gli stessi filtri o filtri diversi</div>\r\n<div>\r\n </div>\r\n<div>\r\n //se l'età è errata stampa un messaggio d'errore</div>\r\n<div>\r\n if (!$result["age"])</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo("Errore età. L'età deve essere compresa tra 1 e 120!<br />");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n //se l'email è errata stampa un messaggio d'errore</div>\r\n<div>\r\n elseif(!$result["email"])</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo("E-Mail non valida.<br />");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n //se la stringa è errata stampa un messaggio d'errore</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo("Dati utente validi!");</div>\r\n<div>\r\n </div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>12. MYSQL</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n MySQL è un database,i cui dati vengono memorizzati in oggetti chiamate tabelle.Una tabella consiste di righe e colonne.</div>\r\n<div>\r\n L'esempio seguente mostra come creare un database e le rispettive tabelle.</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //per accedere ai dati di un database, è necessario creare una connessione al database.In PHP, questo è fatto con la funzione mysql_connect () che memorizza il collegamento in una variabile ($ con) e chiede come parametri:servername Specifica il server a cui connettersi,nome utente Specifica il nome utente per effettuare il login, password Consente di specificare la password per effettuare il login </div>\r\n<div>\r\n </div>\r\n<div>\r\n $con = mysql_connect("localhost","robertina","123");</div>\r\n<div>\r\n if (!$con)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //viene eseguito se la connessione fallisce</div>\r\n<div>\r\n die('Could not connect: ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n // CREATE DATABASE viene utilizzata per creare un database in MySQL. viene creato il database my_db</div>\r\n<div>\r\n if (mysql_query("CREATE DATABASE my_db",$con))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Database created";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "Error creating database: " . mysql_error();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n //Un database deve essere selezionato prima che una tabella viene creata. Il database viene selezionato con la funzione mysql_select_db () </div>\r\n<div>\r\n mysql_select_db("my_db", $con);</div>\r\n<div>\r\n </div>\r\n<div>\r\n // L'istruzione CREATE TABLE viene utilizzato per creare una tabella in MySQL</div>\r\n<div>\r\n //imposta il campo personID come il campo chiave primaria,NOT NULL specifica he non deve essere nullo. il campo chiave primaria è usato con l'impostazione AUTO_INCREMENT.</div>\r\n<div>\r\n $sql = "CREATE TABLE Persone </div>\r\n<div>\r\n (</div>\r\n<div>\r\n </div>\r\n<div>\r\n personID int NOT NULL AUTO_INCREMENT, </div>\r\n<div>\r\n PRIMARY KEY(personID),</div>\r\n<div>\r\n Nome varchar(15),</div>\r\n<div>\r\n Cognome varchar(15),</div>\r\n<div>\r\n Età int</div>\r\n<div>\r\n )";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //esegue la query</div>\r\n<div>\r\n mysql_query($sql,$con);</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n // chiude la connessione</div>\r\n<div>\r\n mysql_close($con);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>13.</strong></div>\r\n<div>\r\n é possibile inserire i dati in un database prelevandoli da un form.</div>\r\n<div>\r\n L'esempio seguente crea un modulo HTML che può essere utilizzato per aggiungere nuovi record alla tabella "Persone".</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <form action="insert.php" method="post"</div>\r\n<div>\r\n si connete a un file insert.php che effettua una connessione a un database e recupera i dati inseriti nel form per memorizzarli nel database ></div>\r\n<div>\r\n Nome: <input type="text" name="nome" /></div>\r\n<div>\r\n Cognome: <input type="text" name="cognome" /></div>\r\n<div>\r\n Età: <input type="text" name="età" /></div>\r\n<div>\r\n <input type="submit" /></div>\r\n<div>\r\n </form></div>\r\n<div>\r\n </div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n La pagina insert.php conterrà: </div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n $con = mysql_connect("localhost","robertina","1234");</div>\r\n<div>\r\n if (!$con)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n die('Could not connect: ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n mysql_select_db("my_db", $con);</div>\r\n<div>\r\n </div>\r\n<div>\r\n //questo file si connette a un database e recupera i valori dal form con le variabili PHP $ _POST.la funzione mysql_query () esegue l'istruzione INSERT INTO,usata per aggiungere nuovi record a una tabella di database, e un nuovo record viene aggiunto alla tabella "Persone".</div>\r\n<div>\r\n </div>\r\n<div>\r\n $sql="INSERT INTO Persone (Nome, Cognome, Età)VALUES('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (!mysql_query($sql,$con))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n die('Error: ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n //mysql_query ora seleziona tutti i dati memorizzati nella tabella "Persone" </div>\r\n<div>\r\n // * seleziona tutti i dati della tabella):</div>\r\n<div>\r\n $result = mysql_query("SELECT * FROM Persone");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //visualizza i dati in una tabella HTML</div>\r\n<div>\r\n echo "<table border='1'></div>\r\n<div>\r\n <tr></div>\r\n<div>\r\n <th>Nome</th></div>\r\n<div>\r\n <th>Cognome</th></div>\r\n<div>\r\n </tr>";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //mysql_fetch_array () restituisce la prima riga dal recordset come una matrice. Ogni chiamata a mysql_fetch_array () restituisce la riga successiva nel recordset. Il ciclo while scorre tutti i record del recordset. Per stampare il valore di ogni riga, si usa la variabile PHP $ row ($ row ['Nome'] e $ row ['Cognome']).</div>\r\n<div>\r\n </div>\r\n<div>\r\n while($row = mysql_fetch_array($result))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "<tr>";</div>\r\n<div>\r\n echo "<td>" . $row['Nome'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Cognome'] . "</td>";</div>\r\n<div>\r\n echo "</tr>";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "</table>";</div>\r\n<div>\r\n mysql_close($con);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>14.</strong></div>\r\n<div>\r\n L'esempio seguente mostra come aggiornare i valori in un database.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n //crea connessione</div>\r\n<div>\r\n $con = mysql_connect("localhost","robertina","123");</div>\r\n<div>\r\n if (!$con)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n die('Errore connessione : ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //selezione database</div>\r\n<div>\r\n mysql_select_db("my_db", $con);</div>\r\n<div>\r\n </div>\r\n<div>\r\n //update aggiorna i campi di una tabella con nuovi valori</div>\r\n<div>\r\n //in qst caso aggiorna l'età nel record che ha come nome e cognome quelli indicati</div>\r\n<div>\r\n mysql_query("UPDATE Persone SET Età=23 WHERE Nome='roberta' AND Cognome='Scarpato'");</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n //selezione tutte i campi dalla tabella persone e le stampa ordinandole per età</div>\r\n<div>\r\n $result = mysql_query("SELECT * FROM Persone ORDER BY età");</div>\r\n<div>\r\n </div>\r\n<div>\r\n while($row = mysql_fetch_array($result))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo $row['Nome'];</div>\r\n<div>\r\n echo " " . $row['Cognome'];</div>\r\n<div>\r\n echo " " . $row['Età'];</div>\r\n<div>\r\n echo "<br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //cancella il record con il cognome indicato</div>\r\n<div>\r\n mysql_query("DELETE FROM Persone WHERE Cognome='Scarpato'");</div>\r\n<div>\r\n mysql_close($con);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>15. ODBC</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Una connessione ODBC consente di connettersi a qualsiasi database, su qualsiasi computer della rete, fino a quando una connessione ODBC è disponibile.</div>\r\n<div>\r\n L'esempio seguente mostra come creare una connessione al database, un set di risultati e visualizzare i dati in una tabella HTML.</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Con una connessione ODBC, è possibile connettersi a qualsiasi database fino a quando la connessione è disponibile.</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Si crea una connessione a un DSN denominato northwind, senza nome utente e nessuna password.</div>\r\n<div>\r\n $conn=odbc_connect('northwind','','');</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (!$conn)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n exit("Connessione Fallita: " . $conn);</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n // Si crea un SQL prendendo tutti i campi da una tabella</div>\r\n<div>\r\n $sql="SELECT * FROM customers";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //odbc_exec () viene utilizzata per eseguire un'istruzione SQL</div>\r\n<div>\r\n $results=odbc_exec($conn,$sql);</div>\r\n<div>\r\n </div>\r\n<div>\r\n if (!$results)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n exit("Error in SQL");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //stampa</div>\r\n<div>\r\n echo "<table><tr>";</div>\r\n<div>\r\n echo "<th>Companyname</th>";</div>\r\n<div>\r\n echo "<th>Contactname</th></tr>";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //odbc_fetch_row restituisce i record dal memorizzati in results. restituisce true se è in grado di restituire le righe, altrimenti false.Prende come parametri l'identificatore di risultato ODBC e un numero di riga (opzionale)</div>\r\n<div>\r\n </div>\r\n<div>\r\n while (odbc_fetch_row($results))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //dbc_result () legge i campi di un record. Prende due parametri: l'identificatore di risultato ODBC e un numero o un nome di campo.</div>\r\n<div>\r\n $compname=odbc_result($results,"CompanyName");</div>\r\n<div>\r\n $conname=odbc_result($results,"ContactName");</div>\r\n<div>\r\n echo "<tr><td>$compname</td>";</div>\r\n<div>\r\n echo "<td>$conname</td></tr>";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //chiude la connessione</div>\r\n<div>\r\n odbc_close($conn);</div>\r\n<div>\r\n echo "</table>";</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>16.XML PARSER EXPA</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Un file XML descrive la struttura dei dati.</div>\r\n<div>\r\n L'esempio seguente inizializza il parser XML in PHP, definisce alcuni gestori e analizzare il file XML.</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n </div>\r\n<div>\r\n //inizializzazione parser</div>\r\n<div>\r\n $parser=xml_parser_create();</div>\r\n<div>\r\n </div>\r\n<div>\r\n //funzione da usare con i tag di apertura</div>\r\n<div>\r\n function start($parser,$element_name,$element_attrs)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n switch($element_name)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n case "NOTE":</div>\r\n<div>\r\n echo "-- Note --<br />";</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n case "TO":</div>\r\n<div>\r\n echo "To: ";</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n case "FROM":</div>\r\n<div>\r\n echo "From: ";</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n case "HEADING":</div>\r\n<div>\r\n echo "Heading: ";</div>\r\n<div>\r\n break;</div>\r\n<div>\r\n case "BODY":</div>\r\n<div>\r\n echo "Message: ";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //funzione da usare con i tag di chiusura</div>\r\n<div>\r\n function stop($parser,$element_name)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "<br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //funzione da usare con i caratteri di tipo data</div>\r\n<div>\r\n function char($parser,$data)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo $data;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //specificare la funzione da eseguire quando il parser incontra i tag di apertura e di chiusura</div>\r\n<div>\r\n xml_set_element_handler($parser,"start","stop");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //specifica quale funzione verrà eseguito quando il parser incontra dati di tipo carattere</div>\r\n<div>\r\n xml_set_character_data_handler($parser,"char");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //apre il file </div>\r\n<div>\r\n $fp=fopen("test.xml","r");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Dom è un'interfaccia standard per l'accesso e la manipolazione di documenti HTML e XML</div>\r\n<div>\r\n //crea nuovo documento Dom</div>\r\n<div>\r\n $xmlDoc = new DOMDocument();</div>\r\n<div>\r\n $xmlDoc->load("test.xml");</div>\r\n<div>\r\n </div>\r\n<div>\r\n print $xmlDoc->saveXML();</div>\r\n<div>\r\n </div>\r\n<div>\r\n //legge</div>\r\n<div>\r\n while ($data=fread($fp,4096))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //Analizza il file "test.xml" con la funzione xml_parse ()</div>\r\n<div>\r\n //in caso di errore richiama xml_error_string per convertire l'errore in stringa, xml_get_error_code restituisce il codice di errore,xml_get_current_line_number restituisce la linea dell'eerrore</div>\r\n<div>\r\n xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d",xml_error_string(xml_get_error_code($parser)),xml_get_current_line_number($parser)));</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //libera la memoria allocata</div>\r\n<div>\r\n xml_parser_free($parser);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file test.xml contiene:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?xml version="1.0" encoding="ISO-8859-1"?></div>\r\n<div>\r\n <note></div>\r\n<div>\r\n <to>Antonio</to></div>\r\n<div>\r\n <from>Roberta</from></div>\r\n<div>\r\n <heading>Promemoria</heading></div>\r\n<div>\r\n <body>Ci vediamo stasera!</body></div>\r\n<div>\r\n </note></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>17. SIMPLE XML</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n Consente di ottenere gli attributi di un elemento e il testo.</div>\r\n<div>\r\n L'esempio seguente mostra come restituire i nomi degli elementi e dei dati dal file test.xml.</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n </div>\r\n<div>\r\n //carica il file</div>\r\n<div>\r\n $xml = simplexml_load_file("test.xml");</div>\r\n<div>\r\n </div>\r\n<div>\r\n //Ottiene il nome del primo elemento </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n echo $xml->getName() . "<br />";</div>\r\n<div>\r\n //Creare un ciclo che si innesca su ogni nodo figlio, con la funzione children()</div>\r\n<div>\r\n foreach($xml->children() as $child)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //Output il nome dell'elemento e dati per ciascun nodo figlio</div>\r\n<div>\r\n echo $child->getName() . ": " . $child . "<br />";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n Il file "test.xml" contiene:</div>\r\n<div>\r\n <note><to>Antonio</to><from>Roberta</from><heading>Promemoria</heading><body>Ci vediamo stasera!</body></note></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>18. AJAX</strong></div>\r\n<div>\r\n </div>\r\n<div>\r\n AJAX è una tecnica per la creazione veloce di pagine Web.Consente di aggiornare parti di una pagina web, senza ricaricare l'intera pagina.</div>\r\n<div>\r\n L'esempio seguente mostra come una pagina web comunica con un server web.</div>\r\n<div>\r\n Quando un utente digita un carattere nel campo di input, viene eseguita la funzione il "ShowHint ()" che viene attivata dall'evento "onkeyup".</div>\r\n<div>\r\n Pagina html:</div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <head></div>\r\n<div>\r\n <script></div>\r\n<div>\r\n //questa funzione è attivata dall'evento onkeyup</div>\r\n<div>\r\n function showHint(str)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //se il campo str.lenght è vuoto, viene cancellato il contenuto di txtHint e si esce dalla funzione</div>\r\n<div>\r\n if (str.length==0)</div>\r\n<div>\r\n { </div>\r\n<div>\r\n document.getElementById("txtHint").innerHTML="";</div>\r\n<div>\r\n return;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //altrimenti si crea un oggetto XMLHttpRequest,usato per trasferire XML o altri dati da e a un web server</div>\r\n<div>\r\n if (window.XMLHttpRequest)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n // per IE7, Firefox, Chrome, Opera, Safari</div>\r\n<div>\r\n xmlhttp=new XMLHttpRequest();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {// per IE6, IE5</div>\r\n<div>\r\n xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n xmlhttp.onreadystatechange=function() //onreadystatechange Gestore dell'evento lanciato ad ogni cambiamento di stato.</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //readyState Restituisce lo stato corrente dell'istanza di XMLHttpRequest:0 = non inizializzato, 1 = aperto, 2 = richiesta inviata, 3 = risposta in ricezione e 4 = risposta ricevuta.</div>\r\n<div>\r\n //status Restituisce il codice HTTP restituito dal server </div>\r\n<div>\r\n if (xmlhttp.readyState==4 && xmlhttp.status==200)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //responseText Restituisce la risposta del server in formato stringa e l'assegna a txtHint</div>\r\n<div>\r\n document.getElementById("txtHint").innerHTML=xmlhttp.responseText;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //open Specifica il metodo, l'URL e altri parametri opzionali per la richiesta.GET è utilizzato quando si richiedono dati.il secondo parametro è l'url,il terzo specifica se la richiesta deve essere gestita in modo asincrono oppure no ,true" significa che lo script può proseguire l'elaborazione senza aspettare la risposta dopo il metodo send()</div>\r\n<div>\r\n </div>\r\n<div>\r\n xmlhttp.open("GET","ajax.php?q="+str,true);</div>\r\n<div>\r\n xmlhttp.send(); //invia la richiesta a un server</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </script></div>\r\n<div>\r\n </head></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <p><b>Start typing a name in the input field below:</b></p></div>\r\n<div>\r\n <form> </div>\r\n<div>\r\n First name: <input type="text" onkeyup="showHint(this.value)" size="20" /></div>\r\n<div>\r\n </form></div>\r\n<div>\r\n <p>Suggestions: <span id="txtHint"></span></p></div>\r\n<div>\r\n </div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n Il codice sorgente di "ajax.php" controlla una serie di nomi, e restituisce il nome, corrispondente al carattere inserito, al browser:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n // ontrolla una serie di nomi, e restituisce il nome corrispondente (s) al browser:</div>\r\n<div>\r\n $a[]="Anna";</div>\r\n<div>\r\n $a[]="Brittany";</div>\r\n<div>\r\n $a[]="Cinderella";</div>\r\n<div>\r\n $a[]="Diana";</div>\r\n<div>\r\n $a[]="Eva";</div>\r\n<div>\r\n $a[]="Fiona";</div>\r\n<div>\r\n $a[]="Gunda";</div>\r\n<div>\r\n $a[]="Hege";</div>\r\n<div>\r\n $a[]="Inga";</div>\r\n<div>\r\n $a[]="Johanna";</div>\r\n<div>\r\n $a[]="Kitty";</div>\r\n<div>\r\n $a[]="Linda";</div>\r\n<div>\r\n $a[]="Nina";</div>\r\n<div>\r\n $a[]="Ophelia";</div>\r\n<div>\r\n $a[]="Petunia";</div>\r\n<div>\r\n $a[]="Amanda";</div>\r\n<div>\r\n $a[]="Raquel";</div>\r\n<div>\r\n $a[]="Cindy";</div>\r\n<div>\r\n $a[]="Doris";</div>\r\n<div>\r\n $a[]="Eve";</div>\r\n<div>\r\n $a[]="Evita";</div>\r\n<div>\r\n $a[]="Sunniva";</div>\r\n<div>\r\n $a[]="Tove";</div>\r\n<div>\r\n $a[]="Unni";</div>\r\n<div>\r\n $a[]="Violet";</div>\r\n<div>\r\n $a[]="Liza";</div>\r\n<div>\r\n $a[]="Elizabeth";</div>\r\n<div>\r\n $a[]="Ellen";</div>\r\n<div>\r\n $a[]="Wenche";</div>\r\n<div>\r\n $a[]="Vicky";</div>\r\n<div>\r\n </div>\r\n<div>\r\n //in q è memorizzato il carattere scritto dall'utente</div>\r\n<div>\r\n $q=$_GET["q"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n //se la lunghezza di q è>0 cerca un nome corrispondente ai caratteri inseriti</div>\r\n<div>\r\n if (strlen($q) > 0)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //hint è la stringa di risposta</div>\r\n<div>\r\n $hint="";</div>\r\n<div>\r\n //cerca</div>\r\n<div>\r\n for($i=0; $i<count($a); $i++)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n //controlla i caratteri delle stringhe presenti nell'array e lo assegna alla stringa di risposta</div>\r\n<div>\r\n if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n if ($hint=="")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $hint=$a[$i];</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $hint=$hint." , ".$a[$i];</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n // se non è stato trovato nessun carattere uguale si stampa il messaggio ""nessun suggerimento, altrimentiviene visualizzato il nome cercato</div>\r\n<div>\r\n if ($hint == "")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $response="Nessun suggerimento";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n $response=$hint;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n //output the response</div>\r\n<div>\r\n echo $response;</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n <strong>19.</strong></div>\r\n<div>\r\n L'esempio seguente mostra come una pagina web può scaricare informazioni da un database con AJAX</div>\r\n<div>\r\n Pagina Html:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <html></div>\r\n<div>\r\n <head></div>\r\n<div>\r\n <script></div>\r\n<div>\r\n /*quando un utente seleziona un nome nell'elenco a tendina , la funzione showUserviene eseguita. La funzione viene attivata dall'evento onchange*/</div>\r\n<div>\r\n function showUser(str)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n if (str=="")</div>\r\n<div>\r\n {</div>\r\n<div>\r\n document.getElementById("txtHint").innerHTML="";</div>\r\n<div>\r\n return;</div>\r\n<div>\r\n } </div>\r\n<div>\r\n if (window.XMLHttpRequest)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xmlhttp=new XMLHttpRequest();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n else</div>\r\n<div>\r\n {</div>\r\n<div>\r\n xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");</div>\r\n<div>\r\n }</div>\r\n<div>\r\n xmlhttp.onreadystatechange=function()</div>\r\n<div>\r\n {</div>\r\n<div>\r\n if (xmlhttp.readyState==4 && xmlhttp.status==200)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n document.getElementById("txtHint").innerHTML=xmlhttp.responseText;</div>\r\n<div>\r\n }</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n xmlhttp.open("GET","ajax2.php?q="+str,true);</div>\r\n<div>\r\n xmlhttp.send();</div>\r\n<div>\r\n }</div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n </script></div>\r\n<div>\r\n </head></div>\r\n<div>\r\n <body></div>\r\n<div>\r\n </div>\r\n<div>\r\n <form></div>\r\n<div>\r\n <select name="users" onchange="showUser(this.value)"</div>\r\n<div>\r\n ></div>\r\n<div>\r\n <option value="">Select a person:</option></div>\r\n<div>\r\n <option value="1">Homer Simpson</option></div>\r\n<div>\r\n <option value="2">Marge Simpson</option></div>\r\n<div>\r\n <option value="3">Zio Paperone</option></div>\r\n<div>\r\n <option value="4">Pippo Pluto</option></div>\r\n<div>\r\n </select></div>\r\n<div>\r\n </form></div>\r\n<div>\r\n <br /></div>\r\n<div>\r\n <div id="txtHint"><b>Informazioni persona.</b></div></div>\r\n<div>\r\n </div>\r\n<div>\r\n </body></div>\r\n<div>\r\n </html></div>\r\n<div>\r\n </div>\r\n<div>\r\n </div>\r\n<div>\r\n Il codice sorgente in "ajax2.php" esegue una query su un database MySQL, e restituisce il risultato in una tabella HTML:</div>\r\n<div>\r\n </div>\r\n<div>\r\n <?php</div>\r\n<div>\r\n $q=$_GET["q"];</div>\r\n<div>\r\n </div>\r\n<div>\r\n //crea connessione al database</div>\r\n<div>\r\n $con = mysql_connect('localhost', '', '');</div>\r\n<div>\r\n if (!$con)</div>\r\n<div>\r\n {</div>\r\n<div>\r\n die('Errore connessione ' . mysql_error());</div>\r\n<div>\r\n }</div>\r\n<div>\r\n //seleziona il database</div>\r\n<div>\r\n mysql_select_db("ajax_demo", $con);</div>\r\n<div>\r\n //seleziona tutti i record</div>\r\n<div>\r\n $sql="SELECT * FROM user WHERE id = '".$q."'";</div>\r\n<div>\r\n </div>\r\n<div>\r\n $result = mysql_query($sql);</div>\r\n<div>\r\n </div>\r\n<div>\r\n echo "<table border='1'></div>\r\n<div>\r\n <tr></div>\r\n<div>\r\n <th>Nome</th></div>\r\n<div>\r\n <th>Cognome</th></div>\r\n<div>\r\n <th>Età</th></div>\r\n<div>\r\n <th>Città</th></div>\r\n<div>\r\n <th>Lavoro</th></div>\r\n<div>\r\n </tr>";</div>\r\n<div>\r\n //mysql_fetch_array restituisce una riga da un recordset come array o come matrice</div>\r\n<div>\r\n while($row = mysql_fetch_array($result))</div>\r\n<div>\r\n {</div>\r\n<div>\r\n echo "<tr>";</div>\r\n<div>\r\n echo "<td>" . $row['Nomr'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Cognome'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Età'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Città'] . "</td>";</div>\r\n<div>\r\n echo "<td>" . $row['Lavoro'] . "</td>";</div>\r\n<div>\r\n echo "</tr>";</div>\r\n<div>\r\n }</div>\r\n<div>\r\n echo "</table>";</div>\r\n<div>\r\n //chiusura connessione</div>\r\n<div>\r\n mysql_close($con);</div>\r\n<div>\r\n ?></div>\r\n<div>\r\n </div>\r\n','','full_html'),('node','blog',0,180,219,'und',0,'<p>Ciao ragazzi,</p>\r\n<p>Mi chiamo Arenare Gabriele e sono uno studente d'informatica (percorso Tecnologie Multimediali) del 3° Anno fuori corso. Questo è il mio primo topic che scrivo, e volevo postare un po di Appunti, Tesine, Progetti ed Esercizi fatti per esami sostenuti durante questi anni... La maggior parte del materiale è stato fatto in gruppo, e quindi ringrazio anche i miei Amici / Colleghi Pasquale Forte e Alessandro Aiello... Speriamo che vi siano utili! :)</p>\r\n<p> </p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=d6df5834156025d0cb968fb753c1b92e8d7d2729&file=/%5BArenare%20Gabriele%5D%20Esercizi%20Programmazione%20I.rar\">Programmazione I - Esercizi</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=88bf8950e28f7bdeba920141fd6d29bc4140d03f&file=/%5BArenare%20Gabriele%5D%20Progetto%20Programmazione%20I%20-%20Risiko%2C%20Dizionario%20Contrari.zip\">Programmazione I - Progetto (Risiko - Dizionario dei Contrari)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=46e46b493ebd25a305b4ceb97ff7e369df1e645a&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Appunti%20Economia%20Aziendale.pdf\">Economia Aziendale - Appunti</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=d1f5313eaf1d4b5a3956e8953847f204aff52a82&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%20Alessandro%20Aiello%5D%20Esercizi%20Programmazione%20II.rar\">Programmazione II - Esercizi</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=752f6d7199479a68f11b15a4e8558201d6fa64ed&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%20Alessandro%20Aiello%5D%20Progetto%20Basi%20di%20dati%20-%20Gestione%20ANM.pdf\">Basi di Dati - Progetto (Gestione Anm)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=5c83c649658b6b80fc667592d17cddabb66fbc18&file=/%5BGabriele%20Arenare%5D%20Tesina%20Realt%C3%A0%20Virtuale%20-%20Tecnologia%203-D.pdf\">Realtà Virtuale - Tesina (Tecnologia 3D)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=eee2cccfd34263786adae3951079bbcb5222cb52&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Progetto%20Realt%C3%A0%20virtuale%20-%20Tris%203D.rar\">Realtà Virtuale - Progetto (Tris 3D)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=c223c9deaf9d8056d8a771ccfbc644b023f3f6cb&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Appunti%20Calcolo%20Numerico.pdf\">Calcolo Numerico - Appunti</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=3dceb7be73e8629d6a23485ec4065c163e711a22&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%20Alessandro%20Aiello%5D%20Progetto%20Reti%20-%20Animal%20Shop.pdf\">Reti di Calcolatori - Progetto (Animal Shop)</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=0716ef60cd2dbb7e16b603eab1cf72d2ae9ba75c&file=/%5BArenare%20Gabriele%20Pasquale%20Forte%5D%20Appunti%20Metodi%20per%20la%20Comunicazione%20Multimediale.pdf\">Metodi per la Comunicazione Multimediale - Appunti</a></p>\r\n<p><a href=\"http://box.uniparthenope.it/public.php?service=files&token=11f977bdaed29fcc8a465aa83b2a88f170086e07&file=/%5BArenare%20Gabriele%5D%20Tesina%20MCM%20-%20Audio%20MPEG%20layer%201-2-3.pdf\">Metodi per la Comunicazione Multimediale - Tesina (Mpeg Audio 1,2,3)</a></p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n<p> </p>\r\n','','filtered_html'),('node','blog',0,181,220,'und',0,'<p>Cari colleghi, condivido con voi la prima fase di progettazione dell'app. android <strong>"time-show UNIPARTHENOPE".</strong></p>\r\n<p>Il progetto è strettamente collegato con il software realizzato per l'esame di tecnologie web (<a href=\"http://students.uniparthenope.it/?q=node/175\">http://students.uniparthenope.it/?q=node/175)</a>. </p>\r\n<p>Risorse essenziali per realizzare l'applicazione, sono le API inerenti agli orari degli insegnamenti dei corsi di facoltà, consultabili al seguente link: <a href=\"http://students.uniparthenope.it:10003/orario.json\">http://students.uniparthenope.it:10003/orario.json</a></p>\r\n<p>Come già spiegato nel mio ultimo articolo, si fa riferimento solo all'orario del corso di informatica, poiche si attendono sviluppi dall' "alto" XD</p>\r\n<p>Ritornando all'applicazione android, essa prevede la possibilità di accedere in modalità autenticata o modalita ospite. L'idea è quella di permettere alle matricole (e non) di consultare i corsi previsti in giornata, il giorno seguente, o l'intera settimana. Effettuando l'accesso con la propria matricola e password, tramite appositi filtri, la selezione del proprio corso avverrà in automatico; inoltre sarà possibile controllare se sono previsti corsi di esami NON ancora sostenuti. <br />\r\n In modalità ospite invece, sarà disponibile un form per la selezione di corsi specifici.</p>\r\n<p>Un primo screenshot dell'accesso all'app.</p>\r\n<p><a href=\"/sites/default/files/images/20122210120148.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122210120148.jpg\" style=\"height: 294px; width: 200px; \" /></a> </p>\r\n<p>Per ora ho sviluppato la fase di accesso autenticato:</p>\r\n<p><a href=\"/sites/default/files/images/20122210120415.jpg\" target=\"_blank\"><img alt=\"\" src=\"/sites/default/files/styles/large/public/images/20122210120415.jpg\" style=\"height: 294px; width: 200px; \" /></a></p>\r\n<p>Per controllare se il login è andato a buon fine, utilizzo le api disponibili per gli studenti:</p>\r\n<p><span style=\"color:#0000cd;\">http://api.uniparthenope.it:9998/student/exams/studyplanning.json?user=XXXX&password=XXXX</span></p>\r\n<p>L'avvenuto accesso registrerà i dati in un database locale, per gestire successivi utilizzi dell'applicazione.</p>\r\n<p>Il codice relativo alla gestione del database ed al "consumo" dei file JSON saranno resi disponibili nella documentazione ufficiale.</p>\r\n<p>Saluti a Tutti!</p>\r\n','','full_html'),('node','blog',0,182,221,'und',0,'<p>Salve a tutti, come da titolo sto aggiungendo al progetto il secondo algoritmo di cifratura,cioè l'algoritmo di Vigenère. L'algoritmo vero e proprio è ormai completo, ma sto trovando difficoltà nello sviluppo dell'interfaccia grafica, non ho ancora le idee ben chiare, ma vorrei inserire la tavola di Vigenère per mostrare in che modo opera l'algoritmo. Spero di riuscirci nel più breve tempo possibile.</p>\r\n<p>PF</p>\r\n','','filtered_html');
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hpsc` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `idcs2019` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `lmncp` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `marc_drupal` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `meshofthings` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0107000288` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000337` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000407` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000461` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000522` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000541` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000555` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000561` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000564` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000573` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000607` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000608` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000618` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000643` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000733` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000742` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000743` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000755` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000767` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000773` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000807` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000827` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000829` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000890` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000913` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000922` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000926` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000935` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000937` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000945` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000957` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000987` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108000994` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001000` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001016` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001057` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001071` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001078` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001134` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001140` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001143` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001167` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001171` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001172` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001178` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001179` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001183` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001187` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001196` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001205` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001217` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001221` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001234` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001235` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001264` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001265` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001268` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001272` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001274` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001275` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001281` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001313` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001314` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001315` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001321` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001354` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001381` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001385` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001405` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001416` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001417` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001419` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001421` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001434` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001437` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001438` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001443` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001445` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001457` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001473` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001474` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001475` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001485` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001491` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001498` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001499` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001517` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001523` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001537` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001551` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001557` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001565` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001567` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001570` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001574` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001575` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001638` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001644` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001657` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001666` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001670` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0108001672` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0111000034` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0111000045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0111000047` /*!40100 DEFAULT CHARACTER SET utf16 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0118000527` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0118000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0119000015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0119000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0119000054` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000028` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000032` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000038` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000062` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000064` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000074` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000090` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000095` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000100` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000103` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000107` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000108` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000114` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000115` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000123` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000125` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000127` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000129` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0120000144` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0121000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0121000011` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0121000052` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0123000870` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0123001040` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000012` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000017` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000020` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000021` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000028` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000029` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000033` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000035` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000036` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000058` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000065` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000066` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000067` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000069` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000074` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000076` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000077` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000091` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000094` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000102` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000104` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000106` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000107` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000108` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000109` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000114` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000118` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000130` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000140` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000141` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000143` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000145` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000151` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000173` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000180` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000213` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000222` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000223` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000224` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000225` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000226` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000227` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000228` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000231` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000232` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000234` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000238` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000240` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000241` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000244` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000248` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000249` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000250` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000252` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000257` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000258` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000260` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000267` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000269` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000272` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000276` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000281` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000282` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000283` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000284` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000285` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000286` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000288` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000289` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000290` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000295` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000298` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000300` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000301` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000304` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000310` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000311` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000312` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000314` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000315` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000317` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000319` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000321` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000323` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000324` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000326` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000327` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000328` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000330` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000332` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000333` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000335` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000343` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000347` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000349` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000353` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000354` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000356` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000361` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000378` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000380` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000383` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000390` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000391` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000398` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000402` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000403` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000410` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000411` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000413` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000427` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000428` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000433` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000440` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000442` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000444` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000446` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000453` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000458` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000459` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000461` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000462` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000463` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000464` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000468` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000473` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000479` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000480` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000483` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000484` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000485` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000486` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000489` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000490` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000497` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000499` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000504` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000514` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000515` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000517` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000519` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000520` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000521` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000522` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000525` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000526` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000531` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000534` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000540` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000542` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000544` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000550` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000551` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000553` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000565` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000581` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000587` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000589` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000590` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000595` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000608` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000609` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000616` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000617` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000619` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000630` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000631` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000634` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000637` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000638` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000639` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000642` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000643` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000650` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000652` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000655` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000658` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000659` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000661` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000662` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000663` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000666` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000667` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000668` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000669` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000675` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000681` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000683` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000685` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000688` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000694` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000700` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000705` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000708` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000712` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000713` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000717` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000722` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000724` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000725` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000727` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000729` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000733` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000736` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000738` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000740` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000749` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000750` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000751` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000754` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000763` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000764` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000765` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000768` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000769` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000775` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000776` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000778` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000781` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000785` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000792` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000793` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000796` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000800` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000802` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000806` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000810` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000812` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000818` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000820` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000821` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000822` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000835` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000836` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000840` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000861` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000862` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000863` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000867` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000868` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000871` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000884` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000891` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000894` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000900` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000913` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000917` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000918` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000919` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000920` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000921` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000924` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000927` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000929` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000930` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000931` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000937` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000938` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000940` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000949` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000954` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000959` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000964` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000965` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000970` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000971` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000982` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000988` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000994` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124000998` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001032` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001034` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001035` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001038` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001041` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001082` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001180` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001221` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001236` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001248` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001292` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001335` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0124001400` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0170000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0170000003` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0170000014` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0170000015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0170000017` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0170000018` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000002` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000003` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000008` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000010` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000012` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000014` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000016` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000018` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000021` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000023` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000024` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0182000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0250000136` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0259000063` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0284000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0284000002` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0284000004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0284000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0284000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0284000007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0284000008` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0284000009` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0284000010` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0284000011` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0322000501` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_0412000437` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_27013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_alberto` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_amadori` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_camastra` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_ceinge` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_cotroneo` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_fpeluso` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_fuscog` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_intrito` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_luca_appollo` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_mennone` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_murli` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_osp` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_peluso` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_raffmont` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_riccio` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_troisi` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms1_zanetti` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0107000288` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000337` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000407` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000461` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000522` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000541` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000555` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000561` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000564` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000573` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000607` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000608` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000618` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000643` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000733` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000742` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000743` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000755` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000767` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000773` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000807` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000827` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000829` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000890` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000913` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000922` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000926` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000935` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000937` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000945` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000957` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000987` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108000994` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001000` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001016` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001057` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001071` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001078` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001140` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001143` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001167` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001171` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001172` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001178` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001179` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001183` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001187` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001196` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001205` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001217` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001221` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001234` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001235` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001264` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001265` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001268` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001272` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001274` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001275` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001281` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001313` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001314` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001315` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001321` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001354` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001381` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001385` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001405` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001416` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001417` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001419` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001421` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001434` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001437` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001438` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001443` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001445` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001457` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001473` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001474` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001475` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001485` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001491` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001498` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001499` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001517` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001523` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001537` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001551` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001557` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001565` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001567` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001570` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001574` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001575` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001638` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001644` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001657` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001666` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001670` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0108001672` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0111000034` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0111000045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0111000047` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0118000527` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0118000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0119000015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0119000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0119000054` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000028` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000032` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000038` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000062` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000064` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000090` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000095` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000100` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000103` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000107` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000108` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000114` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000115` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000123` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000125` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000127` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000129` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0120000144` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0121000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0121000011` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0121000052` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0123000870` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0123001040` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000012` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000017` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000020` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000021` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000028` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000029` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000033` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000035` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000036` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000058` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000065` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000066` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000067` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000069` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000074` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000076` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000077` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000091` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000094` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000102` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000104` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000106` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000107` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000108` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000109` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000114` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000118` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000130` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000140` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000141` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000143` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000145` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000151` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000173` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000180` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000213` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000222` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000223` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000224` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000225` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000226` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000227` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000228` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000231` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000232` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000234` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000238` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000240` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000241` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000244` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000248` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000249` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000250` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000252` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000257` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000258` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000260` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000267` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000269` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000272` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000276` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000281` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000282` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000283` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000284` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000285` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000286` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000288` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000289` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000290` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000295` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000298` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000300` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000301` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000304` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000310` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000311` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000312` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000314` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000315` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000317` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000319` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000321` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000323` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000324` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000326` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000327` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000328` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000330` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000332` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000333` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000335` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000343` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000347` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000349` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000353` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000354` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000356` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000361` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000378` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000380` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000383` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000390` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000391` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000398` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000402` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000403` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000410` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000411` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000413` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000427` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000428` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000433` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000440` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000442` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000444` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000446` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000453` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000458` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000459` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000461` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000462` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000463` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000464` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000468` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000473` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000479` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000480` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000483` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000484` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000485` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000486` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000489` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000490` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000497` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000499` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000504` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000514` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000515` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000517` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000519` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000520` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000521` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000522` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000525` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000526` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000531` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000534` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000540` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000542` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000544` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000550` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000551` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000553` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000565` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000581` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000587` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000589` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000590` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000595` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000608` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000609` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000616` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000617` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000619` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000630` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000631` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000634` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000637` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000638` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000639` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000642` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000643` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000650` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000652` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000655` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000658` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000659` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000661` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000662` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000663` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000666` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000667` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000668` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000669` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000675` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000681` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000683` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000685` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000688` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000694` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000700` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000705` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000708` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000712` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000713` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000717` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000722` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000724` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000725` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000727` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000729` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000733` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000736` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000738` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000740` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000749` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000750` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000751` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000754` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000763` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000764` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000765` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000768` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000769` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000775` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000776` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000778` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000781` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000785` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000792` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000793` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000796` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000800` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000802` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000806` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000810` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000812` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000818` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000820` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000821` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000822` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000835` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000836` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000840` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000861` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000862` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000863` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000867` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000868` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000871` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000884` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000891` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000894` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000900` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000913` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000917` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000918` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000919` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000920` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000921` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000924` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000927` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000929` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000930` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000931` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000937` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000938` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000940` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000949` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000954` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000959` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000964` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000965` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000970` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000971` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000982` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000988` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000994` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124000998` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001032` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001034` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001035` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001038` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001041` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001082` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001180` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001221` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001236` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001248` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001292` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001335` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0124001400` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0170000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0170000003` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0170000014` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0170000015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0170000017` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0170000018` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000002` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000003` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000008` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000010` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000012` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000014` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000016` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000018` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000021` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000023` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000024` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0182000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0250000136` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0259000063` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0284000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0284000002` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0284000004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0284000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0284000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0284000007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0284000008` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0284000009` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0284000010` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0284000011` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0322000501` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_0412000437` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_27013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_alberto` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_amadori` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_camastra` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_ceinge` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_cotroneo` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_fpeluso` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_fuscog` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_intrito` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_luca_appollo` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_mennone` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_murli` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_osp` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_peluso` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_raffmont` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_riccio` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_troisi` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms2_zanetti` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0107000288` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000337` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000407` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000461` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000522` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000541` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000555` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000561` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000564` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000573` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000607` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000608` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000618` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000643` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000733` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000742` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000743` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000755` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000767` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000773` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000807` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000827` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000829` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000890` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000913` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000922` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000926` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000935` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000937` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000945` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000957` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000987` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108000994` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001000` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001016` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001057` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001071` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001078` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001140` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001143` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001167` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001171` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001172` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001178` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001179` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001183` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001187` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001196` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001205` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001217` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001221` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001234` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001235` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001264` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001265` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001268` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001272` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001274` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001275` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001281` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001313` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001314` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001315` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001321` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001354` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001381` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001385` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001405` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001416` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001417` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001419` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001421` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001434` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001437` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001438` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001443` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001445` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001457` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001473` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001474` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001475` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001485` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001491` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001498` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001499` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001517` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001523` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001537` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001551` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001557` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001565` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001567` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001570` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001574` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001575` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001638` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001644` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001657` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001666` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001670` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0108001672` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0111000034` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0111000045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0111000047` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0118000527` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0118000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0119000015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0119000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0119000054` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000028` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000032` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000038` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000062` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000064` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000090` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000095` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000100` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000103` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000107` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000108` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000114` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000115` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000123` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000125` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000127` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000129` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0120000144` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0121000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0121000011` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0121000052` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0123000870` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0123001040` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000012` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000017` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000020` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000021` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000028` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000029` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000033` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000035` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000036` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000058` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000065` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000066` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000067` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000069` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000074` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000076` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000077` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000091` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000094` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000102` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000104` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000106` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000107` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000108` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000109` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000114` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000118` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000130` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000140` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000141` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000143` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000145` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000151` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000173` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000180` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000213` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000222` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000223` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000224` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000225` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000226` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000227` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000228` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000231` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000232` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000234` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000238` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000240` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000241` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000244` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000248` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000249` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000250` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000252` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000257` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000258` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000260` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000267` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000269` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000272` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000276` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000281` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000282` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000283` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000284` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000285` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000286` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000288` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000289` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000290` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000295` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000298` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000300` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000301` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000304` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000310` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000311` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000312` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000314` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000315` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000317` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000319` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000321` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000323` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000324` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000326` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000327` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000328` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000330` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000332` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000333` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000335` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000343` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000347` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000349` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000353` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000354` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000356` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000361` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000378` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000380` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000383` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000390` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000391` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000398` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000402` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000403` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000410` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000411` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000413` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000427` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000428` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000433` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000440` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000442` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000444` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000446` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000453` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000458` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000459` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000461` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000462` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000463` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000464` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000468` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000473` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000479` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000480` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000483` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000484` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000485` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000486` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000489` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000490` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000497` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000499` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000504` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000514` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000515` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000517` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000519` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000520` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000521` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000522` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000525` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000526` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000531` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000534` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000540` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000542` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000544` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000550` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000551` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000553` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000565` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000581` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000587` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000589` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000590` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000595` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000608` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000609` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000616` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000617` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000619` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000630` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000631` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000634` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000637` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000638` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000639` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000642` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000643` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000650` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000652` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000655` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000658` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000659` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000661` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000662` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000663` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000666` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000667` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000668` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000669` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000675` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000681` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000683` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000685` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000688` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000694` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000700` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000705` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000708` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000712` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000713` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000717` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000722` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000724` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000725` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000727` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000729` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000733` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000736` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000738` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000740` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000749` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000750` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000751` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000754` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000763` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000764` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000765` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000768` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000769` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000775` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000776` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000778` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000781` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000785` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000792` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000793` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000796` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000800` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000802` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000806` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000810` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000812` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000818` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000820` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000821` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000822` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000835` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000836` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000840` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000861` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000862` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000863` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000867` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000868` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000871` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000884` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000891` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000894` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000900` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000913` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000917` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000918` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000919` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000920` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000921` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000924` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000927` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000929` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000930` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000931` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000937` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000938` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000940` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000949` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000954` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000959` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000964` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000965` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000970` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000971` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000982` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000988` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000994` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124000998` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001032` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001034` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001035` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001038` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001041` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001082` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001180` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001221` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001236` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001248` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001292` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001335` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0124001400` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0170000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0170000003` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0170000014` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0170000015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0170000017` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0170000018` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000002` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000003` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
INSERT INTO `mdla042_page` VALUES (2,4,'Teoria: Analisi dei dati','<p style=\"text-align: left;\">Concetti di base per effettuare l\' analisi dei dati della realtà di interesse che si vuole rappresentare.</p>',1,'<p>Si riporta in forma discorsiva e\r\n sintetica gli aspetti salienti inerenti la realtà d\'interesse del \r\nsistema informativo che si vuole rappresentare. Si considerano i \r\ndiversi passi da tenere presente per l\'<a class=\"autolink\" title=\"Analisi\" href=\"https://students.uniparthenope.it/%7E0182000006/moodle/mod/resource/view.php?id=16\">analisi</a> dei dati.</p><ol><li><strong><a class=\"autolink\" title=\"Analisi\" href=\"https://students.uniparthenope.it/%7E0182000006/moodle/mod/resource/view.php?id=16\">Analisi</a> del sistema informativo </strong>:\r\n si analizzano le informazioni, le procedure, il contesto in cui tale \r\nsistema si colloca per determinare quali aspetti informatizzare e quali \r\ninformazioni trattare nell\'ambito del sistema informatico</li><li><strong>Ipotesi aggiuntive </strong>: si effettuano ipotesi aggiuntive e chiarificatrici su alcuni punti del tema di interpretazione non univoca</li><li><strong>Vincoli</strong> : si valutano eventuali vincoliimposti dal problema al fine di giustificare le scelte ipotizzate</li><li><strong>Approfondimenti</strong> : si vuole approfondire alcuni aspetti chiave e particolarmente rilevanti</li><li><strong>Precisione del carico di lavoro </strong>: si descrive il progetto a grandi linee e si valuta la quantità di dati presenti nel Database</li><li><strong>Contesto del sistema </strong>: si colloca il sistema da realizzare all\'interno di un software già esistente o occorre realizzare un sistema software ex novo</li><li><strong>Scelte implementative </strong>: Si motivano le scelte implementative nel caso in cui sia possibile proporre soluzioni alternative</li><li><strong>Strumenti progettuali da utilizzare </strong>: si indicano i modelli che si vogliono utilizzare per la progettazione della base di dati</li><li><strong>Strumenti HW/SW da utilizzare </strong>: si descrivono gli strumenti HW/SW che si intendono utilizzare per l\'ambiente di sviluppo</li></ol>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"1\";}',4,1402323310),(3,4,'Teoria: La progettazione Concettuale','<p>E\' la fase in cui si rappresenta la realtà dei dati e le relazioni tra essi attraverso uno schema concettuale.<br></p>',1,'<div class=\"no-overflow\"><p>La <a class=\"autolink\" title=\"Progettazione concettuale\" href=\"https://students.uniparthenope.it/%7E0182000006/moodle/mod/scorm/view.php?id=38\">progettazione concettuale</a> rappresenta i concetti e le relazioni tra i concetti della realtà che si vuole modellare. Il modello concettuale più utilizzato è il modello<b> E-R</b>\r\n (entity-relationship). Tale modello è una schematizzazione grafica del \r\nmondo reale sottoforma di entità e di relazioni tra di esse.</p><p> Le<b> entità</b>\r\n sono gli oggetti principali su cui vengono raccolte le informazioni. \r\nGraficamente, l\' entità si rappresenta con un rettangolo all\' interno \r\ndel quale viene scritto il nome dell\' entità stessa. Le caratteristiche \r\nche descrivono l\' entità si chiamano<b> attributi</b>. L\' insieme dei valori assunti da tutti gli attributi si chiama <b>istanza</b>\r\n dell\' entità. Tra gli attributi ce ne sono alcuni che assumono un ruolo\r\n particolare, in quanto identificano univocamente un\' istanza dell\' \r\nentità, che prendono il nome di <b>chiave</b>. Tra le varie chiavi quella che rappresenta un\' istanza dell\' entità prende il nome di <b>chiave primaria </b>(primary key).</p><p>Una <b>relazione</b> rappresenta un\' associazione tra due o più entità e si rappresenta con un verbo. Esistono diversi tipi di associazioni:</p><ul><li><b>Uno a uno</b>: un\' istanza dell\' entità A viene associata a una ed una sola istanza dell\' entità B<br></li><li><b>Uno a molti</b>:\r\n un\' istanza dell\' entità A viene associata a una o più istanze dell\' \r\nentità B ma per un\' istanza di B c\' è solo un\' istanza di A<br></li><li><b>Molti a molti</b>: un\' istanza dell\' entità A viene associata a una o più istanze dell\' \r\nentità B e ad un\' istanza di B è associata una o più istanze di A</li></ul><p><br></p></div>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',2,1402301290),(4,4,'Teoria:La Progettazione Logica','<p>Consiste nella conversione del diagramma E/R in un insieme di relazioni, detto schema logico relazionale.<br></p>',1,'<p>Con la <a class=\"autolink\" title=\"Progettazione logica\" href=\"https://students.uniparthenope.it/%7E0182000006/moodle/mod/resource/view.php?id=23\">progettazione logica</a>\r\n il modello E/R si trasforma in uno schema relazionale ovvero in un \r\ninsieme di tabelle. Nel passaggio bisogna tener conto delle \r\ncaratteristiche generali del modello relazionale :</p><p>Ogni\r\n relazione deve avere una chiave primaria - ogni riga deve avere uguale \r\nnumero di colonne - ogni attributo deve essere un\'informazione \r\nelementare non scomponibile - Ennuple in ordine non prefissato - i \r\nvalori di un campo appartengono ad un dominio e sono quindi omogenei</p><p>Per la conversione del modello E/R si utilizzano delle regole di derivazione:</p><p>Rappresentazione entità e attributi : </p><ul><li><div>ogni entità diventa una relazione rappresentabile con una tabella</div></li><li><div>ogni attributo del tipo entità diventa un attributo della relazione, quindi una colonna della tabella</div></li><li><div>l\'attributo chiave dell\'entità diventa attributo chiave della relazione</div></li></ul><p>Rappresentazione dell\'associazioni :</p><ul><li><div>1 to N nella seconda tabella inseriamo il codice della prima, la cosidetta chiave esterna</div></li><li><div>N\r\n to N si crea una terza tabella in cui andremo a mettere le chiavi \r\nprimarie delle due tabelle e una chiave primaria della tabella stessa</div></li></ul><p><br></p>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"1\";}',3,1402304014),(5,2,'vsvs','<p>sdvccsdvsdcdddllllllllllllllllllllllllllllllllllllllxcvvvvvvvvvvvppppok</p><p>vspdvmsavmasvpàlaspàl,vàavl,av</p><p>vkmvvmasvmsapvmpm<br></p>',1,'<p>sdvccsdvsdcdddllllllllllllllllllllllllllllllllllllllxcvvvvvvvvvvvppppok</p><p>vspdvmsavmasvpàlaspàl,vàavl,av</p><p>vkmvvmasvmsapvmpm<br></p>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',1,1402304948),(6,4,'Verifica prerequisiti','<p>Con il Test d\'ingresso si va a testare la conoscenza dell\'intero programma svolto durante l\'anno scolastico per poter capire e risolvere la progettazione del sistema informativo relativo alla realtà d\'interesse della \"Casa Discografica\"</p>',1,'<p>Nel test d\'ingreso si vanno a testare i prerequisiti per poter risolvere la progettazione di una Base di Dati relativa alla realtà d\'interesse Casa Discografica, bisogna conoscere in modo approfondito :</p><p> <strong>le diverse fasi di progettazione di un Data Base : </strong></p><ul><li>Analisi dei dati</li><li>Progettazione concettuale</li><li>Progettazione logica</li></ul><p><strong>Il linguaggio SQL per : </strong></p><ul><li><div><strong>definire le relazioni </strong></div></li><li><div><strong>interrogare il Data Base</strong></div></li></ul><p><strong>Il linguaggio PHP e HTML per la realizzazione delle pagine web</strong></p><p> </p>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',2,1402329486),(7,4,'Teoria: implementazione web','<p>Si descrive come implementare le pagine web dinamiche che, interrogando il database, forniscono i dati richiesti dall\'utente del sito.<br></p>',1,'<p>Una <b>pagina web dinamica</b> è una pagina web il cui contenuto, in tutto o in parte, è generato sul momento dal server, potendo dunque essere diversa ogni volta che viene richiamata consentendo un\'interattività con l\'utente, secondo il paradigma di programmazione Web noto come Web dinamico,</p><p>PHP è un linguaggio completo di scripting, sofisticato e flessibile, che può girare praticamente su qualsiasi server Web, su qualsiasi sistema operativo (Windows o Unix/Linux, ma anche Mac, AS/400, Novell, OS/2 e altri), e consente di interagire praticamente con qualsiasi tipo di database (SQLite, MySQL, PostgreSQL, SQL Server, Oracle, SyBase, Access e altri). Si può utilizzare per i più svariati tipi di progetti, dalla semplice home page dinamica fino al grande portale o al sito di e-commerce.</p><p>Parlando di PHP e di altri linguaggi di scripting può capitare di sentir citare le espressioni \"lato client” e \"lato server”: per chi non è esperto della materia, tali definizioni possono suonare un po\' misteriose. Proviamo a chiarire questi concetti: vediamo come funziona, in maniera estremamente semplificata, la richiesta di una pagina Web. L\'utente apre il suo browser e digita un indirizzo Internet, ad esempio <code>www.nostrosito.it/pagina1.html</code>: a questo punto il browser si collega al server <code>www.nostrosito.it</code> e gli chiede la pagina <code>pagina1.html</code>. Tale pagina contiene esclusivamente codice HTML: il server la prende e la spedisce al browser, così com\'è (insieme ad eventuali file allegati, ad esempio immagini). Il nostro utente quindi avrà la possibilità di visualizzare questa pagina. </p><p> Supponiamo ora che l\'utente richieda invece la pagina <code>pagina2.php</code>: questa, contrariamente a quella di prima, non contiene solo codice HTML, <strong>ma anche PHP</strong>. In questo caso il server, prima di spedire la pagina, esegue il codice PHP, che in genere produce altro codice HTML: ad esempio, PHP potrebbe controllare che ore sono e generare un messaggio di questo tipo: \"Buon pomeriggio, sono le 17.10!” oppure: \"Ehi, che ci fai alzato alle 4 del mattino?”. Dopo l\'esecuzione, la pagina non conterrà più codice PHP, ma solo HTML. A questo punto è pronta per essere spedita al browser. (Ovviamente, il file che non contiene più codice PHP non è quello \"originale”, ma la \"copia” che viene spedita al browser. L\'originale rimane disponibile per le prossime richieste.) Quindi l\'utente vede solo il codice HTML, e non ha accesso al codice PHP che ha generato la pagina. </p><p> Per comprendere ancora meglio questo concetto, confrontiamo PHP con un altro linguaggio di scripting molto diffuso sul Web, cioè <strong>JavaScript</strong>, che di solito viene usato come linguaggio \"lato client”: JavaScript infatti viene eseguito non dal server, ma dal browser dell\'utente (il client, appunto). JavaScript ci consente di eseguire operazioni che riguardano il sistema dell\'utente, come ad esempio aprire una nuova finestra del browser, o controllare la compilazione di un modulo segnalando eventuali errori prima che i dati vengano spediti al server. Ci permette anche di avere un\'interazione con l\'utente: ad esempio, possiamo far sì che quando il mouse passa su una determinata immagine, tale immagine si modifichi. </p><p> Per svolgere tutti questi compiti, JavaScript <strong>deve essere eseguito sul sistema dell\'utente</strong>: per questo il codice JavaScript viene spedito al browser insieme al codice HTML. Quindi l\'utente ha la possibilità di visualizzarlo, contrariamente a ciò che accade con PHP. Abbiamo citato alcune utili funzioni svolte da JavaScript sul browser dell\'utente: PHP, essendo eseguito sul server, non è in grado di svolgere direttamente queste funzioni. Ma attenzione: questo non significa che non sia in grado ugualmente di controllarle! Infatti PHP svolge principalmente la funzione di \'creare\' il codice della pagina che viene spedita all\'utente: di conseguenza, così come può creare codice HTML, allo stesso modo può creare codice JavaScript. Questo significa che PHP ci può permettere, ad esempio, di decidere se ad un utente dobbiamo spedire il codice JavaScript che apre una nuova finestra, oppure no. In pratica, quindi, lavorando sul lato server abbiamo il controllo anche del lato client. Rimane un ultimo dettaglio da svelare: come fa il server a sapere quando una pagina contiene codice PHP che deve essere eseguito prima dell\'invio al browser? Semplice: si basa sull\'estensione delle pagine richieste. </p><p> Nell\'esempio che abbiamo visto prima, pagina1 aveva l\'estensione <code>.html</code>, mentre pagina2 aveva l\'estensione <code>.php</code>: sulla base di questo, il server sa che nel secondo caso deve eseguire PHP, mentre nel primo può spedire il file così com\'è. In realtà il server deve essere istruito per poter fare ciò: generalmente gli si dice di eseguire PHP per le pagine che hanno estensione <code>.php</code>. È possibile comunque assegnargli qualsiasi altra estensione (fino a qualche anno fa veniva utilizzata <code>phtml</code>, anche se ormai la pratica è caduta in disuso). Si possono utilizzare anche le estensioni standard <code>.htm</code> e <code>.html</code>, ma ciò significherebbe chiamare PHP per tutte le pagine richieste, anche se non contengono codice PHP: questo rallenterebbe inutilmente il lavoro del server e dunque è meglio evitarlo.</p><p>PHP è un linguaggio la cui funzione fondamentale è quella di produrre codice HTML, il linguaggio col quale si compongono le pagine Web. Ma, poichè PHP è un linguaggio di programmazione, abbiamo la possibilità di analizzare diverse situazioni (l\'input degli utenti, i dati contenuti in un database) e di decidere, di conseguenza, di <strong>produrre codice HTML condizionato</strong> ai risultati dell\'elaborazione. Questo è, in parole povere, il Web dinamico.<br></p>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',7,1402340300),(8,4,'SQL','<p>Structured Query Language</p>',1,'<p>Il Linguaggio SQL è un linguaggio non procedurale, divenuto ormai da tempo, il linguaggio standard per creare manipolare e interrogarebasi di dati relazionali.</p><p>Il linguaggio SQL assolve alle funzioni di :</p><ul><li>DDL( Data Definition Languale), che prevede le istruzioni per definire la struttura delle relazioni della base di dati. Serve quindi a creare tabelle, ecc..</li><li>DML (Data Manipulation Language) che prevede le isturzioni per manipolare i dati nelle tabelle. Permette inserimenti, cancellazioni e consente di effettuare le interrogazioni sulle basi di dati.</li><li>DCL (Data Control Language) che prevede istruzioni per controllare il modo in cui le operazioni vengono eseguite.</li></ul><p><strong>Identificatori</strong> :</p><p>La sintassi per riferirsi ad una tabella: <NOMETABELLA>,<NomeAttributo></p><p> <strong>Tipi di dato</strong>:</p><p>aritmetici-relazionali-logici</p><p><strong>Istuzioni del DDL:</strong></p><p>CREATE DATABASE <Nome Database></p><p>CREATE TABLE<Nome Tabella></p><p>Ricordate poi i diversi vincoli per ogni attributo: </p><p>NOT NULL,DEFAULT, ecc</p><p>Ricordate poi i vincoli per ogni ennupla :</p><p>PRIMARY KEY, UNIQUE,ecc.</p><p><strong>Istruzioni del DML:</strong></p><p>INSERT INTO, SELECT, ec.</p><p>Istruzioni del DCL:</p><p>CREATE VIEW,ecc.</p><p> Vediamo la sintassi per la SELECT per fare le query ed interrogare il DB</p><p><b>SELECT</b> <lista attributi></p><p><b>FROM</b> <Tabella></p><p><b>WHERE</b> <Condizione></p><p><b>ESEMPIO</b></p><p>Visualizzare gli artisti che sono sul mercato discografico per più di 10 anni</p><p>SELECT CodiceArtista, NomArtista,Attività, Periodo</p><p>FROM Artista</p><p>WHERE Periodo >10;</p><p>Se abbiamo la seguente tabella Artista:</p><p>Codiceartista NomArtista Attività Periodo Biografia</p><p>1 Zuccheo attivo 20 xxxxx</p><p>2 Battisti non attivo 25 yyyy </p><p>3 Vasco attivo 9 zzzzz</p><p><br></p><p>Dopo la select si avrà la seguente tabella:</p><p>Codiceartista NomArtista Attività Periodo <br></p><p> 1 Zuccheo attivo 20 </p><p> 2 Battisti non attivo 25 </p><p> </p><p> </p>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',2,1402498947);
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000008` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000010` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000012` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000014` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000016` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000018` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000021` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000023` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000024` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0182000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0250000136` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0259000063` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0284000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0284000002` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0284000004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0284000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0284000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0284000007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0284000008` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0284000009` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0284000010` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0284000011` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0322000501` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_0412000437` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_27013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_alberto` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_amadori` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_camastra` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_ceinge` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_cotroneo` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_fpeluso` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_fuscog` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_intrito` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_luca_appollo` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_mennone` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_murli` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_osp` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_peluso` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_riccio` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_troisi` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms3_zanetti` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0107000288` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000337` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000407` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000461` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000522` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000541` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000555` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000561` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000564` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000573` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000607` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000608` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000618` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000643` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000733` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000742` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000743` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000755` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000767` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000773` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000807` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000827` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000829` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000890` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000913` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000922` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000926` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000935` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000937` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000945` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000957` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000987` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108000994` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001000` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001016` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001057` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001071` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001078` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001140` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001143` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001167` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001171` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001172` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001178` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001179` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001183` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001187` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001196` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001205` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001217` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001221` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001234` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001235` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001264` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001265` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001268` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001272` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001274` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001275` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001281` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001313` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001314` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001315` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001321` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001354` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001381` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001385` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001405` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001416` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001417` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001419` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001421` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001434` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001437` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001438` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001443` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001445` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001457` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001473` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001474` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001475` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001485` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001491` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001498` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001499` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001517` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001523` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001537` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001551` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001557` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001565` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001567` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001570` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001574` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001575` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001638` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001644` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001657` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001666` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001670` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0108001672` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0111000034` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0111000045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0111000047` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0118000527` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0118000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0119000015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0119000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0119000054` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000028` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000032` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000038` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000062` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000064` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000090` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000095` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000100` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000103` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000107` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000108` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000114` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000115` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000123` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000125` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000127` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000129` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0120000144` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0121000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0121000011` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0121000052` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0123000870` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0123001040` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000012` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000017` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000020` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000021` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000028` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000029` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000033` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000035` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000036` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000058` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000065` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000066` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000067` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000069` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000074` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000076` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000077` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000091` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000094` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000102` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000104` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000106` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000107` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000108` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000109` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000114` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000118` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000130` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000140` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000141` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000143` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000145` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000151` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000173` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000180` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000213` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000222` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000223` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000224` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000225` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000226` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000227` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000228` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000231` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000232` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000234` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000238` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000240` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000241` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000244` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000248` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000249` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000250` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000252` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000257` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000258` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000260` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000267` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000269` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000272` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000276` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000281` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000282` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000283` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000284` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000285` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000286` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000288` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000289` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000290` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000295` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000298` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000300` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000301` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000304` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000310` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000311` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000312` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000314` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000315` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000317` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000319` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000321` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000323` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000324` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000326` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000327` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000328` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000330` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000332` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000333` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000335` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000343` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000347` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000349` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000353` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000354` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000356` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000361` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000378` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000380` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000383` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000390` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000391` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000398` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000402` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000403` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000410` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000411` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000413` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000427` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000428` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000433` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000440` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000442` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000444` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000446` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000453` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000458` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000459` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000461` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000462` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000463` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000464` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000468` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000473` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000479` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000480` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000483` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000484` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000485` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000486` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000489` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000490` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000497` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000499` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000504` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000514` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000515` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000517` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000519` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000520` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000521` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000522` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000525` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000526` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000531` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000534` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000540` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000542` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000544` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000550` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000551` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000553` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000565` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000581` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000587` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000589` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000590` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000595` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000608` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000609` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000616` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000617` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000619` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000630` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000631` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000634` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000637` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000638` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000639` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000642` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000643` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000650` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000652` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000655` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000658` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000659` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000661` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000662` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000663` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000666` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000667` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000668` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000669` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000675` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000681` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000683` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000685` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000688` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000694` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000700` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000705` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000708` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000712` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000713` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000717` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000722` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000724` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000725` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000727` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000729` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000733` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000736` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000738` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000740` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000749` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000750` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000751` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000754` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000763` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000764` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000765` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000768` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000769` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000775` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000776` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000778` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000781` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000785` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000792` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000793` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000796` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000800` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000802` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000806` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000810` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000812` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000818` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000820` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000821` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000822` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000835` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000836` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000840` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000861` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000862` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000863` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000867` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000868` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000871` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000884` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000891` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000894` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000900` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000913` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000917` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000918` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000919` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000920` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000921` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000924` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000927` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000929` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000930` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000931` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000937` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000938` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000940` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000949` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000954` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000959` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000964` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000965` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000970` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000971` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000982` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000988` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000994` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124000998` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001032` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001034` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001035` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001038` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001041` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001082` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001180` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001221` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001236` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001248` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001292` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001335` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0124001400` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0170000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0170000003` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0170000014` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0170000015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0170000017` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0170000018` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000002` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000003` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000008` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000010` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000012` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000014` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000016` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000018` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000021` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000023` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000024` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0182000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0250000136` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0259000063` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0284000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0284000002` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0284000004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0284000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0284000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0284000007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0284000008` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0284000009` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0284000010` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0284000011` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0322000501` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_0412000437` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_27013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_alberto` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_amadori` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_camastra` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_ceinge` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_cotroneo` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_fpeluso` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_fuscog` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_intrito` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_luca_appollo` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_mennone` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_murli` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_osp` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_peluso` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_riccio` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_troisi` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms4_zanetti` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0107000288` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000337` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000407` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000461` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000522` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000541` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000555` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000561` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000564` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000573` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000607` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000608` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000618` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000643` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000733` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000742` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000743` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000755` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000767` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000773` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000807` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000827` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000829` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000890` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000913` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000922` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000926` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000935` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000937` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000945` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000957` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000987` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108000994` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001000` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001016` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001057` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001071` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001078` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001140` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001143` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001167` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001171` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001172` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001178` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001179` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001183` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001187` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001196` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001205` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001217` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001221` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001234` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001235` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001264` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001265` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001268` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001272` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001274` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001275` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001281` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001313` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001314` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001315` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001321` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001354` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001381` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001385` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001405` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001416` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001417` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001419` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001421` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001434` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001437` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001438` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001443` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001445` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001457` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001473` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001474` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001475` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001485` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001491` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001498` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001499` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001517` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001523` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001537` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001551` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001557` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001565` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001567` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001570` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001574` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001575` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001638` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001644` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001657` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001666` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001670` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0108001672` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0111000034` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0111000045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0111000047` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0118000527` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0118000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0119000015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0119000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0119000054` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000028` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000032` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000038` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000062` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000064` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000090` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000095` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000100` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000103` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000107` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000108` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000114` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000115` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000123` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000125` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000127` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000129` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0120000144` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0121000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0121000011` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0121000052` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0123000870` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0123001040` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000012` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000017` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000020` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000021` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000028` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000029` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000033` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000035` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000036` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000045` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000058` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000065` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000066` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000067` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000069` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000074` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000076` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000077` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000091` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000094` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000102` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000104` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000106` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000107` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000108` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000109` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000114` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000118` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000130` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000140` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000141` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000143` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000145` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000151` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000173` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000180` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000213` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000222` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000223` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000224` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000225` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000226` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000227` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000228` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000231` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000232` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000234` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000238` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000240` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000241` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000244` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000248` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000249` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000250` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000252` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000257` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000258` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000260` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000267` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000269` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000272` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000276` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000281` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000282` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000283` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000284` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000285` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000286` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000288` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000289` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000290` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000295` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000298` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000300` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000301` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000304` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000310` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000311` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000312` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000314` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000315` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000317` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000319` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000321` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000323` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000324` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000326` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000327` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000328` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000330` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000332` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000333` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000335` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000343` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000347` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000349` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000353` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000354` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000356` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000361` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000378` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000380` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000383` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000390` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000391` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000398` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000402` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000403` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000410` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000411` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000413` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000427` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000428` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000433` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000440` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000442` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000444` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000446` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000453` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000458` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000459` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000461` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000462` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000463` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000464` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000468` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000473` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000479` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000480` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000483` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000484` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000485` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000486` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000489` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000490` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000497` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000499` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000504` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000514` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000515` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000517` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000519` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000520` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000521` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000522` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000525` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000526` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000531` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000534` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000540` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000542` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000544` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000550` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000551` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000553` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000565` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000581` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000586` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000587` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000589` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000590` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000595` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000608` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000609` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000616` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000617` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000619` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000630` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000631` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000634` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000637` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000638` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000639` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000642` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000643` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000650` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000652` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000655` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000658` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000661` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000662` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000663` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000666` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000667` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000668` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000669` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000675` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000681` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000683` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000685` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000688` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000694` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000700` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000705` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000708` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000712` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000713` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000717` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000722` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000724` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000725` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000727` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000729` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000733` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000736` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000738` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000740` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000749` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000750` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000751` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000754` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000763` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000764` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000765` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000768` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000769` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000775` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000776` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000778` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000781` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000785` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000792` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000793` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000796` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000800` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000802` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000806` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000810` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000812` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000818` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000820` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000821` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000822` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000835` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000836` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000840` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000861` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000862` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000863` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000867` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000868` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000871` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000884` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000891` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000894` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000900` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000913` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000917` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000918` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000919` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000920` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000921` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000924` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000927` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000929` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000930` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000931` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000937` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000938` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000940` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000949` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000954` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000959` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000964` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000965` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000970` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000971` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000982` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000988` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000994` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124000998` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001032` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001034` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001035` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001038` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001039` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001041` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001082` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001180` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001221` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001236` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001248` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001292` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001335` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0124001400` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0170000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0170000003` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0170000014` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0170000015` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0170000017` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0170000018` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000002` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000003` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000008` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000010` /*!40100 DEFAULT CHARACTER SET latin1 */;
INSERT INTO `mdl_page` VALUES (6,2,'Introduzione alle istruzioni DML','descrizione delle istruzioni DML di SQL al fine di costruire il DB in oggetto.<br>',1,'<p>Ricordiamo innanzitutto che il <b>Data Definition Language</b> (<b>DDL</b>) è un linguaggio che permette di creare, modificare o eliminare gli oggetti in un <span class=\"mw-redirect\">database</span> ovvero agire sullo schema di database.</p>\r\n<p>Sono i comandi DDL a definire la struttura del database e quindi l\'implementazione della progettazione logica dei dati in esso contenuti, ma non fornisce gli \r\nstrumenti per modificare i valori assunti dai dati o per interrogare i \r\ndati stessi per il quale si usano rispettivamente il Data Manipulation Language e il <span class=\"mw-redirect\">Data Query Language</span>. Il DDL è utilizzato sia in fase di progettazione,\r\n sia in fase di ristrutturazione del database. Per agire sulla struttura\r\n del database l\'utente deve avere i permessi necessari, assegnati \r\ntramite il Data Control Language (DCL).</p>\r\n<p>Le istruzioni che a noi interesserà ricordare sono:<br></p><p><b><span class=\"mw-headline\" id=\"Create_database\">CREATE DATABASE</span></b> - Il comando <i>create database</i> serve a creare un nuovo database, che potrà contenere tabelle, viste o altri tipi di oggetti.\r\n</p>\r\n<p>La sintassi è la seguente:</p>\r\n<pre>CREATE {DATABASE | SCHEMA} <i>db_name</i>\r\n[create_specification [, create_specification] ...]\r\n \r\ncreate_specification:\r\n[DEFAULT] CHARACTER SET charset_name\r\n| [DEFAULT] COLLATE collation_name\r\n</pre> <br>per quanto riguarda la creazione delle tabelle andremo ad usare le istruzioni DDL:<b> <br><br>CREATE TABLE</b> - seguito dal nome della tabella e dall\'elenco degli attributi; per ogni attributo occorre specificare il nome e il tipo di dato. <br><br>La sintassi è la seguente:<br><pre>CREATE TABLE <i>nome_tabella</i>(<br> <i>nome_colonna1</i> <i>tipo di dato</i> <i><span class=\"new\">constraint</span></i> (opzionale),\r\n <i>nome_colonna2</i> <i>tipo di dato</i> <i>constraint</i> (opzionale),\r\n <i>nome_colonna3</i> <i>tipo di dato</i> <i>constraint</i> (opzionale),\r\n ...\r\n <i>nome_colonnaN</i> <i>tipo di dato</i> <i>constraint</i> (opzionale));\r\n</pre><br>non ci dilungheremo ulteriormente in quanto argomenti già trattati e da poter approfondire da fonti esterne. Per un rapido riepilogo delle principali funzioni rimandiamo a <a target=\"_blank\" href=\"http://www.w3schools.com/sql/sql_quickref.asp\">http://www.w3schools.com/sql/sql_quickref.asp</a><br><div><br></div><div>E\' opportuno inoltre ripassare le istruzioni legate al <a href=\"http://www.w3schools.com/sql/sql_check.asp\" target=\"_blank\">CHECK</a> per quanto riguarda la gestione dei domini degli attributi e le condizioni <a href=\"http://www.w3schools.com/sql/sql_update.asp\" target=\"_blank\">UPDATE</a> e <a href=\"http://www.w3schools.com/sql/sql_delete.asp\" target=\"_blank\">DELETE</a>.</div><div><br></div>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',6,1401641907),(7,2,'Realizzazione delle prime tabelle','<p>iniziamo a realizzare le prime tabelle a partire dalla progettazione logica, successivamente lo studente sarà in grado di terminare il progetto autonomamente.<br></p>',1,'Innanzitutto creiamo il DB:<br><br><pre>CREATE DATABASE DBPortaleLibri;</pre>prima di costruire le tabelle dobbiamo riassumere i tipi di dati consentiti, se non dovessero essere chiari prima di approfondire con altre fonti è possibile consultare la <a href=\"http://www.w3schools.com/sql/sql_quickref.asp\" target=\"_blank\">pagina riassuntiva</a>.<br><br>In funzione della progettazione logica iniziamo dalla tabella REPARTO:<br><br><pre>reparto(<u>CodRep</u>, descr)</pre><br>Le colonne della tabella che realizzeremo saranno 2, la chiave primaria e la descrizione.<br><br><ul><li><b>chiave primaria: CodRep</b><br>per essere univocamente determinata è utile realizzarla con indice numerico.</li><li><b>Descr</b><br>è un campo che dovrà contenere il nome del reparto, basterà considerare un campo che possa contenere 20 caratteri.<br></li></ul>Prima di costruire le tabelle dobbiamo riassumere i tipi di dati consentiti, se non dovessero essere chiari prima di approfondire con altre fonti è possibile consultare la <a target=\"_blank\" href=\"https://students.uniparthenope.it/~0182000010/e-learn/mod/page/view.php?id=17\">pagina riassuntiva</a>.<br><br><pre>CREATE TABLE Reparto ( <br>CodRep INT(5), <br>Descr CHAR(20) NOT NULL, <br>PRIMARY KEY(CodRep));</pre><br>Analogamente costruiamo la tabella Ordine.<br><br><pre>Ordine(<u>NumOrd</u>, Evasione, Stato, DataRichiesta, FatturaSN, CodiceFisc)</pre><br>in particolare sottolineamo che:<br><ul><li>La chiave primaria è un numero intero progressivo.</li><li>Il campo \"Evasione\" è una data e non può rimanere vuota.</li><li>Lo \"stato\" dell\'ordine sarà Vero o Falso, quindi sarà opportuno utilizzare una variabile Bool.</li><li>il campo \"DataRichiesta\" dell\'ordine non potrà rimanere vuoto.</li><li>La fattura dovrà essere un intero progressivo</li><li>Il \"CodFisc\" dovrà contenere 16 caratteri.</li><li>Notiamo inoltre che abbiamo una chiave esterna, il campo CodFisc deve essere riferito alla chiave primaria della tabella Utente.<br></li></ul><p><br></p><pre>CREATE TABLE Ordine ( <br>NumOrd INT(5), <br>Evasione DATE NOT NULL, <br>Stato BOOL, <br>DataRichiesta DATE NOT NULL, <br>FatturaSN INTEGER, <br>CodFisc CHAR(16), <br>PRIMARY KEY(NumOrd), <br>FOREIGN KEY(CodFisc) <br>REFERENCES Utente(Codice)<br>);<br></pre>\r\n<p>\r\nA partire da questi due esempi e con il supporto del <a target=\"_blank\" href=\"https://students.uniparthenope.it/~0182000010/e-learn/mod/forum/view.php?id=16\">Forum</a> gli studenti costruiranno le tabelle restanti.\r\n</p>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',14,1401641963),(8,2,'Tipi di dati in SQL','<p>sintesi dei tipi di dati in SQL<br></p>',1,'<p><strong>Dati binari:</strong></p> \r\n<ul><li>binary[(n)]<br>\r\nha una lunghezza fissa e può contenere fino ad 8000 bytes di dati\r\nbinari</li><li>varbinary[(n)]<br>\r\nha una lunghezza variabile e può contenere fino ad 8000 bytes di\r\ndati binari</li></ul>\r\n\r\n<p><strong>Dati carattere:</strong></p>\r\n<ul><li>char[(n)]<br>\r\nha una lunghezza fissa e può contenere fino ad 8000 caratteri ANSI\r\n(cioè 8000 bytes)</li><li>varchar[(n)]<br>\r\nha una lunghezza variabile e può contenere fino ad 8000 caratteri\r\nANSI (cioè 8000 bytes)</li><li>nchar[(n)]<br>\r\nha una lunghezza fissa e può contenere fino a 4000 caratteri\r\nUNICODE (cioè 8000 bytes, ricordiamo che per i caratteri UNICODE\r\nservono 2 bytes per memorizzare un carattere)</li><li>nvarchar[(n)]<br>\r\nha una lunghezza variabile e può contenere fino a 4000 caratteri\r\nUNICODE (cioè 8000 bytes, ricordiamo che per i caratteri UNICODE\r\nservono 2 bytes per memorizzare un carattere)</li></ul> \r\n<p><strong>Dati ora e data:</strong></p> \r\n<ul><li>datetime<br>\r\nammette valori compresi dal 1 gennaio 1753 al 31 dicembre 9999\r\n(precisione al trecentesimo di secondo), occupa uno spazio di 8 byte</li><li>smalldatetime<br>\r\nmeno preciso del precedente (precisione al minuto), ,occupa uno\r\nspazio di 4 byte</li></ul>\r\n\r\n<p><strong>Dati monetari:</strong></p> \r\n<ul><li>money<br>\r\nContiene valori monetari da -922337203685477.5808 a\r\n922337203685477.5807 con una precisione al decimillesimo di unità\r\nmonetaria, occupa 8 bytes di memoria</li><li>smallmoney<br>\r\nContiene valori monetari da - 214748.3648 a 214748.3647 con una\r\nprecisione al decimillesimo di unità monetaria, occupa 4 bytes di\r\nmemoria.</li></ul> \r\n<p><strong>Dati numerici approssimati:</strong></p> \r\n<ul><li>float[(n)]<br>\r\nContiene numeri a virgola mobile positivi e negativi, compresi tra<br>\r\n2.23E-308 e 1.79E308 per i valori positivi e tra -2.23E-308 e\r\n-1.79E308 per i valori negativi, occupa 8 bytes di memoria ed ha una\r\nprecisione di 15 cifre</li><li>real<br>\r\nContiene numeri a virgola mobile positivi e negativi comprese tra\r\n1.18E-38 e 3.40E38 per i valori positivi e tra -1.18E-38 e -3.40E38\r\nper i valori negativi, occupa 4 bytes di memoria ed ha una\r\nprecisione di 7 cifre</li></ul> \r\n<p><strong>Dati numerici esatti:</strong></p> \r\n<ul><li>decimal[(p[, s])]</li><li>numeric[(p[, s])]<br>\r\ndecimal e numeric sono sinonimi per SQL Server 7, possono avere\r\nvalori compresi tra 10^38 - 1 e - 10^38 -1. La memoria che occupano\r\nper essere immagazzinati varia a seconda della precisione che\r\nutilizziamo per rappresentarli, da un minimo di 2 bytes a un massimo\r\ndi 17 bytes<br>\r\np - è la precisione, che rappresenta il numero massimo di cifre\r\ndecimali che possono essere memorizzate (da entrambe le parti della\r\nvirgola). Il massimo della precisione è 28 cifre.<br>\r\ns - è la scala, che rappresenta il numero di massimo di cifre\r\ndecimali dopo la virgola e deve essere minore od uguale alla\r\nprecisione.</li><li>int<br>\r\noccupa 4 byte di memoria e memorizza i valori da -2147483648 a\r\n2147483647</li><li>smallint<br>\r\noccupa 2 byte di memoria e memorizza i valori da -32768 a 32,767</li><li>tinyint<br>\r\noccupa 1 byte di memoria e memorizza i valori da 0 a 255</li></ul>\r\n\r\n<p><strong>Dati speciali:</strong></p> \r\n<ul><li>bit<br>\r\ntipicamente è usato per rappresentare i flag, vero/false o true/false\r\no si/no, perché può accettare solo due valori 0 o 1. Occupa un bit\r\novviamente. Le colonne che hanno un tipo dati bit non possono avere\r\nvalori nulli e non possono avere indici.</li><li>cursor<br>\r\nsono usati come varibili in stored proc oppure come parametri di\r\nOUTPUT sempre in stored proc, fanno riferimento ai cursori. Possono\r\nessere nulli e non possono essere usati con le istruzioni CREATE\r\nTABLE.</li><li>sysname<br>\r\nuna varchar di 128 caratteri ed occupa 256 bytes, viene usato per\r\nassegnare i nomi ad ogggetti del database, come tabelle, procedure,\r\ntriggere, indici, ecc...</li><li>timestamp<br>\r\noccupa 8 bytes ed è un contatore incrementale per colonna assegnato\r\nautomaticamente da SQL Server 7.</li><li>UNIQUEIDENTIFIER (GUID)<br>\r\nE\' un identificatore unico a livello globale di 16 byte di lunghezza\r\nchiamato anche GUID. E\' generato (molto lentamente) automaticamente\r\nda SQL Server.</li></ul> \r\n<p><strong>Dati text ed image:</strong><br>\r\nI dati di questo tipo, non vengono memorizzati nelle normali pagine dati\r\ndi SQL Server, ma sono tratati in modo speciale su apposite pagine di\r\nmemorizzazione.</p> \r\n<ul><li>text<br>\r\nun tipo dati a lunghezza variabile, che può memorizzare fino a\r\n2147483647 caratteri.</li><li>ntext<br>\r\ncome il precedente ma memorizza caratteri UNICODE, quindi fino alla\r\nmetà del precedente, cioè 1073741823 caratteri.</li><li>image<br>\r\npuò memorizzare fino a 2147483647 bytes di dati binari, è\r\nsolitamente usato per le immagini.</li></ul>\r\n\r\n<p><strong>Sinonimi per i tipi di dati</strong><br>\r\nPer assicurare la compatibilità con lo standard SQL-92, SQL Server può\r\nusare i seguenti sinonimi per i corrispondenti tidi di dati quando\r\nusiamo istruzioni che fanno parte del data definition language (DDL),\r\ncome CREATE TABLE, CREATE PROCEDURE o in DECLARE @nomevariable.</p> \r\n\r\n\r\n<table class=\"tabella\" border=\"1\" cellpadding=\"4\" cellspacing=\"0\"><tbody><tr>\r\n<td align=\"center\"><strong>Sinonimo</strong></td>\r\n<td align=\"center\"><strong>Mappato su SQL Server 7.0</strong></td>\r\n</tr>\r\n<tr>\r\n<td>Binary varying </td>\r\n<td>Varbinary</td>\r\n</tr>\r\n<tr>\r\n<td>char varying</td>\r\n<td>Varchar</td>\r\n</tr>\r\n<tr>\r\n<td>character</td>\r\n<td>Char</td>\r\n</tr>\r\n<tr>\r\n<td>character</td>\r\n<td>char(1)</td>\r\n</tr>\r\n<tr>\r\n<td>character(n)</td>\r\n<td>char(n)</td>\r\n</tr>\r\n<tr>\r\n<td>character varying(n)</td>\r\n<td>varchar(n)</td>\r\n</tr>\r\n<tr>\r\n<td>Dec</td>\r\n<td>decimal</td>\r\n</tr>\r\n<tr>\r\n<td>Double precision</td>\r\n<td>float</td>\r\n</tr>\r\n<tr>\r\n<td>float[(n)] for n = 1-7</td>\r\n<td>real</td>\r\n</tr>\r\n<tr>\r\n<td>float[(n)] for n = 8-15</td>\r\n<td>float</td>\r\n</tr>\r\n<tr>\r\n<td>Integer</td>\r\n<td>Int</td>\r\n</tr>\r\n<tr>\r\n<td>national character(n)</td>\r\n<td>nchar(n)</td>\r\n</tr>\r\n<tr>\r\n<td>national char(n)</td>\r\n<td>nchar(n)</td>\r\n</tr>\r\n<tr>\r\n<td>national character varying(n)</td>\r\n<td>nvarchar(n)</td>\r\n</tr>\r\n<tr>\r\n<td>national char varying(n)</td>\r\n<td>nvarchar(n)</td>\r\n</tr>\r\n<tr>\r\n<td>national text</td>\r\n<td>ntext</td></tr></tbody></table>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',3,1401567245),(9,2,'istruzioni DML ed esempi di Query','<p>Affronteremo una piccola ricapitolazione delle istruzioni utili all\'inserimento ed alla manipolazione dei dati in un DB.<br></p>',1,'<div>Innanzitutto ricordiamo sinteticamente le istruzioni DML che servono a popolare e gestire le informazioni:<br></div><br><ul><li><b>INSERT</b>: inserire nuovi dati nelle righe della tabella </li><li>\r\n<b>UPDATE</b>: aggiornare i valori nella tabella </li><li>\r\n<b>DELETE</b>: cancellare righe della tabella <br></li></ul><div>e accenniamo alle istruzioni che ci serviranno per poter manipolare e ricavare informazioni dal Database. Iniziamo dalla sintassi del comando SQL SELECT. </div><div>Con l\'istruzione SELECT possiamo creare degli script di interrogazione al database, interrogazioni dette query.\r\n\r\nLa sintassi base di una SELECT SQL è la seguente: </div><div><br></div><pre> SELECT * FROM nome_tabella </pre><div><br></div><div> dove * indica che vogliamo visualizzare tutti i campi. La query </div><div><br></div><pre>SELECT *<br>FROM autori </pre><div><br></div><div> estrae invece tutti i campi dalla tabella autori. Al posto di * posso usare i nomi dei campi che mi interessa estrarre, per esempio:</div><div><br></div><div><pre>SELECT id, autore <br>FROM autori </pre></div><div><br></div><div>Inseriamo adesso un filtro nella query utilizzando l\'operatore WHERE: </div><div><br></div><div><pre>SELECT id, autore <br>FROM autori\r\nWHERE ID = 1</pre></div><div><br></div><div>Ricordiamo inoltre che per padroneggiare le query bisogna riprendere in particolare i concetti di:</div><div><br></div><div><ul><li>operazioni relazionali (unione, intersezione, differenza, Join)</li><li>operazioni elementari sulle tabelle (selezione, proiezione)</li><li>si possono utilizzare gli operatori logici</li><li>raggruppamenti: Group by e Order</li><li>COUNT, AVG.</li></ul><div><br></div><div>Rappresentiamo alcuni esempi a partire dal DB appena creato. Ricaviamo il numero di libri a partire dal reparto inserito dall\'utente:</div><div><br></div><pre>SELECT TIPOREPARTO.Descr, COUNT(TipoReparto)\r\n FROM REPARTO, TIPOLIBRO, LIBRO\r\n WHERE Reparto.CodRep = LIBRO.CodRep AND \r\n TIPOLIBRO.CodTipo = LIBRO.CodTipo AND \r\n REPARTO.Descr = [Digita nome del reparto] AND \r\n (TIPOLIBRO.Descr = \"I più venduti” OR\r\n TIPOLIBRO.DESCR = \" da non perdere\");\r\nGROUP BY TIPOLIBRO.Descr;</pre><br></div><div>oppure ricaviamo tutti i dettagli dei libri a partire dal nome del reparto:</div><div><br>\r\n<br><pre>SELECT LIBRO.*\r\n FROM REPARTO, TIPOLIBRO, LIBRO\r\n WHERE Reparto.CodRep = LIBRO.CodRep AND \r\n TIPOLIBRO.CodTipo = LIBRO.CodTipo AND \r\n REPARTO.Descr = [Digita nome del reparto] AND \r\n (TIPOLIBRO.Descr = \"I più venduti” OR\r\n TIPOLIBRO.DESCR = \" da non perdere\");\r\nORDER BY TIPOLIBRO.Descr;</pre><br><div>Prima di rispolverare le istruzioni riportiamo alcuni consigli riguardo la realizzazione delle query:</div><div><ul><li>Quando possibile cercare di costruire query che coinvolgano il minor numero di tabelle</li><li>Gli errori classici vengono commessi omettendo la clausula di raggruppamento (GROUP BY) quando si utilizzano funzioni di aggregazione (COUNT, SUM, AVG...) oppure quando c\'è HAVING.</li><li>Se è presente una condizione sulle singole righe deve essere messa vicino a WHERE e non vicino a HAVING.</li></ul></div></div>\r\n\r\n<p></p>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',13,1402484790),(11,2,'Definizione di progettazione concettuale','<p>Approccio della progettazione concettuale a partire dall\'analisi svolta.<br></p>',1,'<p>Nel corso di quest\'anno scolastico abbiamo studiato i seguenti modelli:<br></p><p></p><ul><li>Modello gerarchico</li><li>Modello reticolare</li><li>Modello a oggetti</li><li>Modello relazione</li></ul><div>Abbiamo visto altresì che il modello più diffuso è il Modello Relazionale.</div><p><br></p><p>Ricordiamo che la Progettazione concettuale consiste nel riorganizzare tutti gli elementi presenti nella documentazione per rappresentare la realtà di interesse. Tale progettazione risulterà una descrizione formale e completa, indipendentemente dai criteri di rappresentazione nel DBMS.</p><p><img src=\"@@PLUGINFILE@@/ProggConc.jpg\" alt=\"Progettazione concettuale\" width=\"480\" height=\"360\" style=\"vertical-align:text-bottom; margin: 0 .5em;\" class=\"img-responsive\"><br></p><p>In figura è schematizzata la costruzione di un database partendo dall\'analisi di un problema. In questa fase ci occupiamo della progettazione concettuale, nella quale individueremo gli elementi (o entità) che la costituiscono e le relazioni che intercorrono tra essi.</p><p>Si tratta del livello più alto della progettazione di un data-base, quello più vicino all\'uomo e più lontano dalla macchina (hardware). Deve quindi essere realizzata con strumenti e linguaggi comprensibili a tutti, non solo agli specialisti, e indipendenti dal sistema di database.<br></p><p>Sono stati proposti diversi metodi di analisi concettuale, quello utilizzato in questa sede è il diagramma Entità-Relazioni che rappresenta le entità con rettangoli e le relazioni con rombi.<br></p>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',16,1401641740),(12,2,'Introduzione al diagramma E/R','<p>Il negozio Online (Parte 1)<br></p>',1,'<p>Dopo questa breve sintesi dei concetti fondamentali inerenti la progettazione concettuale passiamo alla definizione del modello E-R del nostro negozio online, ovvero creiamo un\'astrazione del nostro problema reale. Dunque, ragioniamo sulle singole specifiche per tirar fuori entità ed attributi. Pensando ad un reparto sicuramente penseremo alle seguenti proprietà:</p><p><br></p><p></p><ul><li>Codice reparto: indispensabile per individuarlo.</li><li>Tipo: esistono vari argomenti trattati nei libri (letteratura, storia, lingua).<br></li><li>Descrizione: di ogni tipo ci saranno delle specifiche (Letteratura moderna, classica, storia romana, greca e così via)<br></li></ul><p></p><p><br></p><p><b>Da una semplice riflessione abbiamo costruito la nostra entità con i relativi attributi, specificandone la chiave.</b></p><p><img src=\"@@PLUGINFILE@@/Immagine.JPG\" alt=\"Entità\" width=\"167\" height=\"107\" style=\"vertical-align:text-bottom; margin: 0 .5em;\" class=\"img-responsive\"><br></p><p>A questo punto ricordiamo sinteticamente le regole di entità e associazione per completare la prima parte della schematizzazione.</p><p><span style=\"color: rgb(37, 37, 37); font-family: sans-serif; line-height: 22.399999618530273px;\">Le associazioni (dette anche </span><i style=\"color: rgb(37, 37, 37); font-family: sans-serif; line-height: 22.399999618530273px;\"><b>relazioni</b></i><span style=\"color: rgb(37, 37, 37); font-family: sans-serif; line-height: 22.399999618530273px;\">) rappresentano un legame tra due o più entità. Ricordiamo i seguenti tipi di relazioni:</span></p><p></p><ul><li><span style=\"line-height: 22.399999618530273px; color: rgb(37, 37, 37); font-family: sans-serif;\">Relazioni <b>uno-a-molti</b>: </span><span style=\"line-height: 22.399999618530273px;\">se ad ogni istanza </span><span style=\"line-height: 22.399999618530273px; color: rgb(37, 37, 37); font-family: sans-serif;\">della prima entità corrisponde al più una della seconda, </span><span style=\"line-height: 22.399999618530273px; color: rgb(37, 37, 37); font-family: sans-serif;\">ma esiste un\'istanza della seconda cui corrisponde più </span><span style=\"line-height: 22.399999618530273px; color: rgb(37, 37, 37); font-family: sans-serif;\">di un\'istanza della prima. Anche indicata con (1:n) </span></li><li><span style=\"color: rgb(37, 37, 37); font-family: sans-serif; line-height: 22.399999618530273px;\">Relazioni <b>uno-a-uno</b>: </span><span style=\"line-height: 22.399999618530273px; color: rgb(37, 37, 37); font-family: sans-serif;\">se ad ogni istanza della </span><span style=\"line-height: 22.399999618530273px; color: rgb(37, 37, 37); font-family: sans-serif;\">prima entità corrisponde al più un\'istanza della </span><span style=\"line-height: 22.399999618530273px; color: rgb(37, 37, 37); font-family: sans-serif;\">seconda entità e viceversa. Anche indicata con (1:1).</span></li><li><span><span style=\"line-height: 22.399999618530273px;\">Relazioni <b>molti-a-molti</b>: </span></span><span style=\"line-height: 22.399999618530273px; color: rgb(37, 37, 37); font-family: sans-serif;\">se esiste </span><span style=\"line-height: 22.399999618530273px; color: rgb(37, 37, 37); font-family: sans-serif;\">un\'istanza della prima entità in relazione con più di </span><span style=\"line-height: 22.399999618530273px; color: rgb(37, 37, 37); font-family: sans-serif;\">un\'istanza della seconda, e viceversa. Anche indicata con </span><span style=\"line-height: 22.399999618530273px; color: rgb(37, 37, 37); font-family: sans-serif;\">(m:n).</span></li></ul><p></p><div>Per eventuali altri approfondimenti visitare il seguente sito, ricco di esempi <a href=\"http://www.di.unito.it/~olivetti/BCTU2005/LEZIONI/LEZ14progdb.pdf\">http://www.di.unito.it/~olivetti/BCTU2005/LEZIONI/LEZ14progdb.pdf</a></div>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',11,1401641759),(15,2,'Definizione di Progettazione Logica','<p>Definizione di Progettazione Logica<br></p>',1,'<div>La progettazione logica consente di descrivere i dati secondo una modalità comprensibile al computer, essa viene costruita partendo dalla progettazione concettuale e seguendo semplici regole di conversione. La progettazione Logica Relazionale consiste nella conversione del modello E-R in tabelle secondo precise regole di conversione.</div><div><img src=\"@@PLUGINFILE@@/da%20PC%20a%20PL.jpg\" alt=\"Da PC a PL\" width=\"480\" height=\"360\" style=\"vertical-align:text-bottom; margin: 0 .5em;\" class=\"img-responsive\"><br></div><div>Lo schema che si ottiene a valle della conversione si definisce schema relazionale della base di dati.</div><div>Tralasciando i particolari, perché già trattati nelle precedenti lezioni possiamo passare al nostro caso di studio, applicando la teoria alla pratica. </div><div>Per eventuali approfondimenti sul tema, possiamo avvalerci del materiale in rete <a href=\"http://users.dimi.uniud.it/~massimo.franceschet/teatro-sql/relazionaleStrutture.html\">http://users.dimi.uniud.it/~massimo.franceschet/teatro-sql/relazionaleStrutture.html</a>, a scopo esercitativo è possibile utilizzare il materiale digitale messo a disposizione dalla casa editrice del testo in adozione <a href=\"www.digilibro.pearson.it\">www.digilibro.pearson.it</a>.</div><div><br></div><div>Dopo aver rispolverato la teoria riportiamo alcuni semplici consigli:</div><div><ul><li>Indicare per tutti i campi significativi una descrizione, soprattutto per quelli calcolati e autoincrement. </li><li>Utilizzare dei dati di prova popolando la tabella in modo da verificare la completezza della soluzione proposta.</li><li>Analizzare ogni singola tabella per individuare eventuali violazioni delle forme normali.</li></ul></div><div><br></div>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',9,1401641847),(17,2,'Indicazioni aggiuntive','<p>Negozio Online (Parte 2)<br></p>',1,'<p>Nella definizione dello schema E-R si procede sempre per affinamenti successivi, tenendo presente alcuni consigli:</p><p></p><ul><li>Non bisogna inserire come entità \"l\'ambito del problema\": ad esempio nel nostro caso \"BookShop\".</li><li>Introducete chiavi primarie artificiali (numeri incrementali), soprattutto per le entità le cui istanze possono essere registrate in modo progressivo.</li><li>Tutti gli attributi descrittivi di catalogazione che si ripetono (tipo, categoria, settore) isolarli subito in una entità.</li><li>Ricordatevi di motivare sempre le scelte fatte nel caso di ambiguità, evidenziando le ipotesi aggiuntive e gli eventuali vincoli introdotti.</li></ul><p></p><p><br></p><p><br></p><p><br></p><p><br></p>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',6,1401641778),(18,2,'Analisi del caso di studio','<p>Analisi del caso di studio</p>',1,'Il problema proposto è un classico problema di progettazione e implementazione di un database, che richiede un\'analisi puntuale dei bisogni al fine di ottimizzare sia i tempi di accesso che l\'occupazione di spazio sul supporto di memorizzazione.<br><br>\r\n\r\nSenza entrare nel dettaglio, ci limitiamo a suggerire di leggere più volte e attentamente la situazione che andremo ad analizzare, in modo da avere ben chiaro \"ciò che bisogna fare\". Per esempio, possiamo notare che gli utenti abilitati all\'acquisto sono registrati per nome, cognome, indirizzo, città e dati relativi alla carta di credito.<br><br>\r\n\r\nI dati della carta di credito, per problemi di sicurezza, non andrebbero memorizzati nel database del negozio che vende libri, ma la loro gestione andrebbe demandata direttamente al sistema informatico degli istituti di credito. Al fine di semplificare la progettazione consigliamo però di includere comunque la carta di credito come attributo. Tale esempio è utile per comprendere le diverse valide soluzioni possibili ad uno stesso progetto, ma di complessità differenti.<br><br>\r\n\r\nPer questioni di sicurezza, sarebbe opportuno definire tipologie di utenti del negozio on line, attribuendogli specifici privilegi. Determinare i livelli di accesso e i gruppi di utenti riconosciuti è compito dell\'amministratore del database. Generalmente l\'amministratore concede i permessi di accesso strettamente necessari. Tali privilegi vengono assegnati attraverso il comando GRANT, disponibile in DCL di MySQL. Per rivedere l\'utilizzo del comando GRANT si rimanda alla pagina <a href=\"http://www.mysqltutorial.org/mysql-grant.aspx\">http://www.mysqltutorial.org/mysql-grant.aspx</a>.',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',14,1401381130),(19,2,'Ipotesi aggiuntive','<p>Ipotesi aggiuntive</p>',1,'Generalmente il problema da analizzare è \"una parte\" di una situazione più complessa non sempre completamente conosciuta, per motivi legati allo spazio e al tempo. Per tutto quanto non esplicitamente specificato, è necessario porre delle ipotesi aggiuntive per sciogliere ogni perplessità ed ambiguità.<br>Al fine di semplificare una situazione complicata è possibile stabilire delle condizioni e/o ipotesi aggiuntive.<br>Ad esempio un libro sarà individuato univocamente dal suo codice ISBN, che individua tutte le copie di quel libro; sarà possibile aggiungere nuovi reparti e per ogni reparto nuovi tipi di settori.<br>Inoltre, dovendo progettare un database per la gestione di un negozio on line, è \r\nopportuno utilizzare il modello client-server, in cui la parte server è \r\nrealizzata in un linguaggio di programmazione dinamico, ad \r\nesempio PHP, e per il database del sistema informatico da realizzare \r\nutilizzeremo MySql. Il Web Server che suggeriamo è APACHE. <br><p></p>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',8,1401366673),(21,2,'Analisi del problema','<br>',1,'<p>L\'analisi del problema è la fase successiva alla lettura del progetto da realizzare ed è volta a determinare cosa il programma deve \"fare\".</p><p>La metodologia di progettazione di una base di dati è un insieme di attività tra loro collegate, volte a realizzare una base di dati a partire da un insieme di specifiche che formalizzano le esigenze dell\'utente. Mediante la fase di analisi le specifiche della realtà di interesse vengono trasformate in specifiche formali, indipendenti dalla tecnologia e dal particolare linguaggio di programmazione che verrà utilizzato per generare i programmi.</p><p><br>In figura è rappresentata la progettazione di un sistema informativo, la prima fase è quella di analisi, in cui posto il problema lo si analizza nelle sue parti ottenendo uno schema sulle azioni da effettuare per la risoluzione di quest\'ultimo.</p><p><img src=\"@@PLUGINFILE@@/Figura%20progetto.jpg\" alt=\"figura\" width=\"400\" height=\"300\" style=\"vertical-align:text-bottom; margin: 0 .5em;\" class=\"img-responsive\"><br></p>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',9,1401547445),(22,2,'Introduzione alla progettazione logica','<p><br></p>',1,'<p>Abbiamo detto che partendo dalla progettazione concettuale, dobbiamo costruire la progettazione logica, in sostanza a questo punto bisogna trasformare lo schema Entità Relazione in tabelle.</p><p>Ogni entità rappresenta una tabella e gli attributi i campi della tabella stessa.</p><p>Facciamo un esempio riprendendo il caso dell\'entità Reparto già introdotto nella progettazione concettuale, esso avrà la seguente forma:</p><p><br></p><p><img src=\"@@PLUGINFILE@@/Fig4.jpg\" alt=\"fig4\" width=\"480\" height=\"360\" style=\"vertical-align:text-bottom; margin: 0 .5em;\" class=\"img-responsive\"><br></p><p>Per quanto riguarda la realizzazione della progettazione logica delle relazioni si consiglia di porre la massima attenzione alla cardinalità delle stesse. Per approfondimenti consultare <a href=\"http://www.cs.unibo.it/~moretti/lezione-4.pdf\">http://www.cs.unibo.it/~moretti/lezione-4.pdf</a>.<br></p><p><br></p><p><br></p>',1,0,NULL,5,'a:2:{s:12:\"printheading\";s:1:\"1\";s:10:\"printintro\";s:1:\"0\";}',7,1401641857);
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000012` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000014` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000016` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000018` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000019` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000021` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000022` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000023` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000024` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0182000025` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0250000136` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0259000063` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0284000001` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0284000002` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0284000004` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0284000005` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0284000006` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0284000007` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0284000008` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0284000009` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0284000010` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0284000011` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0322000501` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_0412000437` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_27013` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_alberto` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_amadori` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_camastra` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_ceinge` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_cotroneo` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_fpeluso` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_fuscog` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_intrito` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_luca_appollo` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_mennone` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_murli` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_osp` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_peluso` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_riccio` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_troisi` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms5_zanetti` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms_0108001221` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms_0108001235` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms_0108001275` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms_0108001475` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms_0108001485` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms_0124000036` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms_0124000180` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms_0124000257` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms_0124000642` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ms_raffmont` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysql` /*!40100 DEFAULT CHARACTER SET utf8 */;
INSERT INTO `help_topic` VALUES (0,'MIN',16,'Syntax:\nMIN([DISTINCT] expr)\n\nReturns the minimum value of expr. MIN() may take a string argument; in\nsuch cases, it returns the minimum string value. See\nhttp://dev.mysql.com/doc/refman/5.5/en/mysql-indexes.html. The DISTINCT\nkeyword can be used to find the minimum of the distinct values of expr,\nhowever, this produces the same result as omitting DISTINCT.\n\nMIN() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','mysql> SELECT student_name, MIN(test_score), MAX(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(1,'JOIN',28,'MySQL supports the following JOIN syntaxes for the table_references\npart of SELECT statements and multiple-table DELETE and UPDATE\nstatements:\n\ntable_references:\n escaped_table_reference [, escaped_table_reference] ...\n\nescaped_table_reference:\n table_reference\n | { OJ table_reference }\n\ntable_reference:\n table_factor\n | join_table\n\ntable_factor:\n tbl_name [[AS] alias] [index_hint_list]\n | table_subquery [AS] alias\n | ( table_references )\n\njoin_table:\n table_reference [INNER | CROSS] JOIN table_factor [join_condition]\n | table_reference STRAIGHT_JOIN table_factor\n | table_reference STRAIGHT_JOIN table_factor ON conditional_expr\n | table_reference {LEFT|RIGHT} [OUTER] JOIN table_reference join_condition\n | table_reference NATURAL [{LEFT|RIGHT} [OUTER]] JOIN table_factor\n\njoin_condition:\n ON conditional_expr\n | USING (column_list)\n\nindex_hint_list:\n index_hint [, index_hint] ...\n\nindex_hint:\n USE {INDEX|KEY}\n [FOR {JOIN|ORDER BY|GROUP BY}] ([index_list])\n | IGNORE {INDEX|KEY}\n [FOR {JOIN|ORDER BY|GROUP BY}] (index_list)\n | FORCE {INDEX|KEY}\n [FOR {JOIN|ORDER BY|GROUP BY}] (index_list)\n\nindex_list:\n index_name [, index_name] ...\n\nA table reference is also known as a join expression.\n\nThe syntax of table_factor is extended in comparison with the SQL\nStandard. The latter accepts only table_reference, not a list of them\ninside a pair of parentheses.\n\nThis is a conservative extension if we consider each comma in a list of\ntable_reference items as equivalent to an inner join. For example:\n\nSELECT * FROM t1 LEFT JOIN (t2, t3, t4)\n ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)\n\nis equivalent to:\n\nSELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4)\n ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)\n\nIn MySQL, JOIN, CROSS JOIN, and INNER JOIN are syntactic equivalents\n(they can replace each other). In standard SQL, they are not\nequivalent. INNER JOIN is used with an ON clause, CROSS JOIN is used\notherwise.\n\nIn general, parentheses can be ignored in join expressions containing\nonly inner join operations. MySQL also supports nested joins (see\nhttp://dev.mysql.com/doc/refman/5.5/en/nested-join-optimization.html).\n\nIndex hints can be specified to affect how the MySQL optimizer makes\nuse of indexes. For more information, see\nhttp://dev.mysql.com/doc/refman/5.5/en/index-hints.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/join.html\n\n','SELECT left_tbl.*\n FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id\n WHERE right_tbl.id IS NULL;\n','http://dev.mysql.com/doc/refman/5.5/en/join.html'),(2,'HEX',38,'Syntax:\nHEX(str), HEX(N)\n\nFor a string argument str, HEX() returns a hexadecimal string\nrepresentation of str where each byte of each character in str is\nconverted to two hexadecimal digits. (Multibyte characters therefore\nbecome more than two digits.) The inverse of this operation is\nperformed by the UNHEX() function.\n\nFor a numeric argument N, HEX() returns a hexadecimal string\nrepresentation of the value of N treated as a longlong (BIGINT) number.\nThis is equivalent to CONV(N,10,16). The inverse of this operation is\nperformed by CONV(HEX(N),16,10).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT X\'616263\', HEX(\'abc\'), UNHEX(HEX(\'abc\'));\n -> \'abc\', 616263, \'abc\'\nmysql> SELECT HEX(255), CONV(HEX(255),16,10);\n -> \'FF\', 255\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(3,'REPLACE',28,'Syntax:\nREPLACE [LOW_PRIORITY | DELAYED]\n [INTO] tbl_name [(col_name,...)]\n {VALUES | VALUE} ({expr | DEFAULT},...),(...),...\n\nOr:\n\nREPLACE [LOW_PRIORITY | DELAYED]\n [INTO] tbl_name\n SET col_name={expr | DEFAULT}, ...\n\nOr:\n\nREPLACE [LOW_PRIORITY | DELAYED]\n [INTO] tbl_name [(col_name,...)]\n SELECT ...\n\nREPLACE works exactly like INSERT, except that if an old row in the\ntable has the same value as a new row for a PRIMARY KEY or a UNIQUE\nindex, the old row is deleted before the new row is inserted. See [HELP\nINSERT].\n\nREPLACE is a MySQL extension to the SQL standard. It either inserts, or\ndeletes and inserts. For another MySQL extension to standard SQL---that\neither inserts or updates---see\nhttp://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html.\n\n*Note*: REPLACE makes sense only if a table has a PRIMARY KEY or UNIQUE\nindex. Otherwise, it becomes equivalent to INSERT, because there is no\nindex to be used to determine whether a new row duplicates another.\n\nValues for all columns are taken from the values specified in the\nREPLACE statement. Any missing columns are set to their default values,\njust as happens for INSERT. You cannot refer to values from the current\nrow and use them in the new row. If you use an assignment such as SET\ncol_name = col_name + 1, the reference to the column name on the right\nhand side is treated as DEFAULT(col_name), so the assignment is\nequivalent to SET col_name = DEFAULT(col_name) + 1.\n\nTo use REPLACE, you must have both the INSERT and DELETE privileges for\nthe table.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/replace.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/replace.html'),(4,'CONTAINS',31,'Contains(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 completely contains g2. This\ntests the opposite relationship as Within().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mbr.html'),(5,'SRID',37,'SRID(g)\n\nReturns an integer indicating the Spatial Reference System ID for the\ngeometry value g.\n\nIn MySQL, the SRID value is just an integer associated with the\ngeometry value. All calculations are done assuming Euclidean (planar)\ngeometry.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-general-property-functions.html\n\n','mysql> SELECT SRID(GeomFromText(\'LineString(1 1,2 2)\',101));\n+-----------------------------------------------+\n| SRID(GeomFromText(\'LineString(1 1,2 2)\',101)) |\n+-----------------------------------------------+\n| 101 |\n+-----------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-general-property-functions.html'),(6,'CURRENT_TIMESTAMP',32,'Syntax:\nCURRENT_TIMESTAMP, CURRENT_TIMESTAMP()\n\nCURRENT_TIMESTAMP and CURRENT_TIMESTAMP() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(7,'SHOW CONTRIBUTORS',27,'Syntax:\nSHOW CONTRIBUTORS\n\nThe SHOW CONTRIBUTORS statement displays information about the people\nwho contribute to MySQL source or to causes that we support. For each\ncontributor, it displays Name, Location, and Comment values.\n\nThis statement is deprecated as of MySQL 5.5.29 and is removed in MySQL\n5.6.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-contributors.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-contributors.html'),(8,'VARIANCE',16,'Syntax:\nVARIANCE(expr)\n\nReturns the population standard variance of expr. This is an extension\nto standard SQL. The standard SQL function VAR_POP() can be used\ninstead.\n\nVARIANCE() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(9,'DROP SERVER',40,'Syntax:\nDROP SERVER [ IF EXISTS ] server_name\n\nDrops the server definition for the server named server_name. The\ncorresponding row in the mysql.servers table is deleted. This statement\nrequires the SUPER privilege.\n\nDropping a server for a table does not affect any FEDERATED tables that\nused this connection information when they were created. See [HELP\nCREATE SERVER].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-server.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-server.html'),(10,'SHOW AUTHORS',27,'Syntax:\nSHOW AUTHORS\n\nThe SHOW AUTHORS statement displays information about the people who\nwork on MySQL. For each author, it displays Name, Location, and Comment\nvalues.\n\nThis statement is deprecated as of MySQL 5.5.29 and is removed in MySQL\n5.6.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-authors.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-authors.html'),(11,'VAR_SAMP',16,'Syntax:\nVAR_SAMP(expr)\n\nReturns the sample variance of expr. That is, the denominator is the\nnumber of rows minus one.\n\nVAR_SAMP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(12,'CONCAT',38,'Syntax:\nCONCAT(str1,str2,...)\n\nReturns the string that results from concatenating the arguments. May\nhave one or more arguments. If all arguments are nonbinary strings, the\nresult is a nonbinary string. If the arguments include any binary\nstrings, the result is a binary string. A numeric argument is converted\nto its equivalent string form. This is a nonbinary string as of MySQL\n5.5.3. Before 5.5.3, it is a binary string; to avoid that and produce a\nnonbinary string, you can use an explicit type cast, as in this\nexample:\n\nSELECT CONCAT(CAST(int_col AS CHAR), char_col);\n\nCONCAT() returns NULL if any argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT CONCAT(\'My\', \'S\', \'QL\');\n -> \'MySQL\'\nmysql> SELECT CONCAT(\'My\', NULL, \'QL\');\n -> NULL\nmysql> SELECT CONCAT(14.3);\n -> \'14.3\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(13,'GEOMETRY HIERARCHY',35,'Geometry is the base class. It is an abstract class. The instantiable\nsubclasses of Geometry are restricted to zero-, one-, and\ntwo-dimensional geometric objects that exist in two-dimensional\ncoordinate space. All instantiable geometry classes are defined so that\nvalid instances of a geometry class are topologically closed (that is,\nall defined geometries include their boundary).\n\nThe base Geometry class has subclasses for Point, Curve, Surface, and\nGeometryCollection:\n\no Point represents zero-dimensional objects.\n\no Curve represents one-dimensional objects, and has subclass\n LineString, with sub-subclasses Line and LinearRing.\n\no Surface is designed for two-dimensional objects and has subclass\n Polygon.\n\no GeometryCollection has specialized zero-, one-, and two-dimensional\n collection classes named MultiPoint, MultiLineString, and\n MultiPolygon for modeling geometries corresponding to collections of\n Points, LineStrings, and Polygons, respectively. MultiCurve and\n MultiSurface are introduced as abstract superclasses that generalize\n the collection interfaces to handle Curves and Surfaces.\n\nGeometry, Curve, Surface, MultiCurve, and MultiSurface are defined as\nnoninstantiable classes. They define a common set of methods for their\nsubclasses and are included for extensibility.\n\nPoint, LineString, Polygon, GeometryCollection, MultiPoint,\nMultiLineString, and MultiPolygon are instantiable classes.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-geometry-class-hierarchy.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-geometry-class-hierarchy.html'),(14,'CHAR FUNCTION',38,'Syntax:\nCHAR(N,... [USING charset_name])\n\nCHAR() interprets each argument N as an integer and returns a string\nconsisting of the characters given by the code values of those\nintegers. NULL values are skipped.\nBy default, CHAR() returns a binary string. To produce a string in a\ngiven character set, use the optional USING clause:\n\nmysql> SELECT CHARSET(CHAR(X\'65\')), CHARSET(CHAR(X\'65\' USING utf8));\n+----------------------+---------------------------------+\n| CHARSET(CHAR(X\'65\')) | CHARSET(CHAR(X\'65\' USING utf8)) |\n+----------------------+---------------------------------+\n| binary | utf8 |\n+----------------------+---------------------------------+\n\nIf USING is given and the result string is illegal for the given\ncharacter set, a warning is issued. Also, if strict SQL mode is\nenabled, the result from CHAR() becomes NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT CHAR(77,121,83,81,\'76\');\n -> \'MySQL\'\nmysql> SELECT CHAR(77,77.3,\'77.3\');\n -> \'MMM\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(15,'DATETIME',23,'DATETIME\n\nA date and time combination. The supported range is \'1000-01-01\n00:00:00\' to \'9999-12-31 23:59:59\'. MySQL displays DATETIME values in\n\'YYYY-MM-DD HH:MM:SS\' format, but permits assignment of values to\nDATETIME columns using either strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-type-overview.html'),(16,'SHOW CREATE TRIGGER',27,'Syntax:\nSHOW CREATE TRIGGER trigger_name\n\nThis statement shows the CREATE TRIGGER statement that creates the\nnamed trigger. This statement requires the TRIGGER privilege for the\ntable associated with the trigger.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-create-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-create-trigger.html'),(17,'SHOW CREATE PROCEDURE',27,'Syntax:\nSHOW CREATE PROCEDURE proc_name\n\nThis statement is a MySQL extension. It returns the exact string that\ncan be used to re-create the named stored procedure. A similar\nstatement, SHOW CREATE FUNCTION, displays information about stored\nfunctions (see [HELP SHOW CREATE FUNCTION]).\n\nTo use either statement, you must be the user named in the routine\nDEFINER clause or have SELECT access to the mysql.proc table. If you do\nnot have privileges for the routine itself, the value displayed for the\nCreate Procedure or Create Function field will be NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-create-procedure.html\n\n','mysql> SHOW CREATE PROCEDURE test.simpleproc\\G\n*************************** 1. row ***************************\n Procedure: simpleproc\n sql_mode:\n Create Procedure: CREATE PROCEDURE `simpleproc`(OUT param1 INT)\n BEGIN\n SELECT COUNT(*) INTO param1 FROM t;\n END\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\nmysql> SHOW CREATE FUNCTION test.hello\\G\n*************************** 1. row ***************************\n Function: hello\n sql_mode:\n Create Function: CREATE FUNCTION `hello`(s CHAR(20))\n RETURNS CHAR(50)\n RETURN CONCAT(\'Hello, \',s,\'!\')\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.5/en/show-create-procedure.html'),(18,'OPEN',24,'Syntax:\nOPEN cursor_name\n\nThis statement opens a previously declared cursor. For an example, see\nhttp://dev.mysql.com/doc/refman/5.5/en/cursors.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/open.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/open.html'),(19,'INTEGER',23,'INTEGER[(M)] [UNSIGNED] [ZEROFILL]\n\nThis type is a synonym for INT.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(20,'LOWER',38,'Syntax:\nLOWER(str)\n\nReturns the string str with all characters changed to lowercase\naccording to the current character set mapping. The default is latin1\n(cp1252 West European).\n\nmysql> SELECT LOWER(\'QUADRATICALLY\');\n -> \'quadratically\'\n\nLOWER() (and UPPER()) are ineffective when applied to binary strings\n(BINARY, VARBINARY, BLOB). To perform lettercase conversion, convert\nthe string to a nonbinary string:\n\nmysql> SET @str = BINARY \'New York\';\nmysql> SELECT LOWER(@str), LOWER(CONVERT(@str USING latin1));\n+-------------+-----------------------------------+\n| LOWER(@str) | LOWER(CONVERT(@str USING latin1)) |\n+-------------+-----------------------------------+\n| New York | new york |\n+-------------+-----------------------------------+\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(21,'SHOW COLUMNS',27,'Syntax:\nSHOW [FULL] COLUMNS {FROM | IN} tbl_name [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW COLUMNS displays information about the columns in a given table.\nIt also works for views. The LIKE clause, if present, indicates which\ncolumn names to match. The WHERE clause can be given to select rows\nusing more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html.\n\nSHOW COLUMNS displays information only for those columns for which you\nhave some privilege.\n\nmysql> SHOW COLUMNS FROM City;\n+------------+----------+------+-----+---------+----------------+\n| Field | Type | Null | Key | Default | Extra |\n+------------+----------+------+-----+---------+----------------+\n| Id | int(11) | NO | PRI | NULL | auto_increment |\n| Name | char(35) | NO | | | |\n| Country | char(3) | NO | UNI | | |\n| District | char(20) | YES | MUL | | |\n| Population | int(11) | NO | | 0 | |\n+------------+----------+------+-----+---------+----------------+\n5 rows in set (0.00 sec)\n\nIf the data types differ from what you expect them to be based on a\nCREATE TABLE statement, note that MySQL sometimes changes data types\nwhen you create or alter a table. The conditions under which this\noccurs are described in\nhttp://dev.mysql.com/doc/refman/5.5/en/silent-column-changes.html.\n\nThe FULL keyword causes the output to include the column collation and\ncomments, as well as the privileges you have for each column.\n\nYou can use db_name.tbl_name as an alternative to the tbl_name FROM\ndb_name syntax. In other words, these two statements are equivalent:\n\nmysql> SHOW COLUMNS FROM mytable FROM mydb;\nmysql> SHOW COLUMNS FROM mydb.mytable;\n\nSHOW COLUMNS displays the following values for each table column:\n\nField indicates the column name.\n\nType indicates the column data type.\n\nCollation indicates the collation for nonbinary string columns, or NULL\nfor other columns. This value is displayed only if you use the FULL\nkeyword.\n\nThe Null field contains YES if NULL values can be stored in the column,\nNO if not.\n\nThe Key field indicates whether the column is indexed:\n\no If Key is empty, the column either is not indexed or is indexed only\n as a secondary column in a multiple-column, nonunique index.\n\no If Key is PRI, the column is a PRIMARY KEY or is one of the columns\n in a multiple-column PRIMARY KEY.\n\no If Key is UNI, the column is the first column of a UNIQUE index. (A\n UNIQUE index permits multiple NULL values, but you can tell whether\n the column permits NULL by checking the Null field.)\n\no If Key is MUL, the column is the first column of a nonunique index in\n which multiple occurrences of a given value are permitted within the\n column.\n\nIf more than one of the Key values applies to a given column of a\ntable, Key displays the one with the highest priority, in the order\nPRI, UNI, MUL.\n\nA UNIQUE index may be displayed as PRI if it cannot contain NULL values\nand there is no PRIMARY KEY in the table. A UNIQUE index may display as\nMUL if several columns form a composite UNIQUE index; although the\ncombination of the columns is unique, each column can still hold\nmultiple occurrences of a given value.\n\nThe Default field indicates the default value that is assigned to the\ncolumn. This is NULL if the column has an explicit default of NULL, or\nif the column definition has no DEFAULT clause.\n\nThe Extra field contains any additional information that is available\nabout a given column. The value is nonempty in these cases:\nauto_increment for columns that have the AUTO_INCREMENT attribute; on\nupdate CURRENT_TIMESTAMP for TIMESTAMP columns that have the ON UPDATE\nCURRENT_TIMESTAMP attribute.\n\nPrivileges indicates the privileges you have for the column. This value\nis displayed only if you use the FULL keyword.\n\nComment indicates any comment the column has. This value is displayed\nonly if you use the FULL keyword.\n\nSHOW FIELDS is a synonym for SHOW COLUMNS. You can also list a table\'s\ncolumns with the mysqlshow db_name tbl_name command.\n\nThe DESCRIBE statement provides information similar to SHOW COLUMNS.\nSee http://dev.mysql.com/doc/refman/5.5/en/describe.html.\n\nThe SHOW CREATE TABLE, SHOW TABLE STATUS, and SHOW INDEX statements\nalso provide information about tables. See [HELP SHOW].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-columns.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-columns.html'),(22,'CREATE TRIGGER',40,'Syntax:\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n TRIGGER trigger_name\n trigger_time trigger_event\n ON tbl_name FOR EACH ROW\n trigger_body\n\ntrigger_time: { BEFORE | AFTER }\n\ntrigger_event: { INSERT | UPDATE | DELETE }\n\nThis statement creates a new trigger. A trigger is a named database\nobject that is associated with a table, and that activates when a\nparticular event occurs for the table. The trigger becomes associated\nwith the table named tbl_name, which must refer to a permanent table.\nYou cannot associate a trigger with a TEMPORARY table or a view.\n\nTrigger names exist in the schema namespace, meaning that all triggers\nmust have unique names within a schema. Triggers in different schemas\ncan have the same name.\n\nThis section describes CREATE TRIGGER syntax. For additional\ndiscussion, see\nhttp://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html.\n\nCREATE TRIGGER requires the TRIGGER privilege for the table associated\nwith the trigger. The statement might also require the SUPER privilege,\ndepending on the DEFINER value, as described later in this section. If\nbinary logging is enabled, CREATE TRIGGER might require the SUPER\nprivilege, as described in\nhttp://dev.mysql.com/doc/refman/5.5/en/stored-programs-logging.html.\n\nThe DEFINER clause determines the security context to be used when\nchecking access privileges at trigger activation time, as described\nlater in this section.\n\ntrigger_time is the trigger action time. It can be BEFORE or AFTER to\nindicate that the trigger activates before or after each row to be\nmodified.\n\ntrigger_event indicates the kind of operation that activates the\ntrigger. These trigger_event values are permitted:\n\no INSERT: The trigger activates whenever a new row is inserted into the\n table; for example, through INSERT, LOAD DATA, and REPLACE\n statements.\n\no UPDATE: The trigger activates whenever a row is modified; for\n example, through UPDATE statements.\n\no DELETE: The trigger activates whenever a row is deleted from the\n table; for example, through DELETE and REPLACE statements. DROP TABLE\n and TRUNCATE TABLE statements on the table do not activate this\n trigger, because they do not use DELETE. Dropping a partition does\n not activate DELETE triggers, either.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/create-trigger.html'),(23,'MONTH',32,'Syntax:\nMONTH(date)\n\nReturns the month for date, in the range 1 to 12 for January to\nDecember, or 0 for dates such as \'0000-00-00\' or \'2008-00-00\' that have\na zero month part.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT MONTH(\'2008-02-03\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(24,'TINYINT',23,'TINYINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA very small integer. The signed range is -128 to 127. The unsigned\nrange is 0 to 255.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(25,'SHOW TRIGGERS',27,'Syntax:\nSHOW TRIGGERS [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TRIGGERS lists the triggers currently defined for tables in a\ndatabase (the default database unless a FROM clause is given). This\nstatement returns results only for databases and tables for which you\nhave the TRIGGER privilege. The LIKE clause, if present, indicates\nwhich table names to match (not trigger names) and causes the statement\nto display triggers for those tables. The WHERE clause can be given to\nselect rows using more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html.\n\nFor the trigger ins_sum as defined in\nhttp://dev.mysql.com/doc/refman/5.5/en/triggers.html, the output of\nthis statement is as shown here:\n\nmysql> SHOW TRIGGERS LIKE \'acc%\'\\G\n*************************** 1. row ***************************\n Trigger: ins_sum\n Event: INSERT\n Table: account\n Statement: SET @sum = @sum + NEW.amount\n Timing: BEFORE\n Created: NULL\n sql_mode:\n Definer: myname@localhost\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-triggers.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-triggers.html'),(26,'MASTER_POS_WAIT',14,'Syntax:\nMASTER_POS_WAIT(log_name,log_pos[,timeout])\n\nThis function is useful for control of master/slave synchronization. It\nblocks until the slave has read and applied all updates up to the\nspecified position in the master log. The return value is the number of\nlog events the slave had to wait for to advance to the specified\nposition. The function returns NULL if the slave SQL thread is not\nstarted, the slave\'s master information is not initialized, the\narguments are incorrect, or an error occurs. It returns -1 if the\ntimeout has been exceeded. If the slave SQL thread stops while\nMASTER_POS_WAIT() is waiting, the function returns NULL. If the slave\nis past the specified position, the function returns immediately.\n\nIf a timeout value is specified, MASTER_POS_WAIT() stops waiting when\ntimeout seconds have elapsed. timeout must be greater than 0; a zero or\nnegative timeout means no timeout. The lock is exclusive. While held by\none session, other sessions cannot obtain a lock of the same name.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(27,'ISCLOSED',13,'IsClosed(ls)\n\nFor a LineString value ls, IsClosed() returns 1 if ls is closed (that\nis, its StartPoint() and EndPoint() values are the same).\n\nFor a MultiLineString value ls, IsClosed() returns 1 if ls is closed\n(that is, the StartPoint() and EndPoint() values are the same for each\nLineString in ls).\n\nIsClosed() returns 0 if ls is not closed, and NULL if ls is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls1 = \'LineString(1 1,2 2,3 3,2 2)\';\nmysql> SET @ls2 = \'LineString(1 1,2 2,3 3,1 1)\';\n\nmysql> SELECT IsClosed(GeomFromText(@ls1));\n+------------------------------+\n| IsClosed(GeomFromText(@ls1)) |\n+------------------------------+\n| 0 |\n+------------------------------+\n\nmysql> SELECT IsClosed(GeomFromText(@ls2));\n+------------------------------+\n| IsClosed(GeomFromText(@ls2)) |\n+------------------------------+\n| 1 |\n+------------------------------+\n\nmysql> SET @ls3 = \'MultiLineString((1 1,2 2,3 3),(4 4,5 5))\';\n\nmysql> SELECT IsClosed(GeomFromText(@ls3));\n+------------------------------+\n| IsClosed(GeomFromText(@ls3)) |\n+------------------------------+\n| 0 |\n+------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-linestring-property-functions.html'),(28,'REGEXP',38,'Syntax:\nexpr REGEXP pat, expr RLIKE pat\n\nPerforms a pattern match of a string expression expr against a pattern\npat. The pattern can be an extended regular expression, the syntax for\nwhich is discussed later in this section. Returns 1 if expr matches\npat; otherwise it returns 0. If either expr or pat is NULL, the result\nis NULL. RLIKE is a synonym for REGEXP, provided for mSQL\ncompatibility.\n\nThe pattern need not be a literal string. For example, it can be\nspecified as a string expression or table column.\n\n*Note*: Because MySQL uses the C escape syntax in strings (for example,\n\"\\n\" to represent the newline character), you must double any \"\\\" that\nyou use in your REGEXP strings.\n\nREGEXP is not case sensitive, except when used with binary strings.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/regexp.html\n\n','mysql> SELECT \'Monty!\' REGEXP \'.*\';\n -> 1\nmysql> SELECT \'new*\\n*line\' REGEXP \'new\\\\*.\\\\*line\';\n -> 1\nmysql> SELECT \'a\' REGEXP \'A\', \'a\' REGEXP BINARY \'A\';\n -> 1 0\nmysql> SELECT \'a\' REGEXP \'^[a-d]\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/regexp.html'),(29,'IF STATEMENT',24,'Syntax:\nIF search_condition THEN statement_list\n [ELSEIF search_condition THEN statement_list] ...\n [ELSE statement_list]\nEND IF\n\nThe IF statement for stored programs implements a basic conditional\nconstruct.\n\n*Note*: There is also an IF() function, which differs from the IF\nstatement described here. See\nhttp://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html. The\nIF statement can have THEN, ELSE, and ELSEIF clauses, and it is\nterminated with END IF.\n\nIf the search_condition evaluates to true, the corresponding THEN or\nELSEIF clause statement_list executes. If no search_condition matches,\nthe ELSE clause statement_list executes.\n\nEach statement_list consists of one or more SQL statements; an empty\nstatement_list is not permitted.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/if.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/if.html'),(30,'^',19,'Syntax:\n^\n\nBitwise XOR:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html\n\n','mysql> SELECT 1 ^ 1;\n -> 0\nmysql> SELECT 1 ^ 0;\n -> 1\nmysql> SELECT 11 ^ 3;\n -> 8\n','http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html'),(31,'DROP VIEW',40,'Syntax:\nDROP VIEW [IF EXISTS]\n view_name [, view_name] ...\n [RESTRICT | CASCADE]\n\nDROP VIEW removes one or more views. You must have the DROP privilege\nfor each view. If any of the views named in the argument list do not\nexist, MySQL returns an error indicating by name which nonexisting\nviews it was unable to drop, but it also drops all of the views in the\nlist that do exist.\n\nThe IF EXISTS clause prevents an error from occurring for views that\ndon\'t exist. When this clause is given, a NOTE is generated for each\nnonexistent view. See [HELP SHOW WARNINGS].\n\nRESTRICT and CASCADE, if given, are parsed and ignored.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-view.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-view.html'),(32,'WITHIN',31,'Within(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially within g2. This\ntests the opposite relationship as Contains().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mbr.html'),(33,'WEEK',32,'Syntax:\nWEEK(date[,mode])\n\nThis function returns the week number for date. The two-argument form\nof WEEK() enables you to specify whether the week starts on Sunday or\nMonday and whether the return value should be in the range from 0 to 53\nor from 1 to 53. If the mode argument is omitted, the value of the\ndefault_week_format system variable is used. See\nhttp://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT WEEK(\'2008-02-20\');\n -> 7\nmysql> SELECT WEEK(\'2008-02-20\',0);\n -> 7\nmysql> SELECT WEEK(\'2008-02-20\',1);\n -> 8\nmysql> SELECT WEEK(\'2008-12-31\',1);\n -> 53\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(34,'SHOW PLUGINS',27,'Syntax:\nSHOW PLUGINS\n\nSHOW PLUGINS displays information about server plugins. Plugin\ninformation is also available in the INFORMATION_SCHEMA.PLUGINS table.\nSee http://dev.mysql.com/doc/refman/5.5/en/plugins-table.html.\n\nExample of SHOW PLUGINS output:\n\nmysql> SHOW PLUGINS\\G\n*************************** 1. row ***************************\n Name: binlog\n Status: ACTIVE\n Type: STORAGE ENGINE\nLibrary: NULL\nLicense: GPL\n*************************** 2. row ***************************\n Name: CSV\n Status: ACTIVE\n Type: STORAGE ENGINE\nLibrary: NULL\nLicense: GPL\n*************************** 3. row ***************************\n Name: MEMORY\n Status: ACTIVE\n Type: STORAGE ENGINE\nLibrary: NULL\nLicense: GPL\n*************************** 4. row ***************************\n Name: MyISAM\n Status: ACTIVE\n Type: STORAGE ENGINE\nLibrary: NULL\nLicense: GPL\n...\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-plugins.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-plugins.html'),(35,'DROP FUNCTION UDF',22,'Syntax:\nDROP FUNCTION function_name\n\nThis statement drops the user-defined function (UDF) named\nfunction_name.\n\nTo drop a function, you must have the DELETE privilege for the mysql\ndatabase. This is because DROP FUNCTION removes a row from the\nmysql.func system table that records the function\'s name, type, and\nshared library name.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-function-udf.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-function-udf.html'),(36,'PREPARE',8,'Syntax:\nPREPARE stmt_name FROM preparable_stmt\n\nThe PREPARE statement prepares a SQL statement and assigns it a name,\nstmt_name, by which to refer to the statement later. The prepared\nstatement is executed with EXECUTE and released with DEALLOCATE\nPREPARE. For examples, see\nhttp://dev.mysql.com/doc/refman/5.5/en/sql-syntax-prepared-statements.h\ntml.\n\nStatement names are not case sensitive. preparable_stmt is either a\nstring literal or a user variable that contains the text of the SQL\nstatement. The text must represent a single statement, not multiple\nstatements. Within the statement, ? characters can be used as parameter\nmarkers to indicate where data values are to be bound to the query\nlater when you execute it. The ? characters should not be enclosed\nwithin quotation marks, even if you intend to bind them to string\nvalues. Parameter markers can be used only where data values should\nappear, not for SQL keywords, identifiers, and so forth.\n\nIf a prepared statement with the given name already exists, it is\ndeallocated implicitly before the new statement is prepared. This means\nthat if the new statement contains an error and cannot be prepared, an\nerror is returned and no statement with the given name exists.\n\nThe scope of a prepared statement is the session within which it is\ncreated, which as several implications:\n\no A prepared statement created in one session is not available to other\n sessions.\n\no When a session ends, whether normally or abnormally, its prepared\n statements no longer exist. If auto-reconnect is enabled, the client\n is not notified that the connection was lost. For this reason,\n clients may wish to disable auto-reconnect. See\n http://dev.mysql.com/doc/refman/5.5/en/auto-reconnect.html.\n\no A prepared statement created within a stored program continues to\n exist after the program finishes executing and can be executed\n outside the program later.\n\no A statement prepared in stored program context cannot refer to stored\n procedure or function parameters or local variables because they go\n out of scope when the program ends and would be unavailable were the\n statement to be executed later outside the program. As a workaround,\n refer instead to user-defined variables, which also have session\n scope; see\n http://dev.mysql.com/doc/refman/5.5/en/user-variables.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/prepare.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/prepare.html'),(37,'LOCK',8,'Syntax:\nLOCK TABLES\n tbl_name [[AS] alias] lock_type\n [, tbl_name [[AS] alias] lock_type] ...\n\nlock_type:\n READ [LOCAL]\n | [LOW_PRIORITY] WRITE\n\nUNLOCK TABLES\n\nMySQL enables client sessions to acquire table locks explicitly for the\npurpose of cooperating with other sessions for access to tables, or to\nprevent other sessions from modifying tables during periods when a\nsession requires exclusive access to them. A session can acquire or\nrelease locks only for itself. One session cannot acquire locks for\nanother session or release locks held by another session.\n\nLocks may be used to emulate transactions or to get more speed when\nupdating tables. This is explained in more detail later in this\nsection.\n\nLOCK TABLES explicitly acquires table locks for the current client\nsession. Table locks can be acquired for base tables or views. You must\nhave the LOCK TABLES privilege, and the SELECT privilege for each\nobject to be locked.\n\nFor view locking, LOCK TABLES adds all base tables used in the view to\nthe set of tables to be locked and locks them automatically. If you\nlock a table explicitly with LOCK TABLES, any tables used in triggers\nare also locked implicitly, as described in\nhttp://dev.mysql.com/doc/refman/5.5/en/lock-tables-and-triggers.html.\n\nUNLOCK TABLES explicitly releases any table locks held by the current\nsession. LOCK TABLES implicitly releases any table locks held by the\ncurrent session before acquiring new locks.\n\nAnother use for UNLOCK TABLES is to release the global read lock\nacquired with the FLUSH TABLES WITH READ LOCK statement, which enables\nyou to lock all tables in all databases. See [HELP FLUSH]. (This is a\nvery convenient way to get backups if you have a file system such as\nVeritas that can take snapshots in time.)\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/lock-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/lock-tables.html'),(38,'UPDATEXML',38,'Syntax:\nUpdateXML(xml_target, xpath_expr, new_xml)\n\nThis function replaces a single portion of a given fragment of XML\nmarkup xml_target with a new XML fragment new_xml, and then returns the\nchanged XML. The portion of xml_target that is replaced matches an\nXPath expression xpath_expr supplied by the user. In MySQL 5.5, the\nXPath expression can contain at most 127 characters. (This limitation\nis lifted in MySQL 5.6.)\n\nIf no expression matching xpath_expr is found, or if multiple matches\nare found, the function returns the original xml_target XML fragment.\nAll three arguments should be strings.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/xml-functions.html\n\n','mysql> SELECT\n -> UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'/a\', \'<e>fff</e>\') AS val1,\n -> UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'/b\', \'<e>fff</e>\') AS val2,\n -> UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'//b\', \'<e>fff</e>\') AS val3,\n -> UpdateXML(\'<a><b>ccc</b><d></d></a>\', \'/a/d\', \'<e>fff</e>\') AS val4,\n -> UpdateXML(\'<a><d></d><b>ccc</b><d></d></a>\', \'/a/d\', \'<e>fff</e>\') AS val5\n -> \\G\n\n*************************** 1. row ***************************\nval1: <e>fff</e>\nval2: <a><b>ccc</b><d></d></a>\nval3: <a><e>fff</e><d></d></a>\nval4: <a><b>ccc</b><e>fff</e></a>\nval5: <a><d></d><b>ccc</b><d></d></a>\n','http://dev.mysql.com/doc/refman/5.5/en/xml-functions.html'),(39,'RESET SLAVE',8,'Syntax:\nRESET SLAVE [ALL]\n\nRESET SLAVE makes the slave forget its replication position in the\nmaster\'s binary log. This statement is meant to be used for a clean\nstart: It deletes the master.info and relay-log.info files, all the\nrelay log files, and starts a new relay log file. To use RESET SLAVE,\nthe slave replication threads must be stopped (use STOP SLAVE if\nnecessary).\n\n*Note*: All relay log files are deleted, even if they have not been\ncompletely executed by the slave SQL thread. (This is a condition\nlikely to exist on a replication slave if you have issued a STOP SLAVE\nstatement or if the slave is highly loaded.)\n\nIn MySQL 5.5 (unlike the case in MySQL 5.1 and earlier), RESET SLAVE\ndoes not change any replication connection parameters such as master\nhost, master port, master user, or master password, which are retained\nin memory. This means that START SLAVE can be issued without requiring\na CHANGE MASTER TO statement following RESET SLAVE.\n\nConnection parameters are reset if the slave mysqld is shut down\nfollowing RESET SLAVE. In MySQL 5.5.16 and later, you can instead use\nRESET SLAVE ALL to reset these connection parameters (Bug #11809016).\n\nRESET SLAVE ALL does not clear the IGNORE_SERVER_IDS list set by CHANGE\nMASTER TO. This issue is fixed in MySQL 5.7. (Bug #18816897)\n\nIf the slave SQL thread was in the middle of replicating temporary\ntables when it was stopped, and RESET SLAVE is issued, these replicated\ntemporary tables are deleted on the slave.\n\n*Note*: When used on a MySQL Cluster replication slave SQL node, RESET\nSLAVE clears the mysql.ndb_apply_status table. You should keep in mind\nwhen using this statement that ndb_apply_status uses the NDB storage\nengine and so is shared by all SQL nodes attached to the slave cluster.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/reset-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/reset-slave.html'),(40,'SHOW BINARY LOGS',27,'Syntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [HELP PURGE BINARY LOGS], that shows\nhow to determine which logs can be purged.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+\n| Log_name | File_size |\n+---------------+-----------+\n| binlog.000015 | 724935 |\n| binlog.000016 | 733481 |\n+---------------+-----------+\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-binary-logs.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-binary-logs.html'),(41,'POLYGON',25,'Polygon(ls1,ls2,...)\n\nConstructs a Polygon value from a number of LineString or WKB\nLineString arguments. If any argument does not represent a LinearRing\n(that is, not a closed and simple LineString), the return value is\nNULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html'),(42,'MINUTE',32,'Syntax:\nMINUTE(time)\n\nReturns the minute for time, in the range 0 to 59.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT MINUTE(\'2008-02-03 10:05:03\');\n -> 5\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(43,'DAY',32,'Syntax:\nDAY(date)\n\nDAY() is a synonym for DAYOFMONTH().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(44,'MID',38,'Syntax:\nMID(str,pos,len)\n\nMID(str,pos,len) is a synonym for SUBSTRING(str,pos,len).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(45,'UUID',14,'Syntax:\nUUID()\n\nReturns a Universal Unique Identifier (UUID) generated according to RFC\n4122, \"A Universally Unique IDentifier (UUID) URN Namespace\"\n(http://www.ietf.org/rfc/rfc4122.txt).\n\nA UUID is designed as a number that is globally unique in space and\ntime. Two calls to UUID() are expected to generate two different\nvalues, even if these calls are performed on two separate devices not\nconnected to each other.\n\n*Warning*: Although UUID() values are intended to be unique, they are\nnot necessarily unguessable or unpredictable. If unpredictability is\nrequired, UUID values should be generated some other way.\n\nUUID() returns a value that conforms to UUID version 1 as described in\nRFC 4122. THe value is a 128-bit number represented as a utf8 string of\nfive hexadecimal numbers in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\nformat:\n\no The first three numbers are generated from the low, middle, and high\n parts of a timestamp. The high part also includes the UUID version\n number.\n\no The fourth number preserves temporal uniqueness in case the timestamp\n value loses monotonicity (for example, due to daylight saving time).\n\no The fifth number is an IEEE 802 node number that provides spatial\n uniqueness. A random number is substituted if the latter is not\n available (for example, because the host device has no Ethernet card,\n or it is unknown how to find the hardware address of an interface on\n the host operating system). In this case, spatial uniqueness cannot\n be guaranteed. Nevertheless, a collision should have very low\n probability.\n\n The MAC address of an interface is taken into account only on FreeBSD\n and Linux. On other operating systems, MySQL uses a randomly\n generated 48-bit number.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','mysql> SELECT UUID();\n -> \'6ccd780c-baba-1026-9564-0040f4311e29\'\n','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(46,'SLEEP',14,'Syntax:\nSLEEP(duration)\n\nSleeps (pauses) for the number of seconds given by the duration\nargument, then returns 0. If SLEEP() is interrupted, it returns 1. The\nduration may have a fractional part.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(47,'LINESTRING',25,'LineString(pt1,pt2,...)\n\nConstructs a LineString value from a number of Point or WKB Point\narguments. If the number of arguments is less than two, the return\nvalue is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html'),(48,'CONNECTION_ID',17,'Syntax:\nCONNECTION_ID()\n\nReturns the connection ID (thread ID) for the connection. Every\nconnection has an ID that is unique among the set of currently\nconnected clients.\n\nThe value returned by CONNECTION_ID() is the same type of value as\ndisplayed in the ID column of the INFORMATION_SCHEMA.PROCESSLIST table,\nthe Id column of SHOW PROCESSLIST output, and the PROCESSLIST_ID column\nof the Performance Schema threads table.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','mysql> SELECT CONNECTION_ID();\n -> 23786\n','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(49,'CREATE LOGFILE GROUP',40,'Syntax:\nCREATE LOGFILE GROUP logfile_group\n ADD UNDOFILE \'undo_file\'\n [INITIAL_SIZE [=] initial_size]\n [UNDO_BUFFER_SIZE [=] undo_buffer_size]\n [REDO_BUFFER_SIZE [=] redo_buffer_size]\n [NODEGROUP [=] nodegroup_id]\n [WAIT]\n [COMMENT [=] comment_text]\n ENGINE [=] engine_name\n\nThis statement creates a new log file group named logfile_group having\na single UNDO file named \'undo_file\'. A CREATE LOGFILE GROUP statement\nhas one and only one ADD UNDOFILE clause. For rules covering the naming\nof log file groups, see\nhttp://dev.mysql.com/doc/refman/5.5/en/identifiers.html.\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and a log file group with the same name, or a\ntablespace and a data file with the same name.\n\nIn MySQL Cluster NDB 7.2, you can have only one log file group per\nCluster at any given time. (See Bug #16386)\n\nThe optional INITIAL_SIZE parameter sets the UNDO file\'s initial size;\nif not specified, it defaults to 128M (128 megabytes). The optional\nUNDO_BUFFER_SIZE parameter sets the size used by the UNDO buffer for\nthe log file group; The default value for UNDO_BUFFER_SIZE is 8M (eight\nmegabytes); this value cannot exceed the amount of system memory\navailable. Both of these parameters are specified in bytes. In MySQL\nCluster NDB 7.2.14 and later, you may optionally follow either or both\nof these with a one-letter abbreviation for an order of magnitude,\nsimilar to those used in my.cnf. Generally, this is one of the letters\nM (for megabytes) or G (for gigabytes). Prior to MySQL Cluster NDB\n7.2.14, the values for these options could only be specified using\ndigits. (Bug #13116514, Bug #16104705, Bug #62858)\n\nMemory used for UNDO_BUFFER_SIZE comes from the global pool whose size\nis determined by the value of the SharedGlobalMemory data node\nconfiguration parameter. This includes any default value implied for\nthis option by the setting of the InitialLogFileGroup data node\nconfiguration parameter.\n\nThe maximum permitted for UNDO_BUFFER_SIZE is 629145600 (600 MB).\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is\n4294967296 (4 GB). (Bug #29186)\n\nThe minimum allowed value for INITIAL_SIZE is 1048576 (1 MB).\n\nThe ENGINE option determines the storage engine to be used by this log\nfile group, with engine_name being the name of the storage engine. In\nMySQL 5.5, this must be NDB (or NDBCLUSTER). If ENGINE is not set,\nMySQL tries to use the engine specified by the default_storage_engine\nserver system variable (formerly storage_engine). In any case, if the\nengine is not specified as NDB or NDBCLUSTER, the CREATE LOGFILE GROUP\nstatement appears to succeed but actually fails to create the log file\ngroup, as shown here:\n\nmysql> CREATE LOGFILE GROUP lg1 \n -> ADD UNDOFILE \'undo.dat\' INITIAL_SIZE = 10M;\nQuery OK, 0 rows affected, 1 warning (0.00 sec)\n\nmysql> SHOW WARNINGS;\n+-------+------+------------------------------------------------------------------------------------------------+\n| Level | Code | Message |\n+-------+------+------------------------------------------------------------------------------------------------+\n| Error | 1478 | Table storage engine \'InnoDB\' does not support the create option \'TABLESPACE or LOGFILE GROUP\' |\n+-------+------+------------------------------------------------------------------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> DROP LOGFILE GROUP lg1 ENGINE = NDB; \nERROR 1529 (HY000): Failed to drop LOGFILE GROUP\n\nmysql> CREATE LOGFILE GROUP lg1 \n -> ADD UNDOFILE \'undo.dat\' INITIAL_SIZE = 10M\n -> ENGINE = NDB;\nQuery OK, 0 rows affected (2.97 sec)\n\nThe fact that the CREATE LOGFILE GROUP statement does not actually\nreturn an error when a non-NDB storage engine is named, but rather\nappears to succeed, is a known issue which we hope to address in a\nfuture release of MySQL Cluster.\n\nREDO_BUFFER_SIZE, NODEGROUP, WAIT, and COMMENT are parsed but ignored,\nand so have no effect in MySQL 5.5. These options are intended for\nfuture expansion.\n\nWhen used with ENGINE [=] NDB, a log file group and associated UNDO log\nfile are created on each Cluster data node. You can verify that the\nUNDO files were created and obtain information about them by querying\nthe INFORMATION_SCHEMA.FILES table. For example:\n\nmysql> SELECT LOGFILE_GROUP_NAME, LOGFILE_GROUP_NUMBER, EXTRA\n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE FILE_NAME = \'undo_10.dat\';\n+--------------------+----------------------+----------------+\n| LOGFILE_GROUP_NAME | LOGFILE_GROUP_NUMBER | EXTRA |\n+--------------------+----------------------+----------------+\n| lg_3 | 11 | CLUSTER_NODE=3 |\n| lg_3 | 11 | CLUSTER_NODE=4 |\n+--------------------+----------------------+----------------+\n2 rows in set (0.06 sec)\n\nCREATE LOGFILE GROUP is useful only with Disk Data storage for MySQL\nCluster. See\nhttp://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-disk-data.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-logfile-group.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/create-logfile-group.html'),(50,'DELETE',28,'Syntax:\nSingle-table syntax:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name\n [WHERE where_condition]\n [ORDER BY ...]\n [LIMIT row_count]\n\nMultiple-table syntax:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE]\n tbl_name[.*] [, tbl_name[.*]] ...\n FROM table_references\n [WHERE where_condition]\n\nOr:\n\nDELETE [LOW_PRIORITY] [QUICK] [IGNORE]\n FROM tbl_name[.*] [, tbl_name[.*]] ...\n USING table_references\n [WHERE where_condition]\n\nFor the single-table syntax, the DELETE statement deletes rows from\ntbl_name and returns a count of the number of deleted rows. This count\ncan be obtained by calling the ROW_COUNT() function (see\nhttp://dev.mysql.com/doc/refman/5.5/en/information-functions.html). The\nWHERE clause, if given, specifies the conditions that identify which\nrows to delete. With no WHERE clause, all rows are deleted. If the\nORDER BY clause is specified, the rows are deleted in the order that is\nspecified. The LIMIT clause places a limit on the number of rows that\ncan be deleted.\n\nFor the multiple-table syntax, DELETE deletes from each tbl_name the\nrows that satisfy the conditions. In this case, ORDER BY and LIMIT\ncannot be used.\n\nwhere_condition is an expression that evaluates to true for each row to\nbe deleted. It is specified as described in\nhttp://dev.mysql.com/doc/refman/5.5/en/select.html.\n\nYou cannot delete from a table and select from the same table in a\nsubquery.\n\nYou need the DELETE privilege on a table to delete rows from it. You\nneed only the SELECT privilege for any columns that are only read, such\nas those named in the WHERE clause.\n\nAs stated, a DELETE statement with no WHERE clause deletes all rows. A\nfaster way to do this, when you do not need to know the number of\ndeleted rows, is to use TRUNCATE TABLE. However, within a transaction\nor if you have a lock on the table, TRUNCATE TABLE cannot be used\nwhereas DELETE can. See [HELP TRUNCATE TABLE], and [HELP LOCK].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/delete.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/delete.html'),(51,'ROUND',3,'Syntax:\nROUND(X), ROUND(X,D)\n\nRounds the argument X to D decimal places. The rounding algorithm\ndepends on the data type of X. D defaults to 0 if not specified. D can\nbe negative to cause D digits left of the decimal point of the value X\nto become zero.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT ROUND(-1.23);\n -> -1\nmysql> SELECT ROUND(-1.58);\n -> -2\nmysql> SELECT ROUND(1.58);\n -> 2\nmysql> SELECT ROUND(1.298, 1);\n -> 1.3\nmysql> SELECT ROUND(1.298, 0);\n -> 1\nmysql> SELECT ROUND(23.298, -1);\n -> 20\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(52,'NULLIF',6,'Syntax:\nNULLIF(expr1,expr2)\n\nReturns NULL if expr1 = expr2 is true, otherwise returns expr1. This is\nthe same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html\n\n','mysql> SELECT NULLIF(1,1);\n -> NULL\nmysql> SELECT NULLIF(1,2);\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html'),(53,'CLOSE',24,'Syntax:\nCLOSE cursor_name\n\nThis statement closes a previously opened cursor. For an example, see\nhttp://dev.mysql.com/doc/refman/5.5/en/cursors.html.\n\nAn error occurs if the cursor is not open.\n\nIf not closed explicitly, a cursor is closed at the end of the BEGIN\n... END block in which it was declared.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/close.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/close.html'),(54,'STOP SLAVE',8,'Syntax:\nSTOP SLAVE [thread_types]\n\nthread_types:\n [thread_type [, thread_type] ... ]\n\nthread_type: IO_THREAD | SQL_THREAD\n\nStops the slave threads. STOP SLAVE requires the SUPER privilege.\nRecommended best practice is to execute STOP SLAVE on the slave before\nstopping the slave server (see\nhttp://dev.mysql.com/doc/refman/5.5/en/server-shutdown.html, for more\ninformation).\n\nWhen using the row-based logging format: You should execute STOP SLAVE\non the slave prior to shutting down the slave server if you are\nreplicating any tables that use a nontransactional storage engine (see\nthe Note later in this section). In MySQL 5.5.9 and later, you can also\nuse STOP SLAVE SQL_THREAD for this purpose.\n\nLike START SLAVE, this statement may be used with the IO_THREAD and\nSQL_THREAD options to name the thread or threads to be stopped.\n\n*Note*: In MySQL 5.5, STOP SLAVE waits until the current replication\nevent group affecting one or more nontransactional tables has finished\nexecuting (if there is any such replication group), or until the user\nissues a KILL QUERY or KILL CONNECTION statement. (Bug #319, Bug\n#38205)\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/stop-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/stop-slave.html'),(55,'TIMEDIFF',32,'Syntax:\nTIMEDIFF(expr1,expr2)\n\nTIMEDIFF() returns expr1 − expr2 expressed as a time value. expr1 and\nexpr2 are time or date-and-time expressions, but both must be of the\nsame type.\n\nThe result returned by TIMEDIFF() is limited to the range allowed for\nTIME values. Alternatively, you can use either of the functions\nTIMESTAMPDIFF() and UNIX_TIMESTAMP(), both of which return integers.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT TIMEDIFF(\'2000:01:01 00:00:00\',\n -> \'2000:01:01 00:00:00.000001\');\n -> \'-00:00:00.000001\'\nmysql> SELECT TIMEDIFF(\'2008-12-31 23:59:59.000001\',\n -> \'2008-12-30 01:01:01.000002\');\n -> \'46:58:57.999999\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(56,'REPLACE FUNCTION',38,'Syntax:\nREPLACE(str,from_str,to_str)\n\nReturns the string str with all occurrences of the string from_str\nreplaced by the string to_str. REPLACE() performs a case-sensitive\nmatch when searching for from_str.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT REPLACE(\'www.mysql.com\', \'w\', \'Ww\');\n -> \'WwWwWw.mysql.com\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(57,'USE',29,'Syntax:\nUSE db_name\n\nThe USE db_name statement tells MySQL to use the db_name database as\nthe default (current) database for subsequent statements. The database\nremains the default until the end of the session or another USE\nstatement is issued:\n\nUSE db1;\nSELECT COUNT(*) FROM mytable; # selects from db1.mytable\nUSE db2;\nSELECT COUNT(*) FROM mytable; # selects from db2.mytable\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/use.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/use.html'),(58,'LINEFROMTEXT',4,'LineFromText(wkt[,srid]), LineStringFromText(wkt[,srid])\n\nConstructs a LineString value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html'),(59,'CASE OPERATOR',6,'Syntax:\nCASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN\nresult ...] [ELSE result] END\n\nCASE WHEN [condition] THEN result [WHEN [condition] THEN result ...]\n[ELSE result] END\n\nThe first version returns the result where value=compare_value. The\nsecond version returns the result for the first condition that is true.\nIf there was no matching result value, the result after ELSE is\nreturned, or NULL if there is no ELSE part.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html\n\n','mysql> SELECT CASE 1 WHEN 1 THEN \'one\'\n -> WHEN 2 THEN \'two\' ELSE \'more\' END;\n -> \'one\'\nmysql> SELECT CASE WHEN 1>0 THEN \'true\' ELSE \'false\' END;\n -> \'true\'\nmysql> SELECT CASE BINARY \'B\'\n -> WHEN \'a\' THEN 1 WHEN \'b\' THEN 2 END;\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html'),(60,'SHOW MASTER STATUS',27,'Syntax:\nSHOW MASTER STATUS\n\nThis statement provides status information about the binary log files\nof the master. It requires either the SUPER or REPLICATION CLIENT\nprivilege.\n\nExample:\n\nmysql> SHOW MASTER STATUS;\n+---------------+----------+--------------+------------------+\n| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |\n+---------------+----------+--------------+------------------+\n| mysql-bin.003 | 73 | test | manual,mysql |\n+---------------+----------+--------------+------------------+\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-master-status.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-master-status.html'),(61,'ADDTIME',32,'Syntax:\nADDTIME(expr1,expr2)\n\nADDTIME() adds expr2 to expr1 and returns the result. expr1 is a time\nor datetime expression, and expr2 is a time expression.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT ADDTIME(\'2007-12-31 23:59:59.999999\', \'1 1:1:1.000002\');\n -> \'2008-01-02 01:01:01.000001\'\nmysql> SELECT ADDTIME(\'01:00:00.999999\', \'02:00:00.999998\');\n -> \'03:00:01.999997\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(62,'TO_SECONDS',32,'Syntax:\nTO_SECONDS(expr)\n\nGiven a date or datetime expr, returns a the number of seconds since\nthe year 0. If expr is not a valid date or datetime value, returns\nNULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT TO_SECONDS(950501);\n -> 62966505600\nmysql> SELECT TO_SECONDS(\'2009-11-29\');\n -> 63426672000\nmysql> SELECT TO_SECONDS(\'2009-11-29 13:43:32\');\n -> 63426721412\nmysql> SELECT TO_SECONDS( NOW() );\n -> 63426721458\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(63,'TIMESTAMPDIFF',32,'Syntax:\nTIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)\n\nReturns datetime_expr2 − datetime_expr1, where datetime_expr1 and\ndatetime_expr2 are date or datetime expressions. One expression may be\na date and the other a datetime; a date value is treated as a datetime\nhaving the time part \'00:00:00\' where necessary. The unit for the\nresult (an integer) is given by the unit argument. The legal values for\nunit are the same as those listed in the description of the\nTIMESTAMPADD() function.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMPDIFF(MONTH,\'2003-02-01\',\'2003-05-01\');\n -> 3\nmysql> SELECT TIMESTAMPDIFF(YEAR,\'2002-05-01\',\'2001-01-01\');\n -> -1\nmysql> SELECT TIMESTAMPDIFF(MINUTE,\'2003-02-01\',\'2003-05-01 12:05:55\');\n -> 128885\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(64,'UPPER',38,'Syntax:\nUPPER(str)\n\nReturns the string str with all characters changed to uppercase\naccording to the current character set mapping. The default is latin1\n(cp1252 West European).\n\nmysql> SELECT UPPER(\'Hej\');\n -> \'HEJ\'\n\nSee the description of LOWER() for information that also applies to\nUPPER(), such as information about how to perform lettercase conversion\nof binary strings (BINARY, VARBINARY, BLOB) for which these functions\nare ineffective.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(65,'SPATIAL',35,'For MyISAM tables, MySQL can create spatial indexes using syntax\nsimilar to that for creating regular indexes, but using the SPATIAL\nkeyword. Columns in spatial indexes must be declared NOT NULL. The\nfollowing examples demonstrate how to create spatial indexes:\n\no With CREATE TABLE:\n\nCREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g)) ENGINE=MyISAM;\n\no With ALTER TABLE:\n\nALTER TABLE geom ADD SPATIAL INDEX(g);\n\no With CREATE INDEX:\n\nCREATE SPATIAL INDEX sp_index ON geom (g);\n\nSPATIAL INDEX creates an R-tree index. For storage engines that support\nnonspatial indexing of spatial columns, the engine creates a B-tree\nindex. A B-tree index on spatial values is useful for exact-value\nlookups, but not for range scans.\n\nFor more information on indexing spatial columns, see [HELP CREATE\nINDEX].\n\nTo drop spatial indexes, use ALTER TABLE or DROP INDEX:\n\no With ALTER TABLE:\n\nALTER TABLE geom DROP INDEX g;\n\no With DROP INDEX:\n\nDROP INDEX sp_index ON geom;\n\nExample: Suppose that a table geom contains more than 32,000\ngeometries, which are stored in the column g of type GEOMETRY. The\ntable also has an AUTO_INCREMENT column fid for storing object ID\nvalues.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/creating-spatial-indexes.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/creating-spatial-indexes.html'),(66,'FROM_UNIXTIME',32,'Syntax:\nFROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)\n\nReturns a representation of the unix_timestamp argument as a value in\n\'YYYY-MM-DD HH:MM:SS\' or YYYYMMDDHHMMSS.uuuuuu format, depending on\nwhether the function is used in a string or numeric context. The value\nis expressed in the current time zone. unix_timestamp is an internal\ntimestamp value such as is produced by the UNIX_TIMESTAMP() function.\n\nIf format is given, the result is formatted according to the format\nstring, which is used the same way as listed in the entry for the\nDATE_FORMAT() function.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT FROM_UNIXTIME(1447430881);\n -> \'2015-11-13 10:08:01\'\nmysql> SELECT FROM_UNIXTIME(1447430881) + 0;\n -> 20151113100801\nmysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),\n -> \'%Y %D %M %h:%i:%s %x\');\n -> \'2015 13th November 10:08:01 2015\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(67,'MEDIUMBLOB',23,'MEDIUMBLOB\n\nA BLOB column with a maximum length of 16,777,215 (224 − 1) bytes.\nEach MEDIUMBLOB value is stored using a 3-byte length prefix that\nindicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(68,'SHA2',12,'Syntax:\nSHA2(str, hash_length)\n\nCalculates the SHA-2 family of hash functions (SHA-224, SHA-256,\nSHA-384, and SHA-512). The first argument is the cleartext string to be\nhashed. The second argument indicates the desired bit length of the\nresult, which must have a value of 224, 256, 384, 512, or 0 (which is\nequivalent to 256). If either argument is NULL or the hash length is\nnot one of the permitted values, the return value is NULL. Otherwise,\nthe function result is a hash value containing the desired number of\nbits. See the notes at the beginning of this section about storing hash\nvalues efficiently.\n\nAs of MySQL 5.5.6, the return value is a nonbinary string in the\nconnection character set. Before 5.5.6, the return value is a binary\nstring; see the notes at the beginning of this section about using the\nvalue as a nonbinary string.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','mysql> SELECT SHA2(\'abc\', 224);\n -> \'23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7\'\n','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(69,'IFNULL',6,'Syntax:\nIFNULL(expr1,expr2)\n\nIf expr1 is not NULL, IFNULL() returns expr1; otherwise it returns\nexpr2. IFNULL() returns a numeric or string value, depending on the\ncontext in which it is used.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html\n\n','mysql> SELECT IFNULL(1,0);\n -> 1\nmysql> SELECT IFNULL(NULL,10);\n -> 10\nmysql> SELECT IFNULL(1/0,10);\n -> 10\nmysql> SELECT IFNULL(1/0,\'yes\');\n -> \'yes\'\n','http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html'),(70,'SHOW FUNCTION CODE',27,'Syntax:\nSHOW FUNCTION CODE func_name\n\nThis statement is similar to SHOW PROCEDURE CODE but for stored\nfunctions. See [HELP SHOW PROCEDURE CODE].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-function-code.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-function-code.html'),(71,'SHOW ERRORS',27,'Syntax:\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW COUNT(*) ERRORS\n\nSHOW ERRORS is a diagnostic statement that is similar to SHOW WARNINGS,\nexcept that it displays information only for errors, rather than for\nerrors, warnings, and notes.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttp://dev.mysql.com/doc/refman/5.5/en/select.html.\n\nThe SHOW COUNT(*) ERRORS statement displays the number of errors. You\ncan also retrieve this number from the error_count variable:\n\nSHOW COUNT(*) ERRORS;\nSELECT @@error_count;\n\nSHOW ERRORS and error_count apply only to errors, not warnings or\nnotes. In other respects, they are similar to SHOW WARNINGS and\nwarning_count. In particular, SHOW ERRORS cannot display information\nfor more than max_error_count messages, and error_count can exceed the\nvalue of max_error_count if the number of errors exceeds\nmax_error_count.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-errors.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-errors.html'),(72,'LEAST',20,'Syntax:\nLEAST(value1,value2,...)\n\nWith two or more arguments, returns the smallest (minimum-valued)\nargument. The arguments are compared using the following rules:\n\no If any argument is NULL, the result is NULL. No comparison is needed.\n\no If the return value is used in an INTEGER context or all arguments\n are integer-valued, they are compared as integers.\n\no If the return value is used in a REAL context or all arguments are\n real-valued, they are compared as reals.\n\no If the arguments comprise a mix of numbers and strings, they are\n compared as numbers.\n\no If any argument is a nonbinary (character) string, the arguments are\n compared as nonbinary strings.\n\no In all other cases, the arguments are compared as binary strings.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT LEAST(2,0);\n -> 0\nmysql> SELECT LEAST(34.0,3.0,5.0,767.0);\n -> 3.0\nmysql> SELECT LEAST(\'B\',\'A\',\'C\');\n -> \'A\'\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(73,'=',20,'=\n\nEqual:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT 1 = 0;\n -> 0\nmysql> SELECT \'0\' = 0;\n -> 1\nmysql> SELECT \'0.0\' = 0;\n -> 1\nmysql> SELECT \'0.01\' = 0;\n -> 0\nmysql> SELECT \'.01\' = 0.01;\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(74,'REVERSE',38,'Syntax:\nREVERSE(str)\n\nReturns the string str with the order of the characters reversed.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT REVERSE(\'abc\');\n -> \'cba\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(75,'ISNULL',20,'Syntax:\nISNULL(expr)\n\nIf expr is NULL, ISNULL() returns 1, otherwise it returns 0.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT ISNULL(1+1);\n -> 0\nmysql> SELECT ISNULL(1/0);\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(76,'BINARY',23,'BINARY(M)\n\nThe BINARY type is similar to the CHAR type, but stores binary byte\nstrings rather than nonbinary character strings. M represents the\ncolumn length in bytes.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(77,'BLOB DATA TYPE',23,'A BLOB is a binary large object that can hold a variable amount of\ndata. The four BLOB types are TINYBLOB, BLOB, MEDIUMBLOB, and LONGBLOB.\nThese differ only in the maximum length of the values they can hold.\nThe four TEXT types are TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT. These\ncorrespond to the four BLOB types and have the same maximum lengths and\nstorage requirements. See\nhttp://dev.mysql.com/doc/refman/5.5/en/storage-requirements.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/blob.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/blob.html'),(78,'CREATE USER',10,'Syntax:\nCREATE USER user_specification [, user_specification] ...\n\nuser_specification:\n user [ identified_option ]\n\nauth_option: {\n IDENTIFIED BY \'auth_string\'\n | IDENTIFIED BY PASSWORD \'hash_string\'\n | IDENTIFIED WITH auth_plugin\n | IDENTIFIED WITH auth_plugin AS \'hash_string\'\n}\n\nThe CREATE USER statement creates new MySQL accounts. An error occurs\nif you try to create an account that already exists.\n\nTo use CREATE USER, you must have the global CREATE USER privilege or\nthe INSERT privilege for the mysql database. When the read_only system\nvariable is enabled, CREATE USER additionally requires the SUPER\nprivilege.\n\nFor each account, CREATE USER creates a new row in the mysql.user table\nwith no privileges and (as of MySQL 5.5.7) assigns the account an\nauthentication plugin. Depending on the syntax used, CREATE USER may\nalso assign the account a password.\n\nEach user_specification clause consists of an account name and\ninformation about how authentication occurs for clients that use the\naccount. This part of CREATE USER syntax is shared with GRANT, so the\ndescription here applies to GRANT as well.\n\nEach account name uses the format described in\nhttp://dev.mysql.com/doc/refman/5.5/en/account-names.html. For example:\n\nCREATE USER \'jeffrey\'@\'localhost\' IDENTIFIED BY \'mypass\';\n\nIf you specify only the user name part of the account name, a host name\npart of \'%\' is used.\n\nThe server assigns an authentication plugin and password to each\naccount as follows, depending on whether the user specification clause\nincludes IDENTIFIED WITH to specify a plugin or IDENTIFIED BY to\nspecify a password:\n\n*Note*: IDENTIFIED WITH is available as of MySQL 5.5.7. Before 5.5.7,\nauthentication plugins are not used, so only the remarks about\nIDENTIFIED BY apply.\n\no With IDENTIFIED WITH, the server assigns the specified plugin and the\n account has no password. If the optional AS \'hash_string\' clause is\n also given, the string is stored as is in the authentication_string\n column (it is assumed to be already hashed in the format required by\n the plugin).\n\no With IDENTIFIED BY, the server assigns no plugin and assigns the\n specified password.\n\no With neither IDENTIFIED WITH nor IDENTIFIED BY, the server assigns no\n plugin and the account has no password.\n\nIf the account has no password, the Password column in the account\'s\nmysql.user table row remains empty, which is insecure. To set the\npassword, use SET PASSWORD. See [HELP SET PASSWORD].\n\nIf the server assigns no plugin to the account, the plugin column in\nthe account\'s mysql.user table row remains empty.\n\nFor client connections that use a given account, the server invokes the\nauthentication plugin assigned to the account and the client must\nprovide credentials as required by the authentication method that the\nplugin implements. If the server cannot find the plugin, either at\naccount-creation time or connect time, an error occurs.\n\nIf an account\'s mysql.user table row has a nonempty plugin column:\n\no The server authenticates client connection attempts using the named\n plugin.\n\no Changes to the account password using SET PASSWORD with PASSWORD()\n must be made with the old_passwords system variable set to the value\n required by the authentication plugin, so that PASSWORD() uses the\n appropriate password hashing method. If the plugin is\n mysql_old_password, the password can also be changed using SET\n PASSWORD with OLD_PASSWORD(), which uses pre-4.1 password hashing\n regardless of the value of old_passwords.\n\nIf an account\'s mysql.user table row has an empty plugin column:\n\no The server authenticates client connection attempts using the\n mysql_native_password or mysql_old_password authentication plugin,\n depending on the hash format of the password stored in the Password\n column.\n\no Changes to the account password using SET PASSWORD can be made with\n PASSWORD(), with old_passwords set to 0 or 1 for 4.1 or pre-4.1\n password hashing, respectively, or with OLD_PASSWORD(), which uses\n pre-4.1 password hashing regardless of the value of old_passwords.\n\nCREATE USER examples:\n\no To specify an authentication plugin for an account, use IDENTIFIED\n WITH auth_plugin. The plugin name can be a quoted string literal or\n an unquoted name. \'auth_string\' is an optional quoted string literal\n to pass to the plugin. The plugin interprets the meaning of the\n string, so its format is plugin specific and it is stored in the\n authentication_string column as given. (This value is meaningful only\n for plugins that use that column.) Consult the documentation for a\n given plugin for information about the authentication string values\n it accepts, if any.\n\nCREATE USER \'jeffrey\'@\'localhost\' IDENTIFIED WITH mysql_native_password;\n\n The server assigns the given authentication plugin to the account but\n no password. Clients must provide no password when they connect.\n However, an account with no password is insecure. To ensure that an\n account uses a specific authentication plugin and has a password with\n the corresponding hash format, specify the plugin explicitly with\n IDENTIFIED WITH, then use SET PASSWORD to set the password:\n\nCREATE USER \'jeffrey\'@\'localhost\' IDENTIFIED WITH mysql_native_password;\nSET old_passwords = 0;\nSET PASSWORD FOR \'jeffrey\'@\'localhost\' = PASSWORD(\'mypass\');\n\n Changes to the account password using SET PASSWORD with PASSWORD()\n must be made with the old_passwords system variable set to the value\n required by the account\'s authentication plugin, so that PASSWORD()\n uses the appropriate password hashing method. Therefore, to use the\n mysql_old_password plugin instead, name that plugin in the CREATE\n USER statement and set old_passwords to 1 before using SET PASSWORD.\n\no To specify a password for an account at account-creation time, use\n IDENTIFIED BY with the literal cleartext password value:\n\nCREATE USER \'jeffrey\'@\'localhost\' IDENTIFIED BY \'mypass\';\n\n The server assigns the given password to the account but no\n authentication plugin. Clients must provide the password when they\n connect.\n\no To avoid specifying the cleartext password if you know its hash value\n (the value that PASSWORD() would return for the password), specify\n the hash value preceded by the keyword PASSWORD:\n\nCREATE USER \'jeffrey\'@\'localhost\'\nIDENTIFIED BY PASSWORD \'*90E462C37378CED12064BB3388827D2BA3A9B689\';\n\n The server assigns the given password to the account but no\n authentication plugin. Clients must provide the password when they\n connect.\n\no To enable the user to connect with no password, include no IDENTIFIED\n BY clause:\n\nCREATE USER \'jeffrey\'@\'localhost\';\n\n The server assigns no authentication plugin or password to the\n account. Clients must provide no password when they connect. However,\n an account with no password is insecure. To avoid this, use SET\n PASSWORD to set the account password.\n\nFor additional information about setting passwords and authentication\nplugins, see\nhttp://dev.mysql.com/doc/refman/5.5/en/assigning-passwords.html, and\nhttp://dev.mysql.com/doc/refman/5.5/en/pluggable-authentication.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-user.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/create-user.html'),(79,'POINT',25,'Point(x,y)\n\nConstructs a Point using its coordinates.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html'),(80,'CURRENT_USER',17,'Syntax:\nCURRENT_USER, CURRENT_USER()\n\nReturns the user name and host name combination for the MySQL account\nthat the server used to authenticate the current client. This account\ndetermines your access privileges. The return value is a string in the\nutf8 character set.\n\nThe value of CURRENT_USER() can differ from the value of USER().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','mysql> SELECT USER();\n -> \'davida@localhost\'\nmysql> SELECT * FROM mysql.user;\nERROR 1044: Access denied for user \'\'@\'localhost\' to\ndatabase \'mysql\'\nmysql> SELECT CURRENT_USER();\n -> \'@localhost\'\n','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(81,'LCASE',38,'Syntax:\nLCASE(str)\n\nLCASE() is a synonym for LOWER().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(82,'<=',20,'Syntax:\n<=\n\nLess than or equal:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT 0.1 <= 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(83,'SHOW PROFILES',27,'Syntax:\nSHOW PROFILES\n\nThe SHOW PROFILES statement, together with SHOW PROFILE, displays\nprofiling information that indicates resource usage for statements\nexecuted during the course of the current session. For more\ninformation, see [HELP SHOW PROFILE].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-profiles.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-profiles.html'),(84,'UPDATE',28,'Syntax:\nSingle-table syntax:\n\nUPDATE [LOW_PRIORITY] [IGNORE] table_reference\n SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...\n [WHERE where_condition]\n [ORDER BY ...]\n [LIMIT row_count]\n\nMultiple-table syntax:\n\nUPDATE [LOW_PRIORITY] [IGNORE] table_references\n SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...\n [WHERE where_condition]\n\nFor the single-table syntax, the UPDATE statement updates columns of\nexisting rows in the named table with new values. The SET clause\nindicates which columns to modify and the values they should be given.\nEach value can be given as an expression, or the keyword DEFAULT to set\na column explicitly to its default value. The WHERE clause, if given,\nspecifies the conditions that identify which rows to update. With no\nWHERE clause, all rows are updated. If the ORDER BY clause is\nspecified, the rows are updated in the order that is specified. The\nLIMIT clause places a limit on the number of rows that can be updated.\n\nFor the multiple-table syntax, UPDATE updates rows in each table named\nin table_references that satisfy the conditions. Each matching row is\nupdated once, even if it matches the conditions multiple times. For\nmultiple-table syntax, ORDER BY and LIMIT cannot be used.\n\nwhere_condition is an expression that evaluates to true for each row to\nbe updated. For expression syntax, see\nhttp://dev.mysql.com/doc/refman/5.5/en/expressions.html.\n\ntable_references and where_condition are specified as described in\nhttp://dev.mysql.com/doc/refman/5.5/en/select.html.\n\nYou need the UPDATE privilege only for columns referenced in an UPDATE\nthat are actually updated. You need only the SELECT privilege for any\ncolumns that are read but not modified.\n\nThe UPDATE statement supports the following modifiers:\n\no With the LOW_PRIORITY keyword, execution of the UPDATE is delayed\n until no other clients are reading from the table. This affects only\n storage engines that use only table-level locking (such as MyISAM,\n MEMORY, and MERGE).\n\no With the IGNORE keyword, the update statement does not abort even if\n errors occur during the update. Rows for which duplicate-key\n conflicts occur on a unique key value are not updated. Rows updated\n to values that would cause data conversion errors are updated to the\n closest valid values instead.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/update.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/update.html'),(85,'IS NOT NULL',20,'Syntax:\nIS NOT NULL\n\nTests whether a value is not NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;\n -> 1, 1, 0\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(86,'CASE STATEMENT',24,'Syntax:\nCASE case_value\n WHEN when_value THEN statement_list\n [WHEN when_value THEN statement_list] ...\n [ELSE statement_list]\nEND CASE\n\nOr:\n\nCASE\n WHEN search_condition THEN statement_list\n [WHEN search_condition THEN statement_list] ...\n [ELSE statement_list]\nEND CASE\n\nThe CASE statement for stored programs implements a complex conditional\nconstruct.\n\n*Note*: There is also a CASE expression, which differs from the CASE\nstatement described here. See\nhttp://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html. The\nCASE statement cannot have an ELSE NULL clause, and it is terminated\nwith END CASE instead of END.\n\nFor the first syntax, case_value is an expression. This value is\ncompared to the when_value expression in each WHEN clause until one of\nthem is equal. When an equal when_value is found, the corresponding\nTHEN clause statement_list executes. If no when_value is equal, the\nELSE clause statement_list executes, if there is one.\n\nThis syntax cannot be used to test for equality with NULL because NULL\n= NULL is false. See\nhttp://dev.mysql.com/doc/refman/5.5/en/working-with-null.html.\n\nFor the second syntax, each WHEN clause search_condition expression is\nevaluated until one is true, at which point its corresponding THEN\nclause statement_list executes. If no search_condition is equal, the\nELSE clause statement_list executes, if there is one.\n\nIf no when_value or search_condition matches the value tested and the\nCASE statement contains no ELSE clause, a Case not found for CASE\nstatement error results.\n\nEach statement_list consists of one or more SQL statements; an empty\nstatement_list is not permitted.\n\nTo handle situations where no value is matched by any WHEN clause, use\nan ELSE containing an empty BEGIN ... END block, as shown in this\nexample. (The indentation used here in the ELSE clause is for purposes\nof clarity only, and is not otherwise significant.)\n\nDELIMITER |\n\nCREATE PROCEDURE p()\n BEGIN\n DECLARE v INT DEFAULT 1;\n\n CASE v\n WHEN 2 THEN SELECT v;\n WHEN 3 THEN SELECT 0;\n ELSE\n BEGIN\n END;\n END CASE;\n END;\n |\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/case.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/case.html'),(87,'EXECUTE STATEMENT',8,'Syntax:\nEXECUTE stmt_name\n [USING @var_name [, @var_name] ...]\n\nAfter preparing a statement with PREPARE, you execute it with an\nEXECUTE statement that refers to the prepared statement name. If the\nprepared statement contains any parameter markers, you must supply a\nUSING clause that lists user variables containing the values to be\nbound to the parameters. Parameter values can be supplied only by user\nvariables, and the USING clause must name exactly as many variables as\nthe number of parameter markers in the statement.\n\nYou can execute a given prepared statement multiple times, passing\ndifferent variables to it or setting the variables to different values\nbefore each execution.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/execute.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/execute.html'),(88,'DROP INDEX',40,'Syntax:\nDROP [ONLINE|OFFLINE] INDEX index_name ON tbl_name\n\nDROP INDEX drops the index named index_name from the table tbl_name.\nThis statement is mapped to an ALTER TABLE statement to drop the index.\nSee [HELP ALTER TABLE].\n\nTo drop a primary key, the index name is always PRIMARY, which must be\nspecified as a quoted identifier because PRIMARY is a reserved word:\n\nDROP INDEX `PRIMARY` ON t;\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-index.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-index.html'),(89,'MATCH AGAINST',38,'Syntax:\nMATCH (col1,col2,...) AGAINST (expr [search_modifier])\n\nMySQL has support for full-text indexing and searching:\n\no A full-text index in MySQL is an index of type FULLTEXT.\n\no Full-text indexes can be used only with MyISAM tables. (In MySQL 5.6\n and up, they can also be used with InnoDB tables.) Full-text indexes\n can be created only for CHAR, VARCHAR, or TEXT columns.\n\no A FULLTEXT index definition can be given in the CREATE TABLE\n statement when a table is created, or added later using ALTER TABLE\n or CREATE INDEX.\n\no For large data sets, it is much faster to load your data into a table\n that has no FULLTEXT index and then create the index after that, than\n to load data into a table that has an existing FULLTEXT index.\n\nFull-text searching is performed using MATCH() ... AGAINST syntax.\nMATCH() takes a comma-separated list that names the columns to be\nsearched. AGAINST takes a string to search for, and an optional\nmodifier that indicates what type of search to perform. The search\nstring must be a string value that is constant during query evaluation.\nThis rules out, for example, a table column because that can differ for\neach row.\n\nThere are three types of full-text searches:\n\no A natural language search interprets the search string as a phrase in\n natural human language (a phrase in free text). There are no special\n operators. The stopword list applies. In addition, words that are\n present in 50% or more of the rows are considered common and do not\n match.\n\n Full-text searches are natural language searches if the IN NATURAL\n LANGUAGE MODE modifier is given or if no modifier is given. For more\n information, see\n http://dev.mysql.com/doc/refman/5.5/en/fulltext-natural-language.html\n .\n\no A boolean search interprets the search string using the rules of a\n special query language. The string contains the words to search for.\n It can also contain operators that specify requirements such that a\n word must be present or absent in matching rows, or that it should be\n weighted higher or lower than usual. Common words such as \"some\" or\n \"then\" are stopwords and do not match if present in the search\n string. The IN BOOLEAN MODE modifier specifies a boolean search. For\n more information, see\n http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html.\n\no A query expansion search is a modification of a natural language\n search. The search string is used to perform a natural language\n search. Then words from the most relevant rows returned by the search\n are added to the search string and the search is done again. The\n query returns the rows from the second search. The IN NATURAL\n LANGUAGE MODE WITH QUERY EXPANSION or WITH QUERY EXPANSION modifier\n specifies a query expansion search. For more information, see\n http://dev.mysql.com/doc/refman/5.5/en/fulltext-query-expansion.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html\n\n','mysql> SELECT id, body, MATCH (title,body) AGAINST\n -> (\'Security implications of running MySQL as root\'\n -> IN NATURAL LANGUAGE MODE) AS score\n -> FROM articles WHERE MATCH (title,body) AGAINST\n -> (\'Security implications of running MySQL as root\'\n -> IN NATURAL LANGUAGE MODE);\n+----+-------------------------------------+-----------------+\n| id | body | score |\n+----+-------------------------------------+-----------------+\n| 4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |\n| 6 | When configured properly, MySQL ... | 1.3114095926285 |\n+----+-------------------------------------+-----------------+\n2 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html'),(90,'CREATE EVENT',40,'Syntax:\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n EVENT\n [IF NOT EXISTS]\n event_name\n ON SCHEDULE schedule\n [ON COMPLETION [NOT] PRESERVE]\n [ENABLE | DISABLE | DISABLE ON SLAVE]\n [COMMENT \'comment\']\n DO event_body;\n\nschedule:\n AT timestamp [+ INTERVAL interval] ...\n | EVERY interval\n [STARTS timestamp [+ INTERVAL interval] ...]\n [ENDS timestamp [+ INTERVAL interval] ...]\n\ninterval:\n quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |\n WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |\n DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}\n\nThis statement creates and schedules a new event. The event will not\nrun unless the Event Scheduler is enabled. For information about\nchecking Event Scheduler status and enabling it if necessary, see\nhttp://dev.mysql.com/doc/refman/5.5/en/events-configuration.html.\n\nCREATE EVENT requires the EVENT privilege for the schema in which the\nevent is to be created. It might also require the SUPER privilege,\ndepending on the DEFINER value, as described later in this section.\n\nThe minimum requirements for a valid CREATE EVENT statement are as\nfollows:\n\no The keywords CREATE EVENT plus an event name, which uniquely\n identifies the event in a database schema.\n\no An ON SCHEDULE clause, which determines when and how often the event\n executes.\n\no A DO clause, which contains the SQL statement to be executed by an\n event.\n\nThis is an example of a minimal CREATE EVENT statement:\n\nCREATE EVENT myevent\n ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR\n DO\n UPDATE myschema.mytable SET mycol = mycol + 1;\n\nThe previous statement creates an event named myevent. This event\nexecutes once---one hour following its creation---by running an SQL\nstatement that increments the value of the myschema.mytable table\'s\nmycol column by 1.\n\nThe event_name must be a valid MySQL identifier with a maximum length\nof 64 characters. Event names are not case sensitive, so you cannot\nhave two events named myevent and MyEvent in the same schema. In\ngeneral, the rules governing event names are the same as those for\nnames of stored routines. See\nhttp://dev.mysql.com/doc/refman/5.5/en/identifiers.html.\n\nAn event is associated with a schema. If no schema is indicated as part\nof event_name, the default (current) schema is assumed. To create an\nevent in a specific schema, qualify the event name with a schema using\nschema_name.event_name syntax.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-event.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/create-event.html'),(91,'ABS',3,'Syntax:\nABS(X)\n\nReturns the absolute value of X.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT ABS(2);\n -> 2\nmysql> SELECT ABS(-32);\n -> 32\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(92,'POLYFROMWKB',33,'PolyFromWKB(wkb[,srid]), PolygonFromWKB(wkb[,srid])\n\nConstructs a Polygon value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html'),(93,'NOT LIKE',38,'Syntax:\nexpr NOT LIKE pat [ESCAPE \'escape_char\']\n\nThis is the same as NOT (expr LIKE pat [ESCAPE \'escape_char\']).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html'),(94,'SPACE',38,'Syntax:\nSPACE(N)\n\nReturns a string consisting of N space characters.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT SPACE(6);\n -> \' \'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(95,'MBR DEFINITION',7,'Its MBR (minimum bounding rectangle), or envelope. This is the bounding\ngeometry, formed by the minimum and maximum (X,Y) coordinates:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-class-geometry.html\n\n','((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))\n','http://dev.mysql.com/doc/refman/5.5/en/gis-class-geometry.html'),(96,'MAX',16,'Syntax:\nMAX([DISTINCT] expr)\n\nReturns the maximum value of expr. MAX() may take a string argument; in\nsuch cases, it returns the maximum string value. See\nhttp://dev.mysql.com/doc/refman/5.5/en/mysql-indexes.html. The DISTINCT\nkeyword can be used to find the maximum of the distinct values of expr,\nhowever, this produces the same result as omitting DISTINCT.\n\nMAX() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','mysql> SELECT student_name, MIN(test_score), MAX(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(97,'GEOMETRYCOLLECTION',25,'GeometryCollection(g1,g2,...)\n\nConstructs a GeometryCollection.\n\nIf the argument contains a nonsupported geometry, the return value is\nNULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html'),(98,'CREATE FUNCTION UDF',22,'Syntax:\nCREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL}\n SONAME shared_library_name\n\nA user-defined function (UDF) is a way to extend MySQL with a new\nfunction that works like a native (built-in) MySQL function such as\nABS() or CONCAT().\n\nfunction_name is the name that should be used in SQL statements to\ninvoke the function. The RETURNS clause indicates the type of the\nfunction\'s return value. DECIMAL is a legal value after RETURNS, but\ncurrently DECIMAL functions return string values and should be written\nlike STRING functions.\n\nshared_library_name is the base name of the shared object file that\ncontains the code that implements the function. The file must be\nlocated in the plugin directory. This directory is given by the value\nof the plugin_dir system variable. For more information, see\nhttp://dev.mysql.com/doc/refman/5.5/en/udf-compiling.html.\n\nTo create a function, you must have the INSERT privilege for the mysql\ndatabase. This is necessary because CREATE FUNCTION adds a row to the\nmysql.func system table that records the function\'s name, type, and\nshared library name. If you do not have this table, you should run the\nmysql_upgrade command to create it. See\nhttp://dev.mysql.com/doc/refman/5.5/en/mysql-upgrade.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-function-udf.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/create-function-udf.html'),(99,'*',3,'Syntax:\n*\n\nMultiplication:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html\n\n','mysql> SELECT 3*5;\n -> 15\nmysql> SELECT 18014398509481984*18014398509481984.0;\n -> 324518553658426726783156020576256.0\nmysql> SELECT 18014398509481984*18014398509481984;\n -> out-of-range error\n','http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html'),(100,'TIMESTAMP',23,'TIMESTAMP\n\nA timestamp. The range is \'1970-01-01 00:00:01\' UTC to \'2038-01-19\n03:14:07\' UTC. TIMESTAMP values are stored as the number of seconds\nsince the epoch (\'1970-01-01 00:00:00\' UTC). A TIMESTAMP cannot\nrepresent the value \'1970-01-01 00:00:00\' because that is equivalent to\n0 seconds from the epoch and the value 0 is reserved for representing\n\'0000-00-00 00:00:00\', the \"zero\" TIMESTAMP value.\n\nUnless specified otherwise, the first TIMESTAMP column in a table is\ndefined to be automatically set to the date and time of the most recent\nmodification if not explicitly assigned a value. This makes TIMESTAMP\nuseful for recording the timestamp of an INSERT or UPDATE operation.\nYou can also set any TIMESTAMP column to the current date and time by\nassigning it a NULL value, unless it has been defined with the NULL\nattribute to permit NULL values. The automatic initialization and\nupdating to the current date and time can be specified using DEFAULT\nCURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP clauses, as described\nin\nhttp://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-type-overview.html'),(101,'DES_DECRYPT',12,'Syntax:\nDES_DECRYPT(crypt_str[,key_str])\n\nDecrypts a string encrypted with DES_ENCRYPT(). If an error occurs,\nthis function returns NULL.\n\nThis function works only if MySQL has been configured with SSL support.\nSee http://dev.mysql.com/doc/refman/5.5/en/secure-connections.html.\n\nIf no key_str argument is given, DES_DECRYPT() examines the first byte\nof the encrypted string to determine the DES key number that was used\nto encrypt the original string, and then reads the key from the DES key\nfile to decrypt the message. For this to work, the user must have the\nSUPER privilege. The key file can be specified with the --des-key-file\nserver option.\n\nIf you pass this function a key_str argument, that string is used as\nthe key for decrypting the message.\n\nIf the crypt_str argument does not appear to be an encrypted string,\nMySQL returns the given crypt_str.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(102,'CACHE INDEX',27,'Syntax:\nCACHE INDEX\n tbl_index_list [, tbl_index_list] ...\n [PARTITION (partition_list | ALL)]\n IN key_cache_name\n\ntbl_index_list:\n tbl_name [[INDEX|KEY] (index_name[, index_name] ...)]\n\npartition_list:\n partition_name[, partition_name][, ...]\n\nThe CACHE INDEX statement assigns table indexes to a specific key\ncache. It is used only for MyISAM tables. After the indexes have been\nassigned, they can be preloaded into the cache if desired with LOAD\nINDEX INTO CACHE.\n\nThe following statement assigns indexes from the tables t1, t2, and t3\nto the key cache named hot_cache:\n\nmysql> CACHE INDEX t1, t2, t3 IN hot_cache;\n+---------+--------------------+----------+----------+\n| Table | Op | Msg_type | Msg_text |\n+---------+--------------------+----------+----------+\n| test.t1 | assign_to_keycache | status | OK |\n| test.t2 | assign_to_keycache | status | OK |\n| test.t3 | assign_to_keycache | status | OK |\n+---------+--------------------+----------+----------+\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/cache-index.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/cache-index.html'),(103,'ENDPOINT',13,'EndPoint(ls)\n\nReturns the Point that is the endpoint of the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(EndPoint(GeomFromText(@ls)));\n+-------------------------------------+\n| AsText(EndPoint(GeomFromText(@ls))) |\n+-------------------------------------+\n| POINT(3 3) |\n+-------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-linestring-property-functions.html'),(104,'COMPRESS',12,'Syntax:\nCOMPRESS(string_to_compress)\n\nCompresses a string and returns the result as a binary string. This\nfunction requires MySQL to have been compiled with a compression\nlibrary such as zlib. Otherwise, the return value is always NULL. The\ncompressed string can be uncompressed with UNCOMPRESS().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','mysql> SELECT LENGTH(COMPRESS(REPEAT(\'a\',1000)));\n -> 21\nmysql> SELECT LENGTH(COMPRESS(\'\'));\n -> 0\nmysql> SELECT LENGTH(COMPRESS(\'a\'));\n -> 13\nmysql> SELECT LENGTH(COMPRESS(REPEAT(\'a\',16)));\n -> 15\n','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(105,'INSERT',28,'Syntax:\nINSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name [(col_name,...)]\n {VALUES | VALUE} ({expr | DEFAULT},...),(...),...\n [ ON DUPLICATE KEY UPDATE\n col_name=expr\n [, col_name=expr] ... ]\n\nOr:\n\nINSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name\n SET col_name={expr | DEFAULT}, ...\n [ ON DUPLICATE KEY UPDATE\n col_name=expr\n [, col_name=expr] ... ]\n\nOr:\n\nINSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name [(col_name,...)]\n SELECT ...\n [ ON DUPLICATE KEY UPDATE\n col_name=expr\n [, col_name=expr] ... ]\n\nINSERT inserts new rows into an existing table. The INSERT ... VALUES\nand INSERT ... SET forms of the statement insert rows based on\nexplicitly specified values. The INSERT ... SELECT form inserts rows\nselected from another table or tables. INSERT ... SELECT is discussed\nfurther in [HELP INSERT SELECT].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/insert.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/insert.html'),(106,'COUNT',16,'Syntax:\nCOUNT(expr)\n\nReturns a count of the number of non-NULL values of expr in the rows\nretrieved by a SELECT statement. The result is a BIGINT value.\n\nCOUNT() returns 0 if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','mysql> SELECT student.student_name,COUNT(*)\n -> FROM student,course\n -> WHERE student.student_id=course.student_id\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(107,'HANDLER',28,'Syntax:\nHANDLER tbl_name OPEN [ [AS] alias]\n\nHANDLER tbl_name READ index_name { = | <= | >= | < | > } (value1,value2,...)\n [ WHERE where_condition ] [LIMIT ... ]\nHANDLER tbl_name READ index_name { FIRST | NEXT | PREV | LAST }\n [ WHERE where_condition ] [LIMIT ... ]\nHANDLER tbl_name READ { FIRST | NEXT }\n [ WHERE where_condition ] [LIMIT ... ]\n\nHANDLER tbl_name CLOSE\n\nThe HANDLER statement provides direct access to table storage engine\ninterfaces. It is available for InnoDB and MyISAM tables.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/handler.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/handler.html'),(108,'MLINEFROMTEXT',4,'MLineFromText(wkt[,srid]), MultiLineStringFromText(wkt[,srid])\n\nConstructs a MultiLineString value using its WKT representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html'),(109,'GEOMCOLLFROMWKB',33,'GeomCollFromWKB(wkb[,srid]), GeometryCollectionFromWKB(wkb[,srid])\n\nConstructs a GeometryCollection value using its WKB representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html'),(110,'HELP_DATE',9,'This help information was generated from the MySQL 5.5 Reference Manual\non: 2016-03-01\n','',''),(111,'RENAME TABLE',40,'Syntax:\nRENAME TABLE tbl_name TO new_tbl_name\n [, tbl_name2 TO new_tbl_name2] ...\n\nThis statement renames one or more tables. The rename operation is done\natomically, which means that no other session can access any of the\ntables while the rename is running.\n\nFor example, a table named old_table can be renamed to new_table as\nshown here:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/rename-table.html\n\n','RENAME TABLE old_table TO new_table;\n','http://dev.mysql.com/doc/refman/5.5/en/rename-table.html'),(112,'BOOLEAN',23,'BOOL, BOOLEAN\n\nThese types are synonyms for TINYINT(1). A value of zero is considered\nfalse. Nonzero values are considered true:\n\nmysql> SELECT IF(0, \'true\', \'false\');\n+------------------------+\n| IF(0, \'true\', \'false\') |\n+------------------------+\n| false |\n+------------------------+\n\nmysql> SELECT IF(1, \'true\', \'false\');\n+------------------------+\n| IF(1, \'true\', \'false\') |\n+------------------------+\n| true |\n+------------------------+\n\nmysql> SELECT IF(2, \'true\', \'false\');\n+------------------------+\n| IF(2, \'true\', \'false\') |\n+------------------------+\n| true |\n+------------------------+\n\nHowever, the values TRUE and FALSE are merely aliases for 1 and 0,\nrespectively, as shown here:\n\nmysql> SELECT IF(0 = FALSE, \'true\', \'false\');\n+--------------------------------+\n| IF(0 = FALSE, \'true\', \'false\') |\n+--------------------------------+\n| true |\n+--------------------------------+\n\nmysql> SELECT IF(1 = TRUE, \'true\', \'false\');\n+-------------------------------+\n| IF(1 = TRUE, \'true\', \'false\') |\n+-------------------------------+\n| true |\n+-------------------------------+\n\nmysql> SELECT IF(2 = TRUE, \'true\', \'false\');\n+-------------------------------+\n| IF(2 = TRUE, \'true\', \'false\') |\n+-------------------------------+\n| false |\n+-------------------------------+\n\nmysql> SELECT IF(2 = FALSE, \'true\', \'false\');\n+--------------------------------+\n| IF(2 = FALSE, \'true\', \'false\') |\n+--------------------------------+\n| false |\n+--------------------------------+\n\nThe last two statements display the results shown because 2 is equal to\nneither 1 nor 0.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(113,'DEFAULT',14,'Syntax:\nDEFAULT(col_name)\n\nReturns the default value for a table column. An error results if the\ncolumn has no default value.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','mysql> UPDATE t SET i = DEFAULT(i)+1 WHERE id < 100;\n','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(114,'MOD',3,'Syntax:\nMOD(N,M), N % M, N MOD M\n\nModulo operation. Returns the remainder of N divided by M.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT MOD(234, 10);\n -> 4\nmysql> SELECT 253 % 7;\n -> 1\nmysql> SELECT MOD(29,9);\n -> 2\nmysql> SELECT 29 MOD 9;\n -> 2\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(115,'TINYTEXT',23,'TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 255 (28 − 1) characters. The\neffective maximum length is less if the value contains multibyte\ncharacters. Each TINYTEXT value is stored using a 1-byte length prefix\nthat indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(116,'OPTIMIZE TABLE',21,'Syntax:\nOPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n\nReorganizes the physical storage of table data and associated index\ndata, to reduce storage space and improve I/O efficiency when accessing\nthe table. The exact changes made to each table depend on the storage\nengine used by that table. This statement does not work with views.\n\nUse OPTIMIZE TABLE in these cases, depending on the type of table:\n\no After doing substantial insert, update, or delete operations on an\n InnoDB table that has its own .ibd file because it was created with\n the innodb_file_per_table option enabled. The table and indexes are\n reorganized, and disk space can be reclaimed for use by the operating\n system.\n\no After deleting a large part of a MyISAM or ARCHIVE table, or making\n many changes to a MyISAM or ARCHIVE table with variable-length rows\n (tables that have VARCHAR, VARBINARY, BLOB, or TEXT columns). Deleted\n rows are maintained in a linked list and subsequent INSERT operations\n reuse old row positions. You can use OPTIMIZE TABLE to reclaim the\n unused space and to defragment the data file. After extensive changes\n to a table, this statement may also improve performance of statements\n that use the table, sometimes significantly.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nOPTIMIZE TABLE is also supported for partitioned tables. For\ninformation about using this statement with partitioned tables and\ntable partitions, see\nhttp://dev.mysql.com/doc/refman/5.5/en/partitioning-maintenance.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/optimize-table.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/optimize-table.html'),(117,'DECODE',12,'Syntax:\nDECODE(crypt_str,pass_str)\n\nDecrypts the encrypted string crypt_str using pass_str as the password.\ncrypt_str should be a string returned from ENCODE().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(118,'<=>',20,'Syntax:\n<=>\n\nNULL-safe equal. This operator performs an equality comparison like the\n= operator, but returns 1 rather than NULL if both operands are NULL,\nand 0 rather than NULL if one operand is NULL.\n\nThe <=> operator is equivalent to the standard SQL IS NOT DISTINCT FROM\noperator.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;\n -> 1, 1, 0\nmysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;\n -> 1, NULL, NULL\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(119,'HELP STATEMENT',29,'Syntax:\nHELP \'search_string\'\n\nThe HELP statement returns online information from the MySQL Reference\nmanual. Its proper operation requires that the help tables in the mysql\ndatabase be initialized with help topic information (see\nhttp://dev.mysql.com/doc/refman/5.5/en/server-side-help-support.html).\n\nThe HELP statement searches the help tables for the given search string\nand displays the result of the search. The search string is not case\nsensitive.\n\nThe search string can contain the wildcard characters \"%\" and \"_\".\nThese have the same meaning as for pattern-matching operations\nperformed with the LIKE operator. For example, HELP \'rep%\' returns a\nlist of topics that begin with rep.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/help.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/help.html'),(120,'RESET',27,'Syntax:\nRESET reset_option [, reset_option] ...\n\nThe RESET statement is used to clear the state of various server\noperations. You must have the RELOAD privilege to execute RESET.\n\nRESET acts as a stronger version of the FLUSH statement. See [HELP\nFLUSH].\n\nThe RESET statement causes an implicit commit. See\nhttp://dev.mysql.com/doc/refman/5.5/en/implicit-commit.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/reset.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/reset.html'),(121,'GET_LOCK',14,'Syntax:\nGET_LOCK(str,timeout)\n\nTries to obtain a lock with a name given by the string str, using a\ntimeout of timeout seconds. Before MySQL 5.5.8, a negative timeout\nvalue means infinite timeout on Windows. As of 5.5.8, this behavior\napplies on all platforms.\n\nReturns 1 if the lock was obtained successfully, 0 if the attempt timed\nout (for example, because another client has previously locked the\nname), or NULL if an error occurred (such as running out of memory or\nthe thread was killed with mysqladmin kill).\n\nA lock obtained with GET_LOCK() is released explicitly by executing\nRELEASE_LOCK() or implicitly when your session terminates (either\nnormally or abnormally).\n\nLocks obtained with GET_LOCK() are not released when transactions\ncommit or roll back.\n\nGET_LOCK() can be used to implement application locks or to simulate\nrecord locks. Names are locked on a server-wide basis. If a name has\nbeen locked within one session, GET_LOCK() blocks any request by\nanother session for a lock with the same name. This enables clients\nthat agree on a given lock name to use the name to perform cooperative\nadvisory locking. But be aware that it also enables a client that is\nnot among the set of cooperating clients to lock a name, either\ninadvertently or deliberately, and thus prevent any of the cooperating\nclients from locking that name. One way to reduce the likelihood of\nthis is to use lock names that are database-specific or\napplication-specific. For example, use lock names of the form\ndb_name.str or app_name.str.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','mysql> SELECT GET_LOCK(\'lock1\',10);\n -> 1\nmysql> SELECT IS_FREE_LOCK(\'lock2\');\n -> 1\nmysql> SELECT GET_LOCK(\'lock2\',10);\n -> 1\nmysql> SELECT RELEASE_LOCK(\'lock2\');\n -> 1\nmysql> SELECT RELEASE_LOCK(\'lock1\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(122,'UCASE',38,'Syntax:\nUCASE(str)\n\nUCASE() is a synonym for UPPER().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(123,'SHOW BINLOG EVENTS',27,'Syntax:\nSHOW BINLOG EVENTS\n [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count]\n\nShows the events in the binary log. If you do not specify \'log_name\',\nthe first binary log is displayed.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-binlog-events.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-binlog-events.html'),(124,'MPOLYFROMWKB',33,'MPolyFromWKB(wkb[,srid]), MultiPolygonFromWKB(wkb[,srid])\n\nConstructs a MultiPolygon value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html'),(125,'ITERATE',24,'Syntax:\nITERATE label\n\nITERATE can appear only within LOOP, REPEAT, and WHILE statements.\nITERATE means \"start the loop again.\"\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/iterate.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/iterate.html'),(126,'DO',28,'Syntax:\nDO expr [, expr] ...\n\nDO executes the expressions but does not return any results. In most\nrespects, DO is shorthand for SELECT expr, ..., but has the advantage\nthat it is slightly faster when you do not care about the result.\n\nDO is useful primarily with functions that have side effects, such as\nRELEASE_LOCK().\n\nExample: This SELECT statement pauses, but also produces a result set:\n\nmysql> SELECT SLEEP(5);\n+----------+\n| SLEEP(5) |\n+----------+\n| 0 |\n+----------+\n1 row in set (5.02 sec)\n\nDO, on the other hand, pauses without producing a result set.:\n\nmysql> DO SLEEP(5);\nQuery OK, 0 rows affected (4.99 sec)\n\nThis could be useful, for example in a stored function or trigger,\nwhich prohibit statements that produce result sets.\n\nDO only executes expressions. It cannot be used in all cases where\nSELECT can be used. For example, DO id FROM t1 is invalid because it\nreferences a table.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/do.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/do.html'),(127,'CURTIME',32,'Syntax:\nCURTIME()\n\nReturns the current time as a value in \'HH:MM:SS\' or HHMMSS.uuuuuu\nformat, depending on whether the function is used in a string or\nnumeric context. The value is expressed in the current time zone.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT CURTIME();\n -> \'23:50:26\'\nmysql> SELECT CURTIME() + 0;\n -> 235026.000000\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(128,'CHAR_LENGTH',38,'Syntax:\nCHAR_LENGTH(str)\n\nReturns the length of the string str, measured in characters. A\nmultibyte character counts as a single character. This means that for a\nstring containing five 2-byte characters, LENGTH() returns 10, whereas\nCHAR_LENGTH() returns 5.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(129,'BIGINT',23,'BIGINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA large integer. The signed range is -9223372036854775808 to\n9223372036854775807. The unsigned range is 0 to 18446744073709551615.\n\nSERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(130,'SET',27,'Syntax:\nSET variable_assignment [, variable_assignment] ...\n\nvariable_assignment:\n user_var_name = expr\n | [GLOBAL | SESSION] system_var_name = expr\n | [@@global. | @@session. | @@]system_var_name = expr\n\nThe SET statement assigns values to different types of variables that\naffect the operation of the server or your client. Older versions of\nMySQL employed SET OPTION, but this syntax is deprecated in favor of\nSET without OPTION.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/set-statement.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/set-statement.html'),(131,'LOAD XML',28,'Syntax:\nLOAD XML [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE \'file_name\'\n [REPLACE | IGNORE]\n INTO TABLE [db_name.]tbl_name\n [CHARACTER SET charset_name]\n [ROWS IDENTIFIED BY \'<tagname>\']\n [IGNORE number {LINES | ROWS}]\n [(field_name_or_user_var,...)]\n [SET col_name = expr,...]\n\nThe LOAD XML statement reads data from an XML file into a table. The\nfile_name must be given as a literal string. The tagname in the\noptional ROWS IDENTIFIED BY clause must also be given as a literal\nstring, and must be surrounded by angle brackets (< and >).\n\nLOAD XML acts as the complement of running the mysql client in XML\noutput mode (that is, starting the client with the --xml option). To\nwrite data from a table to an XML file, you can invoke the mysql client\nwith the --xml and -e options from the system shell, as shown here:\n\nshell> mysql --xml -e \'SELECT * FROM mydb.mytable\' > file.xml\n\nTo read the file back into a table, use LOAD XML INFILE. By default,\nthe <row> element is considered to be the equivalent of a database\ntable row; this can be changed using the ROWS IDENTIFIED BY clause.\n\nThis statement supports three different XML formats:\n\no Column names as attributes and column values as attribute values:\n\n<row column1=\"value1\" column2=\"value2\" .../>\n\no Column names as tags and column values as the content of these tags:\n\n<row>\n <column1>value1</column1>\n <column2>value2</column2>\n</row>\n\no Column names are the name attributes of <field> tags, and values are\n the contents of these tags:\n\n<row>\n <field name=\'column1\'>value1</field>\n <field name=\'column2\'>value2</field>\n</row>\n\n This is the format used by other MySQL tools, such as mysqldump.\n\nAll three formats can be used in the same XML file; the import routine\nautomatically detects the format for each row and interprets it\ncorrectly. Tags are matched based on the tag or attribute name and the\ncolumn name.\n\nPrior to MySQL 5.5.46, LOAD XML did not handle empty XML elements in\nthe form <element/> correctly. (Bug #67542, Bug #16171518)\n\nThe following clauses work essentially the same way for LOAD XML as\nthey do for LOAD DATA:\n\no LOW_PRIORITY or CONCURRENT\n\no LOCAL\n\no REPLACE or IGNORE\n\no CHARACTER SET\n\no SET\n\nSee [HELP LOAD DATA], for more information about these clauses.\n\n(field_name_or_user_var, ...) is a comma-separated list of one or more\nXML fields or user variables. The name of a user variable used for this\npurpose must match the name of a field from the XML file, prefixed with\n@. You can use field names to select only desired fields. User\nvariables can be employed to store the corresponding field values for\nsubsequent re-use.\n\nThe IGNORE number LINES or IGNORE number ROWS clause causes the first\nnumber rows in the XML file to be skipped. It is analogous to the LOAD\nDATA statement\'s IGNORE ... LINES clause.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/load-xml.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/load-xml.html'),(132,'CONV',3,'Syntax:\nCONV(N,from_base,to_base)\n\nConverts numbers between different number bases. Returns a string\nrepresentation of the number N, converted from base from_base to base\nto_base. Returns NULL if any argument is NULL. The argument N is\ninterpreted as an integer, but may be specified as an integer or a\nstring. The minimum base is 2 and the maximum base is 36. If from_base\nis a negative number, N is regarded as a signed number. Otherwise, N is\ntreated as unsigned. CONV() works with 64-bit precision.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT CONV(\'a\',16,2);\n -> \'1010\'\nmysql> SELECT CONV(\'6E\',18,8);\n -> \'172\'\nmysql> SELECT CONV(-17,10,-18);\n -> \'-H\'\nmysql> SELECT CONV(10+\'10\'+\'10\'+X\'0a\',10,10);\n -> \'40\'\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(133,'DATE',23,'DATE\n\nA date. The supported range is \'1000-01-01\' to \'9999-12-31\'. MySQL\ndisplays DATE values in \'YYYY-MM-DD\' format, but permits assignment of\nvalues to DATE columns using either strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-type-overview.html'),(134,'ASSIGN-VALUE',15,'Syntax:\n:=\n\nAssignment operator. Causes the user variable on the left hand side of\nthe operator to take on the value to its right. The value on the right\nhand side may be a literal value, another variable storing a value, or\nany legal expression that yields a scalar value, including the result\nof a query (provided that this value is a scalar value). You can\nperform multiple assignments in the same SET statement. You can perform\nmultiple assignments in the same statement-\n\nUnlike =, the := operator is never interpreted as a comparison\noperator. This means you can use := in any valid SQL statement (not\njust in SET statements) to assign a value to a variable.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/assignment-operators.html\n\n','mysql> SELECT @var1, @var2;\n -> NULL, NULL\nmysql> SELECT @var1 := 1, @var2;\n -> 1, NULL\nmysql> SELECT @var1, @var2;\n -> 1, NULL\nmysql> SELECT @var1, @var2 := @var1;\n -> 1, 1\nmysql> SELECT @var1, @var2;\n -> 1, 1\n\nmysql> SELECT @var1:=COUNT(*) FROM t1;\n -> 4\nmysql> SELECT @var1;\n -> 4\n','http://dev.mysql.com/doc/refman/5.5/en/assignment-operators.html'),(135,'SHOW OPEN TABLES',27,'Syntax:\nSHOW OPEN TABLES [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW OPEN TABLES lists the non-TEMPORARY tables that are currently open\nin the table cache. See\nhttp://dev.mysql.com/doc/refman/5.5/en/table-cache.html. The FROM\nclause, if present, restricts the tables shown to those present in the\ndb_name database. The LIKE clause, if present, indicates which table\nnames to match. The WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-open-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-open-tables.html'),(136,'EXTRACT',32,'Syntax:\nEXTRACT(unit FROM date)\n\nThe EXTRACT() function uses the same kinds of unit specifiers as\nDATE_ADD() or DATE_SUB(), but extracts parts from the date rather than\nperforming date arithmetic.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT EXTRACT(YEAR FROM \'2009-07-02\');\n -> 2009\nmysql> SELECT EXTRACT(YEAR_MONTH FROM \'2009-07-02 01:02:03\');\n -> 200907\nmysql> SELECT EXTRACT(DAY_MINUTE FROM \'2009-07-02 01:02:03\');\n -> 20102\nmysql> SELECT EXTRACT(MICROSECOND\n -> FROM \'2003-01-02 10:30:00.000123\');\n -> 123\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(137,'ENCRYPT',12,'Syntax:\nENCRYPT(str[,salt])\n\nEncrypts str using the Unix crypt() system call and returns a binary\nstring. The salt argument must be a string with at least two characters\nor the result will be NULL. If no salt argument is given, a random\nvalue is used.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','mysql> SELECT ENCRYPT(\'hello\');\n -> \'VxuFAJXVARROc\'\n','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(138,'SHOW STATUS',27,'Syntax:\nSHOW [GLOBAL | SESSION] STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW STATUS provides server status information (see\nhttp://dev.mysql.com/doc/refman/5.5/en/server-status-variables.html).\nThis statement does not require any privilege. It requires only the\nability to connect to the server.\n\nStatus variable information is also available from these sources:\n\no The GLOBAL_STATUS and SESSION_STATUS tables. See\n http://dev.mysql.com/doc/refman/5.5/en/status-table.html.\n\no The mysqladmin extended-status command. See\n http://dev.mysql.com/doc/refman/5.5/en/mysqladmin.html.\n\nFor SHOW STATUS, a LIKE clause, if present, indicates which variable\nnames to match. A WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html.\n\nSHOW STATUS accepts an optional GLOBAL or SESSION variable scope\nmodifier:\n\no With a GLOBAL modifier, the statement displays the global status\n values. A global status variable may represent status for some aspect\n of the server itself (for example, Aborted_connects), or the\n aggregated status over all connections to MySQL (for example,\n Bytes_received and Bytes_sent). If a variable has no global value,\n the session value is displayed.\n\no With a SESSION modifier, the statement displays the status variable\n values for the current connection. If a variable has no session\n value, the global value is displayed. LOCAL is a synonym for SESSION.\n\no If no modifier is present, the default is SESSION.\n\nThe scope for each status variable is listed at\nhttp://dev.mysql.com/doc/refman/5.5/en/server-status-variables.html.\n\nEach invocation of the SHOW STATUS statement uses an internal temporary\ntable and increments the global Created_tmp_tables value.\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern:\n\nmysql> SHOW STATUS LIKE \'Key%\';\n+--------------------+----------+\n| Variable_name | Value |\n+--------------------+----------+\n| Key_blocks_used | 14955 |\n| Key_read_requests | 96854827 |\n| Key_reads | 162040 |\n| Key_write_requests | 7589728 |\n| Key_writes | 3813196 |\n+--------------------+----------+\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-status.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-status.html'),(139,'EXTRACTVALUE',38,'Syntax:\nExtractValue(xml_frag, xpath_expr)\n\nExtractValue() takes two string arguments, a fragment of XML markup\nxml_frag and an XPath expression xpath_expr (also known as a locator);\nit returns the text (CDATA) of the first text node which is a child of\nthe elements or elements matched by the XPath expression. In MySQL 5.5,\nthe XPath expression can contain at most 127 characters. (This\nlimitation is lifted in MySQL 5.6.)\n\nUsing this function is the equivalent of performing a match using the\nxpath_expr after appending /text(). In other words,\nExtractValue(\'<a><b>Sakila</b></a>\', \'/a/b\') and\nExtractValue(\'<a><b>Sakila</b></a>\', \'/a/b/text()\') produce the same\nresult.\n\nIf multiple matches are found, the content of the first child text node\nof each matching element is returned (in the order matched) as a\nsingle, space-delimited string.\n\nIf no matching text node is found for the expression (including the\nimplicit /text())---for whatever reason, as long as xpath_expr is\nvalid, and xml_frag consists of elements which are properly nested and\nclosed---an empty string is returned. No distinction is made between a\nmatch on an empty element and no match at all. This is by design.\n\nIf you need to determine whether no matching element was found in\nxml_frag or such an element was found but contained no child text\nnodes, you should test the result of an expression that uses the XPath\ncount() function. For example, both of these statements return an empty\nstring, as shown here:\n\nmysql> SELECT ExtractValue(\'<a><b/></a>\', \'/a/b\');\n+-------------------------------------+\n| ExtractValue(\'<a><b/></a>\', \'/a/b\') |\n+-------------------------------------+\n| |\n+-------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT ExtractValue(\'<a><c/></a>\', \'/a/b\');\n+-------------------------------------+\n| ExtractValue(\'<a><c/></a>\', \'/a/b\') |\n+-------------------------------------+\n| |\n+-------------------------------------+\n1 row in set (0.00 sec)\n\nHowever, you can determine whether there was actually a matching\nelement using the following:\n\nmysql> SELECT ExtractValue(\'<a><b/></a>\', \'count(/a/b)\');\n+-------------------------------------+\n| ExtractValue(\'<a><b/></a>\', \'count(/a/b)\') |\n+-------------------------------------+\n| 1 |\n+-------------------------------------+\n1 row in set (0.00 sec)\n\nmysql> SELECT ExtractValue(\'<a><c/></a>\', \'count(/a/b)\');\n+-------------------------------------+\n| ExtractValue(\'<a><c/></a>\', \'count(/a/b)\') |\n+-------------------------------------+\n| 0 |\n+-------------------------------------+\n1 row in set (0.01 sec)\n\n*Important*: ExtractValue() returns only CDATA, and does not return any\ntags that might be contained within a matching tag, nor any of their\ncontent (see the result returned as val1 in the following example).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/xml-functions.html\n\n','mysql> SELECT\n -> ExtractValue(\'<a>ccc<b>ddd</b></a>\', \'/a\') AS val1,\n -> ExtractValue(\'<a>ccc<b>ddd</b></a>\', \'/a/b\') AS val2,\n -> ExtractValue(\'<a>ccc<b>ddd</b></a>\', \'//b\') AS val3,\n -> ExtractValue(\'<a>ccc<b>ddd</b></a>\', \'/b\') AS val4,\n -> ExtractValue(\'<a>ccc<b>ddd</b><b>eee</b></a>\', \'//b\') AS val5;\n\n+------+------+------+------+---------+\n| val1 | val2 | val3 | val4 | val5 |\n+------+------+------+------+---------+\n| ccc | ddd | ddd | | ddd eee |\n+------+------+------+------+---------+\n','http://dev.mysql.com/doc/refman/5.5/en/xml-functions.html'),(140,'OLD_PASSWORD',12,'Syntax:\nOLD_PASSWORD(str)\n\nOLD_PASSWORD() was added when the implementation of PASSWORD() was\nchanged in MySQL 4.1 to improve security. OLD_PASSWORD() returns the\nvalue of the pre-4.1 implementation of PASSWORD() as a string, and is\nintended to permit you to reset passwords for any pre-4.1 clients that\nneed to connect to your version MySQL 5.5 server without locking them\nout. See http://dev.mysql.com/doc/refman/5.5/en/password-hashing.html.\n\nAs of MySQL 5.5.3, the return value is a nonbinary string in the\nconnection character set. Before 5.5.3, the return value is a binary\nstring.\n\n*Note*: Passwords that use the pre-4.1 hashing method are less secure\nthan passwords that use the native password hashing method and should\nbe avoided.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(141,'FORMAT',38,'Syntax:\nFORMAT(X,D[,locale])\n\nFormats the number X to a format like \'#,###,###.##\', rounded to D\ndecimal places, and returns the result as a string. If D is 0, the\nresult has no decimal point or fractional part.\n\nThe optional third parameter enables a locale to be specified to be\nused for the result number\'s decimal point, thousands separator, and\ngrouping between separators. Permissible locale values are the same as\nthe legal values for the lc_time_names system variable (see\nhttp://dev.mysql.com/doc/refman/5.5/en/locale-support.html). If no\nlocale is specified, the default is \'en_US\'.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT FORMAT(12332.123456, 4);\n -> \'12,332.1235\'\nmysql> SELECT FORMAT(12332.1,4);\n -> \'12,332.1000\'\nmysql> SELECT FORMAT(12332.2,0);\n -> \'12,332\'\nmysql> SELECT FORMAT(12332.2,2,\'de_DE\');\n -> \'12.332,20\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(142,'BIT_LENGTH',38,'Syntax:\nBIT_LENGTH(str)\n\nReturns the length of the string str in bits.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT BIT_LENGTH(\'text\');\n -> 32\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(143,'EXTERIORRING',2,'ExteriorRing(poly)\n\nReturns the exterior ring of the Polygon value poly as a LineString.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT AsText(ExteriorRing(GeomFromText(@poly)));\n+-------------------------------------------+\n| AsText(ExteriorRing(GeomFromText(@poly))) |\n+-------------------------------------------+\n| LINESTRING(0 0,0 3,3 3,3 0,0 0) |\n+-------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-polygon-property-functions.html'),(144,'GEOMFROMWKB',33,'GeomFromWKB(wkb[,srid]), GeometryFromWKB(wkb[,srid])\n\nConstructs a geometry value of any type using its WKB representation\nand SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html'),(145,'SHOW SLAVE HOSTS',27,'Syntax:\nSHOW SLAVE HOSTS\n\nDisplays a list of replication slaves currently registered with the\nmaster. (Before MySQL 5.5.3, only slaves started with the\n--report-host=host_name option are visible in this list.)\n\nSHOW SLAVE HOSTS should be executed on a server that acts as a\nreplication master. The statement displays information about servers\nthat are or have been connected as replication slaves, with each row of\nthe result corresponding to one slave server, as shown here:\n\nmysql> SHOW SLAVE HOSTS;\n+------------+-----------+------+-----------+\n| Server_id | Host | Port | Master_id |\n+------------+-----------+------+-----------+\n| 192168010 | iconnect2 | 3306 | 192168011 |\n| 1921680101 | athena | 3306 | 192168011 |\n+------------+-----------+------+-----------+\n\no Server_id: The unique server ID of the slave server, as configured in\n the slave server\'s option file, or on the command line with\n --server-id=value.\n\no Host: The host name of the slave server as specified on the slave\n with the --report-host option. This can differ from the machine name\n as configured in the operating system.\n\no User: The slave server user name as, specified on the slave with the\n --report-user option. Statement output includes this column only if\n the master server is started with the --show-slave-auth-info option.\n\no Password: The slave server password as, specified on the slave with\n the --report-password option. Statement output includes this column\n only if the master server is started with the --show-slave-auth-info\n option.\n\no Port: The port on the master to which the slave server is listening,\n as specified on the slave with the --report-port option.\n\n In MySQL 5.5.23 and later, a zero in this column means that the slave\n port (--report-port) was not set. Prior to MySQL 5.5.23, 3306 was\n used as the default in such cases (Bug #13333431).\n\no Master_id: The unique server ID of the master server that the slave\n server is replicating from. This is the server ID of the server on\n which SHOW SLAVE HOSTS is executed, so this same value is listed for\n each row in the result.\n\nSome MySQL versions report another variable, Rpl_recovery_rank. This\nvariable was never used, and was removed in MySQL 5.5.3. (Bug #13963)\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-slave-hosts.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-slave-hosts.html'),(146,'START TRANSACTION',8,'Syntax:\nSTART TRANSACTION [WITH CONSISTENT SNAPSHOT]\nBEGIN [WORK]\nCOMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]\nSET autocommit = {0 | 1}\n\nThese statements provide control over use of transactions:\n\no START TRANSACTION or BEGIN start a new transaction.\n\no COMMIT commits the current transaction, making its changes permanent.\n\no ROLLBACK rolls back the current transaction, canceling its changes.\n\no SET autocommit disables or enables the default autocommit mode for\n the current session.\n\nBy default, MySQL runs with autocommit mode enabled. This means that as\nsoon as you execute a statement that updates (modifies) a table, MySQL\nstores the update on disk to make it permanent. The change cannot be\nrolled back.\n\nTo disable autocommit mode implicitly for a single series of\nstatements, use the START TRANSACTION statement:\n\nSTART TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nCOMMIT;\n\nWith START TRANSACTION, autocommit remains disabled until you end the\ntransaction with COMMIT or ROLLBACK. The autocommit mode then reverts\nto its previous state.\n\nYou can also begin a transaction like this:\n\nSTART TRANSACTION WITH CONSISTENT SNAPSHOT;\n\nThe WITH CONSISTENT SNAPSHOT option starts a consistent read for\nstorage engines that are capable of it. This applies only to InnoDB.\nThe effect is the same as issuing a START TRANSACTION followed by a\nSELECT from any InnoDB table. See\nhttp://dev.mysql.com/doc/refman/5.5/en/innodb-consistent-read.html. The\nWITH CONSISTENT SNAPSHOT option does not change the current transaction\nisolation level, so it provides a consistent snapshot only if the\ncurrent isolation level is one that permits a consistent read. The only\nisolation level that permits a consistent read is REPEATABLE READ. For\nall other isolation levels, the WITH CONSISTENT SNAPSHOT clause is\nignored. As of MySQL 5.5.34, a warning is generated when the WITH\nCONSISTENT SNAPSHOT is ignored.\n\n*Important*: Many APIs used for writing MySQL client applications (such\nas JDBC) provide their own methods for starting transactions that can\n(and sometimes should) be used instead of sending a START TRANSACTION\nstatement from the client. See\nhttp://dev.mysql.com/doc/refman/5.5/en/connectors-apis.html, or the\ndocumentation for your API, for more information.\n\nTo disable autocommit mode explicitly, use the following statement:\n\nSET autocommit=0;\n\nAfter disabling autocommit mode by setting the autocommit variable to\nzero, changes to transaction-safe tables (such as those for InnoDB or\nNDBCLUSTER) are not made permanent immediately. You must use COMMIT to\nstore your changes to disk or ROLLBACK to ignore the changes.\n\nautocommit is a session variable and must be set for each session. To\ndisable autocommit mode for each new connection, see the description of\nthe autocommit system variable at\nhttp://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html.\n\nBEGIN and BEGIN WORK are supported as aliases of START TRANSACTION for\ninitiating a transaction. START TRANSACTION is standard SQL syntax and\nis the recommended way to start an ad-hoc transaction.\n\nThe BEGIN statement differs from the use of the BEGIN keyword that\nstarts a BEGIN ... END compound statement. The latter does not begin a\ntransaction. See [HELP BEGIN END].\n\n*Note*: Within all stored programs (stored procedures and functions,\ntriggers, and events), the parser treats BEGIN [WORK] as the beginning\nof a BEGIN ... END block. Begin a transaction in this context with\nSTART TRANSACTION instead.\n\nThe optional WORK keyword is supported for COMMIT and ROLLBACK, as are\nthe CHAIN and RELEASE clauses. CHAIN and RELEASE can be used for\nadditional control over transaction completion. The value of the\ncompletion_type system variable determines the default completion\nbehavior. See\nhttp://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html.\n\nThe AND CHAIN clause causes a new transaction to begin as soon as the\ncurrent one ends, and the new transaction has the same isolation level\nas the just-terminated transaction. The RELEASE clause causes the\nserver to disconnect the current client session after terminating the\ncurrent transaction. Including the NO keyword suppresses CHAIN or\nRELEASE completion, which can be useful if the completion_type system\nvariable is set to cause chaining or release completion by default.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/commit.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/commit.html'),(147,'BETWEEN AND',20,'Syntax:\nexpr BETWEEN min AND max\n\nIf expr is greater than or equal to min and expr is less than or equal\nto max, BETWEEN returns 1, otherwise it returns 0. This is equivalent\nto the expression (min <= expr AND expr <= max) if all the arguments\nare of the same type. Otherwise type conversion takes place according\nto the rules described in\nhttp://dev.mysql.com/doc/refman/5.5/en/type-conversion.html, but\napplied to all the three arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT 2 BETWEEN 1 AND 3, 2 BETWEEN 3 and 1;\n -> 1, 0\nmysql> SELECT 1 BETWEEN 2 AND 3;\n -> 0\nmysql> SELECT \'b\' BETWEEN \'a\' AND \'c\';\n -> 1\nmysql> SELECT 2 BETWEEN 2 AND \'3\';\n -> 1\nmysql> SELECT 2 BETWEEN 2 AND \'x-3\';\n -> 0\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(148,'MULTIPOLYGON',25,'MultiPolygon(poly1,poly2,...)\n\nConstructs a MultiPolygon value from a set of Polygon or WKB Polygon\narguments.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html'),(149,'TIME_FORMAT',32,'Syntax:\nTIME_FORMAT(time,format)\n\nThis is used like the DATE_FORMAT() function, but the format string may\ncontain format specifiers only for hours, minutes, seconds, and\nmicroseconds. Other specifiers produce a NULL value or 0.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_FORMAT(\'100:00:00\', \'%H %k %h %I %l\');\n -> \'100 100 04 04 4\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(150,'LEFT',38,'Syntax:\nLEFT(str,len)\n\nReturns the leftmost len characters from the string str, or NULL if any\nargument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT LEFT(\'foobarbar\', 5);\n -> \'fooba\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(151,'FLUSH QUERY CACHE',27,'You can defragment the query cache to better utilize its memory with\nthe FLUSH QUERY CACHE statement. The statement does not remove any\nqueries from the cache.\n\nThe RESET QUERY CACHE statement removes all query results from the\nquery cache. The FLUSH TABLES statement also does this.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/query-cache-status-and-maintenance.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/query-cache-status-and-maintenance.html'),(152,'SET DATA TYPE',23,'SET(\'value1\',\'value2\',...) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA set. A string object that can have zero or more values, each of which\nmust be chosen from the list of values \'value1\', \'value2\', ... SET\nvalues are represented internally as integers.\n\nA SET column can have a maximum of 64 distinct members. A table can\nhave no more than 255 unique element list definitions among its ENUM\nand SET columns considered as a group. For more information on this\nlimit, see http://dev.mysql.com/doc/refman/5.5/en/limits-frm-file.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(153,'RAND',3,'Syntax:\nRAND(), RAND(N)\n\nReturns a random floating-point value v in the range 0 <= v < 1.0. If a\nconstant integer argument N is specified, it is used as the seed value,\nwhich produces a repeatable sequence of column values. In the following\nexample, note that the sequences of values produced by RAND(3) is the\nsame both places where it occurs.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> CREATE TABLE t (i INT);\nQuery OK, 0 rows affected (0.42 sec)\n\nmysql> INSERT INTO t VALUES(1),(2),(3);\nQuery OK, 3 rows affected (0.00 sec)\nRecords: 3 Duplicates: 0 Warnings: 0\n\nmysql> SELECT i, RAND() FROM t;\n+------+------------------+\n| i | RAND() |\n+------+------------------+\n| 1 | 0.61914388706828 |\n| 2 | 0.93845168309142 |\n| 3 | 0.83482678498591 |\n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND(3) FROM t;\n+------+------------------+\n| i | RAND(3) |\n+------+------------------+\n| 1 | 0.90576975597606 |\n| 2 | 0.37307905813035 |\n| 3 | 0.14808605345719 |\n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND() FROM t;\n+------+------------------+\n| i | RAND() |\n+------+------------------+\n| 1 | 0.35877890638893 |\n| 2 | 0.28941420772058 |\n| 3 | 0.37073435016976 |\n+------+------------------+\n3 rows in set (0.00 sec)\n\nmysql> SELECT i, RAND(3) FROM t;\n+------+------------------+\n| i | RAND(3) |\n+------+------------------+\n| 1 | 0.90576975597606 |\n| 2 | 0.37307905813035 |\n| 3 | 0.14808605345719 |\n+------+------------------+\n3 rows in set (0.01 sec)\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(154,'RPAD',38,'Syntax:\nRPAD(str,len,padstr)\n\nReturns the string str, right-padded with the string padstr to a length\nof len characters. If str is longer than len, the return value is\nshortened to len characters.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT RPAD(\'hi\',5,\'?\');\n -> \'hi???\'\nmysql> SELECT RPAD(\'hi\',1,\'?\');\n -> \'h\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(155,'CREATE DATABASE',40,'Syntax:\nCREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name\n [create_specification] ...\n\ncreate_specification:\n [DEFAULT] CHARACTER SET [=] charset_name\n | [DEFAULT] COLLATE [=] collation_name\n\nCREATE DATABASE creates a database with the given name. To use this\nstatement, you need the CREATE privilege for the database. CREATE\nSCHEMA is a synonym for CREATE DATABASE.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-database.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/create-database.html'),(156,'DEC',23,'DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED]\n[ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]\n\nThese types are synonyms for DECIMAL. The FIXED synonym is available\nfor compatibility with other database systems.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(157,'VAR_POP',16,'Syntax:\nVAR_POP(expr)\n\nReturns the population standard variance of expr. It considers rows as\nthe whole population, not as a sample, so it has the number of rows as\nthe denominator. You can also use VARIANCE(), which is equivalent but\nis not standard SQL.\n\nVAR_POP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(158,'ELT',38,'Syntax:\nELT(N,str1,str2,str3,...)\n\nELT() returns the Nth element of the list of strings: str1 if N = 1,\nstr2 if N = 2, and so on. Returns NULL if N is less than 1 or greater\nthan the number of arguments. ELT() is the complement of FIELD().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT ELT(1, \'ej\', \'Heja\', \'hej\', \'foo\');\n -> \'ej\'\nmysql> SELECT ELT(4, \'ej\', \'Heja\', \'hej\', \'foo\');\n -> \'foo\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(159,'ALTER VIEW',40,'Syntax:\nALTER\n [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]\n [DEFINER = { user | CURRENT_USER }]\n [SQL SECURITY { DEFINER | INVOKER }]\n VIEW view_name [(column_list)]\n AS select_statement\n [WITH [CASCADED | LOCAL] CHECK OPTION]\n\nThis statement changes the definition of a view, which must exist. The\nsyntax is similar to that for CREATE VIEW and the effect is the same as\nfor CREATE OR REPLACE VIEW. See [HELP CREATE VIEW]. This statement\nrequires the CREATE VIEW and DROP privileges for the view, and some\nprivilege for each column referred to in the SELECT statement. ALTER\nVIEW is permitted only to the definer or users with the SUPER\nprivilege.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/alter-view.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/alter-view.html'),(160,'SHOW DATABASES',27,'Syntax:\nSHOW {DATABASES | SCHEMAS}\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW DATABASES lists the databases on the MySQL server host. SHOW\nSCHEMAS is a synonym for SHOW DATABASES. The LIKE clause, if present,\nindicates which database names to match. The WHERE clause can be given\nto select rows using more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html.\n\nYou see only those databases for which you have some kind of privilege,\nunless you have the global SHOW DATABASES privilege. You can also get\nthis list using the mysqlshow command.\n\nIf the server was started with the --skip-show-database option, you\ncannot use this statement at all unless you have the SHOW DATABASES\nprivilege.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-databases.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-databases.html'),(161,'~',19,'Syntax:\n~\n\nInvert all bits.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html\n\n','mysql> SELECT 5 & ~1;\n -> 4\n','http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html'),(162,'TEXT',23,'TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 65,535 (216 − 1) characters.\nThe effective maximum length is less if the value contains multibyte\ncharacters. Each TEXT value is stored using a 2-byte length prefix that\nindicates the number of bytes in the value.\n\nAn optional length M can be given for this type. If this is done, MySQL\ncreates the column as the smallest TEXT type large enough to hold\nvalues M characters long.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(163,'CONCAT_WS',38,'Syntax:\nCONCAT_WS(separator,str1,str2,...)\n\nCONCAT_WS() stands for Concatenate With Separator and is a special form\nof CONCAT(). The first argument is the separator for the rest of the\narguments. The separator is added between the strings to be\nconcatenated. The separator can be a string, as can the rest of the\narguments. If the separator is NULL, the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT CONCAT_WS(\',\',\'First name\',\'Second name\',\'Last Name\');\n -> \'First name,Second name,Last Name\'\nmysql> SELECT CONCAT_WS(\',\',\'First name\',NULL,\'Last Name\');\n -> \'First name,Last Name\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(164,'ROW_COUNT',17,'Syntax:\nROW_COUNT()\n\nBefore MySQL 5.5.5, ROW_COUNT() returns the number of rows changed,\ndeleted, or inserted by the last statement if it was an UPDATE, DELETE,\nor INSERT. For other statements, the value may not be meaningful.\n\nAs of MySQL 5.5.5, ROW_COUNT() returns a value as follows:\n\no DDL statements: 0. This applies to statements such as CREATE TABLE or\n DROP TABLE.\n\no DML statements other than SELECT: The number of affected rows. This\n applies to statements such as UPDATE, INSERT, or DELETE (as before),\n but now also to statements such as ALTER TABLE and LOAD DATA INFILE.\n\no SELECT: -1 if the statement returns a result set, or the number of\n rows \"affected\" if it does not. For example, for SELECT * FROM t1,\n ROW_COUNT() returns -1. For SELECT * FROM t1 INTO OUTFILE\n \'file_name\', ROW_COUNT() returns the number of rows written to the\n file.\n\no SIGNAL statements: 0.\n\nFor UPDATE statements, the affected-rows value by default is the number\nof rows actually changed. If you specify the CLIENT_FOUND_ROWS flag to\nmysql_real_connect() when connecting to mysqld, the affected-rows value\nis the number of rows \"found\"; that is, matched by the WHERE clause.\n\nFor REPLACE statements, the affected-rows value is 2 if the new row\nreplaced an old row, because in this case, one row was inserted after\nthe duplicate was deleted.\n\nFor INSERT ... ON DUPLICATE KEY UPDATE statements, the affected-rows\nvalue per row is 1 if the row is inserted as a new row, 2 if an\nexisting row is updated, and 0 if an existing row is set to its current\nvalues. If you specify the CLIENT_FOUND_ROWS flag, the affected-rows\nvalue is 1 (not 0) if an existing row is set to its current values.\n\nThe ROW_COUNT() value is similar to the value from the\nmysql_affected_rows() C API function and the row count that the mysql\nclient displays following statement execution.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','mysql> INSERT INTO t VALUES(1),(2),(3);\nQuery OK, 3 rows affected (0.00 sec)\nRecords: 3 Duplicates: 0 Warnings: 0\n\nmysql> SELECT ROW_COUNT();\n+-------------+\n| ROW_COUNT() |\n+-------------+\n| 3 |\n+-------------+\n1 row in set (0.00 sec)\n\nmysql> DELETE FROM t WHERE i IN(1,2);\nQuery OK, 2 rows affected (0.00 sec)\n\nmysql> SELECT ROW_COUNT();\n+-------------+\n| ROW_COUNT() |\n+-------------+\n| 2 |\n+-------------+\n1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(165,'ASIN',3,'Syntax:\nASIN(X)\n\nReturns the arc sine of X, that is, the value whose sine is X. Returns\nNULL if X is not in the range -1 to 1.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT ASIN(0.2);\n -> 0.20135792079033\nmysql> SELECT ASIN(\'foo\');\n\n+-------------+\n| ASIN(\'foo\') |\n+-------------+\n| 0 |\n+-------------+\n1 row in set, 1 warning (0.00 sec)\n\nmysql> SHOW WARNINGS;\n+---------+------+-----------------------------------------+\n| Level | Code | Message |\n+---------+------+-----------------------------------------+\n| Warning | 1292 | Truncated incorrect DOUBLE value: \'foo\' |\n+---------+------+-----------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(166,'SIGN',3,'Syntax:\nSIGN(X)\n\nReturns the sign of the argument as -1, 0, or 1, depending on whether X\nis negative, zero, or positive.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT SIGN(-32);\n -> -1\nmysql> SELECT SIGN(0);\n -> 0\nmysql> SELECT SIGN(234);\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(167,'SEC_TO_TIME',32,'Syntax:\nSEC_TO_TIME(seconds)\n\nReturns the seconds argument, converted to hours, minutes, and seconds,\nas a TIME value. The range of the result is constrained to that of the\nTIME data type. A warning occurs if the argument corresponds to a value\noutside that range.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT SEC_TO_TIME(2378);\n -> \'00:39:38\'\nmysql> SELECT SEC_TO_TIME(2378) + 0;\n -> 3938\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(168,'FLOAT',23,'FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]\n\nA small (single-precision) floating-point number. Permissible values\nare -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E-38 to\n3.402823466E+38. These are the theoretical limits, based on the IEEE\nstandard. The actual range might be slightly smaller depending on your\nhardware or operating system.\n\nM is the total number of digits and D is the number of digits following\nthe decimal point. If M and D are omitted, values are stored to the\nlimits permitted by the hardware. A single-precision floating-point\nnumber is accurate to approximately 7 decimal places.\n\nUNSIGNED, if specified, disallows negative values.\n\nUsing FLOAT might give you some unexpected problems because all\ncalculations in MySQL are done with double precision. See\nhttp://dev.mysql.com/doc/refman/5.5/en/no-matching-rows.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(169,'LOCATE',38,'Syntax:\nLOCATE(substr,str), LOCATE(substr,str,pos)\n\nThe first syntax returns the position of the first occurrence of\nsubstring substr in string str. The second syntax returns the position\nof the first occurrence of substring substr in string str, starting at\nposition pos. Returns 0 if substr is not in str.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT LOCATE(\'bar\', \'foobarbar\');\n -> 4\nmysql> SELECT LOCATE(\'xbar\', \'foobar\');\n -> 0\nmysql> SELECT LOCATE(\'bar\', \'foobarbar\', 5);\n -> 7\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(170,'SHOW EVENTS',27,'Syntax:\nSHOW EVENTS [{FROM | IN} schema_name]\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement displays information about Event Manager events. It\nrequires the EVENT privilege for the database from which the events are\nto be shown.\n\nIn its simplest form, SHOW EVENTS lists all of the events in the\ncurrent schema:\n\nmysql> SELECT CURRENT_USER(), SCHEMA();\n+----------------+----------+\n| CURRENT_USER() | SCHEMA() |\n+----------------+----------+\n| jon@ghidora | myschema |\n+----------------+----------+\n1 row in set (0.00 sec)\n\nmysql> SHOW EVENTS\\G\n*************************** 1. row ***************************\n Db: myschema\n Name: e_daily\n Definer: jon@ghidora\n Time zone: SYSTEM\n Type: RECURRING\n Execute at: NULL\n Interval value: 10\n Interval field: SECOND\n Starts: 2006-02-09 10:41:23\n Ends: NULL\n Status: ENABLED\n Originator: 0\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n\nTo see events for a specific schema, use the FROM clause. For example,\nto see events for the test schema, use the following statement:\n\nSHOW EVENTS FROM test;\n\nThe LIKE clause, if present, indicates which event names to match. The\nWHERE clause can be given to select rows using more general conditions,\nas discussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-events.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-events.html'),(171,'CHARSET',17,'Syntax:\nCHARSET(str)\n\nReturns the character set of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','mysql> SELECT CHARSET(\'abc\');\n -> \'latin1\'\nmysql> SELECT CHARSET(CONVERT(\'abc\' USING utf8));\n -> \'utf8\'\nmysql> SELECT CHARSET(USER());\n -> \'utf8\'\n','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(172,'SUBDATE',32,'Syntax:\nSUBDATE(date,INTERVAL expr unit), SUBDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, SUBDATE()\nis a synonym for DATE_SUB(). For information on the INTERVAL unit\nargument, see the discussion for DATE_ADD().\n\nmysql> SELECT DATE_SUB(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2007-12-02\'\nmysql> SELECT SUBDATE(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2007-12-02\'\n\nThe second form enables the use of an integer value for days. In such\ncases, it is interpreted as the number of days to be subtracted from\nthe date or datetime expression expr.\n\nmysql> SELECT SUBDATE(\'2008-01-02 12:00:00\', 31);\n -> \'2007-12-02 12:00:00\'\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(173,'DAYOFYEAR',32,'Syntax:\nDAYOFYEAR(date)\n\nReturns the day of the year for date, in the range 1 to 366.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFYEAR(\'2007-02-03\');\n -> 34\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(174,'%',3,'Syntax:\nN % M, N MOD M\n\nModulo operation. Returns the remainder of N divided by M. For more\ninformation, see the description for the MOD() function in\nhttp://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html'),(175,'LONGTEXT',23,'LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 4,294,967,295 or 4GB (232 − 1)\ncharacters. The effective maximum length is less if the value contains\nmultibyte characters. The effective maximum length of LONGTEXT columns\nalso depends on the configured maximum packet size in the client/server\nprotocol and available memory. Each LONGTEXT value is stored using a\n4-byte length prefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(176,'KILL',27,'Syntax:\nKILL [CONNECTION | QUERY] processlist_id\n\nEach connection to mysqld runs in a separate thread. You can kill a\nthread with the KILL processlist_id statement.\n\nThread processlist identifiers can be determined from the ID column of\nthe INFORMATION_SCHEMA.PROCESSLIST table, the Id column of SHOW\nPROCESSLIST output, and the PROCESSLIST_ID column of the Performance\nSchema threads table. The value for the current thread is returned by\nthe CONNECTION_ID() function.\n\nKILL permits an optional CONNECTION or QUERY modifier:\n\no KILL CONNECTION is the same as KILL with no modifier: It terminates\n the connection associated with the given processlist_id, after\n terminating any statement the connection is executing.\n\no KILL QUERY terminates the statement the connection is currently\n executing, but leaves the connection itself intact.\n\nIf you have the PROCESS privilege, you can see all threads. If you have\nthe SUPER privilege, you can kill all threads and statements.\nOtherwise, you can see and kill only your own threads and statements.\n\nYou can also use the mysqladmin processlist and mysqladmin kill\ncommands to examine and kill threads.\n\n*Note*: You cannot use KILL with the Embedded MySQL Server library\nbecause the embedded server merely runs inside the threads of the host\napplication. It does not create any connection threads of its own.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/kill.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/kill.html'),(177,'DISJOINT',31,'Disjoint(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially disjoint from (does\nnot intersect) g2.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mbr.html'),(178,'ASTEXT',33,'AsText(g), AsWKT(g)\n\nConverts a value in internal geometry format to its WKT representation\nand returns the string result.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-format-conversion-functions.html\n\n','mysql> SET @g = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(GeomFromText(@g));\n+--------------------------+\n| AsText(GeomFromText(@g)) |\n+--------------------------+\n| LINESTRING(1 1,2 2,3 3) |\n+--------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-format-conversion-functions.html'),(179,'LPAD',38,'Syntax:\nLPAD(str,len,padstr)\n\nReturns the string str, left-padded with the string padstr to a length\nof len characters. If str is longer than len, the return value is\nshortened to len characters.\n\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT LPAD(\'hi\',4,\'??\');\n -> \'??hi\'\nmysql> SELECT LPAD(\'hi\',1,\'??\');\n -> \'h\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(180,'DECLARE CONDITION',24,'Syntax:\nDECLARE condition_name CONDITION FOR condition_value\n\ncondition_value:\n mysql_error_code\n | SQLSTATE [VALUE] sqlstate_value\n\nThe DECLARE ... CONDITION statement declares a named error condition,\nassociating a name with a condition that needs specific handling. The\nname can be referred to in a subsequent DECLARE ... HANDLER statement\n(see [HELP DECLARE HANDLER]).\n\nCondition declarations must appear before cursor or handler\ndeclarations.\n\nThe condition_value for DECLARE ... CONDITION indicates the specific\ncondition or class of conditions to associate with the condition name.\nIt can take the following forms:\n\no mysql_error_code: An integer literal indicating a MySQL error code.\n\n Do not use MySQL error code 0 because that indicates success rather\n than an error condition. For a list of MySQL error codes, see\n http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html.\n\no SQLSTATE [VALUE] sqlstate_value: A 5-character string literal\n indicating an SQLSTATE value.\n\n Do not use SQLSTATE values that begin with \'00\' because those\n indicate success rather than an error condition. For a list of\n SQLSTATE values, see\n http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html.\n\nCondition names referred to in SIGNAL or use RESIGNAL statements must\nbe associated with SQLSTATE values, not MySQL error codes.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/declare-condition.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/declare-condition.html'),(181,'OVERLAPS',31,'Overlaps(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially overlaps g2. The term\nspatially overlaps is used if two geometries intersect and their\nintersection results in a geometry of the same dimension but not equal\nto either of the given geometries.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mbr.html'),(182,'SET GLOBAL SQL_SLAVE_SKIP_COUNTER',8,'Syntax:\nSET GLOBAL sql_slave_skip_counter = N\n\nThis statement skips the next N events from the master. This is useful\nfor recovering from replication stops caused by a statement.\n\nThis statement is valid only when the slave threads are not running.\nOtherwise, it produces an error.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/set-global-sql-slave-skip-counter.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/set-global-sql-slave-skip-counter.html'),(183,'NUMGEOMETRIES',26,'NumGeometries(gc)\n\nReturns the number of geometries in the GeometryCollection value gc.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-geometrycollection-property-functions.html\n\n','mysql> SET @gc = \'GeometryCollection(Point(1 1),LineString(2 2, 3 3))\';\nmysql> SELECT NumGeometries(GeomFromText(@gc));\n+----------------------------------+\n| NumGeometries(GeomFromText(@gc)) |\n+----------------------------------+\n| 2 |\n+----------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-geometrycollection-property-functions.html'),(184,'MONTHNAME',32,'Syntax:\nMONTHNAME(date)\n\nReturns the full name of the month for date. The language used for the\nname is controlled by the value of the lc_time_names system variable\n(http://dev.mysql.com/doc/refman/5.5/en/locale-support.html).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT MONTHNAME(\'2008-02-03\');\n -> \'February\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(185,'CHANGE MASTER TO',8,'Syntax:\nCHANGE MASTER TO option [, option] ...\n\noption:\n MASTER_BIND = \'interface_name\'\n | MASTER_HOST = \'host_name\'\n | MASTER_USER = \'user_name\'\n | MASTER_PASSWORD = \'password\'\n | MASTER_PORT = port_num\n | MASTER_CONNECT_RETRY = interval\n | MASTER_HEARTBEAT_PERIOD = interval\n | MASTER_LOG_FILE = \'master_log_name\'\n | MASTER_LOG_POS = master_log_pos\n | RELAY_LOG_FILE = \'relay_log_name\'\n | RELAY_LOG_POS = relay_log_pos\n | MASTER_SSL = {0|1}\n | MASTER_SSL_CA = \'ca_file_name\'\n | MASTER_SSL_CAPATH = \'ca_directory_name\'\n | MASTER_SSL_CERT = \'cert_file_name\'\n | MASTER_SSL_KEY = \'key_file_name\'\n | MASTER_SSL_CIPHER = \'cipher_list\'\n | MASTER_SSL_VERIFY_SERVER_CERT = {0|1}\n | IGNORE_SERVER_IDS = (server_id_list)\n\nserver_id_list:\n [server_id [, server_id] ... ]\n\nCHANGE MASTER TO changes the parameters that the slave server uses for\nconnecting to the master server, for reading the master binary log, and\nreading the slave relay log. It also updates the contents of the\nmaster.info and relay-log.info files. To use CHANGE MASTER TO, the\nslave replication threads must be stopped (use STOP SLAVE if\nnecessary).\n\nOptions not specified retain their value, except as indicated in the\nfollowing discussion. Thus, in most cases, there is no need to specify\noptions that do not change. For example, if the password to connect to\nyour MySQL master has changed, you just need to issue these statements\nto tell the slave about the new password:\n\nSTOP SLAVE; -- if replication was running\nCHANGE MASTER TO MASTER_PASSWORD=\'new3cret\';\nSTART SLAVE; -- if you want to restart replication\n\nMASTER_HOST, MASTER_USER, MASTER_PASSWORD, and MASTER_PORT provide\ninformation to the slave about how to connect to its master:\n\no MASTER_HOST and MASTER_PORT are the host name (or IP address) of the\n master host and its TCP/IP port.\n\n *Note*: Replication cannot use Unix socket files. You must be able to\n connect to the master MySQL server using TCP/IP.\n\n If you specify the MASTER_HOST or MASTER_PORT option, the slave\n assumes that the master server is different from before (even if the\n option value is the same as its current value.) In this case, the old\n values for the master binary log file name and position are\n considered no longer applicable, so if you do not specify\n MASTER_LOG_FILE and MASTER_LOG_POS in the statement,\n MASTER_LOG_FILE=\'\' and MASTER_LOG_POS=4 are silently appended to it.\n\n Setting MASTER_HOST=\'\' (that is, setting its value explicitly to an\n empty string) is not the same as not setting MASTER_HOST at all.\n Beginning with MySQL 5.5, trying to set MASTER_HOST to an empty\n string fails with an error. Previously, setting MASTER_HOST to an\n empty string caused START SLAVE subsequently to fail. (Bug #28796)\n\no MASTER_USER and MASTER_PASSWORD are the user name and password of the\n account to use for connecting to the master.\n\n In MySQL 5.5.20 and later, MASTER_USER cannot be made empty; setting\n MASTER_USER = \'\' or leaving it unset when setting a value for\n MASTER_PASSWORD causes an error (Bug #13427949).\n\n The password used for a MySQL Replication slave account in a CHANGE\n MASTER TO statement is limited to 32 characters in length; if the\n password is longer, the statement succeeds, but any excess characters\n are silently truncated. This is an issue specific to MySQL\n Replication, which is fixed in MySQL 5.7. (Bug #11752299, Bug #43439)\n\n The text of a running CHANGE MASTER TO statement, including values\n for MASTER_USER and MASTER_PASSWORD, can be seen in the output of a\n concurrent SHOW PROCESSLIST statement.\n\nThe MASTER_SSL_xxx options provide information about using SSL for the\nconnection. They correspond to the --ssl-xxx options described in\nhttp://dev.mysql.com/doc/refman/5.5/en/secure-connection-options.html,\nand\nhttp://dev.mysql.com/doc/refman/5.5/en/replication-solutions-secure-con\nnections.html. These options can be changed even on slaves that are\ncompiled without SSL support. They are saved to the master.info file,\nbut are ignored if the slave does not have SSL support enabled.\n\nMASTER_CONNECT_RETRY specifies how many seconds to wait between connect\nretries. The default is 60. The number of reconnection attempts is\nlimited by the --master-retry-count server option; for more\ninformation, see\nhttp://dev.mysql.com/doc/refman/5.5/en/replication-options.html.\n\nThe MASTER_BIND option is available in MySQL Cluster NDB 7.2 and later,\nbut is not supported in mainline MySQL 5.5.\n\nMASTER_BIND is for use on replication slaves having multiple network\ninterfaces, and determines which of the slave\'s network interfaces is\nchosen for connecting to the master.\n\nMASTER_HEARTBEAT_PERIOD sets the interval in seconds between\nreplication heartbeats. Whenever the master\'s binary log is updated\nwith an event, the waiting period for the next heartbeat is reset.\ninterval is a decimal value having the range 0 to 4294967 seconds and a\nresolution in milliseconds; the smallest nonzero value is 0.001.\nHeartbeats are sent by the master only if there are no unsent events in\nthe binary log file for a period longer than interval.\n\nSetting interval to 0 disables heartbeats altogether. The default value\nfor interval is equal to the value of slave_net_timeout divided by 2.\n\nSetting @@global.slave_net_timeout to a value less than that of the\ncurrent heartbeat interval results in a warning being issued. The\neffect of issuing RESET SLAVE on the heartbeat interval is to reset it\nto the default value.\n\nMASTER_LOG_FILE and MASTER_LOG_POS are the coordinates at which the\nslave I/O thread should begin reading from the master the next time the\nthread starts. RELAY_LOG_FILE and RELAY_LOG_POS are the coordinates at\nwhich the slave SQL thread should begin reading from the relay log the\nnext time the thread starts. If you specify either of MASTER_LOG_FILE\nor MASTER_LOG_POS, you cannot specify RELAY_LOG_FILE or RELAY_LOG_POS.\nIf neither of MASTER_LOG_FILE or MASTER_LOG_POS is specified, the slave\nuses the last coordinates of the slave SQL thread before CHANGE MASTER\nTO was issued. This ensures that there is no discontinuity in\nreplication, even if the slave SQL thread was late compared to the\nslave I/O thread, when you merely want to change, say, the password to\nuse.\n\nCHANGE MASTER TO deletes all relay log files and starts a new one,\nunless you specify RELAY_LOG_FILE or RELAY_LOG_POS. In that case, relay\nlog files are kept; the relay_log_purge global variable is set silently\nto 0.\n\nPrior to MySQL 5.5, RELAY_LOG_FILE required an absolute path. In MySQL\n5.5, the path can be relative, in which case the path is assumed to be\nrelative to the slave\'s data directory. (Bug #12190)\n\nIGNORE_SERVER_IDS was added in MySQL 5.5. This option takes a\ncomma-separated list of 0 or more server IDs. Events originating from\nthe corresponding servers are ignored, with the exception of log\nrotation and deletion events, which are still recorded in the relay\nlog.\n\nIn circular replication, the originating server normally acts as the\nterminator of its own events, so that they are not applied more than\nonce. Thus, this option is useful in circular replication when one of\nthe servers in the circle is removed. Suppose that you have a circular\nreplication setup with 4 servers, having server IDs 1, 2, 3, and 4, and\nserver 3 fails. When bridging the gap by starting replication from\nserver 2 to server 4, you can include IGNORE_SERVER_IDS = (3) in the\nCHANGE MASTER TO statement that you issue on server 4 to tell it to use\nserver 2 as its master instead of server 3. Doing so causes it to\nignore and not to propagate any statements that originated with the\nserver that is no longer in use.\n\nWhen a CHANGE MASTER TO statement is issued without any\nIGNORE_SERVER_IDS option, any existing list is preserved. To clear the\nlist of ignored servers, it is necessary to use the option with an\nempty list:\n\nCHANGE MASTER TO IGNORE_SERVER_IDS = ();\n\nRESET SLAVE ALL has no effect on the server ID list. This issue is\nfixed in MySQL 5.7. (Bug #18816897)\n\nIf IGNORE_SERVER_IDS contains the server\'s own ID and the server was\nstarted with the --replicate-same-server-id option enabled, an error\nresults.\n\nAlso beginning with MySQL 5.5, the master.info file and the output of\nSHOW SLAVE STATUS are extended to provide the list of servers that are\ncurrently ignored. For more information, see\nhttp://dev.mysql.com/doc/refman/5.5/en/slave-logs-status.html, and\n[HELP SHOW SLAVE STATUS].\n\nBeginning with MySQL 5.5.5, invoking CHANGE MASTER TO causes the\nprevious values for MASTER_HOST, MASTER_PORT, MASTER_LOG_FILE, and\nMASTER_LOG_POS to be written to the error log, along with other\ninformation about the slave\'s state prior to execution.\n\nCHANGE MASTER TO is useful for setting up a slave when you have the\nsnapshot of the master and have recorded the master binary log\ncoordinates corresponding to the time of the snapshot. After loading\nthe snapshot into the slave to synchronize it with the master, you can\nrun CHANGE MASTER TO MASTER_LOG_FILE=\'log_name\', MASTER_LOG_POS=log_pos\non the slave to specify the coordinates at which the slave should begin\nreading the master binary log.\n\nThe following example changes the master server the slave uses and\nestablishes the master binary log coordinates from which the slave\nbegins reading. This is used when you want to set up the slave to\nreplicate the master:\n\nCHANGE MASTER TO\n MASTER_HOST=\'master2.mycompany.com\',\n MASTER_USER=\'replication\',\n MASTER_PASSWORD=\'bigs3cret\',\n MASTER_PORT=3306,\n MASTER_LOG_FILE=\'master2-bin.001\',\n MASTER_LOG_POS=4,\n MASTER_CONNECT_RETRY=10;\n\nThe next example shows an operation that is less frequently employed.\nIt is used when the slave has relay log files that you want it to\nexecute again for some reason. To do this, the master need not be\nreachable. You need only use CHANGE MASTER TO and start the SQL thread\n(START SLAVE SQL_THREAD):\n\nCHANGE MASTER TO\n RELAY_LOG_FILE=\'slave-relay-bin.006\',\n RELAY_LOG_POS=4025;\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/change-master-to.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/change-master-to.html'),(186,'DROP DATABASE',40,'Syntax:\nDROP {DATABASE | SCHEMA} [IF EXISTS] db_name\n\nDROP DATABASE drops all tables in the database and deletes the\ndatabase. Be very careful with this statement! To use DROP DATABASE,\nyou need the DROP privilege on the database. DROP SCHEMA is a synonym\nfor DROP DATABASE.\n\n*Important*: When a database is dropped, user privileges on the\ndatabase are not automatically dropped. See [HELP GRANT].\n\nIF EXISTS is used to prevent an error from occurring if the database\ndoes not exist.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-database.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-database.html'),(187,'MBREQUAL',7,'MBREqual(g1,g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangles of\nthe two geometries g1 and g2 are the same.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html'),(188,'TIMESTAMP FUNCTION',32,'Syntax:\nTIMESTAMP(expr), TIMESTAMP(expr1,expr2)\n\nWith a single argument, this function returns the date or datetime\nexpression expr as a datetime value. With two arguments, it adds the\ntime expression expr2 to the date or datetime expression expr1 and\nreturns the result as a datetime value.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMP(\'2003-12-31\');\n -> \'2003-12-31 00:00:00\'\nmysql> SELECT TIMESTAMP(\'2003-12-31 12:00:00\',\'12:00:00\');\n -> \'2004-01-01 00:00:00\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(189,'PROCEDURE ANALYSE',34,'Syntax:\nANALYSE([max_elements[,max_memory]])\n\nANALYSE() examines the result from a query and returns an analysis of\nthe results that suggests optimal data types for each column that may\nhelp reduce table sizes. To obtain this analysis, append PROCEDURE\nANALYSE to the end of a SELECT statement:\n\nSELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])\n\nFor example:\n\nSELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000);\n\nThe results show some statistics for the values returned by the query,\nand propose an optimal data type for the columns. This can be helpful\nfor checking your existing tables, or after importing new data. You may\nneed to try different settings for the arguments so that PROCEDURE\nANALYSE() does not suggest the ENUM data type when it is not\nappropriate.\n\nThe arguments are optional and are used as follows:\n\no max_elements (default 256) is the maximum number of distinct values\n that ANALYSE() notices per column. This is used by ANALYSE() to check\n whether the optimal data type should be of type ENUM; if there are\n more than max_elements distinct values, then ENUM is not a suggested\n type.\n\no max_memory (default 8192) is the maximum amount of memory that\n ANALYSE() should allocate per column while trying to find all\n distinct values.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/procedure-analyse.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/procedure-analyse.html'),(190,'HELP_VERSION',9,'This help information was generated from the MySQL 5.5 Reference Manual\non: 2016-03-01 (revision: 46815)\n\nThis information applies to MySQL 5.5 through 5.5.50.\n','',''),(191,'CHARACTER_LENGTH',38,'Syntax:\nCHARACTER_LENGTH(str)\n\nCHARACTER_LENGTH() is a synonym for CHAR_LENGTH().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(192,'SHOW GRANTS',27,'Syntax:\nSHOW GRANTS [FOR user]\n\nThis statement displays the GRANT statement or statements that must be\nissued to duplicate the privileges that are granted to a MySQL user\naccount. SHOW GRANTS requires the SELECT privilege for the mysql\ndatabase, except to see the privileges for the current user.\n\nFor output that includes an IDENTIFIED BY PASSWORD clause displaying an\naccount password hash value, the SUPER privilege is required to see the\nactual hash value. Otherwise, the value displays as <secret>.\n\nTo name the account, use the same format as for the GRANT statement;\nfor example, \'jeffrey\'@\'localhost\'. If you specify only the user name\npart of the account name, a host name part of \'%\' is used. For\nadditional information about specifying account names, see [HELP\nGRANT].\n\nmysql> SHOW GRANTS FOR \'root\'@\'localhost\';\n+---------------------------------------------------------------------+\n| Grants for root@localhost |\n+---------------------------------------------------------------------+\n| GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'localhost\' WITH GRANT OPTION |\n+---------------------------------------------------------------------+\n\nTo display the privileges granted to the account that you are using to\nconnect to the server, you can use any of the following statements:\n\nSHOW GRANTS;\nSHOW GRANTS FOR CURRENT_USER;\nSHOW GRANTS FOR CURRENT_USER();\n\nIf SHOW GRANTS FOR CURRENT_USER (or any of the equivalent syntaxes) is\nused in DEFINER context, such as within a stored procedure that is\ndefined with SQL SECURITY DEFINER), the grants displayed are those of\nthe definer and not the invoker.\n\nSHOW GRANTS displays only the privileges granted explicitly to the\nnamed account. Other privileges that might be available to the account\nare not displayed. For example, if an anonymous account exists, the\nnamed account might be able to use its privileges, but SHOW GRANTS will\nnot display them.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-grants.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-grants.html'),(193,'SHOW PRIVILEGES',27,'Syntax:\nSHOW PRIVILEGES\n\nSHOW PRIVILEGES shows the list of system privileges that the MySQL\nserver supports. The exact list of privileges depends on the version of\nyour server.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-privileges.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-privileges.html'),(194,'CREATE TABLESPACE',40,'Syntax:\nCREATE TABLESPACE tablespace_name\n ADD DATAFILE \'file_name\'\n USE LOGFILE GROUP logfile_group\n [EXTENT_SIZE [=] extent_size]\n [INITIAL_SIZE [=] initial_size]\n [AUTOEXTEND_SIZE [=] autoextend_size]\n [MAX_SIZE [=] max_size]\n [NODEGROUP [=] nodegroup_id]\n [WAIT]\n [COMMENT [=] comment_text]\n ENGINE [=] engine_name\n\nThis statement is used to create a tablespace, which can contain one or\nmore data files, providing storage space for tables. One data file is\ncreated and added to the tablespace using this statement. Additional\ndata files may be added to the tablespace by using the ALTER TABLESPACE\nstatement (see [HELP ALTER TABLESPACE]). For rules covering the naming\nof tablespaces, see\nhttp://dev.mysql.com/doc/refman/5.5/en/identifiers.html.\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and a log file group with the same name, or a\ntablespace and a data file with the same name.\n\nA log file group of one or more UNDO log files must be assigned to the\ntablespace to be created with the USE LOGFILE GROUP clause.\nlogfile_group must be an existing log file group created with CREATE\nLOGFILE GROUP (see [HELP CREATE LOGFILE GROUP]). Multiple tablespaces\nmay use the same log file group for UNDO logging.\n\nThe EXTENT_SIZE sets the size, in bytes, of the extents used by any\nfiles belonging to the tablespace. The default value is 1M. The minimum\nsize is 32K, and theoretical maximum is 2G, although the practical\nmaximum size depends on a number of factors. In most cases, changing\nthe extent size does not have any measurable effect on performance, and\nthe default value is recommended for all but the most unusual\nsituations.\n\nAn extent is a unit of disk space allocation. One extent is filled with\nas much data as that extent can contain before another extent is used.\nIn theory, up to 65,535 (64K) extents may used per data file; however,\nthe recommended maximum is 32,768 (32K). The recommended maximum size\nfor a single data file is 32G---that is, 32K extents x 1 MB per extent.\nIn addition, once an extent is allocated to a given partition, it\ncannot be used to store data from a different partition; an extent\ncannot store data from more than one partition. This means, for example\nthat a tablespace having a single datafile whose INITIAL_SIZE is 256 MB\nand whose EXTENT_SIZE is 128M has just two extents, and so can be used\nto store data from at most two different disk data table partitions.\n\nYou can see how many extents remain free in a given data file by\nquerying the INFORMATION_SCHEMA.FILES table, and so derive an estimate\nfor how much space remains free in the file. For further discussion and\nexamples, see http://dev.mysql.com/doc/refman/5.5/en/files-table.html.\n\nThe INITIAL_SIZE parameter sets the data file\'s total size in bytes.\nOnce the file has been created, its size cannot be changed; however,\nyou can add more data files to the tablespace using ALTER TABLESPACE\n... ADD DATAFILE. See [HELP ALTER TABLESPACE].\n\nINITIAL_SIZE is optional; its default value is 134217728 (128 MB).\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is\n4294967296 (4 GB). (Bug #29186)\n\nWhen setting EXTENT_SIZE, you may optionally follow the number with a\none-letter abbreviation for an order of magnitude, similar to those\nused in my.cnf. Generally, this is one of the letters M (for megabytes)\nor G (for gigabytes). In MySQL Cluster NDB 7.2.14 and later, these\nabbreviations are also supported when specifying INITIAL_SIZE as well.\n(Bug #13116514, Bug #16104705, Bug #62858)\n\nINITIAL_SIZE, EXTENT_SIZE, and UNDO_BUFFER_SIZE are subject to rounding\nas follows:\n\no EXTENT_SIZE and UNDO_BUFFER_SIZE are each rounded up to the nearest\n whole multiple of 32K.\n\no INITIAL_SIZE is rounded down to the nearest whole multiple of 32K.\n\n For data files, INITIAL_SIZE is subject to further rounding; the\n result just obtained is rounded up to the nearest whole multiple of\n EXTENT_SIZE (after any rounding).\n\nThe rounding just described is done explicitly, and a warning is issued\nby the MySQL Server when any such rounding is performed. The rounded\nvalues are also used by the NDB kernel for calculating\nINFORMATION_SCHEMA.FILES column values and other purposes. However, to\navoid an unexpected result, we suggest that you always use whole\nmultiples of 32K in specifying these options.\n\nAUTOEXTEND_SIZE, MAX_SIZE, NODEGROUP, WAIT, and COMMENT are parsed but\nignored, and so currently have no effect. These options are intended\nfor future expansion.\n\nThe ENGINE parameter determines the storage engine which uses this\ntablespace, with engine_name being the name of the storage engine.\nCurrently, engine_name must be one of the values NDB or NDBCLUSTER.\n\nWhen CREATE TABLESPACE is used with ENGINE = NDB, a tablespace and\nassociated data file are created on each Cluster data node. You can\nverify that the data files were created and obtain information about\nthem by querying the INFORMATION_SCHEMA.FILES table. For example:\n\nmysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA\n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE TABLESPACE_NAME = \'newts\' AND FILE_TYPE = \'DATAFILE\';\n+--------------------+-------------+----------------+\n| LOGFILE_GROUP_NAME | FILE_NAME | EXTRA |\n+--------------------+-------------+----------------+\n| lg_3 | newdata.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata.dat | CLUSTER_NODE=4 |\n+--------------------+-------------+----------------+\n2 rows in set (0.01 sec)\n\n(See http://dev.mysql.com/doc/refman/5.5/en/files-table.html.)\n\nCREATE TABLESPACE is useful only with Disk Data storage for MySQL\nCluster. See\nhttp://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-disk-data.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/create-tablespace.html'),(195,'INSERT FUNCTION',38,'Syntax:\nINSERT(str,pos,len,newstr)\n\nReturns the string str, with the substring beginning at position pos\nand len characters long replaced by the string newstr. Returns the\noriginal string if pos is not within the length of the string. Replaces\nthe rest of the string from position pos if len is not within the\nlength of the rest of the string. Returns NULL if any argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT INSERT(\'Quadratic\', 3, 4, \'What\');\n -> \'QuWhattic\'\nmysql> SELECT INSERT(\'Quadratic\', -1, 4, \'What\');\n -> \'Quadratic\'\nmysql> SELECT INSERT(\'Quadratic\', 3, 100, \'What\');\n -> \'QuWhat\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(196,'CRC32',3,'Syntax:\nCRC32(expr)\n\nComputes a cyclic redundancy check value and returns a 32-bit unsigned\nvalue. The result is NULL if the argument is NULL. The argument is\nexpected to be a string and (if possible) is treated as one if it is\nnot.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT CRC32(\'MySQL\');\n -> 3259397556\nmysql> SELECT CRC32(\'mysql\');\n -> 2501908538\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(197,'XOR',15,'Syntax:\nXOR\n\nLogical XOR. Returns NULL if either operand is NULL. For non-NULL\noperands, evaluates to 1 if an odd number of operands is nonzero,\notherwise 0 is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/logical-operators.html\n\n','mysql> SELECT 1 XOR 1;\n -> 0\nmysql> SELECT 1 XOR 0;\n -> 1\nmysql> SELECT 1 XOR NULL;\n -> NULL\nmysql> SELECT 1 XOR 1 XOR 1;\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/logical-operators.html'),(198,'STARTPOINT',13,'StartPoint(ls)\n\nReturns the Point that is the start point of the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(StartPoint(GeomFromText(@ls)));\n+---------------------------------------+\n| AsText(StartPoint(GeomFromText(@ls))) |\n+---------------------------------------+\n| POINT(1 1) |\n+---------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-linestring-property-functions.html'),(199,'GRANT',10,'Syntax:\nGRANT\n priv_type [(column_list)]\n [, priv_type [(column_list)]] ...\n ON [object_type] priv_level\n TO user_specification [, user_specification] ...\n [REQUIRE {NONE | tsl_option [[AND] tsl_option] ...}]\n [WITH {GRANT OPTION | resource_option} ...]\n\nGRANT PROXY ON user_specification\n TO user_specification [, user_specification] ...\n [WITH GRANT OPTION]\n\nobject_type: {\n TABLE\n | FUNCTION\n | PROCEDURE\n}\n\npriv_level: {\n *\n | *.*\n | db_name.*\n | db_name.tbl_name\n | tbl_name\n | db_name.routine_name\n}\n\nuser_specification:\n user [ auth_option ]\n\nauth_option: {\n IDENTIFIED BY \'auth_string\'\n | IDENTIFIED BY PASSWORD \'hash_string\'\n | IDENTIFIED WITH auth_plugin\n | IDENTIFIED WITH auth_plugin AS \'hash_string\'\n}\n\ntsl_option: {\n SSL\n | X509\n | CIPHER \'cipher\'\n | ISSUER \'issuer\'\n | SUBJECT \'subject\'\n}\n\nresource_option: {\n | MAX_QUERIES_PER_HOUR count\n | MAX_UPDATES_PER_HOUR count\n | MAX_CONNECTIONS_PER_HOUR count\n | MAX_USER_CONNECTIONS count\n}\n\nThe GRANT statement grants privileges to MySQL user accounts. GRANT\nalso serves to specify other account characteristics such as use of\nsecure connections and limits on access to server resources.\n\nTo use GRANT, you must have the GRANT OPTION privilege, and you must\nhave the privileges that you are granting. When the read_only system\nvariable is enabled, GRANT additionally requires the SUPER privilege.\n\nThe REVOKE statement is related to GRANT and enables administrators to\nremove account privileges. See [HELP REVOKE].\n\nNormally, a database administrator first uses CREATE USER to create an\naccount, then GRANT to define its privileges and characteristics. For\nexample:\n\nCREATE USER \'jeffrey\'@\'localhost\' IDENTIFIED BY \'mypass\';\nGRANT ALL ON db1.* TO \'jeffrey\'@\'localhost\';\nGRANT SELECT ON db2.invoice TO \'jeffrey\'@\'localhost\';\nGRANT USAGE ON *.* TO \'jeffrey\'@\'localhost\' WITH MAX_QUERIES_PER_HOUR 90;\n\n*Note*: Examples shown here include no IDENTIFIED clause. It is assumed\nthat you establish passwords with CREATE USER at account-creation time\nto avoid creating insecure accounts.\n\nIf an account named in a GRANT statement does not already exist, GRANT\nmay create it under the conditions described later in the discussion of\nthe NO_AUTO_CREATE_USER SQL mode.\n\nFrom the mysql program, GRANT responds with Query OK, 0 rows affected\nwhen executed successfully. To determine what privileges result from\nthe operation, use SHOW GRANTS. See [HELP SHOW GRANTS].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/grant.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/grant.html'),(200,'DECLARE VARIABLE',24,'Syntax:\nDECLARE var_name [, var_name] ... type [DEFAULT value]\n\nThis statement declares local variables within stored programs. To\nprovide a default value for a variable, include a DEFAULT clause. The\nvalue can be specified as an expression; it need not be a constant. If\nthe DEFAULT clause is missing, the initial value is NULL.\n\nLocal variables are treated like stored routine parameters with respect\nto data type and overflow checking. See [HELP CREATE PROCEDURE].\n\nVariable declarations must appear before cursor or handler\ndeclarations.\n\nLocal variable names are not case sensitive. Permissible characters and\nquoting rules are the same as for other identifiers, as described in\nhttp://dev.mysql.com/doc/refman/5.5/en/identifiers.html.\n\nThe scope of a local variable is the BEGIN ... END block within which\nit is declared. The variable can be referred to in blocks nested within\nthe declaring block, except those blocks that declare a variable with\nthe same name.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/declare-local-variable.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/declare-local-variable.html'),(201,'MPOLYFROMTEXT',4,'MPolyFromText(wkt[,srid]), MultiPolygonFromText(wkt[,srid])\n\nConstructs a MultiPolygon value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html'),(202,'BIT_OR',16,'Syntax:\nBIT_OR(expr)\n\nReturns the bitwise OR of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(203,'MBRINTERSECTS',7,'MBRIntersects(g1,g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangles of\nthe two geometries g1 and g2 intersect.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html'),(204,'YEARWEEK',32,'Syntax:\nYEARWEEK(date), YEARWEEK(date,mode)\n\nReturns year and week for a date. The year in the result may be\ndifferent from the year in the date argument for the first and the last\nweek of the year.\n\nThe mode argument works exactly like the mode argument to WEEK(). For\nthe single-argument syntax, a mode value of 0 is used. Unlike WEEK(),\nthe value of default_week_format does not influence YEARWEEK().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT YEARWEEK(\'1987-01-01\');\n -> 198652\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(205,'NOT BETWEEN',20,'Syntax:\nexpr NOT BETWEEN min AND max\n\nThis is the same as NOT (expr BETWEEN min AND max).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(206,'IS NOT',20,'Syntax:\nIS NOT boolean_value\n\nTests a value against a boolean value, where boolean_value can be TRUE,\nFALSE, or UNKNOWN.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;\n -> 1, 1, 0\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(207,'LOG10',3,'Syntax:\nLOG10(X)\n\nReturns the base-10 logarithm of X.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT LOG10(2);\n -> 0.30102999566398\nmysql> SELECT LOG10(100);\n -> 2\nmysql> SELECT LOG10(-100);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(208,'SQRT',3,'Syntax:\nSQRT(X)\n\nReturns the square root of a nonnegative number X.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT SQRT(4);\n -> 2\nmysql> SELECT SQRT(20);\n -> 4.4721359549996\nmysql> SELECT SQRT(-16);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(209,'DECIMAL',23,'DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]\n\nA packed \"exact\" fixed-point number. M is the total number of digits\n(the precision) and D is the number of digits after the decimal point\n(the scale). The decimal point and (for negative numbers) the \"-\" sign\nare not counted in M. If D is 0, values have no decimal point or\nfractional part. The maximum number of digits (M) for DECIMAL is 65.\nThe maximum number of supported decimals (D) is 30. If D is omitted,\nthe default is 0. If M is omitted, the default is 10.\n\nUNSIGNED, if specified, disallows negative values.\n\nAll basic calculations (+, -, *, /) with DECIMAL columns are done with\na precision of 65 digits.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(210,'CREATE INDEX',40,'Syntax:\nCREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name\n [index_type]\n ON tbl_name (index_col_name,...)\n [index_option] ...\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n | COMMENT \'string\'\n\nCREATE INDEX is mapped to an ALTER TABLE statement to create indexes.\nSee [HELP ALTER TABLE]. CREATE INDEX cannot be used to create a PRIMARY\nKEY; use ALTER TABLE instead. For more information about indexes, see\nhttp://dev.mysql.com/doc/refman/5.5/en/mysql-indexes.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-index.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/create-index.html'),(211,'CREATE FUNCTION',40,'The CREATE FUNCTION statement is used to create stored functions and\nuser-defined functions (UDFs):\n\no For information about creating stored functions, see [HELP CREATE\n PROCEDURE].\n\no For information about creating user-defined functions, see [HELP\n CREATE FUNCTION UDF].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-function.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/create-function.html'),(212,'ALTER DATABASE',40,'Syntax:\nALTER {DATABASE | SCHEMA} [db_name]\n alter_specification ...\nALTER {DATABASE | SCHEMA} db_name\n UPGRADE DATA DIRECTORY NAME\n\nalter_specification:\n [DEFAULT] CHARACTER SET [=] charset_name\n | [DEFAULT] COLLATE [=] collation_name\n\nALTER DATABASE enables you to change the overall characteristics of a\ndatabase. These characteristics are stored in the db.opt file in the\ndatabase directory. To use ALTER DATABASE, you need the ALTER privilege\non the database. ALTER SCHEMA is a synonym for ALTER DATABASE.\n\nThe database name can be omitted from the first syntax, in which case\nthe statement applies to the default database.\n\nNational Language Characteristics\n\nThe CHARACTER SET clause changes the default database character set.\nThe COLLATE clause changes the default database collation.\nhttp://dev.mysql.com/doc/refman/5.5/en/charset.html, discusses\ncharacter set and collation names.\n\nYou can see what character sets and collations are available using,\nrespectively, the SHOW CHARACTER SET and SHOW COLLATION statements. See\n[HELP SHOW CHARACTER SET], and [HELP SHOW COLLATION], for more\ninformation.\n\nIf you change the default character set or collation for a database,\nstored routines that use the database defaults must be dropped and\nrecreated so that they use the new defaults. (In a stored routine,\nvariables with character data types use the database defaults if the\ncharacter set or collation are not specified explicitly. See [HELP\nCREATE PROCEDURE].)\n\nUpgrading from Versions Older than MySQL 5.1\n\nThe syntax that includes the UPGRADE DATA DIRECTORY NAME clause updates\nthe name of the directory associated with the database to use the\nencoding implemented in MySQL 5.1 for mapping database names to\ndatabase directory names (see\nhttp://dev.mysql.com/doc/refman/5.5/en/identifier-mapping.html). This\nclause is for use under these conditions:\n\no It is intended when upgrading MySQL to 5.1 or later from older\n versions.\n\no It is intended to update a database directory name to the current\n encoding format if the name contains special characters that need\n encoding.\n\no The statement is used by mysqlcheck (as invoked by mysql_upgrade).\n\nFor example, if a database in MySQL 5.0 has the name a-b-c, the name\ncontains instances of the - (dash) character. In MySQL 5.0, the\ndatabase directory is also named a-b-c, which is not necessarily safe\nfor all file systems. In MySQL 5.1 and later, the same database name is\nencoded as a@002db@002dc to produce a file system-neutral directory\nname.\n\nWhen a MySQL installation is upgraded to MySQL 5.1 or later from an\nolder version,the server displays a name such as a-b-c (which is in the\nold format) as #mysql50#a-b-c, and you must refer to the name using the\n#mysql50# prefix. Use UPGRADE DATA DIRECTORY NAME in this case to\nexplicitly tell the server to re-encode the database directory name to\nthe current encoding format:\n\nALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;\n\nAfter executing this statement, you can refer to the database as a-b-c\nwithout the special #mysql50# prefix.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/alter-database.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/alter-database.html'),(213,'GEOMETRYN',26,'GeometryN(gc,N)\n\nReturns the N-th geometry in the GeometryCollection value gc.\nGeometries are numbered beginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-geometrycollection-property-functions.html\n\n','mysql> SET @gc = \'GeometryCollection(Point(1 1),LineString(2 2, 3 3))\';\nmysql> SELECT AsText(GeometryN(GeomFromText(@gc),1));\n+----------------------------------------+\n| AsText(GeometryN(GeomFromText(@gc),1)) |\n+----------------------------------------+\n| POINT(1 1) |\n+----------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-geometrycollection-property-functions.html'),(214,'<<',19,'Syntax:\n<<\n\nShifts a longlong (BIGINT) number to the left.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html\n\n','mysql> SELECT 1 << 2;\n -> 4\n','http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html'),(215,'SHOW TABLE STATUS',27,'Syntax:\nSHOW TABLE STATUS [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TABLE STATUS works likes SHOW TABLES, but provides a lot of\ninformation about each non-TEMPORARY table. You can also get this list\nusing the mysqlshow --status db_name command. The LIKE clause, if\npresent, indicates which table names to match. The WHERE clause can be\ngiven to select rows using more general conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-table-status.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-table-status.html'),(216,'MD5',12,'Syntax:\nMD5(str)\n\nCalculates an MD5 128-bit checksum for the string. The value is\nreturned as a string of 32 hex digits, or NULL if the argument was\nNULL. The return value can, for example, be used as a hash key. See the\nnotes at the beginning of this section about storing hash values\nefficiently.\n\nAs of MySQL 5.5.3, the return value is a nonbinary string in the\nconnection character set. Before 5.5.3, the return value is a binary\nstring; see the notes at the beginning of this section about using the\nvalue as a nonbinary string.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','mysql> SELECT MD5(\'testing\');\n -> \'ae2b1fca515949e5d54fb22b8ed95575\'\n','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(217,'<',20,'Syntax:\n<\n\nLess than:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT 2 < 2;\n -> 0\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(218,'UNIX_TIMESTAMP',32,'Syntax:\nUNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)\n\nIf called with no argument, returns a Unix timestamp (seconds since\n\'1970-01-01 00:00:00\' UTC) as an unsigned integer. If UNIX_TIMESTAMP()\nis called with a date argument, it returns the value of the argument as\nseconds since \'1970-01-01 00:00:00\' UTC. date may be a DATE string, a\nDATETIME string, a TIMESTAMP, or a number in the format YYMMDD or\nYYYYMMDD. The server interprets date as a value in the current time\nzone and converts it to an internal value in UTC. Clients can set their\ntime zone as described in\nhttp://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT UNIX_TIMESTAMP();\n -> 1447431666\nmysql> SELECT UNIX_TIMESTAMP(\'2015-11-13 10:20:19\');\n -> 1447431619\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(219,'DAYOFMONTH',32,'Syntax:\nDAYOFMONTH(date)\n\nReturns the day of the month for date, in the range 1 to 31, or 0 for\ndates such as \'0000-00-00\' or \'2008-00-00\' that have a zero day part.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFMONTH(\'2007-02-03\');\n -> 3\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(220,'ASCII',38,'Syntax:\nASCII(str)\n\nReturns the numeric value of the leftmost character of the string str.\nReturns 0 if str is the empty string. Returns NULL if str is NULL.\nASCII() works for 8-bit characters.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT ASCII(\'2\');\n -> 50\nmysql> SELECT ASCII(2);\n -> 50\nmysql> SELECT ASCII(\'dx\');\n -> 100\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(221,'DIV',3,'Syntax:\nDIV\n\nInteger division. Discards from the division result any fractional part\nto the right of the decimal point.\n\nAs of MySQL 5.5.3, if either operand has a noninteger type, the\noperands are converted to DECIMAL and divided using DECIMAL arithmetic\nbefore converting the result to BIGINT. If the result exceeds BIGINT\nrange, an error occurs. Before MySQL 5.5.3, incorrect results may occur\nfor noninteger operands that exceed BIGINT range.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html\n\n','mysql> SELECT 5 DIV 2, -5 DIV 2, 5 DIV -2, -5 DIV -2;\n -> 2, -2, -2, 2\n','http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html'),(222,'RENAME USER',10,'Syntax:\nRENAME USER old_user TO new_user\n [, old_user TO new_user] ...\n\nThe RENAME USER statement renames existing MySQL accounts. An error\noccurs for old accounts that do not exist or new accounts that already\nexist.\n\nTo use RENAME USER, you must have the global CREATE USER privilege or\nthe UPDATE privilege for the mysql database. When the read_only system\nvariable is enabled, RENAME USER additionally requires the SUPER\nprivilege.\n\nEach account name uses the format described in\nhttp://dev.mysql.com/doc/refman/5.5/en/account-names.html. For example:\n\nRENAME USER \'jeffrey\'@\'localhost\' TO \'jeff\'@\'127.0.0.1\';\n\nIf you specify only the user name part of the account name, a host name\npart of \'%\' is used.\n\nRENAME USER causes the privileges held by the old user to be those held\nby the new user. However, RENAME USER does not automatically drop or\ninvalidate databases or objects within them that the old user created.\nThis includes stored programs or views for which the DEFINER attribute\nnames the old user. Attempts to access such objects may produce an\nerror if they execute in definer security context. (For information\nabout security context, see\nhttp://dev.mysql.com/doc/refman/5.5/en/stored-programs-security.html.)\n\nThe privilege changes take effect as indicated in\nhttp://dev.mysql.com/doc/refman/5.5/en/privilege-changes.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/rename-user.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/rename-user.html'),(223,'SHOW SLAVE STATUS',27,'Syntax:\nSHOW SLAVE STATUS\n\nThis statement provides status information on essential parameters of\nthe slave threads. It requires either the SUPER or REPLICATION CLIENT\nprivilege.\n\nIf you issue this statement using the mysql client, you can use a \\G\nstatement terminator rather than a semicolon to obtain a more readable\nvertical layout:\n\nmysql> SHOW SLAVE STATUS\\G\n*************************** 1. row ***************************\n Slave_IO_State: Waiting for master to send event\n Master_Host: localhost\n Master_User: root\n Master_Port: 3306\n Connect_Retry: 3\n Master_Log_File: gbichot-bin.005\n Read_Master_Log_Pos: 79\n Relay_Log_File: gbichot-relay-bin.005\n Relay_Log_Pos: 548\n Relay_Master_Log_File: gbichot-bin.005\n Slave_IO_Running: Yes\n Slave_SQL_Running: Yes\n Replicate_Do_DB:\n Replicate_Ignore_DB:\n Replicate_Do_Table:\n Replicate_Ignore_Table:\n Replicate_Wild_Do_Table:\n Replicate_Wild_Ignore_Table:\n Last_Errno: 0\n Last_Error:\n Skip_Counter: 0\n Exec_Master_Log_Pos: 79\n Relay_Log_Space: 552\n Until_Condition: None\n Until_Log_File:\n Until_Log_Pos: 0\n Master_SSL_Allowed: No\n Master_SSL_CA_File:\n Master_SSL_CA_Path:\n Master_SSL_Cert:\n Master_SSL_Cipher:\n Master_SSL_Key:\n Seconds_Behind_Master: 8\nMaster_SSL_Verify_Server_Cert: No\n Last_IO_Errno: 0\n Last_IO_Error:\n Last_SQL_Errno: 0\n Last_SQL_Error:\n Replicate_Ignore_Server_Ids: 0\n Master_Server_Id: 1\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-slave-status.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-slave-status.html'),(224,'GEOMETRY',35,'MySQL provides a standard way of creating spatial columns for geometry\ntypes, for example, with CREATE TABLE or ALTER TABLE. Spatial columns\nare supported for MyISAM, InnoDB, NDB, and ARCHIVE tables. See also the\nnotes about spatial indexes under [HELP SPATIAL].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/creating-spatial-columns.html\n\n','CREATE TABLE geom (g GEOMETRY);\n','http://dev.mysql.com/doc/refman/5.5/en/creating-spatial-columns.html'),(225,'NUMPOINTS',13,'NumPoints(ls)\n\nReturns the number of Point objects in the LineString value ls.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT NumPoints(GeomFromText(@ls));\n+------------------------------+\n| NumPoints(GeomFromText(@ls)) |\n+------------------------------+\n| 3 |\n+------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-linestring-property-functions.html'),(226,'ALTER LOGFILE GROUP',40,'Syntax:\nALTER LOGFILE GROUP logfile_group\n ADD UNDOFILE \'file_name\'\n [INITIAL_SIZE [=] size]\n [WAIT]\n ENGINE [=] engine_name\n\nThis statement adds an UNDO file named \'file_name\' to an existing log\nfile group logfile_group. An ALTER LOGFILE GROUP statement has one and\nonly one ADD UNDOFILE clause. No DROP UNDOFILE clause is currently\nsupported.\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and an undo log file with the same name, or an undo\nlog file and a data file with the same name.\n\nThe optional INITIAL_SIZE parameter sets the UNDO file\'s initial size\nin bytes; if not specified, the initial size defaults to 134217728 (128\nMB). Prior to MySQL Cluster NDB 7.2.14, this value was required to be\nspecified using digits (Bug #13116514, Bug #16104705, Bug #62858); in\nMySQL Cluster NDB 7.2.14 and later, you may optionally follow size with\na one-letter abbreviation for an order of magnitude, similar to those\nused in my.cnf. Generally, this is one of the letters M (megabytes) or\nG (gigabytes).\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is\n4294967296 (4 GB). (Bug #29186)\n\nThe minimum allowed value for INITIAL_SIZE is 1048576 (1 MB). (Bug\n#29574)\n\n*Note*: WAIT is parsed but otherwise ignored. This keyword currently\nhas no effect, and is intended for future expansion.\n\nThe ENGINE parameter (required) determines the storage engine which is\nused by this log file group, with engine_name being the name of the\nstorage engine. Currently, the only accepted values for engine_name are\n\"NDBCLUSTER\" and \"NDB\". The two values are equivalent.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/alter-logfile-group.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/alter-logfile-group.html'),(227,'&',19,'Syntax:\n&\n\nBitwise AND:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html\n\n','mysql> SELECT 29 & 15;\n -> 13\n','http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html'),(228,'LOCALTIMESTAMP',32,'Syntax:\nLOCALTIMESTAMP, LOCALTIMESTAMP()\n\nLOCALTIMESTAMP and LOCALTIMESTAMP() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(229,'ASSIGN-EQUAL',15,'Syntax:\n=\n\nThis operator is used to perform value assignments in two cases,\ndescribed in the next two paragraphs.\n\nWithin a SET statement, = is treated as an assignment operator that\ncauses the user variable on the left hand side of the operator to take\non the value to its right. (In other words, when used in a SET\nstatement, = is treated identically to :=.) The value on the right hand\nside may be a literal value, another variable storing a value, or any\nlegal expression that yields a scalar value, including the result of a\nquery (provided that this value is a scalar value). You can perform\nmultiple assignments in the same SET statement.\n\nIn the SET clause of an UPDATE statement, = also acts as an assignment\noperator; in this case, however, it causes the column named on the left\nhand side of the operator to assume the value given to the right,\nprovided any WHERE conditions that are part of the UPDATE are met. You\ncan make multiple assignments in the same SET clause of an UPDATE\nstatement.\n\nIn any other context, = is treated as a comparison operator.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/assignment-operators.html\n\n','mysql> SELECT @var1, @var2;\n -> NULL, NULL\nmysql> SELECT @var1 := 1, @var2;\n -> 1, NULL\nmysql> SELECT @var1, @var2;\n -> 1, NULL\nmysql> SELECT @var1, @var2 := @var1;\n -> 1, 1\nmysql> SELECT @var1, @var2;\n -> 1, 1\n','http://dev.mysql.com/doc/refman/5.5/en/assignment-operators.html'),(230,'CONVERT',38,'Syntax:\nCONVERT(expr,type), CONVERT(expr USING transcoding_name)\n\nThe CONVERT() and CAST() functions take an expression of any type and\nproduce a result value of a specified type.\n\nCAST() and CONVERT(... USING ...) are standard SQL syntax. The\nnon-USING form of CONVERT() is ODBC syntax.\n\nCONVERT() with USING converts data between different character sets. In\nMySQL, transcoding names are the same as the corresponding character\nset names. For example, this statement converts the string \'abc\' in the\ndefault character set to the corresponding string in the utf8 character\nset:\n\nSELECT CONVERT(\'abc\' USING utf8);\n\nThe type for the result can be one of the following values:\n\no BINARY[(N)]\n\no CHAR[(N)]\n\no DATE\n\no DATETIME\n\no DECIMAL[(M[,D])]\n\no SIGNED [INTEGER]\n\no TIME\n\no UNSIGNED [INTEGER]\n\nBINARY produces a string with the BINARY data type. See\nhttp://dev.mysql.com/doc/refman/5.5/en/binary-varbinary.html for a\ndescription of how this affects comparisons. If the optional length N\nis given, BINARY(N) causes the cast to use no more than N bytes of the\nargument. Values shorter than N bytes are padded with 0x00 bytes to a\nlength of N.\n\nCHAR(N) causes the cast to use no more than N characters of the\nargument.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html\n\n','SELECT enum_col FROM tbl_name ORDER BY CAST(enum_col AS CHAR);\n','http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html'),(231,'DROP LOGFILE GROUP',40,'Syntax:\nDROP LOGFILE GROUP logfile_group\n ENGINE [=] engine_name\n\nThis statement drops the log file group named logfile_group. The log\nfile group must already exist or an error results. (For information on\ncreating log file groups, see [HELP CREATE LOGFILE GROUP].)\n\n*Important*: Before dropping a log file group, you must drop all\ntablespaces that use that log file group for UNDO logging.\n\nThe required ENGINE clause provides the name of the storage engine used\nby the log file group to be dropped. Currently, the only permitted\nvalues for engine_name are NDB and NDBCLUSTER.\n\nDROP LOGFILE GROUP is useful only with Disk Data storage for MySQL\nCluster. See\nhttp://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-disk-data.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-logfile-group.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-logfile-group.html'),(232,'ADDDATE',32,'Syntax:\nADDDATE(date,INTERVAL expr unit), ADDDATE(expr,days)\n\nWhen invoked with the INTERVAL form of the second argument, ADDDATE()\nis a synonym for DATE_ADD(). The related function SUBDATE() is a\nsynonym for DATE_SUB(). For information on the INTERVAL unit argument,\nsee the discussion for DATE_ADD().\n\nmysql> SELECT DATE_ADD(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2008-02-02\'\nmysql> SELECT ADDDATE(\'2008-01-02\', INTERVAL 31 DAY);\n -> \'2008-02-02\'\n\nWhen invoked with the days form of the second argument, MySQL treats it\nas an integer number of days to be added to expr.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT ADDDATE(\'2008-01-02\', 31);\n -> \'2008-02-02\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(233,'REPEAT LOOP',24,'Syntax:\n[begin_label:] REPEAT\n statement_list\nUNTIL search_condition\nEND REPEAT [end_label]\n\nThe statement list within a REPEAT statement is repeated until the\nsearch_condition expression is true. Thus, a REPEAT always enters the\nloop at least once. statement_list consists of one or more statements,\neach terminated by a semicolon (;) statement delimiter.\n\nA REPEAT statement can be labeled. For the rules regarding label use,\nsee [HELP labels].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/repeat.html\n\n','mysql> delimiter //\n\nmysql> CREATE PROCEDURE dorepeat(p1 INT)\n -> BEGIN\n -> SET @x = 0;\n -> REPEAT\n -> SET @x = @x + 1;\n -> UNTIL @x > p1 END REPEAT;\n -> END\n -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL dorepeat(1000)//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @x//\n+------+\n| @x |\n+------+\n| 1001 |\n+------+\n1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.5/en/repeat.html'),(234,'ALTER FUNCTION',40,'Syntax:\nALTER FUNCTION func_name [characteristic ...]\n\ncharacteristic:\n COMMENT \'string\'\n | LANGUAGE SQL\n | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n\nThis statement can be used to change the characteristics of a stored\nfunction. More than one change may be specified in an ALTER FUNCTION\nstatement. However, you cannot change the parameters or body of a\nstored function using this statement; to make such changes, you must\ndrop and re-create the function using DROP FUNCTION and CREATE\nFUNCTION.\n\nYou must have the ALTER ROUTINE privilege for the function. (That\nprivilege is granted automatically to the function creator.) If binary\nlogging is enabled, the ALTER FUNCTION statement might also require the\nSUPER privilege, as described in\nhttp://dev.mysql.com/doc/refman/5.5/en/stored-programs-logging.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/alter-function.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/alter-function.html'),(235,'SMALLINT',23,'SMALLINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA small integer. The signed range is -32768 to 32767. The unsigned\nrange is 0 to 65535.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(236,'DOUBLE PRECISION',23,'DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED]\n[ZEROFILL]\n\nThese types are synonyms for DOUBLE. Exception: If the REAL_AS_FLOAT\nSQL mode is enabled, REAL is a synonym for FLOAT rather than DOUBLE.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(237,'ORD',38,'Syntax:\nORD(str)\n\nIf the leftmost character of the string str is a multibyte character,\nreturns the code for that character, calculated from the numeric values\nof its constituent bytes using this formula:\n\n (1st byte code)\n+ (2nd byte code * 256)\n+ (3rd byte code * 2562) ...\n\nIf the leftmost character is not a multibyte character, ORD() returns\nthe same value as the ASCII() function.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT ORD(\'2\');\n -> 50\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(238,'DEALLOCATE PREPARE',8,'Syntax:\n{DEALLOCATE | DROP} PREPARE stmt_name\n\nTo deallocate a prepared statement produced with PREPARE, use a\nDEALLOCATE PREPARE statement that refers to the prepared statement\nname. Attempting to execute a prepared statement after deallocating it\nresults in an error.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/deallocate-prepare.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/deallocate-prepare.html'),(239,'IS_FREE_LOCK',14,'Syntax:\nIS_FREE_LOCK(str)\n\nChecks whether the lock named str is free to use (that is, not locked).\nReturns 1 if the lock is free (no one is using the lock), 0 if the lock\nis in use, and NULL if an error occurs (such as an incorrect argument).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(240,'ENVELOPE',37,'Envelope(g)\n\nReturns the minimum bounding rectangle (MBR) for the geometry value g.\nThe result is returned as a Polygon value that is defined by the corner\npoints of the bounding box:\n\nPOLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-general-property-functions.html\n\n','mysql> SELECT AsText(Envelope(GeomFromText(\'LineString(1 1,2 2)\')));\n+-------------------------------------------------------+\n| AsText(Envelope(GeomFromText(\'LineString(1 1,2 2)\'))) |\n+-------------------------------------------------------+\n| POLYGON((1 1,2 1,2 2,1 2,1 1)) |\n+-------------------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-general-property-functions.html'),(241,'TOUCHES',31,'Touches(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially touches g2. Two\ngeometries spatially touch if the interiors of the geometries do not\nintersect, but the boundary of one of the geometries intersects either\nthe boundary or the interior of the other.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-object-shapes.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-object-shapes.html'),(242,'INET_ATON',14,'Syntax:\nINET_ATON(expr)\n\nGiven the dotted-quad representation of an IPv4 network address as a\nstring, returns an integer that represents the numeric value of the\naddress in network byte order (big endian). INET_ATON() returns NULL if\nit does not understand its argument.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','mysql> SELECT INET_ATON(\'10.0.5.9\');\n -> 167773449\n','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(243,'UNCOMPRESS',12,'Syntax:\nUNCOMPRESS(string_to_uncompress)\n\nUncompresses a string compressed by the COMPRESS() function. If the\nargument is not a compressed value, the result is NULL. This function\nrequires MySQL to have been compiled with a compression library such as\nzlib. Otherwise, the return value is always NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESS(COMPRESS(\'any string\'));\n -> \'any string\'\nmysql> SELECT UNCOMPRESS(\'any string\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(244,'AUTO_INCREMENT',23,'The AUTO_INCREMENT attribute can be used to generate a unique identity\nfor new rows:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/example-auto-increment.html\n\n','CREATE TABLE animals (\n id MEDIUMINT NOT NULL AUTO_INCREMENT,\n name CHAR(30) NOT NULL,\n PRIMARY KEY (id)\n);\n\nINSERT INTO animals (name) VALUES\n (\'dog\'),(\'cat\'),(\'penguin\'),\n (\'lax\'),(\'whale\'),(\'ostrich\');\n\nSELECT * FROM animals;\n','http://dev.mysql.com/doc/refman/5.5/en/example-auto-increment.html'),(245,'ISSIMPLE',37,'IsSimple(g)\n\nIn MySQL 5.5, this function is a placeholder that always returns 0.\n\nThe description of each instantiable geometric class given earlier in\nthe chapter includes the specific conditions that cause an instance of\nthat class to be classified as not simple. (See [HELP Geometry\nhierarchy].)\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-general-property-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-general-property-functions.html'),(246,'- BINARY',3,'Syntax:\n-\n\nSubtraction:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html\n\n','mysql> SELECT 3-5;\n -> -2\n','http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html'),(247,'GEOMCOLLFROMTEXT',4,'GeomCollFromText(wkt[,srid]), GeometryCollectionFromText(wkt[,srid])\n\nConstructs a GeometryCollection value using its WKT representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html'),(248,'CURRENT_TIME',32,'Syntax:\nCURRENT_TIME, CURRENT_TIME()\n\nCURRENT_TIME and CURRENT_TIME() are synonyms for CURTIME().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(249,'WKT DEFINITION',4,'The Well-Known Text (WKT) representation of geometry values is designed\nfor exchanging geometry data in ASCII form. The OpenGIS specification\nprovides a Backus-Naur grammar that specifies the formal production\nrules for writing WKT values (see\nhttp://dev.mysql.com/doc/refman/5.5/en/spatial-extensions.html).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-data-formats.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-data-formats.html'),(250,'REVOKE',10,'Syntax:\nREVOKE\n priv_type [(column_list)]\n [, priv_type [(column_list)]] ...\n ON [object_type] priv_level\n FROM user [, user] ...\n\nREVOKE ALL PRIVILEGES, GRANT OPTION\n FROM user [, user] ...\n\nREVOKE PROXY ON user\n FROM user [, user] ...\n\nThe REVOKE statement enables system administrators to revoke privileges\nfrom MySQL accounts.\n\nWhen the read_only system variable is enabled, REVOKE requires the\nSUPER privilege in addition to any other required privileges described\nin the following discussion.\n\nEach account name uses the format described in\nhttp://dev.mysql.com/doc/refman/5.5/en/account-names.html. For example:\n\nREVOKE INSERT ON *.* FROM \'jeffrey\'@\'localhost\';\n\nIf you specify only the user name part of the account name, a host name\npart of \'%\' is used.\n\nFor details on the levels at which privileges exist, the permissible\npriv_type and priv_level values, and the syntax for specifying users\nand passwords, see [HELP GRANT]\n\nTo use the first REVOKE syntax, you must have the GRANT OPTION\nprivilege, and you must have the privileges that you are revoking.\n\nTo revoke all privileges, use the second syntax, which drops all\nglobal, database, table, column, and routine privileges for the named\nuser or users:\n\nREVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...\n\nTo use this REVOKE syntax, you must have the global CREATE USER\nprivilege or the UPDATE privilege for the mysql database.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/revoke.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/revoke.html'),(251,'LAST_INSERT_ID',17,'Syntax:\nLAST_INSERT_ID(), LAST_INSERT_ID(expr)\n\nWith no argument, LAST_INSERT_ID() returns a 64-bit value representing\nthe first automatically generated value successfully inserted for an\nAUTO_INCREMENT column as a result of the most recently executed INSERT\nstatement. The value has a type of BIGINT UNSIGNED as of MySQL 5.5.29,\nBIGINT (signed) before that. The value of LAST_INSERT_ID() remains\nunchanged if no rows are successfully inserted.\n\nWith an argument, LAST_INSERT_ID() returns an unsigned integer as of\nMySQL 5.5.29, a signed integer before that.\n\nFor example, after inserting a row that generates an AUTO_INCREMENT\nvalue, you can get the value like this:\n\nmysql> SELECT LAST_INSERT_ID();\n -> 195\n\nThe currently executing statement does not affect the value of\nLAST_INSERT_ID(). Suppose that you generate an AUTO_INCREMENT value\nwith one statement, and then refer to LAST_INSERT_ID() in a\nmultiple-row INSERT statement that inserts rows into a table with its\nown AUTO_INCREMENT column. The value of LAST_INSERT_ID() will remain\nstable in the second statement; its value for the second and later rows\nis not affected by the earlier row insertions. (However, if you mix\nreferences to LAST_INSERT_ID() and LAST_INSERT_ID(expr), the effect is\nundefined.)\n\nIf the previous statement returned an error, the value of\nLAST_INSERT_ID() is undefined. For transactional tables, if the\nstatement is rolled back due to an error, the value of LAST_INSERT_ID()\nis left undefined. For manual ROLLBACK, the value of LAST_INSERT_ID()\nis not restored to that before the transaction; it remains as it was at\nthe point of the ROLLBACK.\n\nPrior to MySQL 5.5.35, this function was not replicated correctly if\nreplication filtering rules were in use. (Bug #17234370, Bug #69861)\n\nWithin the body of a stored routine (procedure or function) or a\ntrigger, the value of LAST_INSERT_ID() changes the same way as for\nstatements executed outside the body of these kinds of objects. The\neffect of a stored routine or trigger upon the value of\nLAST_INSERT_ID() that is seen by following statements depends on the\nkind of routine:\n\no If a stored procedure executes statements that change the value of\n LAST_INSERT_ID(), the changed value is seen by statements that follow\n the procedure call.\n\no For stored functions and triggers that change the value, the value is\n restored when the function or trigger ends, so following statements\n will not see a changed value.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(252,'LAST_DAY',32,'Syntax:\nLAST_DAY(date)\n\nTakes a date or datetime value and returns the corresponding value for\nthe last day of the month. Returns NULL if the argument is invalid.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT LAST_DAY(\'2003-02-05\');\n -> \'2003-02-28\'\nmysql> SELECT LAST_DAY(\'2004-02-05\');\n -> \'2004-02-29\'\nmysql> SELECT LAST_DAY(\'2004-01-01 01:01:01\');\n -> \'2004-01-31\'\nmysql> SELECT LAST_DAY(\'2003-03-32\');\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(253,'MEDIUMINT',23,'MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]\n\nA medium-sized integer. The signed range is -8388608 to 8388607. The\nunsigned range is 0 to 16777215.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(254,'FLOOR',3,'Syntax:\nFLOOR(X)\n\nReturns the largest integer value not greater than X.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT FLOOR(1.23), FLOOR(-1.23);\n -> 1, -2\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(255,'RTRIM',38,'Syntax:\nRTRIM(str)\n\nReturns the string str with trailing space characters removed.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT RTRIM(\'barbar \');\n -> \'barbar\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(256,'EXPLAIN',29,'Syntax:\n{EXPLAIN | DESCRIBE | DESC}\n tbl_name [col_name | wild]\n\n{EXPLAIN | DESCRIBE | DESC}\n [explain_type] SELECT select_options\n\nexplain_type: {EXTENDED | PARTITIONS}\n\nThe DESCRIBE and EXPLAIN statements are synonyms. In practice, the\nDESCRIBE keyword is more often used to obtain information about table\nstructure, whereas EXPLAIN is used to obtain a query execution plan\n(that is, an explanation of how MySQL would execute a query). The\nfollowing discussion uses the DESCRIBE and EXPLAIN keywords in\naccordance with those uses, but the MySQL parser treats them as\ncompletely synonymous.\n\nObtaining Table Structure Information\n\nDESCRIBE provides information about the columns in a table:\n\nmysql> DESCRIBE City;\n+------------+----------+------+-----+---------+----------------+\n| Field | Type | Null | Key | Default | Extra |\n+------------+----------+------+-----+---------+----------------+\n| Id | int(11) | NO | PRI | NULL | auto_increment |\n| Name | char(35) | NO | | | |\n| Country | char(3) | NO | UNI | | |\n| District | char(20) | YES | MUL | | |\n| Population | int(11) | NO | | 0 | |\n+------------+----------+------+-----+---------+----------------+\n\nDESCRIBE is a shortcut for SHOW COLUMNS. These statements also display\ninformation for views. The description for SHOW COLUMNS provides more\ninformation about the output columns. See [HELP SHOW COLUMNS].\n\nBy default, DESCRIBE displays information about all columns in the\ntable. col_name, if given, is the name of a column in the table. In\nthis case, the statement displays information only for the named\ncolumn. wild, if given, is a pattern string. It can contain the SQL \"%\"\nand \"_\" wildcard characters. In this case, the statement displays\noutput only for the columns with names matching the string. There is no\nneed to enclose the string within quotation marks unless it contains\nspaces or other special characters.\n\nThe DESCRIBE statement is provided for compatibility with Oracle.\n\nThe SHOW CREATE TABLE, SHOW TABLE STATUS, and SHOW INDEX statements\nalso provide information about tables. See [HELP SHOW].\n\nObtaining Execution Plan Information\n\nThe EXPLAIN statement provides information about how MySQL executes\nstatements:\n\no When you precede a SELECT statement with the keyword EXPLAIN, MySQL\n displays information from the optimizer about the statement execution\n plan. That is, MySQL explains how it would process the statement,\n including information about how tables are joined and in which order.\n For information about using EXPLAIN to obtain execution plan\n information, see\n http://dev.mysql.com/doc/refman/5.5/en/explain-output.html.\n\no EXPLAIN EXTENDED can be used to obtain additional execution plan\n information. See\n http://dev.mysql.com/doc/refman/5.5/en/explain-extended.html.\n\no EXPLAIN PARTITIONS is useful for examining queries involving\n partitioned tables. See\n http://dev.mysql.com/doc/refman/5.5/en/partitioning-info.html.\n\nWith the help of EXPLAIN, you can see where you should add indexes to\ntables so that the statement executes faster by using indexes to find\nrows. You can also use EXPLAIN to check whether the optimizer joins the\ntables in an optimal order. To give a hint to the optimizer to use a\njoin order corresponding to the order in which the tables are named in\na SELECT statement, begin the statement with SELECT STRAIGHT_JOIN\nrather than just SELECT. (See\nhttp://dev.mysql.com/doc/refman/5.5/en/select.html.)\n\nIf you have a problem with indexes not being used when you believe that\nthey should be, run ANALYZE TABLE to update table statistics, such as\ncardinality of keys, that can affect the choices the optimizer makes.\nSee [HELP ANALYZE TABLE].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/explain.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/explain.html'),(257,'DEGREES',3,'Syntax:\nDEGREES(X)\n\nReturns the argument X, converted from radians to degrees.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT DEGREES(PI());\n -> 180\nmysql> SELECT DEGREES(PI() / 2);\n -> 90\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(258,'- UNARY',3,'Syntax:\n-\n\nUnary minus. This operator changes the sign of the operand.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html\n\n','mysql> SELECT - 2;\n -> -2\n','http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html'),(259,'VARCHAR',23,'[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA variable-length string. M represents the maximum column length in\ncharacters. The range of M is 0 to 65,535. The effective maximum length\nof a VARCHAR is subject to the maximum row size (65,535 bytes, which is\nshared among all columns) and the character set used. For example, utf8\ncharacters can require up to three bytes per character, so a VARCHAR\ncolumn that uses the utf8 character set can be declared to be a maximum\nof 21,844 characters. See\nhttp://dev.mysql.com/doc/refman/5.5/en/column-count-limit.html.\n\nMySQL stores VARCHAR values as a 1-byte or 2-byte length prefix plus\ndata. The length prefix indicates the number of bytes in the value. A\nVARCHAR column uses one length byte if values require no more than 255\nbytes, two length bytes if values may require more than 255 bytes.\n\n*Note*: MySQL follows the standard SQL specification, and does not\nremove trailing spaces from VARCHAR values.\n\nVARCHAR is shorthand for CHARACTER VARYING. NATIONAL VARCHAR is the\nstandard SQL way to define that a VARCHAR column should use some\npredefined character set. MySQL uses utf8 as this predefined character\nset. http://dev.mysql.com/doc/refman/5.5/en/charset-national.html.\nNVARCHAR is shorthand for NATIONAL VARCHAR.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(260,'UNHEX',38,'Syntax:\n\nUNHEX(str)\n\nFor a string argument str, UNHEX(str) interprets each pair of\ncharacters in the argument as a hexadecimal number and converts it to\nthe byte represented by the number. The return value is a binary\nstring.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT UNHEX(\'4D7953514C\');\n -> \'MySQL\'\nmysql> SELECT X\'4D7953514C\';\n -> \'MySQL\'\nmysql> SELECT UNHEX(HEX(\'string\'));\n -> \'string\'\nmysql> SELECT HEX(UNHEX(\'1267\'));\n -> \'1267\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(261,'STD',16,'Syntax:\nSTD(expr)\n\nReturns the population standard deviation of expr. This is an extension\nto standard SQL. The standard SQL function STDDEV_POP() can be used\ninstead.\n\nSTD() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(262,'COS',3,'Syntax:\nCOS(X)\n\nReturns the cosine of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT COS(PI());\n -> -1\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(263,'DATE FUNCTION',32,'Syntax:\nDATE(expr)\n\nExtracts the date part of the date or datetime expression expr.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT DATE(\'2003-12-31 01:02:03\');\n -> \'2003-12-31\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(264,'DROP TRIGGER',40,'Syntax:\nDROP TRIGGER [IF EXISTS] [schema_name.]trigger_name\n\nThis statement drops a trigger. The schema (database) name is optional.\nIf the schema is omitted, the trigger is dropped from the default\nschema. DROP TRIGGER requires the TRIGGER privilege for the table\nassociated with the trigger.\n\nUse IF EXISTS to prevent an error from occurring for a trigger that\ndoes not exist. A NOTE is generated for a nonexistent trigger when\nusing IF EXISTS. See [HELP SHOW WARNINGS].\n\nTriggers for a table are also dropped if you drop the table.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-trigger.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-trigger.html'),(265,'RESET MASTER',8,'Syntax:\nRESET MASTER\n\nDeletes all binary log files listed in the index file, resets the\nbinary log index file to be empty, and creates a new binary log file.\nThis statement is intended to be used only when the master is started\nfor the first time.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/reset-master.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/reset-master.html'),(266,'TAN',3,'Syntax:\nTAN(X)\n\nReturns the tangent of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT TAN(PI());\n -> -1.2246063538224e-16\nmysql> SELECT TAN(PI()+1);\n -> 1.5574077246549\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(267,'PI',3,'Syntax:\nPI()\n\nReturns the value of π (pi). The default number of decimal places\ndisplayed is seven, but MySQL uses the full double-precision value\ninternally.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT PI();\n -> 3.141593\nmysql> SELECT PI()+0.000000000000000000;\n -> 3.141592653589793116\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(268,'WEEKOFYEAR',32,'Syntax:\nWEEKOFYEAR(date)\n\nReturns the calendar week of the date as a number in the range from 1\nto 53. WEEKOFYEAR() is a compatibility function that is equivalent to\nWEEK(date,3).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKOFYEAR(\'2008-02-20\');\n -> 8\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(269,'/',3,'Syntax:\n/\n\nDivision:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html\n\n','mysql> SELECT 3/5;\n -> 0.60\n','http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html'),(270,'PURGE BINARY LOGS',8,'Syntax:\nPURGE { BINARY | MASTER } LOGS\n { TO \'log_name\' | BEFORE datetime_expr }\n\nThe binary log is a set of files that contain information about data\nmodifications made by the MySQL server. The log consists of a set of\nbinary log files, plus an index file (see\nhttp://dev.mysql.com/doc/refman/5.5/en/binary-log.html).\n\nThe PURGE BINARY LOGS statement deletes all the binary log files listed\nin the log index file prior to the specified log file name or date.\nBINARY and MASTER are synonyms. Deleted log files also are removed from\nthe list recorded in the index file, so that the given log file becomes\nthe first in the list.\n\nThis statement has no effect if the server was not started with the\n--log-bin option to enable binary logging.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/purge-binary-logs.html\n\n','PURGE BINARY LOGS TO \'mysql-bin.010\';\nPURGE BINARY LOGS BEFORE \'2008-04-02 22:46:26\';\n','http://dev.mysql.com/doc/refman/5.5/en/purge-binary-logs.html'),(271,'STDDEV_SAMP',16,'Syntax:\nSTDDEV_SAMP(expr)\n\nReturns the sample standard deviation of expr (the square root of\nVAR_SAMP().\n\nSTDDEV_SAMP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(272,'SCHEMA',17,'Syntax:\nSCHEMA()\n\nThis function is a synonym for DATABASE().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(273,'MLINEFROMWKB',33,'MLineFromWKB(wkb[,srid]), MultiLineStringFromWKB(wkb[,srid])\n\nConstructs a MultiLineString value using its WKB representation and\nSRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html'),(274,'LOG2',3,'Syntax:\nLOG2(X)\n\nReturns the base-2 logarithm of X.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT LOG2(65536);\n -> 16\nmysql> SELECT LOG2(-100);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(275,'SUBTIME',32,'Syntax:\nSUBTIME(expr1,expr2)\n\nSUBTIME() returns expr1 − expr2 expressed as a value in the same\nformat as expr1. expr1 is a time or datetime expression, and expr2 is a\ntime expression.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT SUBTIME(\'2007-12-31 23:59:59.999999\',\'1 1:1:1.000002\');\n -> \'2007-12-30 22:58:58.999997\'\nmysql> SELECT SUBTIME(\'01:00:00.999999\', \'02:00:00.999998\');\n -> \'-00:59:59.999999\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(276,'UNCOMPRESSED_LENGTH',12,'Syntax:\nUNCOMPRESSED_LENGTH(compressed_string)\n\nReturns the length that the compressed string had before being\ncompressed.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','mysql> SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT(\'a\',30)));\n -> 30\n','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(277,'DROP TABLE',40,'Syntax:\nDROP [TEMPORARY] TABLE [IF EXISTS]\n tbl_name [, tbl_name] ...\n [RESTRICT | CASCADE]\n\nDROP TABLE removes one or more tables. You must have the DROP privilege\nfor each table. All table data and the table definition are removed, so\nbe careful with this statement! If any of the tables named in the\nargument list do not exist, MySQL returns an error indicating by name\nwhich nonexisting tables it was unable to drop, but it also drops all\nof the tables in the list that do exist.\n\n*Important*: When a table is dropped, user privileges on the table are\nnot automatically dropped. See [HELP GRANT].\n\nFor a partitioned table, DROP TABLE permanently removes the table\ndefinition, all of its partitions, and all of the data which was stored\nin those partitions. It also removes the partitioning definition (.par)\nfile associated with the dropped table.\n\nUse IF EXISTS to prevent an error from occurring for tables that do not\nexist. A NOTE is generated for each nonexistent table when using IF\nEXISTS. See [HELP SHOW WARNINGS].\n\nRESTRICT and CASCADE are permitted to make porting easier. In MySQL\n5.5, they do nothing.\n\n*Note*: DROP TABLE automatically commits the current active\ntransaction, unless you use the TEMPORARY keyword.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-table.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-table.html'),(278,'POW',3,'Syntax:\nPOW(X,Y)\n\nReturns the value of X raised to the power of Y.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT POW(2,2);\n -> 4\nmysql> SELECT POW(2,-2);\n -> 0.25\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(279,'SHOW CREATE TABLE',27,'Syntax:\nSHOW CREATE TABLE tbl_name\n\nShows the CREATE TABLE statement that creates the named table. To use\nthis statement, you must have some privilege for the table. This\nstatement also works with views.\nSHOW CREATE TABLE quotes table and column names according to the value\nof the sql_quote_show_create option. See\nhttp://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-create-table.html\n\n','mysql> SHOW CREATE TABLE t\\G\n*************************** 1. row ***************************\n Table: t\nCreate Table: CREATE TABLE `t` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n `s` char(60) DEFAULT NULL,\n PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1\n','http://dev.mysql.com/doc/refman/5.5/en/show-create-table.html'),(280,'DUAL',28,'You are permitted to specify DUAL as a dummy table name in situations\nwhere no tables are referenced:\n\nmysql> SELECT 1 + 1 FROM DUAL;\n -> 2\n\nDUAL is purely for the convenience of people who require that all\nSELECT statements should have FROM and possibly other clauses. MySQL\nmay ignore the clauses. MySQL does not require FROM DUAL if no tables\nare referenced.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/select.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/select.html'),(281,'INSTR',38,'Syntax:\nINSTR(str,substr)\n\nReturns the position of the first occurrence of substring substr in\nstring str. This is the same as the two-argument form of LOCATE(),\nexcept that the order of the arguments is reversed.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT INSTR(\'foobarbar\', \'bar\');\n -> 4\nmysql> SELECT INSTR(\'xbar\', \'foobar\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(282,'NOW',32,'Syntax:\nNOW()\n\nReturns the current date and time as a value in \'YYYY-MM-DD HH:MM:SS\'\nor YYYYMMDDHHMMSS.uuuuuu format, depending on whether the function is\nused in a string or numeric context. The value is expressed in the\ncurrent time zone.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT NOW();\n -> \'2007-12-15 23:50:26\'\nmysql> SELECT NOW() + 0;\n -> 20071215235026.000000\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(283,'SHOW ENGINES',27,'Syntax:\nSHOW [STORAGE] ENGINES\n\nSHOW ENGINES displays status information about the server\'s storage\nengines. This is particularly useful for checking whether a storage\nengine is supported, or to see what the default engine is. This\ninformation can also be obtained from the INFORMATION_SCHEMA ENGINES\ntable. See http://dev.mysql.com/doc/refman/5.5/en/engines-table.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-engines.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-engines.html'),(284,'>=',20,'Syntax:\n>=\n\nGreater than or equal:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT 2 >= 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(285,'EXP',3,'Syntax:\nEXP(X)\n\nReturns the value of e (the base of natural logarithms) raised to the\npower of X. The inverse of this function is LOG() (using a single\nargument only) or LN().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT EXP(2);\n -> 7.3890560989307\nmysql> SELECT EXP(-2);\n -> 0.13533528323661\nmysql> SELECT EXP(0);\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(286,'LONGBLOB',23,'LONGBLOB\n\nA BLOB column with a maximum length of 4,294,967,295 or 4GB (232 − 1)\nbytes. The effective maximum length of LONGBLOB columns depends on the\nconfigured maximum packet size in the client/server protocol and\navailable memory. Each LONGBLOB value is stored using a 4-byte length\nprefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(287,'POINTN',13,'PointN(ls,N)\n\nReturns the N-th Point in the Linestring value ls. Points are numbered\nbeginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT AsText(PointN(GeomFromText(@ls),2));\n+-------------------------------------+\n| AsText(PointN(GeomFromText(@ls),2)) |\n+-------------------------------------+\n| POINT(2 2) |\n+-------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-linestring-property-functions.html'),(288,'YEAR DATA TYPE',23,'YEAR[(2|4)]\n\nA year in two-digit or four-digit format. The default is four-digit\nformat. YEAR(2) or YEAR(4) differ in display format, but have the same\nrange of values. In four-digit format, values display as 1901 to 2155,\nand 0000. In two-digit format, values display as 70 to 69, representing\nyears from 1970 to 2069. MySQL displays YEAR values in YYYY or YY\nformat, but permits assignment of values to YEAR columns using either\nstrings or numbers.\n\n*Note*: The YEAR(2) data type has certain issues that you should\nconsider before choosing to use it. As of MySQL 5.5.27, YEAR(2) is\ndeprecated. For more information, see\nhttp://dev.mysql.com/doc/refman/5.5/en/migrating-to-year4.html.\n\nFor additional information about YEAR display format and interpretation\nof input values, see http://dev.mysql.com/doc/refman/5.5/en/year.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-type-overview.html'),(289,'SUM',16,'Syntax:\nSUM([DISTINCT] expr)\n\nReturns the sum of expr. If the return set has no rows, SUM() returns\nNULL. The DISTINCT keyword can be used to sum only the distinct values\nof expr.\n\nSUM() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(290,'OCT',38,'Syntax:\nOCT(N)\n\nReturns a string representation of the octal value of N, where N is a\nlonglong (BIGINT) number. This is equivalent to CONV(N,10,8). Returns\nNULL if N is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT OCT(12);\n -> \'14\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(291,'SYSDATE',32,'Syntax:\nSYSDATE()\n\nReturns the current date and time as a value in \'YYYY-MM-DD HH:MM:SS\'\nor YYYYMMDDHHMMSS.uuuuuu format, depending on whether the function is\nused in a string or numeric context.\n\nSYSDATE() returns the time at which it executes. This differs from the\nbehavior for NOW(), which returns a constant time that indicates the\ntime at which the statement began to execute. (Within a stored function\nor trigger, NOW() returns the time at which the function or triggering\nstatement began to execute.)\n\nmysql> SELECT NOW(), SLEEP(2), NOW();\n+---------------------+----------+---------------------+\n| NOW() | SLEEP(2) | NOW() |\n+---------------------+----------+---------------------+\n| 2006-04-12 13:47:36 | 0 | 2006-04-12 13:47:36 |\n+---------------------+----------+---------------------+\n\nmysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();\n+---------------------+----------+---------------------+\n| SYSDATE() | SLEEP(2) | SYSDATE() |\n+---------------------+----------+---------------------+\n| 2006-04-12 13:47:44 | 0 | 2006-04-12 13:47:46 |\n+---------------------+----------+---------------------+\n\nIn addition, the SET TIMESTAMP statement affects the value returned by\nNOW() but not by SYSDATE(). This means that timestamp settings in the\nbinary log have no effect on invocations of SYSDATE().\n\nBecause SYSDATE() can return different values even within the same\nstatement, and is not affected by SET TIMESTAMP, it is nondeterministic\nand therefore unsafe for replication if statement-based binary logging\nis used. If that is a problem, you can use row-based logging.\n\nAlternatively, you can use the --sysdate-is-now option to cause\nSYSDATE() to be an alias for NOW(). This works if the option is used on\nboth the master and the slave.\n\nThe nondeterministic nature of SYSDATE() also means that indexes cannot\nbe used for evaluating expressions that refer to it.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(292,'UNINSTALL PLUGIN',5,'Syntax:\nUNINSTALL PLUGIN plugin_name\n\nThis statement removes an installed server plugin. It requires the\nDELETE privilege for the mysql.plugin table.\n\nplugin_name must be the name of some plugin that is listed in the\nmysql.plugin table. The server executes the plugin\'s deinitialization\nfunction and removes the row for the plugin from the mysql.plugin\ntable, so that subsequent server restarts will not load and initialize\nthe plugin. UNINSTALL PLUGIN does not remove the plugin\'s shared\nlibrary file.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/uninstall-plugin.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/uninstall-plugin.html'),(293,'ASBINARY',33,'AsBinary(g), AsWKB(g)\n\nConverts a value in internal geometry format to its WKB representation\nand returns the binary result.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-format-conversion-functions.html\n\n','SELECT AsBinary(g) FROM geom;\n','http://dev.mysql.com/doc/refman/5.5/en/gis-format-conversion-functions.html'),(294,'REPEAT FUNCTION',38,'Syntax:\nREPEAT(str,count)\n\nReturns a string consisting of the string str repeated count times. If\ncount is less than 1, returns an empty string. Returns NULL if str or\ncount are NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT REPEAT(\'MySQL\', 3);\n -> \'MySQLMySQLMySQL\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(295,'SHOW TABLES',27,'Syntax:\nSHOW [FULL] TABLES [{FROM | IN} db_name]\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW TABLES lists the non-TEMPORARY tables in a given database. You can\nalso get this list using the mysqlshow db_name command. The LIKE\nclause, if present, indicates which table names to match. The WHERE\nclause can be given to select rows using more general conditions, as\ndiscussed in http://dev.mysql.com/doc/refman/5.5/en/extended-show.html.\n\nMatching performed by the LIKE clause is dependent on the setting of\nthe lower_case_table_names system variable.\n\nThis statement also lists any views in the database. The FULL modifier\nis supported such that SHOW FULL TABLES displays a second output\ncolumn. Values for the second column are BASE TABLE for a table and\nVIEW for a view.\n\nIf you have no privileges for a base table or view, it does not show up\nin the output from SHOW TABLES or mysqlshow db_name.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-tables.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-tables.html'),(296,'MAKEDATE',32,'Syntax:\nMAKEDATE(year,dayofyear)\n\nReturns a date, given year and day-of-year values. dayofyear must be\ngreater than 0 or the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT MAKEDATE(2011,31), MAKEDATE(2011,32);\n -> \'2011-01-31\', \'2011-02-01\'\nmysql> SELECT MAKEDATE(2011,365), MAKEDATE(2014,365);\n -> \'2011-12-31\', \'2014-12-31\'\nmysql> SELECT MAKEDATE(2011,0);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(297,'BINARY OPERATOR',38,'Syntax:\nBINARY\n\nThe BINARY operator casts the string following it to a binary string.\nThis is an easy way to force a column comparison to be done byte by\nbyte rather than character by character. This causes the comparison to\nbe case sensitive even if the column is not defined as BINARY or BLOB.\nBINARY also causes trailing spaces to be significant.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html\n\n','mysql> SELECT \'a\' = \'A\';\n -> 1\nmysql> SELECT BINARY \'a\' = \'A\';\n -> 0\nmysql> SELECT \'a\' = \'a \';\n -> 1\nmysql> SELECT BINARY \'a\' = \'a \';\n -> 0\n','http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html'),(298,'MBROVERLAPS',7,'MBROverlaps(g1,g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangles of\nthe two geometries g1 and g2 overlap. The term spatially overlaps is\nused if two geometries intersect and their intersection results in a\ngeometry of the same dimension but not equal to either of the given\ngeometries.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html'),(299,'SOUNDEX',38,'Syntax:\nSOUNDEX(str)\n\nReturns a soundex string from str. Two strings that sound almost the\nsame should have identical soundex strings. A standard soundex string\nis four characters long, but the SOUNDEX() function returns an\narbitrarily long string. You can use SUBSTRING() on the result to get a\nstandard soundex string. All nonalphabetic characters in str are\nignored. All international alphabetic characters outside the A-Z range\nare treated as vowels.\n\n*Important*: When using SOUNDEX(), you should be aware of the following\nlimitations:\n\no This function, as currently implemented, is intended to work well\n with strings that are in the English language only. Strings in other\n languages may not produce reliable results.\n\no This function is not guaranteed to provide consistent results with\n strings that use multibyte character sets, including utf-8.\n\n We hope to remove these limitations in a future release. See Bug\n #22638 for more information.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT SOUNDEX(\'Hello\');\n -> \'H400\'\nmysql> SELECT SOUNDEX(\'Quadratically\');\n -> \'Q36324\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(300,'MBRTOUCHES',7,'MBRTouches(g1,g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangles of\nthe two geometries g1 and g2 touch. Two geometries spatially touch if\nthe interiors of the geometries do not intersect, but the boundary of\none of the geometries intersects either the boundary or the interior of\nthe other.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html'),(301,'DROP EVENT',40,'Syntax:\nDROP EVENT [IF EXISTS] event_name\n\nThis statement drops the event named event_name. The event immediately\nceases being active, and is deleted completely from the server.\n\nIf the event does not exist, the error ERROR 1517 (HY000): Unknown\nevent \'event_name\' results. You can override this and cause the\nstatement to generate a warning for nonexistent events instead using IF\nEXISTS.\n\nThis statement requires the EVENT privilege for the schema to which the\nevent to be dropped belongs.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-event.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-event.html'),(302,'INSERT SELECT',28,'Syntax:\nINSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]\n [INTO] tbl_name [(col_name,...)]\n SELECT ...\n [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]\n\nWith INSERT ... SELECT, you can quickly insert many rows into a table\nfrom one or many tables. For example:\n\nINSERT INTO tbl_temp2 (fld_id)\n SELECT tbl_temp1.fld_order_id\n FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/insert-select.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/insert-select.html'),(303,'CREATE PROCEDURE',40,'Syntax:\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n PROCEDURE sp_name ([proc_parameter[,...]])\n [characteristic ...] routine_body\n\nCREATE\n [DEFINER = { user | CURRENT_USER }]\n FUNCTION sp_name ([func_parameter[,...]])\n RETURNS type\n [characteristic ...] routine_body\n\nproc_parameter:\n [ IN | OUT | INOUT ] param_name type\n\nfunc_parameter:\n param_name type\n\ntype:\n Any valid MySQL data type\n\ncharacteristic:\n COMMENT \'string\'\n | LANGUAGE SQL\n | [NOT] DETERMINISTIC\n | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n\nroutine_body:\n Valid SQL routine statement\n\nThese statements create stored routines. By default, a routine is\nassociated with the default database. To associate the routine\nexplicitly with a given database, specify the name as db_name.sp_name\nwhen you create it.\n\nThe CREATE FUNCTION statement is also used in MySQL to support UDFs\n(user-defined functions). See\nhttp://dev.mysql.com/doc/refman/5.5/en/adding-functions.html. A UDF can\nbe regarded as an external stored function. Stored functions share\ntheir namespace with UDFs. See\nhttp://dev.mysql.com/doc/refman/5.5/en/function-resolution.html, for\nthe rules describing how the server interprets references to different\nkinds of functions.\n\nTo invoke a stored procedure, use the CALL statement (see [HELP CALL]).\nTo invoke a stored function, refer to it in an expression. The function\nreturns a value during expression evaluation.\n\nCREATE PROCEDURE and CREATE FUNCTION require the CREATE ROUTINE\nprivilege. They might also require the SUPER privilege, depending on\nthe DEFINER value, as described later in this section. If binary\nlogging is enabled, CREATE FUNCTION might require the SUPER privilege,\nas described in\nhttp://dev.mysql.com/doc/refman/5.5/en/stored-programs-logging.html.\n\nBy default, MySQL automatically grants the ALTER ROUTINE and EXECUTE\nprivileges to the routine creator. This behavior can be changed by\ndisabling the automatic_sp_privileges system variable. See\nhttp://dev.mysql.com/doc/refman/5.5/en/stored-routines-privileges.html.\n\nThe DEFINER and SQL SECURITY clauses specify the security context to be\nused when checking access privileges at routine execution time, as\ndescribed later in this section.\n\nIf the routine name is the same as the name of a built-in SQL function,\na syntax error occurs unless you use a space between the name and the\nfollowing parenthesis when defining the routine or invoking it later.\nFor this reason, avoid using the names of existing SQL functions for\nyour own stored routines.\n\nThe IGNORE_SPACE SQL mode applies to built-in functions, not to stored\nroutines. It is always permissible to have spaces after a stored\nroutine name, regardless of whether IGNORE_SPACE is enabled.\n\nThe parameter list enclosed within parentheses must always be present.\nIf there are no parameters, an empty parameter list of () should be\nused. Parameter names are not case sensitive.\n\nEach parameter is an IN parameter by default. To specify otherwise for\na parameter, use the keyword OUT or INOUT before the parameter name.\n\n*Note*: Specifying a parameter as IN, OUT, or INOUT is valid only for a\nPROCEDURE. For a FUNCTION, parameters are always regarded as IN\nparameters.\n\nAn IN parameter passes a value into a procedure. The procedure might\nmodify the value, but the modification is not visible to the caller\nwhen the procedure returns. An OUT parameter passes a value from the\nprocedure back to the caller. Its initial value is NULL within the\nprocedure, and its value is visible to the caller when the procedure\nreturns. An INOUT parameter is initialized by the caller, can be\nmodified by the procedure, and any change made by the procedure is\nvisible to the caller when the procedure returns.\n\nFor each OUT or INOUT parameter, pass a user-defined variable in the\nCALL statement that invokes the procedure so that you can obtain its\nvalue when the procedure returns. If you are calling the procedure from\nwithin another stored procedure or function, you can also pass a\nroutine parameter or local routine variable as an IN or INOUT\nparameter.\n\nRoutine parameters cannot be referenced in statements prepared within\nthe routine; see\nhttp://dev.mysql.com/doc/refman/5.5/en/stored-program-restrictions.html\n.\n\nThe following example shows a simple stored procedure that uses an OUT\nparameter:\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE simpleproc (OUT param1 INT)\n -> BEGIN\n -> SELECT COUNT(*) INTO param1 FROM t;\n -> END//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> delimiter ;\n\nmysql> CALL simpleproc(@a);\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT @a;\n+------+\n| @a |\n+------+\n| 3 |\n+------+\n1 row in set (0.00 sec)\n\nThe example uses the mysql client delimiter command to change the\nstatement delimiter from ; to // while the procedure is being defined.\nThis enables the ; delimiter used in the procedure body to be passed\nthrough to the server rather than being interpreted by mysql itself.\nSee\nhttp://dev.mysql.com/doc/refman/5.5/en/stored-programs-defining.html.\n\nThe RETURNS clause may be specified only for a FUNCTION, for which it\nis mandatory. It indicates the return type of the function, and the\nfunction body must contain a RETURN value statement. If the RETURN\nstatement returns a value of a different type, the value is coerced to\nthe proper type. For example, if a function specifies an ENUM or SET\nvalue in the RETURNS clause, but the RETURN statement returns an\ninteger, the value returned from the function is the string for the\ncorresponding ENUM member of set of SET members.\n\nThe following example function takes a parameter, performs an operation\nusing an SQL function, and returns the result. In this case, it is\nunnecessary to use delimiter because the function definition contains\nno internal ; statement delimiters:\n\nmysql> CREATE FUNCTION hello (s CHAR(20))\nmysql> RETURNS CHAR(50) DETERMINISTIC\n -> RETURN CONCAT(\'Hello, \',s,\'!\');\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT hello(\'world\');\n+----------------+\n| hello(\'world\') |\n+----------------+\n| Hello, world! |\n+----------------+\n1 row in set (0.00 sec)\n\nParameter types and function return types can be declared to use any\nvalid data type, except that the COLLATE attribute cannot be used prior\nto MySQL 5.5.3. As of 5.5.3, COLLATE can be used if preceded by the\nCHARACTER SET attribute.\n\nThe routine_body consists of a valid SQL routine statement. This can be\na simple statement such as SELECT or INSERT, or a compound statement\nwritten using BEGIN and END. Compound statements can contain\ndeclarations, loops, and other control structure statements. The syntax\nfor these statements is described in\nhttp://dev.mysql.com/doc/refman/5.5/en/sql-syntax-compound-statements.h\ntml.\n\nMySQL permits routines to contain DDL statements, such as CREATE and\nDROP. MySQL also permits stored procedures (but not stored functions)\nto contain SQL transaction statements such as COMMIT. Stored functions\nmay not contain statements that perform explicit or implicit commit or\nrollback. Support for these statements is not required by the SQL\nstandard, which states that each DBMS vendor may decide whether to\npermit them.\n\nStatements that return a result set can be used within a stored\nprocedure but not within a stored function. This prohibition includes\nSELECT statements that do not have an INTO var_list clause and other\nstatements such as SHOW, EXPLAIN, and CHECK TABLE. For statements that\ncan be determined at function definition time to return a result set, a\nNot allowed to return a result set from a function error occurs\n(ER_SP_NO_RETSET). For statements that can be determined only at\nruntime to return a result set, a PROCEDURE %s can\'t return a result\nset in the given context error occurs (ER_SP_BADSELECT).\n\nUSE statements within stored routines are not permitted. When a routine\nis invoked, an implicit USE db_name is performed (and undone when the\nroutine terminates). The causes the routine to have the given default\ndatabase while it executes. References to objects in databases other\nthan the routine default database should be qualified with the\nappropriate database name.\n\nFor additional information about statements that are not permitted in\nstored routines, see\nhttp://dev.mysql.com/doc/refman/5.5/en/stored-program-restrictions.html\n.\n\nFor information about invoking stored procedures from within programs\nwritten in a language that has a MySQL interface, see [HELP CALL].\n\nMySQL stores the sql_mode system variable setting in effect when a\nroutine is created or altered, and always executes the routine with\nthis setting in force, regardless of the current server SQL mode when\nthe routine begins executing.\n\nThe switch from the SQL mode of the invoker to that of the routine\noccurs after evaluation of arguments and assignment of the resulting\nvalues to routine parameters. If you define a routine in strict SQL\nmode but invoke it in nonstrict mode, assignment of arguments to\nroutine parameters does not take place in strict mode. If you require\nthat expressions passed to a routine be assigned in strict SQL mode,\nyou should invoke the routine with strict mode in effect.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html'),(304,'VARBINARY',23,'VARBINARY(M)\n\nThe VARBINARY type is similar to the VARCHAR type, but stores binary\nbyte strings rather than nonbinary character strings. M represents the\nmaximum column length in bytes.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(305,'LOAD INDEX',27,'Syntax:\nLOAD INDEX INTO CACHE\n tbl_index_list [, tbl_index_list] ...\n\ntbl_index_list:\n tbl_name\n [PARTITION (partition_list | ALL)]\n [[INDEX|KEY] (index_name[, index_name] ...)]\n [IGNORE LEAVES]\n\npartition_list:\n partition_name[, partition_name][, ...]\n\nThe LOAD INDEX INTO CACHE statement preloads a table index into the key\ncache to which it has been assigned by an explicit CACHE INDEX\nstatement, or into the default key cache otherwise.\n\nLOAD INDEX INTO CACHE is used only for MyISAM tables. In MySQL 5.5, it\nis also supported for partitioned MyISAM tables; in addition, indexes\non partitioned tables can be preloaded for one, several, or all\npartitions.\n\nThe IGNORE LEAVES modifier causes only blocks for the nonleaf nodes of\nthe index to be preloaded.\n\nIGNORE LEAVES is also supported for partitioned MyISAM tables.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/load-index.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/load-index.html'),(306,'UNION',28,'Syntax:\nSELECT ...\nUNION [ALL | DISTINCT] SELECT ...\n[UNION [ALL | DISTINCT] SELECT ...]\n\nUNION is used to combine the result from multiple SELECT statements\ninto a single result set.\n\nThe column names from the first SELECT statement are used as the column\nnames for the results returned. Selected columns listed in\ncorresponding positions of each SELECT statement should have the same\ndata type. (For example, the first column selected by the first\nstatement should have the same type as the first column selected by the\nother statements.)\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/union.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/union.html'),(307,'TO_DAYS',32,'Syntax:\nTO_DAYS(date)\n\nGiven a date date, returns a day number (the number of days since year\n0).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT TO_DAYS(950501);\n -> 728779\nmysql> SELECT TO_DAYS(\'2007-10-07\');\n -> 733321\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(308,'NOT REGEXP',38,'Syntax:\nexpr NOT REGEXP pat, expr NOT RLIKE pat\n\nThis is the same as NOT (expr REGEXP pat).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/regexp.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/regexp.html'),(309,'SHOW INDEX',27,'Syntax:\nSHOW {INDEX | INDEXES | KEYS}\n {FROM | IN} tbl_name\n [{FROM | IN} db_name]\n [WHERE expr]\n\nSHOW INDEX returns table index information. The format resembles that\nof the SQLStatistics call in ODBC. This statement requires some\nprivilege for any column in the table.\nYou can use db_name.tbl_name as an alternative to the tbl_name FROM\ndb_name syntax. These two statements are equivalent:\n\nSHOW INDEX FROM mytable FROM mydb;\nSHOW INDEX FROM mydb.mytable;\n\nThe WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html.\n\nYou can also list a table\'s indexes with the mysqlshow -k db_name\ntbl_name command.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-index.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-index.html'),(310,'SHOW CREATE DATABASE',27,'Syntax:\nSHOW CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name\n\nShows the CREATE DATABASE statement that creates the named database. If\nthe SHOW statement includes an IF NOT EXISTS clause, the output too\nincludes such a clause. SHOW CREATE SCHEMA is a synonym for SHOW CREATE\nDATABASE.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-create-database.html\n\n','mysql> SHOW CREATE DATABASE test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test`\n /*!40100 DEFAULT CHARACTER SET latin1 */\n\nmysql> SHOW CREATE SCHEMA test\\G\n*************************** 1. row ***************************\n Database: test\nCreate Database: CREATE DATABASE `test`\n /*!40100 DEFAULT CHARACTER SET latin1 */\n','http://dev.mysql.com/doc/refman/5.5/en/show-create-database.html'),(311,'LEAVE',24,'Syntax:\nLEAVE label\n\nThis statement is used to exit the flow control construct that has the\ngiven label. If the label is for the outermost stored program block,\nLEAVE exits the program.\n\nLEAVE can be used within BEGIN ... END or loop constructs (LOOP,\nREPEAT, WHILE).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/leave.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/leave.html'),(312,'NOT IN',20,'Syntax:\nexpr NOT IN (value,...)\n\nThis is the same as NOT (expr IN (value,...)).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(313,'!',15,'Syntax:\nNOT, !\n\nLogical NOT. Evaluates to 1 if the operand is 0, to 0 if the operand is\nnonzero, and NOT NULL returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/logical-operators.html\n\n','mysql> SELECT NOT 10;\n -> 0\nmysql> SELECT NOT 0;\n -> 1\nmysql> SELECT NOT NULL;\n -> NULL\nmysql> SELECT ! (1+1);\n -> 0\nmysql> SELECT ! 1+1;\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/logical-operators.html'),(314,'DECLARE HANDLER',24,'Syntax:\nDECLARE handler_action HANDLER\n FOR condition_value [, condition_value] ...\n statement\n\nhandler_action:\n CONTINUE\n | EXIT\n | UNDO\n\ncondition_value:\n mysql_error_code\n | SQLSTATE [VALUE] sqlstate_value\n | condition_name\n | SQLWARNING\n | NOT FOUND\n | SQLEXCEPTION\n\nThe DECLARE ... HANDLER statement specifies a handler that deals with\none or more conditions. If one of these conditions occurs, the\nspecified statement executes. statement can be a simple statement such\nas SET var_name = value, or a compound statement written using BEGIN\nand END (see [HELP BEGIN END]).\n\nHandler declarations must appear after variable or condition\ndeclarations.\n\nThe handler_action value indicates what action the handler takes after\nexecution of the handler statement:\n\no CONTINUE: Execution of the current program continues.\n\no EXIT: Execution terminates for the BEGIN ... END compound statement\n in which the handler is declared. This is true even if the condition\n occurs in an inner block.\n\no UNDO: Not supported.\n\nThe condition_value for DECLARE ... HANDLER indicates the specific\ncondition or class of conditions that activates the handler. It can\ntake the following forms:\n\no mysql_error_code: An integer literal indicating a MySQL error code,\n such as 1051 to specify \"unknown table\":\n\nDECLARE CONTINUE HANDLER FOR 1051\n BEGIN\n -- body of handler\n END;\n\n Do not use MySQL error code 0 because that indicates success rather\n than an error condition. For a list of MySQL error codes, see\n http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html.\n\no SQLSTATE [VALUE] sqlstate_value: A 5-character string literal\n indicating an SQLSTATE value, such as \'42S01\' to specify \"unknown\n table\":\n\nDECLARE CONTINUE HANDLER FOR SQLSTATE \'42S02\'\n BEGIN\n -- body of handler\n END;\n\n Do not use SQLSTATE values that begin with \'00\' because those\n indicate success rather than an error condition. For a list of\n SQLSTATE values, see\n http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html.\n\no condition_name: A condition name previously specified with DECLARE\n ... CONDITION. A condition name can be associated with a MySQL error\n code or SQLSTATE value. See [HELP DECLARE CONDITION].\n\no SQLWARNING: Shorthand for the class of SQLSTATE values that begin\n with \'01\'.\n\nDECLARE CONTINUE HANDLER FOR SQLWARNING\n BEGIN\n -- body of handler\n END;\n\no NOT FOUND: Shorthand for the class of SQLSTATE values that begin with\n \'02\'. This is relevant within the context of cursors and is used to\n control what happens when a cursor reaches the end of a data set. If\n no more rows are available, a No Data condition occurs with SQLSTATE\n value \'02000\'. To detect this condition, you can set up a handler for\n it or for a NOT FOUND condition.\n\nDECLARE CONTINUE HANDLER FOR NOT FOUND\n BEGIN\n -- body of handler\n END;\n\n For another example, see\n http://dev.mysql.com/doc/refman/5.5/en/cursors.html. The NOT FOUND\n condition also occurs for SELECT ... INTO var_list statements that\n retrieve no rows.\n\no SQLEXCEPTION: Shorthand for the class of SQLSTATE values that do not\n begin with \'00\', \'01\', or \'02\'.\n\nDECLARE CONTINUE HANDLER FOR SQLEXCEPTION\n BEGIN\n -- body of handler\n END;\n\nIf a condition occurs for which no handler has been declared, the\naction taken depends on the condition class:\n\no For SQLEXCEPTION conditions, the stored program terminates at the\n statement that raised the condition, as if there were an EXIT\n handler. If the program was called by another stored program, the\n calling program handles the condition using the handler selection\n rules applied to its own handlers.\n\no For SQLWARNING conditions, the program continues executing, as if\n there were a CONTINUE handler.\n\no For NOT FOUND conditions, if the condition was raised normally, the\n action is CONTINUE. If it was raised by SIGNAL or RESIGNAL, the\n action is EXIT.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/declare-handler.html\n\n','mysql> CREATE TABLE test.t (s1 INT, PRIMARY KEY (s1));\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> delimiter //\n\nmysql> CREATE PROCEDURE handlerdemo ()\n -> BEGIN\n -> DECLARE CONTINUE HANDLER FOR SQLSTATE \'23000\' SET @x2 = 1;\n -> SET @x = 1;\n -> INSERT INTO test.t VALUES (1);\n -> SET @x = 2;\n -> INSERT INTO test.t VALUES (1);\n -> SET @x = 3;\n -> END;\n -> //\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> CALL handlerdemo()//\nQuery OK, 0 rows affected, 1 warning (0.01 sec)\n\nmysql> SHOW WARNINGS//\n+-------+------+---------------------------------------+\n| Level | Code | Message |\n+-------+------+---------------------------------------+\n| Error | 1062 | Duplicate entry \'1\' for key \'PRIMARY\' |\n+-------+------+---------------------------------------+\n1 row in set (0.00 sec)\n\n\nmysql> SELECT @x//\n +------+\n | @x |\n +------+\n | 3 |\n +------+\n 1 row in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.5/en/declare-handler.html'),(315,'DOUBLE',23,'DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]\n\nA normal-size (double-precision) floating-point number. Permissible\nvalues are -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and\n2.2250738585072014E-308 to 1.7976931348623157E+308. These are the\ntheoretical limits, based on the IEEE standard. The actual range might\nbe slightly smaller depending on your hardware or operating system.\n\nM is the total number of digits and D is the number of digits following\nthe decimal point. If M and D are omitted, values are stored to the\nlimits permitted by the hardware. A double-precision floating-point\nnumber is accurate to approximately 15 decimal places.\n\nUNSIGNED, if specified, disallows negative values.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(316,'TIME',23,'TIME\n\nA time. The range is \'-838:59:59\' to \'838:59:59\'. MySQL displays TIME\nvalues in \'HH:MM:SS\' format, but permits assignment of values to TIME\ncolumns using either strings or numbers.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-type-overview.html'),(317,'X',11,'X(p)\n\nReturns the X-coordinate value for the Point object p as a\ndouble-precision number.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-point-property-functions.html\n\n','mysql> SELECT X(POINT(56.7, 53.34));\n+-----------------------+\n| X(POINT(56.7, 53.34)) |\n+-----------------------+\n| 56.7 |\n+-----------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-point-property-functions.html'),(318,'SYSTEM_USER',17,'Syntax:\nSYSTEM_USER()\n\nSYSTEM_USER() is a synonym for USER().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(319,'FOUND_ROWS',17,'Syntax:\nFOUND_ROWS()\n\nA SELECT statement may include a LIMIT clause to restrict the number of\nrows the server returns to the client. In some cases, it is desirable\nto know how many rows the statement would have returned without the\nLIMIT, but without running the statement again. To obtain this row\ncount, include a SQL_CALC_FOUND_ROWS option in the SELECT statement,\nand then invoke FOUND_ROWS() afterward:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name\n -> WHERE id > 100 LIMIT 10;\nmysql> SELECT FOUND_ROWS();\n','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(320,'CROSSES',31,'Crosses(g1,g2)\n\nReturns 1 if g1 spatially crosses g2. Returns NULL if g1 is a Polygon\nor a MultiPolygon, or if g2 is a Point or a MultiPoint. Otherwise,\nreturns 0.\n\nThe term spatially crosses denotes a spatial relation between two given\ngeometries that has the following properties:\n\no The two geometries intersect\n\no Their intersection results in a geometry that has a dimension that is\n one less than the maximum dimension of the two given geometries\n\no Their intersection is not equal to either of the two given geometries\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-object-shapes.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-object-shapes.html'),(321,'TRUNCATE TABLE',40,'Syntax:\nTRUNCATE [TABLE] tbl_name\n\nTRUNCATE TABLE empties a table completely. It requires the DROP\nprivilege.\n\nLogically, TRUNCATE TABLE is similar to a DELETE statement that deletes\nall rows, or a sequence of DROP TABLE and CREATE TABLE statements. To\nachieve high performance, it bypasses the DML method of deleting data.\nThus, it cannot be rolled back, it does not cause ON DELETE triggers to\nfire, and it cannot be performed for InnoDB tables with parent-child\nforeign key relationships.\n\nAlthough TRUNCATE TABLE is similar to DELETE, it is classified as a DDL\nstatement rather than a DML statement. It differs from DELETE in the\nfollowing ways in MySQL 5.5:\n\no Truncate operations drop and re-create the table, which is much\n faster than deleting rows one by one, particularly for large tables.\n\no Truncate operations cause an implicit commit, and so cannot be rolled\n back.\n\no Truncation operations cannot be performed if the session holds an\n active table lock.\n\no TRUNCATE TABLE fails for an InnoDB table if there are any FOREIGN KEY\n constraints from other tables that reference the table. Foreign key\n constraints between columns of the same table are permitted.\n\no Truncation operations do not return a meaningful value for the number\n of deleted rows. The usual result is \"0 rows affected,\" which should\n be interpreted as \"no information.\"\n\no As long as the table format file tbl_name.frm is valid, the table can\n be re-created as an empty table with TRUNCATE TABLE, even if the data\n or index files have become corrupted.\n\no Any AUTO_INCREMENT value is reset to its start value. This is true\n even for MyISAM and InnoDB, which normally do not reuse sequence\n values.\n\no When used with partitioned tables, TRUNCATE TABLE preserves the\n partitioning; that is, the data and index files are dropped and\n re-created, while the partition definitions (.par) file is\n unaffected.\n\no The TRUNCATE TABLE statement does not invoke ON DELETE triggers.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/truncate-table.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/truncate-table.html'),(322,'BIT_XOR',16,'Syntax:\nBIT_XOR(expr)\n\nReturns the bitwise XOR of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(323,'CURRENT_DATE',32,'Syntax:\nCURRENT_DATE, CURRENT_DATE()\n\nCURRENT_DATE and CURRENT_DATE() are synonyms for CURDATE().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(324,'START SLAVE',8,'Syntax:\nSTART SLAVE [thread_types]\n\nSTART SLAVE [SQL_THREAD] UNTIL\n MASTER_LOG_FILE = \'log_name\', MASTER_LOG_POS = log_pos\n\nSTART SLAVE [SQL_THREAD] UNTIL\n RELAY_LOG_FILE = \'log_name\', RELAY_LOG_POS = log_pos\n\nthread_types:\n [thread_type [, thread_type] ... ]\n\nthread_type: IO_THREAD | SQL_THREAD\n\nSTART SLAVE with no thread_type options starts both of the slave\nthreads. The I/O thread reads events from the master server and stores\nthem in the relay log. The SQL thread reads events from the relay log\nand executes them. START SLAVE requires the SUPER privilege.\n\nIf START SLAVE succeeds in starting the slave threads, it returns\nwithout any error. However, even in that case, it might be that the\nslave threads start and then later stop (for example, because they do\nnot manage to connect to the master or read its binary log, or some\nother problem). START SLAVE does not warn you about this. You must\ncheck the slave\'s error log for error messages generated by the slave\nthreads, or check that they are running satisfactorily with SHOW SLAVE\nSTATUS.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/start-slave.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/start-slave.html'),(325,'AREA',2,'Area(poly)\n\nReturns a double-precision number indicating the area of the argument,\nas measured in its spatial reference system. For arguments of dimension\n0 or 1, the result is 0.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly = \'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))\';\nmysql> SELECT Area(GeomFromText(@poly));\n+---------------------------+\n| Area(GeomFromText(@poly)) |\n+---------------------------+\n| 4 |\n+---------------------------+\n\nmysql> SET @mpoly =\n -> \'MultiPolygon(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1)))\';\nmysql> SELECT Area(GeomFromText(@mpoly));\n+----------------------------+\n| Area(GeomFromText(@mpoly)) |\n+----------------------------+\n| 8 |\n+----------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-polygon-property-functions.html'),(326,'FLUSH',27,'Syntax:\nFLUSH [NO_WRITE_TO_BINLOG | LOCAL]\n flush_option [, flush_option] ...\n\nThe FLUSH statement has several variant forms that clear or reload\nvarious internal caches, flush tables, or acquire locks. To execute\nFLUSH, you must have the RELOAD privilege. Specific flush options might\nrequire additional privileges, as described later.\n\nBy default, the server writes FLUSH statements to the binary log so\nthat they replicate to replication slaves. To suppress logging, specify\nthe optional NO_WRITE_TO_BINLOG keyword or its alias LOCAL.\n\n*Note*: FLUSH LOGS, FLUSH MASTER, FLUSH SLAVE, and FLUSH TABLES WITH\nREAD LOCK (with or without a table list) are not written to the binary\nlog in any case because they would cause problems if replicated to a\nslave.\n\nSending a SIGHUP signal to the server causes several flush operations\nto occur that are similar to various forms of the FLUSH statement. See\nhttp://dev.mysql.com/doc/refman/5.5/en/server-signal-response.html.\n\nThe FLUSH statement causes an implicit commit. See\nhttp://dev.mysql.com/doc/refman/5.5/en/implicit-commit.html.\n\nThe RESET statement is similar to FLUSH. See [HELP RESET], for\ninformation about using the RESET statement with replication.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/flush.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/flush.html'),(327,'BEGIN END',24,'Syntax:\n[begin_label:] BEGIN\n [statement_list]\nEND [end_label]\n\nBEGIN ... END syntax is used for writing compound statements, which can\nappear within stored programs (stored procedures and functions,\ntriggers, and events). A compound statement can contain multiple\nstatements, enclosed by the BEGIN and END keywords. statement_list\nrepresents a list of one or more statements, each terminated by a\nsemicolon (;) statement delimiter. The statement_list itself is\noptional, so the empty compound statement (BEGIN END) is legal.\n\nBEGIN ... END blocks can be nested.\n\nUse of multiple statements requires that a client is able to send\nstatement strings containing the ; statement delimiter. In the mysql\ncommand-line client, this is handled with the delimiter command.\nChanging the ; end-of-statement delimiter (for example, to //) permit ;\nto be used in a program body. For an example, see\nhttp://dev.mysql.com/doc/refman/5.5/en/stored-programs-defining.html.\n\nA BEGIN ... END block can be labeled. See [HELP labels].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/begin-end.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/begin-end.html'),(328,'SHOW PROCEDURE STATUS',27,'Syntax:\nSHOW PROCEDURE STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement is a MySQL extension. It returns characteristics of a\nstored procedure, such as the database, name, type, creator, creation\nand modification dates, and character set information. A similar\nstatement, SHOW FUNCTION STATUS, displays information about stored\nfunctions (see [HELP SHOW FUNCTION STATUS]).\n\nThe LIKE clause, if present, indicates which procedure or function\nnames to match. The WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-procedure-status.html\n\n','mysql> SHOW PROCEDURE STATUS LIKE \'sp1\'\\G\n*************************** 1. row ***************************\n Db: test\n Name: sp1\n Type: PROCEDURE\n Definer: testuser@localhost\n Modified: 2004-08-03 15:29:37\n Created: 2004-08-03 15:29:37\n Security_type: DEFINER\n Comment:\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.5/en/show-procedure-status.html'),(329,'SHOW WARNINGS',27,'Syntax:\nSHOW WARNINGS [LIMIT [offset,] row_count]\nSHOW COUNT(*) WARNINGS\n\nSHOW WARNINGS is a diagnostic statement that displays information about\nthe conditions (errors, warnings, and notes) resulting from executing a\nstatement in the current session. Warnings are generated for DML\nstatements such as INSERT, UPDATE, and LOAD DATA INFILE as well as DDL\nstatements such as CREATE TABLE and ALTER TABLE.\n\nThe LIMIT clause has the same syntax as for the SELECT statement. See\nhttp://dev.mysql.com/doc/refman/5.5/en/select.html.\n\nSHOW WARNINGS is also used following EXPLAIN EXTENDED, to display the\nextra information generated by EXPLAIN when the EXTENDED keyword is\nused. See http://dev.mysql.com/doc/refman/5.5/en/explain-extended.html.\n\nSHOW WARNINGS displays information about the conditions resulting from\nthe most recent statement in the current session that generated\nmessages. It shows nothing if the most recent statement used a table\nand generated no messages. (That is, statements that use a table but\ngenerate no messages clear the message list.) Statements that do not\nuse tables and do not generate messages have no effect on the message\nlist.\n\nThe SHOW COUNT(*) WARNINGS diagnostic statement displays the total\nnumber of errors, warnings, and notes. You can also retrieve this\nnumber from the warning_count system variable:\n\nSHOW COUNT(*) WARNINGS;\nSELECT @@warning_count;\n\nA related diagnostic statement, SHOW ERRORS, shows only error\nconditions (it excludes warnings and notes), and SHOW COUNT(*) ERRORS\nstatement displays the total number of errors. See [HELP SHOW ERRORS].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-warnings.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-warnings.html'),(330,'DROP USER',10,'Syntax:\nDROP USER user [, user] ...\n\nThe DROP USER statement removes one or more MySQL accounts and their\nprivileges. It removes privilege rows for the account from all grant\ntables. An error occurs for accounts that do not exist.\n\nTo use DROP USER, you must have the global CREATE USER privilege or the\nDELETE privilege for the mysql database. When the read_only system\nvariable is enabled, DROP USER additionally requires the SUPER\nprivilege.\n\nEach account name uses the format described in\nhttp://dev.mysql.com/doc/refman/5.5/en/account-names.html. For example:\n\nDROP USER \'jeffrey\'@\'localhost\';\n\nIf you specify only the user name part of the account name, a host name\npart of \'%\' is used.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-user.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-user.html'),(331,'STDDEV_POP',16,'Syntax:\nSTDDEV_POP(expr)\n\nReturns the population standard deviation of expr (the square root of\nVAR_POP()). You can also use STD() or STDDEV(), which are equivalent\nbut not standard SQL.\n\nSTDDEV_POP() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(332,'SHOW CHARACTER SET',27,'Syntax:\nSHOW CHARACTER SET\n [LIKE \'pattern\' | WHERE expr]\n\nThe SHOW CHARACTER SET statement shows all available character sets.\nThe LIKE clause, if present, indicates which character set names to\nmatch. The WHERE clause can be given to select rows using more general\nconditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html. For example:\n\nmysql> SHOW CHARACTER SET LIKE \'latin%\';\n+---------+-----------------------------+-------------------+--------+\n| Charset | Description | Default collation | Maxlen |\n+---------+-----------------------------+-------------------+--------+\n| latin1 | cp1252 West European | latin1_swedish_ci | 1 |\n| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |\n| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |\n| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |\n+---------+-----------------------------+-------------------+--------+\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-character-set.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-character-set.html'),(333,'SUBSTRING',38,'Syntax:\nSUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len),\nSUBSTRING(str FROM pos FOR len)\n\nThe forms without a len argument return a substring from string str\nstarting at position pos. The forms with a len argument return a\nsubstring len characters long from string str, starting at position\npos. The forms that use FROM are standard SQL syntax. It is also\npossible to use a negative value for pos. In this case, the beginning\nof the substring is pos characters from the end of the string, rather\nthan the beginning. A negative value may be used for pos in any of the\nforms of this function.\n\nFor all forms of SUBSTRING(), the position of the first character in\nthe string from which the substring is to be extracted is reckoned as\n1.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT SUBSTRING(\'Quadratically\',5);\n -> \'ratically\'\nmysql> SELECT SUBSTRING(\'foobarbar\' FROM 4);\n -> \'barbar\'\nmysql> SELECT SUBSTRING(\'Quadratically\',5,6);\n -> \'ratica\'\nmysql> SELECT SUBSTRING(\'Sakila\', -3);\n -> \'ila\'\nmysql> SELECT SUBSTRING(\'Sakila\', -5, 3);\n -> \'aki\'\nmysql> SELECT SUBSTRING(\'Sakila\' FROM -4 FOR 2);\n -> \'ki\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(334,'ISEMPTY',37,'IsEmpty(g)\n\nThis function is a placeholder that returns 0 for any valid geometry\nvalue, 1 for any invalid geometry value or NULL.\n\nMySQL does not support GIS EMPTY values such as POINT EMPTY.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-general-property-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-general-property-functions.html'),(335,'SHOW FUNCTION STATUS',27,'Syntax:\nSHOW FUNCTION STATUS\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement is similar to SHOW PROCEDURE STATUS but for stored\nfunctions. See [HELP SHOW PROCEDURE STATUS].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-function-status.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-function-status.html'),(336,'LTRIM',38,'Syntax:\nLTRIM(str)\n\nReturns the string str with leading space characters removed.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT LTRIM(\' barbar\');\n -> \'barbar\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(337,'INTERSECTS',31,'Intersects(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 spatially intersects g2.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mbr.html'),(338,'CALL',28,'Syntax:\nCALL sp_name([parameter[,...]])\nCALL sp_name[()]\n\nThe CALL statement invokes a stored procedure that was defined\npreviously with CREATE PROCEDURE.\n\nStored procedures that take no arguments can be invoked without\nparentheses. That is, CALL p() and CALL p are equivalent.\n\nCALL can pass back values to its caller using parameters that are\ndeclared as OUT or INOUT parameters. When the procedure returns, a\nclient program can also obtain the number of rows affected for the\nfinal statement executed within the routine: At the SQL level, call the\nROW_COUNT() function; from the C API, call the mysql_affected_rows()\nfunction.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/call.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/call.html'),(339,'VALUES',14,'Syntax:\nVALUES(col_name)\n\nIn an INSERT ... ON DUPLICATE KEY UPDATE statement, you can use the\nVALUES(col_name) function in the UPDATE clause to refer to column\nvalues from the INSERT portion of the statement. In other words,\nVALUES(col_name) in the UPDATE clause refers to the value of col_name\nthat would be inserted, had no duplicate-key conflict occurred. This\nfunction is especially useful in multiple-row inserts. The VALUES()\nfunction is meaningful only in the ON DUPLICATE KEY UPDATE clause of\nINSERT statements and returns NULL otherwise. See\nhttp://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)\n -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);\n','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(340,'MBRDISJOINT',7,'MBRDisjoint(g1,g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangles of\nthe two geometries g1 and g2 are disjoint (do not intersect).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html'),(341,'SUBSTRING_INDEX',38,'Syntax:\nSUBSTRING_INDEX(str,delim,count)\n\nReturns the substring from string str before count occurrences of the\ndelimiter delim. If count is positive, everything to the left of the\nfinal delimiter (counting from the left) is returned. If count is\nnegative, everything to the right of the final delimiter (counting from\nthe right) is returned. SUBSTRING_INDEX() performs a case-sensitive\nmatch when searching for delim.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', 2);\n -> \'www.mysql\'\nmysql> SELECT SUBSTRING_INDEX(\'www.mysql.com\', \'.\', -2);\n -> \'mysql.com\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(342,'ENCODE',12,'Syntax:\nENCODE(str,pass_str)\n\nEncrypt str using pass_str as the password. The result is a binary\nstring of the same length as str. To decrypt the result, use DECODE().\n\nThe ENCODE() function should no longer be used. If you still need to\nuse ENCODE(), a salt value must be used with it to reduce risk. For\nexample:\n\nENCODE(\'cleartext\', CONCAT(\'my_random_salt\',\'my_secret_password\'))\n\nA new random salt value must be used whenever a password is updated.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(343,'LOOP',24,'Syntax:\n[begin_label:] LOOP\n statement_list\nEND LOOP [end_label]\n\nLOOP implements a simple loop construct, enabling repeated execution of\nthe statement list, which consists of one or more statements, each\nterminated by a semicolon (;) statement delimiter. The statements\nwithin the loop are repeated until the loop is terminated. Usually,\nthis is accomplished with a LEAVE statement. Within a stored function,\nRETURN can also be used, which exits the function entirely.\n\nNeglecting to include a loop-termination statement results in an\ninfinite loop.\n\nA LOOP statement can be labeled. For the rules regarding label use, see\n[HELP labels].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/loop.html\n\n','CREATE PROCEDURE doiterate(p1 INT)\nBEGIN\n label1: LOOP\n SET p1 = p1 + 1;\n IF p1 < 10 THEN\n ITERATE label1;\n END IF;\n LEAVE label1;\n END LOOP label1;\n SET @x = p1;\nEND;\n','http://dev.mysql.com/doc/refman/5.5/en/loop.html'),(344,'TRUNCATE',3,'Syntax:\nTRUNCATE(X,D)\n\nReturns the number X, truncated to D decimal places. If D is 0, the\nresult has no decimal point or fractional part. D can be negative to\ncause D digits left of the decimal point of the value X to become zero.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT TRUNCATE(1.223,1);\n -> 1.2\nmysql> SELECT TRUNCATE(1.999,1);\n -> 1.9\nmysql> SELECT TRUNCATE(1.999,0);\n -> 1\nmysql> SELECT TRUNCATE(-1.999,1);\n -> -1.9\nmysql> SELECT TRUNCATE(122,-2);\n -> 100\nmysql> SELECT TRUNCATE(10.28*100,0);\n -> 1028\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(345,'TIMESTAMPADD',32,'Syntax:\nTIMESTAMPADD(unit,interval,datetime_expr)\n\nAdds the integer expression interval to the date or datetime expression\ndatetime_expr. The unit for interval is given by the unit argument,\nwhich should be one of the following values: MICROSECOND\n(microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, or\nYEAR.\n\nIt is possible to use FRAC_SECOND in place of MICROSECOND, but\nFRAC_SECOND is deprecated. FRAC_SECOND was removed in MySQL 5.5.3.\n\nThe unit value may be specified using one of keywords as shown, or with\na prefix of SQL_TSI_. For example, DAY and SQL_TSI_DAY both are legal.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT TIMESTAMPADD(MINUTE,1,\'2003-01-02\');\n -> \'2003-01-02 00:01:00\'\nmysql> SELECT TIMESTAMPADD(WEEK,1,\'2003-01-02\');\n -> \'2003-01-09\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(346,'SHOW',27,'SHOW has many forms that provide information about databases, tables,\ncolumns, or status information about the server. This section describes\nthose following:\n\nSHOW AUTHORS\nSHOW {BINARY | MASTER} LOGS\nSHOW BINLOG EVENTS [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count]\nSHOW CHARACTER SET [like_or_where]\nSHOW COLLATION [like_or_where]\nSHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]\nSHOW CONTRIBUTORS\nSHOW CREATE DATABASE db_name\nSHOW CREATE EVENT event_name\nSHOW CREATE FUNCTION func_name\nSHOW CREATE PROCEDURE proc_name\nSHOW CREATE TABLE tbl_name\nSHOW CREATE TRIGGER trigger_name\nSHOW CREATE VIEW view_name\nSHOW DATABASES [like_or_where]\nSHOW ENGINE engine_name {STATUS | MUTEX}\nSHOW [STORAGE] ENGINES\nSHOW ERRORS [LIMIT [offset,] row_count]\nSHOW EVENTS\nSHOW FUNCTION CODE func_name\nSHOW FUNCTION STATUS [like_or_where]\nSHOW GRANTS FOR user\nSHOW INDEX FROM tbl_name [FROM db_name]\nSHOW MASTER STATUS\nSHOW OPEN TABLES [FROM db_name] [like_or_where]\nSHOW PLUGINS\nSHOW PROCEDURE CODE proc_name\nSHOW PROCEDURE STATUS [like_or_where]\nSHOW PRIVILEGES\nSHOW [FULL] PROCESSLIST\nSHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]\nSHOW PROFILES\nSHOW SLAVE HOSTS\nSHOW SLAVE STATUS\nSHOW [GLOBAL | SESSION] STATUS [like_or_where]\nSHOW TABLE STATUS [FROM db_name] [like_or_where]\nSHOW [FULL] TABLES [FROM db_name] [like_or_where]\nSHOW TRIGGERS [FROM db_name] [like_or_where]\nSHOW [GLOBAL | SESSION] VARIABLES [like_or_where]\nSHOW WARNINGS [LIMIT [offset,] row_count]\n\nlike_or_where:\n LIKE \'pattern\'\n | WHERE expr\n\nIf the syntax for a given SHOW statement includes a LIKE \'pattern\'\npart, \'pattern\' is a string that can contain the SQL \"%\" and \"_\"\nwildcard characters. The pattern is useful for restricting statement\noutput to matching values.\n\nSeveral SHOW statements also accept a WHERE clause that provides more\nflexibility in specifying which rows to display. See\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show.html'),(347,'GREATEST',20,'Syntax:\nGREATEST(value1,value2,...)\n\nWith two or more arguments, returns the largest (maximum-valued)\nargument. The arguments are compared using the same rules as for\nLEAST().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT GREATEST(2,0);\n -> 2\nmysql> SELECT GREATEST(34.0,3.0,5.0,767.0);\n -> 767.0\nmysql> SELECT GREATEST(\'B\',\'A\',\'C\');\n -> \'C\'\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(348,'SHOW VARIABLES',27,'Syntax:\nSHOW [GLOBAL | SESSION] VARIABLES\n [LIKE \'pattern\' | WHERE expr]\n\nSHOW VARIABLES shows the values of MySQL system variables (see\nhttp://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html).\nThis statement does not require any privilege. It requires only the\nability to connect to the server.\n\nSystem variable information is also available from these sources:\n\no The GLOBAL_VARIABLES and SESSION_VARIABLES tables. See\n http://dev.mysql.com/doc/refman/5.5/en/variables-table.html.\n\no The mysqladmin variables command. See\n http://dev.mysql.com/doc/refman/5.5/en/mysqladmin.html.\n\nFor SHOW VARIABLES, a LIKE clause, if present, indicates which variable\nnames to match. A WHERE clause can be given to select rows using more\ngeneral conditions, as discussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html.\n\nSHOW VARIABLES accepts an optional GLOBAL or SESSION variable scope\nmodifier:\n\no With a GLOBAL modifier, the statement displays global system variable\n values. These are the values used to initialize the corresponding\n session variables for new connections to MySQL. As of MySQL 5.5.3, if\n a variable has no global value, no value is displayed. Before 5.5.3,\n the session value is displayed.\n\no With a SESSION modifier, the statement displays the system varaible\n values that are in effect for the current connection. If a variable\n has no session value, the global value is displayed. LOCAL is a\n synonym for SESSION.\n\no If no modifier is present, the default is SESSION.\n\nThe scope for each system variable is listed at\nhttp://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html.\n\nSHOW VARIABLES is subject to a version-dependent display-width limit.\nFor variables with very long values that are not completely displayed,\nuse SELECT as a workaround. For example:\n\nSELECT @@GLOBAL.innodb_data_file_path;\n\nMost system variables can be set at server startup (read-only variables\nsuch as version_comment are exceptions). Many can be changed at runtime\nwith the SET statement. See\nhttp://dev.mysql.com/doc/refman/5.5/en/using-system-variables.html, and\n[HELP SET].\nWith a LIKE clause, the statement displays only rows for those\nvariables with names that match the pattern. To obtain the row for a\nspecific variable, use a LIKE clause as shown:\n\nSHOW VARIABLES LIKE \'max_join_size\';\nSHOW SESSION VARIABLES LIKE \'max_join_size\';\n\nTo get a list of variables whose name match a pattern, use the \"%\"\nwildcard character in a LIKE clause:\n\nSHOW VARIABLES LIKE \'%size%\';\nSHOW GLOBAL VARIABLES LIKE \'%size%\';\n\nWildcard characters can be used in any position within the pattern to\nbe matched. Strictly speaking, because \"_\" is a wildcard that matches\nany single character, you should escape it as \"\\_\" to match it\nliterally. In practice, this is rarely necessary.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-variables.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-variables.html'),(349,'BINLOG',27,'Syntax:\nBINLOG \'str\'\n\nBINLOG is an internal-use statement. It is generated by the mysqlbinlog\nprogram as the printable representation of certain events in binary log\nfiles. (See http://dev.mysql.com/doc/refman/5.5/en/mysqlbinlog.html.)\nThe \'str\' value is a base 64-encoded string the that server decodes to\ndetermine the data change indicated by the corresponding event. This\nstatement requires the SUPER privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/binlog.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/binlog.html'),(350,'BIT_AND',16,'Syntax:\nBIT_AND(expr)\n\nReturns the bitwise AND of all bits in expr. The calculation is\nperformed with 64-bit (BIGINT) precision.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(351,'SECOND',32,'Syntax:\nSECOND(time)\n\nReturns the second for time, in the range 0 to 59.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT SECOND(\'10:05:03\');\n -> 3\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(352,'AND',15,'Syntax:\nAND, &&\n\nLogical AND. Evaluates to 1 if all operands are nonzero and not NULL,\nto 0 if one or more operands are 0, otherwise NULL is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/logical-operators.html\n\n','mysql> SELECT 1 AND 1;\n -> 1\nmysql> SELECT 1 AND 0;\n -> 0\nmysql> SELECT 1 AND NULL;\n -> NULL\nmysql> SELECT 0 AND NULL;\n -> 0\nmysql> SELECT NULL AND 0;\n -> 0\n','http://dev.mysql.com/doc/refman/5.5/en/logical-operators.html'),(353,'ATAN2',3,'Syntax:\nATAN(Y,X), ATAN2(Y,X)\n\nReturns the arc tangent of the two variables X and Y. It is similar to\ncalculating the arc tangent of Y / X, except that the signs of both\narguments are used to determine the quadrant of the result.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(-2,2);\n -> -0.78539816339745\nmysql> SELECT ATAN2(PI(),0);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(354,'MBRCONTAINS',7,'MBRContains(g1,g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangle of g1\ncontains the minimum bounding rectangle of g2. This tests the opposite\nrelationship as MBRWithin().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html\n\n','mysql> SET @g1 = GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = GeomFromText(\'Point(1 1)\');\nmysql> SELECT MBRContains(@g1,@g2), MBRWithin(@g2,@g1);\n+----------------------+--------------------+\n| MBRContains(@g1,@g2) | MBRWithin(@g2,@g1) |\n+----------------------+--------------------+\n| 1 | 1 |\n+----------------------+--------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html'),(355,'HOUR',32,'Syntax:\nHOUR(time)\n\nReturns the hour for time. The range of the return value is 0 to 23 for\ntime-of-day values. However, the range of TIME values actually is much\nlarger, so HOUR can return values greater than 23.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT HOUR(\'10:05:03\');\n -> 10\nmysql> SELECT HOUR(\'272:59:59\');\n -> 272\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(356,'SELECT',28,'Syntax:\nSELECT\n [ALL | DISTINCT | DISTINCTROW ]\n [HIGH_PRIORITY]\n [STRAIGHT_JOIN]\n [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]\n [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]\n select_expr [, select_expr ...]\n [FROM table_references\n [WHERE where_condition]\n [GROUP BY {col_name | expr | position}\n [ASC | DESC], ... [WITH ROLLUP]]\n [HAVING where_condition]\n [ORDER BY {col_name | expr | position}\n [ASC | DESC], ...]\n [LIMIT {[offset,] row_count | row_count OFFSET offset}]\n [PROCEDURE procedure_name(argument_list)]\n [INTO OUTFILE \'file_name\'\n [CHARACTER SET charset_name]\n export_options\n | INTO DUMPFILE \'file_name\'\n | INTO var_name [, var_name]]\n [FOR UPDATE | LOCK IN SHARE MODE]]\n\nSELECT is used to retrieve rows selected from one or more tables, and\ncan include UNION statements and subqueries. See [HELP UNION], and\nhttp://dev.mysql.com/doc/refman/5.5/en/subqueries.html.\n\nThe most commonly used clauses of SELECT statements are these:\n\no Each select_expr indicates a column that you want to retrieve. There\n must be at least one select_expr.\n\no table_references indicates the table or tables from which to retrieve\n rows. Its syntax is described in [HELP JOIN].\n\no The WHERE clause, if given, indicates the condition or conditions\n that rows must satisfy to be selected. where_condition is an\n expression that evaluates to true for each row to be selected. The\n statement selects all rows if there is no WHERE clause.\n\n In the WHERE expression, you can use any of the functions and\n operators that MySQL supports, except for aggregate (summary)\n functions. See\n http://dev.mysql.com/doc/refman/5.5/en/expressions.html, and\n http://dev.mysql.com/doc/refman/5.5/en/functions.html.\n\nSELECT can also be used to retrieve rows computed without reference to\nany table.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/select.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/select.html'),(357,'COT',3,'Syntax:\nCOT(X)\n\nReturns the cotangent of X.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT COT(12);\n -> -1.5726734063977\nmysql> SELECT COT(0);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(358,'SHOW CREATE EVENT',27,'Syntax:\nSHOW CREATE EVENT event_name\n\nThis statement displays the CREATE EVENT statement needed to re-create\na given event. It requires the EVENT privilege for the database from\nwhich the event is to be shown. For example (using the same event\ne_daily defined and then altered in [HELP SHOW EVENTS]):\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-create-event.html\n\n','mysql> SHOW CREATE EVENT test.e_daily\\G\n*************************** 1. row ***************************\n Event: e_daily\n sql_mode:\n time_zone: SYSTEM\n Create Event: CREATE EVENT `e_daily`\n ON SCHEDULE EVERY 1 DAY\n STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR\n ON COMPLETION NOT PRESERVE\n ENABLE\n COMMENT \'Saves total number of sessions then\n clears the table each day\'\n DO BEGIN\n INSERT INTO site_activity.totals (time, total)\n SELECT CURRENT_TIMESTAMP, COUNT(*)\n FROM site_activity.sessions;\n DELETE FROM site_activity.sessions;\n END\ncharacter_set_client: latin1\ncollation_connection: latin1_swedish_ci\n Database Collation: latin1_swedish_ci\n','http://dev.mysql.com/doc/refman/5.5/en/show-create-event.html'),(359,'OR',15,'Syntax:\nOR, ||\n\nLogical OR. When both operands are non-NULL, the result is 1 if any\noperand is nonzero, and 0 otherwise. With a NULL operand, the result is\n1 if the other operand is nonzero, and NULL otherwise. If both operands\nare NULL, the result is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/logical-operators.html\n\n','mysql> SELECT 1 OR 1;\n -> 1\nmysql> SELECT 1 OR 0;\n -> 1\nmysql> SELECT 0 OR 0;\n -> 0\nmysql> SELECT 0 OR NULL;\n -> NULL\nmysql> SELECT 1 OR NULL;\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/logical-operators.html'),(360,'LOAD_FILE',38,'Syntax:\nLOAD_FILE(file_name)\n\nReads the file and returns the file contents as a string. To use this\nfunction, the file must be located on the server host, you must specify\nthe full path name to the file, and you must have the FILE privilege.\nThe file must be readable by all and its size less than\nmax_allowed_packet bytes. If the secure_file_priv system variable is\nset to a nonempty directory name, the file to be loaded must be located\nin that directory.\n\nIf the file does not exist or cannot be read because one of the\npreceding conditions is not satisfied, the function returns NULL.\n\nThe character_set_filesystem system variable controls interpretation of\nfile names that are given as literal strings.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> UPDATE t\n SET blob_col=LOAD_FILE(\'/tmp/picture\')\n WHERE id=1;\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(361,'GROUP_CONCAT',16,'Syntax:\nGROUP_CONCAT(expr)\n\nThis function returns a string result with the concatenated non-NULL\nvalues from a group. It returns NULL if there are no non-NULL values.\nThe full syntax is as follows:\n\nGROUP_CONCAT([DISTINCT] expr [,expr ...]\n [ORDER BY {unsigned_integer | col_name | expr}\n [ASC | DESC] [,col_name ...]]\n [SEPARATOR str_val])\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','mysql> SELECT student_name,\n -> GROUP_CONCAT(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(362,'POINTFROMTEXT',4,'PointFromText(wkt[,srid])\n\nConstructs a Point value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html'),(363,'DATE_FORMAT',32,'Syntax:\nDATE_FORMAT(date,format)\n\nFormats the date value according to the format string.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_FORMAT(\'2009-10-04 22:23:00\', \'%W %M %Y\');\n -> \'Sunday October 2009\'\nmysql> SELECT DATE_FORMAT(\'2007-10-04 22:23:00\', \'%H:%i:%s\');\n -> \'22:23:00\'\nmysql> SELECT DATE_FORMAT(\'1900-10-04 22:23:00\',\n -> \'%D %y %a %d %m %b %j\');\n -> \'4th 00 Thu 04 10 Oct 277\'\nmysql> SELECT DATE_FORMAT(\'1997-10-04 22:23:00\',\n -> \'%H %k %I %r %T %S %w\');\n -> \'22 22 10 10:23:00 PM 22:23:00 00 6\'\nmysql> SELECT DATE_FORMAT(\'1999-01-01\', \'%X %V\');\n -> \'1998 52\'\nmysql> SELECT DATE_FORMAT(\'2006-06-00\', \'%d\');\n -> \'00\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(364,'BENCHMARK',17,'Syntax:\nBENCHMARK(count,expr)\n\nThe BENCHMARK() function executes the expression expr repeatedly count\ntimes. It may be used to time how quickly MySQL processes the\nexpression. The result value is always 0. The intended use is from\nwithin the mysql client, which reports query execution times:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','mysql> SELECT BENCHMARK(1000000,ENCODE(\'hello\',\'goodbye\'));\n+----------------------------------------------+\n| BENCHMARK(1000000,ENCODE(\'hello\',\'goodbye\')) |\n+----------------------------------------------+\n| 0 |\n+----------------------------------------------+\n1 row in set (4.74 sec)\n','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(365,'YEAR',32,'Syntax:\nYEAR(date)\n\nReturns the year for date, in the range 1000 to 9999, or 0 for the\n\"zero\" date.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT YEAR(\'1987-01-01\');\n -> 1987\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(366,'SHOW ENGINE',27,'Syntax:\nSHOW ENGINE engine_name {STATUS | MUTEX}\n\nSHOW ENGINE displays operational information about a storage engine. It\nrequires the PROCESS privilege. The statement has these variants:\n\nSHOW ENGINE INNODB STATUS\nSHOW ENGINE INNODB MUTEX\nSHOW ENGINE {NDB | NDBCLUSTER} STATUS\nSHOW ENGINE PERFORMANCE_SCHEMA STATUS\n\nSHOW ENGINE INNODB STATUS displays extensive information from the\nstandard InnoDB Monitor about the state of the InnoDB storage engine.\nFor information about the standard monitor and other InnoDB Monitors\nthat provide information about InnoDB processing, see\nhttp://dev.mysql.com/doc/refman/5.5/en/innodb-monitors.html.\n\nSHOW ENGINE INNODB MUTEX displays InnoDB mutex and rw-lock statistics.\nStatement output has the following columns:\n\no Type\n\n Always InnoDB.\n\no Name\n\n The source file where the mutex is implemented, and the line number\n in the file where the mutex is created. The line number is specific\n to your version of MySQL.\n\no Status\n\n The mutex status. This field displays several values if UNIV_DEBUG\n was defined at MySQL compilation time (for example, in include/univ.i\n in the InnoDB part of the MySQL source tree). If UNIV_DEBUG was not\n defined, the statement displays only the os_waits value. In the\n latter case (without UNIV_DEBUG), the information on which the output\n is based is insufficient to distinguish regular mutexes and mutexes\n that protect rw-locks (which permit multiple readers or a single\n writer). Consequently, the output may appear to contain multiple rows\n for the same mutex.\n\n o count indicates how many times the mutex was requested.\n\n o spin_waits indicates how many times the spinlock had to run.\n\n o spin_rounds indicates the number of spinlock rounds. (spin_rounds\n divided by spin_waits provides the average round count.)\n\n o os_waits indicates the number of operating system waits. This\n occurs when the spinlock did not work (the mutex was not locked\n during the spinlock and it was necessary to yield to the operating\n system and wait).\n\n o os_yields indicates the number of times a thread trying to lock a\n mutex gave up its timeslice and yielded to the operating system (on\n the presumption that permitting other threads to run will free the\n mutex so that it can be locked).\n\n o os_wait_times indicates the amount of time (in ms) spent in\n operating system waits. In MySQL 5.5 timing is disabled and this\n value is always 0.\n\nAs of MySQL 5.5, SHOW ENGINE INNODB MUTEX skips the mutexes and\nrw-locks of buffer pool blocks, as the amount of output can be\noverwhelming on systems with a large buffer pool. (There is one mutex\nand one rw-lock in each 16K buffer pool block, and there are 65,536\nblocks per gigabyte.) SHOW ENGINE INNODB MUTEX also does not list any\nmutexes or rw-locks that have never been waited on (os_waits=0). Thus,\nSHOW ENGINE INNODB MUTEX only displays information about mutexes and\nrw-locks outside of the buffer pool that have caused at least one\nOS-level wait.\n\nSHOW ENGINE INNODB MUTEX information can be used to diagnose system\nproblems. For example, large values of spin_waits and spin_rounds may\nindicate scalability problems.\n\nUse SHOW ENGINE PERFORMANCE_SCHEMA STATUS to inspect the internal\noperation of the Performance Schema code:\n\nmysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS\\G\n...\n*************************** 3. row ***************************\n Type: performance_schema\n Name: events_waits_history.row_size\nStatus: 76\n*************************** 4. row ***************************\n Type: performance_schema\n Name: events_waits_history.row_count\nStatus: 10000\n*************************** 5. row ***************************\n Type: performance_schema\n Name: events_waits_history.memory\nStatus: 760000\n...\n*************************** 57. row ***************************\n Type: performance_schema\n Name: performance_schema.memory\nStatus: 26459600\n...\n\nThis statement is intended to help the DBA understand the effects that\ndifferent Performance Schema options have on memory requirements.\n\nName values consist of two parts, which name an internal buffer and a\nbuffer attribute, respectively. Interpret buffer names as follows:\n\no An internal buffer that is not exposed as a table is named within\n parentheses. Examples: (pfs_cond_class).row_size,\n (pfs_mutex_class).memory.\n\no An internal buffer that is exposed as a table in the\n performance_schema database is named after the table, without\n parentheses. Examples: events_waits_history.row_size,\n mutex_instances.row_count.\n\no A value that applies to the Performance Schema as a whole begins with\n performance_schema. Example: performance_schema.memory.\n\nBuffer attributes have these meanings:\n\no row_size is the size of the internal record used by the\n implementation, such as the size of a row in a table. row_size values\n cannot be changed.\n\no row_count is the number of internal records, such as the number of\n rows in a table. row_count values can be changed using Performance\n Schema configuration options.\n\no For a table, tbl_name.memory is the product of row_size and\n row_count. For the Performance Schema as a whole,\n performance_schema.memory is the sum of all the memory used (the sum\n of all other memory values).\n\nIn some cases, there is a direct relationship between a Performance\nSchema configuration parameter and a SHOW ENGINE value. For example,\nevents_waits_history_long.row_count corresponds to\nperformance_schema_events_waits_history_long_size. In other cases, the\nrelationship is more complex. For example,\nevents_waits_history.row_count corresponds to\nperformance_schema_events_waits_history_size (the number of rows per\nthread) multiplied by performance_schema_max_thread_instances ( the\nnumber of threads).\n\nIf the server has the NDBCLUSTER storage engine enabled, SHOW ENGINE\nNDB STATUS displays cluster status information such as the number of\nconnected data nodes, the cluster connectstring, and cluster binary log\nepochs, as well as counts of various Cluster API objects created by the\nMySQL Server when connected to the cluster. Sample output from this\nstatement is shown here:\n\nmysql> SHOW ENGINE NDB STATUS;\n+------------+-----------------------+--------------------------------------------------+\n| Type | Name | Status |\n+------------+-----------------------+--------------------------------------------------+\n| ndbcluster | connection | cluster_node_id=7,\n connected_host=192.168.0.103, connected_port=1186, number_of_data_nodes=4,\n number_of_ready_data_nodes=3, connect_count=0 |\n| ndbcluster | NdbTransaction | created=6, free=0, sizeof=212 |\n| ndbcluster | NdbOperation | created=8, free=8, sizeof=660 |\n| ndbcluster | NdbIndexScanOperation | created=1, free=1, sizeof=744 |\n| ndbcluster | NdbIndexOperation | created=0, free=0, sizeof=664 |\n| ndbcluster | NdbRecAttr | created=1285, free=1285, sizeof=60 |\n| ndbcluster | NdbApiSignal | created=16, free=16, sizeof=136 |\n| ndbcluster | NdbLabel | created=0, free=0, sizeof=196 |\n| ndbcluster | NdbBranch | created=0, free=0, sizeof=24 |\n| ndbcluster | NdbSubroutine | created=0, free=0, sizeof=68 |\n| ndbcluster | NdbCall | created=0, free=0, sizeof=16 |\n| ndbcluster | NdbBlob | created=1, free=1, sizeof=264 |\n| ndbcluster | NdbReceiver | created=4, free=0, sizeof=68 |\n| ndbcluster | binlog | latest_epoch=155467, latest_trans_epoch=148126,\n latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0,\n latest_applied_binlog_epoch=0 |\n+------------+-----------------------+--------------------------------------------------+\n\nThe rows with connection and binlog in the Name column were added to\nthe output of this statement in MySQL 5.1. The Status column in each of\nthese rows provides information about the MySQL server\'s connection to\nthe cluster and about the cluster binary log\'s status, respectively.\nThe Status information is in the form of comma-delimited set of\nname/value pairs.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-engine.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-engine.html'),(367,'NAME_CONST',14,'Syntax:\nNAME_CONST(name,value)\n\nReturns the given value. When used to produce a result set column,\nNAME_CONST() causes the column to have the given name. The arguments\nshould be constants.\n\nmysql> SELECT NAME_CONST(\'myname\', 14);\n+--------+\n| myname |\n+--------+\n| 14 |\n+--------+\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(368,'RELEASE_LOCK',14,'Syntax:\nRELEASE_LOCK(str)\n\nReleases the lock named by the string str that was obtained with\nGET_LOCK(). Returns 1 if the lock was released, 0 if the lock was not\nestablished by this thread (in which case the lock is not released),\nand NULL if the named lock did not exist. The lock does not exist if it\nwas never obtained by a call to GET_LOCK() or if it has previously been\nreleased.\n\nThe DO statement is convenient to use with RELEASE_LOCK(). See [HELP\nDO].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(369,'IS NULL',20,'Syntax:\nIS NULL\n\nTests whether a value is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;\n -> 0, 0, 1\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(370,'CONVERT_TZ',32,'Syntax:\nCONVERT_TZ(dt,from_tz,to_tz)\n\nCONVERT_TZ() converts a datetime value dt from the time zone given by\nfrom_tz to the time zone given by to_tz and returns the resulting\nvalue. Time zones are specified as described in\nhttp://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html. This\nfunction returns NULL if the arguments are invalid.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'GMT\',\'MET\');\n -> \'2004-01-01 13:00:00\'\nmysql> SELECT CONVERT_TZ(\'2004-01-01 12:00:00\',\'+00:00\',\'+10:00\');\n -> \'2004-01-01 22:00:00\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(371,'TIME_TO_SEC',32,'Syntax:\nTIME_TO_SEC(time)\n\nReturns the time argument, converted to seconds.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT TIME_TO_SEC(\'22:23:00\');\n -> 80580\nmysql> SELECT TIME_TO_SEC(\'00:39:38\');\n -> 2378\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(372,'WEEKDAY',32,'Syntax:\nWEEKDAY(date)\n\nReturns the weekday index for date (0 = Monday, 1 = Tuesday, ... 6 =\nSunday).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT WEEKDAY(\'2008-02-03 22:23:00\');\n -> 6\nmysql> SELECT WEEKDAY(\'2007-11-06\');\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(373,'EXPORT_SET',38,'Syntax:\nEXPORT_SET(bits,on,off[,separator[,number_of_bits]])\n\nReturns a string such that for every bit set in the value bits, you get\nan on string and for every bit not set in the value, you get an off\nstring. Bits in bits are examined from right to left (from low-order to\nhigh-order bits). Strings are added to the result from left to right,\nseparated by the separator string (the default being the comma\ncharacter \",\"). The number of bits examined is given by number_of_bits,\nwhich has a default of 64 if not specified. number_of_bits is silently\nclipped to 64 if larger than 64. It is treated as an unsigned integer,\nso a value of −1 is effectively the same as 64.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT EXPORT_SET(5,\'Y\',\'N\',\',\',4);\n -> \'Y,N,Y,N\'\nmysql> SELECT EXPORT_SET(6,\'1\',\'0\',\',\',10);\n -> \'0,1,1,0,0,0,0,0,0,0\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(374,'ALTER SERVER',40,'Syntax:\nALTER SERVER server_name\n OPTIONS (option [, option] ...)\n\nAlters the server information for server_name, adjusting any of the\noptions permitted in the CREATE SERVER statement. The corresponding\nfields in the mysql.servers table are updated accordingly. This\nstatement requires the SUPER privilege.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/alter-server.html\n\n','ALTER SERVER s OPTIONS (USER \'sally\');\n','http://dev.mysql.com/doc/refman/5.5/en/alter-server.html'),(375,'RESIGNAL',24,'Syntax:\nRESIGNAL [condition_value]\n [SET signal_information_item\n [, signal_information_item] ...]\n\ncondition_value:\n SQLSTATE [VALUE] sqlstate_value\n | condition_name\n\nsignal_information_item:\n condition_information_item_name = simple_value_specification\n\ncondition_information_item_name:\n CLASS_ORIGIN\n | SUBCLASS_ORIGIN\n | MESSAGE_TEXT\n | MYSQL_ERRNO\n | CONSTRAINT_CATALOG\n | CONSTRAINT_SCHEMA\n | CONSTRAINT_NAME\n | CATALOG_NAME\n | SCHEMA_NAME\n | TABLE_NAME\n | COLUMN_NAME\n | CURSOR_NAME\n\ncondition_name, simple_value_specification:\n (see following discussion)\n\nRESIGNAL passes on the error condition information that is available\nduring execution of a condition handler within a compound statement\ninside a stored procedure or function, trigger, or event. RESIGNAL may\nchange some or all information before passing it on. RESIGNAL is\nrelated to SIGNAL, but instead of originating a condition as SIGNAL\ndoes, RESIGNAL relays existing condition information, possibly after\nmodifying it.\n\nRESIGNAL makes it possible to both handle an error and return the error\ninformation. Otherwise, by executing an SQL statement within the\nhandler, information that caused the handler\'s activation is destroyed.\nRESIGNAL also can make some procedures shorter if a given handler can\nhandle part of a situation, then pass the condition \"up the line\" to\nanother handler.\n\nNo special privileges are required to execute the RESIGNAL statement.\n\nAll forms of RESIGNAL require that the current context be a condition\nhandler. Otherwise, RESIGNAL is illegal and a RESIGNAL when handler not\nactive error occurs.\n\nFor condition_value and signal_information_item, the definitions and\nrules are the same for RESIGNAL as for SIGNAL. For example, the\ncondition_value can be an SQLSTATE value, and the value can indicate\nerrors, warnings, or \"not found.\" For additional information, see [HELP\nSIGNAL].\n\nThe RESIGNAL statement takes condition_value and SET clauses, both of\nwhich are optional. This leads to several possible uses:\n\no RESIGNAL alone:\n\nRESIGNAL;\n\no RESIGNAL with new signal information:\n\nRESIGNAL SET signal_information_item [, signal_information_item] ...;\n\no RESIGNAL with a condition value and possibly new signal information:\n\nRESIGNAL condition_value\n [SET signal_information_item [, signal_information_item] ...];\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/resignal.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/resignal.html'),(376,'TIME FUNCTION',32,'Syntax:\nTIME(expr)\n\nExtracts the time part of the time or datetime expression expr and\nreturns it as a string.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT TIME(\'2003-12-31 01:02:03\');\n -> \'01:02:03\'\nmysql> SELECT TIME(\'2003-12-31 01:02:03.000123\');\n -> \'01:02:03.000123\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(377,'DATE_ADD',32,'Syntax:\nDATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)\n\nThese functions perform date arithmetic. The date argument specifies\nthe starting date or datetime value. expr is an expression specifying\nthe interval value to be added or subtracted from the starting date.\nexpr is a string; it may start with a \"-\" for negative intervals. unit\nis a keyword indicating the units in which the expression should be\ninterpreted.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT \'2008-12-31 23:59:59\' + INTERVAL 1 SECOND;\n -> \'2009-01-01 00:00:00\'\nmysql> SELECT INTERVAL 1 DAY + \'2008-12-31\';\n -> \'2009-01-01\'\nmysql> SELECT \'2005-01-01\' - INTERVAL 1 SECOND;\n -> \'2004-12-31 23:59:59\'\nmysql> SELECT DATE_ADD(\'2000-12-31 23:59:59\',\n -> INTERVAL 1 SECOND);\n -> \'2001-01-01 00:00:00\'\nmysql> SELECT DATE_ADD(\'2010-12-31 23:59:59\',\n -> INTERVAL 1 DAY);\n -> \'2011-01-01 23:59:59\'\nmysql> SELECT DATE_ADD(\'2100-12-31 23:59:59\',\n -> INTERVAL \'1:1\' MINUTE_SECOND);\n -> \'2101-01-01 00:01:00\'\nmysql> SELECT DATE_SUB(\'2005-01-01 00:00:00\',\n -> INTERVAL \'1 1:1:1\' DAY_SECOND);\n -> \'2004-12-30 22:58:59\'\nmysql> SELECT DATE_ADD(\'1900-01-01 00:00:00\',\n -> INTERVAL \'-1 10\' DAY_HOUR);\n -> \'1899-12-30 14:00:00\'\nmysql> SELECT DATE_SUB(\'1998-01-02\', INTERVAL 31 DAY);\n -> \'1997-12-02\'\nmysql> SELECT DATE_ADD(\'1992-12-31 23:59:59.000002\',\n -> INTERVAL \'1.999999\' SECOND_MICROSECOND);\n -> \'1993-01-01 00:00:01.000001\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(378,'CAST',38,'Syntax:\nCAST(expr AS type)\n\nThe CAST() function takes an expression of any type and produces a\nresult value of a specified type, similar to CONVERT(). See the\ndescription of CONVERT() for more information.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html'),(379,'SOUNDS LIKE',38,'Syntax:\nexpr1 SOUNDS LIKE expr2\n\nThis is the same as SOUNDEX(expr1) = SOUNDEX(expr2).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(380,'PERIOD_DIFF',32,'Syntax:\nPERIOD_DIFF(P1,P2)\n\nReturns the number of months between periods P1 and P2. P1 and P2\nshould be in the format YYMM or YYYYMM. Note that the period arguments\nP1 and P2 are not date values.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_DIFF(200802,200703);\n -> 11\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(381,'LIKE',38,'Syntax:\nexpr LIKE pat [ESCAPE \'escape_char\']\n\nPattern matching using a SQL pattern. Returns 1 (TRUE) or 0 (FALSE). If\neither expr or pat is NULL, the result is NULL.\n\nThe pattern need not be a literal string. For example, it can be\nspecified as a string expression or table column.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html\n\n','mysql> SELECT \'David!\' LIKE \'David_\';\n -> 1\nmysql> SELECT \'David!\' LIKE \'%D%v%\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html'),(382,'MULTIPOINT',25,'MultiPoint(pt1,pt2,...)\n\nConstructs a MultiPoint value using Point or WKB Point arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html'),(383,'>>',19,'Syntax:\n>>\n\nShifts a longlong (BIGINT) number to the right.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html\n\n','mysql> SELECT 4 >> 2;\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html'),(384,'FETCH',24,'Syntax:\nFETCH [[NEXT] FROM] cursor_name INTO var_name [, var_name] ...\n\nThis statement fetches the next row for the SELECT statement associated\nwith the specified cursor (which must be open), and advances the cursor\npointer. If a row exists, the fetched columns are stored in the named\nvariables. The number of columns retrieved by the SELECT statement must\nmatch the number of output variables specified in the FETCH statement.\n\nIf no more rows are available, a No Data condition occurs with SQLSTATE\nvalue \'02000\'. To detect this condition, you can set up a handler for\nit (or for a NOT FOUND condition). For an example, see\nhttp://dev.mysql.com/doc/refman/5.5/en/cursors.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/fetch.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/fetch.html'),(385,'AVG',16,'Syntax:\nAVG([DISTINCT] expr)\n\nReturns the average value of expr. The DISTINCT option can be used to\nreturn the average of the distinct values of expr.\n\nAVG() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','mysql> SELECT student_name, AVG(test_score)\n -> FROM student\n -> GROUP BY student_name;\n','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(386,'TRUE FALSE',30,'The constants TRUE and FALSE evaluate to 1 and 0, respectively. The\nconstant names can be written in any lettercase.\n\nmysql> SELECT TRUE, true, FALSE, false;\n -> 1, 1, 0, 0\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/boolean-literals.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/boolean-literals.html'),(387,'MBRWITHIN',7,'MBRWithin(g1,g2)\n\nReturns 1 or 0 to indicate whether the minimum bounding rectangle of g1\nis within the minimum bounding rectangle of g2. This tests the opposite\nrelationship as MBRContains().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html\n\n','mysql> SET @g1 = GeomFromText(\'Polygon((0 0,0 3,3 3,3 0,0 0))\');\nmysql> SET @g2 = GeomFromText(\'Polygon((0 0,0 5,5 5,5 0,0 0))\');\nmysql> SELECT MBRWithin(@g1,@g2), MBRWithin(@g2,@g1);\n+--------------------+--------------------+\n| MBRWithin(@g1,@g2) | MBRWithin(@g2,@g1) |\n+--------------------+--------------------+\n| 1 | 0 |\n+--------------------+--------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mysql-specific.html'),(388,'SESSION_USER',17,'Syntax:\nSESSION_USER()\n\nSESSION_USER() is a synonym for USER().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(389,'IN',20,'Syntax:\nexpr IN (value,...)\n\nReturns 1 if expr is equal to any of the values in the IN list, else\nreturns 0. If all values are constants, they are evaluated according to\nthe type of expr and sorted. The search for the item then is done using\na binary search. This means IN is very quick if the IN value list\nconsists entirely of constants. Otherwise, type conversion takes place\naccording to the rules described in\nhttp://dev.mysql.com/doc/refman/5.5/en/type-conversion.html, but\napplied to all the arguments.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT 2 IN (0,3,5,7);\n -> 0\nmysql> SELECT \'wefwf\' IN (\'wee\',\'wefwf\',\'weg\');\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(390,'QUOTE',38,'Syntax:\nQUOTE(str)\n\nQuotes a string to produce a result that can be used as a properly\nescaped data value in an SQL statement. The string is returned enclosed\nby single quotation marks and with each instance of backslash (\"\\\"),\nsingle quote (\"\'\"), ASCII NUL, and Control+Z preceded by a backslash.\nIf the argument is NULL, the return value is the word \"NULL\" without\nenclosing single quotation marks.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT QUOTE(\'Don\\\'t!\');\n -> \'Don\\\'t!\'\nmysql> SELECT QUOTE(NULL);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(391,'HELP COMMAND',27,'Syntax:\nmysql> help search_string\n\nIf you provide an argument to the help command, mysql uses it as a\nsearch string to access server-side help from the contents of the MySQL\nReference Manual. The proper operation of this command requires that\nthe help tables in the mysql database be initialized with help topic\ninformation (see\nhttp://dev.mysql.com/doc/refman/5.5/en/server-side-help-support.html).\n\nIf there is no match for the search string, the search fails:\n\nmysql> help me\n\nNothing found\nPlease try to run \'help contents\' for a list of all accessible topics\n\nUse help contents to see a list of the help categories:\n\nmysql> help contents\nYou asked for help about help category: \"Contents\"\nFor more information, type \'help <item>\', where <item> is one of the\nfollowing categories:\n Account Management\n Administration\n Data Definition\n Data Manipulation\n Data Types\n Functions\n Functions and Modifiers for Use with GROUP BY\n Geographic Features\n Language Structure\n Plugins\n Storage Engines\n Stored Routines\n Table Maintenance\n Transactions\n Triggers\n\nIf the search string matches multiple items, mysql shows a list of\nmatching topics:\n\nmysql> help logs\nMany help items for your request exist.\nTo make a more specific request, please type \'help <item>\',\nwhere <item> is one of the following topics:\n SHOW\n SHOW BINARY LOGS\n SHOW ENGINE\n SHOW LOGS\n\nUse a topic as the search string to see the help entry for that topic:\n\nmysql> help show binary logs\nName: \'SHOW BINARY LOGS\'\nDescription:\nSyntax:\nSHOW BINARY LOGS\nSHOW MASTER LOGS\n\nLists the binary log files on the server. This statement is used as\npart of the procedure described in [purge-binary-logs], that shows how\nto determine which logs can be purged.\n\nmysql> SHOW BINARY LOGS;\n+---------------+-----------+\n| Log_name | File_size |\n+---------------+-----------+\n| binlog.000015 | 724935 |\n| binlog.000016 | 733481 |\n+---------------+-----------+\n\nThe search string can contain the wildcard characters \"%\" and \"_\".\nThese have the same meaning as for pattern-matching operations\nperformed with the LIKE operator. For example, HELP rep% returns a list\nof topics that begin with rep:\n\nmysql> HELP rep%\nMany help items for your request exist.\nTo make a more specific request, please type \'help <item>\',\nwhere <item> is one of the following\ntopics:\n REPAIR TABLE\n REPEAT FUNCTION\n REPEAT LOOP\n REPLACE\n REPLACE FUNCTION\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mysql-server-side-help.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/mysql-server-side-help.html'),(392,'QUARTER',32,'Syntax:\nQUARTER(date)\n\nReturns the quarter of the year for date, in the range 1 to 4.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT QUARTER(\'2008-04-01\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(393,'POSITION',38,'Syntax:\nPOSITION(substr IN str)\n\nPOSITION(substr IN str) is a synonym for LOCATE(substr,str).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(394,'SHOW CREATE FUNCTION',27,'Syntax:\nSHOW CREATE FUNCTION func_name\n\nThis statement is similar to SHOW CREATE PROCEDURE but for stored\nfunctions. See [HELP SHOW CREATE PROCEDURE].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-create-function.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-create-function.html'),(395,'IS_USED_LOCK',14,'Syntax:\nIS_USED_LOCK(str)\n\nChecks whether the lock named str is in use (that is, locked). If so,\nit returns the connection identifier of the client session that holds\nthe lock. Otherwise, it returns NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(396,'POLYFROMTEXT',4,'PolyFromText(wkt[,srid]), PolygonFromText(wkt[,srid])\n\nConstructs a Polygon value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html'),(397,'DES_ENCRYPT',12,'Syntax:\nDES_ENCRYPT(str[,{key_num|key_str}])\n\nEncrypts the string with the given key using the Triple-DES algorithm.\n\nThis function works only if MySQL has been configured with SSL support.\nSee http://dev.mysql.com/doc/refman/5.5/en/secure-connections.html.\n\nThe encryption key to use is chosen based on the second argument to\nDES_ENCRYPT(), if one was given. With no argument, the first key from\nthe DES key file is used. With a key_num argument, the given key number\n(0 to 9) from the DES key file is used. With a key_str argument, the\ngiven key string is used to encrypt str.\n\nThe key file can be specified with the --des-key-file server option.\n\nThe return string is a binary string where the first character is\nCHAR(128 | key_num). If an error occurs, DES_ENCRYPT() returns NULL.\n\nThe 128 is added to make it easier to recognize an encrypted key. If\nyou use a string key, key_num is 127.\n\nThe string length for the result is given by this formula:\n\nnew_len = orig_len + (8 - (orig_len % 8)) + 1\n\nEach line in the DES key file has the following format:\n\nkey_num des_key_str\n\nEach key_num value must be a number in the range from 0 to 9. Lines in\nthe file may be in any order. des_key_str is the string that is used to\nencrypt the message. There should be at least one space between the\nnumber and the key. The first key is the default key that is used if\nyou do not specify any key argument to DES_ENCRYPT().\n\nYou can tell MySQL to read new key values from the key file with the\nFLUSH DES_KEY_FILE statement. This requires the RELOAD privilege.\n\nOne benefit of having a set of default keys is that it gives\napplications a way to check for the existence of encrypted column\nvalues, without giving the end user the right to decrypt those values.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','mysql> SELECT customer_address FROM customer_table \n > WHERE crypted_credit_card = DES_ENCRYPT(\'credit_card_number\');\n','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(398,'CEIL',3,'Syntax:\nCEIL(X)\n\nCEIL() is a synonym for CEILING().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(399,'LENGTH',38,'Syntax:\nLENGTH(str)\n\nReturns the length of the string str, measured in bytes. A multibyte\ncharacter counts as multiple bytes. This means that for a string\ncontaining five 2-byte characters, LENGTH() returns 10, whereas\nCHAR_LENGTH() returns 5.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT LENGTH(\'text\');\n -> 4\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(400,'STR_TO_DATE',32,'Syntax:\nSTR_TO_DATE(str,format)\n\nThis is the inverse of the DATE_FORMAT() function. It takes a string\nstr and a format string format. STR_TO_DATE() returns a DATETIME value\nif the format string contains both date and time parts, or a DATE or\nTIME value if the string contains only date or time parts. If the date,\ntime, or datetime value extracted from str is illegal, STR_TO_DATE()\nreturns NULL and produces a warning.\n\nThe server scans str attempting to match format to it. The format\nstring can contain literal characters and format specifiers beginning\nwith %. Literal characters in format must match literally in str.\nFormat specifiers in format must match a date or time part in str. For\nthe specifiers that can be used in format, see the DATE_FORMAT()\nfunction description.\n\nmysql> SELECT STR_TO_DATE(\'01,5,2013\',\'%d,%m,%Y\');\n -> \'2013-05-01\'\nmysql> SELECT STR_TO_DATE(\'May 1, 2013\',\'%M %d,%Y\');\n -> \'2013-05-01\'\n\nScanning starts at the beginning of str and fails if format is found\nnot to match. Extra characters at the end of str are ignored.\n\nmysql> SELECT STR_TO_DATE(\'a09:30:17\',\'a%h:%i:%s\');\n -> \'09:30:17\'\nmysql> SELECT STR_TO_DATE(\'a09:30:17\',\'%h:%i:%s\');\n -> NULL\nmysql> SELECT STR_TO_DATE(\'09:30:17a\',\'%h:%i:%s\');\n -> \'09:30:17\'\n\nUnspecified date or time parts have a value of 0, so incompletely\nspecified values in str produce a result with some or all parts set to\n0:\n\nmysql> SELECT STR_TO_DATE(\'abc\',\'abc\');\n -> \'0000-00-00\'\nmysql> SELECT STR_TO_DATE(\'9\',\'%m\');\n -> \'0000-09-00\'\nmysql> SELECT STR_TO_DATE(\'9\',\'%s\');\n -> \'00:00:09\'\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(401,'Y',11,'Y(p)\n\nReturns the Y-coordinate value for the Point object p as a\ndouble-precision number.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-point-property-functions.html\n\n','mysql> SELECT Y(POINT(56.7, 53.34));\n+-----------------------+\n| Y(POINT(56.7, 53.34)) |\n+-----------------------+\n| 53.34 |\n+-----------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-point-property-functions.html'),(402,'CHECKSUM TABLE',21,'Syntax:\nCHECKSUM TABLE tbl_name [, tbl_name] ... [ QUICK | EXTENDED ]\n\nCHECKSUM TABLE reports a table checksum. During the checksum operation,\nthe table is locked with a read lock for InnoDB and MyISAM. This\nstatement requires the SELECT privilege for the table.\n\nThis statement is not supported for views. If you run CHECKSUM TABLE\nagainst a view, the Checksum value is always NULL, and a warning is\nreturned.\n\nWith QUICK, the live table checksum is reported if it is available, or\nNULL otherwise. This is very fast. A live checksum is enabled by\nspecifying the CHECKSUM=1 table option when you create the table;\ncurrently, this is supported only for MyISAM tables. See [HELP CREATE\nTABLE].\n\nWith EXTENDED, the entire table is read row by row and the checksum is\ncalculated. This can be very slow for large tables.\n\nIf neither QUICK nor EXTENDED is specified, MySQL returns a live\nchecksum if the table storage engine supports it and scans the table\notherwise.\n\nFor a nonexistent table, CHECKSUM TABLE returns NULL and generates a\nwarning.\n\nIn MySQL 5.5, CHECKSUM TABLE returns 0 for partitioned tables unless\nyou include the EXTENDED option. This issue is resolved in MySQL 5.6.\n(Bug #11933226, Bug #60681)\n\nThe checksum value depends on the table row format. If the row format\nchanges, the checksum also changes. For example, the storage format for\ntemporal types such as TIME, DATETIME, and TIMESTAMP changes in MySQL\n5.6 prior to MySQL 5.6.5, so if a 5.5 table is upgraded to MySQL 5.6,\nthe checksum value may change.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/checksum-table.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/checksum-table.html'),(403,'NUMINTERIORRINGS',2,'NumInteriorRings(poly)\n\nReturns the number of interior rings in the Polygon value poly.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT NumInteriorRings(GeomFromText(@poly));\n+---------------------------------------+\n| NumInteriorRings(GeomFromText(@poly)) |\n+---------------------------------------+\n| 1 |\n+---------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-polygon-property-functions.html'),(404,'INTERIORRINGN',2,'InteriorRingN(poly,N)\n\nReturns the N-th interior ring for the Polygon value poly as a\nLineString. Rings are numbered beginning with 1.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly =\n -> \'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))\';\nmysql> SELECT AsText(InteriorRingN(GeomFromText(@poly),1));\n+----------------------------------------------+\n| AsText(InteriorRingN(GeomFromText(@poly),1)) |\n+----------------------------------------------+\n| LINESTRING(1 1,1 2,2 2,2 1,1 1) |\n+----------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-polygon-property-functions.html'),(405,'UTC_TIME',32,'Syntax:\nUTC_TIME, UTC_TIME()\n\nReturns the current UTC time as a value in \'HH:MM:SS\' or HHMMSS.uuuuuu\nformat, depending on whether the function is used in a string or\nnumeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIME(), UTC_TIME() + 0;\n -> \'18:07:53\', 180753.000000\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(406,'DROP FUNCTION',40,'The DROP FUNCTION statement is used to drop stored functions and\nuser-defined functions (UDFs):\n\no For information about dropping stored functions, see [HELP DROP\n PROCEDURE].\n\no For information about dropping user-defined functions, see [HELP DROP\n FUNCTION UDF].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-function.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-function.html'),(407,'ALTER EVENT',40,'Syntax:\nALTER\n [DEFINER = { user | CURRENT_USER }]\n EVENT event_name\n [ON SCHEDULE schedule]\n [ON COMPLETION [NOT] PRESERVE]\n [RENAME TO new_event_name]\n [ENABLE | DISABLE | DISABLE ON SLAVE]\n [COMMENT \'comment\']\n [DO event_body]\n\nThe ALTER EVENT statement changes one or more of the characteristics of\nan existing event without the need to drop and recreate it. The syntax\nfor each of the DEFINER, ON SCHEDULE, ON COMPLETION, COMMENT, ENABLE /\nDISABLE, and DO clauses is exactly the same as when used with CREATE\nEVENT. (See [HELP CREATE EVENT].)\n\nAny user can alter an event defined on a database for which that user\nhas the EVENT privilege. When a user executes a successful ALTER EVENT\nstatement, that user becomes the definer for the affected event.\n\nALTER EVENT works only with an existing event:\n\nmysql> ALTER EVENT no_such_event \n > ON SCHEDULE \n > EVERY \'2:3\' DAY_HOUR;\nERROR 1517 (HY000): Unknown event \'no_such_event\'\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/alter-event.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/alter-event.html'),(408,'STDDEV',16,'Syntax:\nSTDDEV(expr)\n\nReturns the population standard deviation of expr. This function is\nprovided for compatibility with Oracle. The standard SQL function\nSTDDEV_POP() can be used instead.\n\nSTDDEV() returns NULL if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(409,'DATE_SUB',32,'Syntax:\nDATE_SUB(date,INTERVAL expr unit)\n\nSee the description for DATE_ADD().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(410,'PERIOD_ADD',32,'Syntax:\nPERIOD_ADD(P,N)\n\nAdds N months to period P (in the format YYMM or YYYYMM). Returns a\nvalue in the format YYYYMM. Note that the period argument P is not a\ndate value.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT PERIOD_ADD(200801,2);\n -> 200803\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(411,'|',19,'Syntax:\n|\n\nBitwise OR:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html\n\n','mysql> SELECT 29 | 15;\n -> 31\n','http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html'),(412,'UUID_SHORT',14,'Syntax:\nUUID_SHORT()\n\nReturns a \"short\" universal identifier as a 64-bit unsigned integer.\nValues returned by UUID_SHORT() differ from the string-format 128-bit\nidentifiers returned by the UUID() function and have different\nuniqueness properties. The value of UUID_SHORT() is guaranteed to be\nunique if the following conditions hold:\n\no The server_id value of the current server is between 0 and 255 and is\n unique among your set of master and slave servers\n\no You do not set back the system time for your server host between\n mysqld restarts\n\no You invoke UUID_SHORT() on average fewer than 16 million times per\n second between mysqld restarts\n\nThe UUID_SHORT() return value is constructed this way:\n\n (server_id & 255) << 56\n+ (server_startup_time_in_seconds << 24)\n+ incremented_variable++;\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','mysql> SELECT UUID_SHORT();\n -> 92395783831158784\n','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(413,'GEOMFROMTEXT',4,'GeomFromText(wkt[,srid]), GeometryFromText(wkt[,srid])\n\nConstructs a geometry value of any type using its WKT representation\nand SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html'),(414,'RIGHT',38,'Syntax:\nRIGHT(str,len)\n\nReturns the rightmost len characters from the string str, or NULL if\nany argument is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT RIGHT(\'foobarbar\', 4);\n -> \'rbar\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(415,'DATEDIFF',32,'Syntax:\nDATEDIFF(expr1,expr2)\n\nDATEDIFF() returns expr1 − expr2 expressed as a value in days from\none date to the other. expr1 and expr2 are date or date-and-time\nexpressions. Only the date parts of the values are used in the\ncalculation.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT DATEDIFF(\'2007-12-31 23:59:59\',\'2007-12-30\');\n -> 1\nmysql> SELECT DATEDIFF(\'2010-11-30 23:59:59\',\'2010-12-31\');\n -> -31\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(416,'DROP TABLESPACE',40,'Syntax:\nDROP TABLESPACE tablespace_name\n ENGINE [=] engine_name\n\nThis statement drops a tablespace that was previously created using\nCREATE TABLESPACE (see [HELP CREATE TABLESPACE]).\n\n*Important*: The tablespace to be dropped must not contain any data\nfiles; in other words, before you can drop a tablespace, you must first\ndrop each of its data files using ALTER TABLESPACE ... DROP DATAFILE\n(see [HELP ALTER TABLESPACE]).\n\nThe ENGINE clause (required) specifies the storage engine used by the\ntablespace. Currently, the only accepted values for engine_name are NDB\nand NDBCLUSTER.\n\nDROP TABLESPACE is useful only with Disk Data storage for MySQL\nCluster. See\nhttp://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-disk-data.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-tablespace.html'),(417,'DROP PROCEDURE',40,'Syntax:\nDROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name\n\nThis statement is used to drop a stored procedure or function. That is,\nthe specified routine is removed from the server. You must have the\nALTER ROUTINE privilege for the routine. (If the\nautomatic_sp_privileges system variable is enabled, that privilege and\nEXECUTE are granted automatically to the routine creator when the\nroutine is created and dropped from the creator when the routine is\ndropped. See\nhttp://dev.mysql.com/doc/refman/5.5/en/stored-routines-privileges.html.\n)\n\nThe IF EXISTS clause is a MySQL extension. It prevents an error from\noccurring if the procedure or function does not exist. A warning is\nproduced that can be viewed with SHOW WARNINGS.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/drop-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/drop-procedure.html'),(418,'CHECK TABLE',21,'Syntax:\nCHECK TABLE tbl_name [, tbl_name] ... [option] ...\n\noption = {\n FOR UPGRADE\n | QUICK\n | FAST\n | MEDIUM\n | EXTENDED\n | CHANGED\n}\n\nCHECK TABLE checks a table or tables for errors. CHECK TABLE works for\nInnoDB, MyISAM, ARCHIVE, and CSV tables. For MyISAM tables, the key\nstatistics are updated as well.\n\nTo check a table, you must have some privilege for it.\n\nCHECK TABLE can also check views for problems, such as tables that are\nreferenced in the view definition that no longer exist.\n\nCHECK TABLE is supported for partitioned tables, and you can use ALTER\nTABLE ... CHECK PARTITION to check one or more partitions; for more\ninformation, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.5/en/partitioning-maintenance.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/check-table.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/check-table.html'),(419,'BIN',38,'Syntax:\nBIN(N)\n\nReturns a string representation of the binary value of N, where N is a\nlonglong (BIGINT) number. This is equivalent to CONV(N,10,2). Returns\nNULL if N is NULL.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT BIN(12);\n -> \'1100\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(420,'INSTALL PLUGIN',5,'Syntax:\nINSTALL PLUGIN plugin_name SONAME \'shared_library_name\'\n\nThis statement installs a server plugin. It requires the INSERT\nprivilege for the mysql.plugin table.\n\nplugin_name is the name of the plugin as defined in the plugin\ndescriptor structure contained in the library file (see\nhttp://dev.mysql.com/doc/refman/5.5/en/plugin-data-structures.html).\nPlugin names are not case sensitive. For maximal compatibility, plugin\nnames should be limited to ASCII letters, digits, and underscore\nbecause they are used in C source files, shell command lines, M4 and\nBourne shell scripts, and SQL environments.\n\nshared_library_name is the name of the shared library that contains the\nplugin code. The name includes the file name extension (for example,\nlibmyplugin.so, libmyplugin.dll, or libmyplugin.dylib).\n\nThe shared library must be located in the plugin directory (the\ndirectory named by the plugin_dir system variable). The library must be\nin the plugin directory itself, not in a subdirectory. By default,\nplugin_dir is the plugin directory under the directory named by the\npkglibdir configuration variable, but it can be changed by setting the\nvalue of plugin_dir at server startup. For example, set its value in a\nmy.cnf file:\n\n[mysqld]\nplugin_dir=/path/to/plugin/directory\n\nIf the value of plugin_dir is a relative path name, it is taken to be\nrelative to the MySQL base directory (the value of the basedir system\nvariable).\n\nINSTALL PLUGIN loads and initializes the plugin code to make the plugin\navailable for use. A plugin is initialized by executing its\ninitialization function, which handles any setup that the plugin must\nperform before it can be used. When the server shuts down, it executes\nthe deinitialization function for each plugin that is loaded so that\nthe plugin has a chance to perform any final cleanup.\n\nINSTALL PLUGIN also registers the plugin by adding a line that\nindicates the plugin name and library file name to the mysql.plugin\ntable. At server startup, the server loads and initializes any plugin\nthat is listed in the mysql.plugin table. This means that a plugin is\ninstalled with INSTALL PLUGIN only once, not every time the server\nstarts. Plugin loading at startup does not occur if the server is\nstarted with the --skip-grant-tables option.\n\nA plugin library can contain multiple plugins. For each of them to be\ninstalled, use a separate INSTALL PLUGIN statement. Each statement\nnames a different plugin, but all of them specify the same library\nname.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/install-plugin.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/install-plugin.html'),(421,'DECLARE CURSOR',24,'Syntax:\nDECLARE cursor_name CURSOR FOR select_statement\n\nThis statement declares a cursor and associates it with a SELECT\nstatement that retrieves the rows to be traversed by the cursor. To\nfetch the rows later, use a FETCH statement. The number of columns\nretrieved by the SELECT statement must match the number of output\nvariables specified in the FETCH statement.\n\nThe SELECT statement cannot have an INTO clause.\n\nCursor declarations must appear before handler declarations and after\nvariable and condition declarations.\n\nA stored program may contain multiple cursor declarations, but each\ncursor declared in a given block must have a unique name. For an\nexample, see http://dev.mysql.com/doc/refman/5.5/en/cursors.html.\n\nFor information available through SHOW statements, it is possible in\nmany cases to obtain equivalent information by using a cursor with an\nINFORMATION_SCHEMA table.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/declare-cursor.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/declare-cursor.html'),(422,'LOAD DATA',28,'Syntax:\nLOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE \'file_name\'\n [REPLACE | IGNORE]\n INTO TABLE tbl_name\n [CHARACTER SET charset_name]\n [{FIELDS | COLUMNS}\n [TERMINATED BY \'string\']\n [[OPTIONALLY] ENCLOSED BY \'char\']\n [ESCAPED BY \'char\']\n ]\n [LINES\n [STARTING BY \'string\']\n [TERMINATED BY \'string\']\n ]\n [IGNORE number {LINES | ROWS}]\n [(col_name_or_user_var,...)]\n [SET col_name = expr,...]\n\nThe LOAD DATA INFILE statement reads rows from a text file into a table\nat a very high speed. LOAD DATA INFILE is the complement of SELECT ...\nINTO OUTFILE. (See\nhttp://dev.mysql.com/doc/refman/5.5/en/select-into.html.) To write data\nfrom a table to a file, use SELECT ... INTO OUTFILE. To read the file\nback into a table, use LOAD DATA INFILE. The syntax of the FIELDS and\nLINES clauses is the same for both statements. Both clauses are\noptional, but FIELDS must precede LINES if both are specified.\n\nYou can also load data files by using the mysqlimport utility; it\noperates by sending a LOAD DATA INFILE statement to the server. The\n--local option causes mysqlimport to read data files from the client\nhost. You can specify the --compress option to get better performance\nover slow networks if the client and server support the compressed\nprotocol. See http://dev.mysql.com/doc/refman/5.5/en/mysqlimport.html.\n\nFor more information about the efficiency of INSERT versus LOAD DATA\nINFILE and speeding up LOAD DATA INFILE, see\nhttp://dev.mysql.com/doc/refman/5.5/en/insert-speed.html.\n\nThe file name must be given as a literal string. On Windows, specify\nbackslashes in path names as forward slashes or doubled backslashes.\nThe character_set_filesystem system variable controls the\ninterpretation of the file name.\n\nThe server uses the character set indicated by the\ncharacter_set_database system variable to interpret the information in\nthe file. SET NAMES and the setting of character_set_client do not\naffect interpretation of input. If the contents of the input file use a\ncharacter set that differs from the default, it is usually preferable\nto specify the character set of the file by using the CHARACTER SET\nclause. A character set of binary specifies \"no conversion.\"\n\nLOAD DATA INFILE interprets all fields in the file as having the same\ncharacter set, regardless of the data types of the columns into which\nfield values are loaded. For proper interpretation of file contents,\nyou must ensure that it was written with the correct character set. For\nexample, if you write a data file with mysqldump -T or by issuing a\nSELECT ... INTO OUTFILE statement in mysql, be sure to use a\n--default-character-set option so that output is written in the\ncharacter set to be used when the file is loaded with LOAD DATA INFILE.\n\n*Note*: It is not possible to load data files that use the ucs2, utf16,\nor utf32 character set.\n\nIf you use LOW_PRIORITY, execution of the LOAD DATA statement is\ndelayed until no other clients are reading from the table. This affects\nonly storage engines that use only table-level locking (such as MyISAM,\nMEMORY, and MERGE).\n\nIf you specify CONCURRENT with a MyISAM table that satisfies the\ncondition for concurrent inserts (that is, it contains no free blocks\nin the middle), other threads can retrieve data from the table while\nLOAD DATA is executing. This option affects the performance of LOAD\nDATA a bit, even if no other thread is using the table at the same\ntime.\n\nWith row-based replication, CONCURRENT is replicated regardless of\nMySQL version. With statement-based replication CONCURRENT is not\nreplicated prior to MySQL 5.5.1 (see Bug #34628). For more information,\nsee\nhttp://dev.mysql.com/doc/refman/5.5/en/replication-features-load-data.h\ntml.\n\nThe LOCAL keyword affects expected location of the file and error\nhandling, as described later. LOCAL works only if your server and your\nclient both have been configured to permit it. For example, if mysqld\nwas started with --local-infile=0, LOCAL does not work. See\nhttp://dev.mysql.com/doc/refman/5.5/en/load-data-local.html.\n\nThe LOCAL keyword affects where the file is expected to be found:\n\no If LOCAL is specified, the file is read by the client program on the\n client host and sent to the server. The file can be given as a full\n path name to specify its exact location. If given as a relative path\n name, the name is interpreted relative to the directory in which the\n client program was started.\n\n When using LOCAL with LOAD DATA, a copy of the file is created in the\n server\'s temporary directory. This is not the directory determined by\n the value of tmpdir or slave_load_tmpdir, but rather the operating\n system\'s temporary directory, and is not configurable in the MySQL\n Server. (Typically the system temporary directory is /tmp on Linux\n systems and C:\\WINDOWS\\TEMP on Windows.) Lack of sufficient space for\n the copy in this directory can cause the LOAD DATA LOCAL statement to\n fail.\n\no If LOCAL is not specified, the file must be located on the server\n host and is read directly by the server. The server uses the\n following rules to locate the file:\n\n o If the file name is an absolute path name, the server uses it as\n given.\n\n o If the file name is a relative path name with one or more leading\n components, the server searches for the file relative to the\n server\'s data directory.\n\n o If a file name with no leading components is given, the server\n looks for the file in the database directory of the default\n database.\n\nIn the non-LOCAL case, these rules mean that a file named as\n./myfile.txt is read from the server\'s data directory, whereas the file\nnamed as myfile.txt is read from the database directory of the default\ndatabase. For example, if db1 is the default database, the following\nLOAD DATA statement reads the file data.txt from the database directory\nfor db1, even though the statement explicitly loads the file into a\ntable in the db2 database:\n\nLOAD DATA INFILE \'data.txt\' INTO TABLE db2.my_table;\n\nFor security reasons, when reading text files located on the server,\nthe files must either reside in the database directory or be readable\nby the user account used to run the server. Also, to use LOAD DATA\nINFILE on server files, you must have the FILE privilege. See\nhttp://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html. For\nnon-LOCAL load operations, if the secure_file_priv system variable is\nset to a nonempty directory name, the file to be loaded must be located\nin that directory.\n\nUsing LOCAL is a bit slower than letting the server access the files\ndirectly, because the contents of the file must be sent over the\nconnection by the client to the server. On the other hand, you do not\nneed the FILE privilege to load local files.\n\nLOCAL also affects error handling:\n\no With LOAD DATA INFILE, data-interpretation and duplicate-key errors\n terminate the operation.\n\no With LOAD DATA LOCAL INFILE, data-interpretation and duplicate-key\n errors become warnings and the operation continues because the server\n has no way to stop transmission of the file in the middle of the\n operation. For duplicate-key errors, this is the same as if IGNORE is\n specified. IGNORE is explained further later in this section.\n\nThe REPLACE and IGNORE keywords control handling of input rows that\nduplicate existing rows on unique key values:\n\no If you specify REPLACE, input rows replace existing rows. In other\n words, rows that have the same value for a primary key or unique\n index as an existing row. See [HELP REPLACE].\n\no If you specify IGNORE, rows that duplicate an existing row on a\n unique key value are discarded.\n\no If you do not specify either option, the behavior depends on whether\n the LOCAL keyword is specified. Without LOCAL, an error occurs when a\n duplicate key value is found, and the rest of the text file is\n ignored. With LOCAL, the default behavior is the same as if IGNORE is\n specified; this is because the server has no way to stop transmission\n of the file in the middle of the operation.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/load-data.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/load-data.html'),(423,'MULTILINESTRING',25,'MultiLineString(ls1,ls2,...)\n\nConstructs a MultiLineString value using LineString or WKB LineString\narguments.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-mysql-specific-functions.html'),(424,'LOCALTIME',32,'Syntax:\nLOCALTIME, LOCALTIME()\n\nLOCALTIME and LOCALTIME() are synonyms for NOW().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(425,'SHOW RELAYLOG EVENTS',27,'Syntax:\nSHOW RELAYLOG EVENTS\n [IN \'log_name\'] [FROM pos] [LIMIT [offset,] row_count]\n\nShows the events in the relay log of a replication slave. If you do not\nspecify \'log_name\', the first relay log is displayed. This statement\nhas no effect on the master.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-relaylog-events.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-relaylog-events.html'),(426,'MPOINTFROMTEXT',4,'MPointFromText(wkt[,srid]), MultiPointFromText(wkt[,srid])\n\nConstructs a MultiPoint value using its WKT representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkt-functions.html'),(427,'BLOB',23,'BLOB[(M)]\n\nA BLOB column with a maximum length of 65,535 (216 − 1) bytes. Each\nBLOB value is stored using a 2-byte length prefix that indicates the\nnumber of bytes in the value.\n\nAn optional length M can be given for this type. If this is done, MySQL\ncreates the column as the smallest BLOB type large enough to hold\nvalues M bytes long.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(428,'SHA1',12,'Syntax:\nSHA1(str), SHA(str)\n\nCalculates an SHA-1 160-bit checksum for the string, as described in\nRFC 3174 (Secure Hash Algorithm). The value is returned as a string of\n40 hex digits, or NULL if the argument was NULL. One of the possible\nuses for this function is as a hash key. See the notes at the beginning\nof this section about storing hash values efficiently. You can also use\nSHA1() as a cryptographic function for storing passwords. SHA() is\nsynonymous with SHA1().\n\nAs of MySQL 5.5.3, the return value is a nonbinary string in the\nconnection character set. Before 5.5.3, the return value is a binary\nstring; see the notes at the beginning of this section about using the\nvalue as a nonbinary string.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','mysql> SELECT SHA1(\'abc\');\n -> \'a9993e364706816aba3e25717850c26c9cd0d89d\'\n','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(429,'SUBSTR',38,'Syntax:\nSUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str\nFROM pos FOR len)\n\nSUBSTR() is a synonym for SUBSTRING().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(430,'PASSWORD',12,'Syntax:\nPASSWORD(str)\n\nReturns a hashed password string calculated from the cleartext password\nstr. The return value is a nonbinary string in the connection character\nset (a binary string before MySQL 5.5.3), or NULL if the argument is\nNULL. This function is the SQL interface to the algorithm used by the\nserver to encrypt MySQL passwords for storage in the mysql.user grant\ntable.\n\nThe old_passwords system variable controls the password hashing method\nused by the PASSWORD() function. It also influences password hashing\nperformed by CREATE USER and GRANT statements that specify a password\nusing an IDENTIFIED BY clause.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','mysql> SET old_passwords = 0;\nmysql> SELECT PASSWORD(\'mypass\'), OLD_PASSWORD(\'mypass\');\n+-------------------------------------------+------------------------+\n| PASSWORD(\'mypass\') | OLD_PASSWORD(\'mypass\') |\n+-------------------------------------------+------------------------+\n| *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 | 6f8c114b58f2ce9e |\n+-------------------------------------------+------------------------+\n\nmysql> SET old_passwords = 1;\nmysql> SELECT PASSWORD(\'mypass\'), OLD_PASSWORD(\'mypass\');\n+--------------------+------------------------+\n| PASSWORD(\'mypass\') | OLD_PASSWORD(\'mypass\') |\n+--------------------+------------------------+\n| 6f8c114b58f2ce9e | 6f8c114b58f2ce9e |\n+--------------------+------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(431,'CHAR',23,'[NATIONAL] CHAR[(M)] [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nA fixed-length string that is always right-padded with spaces to the\nspecified length when stored. M represents the column length in\ncharacters. The range of M is 0 to 255. If M is omitted, the length is\n1.\n\n*Note*: Trailing spaces are removed when CHAR values are retrieved\nunless the PAD_CHAR_TO_FULL_LENGTH SQL mode is enabled.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(432,'UTC_DATE',32,'Syntax:\nUTC_DATE, UTC_DATE()\n\nReturns the current UTC date as a value in \'YYYY-MM-DD\' or YYYYMMDD\nformat, depending on whether the function is used in a string or\nnumeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_DATE(), UTC_DATE() + 0;\n -> \'2003-08-14\', 20030814\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(433,'DIMENSION',37,'Dimension(g)\n\nReturns the inherent dimension of the geometry value g. The result can\nbe −1, 0, 1, or 2. The meaning of these values is given in\nhttp://dev.mysql.com/doc/refman/5.5/en/gis-class-geometry.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-general-property-functions.html\n\n','mysql> SELECT Dimension(GeomFromText(\'LineString(1 1,2 2)\'));\n+------------------------------------------------+\n| Dimension(GeomFromText(\'LineString(1 1,2 2)\')) |\n+------------------------------------------------+\n| 1 |\n+------------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-general-property-functions.html'),(434,'COUNT DISTINCT',16,'Syntax:\nCOUNT(DISTINCT expr,[expr...])\n\nReturns a count of the number of rows with different non-NULL expr\nvalues.\n\nCOUNT(DISTINCT) returns 0 if there were no matching rows.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html\n\n','mysql> SELECT COUNT(DISTINCT results) FROM student;\n','http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html'),(435,'BIT',23,'BIT[(M)]\n\nA bit-field type. M indicates the number of bits per value, from 1 to\n64. The default is 1 if M is omitted.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(436,'XA',8,'Syntax:\nXA {START|BEGIN} xid [JOIN|RESUME]\n\nXA END xid [SUSPEND [FOR MIGRATE]]\n\nXA PREPARE xid\n\nXA COMMIT xid [ONE PHASE]\n\nXA ROLLBACK xid\n\nXA RECOVER\n\nFor XA START, the JOIN and RESUME clauses are not supported.\n\nFor XA END the SUSPEND [FOR MIGRATE] clause is not supported.\n\nEach XA statement begins with the XA keyword, and most of them require\nan xid value. An xid is an XA transaction identifier. It indicates\nwhich transaction the statement applies to. xid values are supplied by\nthe client, or generated by the MySQL server. An xid value has from one\nto three parts:\n\nxid: gtrid [, bqual [, formatID ]]\n\ngtrid is a global transaction identifier, bqual is a branch qualifier,\nand formatID is a number that identifies the format used by the gtrid\nand bqual values. As indicated by the syntax, bqual and formatID are\noptional. The default bqual value is \'\' if not given. The default\nformatID value is 1 if not given.\n\ngtrid and bqual must be string literals, each up to 64 bytes (not\ncharacters) long. gtrid and bqual can be specified in several ways. You\ncan use a quoted string (\'ab\'), hex string (X\'6162\', 0x6162), or bit\nvalue (b\'nnnn\').\n\nformatID is an unsigned integer.\n\nThe gtrid and bqual values are interpreted in bytes by the MySQL\nserver\'s underlying XA support routines. However, while an SQL\nstatement containing an XA statement is being parsed, the server works\nwith some specific character set. To be safe, write gtrid and bqual as\nhex strings.\n\nxid values typically are generated by the Transaction Manager. Values\ngenerated by one TM must be different from values generated by other\nTMs. A given TM must be able to recognize its own xid values in a list\nof values returned by the XA RECOVER statement.\n\nFor XA START xid starts an XA transaction with the given xid value.\nEach XA transaction must have a unique xid value, so the value must not\ncurrently be used by another XA transaction. Uniqueness is assessed\nusing the gtrid and bqual values. All following XA statements for the\nXA transaction must be specified using the same xid value as that given\nin the XA START statement. If you use any of those statements but\nspecify an xid value that does not correspond to some existing XA\ntransaction, an error occurs.\n\nOne or more XA transactions can be part of the same global transaction.\nAll XA transactions within a given global transaction must use the same\ngtrid value in the xid value. For this reason, gtrid values must be\nglobally unique so that there is no ambiguity about which global\ntransaction a given XA transaction is part of. The bqual part of the\nxid value must be different for each XA transaction within a global\ntransaction. (The requirement that bqual values be different is a\nlimitation of the current MySQL XA implementation. It is not part of\nthe XA specification.)\n\nThe XA RECOVER statement returns information for those XA transactions\non the MySQL server that are in the PREPARED state. (See\nhttp://dev.mysql.com/doc/refman/5.5/en/xa-states.html.) The output\nincludes a row for each such XA transaction on the server, regardless\nof which client started it.\n\nXA RECOVER output rows look like this (for an example xid value\nconsisting of the parts \'abc\', \'def\', and 7):\n\nmysql> XA RECOVER;\n+----------+--------------+--------------+--------+\n| formatID | gtrid_length | bqual_length | data |\n+----------+--------------+--------------+--------+\n| 7 | 3 | 3 | abcdef |\n+----------+--------------+--------------+--------+\n\nThe output columns have the following meanings:\n\no formatID is the formatID part of the transaction xid\n\no gtrid_length is the length in bytes of the gtrid part of the xid\n\no bqual_length is the length in bytes of the bqual part of the xid\n\no data is the concatenation of the gtrid and bqual parts of the xid\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/xa-statements.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/xa-statements.html'),(437,'EQUALS',31,'Equals(g1,g2)\n\nReturns 1 or 0 to indicate whether g1 is spatially equal to g2.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mbr.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/spatial-relation-functions-mbr.html'),(438,'SHOW CREATE VIEW',27,'Syntax:\nSHOW CREATE VIEW view_name\n\nThis statement shows the CREATE VIEW statement that creates the named\nview.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-create-view.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-create-view.html'),(439,'CENTROID',2,'Centroid(mpoly)\n\nReturns the mathematical centroid for the MultiPolygon value mpoly as a\nPoint. The result is not guaranteed to be on the MultiPolygon.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-polygon-property-functions.html\n\n','mysql> SET @poly =\n -> GeomFromText(\'POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))\');\nmysql> SELECT GeometryType(@poly),AsText(Centroid(@poly));\n+---------------------+--------------------------------------------+\n| GeometryType(@poly) | AsText(Centroid(@poly)) |\n+---------------------+--------------------------------------------+\n| POLYGON | POINT(4.958333333333333 4.958333333333333) |\n+---------------------+--------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-polygon-property-functions.html'),(440,'INTERVAL',20,'Syntax:\nINTERVAL(N,N1,N2,N3,...)\n\nReturns 0 if N < N1, 1 if N < N2 and so on or -1 if N is NULL. All\narguments are treated as integers. It is required that N1 < N2 < N3 <\n... < Nn for this function to work correctly. This is because a binary\nsearch is used (very fast).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);\n -> 3\nmysql> SELECT INTERVAL(10, 1, 10, 100, 1000);\n -> 2\nmysql> SELECT INTERVAL(22, 23, 30, 44, 200);\n -> 0\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(441,'FROM_DAYS',32,'Syntax:\nFROM_DAYS(N)\n\nGiven a day number N, returns a DATE value.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT FROM_DAYS(730669);\n -> \'2007-07-03\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(442,'ALTER PROCEDURE',40,'Syntax:\nALTER PROCEDURE proc_name [characteristic ...]\n\ncharacteristic:\n COMMENT \'string\'\n | LANGUAGE SQL\n | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }\n | SQL SECURITY { DEFINER | INVOKER }\n\nThis statement can be used to change the characteristics of a stored\nprocedure. More than one change may be specified in an ALTER PROCEDURE\nstatement. However, you cannot change the parameters or body of a\nstored procedure using this statement; to make such changes, you must\ndrop and re-create the procedure using DROP PROCEDURE and CREATE\nPROCEDURE.\n\nYou must have the ALTER ROUTINE privilege for the procedure. By\ndefault, that privilege is granted automatically to the procedure\ncreator. This behavior can be changed by disabling the\nautomatic_sp_privileges system variable. See\nhttp://dev.mysql.com/doc/refman/5.5/en/stored-routines-privileges.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/alter-procedure.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/alter-procedure.html'),(443,'BIT_COUNT',19,'Syntax:\nBIT_COUNT(N)\n\nReturns the number of bits that are set in the argument N.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html\n\n','mysql> SELECT BIT_COUNT(29), BIT_COUNT(b\'101010\');\n -> 4, 3\n','http://dev.mysql.com/doc/refman/5.5/en/bit-functions.html'),(444,'OCTET_LENGTH',38,'Syntax:\nOCTET_LENGTH(str)\n\nOCTET_LENGTH() is a synonym for LENGTH().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(445,'UTC_TIMESTAMP',32,'Syntax:\nUTC_TIMESTAMP, UTC_TIMESTAMP()\n\nReturns the current UTC date and time as a value in \'YYYY-MM-DD\nHH:MM:SS\' or YYYYMMDDHHMMSS.uuuuuu format, depending on whether the\nfunction is used in a string or numeric context.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;\n -> \'2003-08-14 18:08:04\', 20030814180804.000000\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(446,'AES_ENCRYPT',12,'Syntax:\nAES_ENCRYPT(str,key_str)\n\nAES_ENCRYPT() and AES_DECRYPT() implement encryption and decryption of\ndata using the official AES (Advanced Encryption Standard) algorithm,\npreviously known as \"Rijndael.\" The AES standard permits various key\nlengths. These functions implement AES with a 128-bit key length, but\nyou can extend them to 256 bits by modifying the source. The key length\nis a trade off between performance and security.\n\nAES_ENCRYPT() encrypts the string str using the key string key_str and\nreturns a binary string containing the encrypted output. AES_DECRYPT()\ndecrypts the encrypted string crypt_str using the key string key_str\nand returns the original cleartext string. If either function argument\nis NULL, the function returns NULL.\n\nThe str and crypt_str arguments can be any length, and padding is\nautomatically added to str so it is a multiple of a block as required\nby block-based algorithms such as AES. This padding is automatically\nremoved by the AES_DECRYPT() function. The length of crypt_str can be\ncalculated using this formula:\n\n16 * (trunc(string_length / 16) + 1)\n\nFor a key length of 128 bits, the most secure way to pass a key to the\nkey_str argument is to create a truly random 128-bit value and pass it\nas a binary value. For example:\n\nINSERT INTO t\nVALUES (1,AES_ENCRYPT(\'text\',UNHEX(\'F3229A0B371ED2D9441B830D21A390C3\')));\n\nA passphrase can be used to generate an AES key by hashing the\npassphrase. For example:\n\nINSERT INTO t VALUES (1,AES_ENCRYPT(\'text\', SHA2(\'My secret passphrase\',512)));\n\nDo not pass a password or passphrase directly to crypt_str, hash it\nfirst. Previous versions of this documentation suggested the former\napproach, but it is no longer recommended as the examples shown here\nare more secure.\n\nIf AES_DECRYPT() detects invalid data or incorrect padding, it returns\nNULL. However, it is possible for AES_DECRYPT() to return a non-NULL\nvalue (possibly garbage) if the input data or the key is invalid.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(447,'+',3,'Syntax:\n+\n\nAddition:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html\n\n','mysql> SELECT 3+5;\n -> 8\n','http://dev.mysql.com/doc/refman/5.5/en/arithmetic-functions.html'),(448,'INET_NTOA',14,'Syntax:\nINET_NTOA(expr)\n\nGiven a numeric IPv4 network address in network byte order, returns the\ndotted-quad representation of the address as a string. INET_NTOA()\nreturns NULL if it does not understand its argument.\n\nAs of MySQL 5.5.3, the return value is a nonbinary string in the\nconnection character set. Before 5.5.3, the return value is a binary\nstring.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html\n\n','mysql> SELECT INET_NTOA(167773449);\n -> \'10.0.5.9\'\n','http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html'),(449,'ACOS',3,'Syntax:\nACOS(X)\n\nReturns the arc cosine of X, that is, the value whose cosine is X.\nReturns NULL if X is not in the range -1 to 1.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT ACOS(1);\n -> 0\nmysql> SELECT ACOS(1.0001);\n -> NULL\nmysql> SELECT ACOS(0);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(450,'ISOLATION',8,'Syntax:\nSET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL\n {\n REPEATABLE READ\n | READ COMMITTED\n | READ UNCOMMITTED\n | SERIALIZABLE\n }\n\nThis statement sets the transaction isolation level, used for\noperations on InnoDB tables.\n\nScope of the Isolation Level\n\nYou can set the isolation level globally, for the current session, or\nfor the next transaction:\n\no With the GLOBAL keyword, the statement sets the default transaction\n level globally for all subsequent sessions. Existing sessions are\n unaffected.\n\no With the SESSION keyword, the statement sets the default transaction\n level for all subsequent transactions performed within the current\n session.\n\no Without any SESSION or GLOBAL keyword, the statement sets the\n isolation level for the next (not started) transaction performed\n within the current session. Subsequent transactions revert to using\n the SESSION isolation level.\n\nA change to the global default isolation level requires the SUPER\nprivilege. Any session is free to change its session isolation level\n(even in the middle of a transaction), or the isolation level for its\nnext transaction.\n\nSET TRANSACTION ISOLATION LEVEL without GLOBAL or SESSION is not\npermitted while there is an active transaction:\n\nmysql> START TRANSACTION;\nQuery OK, 0 rows affected (0.02 sec)\n\nmysql> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;\nERROR 1568 (25001): Transaction isolation level can\'t be changed\nwhile a transaction is in progress\n\nTo set the global default isolation level at server startup, use the\n--transaction-isolation=level option to mysqld on the command line or\nin an option file. Values of level for this option use dashes rather\nthan spaces, so the permissible values are READ-UNCOMMITTED,\nREAD-COMMITTED, REPEATABLE-READ, or SERIALIZABLE. For example, to set\nthe default isolation level to REPEATABLE READ, use these lines in the\n[mysqld] section of an option file:\n\n[mysqld]\ntransaction-isolation = REPEATABLE-READ\n\nIt is possible to check or set the global and session transaction\nisolation levels at runtime by using the tx_isolation system variable:\n\nSELECT @@GLOBAL.tx_isolation, @@tx_isolation;\nSET GLOBAL tx_isolation=\'REPEATABLE-READ\';\nSET SESSION tx_isolation=\'SERIALIZABLE\';\n\nDetails and Usage of Isolation Levels\n\nInnoDB supports each of the transaction isolation levels described here\nusing different locking strategies. You can enforce a high degree of\nconsistency with the default REPEATABLE READ level, for operations on\ncrucial data where ACID compliance is important. Or you can relax the\nconsistency rules with READ COMMITTED or even READ UNCOMMITTED, in\nsituations such as bulk reporting where precise consistency and\nrepeatable results are less important than minimizing the amount of\noverhead for locking. SERIALIZABLE enforces even stricter rules than\nREPEATABLE READ, and is used mainly in specialized situations, such as\nwith XA transactions and for troubleshooting issues with concurrency\nand deadlocks.\n\nFor full information about how these isolation levels work with InnoDB\ntransactions, see\nhttp://dev.mysql.com/doc/refman/5.5/en/innodb-transaction-model.html.\nIn particular, for additional information about InnoDB record-level\nlocks and how it uses them to execute various types of statements, see\nhttp://dev.mysql.com/doc/refman/5.5/en/innodb-record-level-locks.html\nand http://dev.mysql.com/doc/refman/5.5/en/innodb-locks-set.html.\n\nThe following list describes how MySQL supports the different\ntransaction levels. The list goes from the most commonly used level to\nthe least used.\n\no REPEATABLE READ\n\n This is the default isolation level for InnoDB. For consistent reads,\n there is an important difference from the READ COMMITTED isolation\n level: All consistent reads within the same transaction read the\n snapshot established by the first read. This convention means that if\n you issue several plain (nonlocking) SELECT statements within the\n same transaction, these SELECT statements are consistent also with\n respect to each other. See\n http://dev.mysql.com/doc/refman/5.5/en/innodb-consistent-read.html.\n\n For locking reads (SELECT with FOR UPDATE or LOCK IN SHARE MODE),\n UPDATE, and DELETE statements, locking depends on whether the\n statement uses a unique index with a unique search condition, or a\n range-type search condition. For a unique index with a unique search\n condition, InnoDB locks only the index record found, not the gap\n before it. For other search conditions, InnoDB locks the index range\n scanned, using gap locks or next-key (gap plus index-record) locks to\n block insertions by other sessions into the gaps covered by the\n range.\n\no READ COMMITTED\n\n A somewhat Oracle-like isolation level with respect to consistent\n (nonlocking) reads: Each consistent read, even within the same\n transaction, sets and reads its own fresh snapshot. See\n http://dev.mysql.com/doc/refman/5.5/en/innodb-consistent-read.html.\n\n For locking reads (SELECT with FOR UPDATE or LOCK IN SHARE MODE),\n UPDATE statements, and DELETE statements, InnoDB locks only index\n records, not the gaps before them, and thus permits the free\n insertion of new records next to locked records.\n\n *Note*: In MySQL 5.5, when READ COMMITTED isolation level is used or\n the innodb_locks_unsafe_for_binlog system variable is enabled, there\n is no InnoDB gap locking except for foreign-key constraint checking\n and duplicate-key checking. Also, record locks for nonmatching rows\n are released after MySQL has evaluated the WHERE condition. If you\n use READ COMMITTED or enable innodb_locks_unsafe_for_binlog, you must\n use row-based binary logging.\n\no READ UNCOMMITTED\n\n SELECT statements are performed in a nonlocking fashion, but a\n possible earlier version of a row might be used. Thus, using this\n isolation level, such reads are not consistent. This is also called a\n \"dirty read.\" Otherwise, this isolation level works like READ\n COMMITTED.\n\no SERIALIZABLE\n\n This level is like REPEATABLE READ, but InnoDB implicitly converts\n all plain SELECT statements to SELECT ... LOCK IN SHARE MODE if\n autocommit is disabled. If autocommit is enabled, the SELECT is its\n own transaction. It therefore is known to be read only and can be\n serialized if performed as a consistent (nonlocking) read and need\n not block for other transactions. (To force a plain SELECT to block\n if other transactions have modified the selected rows, disable\n autocommit.)\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/set-transaction.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/set-transaction.html'),(451,'CEILING',3,'Syntax:\nCEILING(X)\n\nReturns the smallest integer value not less than X.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT CEILING(1.23);\n -> 2\nmysql> SELECT CEILING(-1.23);\n -> -1\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(452,'SIN',3,'Syntax:\nSIN(X)\n\nReturns the sine of X, where X is given in radians.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT SIN(PI());\n -> 1.2246063538224e-16\nmysql> SELECT ROUND(SIN(PI()));\n -> 0\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(453,'DAYOFWEEK',32,'Syntax:\nDAYOFWEEK(date)\n\nReturns the weekday index for date (1 = Sunday, 2 = Monday, ..., 7 =\nSaturday). These index values correspond to the ODBC standard.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT DAYOFWEEK(\'2007-02-03\');\n -> 7\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(454,'SHOW PROCESSLIST',27,'Syntax:\nSHOW [FULL] PROCESSLIST\n\nSHOW PROCESSLIST shows you which threads are running. You can also get\nthis information from the INFORMATION_SCHEMA PROCESSLIST table or the\nmysqladmin processlist command. If you have the PROCESS privilege, you\ncan see all threads. Otherwise, you can see only your own threads (that\nis, threads associated with the MySQL account that you are using). If\nyou do not use the FULL keyword, only the first 100 characters of each\nstatement are shown in the Info field.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-processlist.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-processlist.html'),(455,'LINEFROMWKB',33,'LineFromWKB(wkb[,srid]), LineStringFromWKB(wkb[,srid])\n\nConstructs a LineString value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html'),(456,'GEOMETRYTYPE',37,'GeometryType(g)\n\nReturns a binary string indicating the name of the geometry type of\nwhich the geometry instance g is a member. The name corresponds to one\nof the instantiable Geometry subclasses.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-general-property-functions.html\n\n','mysql> SELECT GeometryType(GeomFromText(\'POINT(1 1)\'));\n+------------------------------------------+\n| GeometryType(GeomFromText(\'POINT(1 1)\')) |\n+------------------------------------------+\n| POINT |\n+------------------------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-general-property-functions.html'),(457,'CREATE VIEW',40,'Syntax:\nCREATE\n [OR REPLACE]\n [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]\n [DEFINER = { user | CURRENT_USER }]\n [SQL SECURITY { DEFINER | INVOKER }]\n VIEW view_name [(column_list)]\n AS select_statement\n [WITH [CASCADED | LOCAL] CHECK OPTION]\n\nThe CREATE VIEW statement creates a new view, or replaces an existing\nview if the OR REPLACE clause is given. If the view does not exist,\nCREATE OR REPLACE VIEW is the same as CREATE VIEW. If the view does\nexist, CREATE OR REPLACE VIEW is the same as ALTER VIEW.\n\nThe select_statement is a SELECT statement that provides the definition\nof the view. (Selecting from the view selects, in effect, using the\nSELECT statement.) The select_statement can select from base tables or\nother views.\n\nThe view definition is \"frozen\" at creation time. Changes to the\nunderlying tables afterward do not affect the view definition. For\nexample, if a view is defined as SELECT * on a table, new columns added\nto the table later do not become part of the view.\n\nThe ALGORITHM clause affects how MySQL processes the view. The DEFINER\nand SQL SECURITY clauses specify the security context to be used when\nchecking access privileges at view invocation time. The WITH CHECK\nOPTION clause can be given to constrain inserts or updates to rows in\ntables referenced by the view. These clauses are described later in\nthis section.\n\nThe CREATE VIEW statement requires the CREATE VIEW privilege for the\nview, and some privilege for each column selected by the SELECT\nstatement. For columns used elsewhere in the SELECT statement, you must\nhave the SELECT privilege. If the OR REPLACE clause is present, you\nmust also have the DROP privilege for the view. CREATE VIEW might also\nrequire the SUPER privilege, depending on the DEFINER value, as\ndescribed later in this section.\n\nWhen a view is referenced, privilege checking occurs as described later\nin this section.\n\nA view belongs to a database. By default, a new view is created in the\ndefault database. To create the view explicitly in a given database,\nuse db_name.view_name syntax to qualify the view name with the database\nname:\n\nmysql> CREATE VIEW test.v AS SELECT * FROM t;\n\nWithin a database, base tables and views share the same namespace, so a\nbase table and a view cannot have the same name.\n\nColumns retrieved by the SELECT statement can be simple references to\ntable columns, or expressions that use functions, constant values,\noperators, and so forth.\n\nA view must have unique column names with no duplicates, just like a\nbase table. By default, the names of the columns retrieved by the\nSELECT statement are used for the view column names. To define explicit\nnames for the view columns, the optional column_list clause can be\ngiven as a list of comma-separated identifiers. The number of names in\ncolumn_list must be the same as the number of columns retrieved by the\nSELECT statement.\n\nUnqualified table or view names in the SELECT statement are interpreted\nwith respect to the default database. A view can refer to tables or\nviews in other databases by qualifying the table or view name with the\nappropriate database name.\n\nA view can be created from many kinds of SELECT statements. It can\nrefer to base tables or other views. It can use joins, UNION, and\nsubqueries. The SELECT need not even refer to any tables.\n\nThe following example defines a view that selects two columns from\nanother table as well as an expression calculated from those columns:\n\nmysql> CREATE TABLE t (qty INT, price INT);\nmysql> INSERT INTO t VALUES(3, 50);\nmysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;\nmysql> SELECT * FROM v;\n+------+-------+-------+\n| qty | price | value |\n+------+-------+-------+\n| 3 | 50 | 150 |\n+------+-------+-------+\n\nA view definition is subject to the following restrictions:\n\no The SELECT statement cannot contain a subquery in the FROM clause.\n\no The SELECT statement cannot refer to system variables or user-defined\n variables.\n\no Within a stored program, the SELECT statement cannot refer to program\n parameters or local variables.\n\no The SELECT statement cannot refer to prepared statement parameters.\n\no Any table or view referred to in the definition must exist. After the\n view has been created, it is possible to drop a table or view that\n the definition refers to. In this case, use of the view results in an\n error. To check a view definition for problems of this kind, use the\n CHECK TABLE statement.\n\no The definition cannot refer to a TEMPORARY table, and you cannot\n create a TEMPORARY view.\n\no You cannot associate a trigger with a view.\n\no Aliases for column names in the SELECT statement are checked against\n the maximum column length of 64 characters (not the maximum alias\n length of 256 characters).\n\nORDER BY is permitted in a view definition, but it is ignored if you\nselect from a view using a statement that has its own ORDER BY.\n\nFor other options or clauses in the definition, they are added to the\noptions or clauses of the statement that references the view, but the\neffect is undefined. For example, if a view definition includes a LIMIT\nclause, and you select from the view using a statement that has its own\nLIMIT clause, it is undefined which limit applies. This same principle\napplies to options such as ALL, DISTINCT, or SQL_SMALL_RESULT that\nfollow the SELECT keyword, and to clauses such as INTO, FOR UPDATE,\nLOCK IN SHARE MODE, and PROCEDURE.\n\nIf you create a view and then change the query processing environment\nby changing system variables, that may affect the results you get from\nthe view:\n\nmysql> CREATE VIEW v (mycol) AS SELECT \'abc\';\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SET sql_mode = \'\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT \"mycol\" FROM v;\n+-------+\n| mycol |\n+-------+\n| mycol |\n+-------+\n1 row in set (0.01 sec)\n\nmysql> SET sql_mode = \'ANSI_QUOTES\';\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SELECT \"mycol\" FROM v;\n+-------+\n| mycol |\n+-------+\n| abc |\n+-------+\n1 row in set (0.00 sec)\n\nThe DEFINER and SQL SECURITY clauses determine which MySQL account to\nuse when checking access privileges for the view when a statement is\nexecuted that references the view. The valid SQL SECURITY\ncharacteristic values are DEFINER (the default) and INVOKER. These\nindicate that the required privileges must be held by the user who\ndefined or invoked the view, respectively.\n\nIf a user value is given for the DEFINER clause, it should be a MySQL\naccount specified as \'user_name\'@\'host_name\' (the same format used in\nthe GRANT statement), CURRENT_USER, or CURRENT_USER(). The default\nDEFINER value is the user who executes the CREATE VIEW statement. This\nis the same as specifying DEFINER = CURRENT_USER explicitly.\n\nIf you specify the DEFINER clause, these rules determine the valid\nDEFINER user values:\n\no If you do not have the SUPER privilege, the only valid user value is\n your own account, either specified literally or by using\n CURRENT_USER. You cannot set the definer to some other account.\n\no If you have the SUPER privilege, you can specify any syntactically\n valid account name. If the account does not exist, a warning is\n generated.\n\no Although it is possible to create a view with a nonexistent DEFINER\n account, an error occurs when the view is referenced if the SQL\n SECURITY value is DEFINER but the definer account does not exist.\n\nFor more information about view security, see\nhttp://dev.mysql.com/doc/refman/5.5/en/stored-programs-security.html.\n\nWithin a view definition, CURRENT_USER returns the view\'s DEFINER value\nby default. For views defined with the SQL SECURITY INVOKER\ncharacteristic, CURRENT_USER returns the account for the view\'s\ninvoker. For information about user auditing within views, see\nhttp://dev.mysql.com/doc/refman/5.5/en/account-activity-auditing.html.\n\nWithin a stored routine that is defined with the SQL SECURITY DEFINER\ncharacteristic, CURRENT_USER returns the routine\'s DEFINER value. This\nalso affects a view defined within such a routine, if the view\ndefinition contains a DEFINER value of CURRENT_USER.\n\nMySQL checks view privileges like this:\n\no At view definition time, the view creator must have the privileges\n needed to use the top-level objects accessed by the view. For\n example, if the view definition refers to table columns, the creator\n must have some privilege for each column in the select list of the\n definition, and the SELECT privilege for each column used elsewhere\n in the definition. If the definition refers to a stored function,\n only the privileges needed to invoke the function can be checked. The\n privileges required at function invocation time can be checked only\n as it executes: For different invocations, different execution paths\n within the function might be taken.\n\no The user who references a view must have appropriate privileges to\n access it (SELECT to select from it, INSERT to insert into it, and so\n forth.)\n\no When a view has been referenced, privileges for objects accessed by\n the view are checked against the privileges held by the view DEFINER\n account or invoker, depending on whether the SQL SECURITY\n characteristic is DEFINER or INVOKER, respectively.\n\no If reference to a view causes execution of a stored function,\n privilege checking for statements executed within the function depend\n on whether the function SQL SECURITY characteristic is DEFINER or\n INVOKER. If the security characteristic is DEFINER, the function runs\n with the privileges of the DEFINER account. If the characteristic is\n INVOKER, the function runs with the privileges determined by the\n view\'s SQL SECURITY characteristic.\n\nExample: A view might depend on a stored function, and that function\nmight invoke other stored routines. For example, the following view\ninvokes a stored function f():\n\nCREATE VIEW v AS SELECT * FROM t WHERE t.id = f(t.name);\n\nSuppose that f() contains a statement such as this:\n\nIF name IS NULL then\n CALL p1();\nELSE\n CALL p2();\nEND IF;\n\nThe privileges required for executing statements within f() need to be\nchecked when f() executes. This might mean that privileges are needed\nfor p1() or p2(), depending on the execution path within f(). Those\nprivileges must be checked at runtime, and the user who must possess\nthe privileges is determined by the SQL SECURITY values of the view v\nand the function f().\n\nThe DEFINER and SQL SECURITY clauses for views are extensions to\nstandard SQL. In standard SQL, views are handled using the rules for\nSQL SECURITY DEFINER. The standard says that the definer of the view,\nwhich is the same as the owner of the view\'s schema, gets applicable\nprivileges on the view (for example, SELECT) and may grant them. MySQL\nhas no concept of a schema \"owner\", so MySQL adds a clause to identify\nthe definer. The DEFINER clause is an extension where the intent is to\nhave what the standard has; that is, a permanent record of who defined\nthe view. This is why the default DEFINER value is the account of the\nview creator.\n\nThe optional ALGORITHM clause is a MySQL extension to standard SQL. It\naffects how MySQL processes the view. ALGORITHM takes three values:\nMERGE, TEMPTABLE, or UNDEFINED. The default algorithm is UNDEFINED if\nno ALGORITHM clause is present. For more information, see\nhttp://dev.mysql.com/doc/refman/5.5/en/view-algorithms.html.\n\nSome views are updatable. That is, you can use them in statements such\nas UPDATE, DELETE, or INSERT to update the contents of the underlying\ntable. For a view to be updatable, there must be a one-to-one\nrelationship between the rows in the view and the rows in the\nunderlying table. There are also certain other constructs that make a\nview nonupdatable.\n\nThe WITH CHECK OPTION clause can be given for an updatable view to\nprevent inserts or updates to rows except those for which the WHERE\nclause in the select_statement is true.\n\nIn a WITH CHECK OPTION clause for an updatable view, the LOCAL and\nCASCADED keywords determine the scope of check testing when the view is\ndefined in terms of another view. The LOCAL keyword restricts the CHECK\nOPTION only to the view being defined. CASCADED causes the checks for\nunderlying views to be evaluated as well. When neither keyword is\ngiven, the default is CASCADED.\n\nFor more information about updatable views and the WITH CHECK OPTION\nclause, see\nhttp://dev.mysql.com/doc/refman/5.5/en/view-updatability.html, and\nhttp://dev.mysql.com/doc/refman/5.5/en/view-check-option.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-view.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/create-view.html'),(458,'TRIM',38,'Syntax:\nTRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr\nFROM] str)\n\nReturns the string str with all remstr prefixes or suffixes removed. If\nnone of the specifiers BOTH, LEADING, or TRAILING is given, BOTH is\nassumed. remstr is optional and, if not specified, spaces are removed.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT TRIM(\' bar \');\n -> \'bar\'\nmysql> SELECT TRIM(LEADING \'x\' FROM \'xxxbarxxx\');\n -> \'barxxx\'\nmysql> SELECT TRIM(BOTH \'x\' FROM \'xxxbarxxx\');\n -> \'bar\'\nmysql> SELECT TRIM(TRAILING \'xyz\' FROM \'barxxyz\');\n -> \'barx\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(459,'IS',20,'Syntax:\nIS boolean_value\n\nTests a value against a boolean value, where boolean_value can be TRUE,\nFALSE, or UNKNOWN.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;\n -> 1, 1, 1\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(460,'GET_FORMAT',32,'Syntax:\nGET_FORMAT({DATE|TIME|DATETIME}, {\'EUR\'|\'USA\'|\'JIS\'|\'ISO\'|\'INTERNAL\'})\n\nReturns a format string. This function is useful in combination with\nthe DATE_FORMAT() and the STR_TO_DATE() functions.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT DATE_FORMAT(\'2003-10-03\',GET_FORMAT(DATE,\'EUR\'));\n -> \'03.10.2003\'\nmysql> SELECT STR_TO_DATE(\'10.31.2003\',GET_FORMAT(DATE,\'USA\'));\n -> \'2003-10-31\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(461,'TINYBLOB',23,'TINYBLOB\n\nA BLOB column with a maximum length of 255 (28 − 1) bytes. Each\nTINYBLOB value is stored using a 1-byte length prefix that indicates\nthe number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(462,'SIGNAL',24,'Syntax:\nSIGNAL condition_value\n [SET signal_information_item\n [, signal_information_item] ...]\n\ncondition_value:\n SQLSTATE [VALUE] sqlstate_value\n | condition_name\n\nsignal_information_item:\n condition_information_item_name = simple_value_specification\n\ncondition_information_item_name:\n CLASS_ORIGIN\n | SUBCLASS_ORIGIN\n | MESSAGE_TEXT\n | MYSQL_ERRNO\n | CONSTRAINT_CATALOG\n | CONSTRAINT_SCHEMA\n | CONSTRAINT_NAME\n | CATALOG_NAME\n | SCHEMA_NAME\n | TABLE_NAME\n | COLUMN_NAME\n | CURSOR_NAME\n\ncondition_name, simple_value_specification:\n (see following discussion)\n\nSIGNAL is the way to \"return\" an error. SIGNAL provides error\ninformation to a handler, to an outer portion of the application, or to\nthe client. Also, it provides control over the error\'s characteristics\n(error number, SQLSTATE value, message). Without SIGNAL, it is\nnecessary to resort to workarounds such as deliberately referring to a\nnonexistent table to cause a routine to return an error.\n\nNo special privileges are required to execute the SIGNAL statement.\n\nThe condition_value in a SIGNAL statement indicates the error value to\nbe returned. It can be an SQLSTATE value (a 5-character string literal)\nor a condition_name that refers to a named condition previously defined\nwith DECLARE ... CONDITION (see [HELP DECLARE CONDITION]).\n\nAn SQLSTATE value can indicate errors, warnings, or \"not found.\" The\nfirst two characters of the value indicate its error class, as\ndiscussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/signal.html#signal-condition-inf\normation-items. Some signal values cause statement termination; see\nhttp://dev.mysql.com/doc/refman/5.5/en/signal.html#signal-effects.\n\nThe SQLSTATE value for a SIGNAL statement should not start with \'00\'\nbecause such values indicate success and are not valid for signaling an\nerror. This is true whether the SQLSTATE value is specified directly in\nthe SIGNAL statement or in a named condition referred to in the\nstatement. If the value is invalid, a Bad SQLSTATE error occurs.\n\nTo signal a generic SQLSTATE value, use \'45000\', which means \"unhandled\nuser-defined exception.\"\n\nThe SIGNAL statement optionally includes a SET clause that contains\nmultiple signal items, in a comma-separated list of\ncondition_information_item_name = simple_value_specification\nassignments.\n\nEach condition_information_item_name may be specified only once in the\nSET clause. Otherwise, a Duplicate condition information item error\noccurs.\n\nValid simple_value_specification designators can be specified using\nstored procedure or function parameters, stored program local variables\ndeclared with DECLARE, user-defined variables, system variables, or\nliterals. A character literal may include a _charset introducer.\n\nFor information about permissible condition_information_item_name\nvalues, see\nhttp://dev.mysql.com/doc/refman/5.5/en/signal.html#signal-condition-inf\normation-items.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/signal.html\n\n','CREATE PROCEDURE p (pval INT)\nBEGIN\n DECLARE specialty CONDITION FOR SQLSTATE \'45000\';\n IF pval = 0 THEN\n SIGNAL SQLSTATE \'01000\';\n ELSEIF pval = 1 THEN\n SIGNAL SQLSTATE \'45000\'\n SET MESSAGE_TEXT = \'An error occurred\';\n ELSEIF pval = 2 THEN\n SIGNAL specialty\n SET MESSAGE_TEXT = \'An error occurred\';\n ELSE\n SIGNAL SQLSTATE \'01000\'\n SET MESSAGE_TEXT = \'A warning occurred\', MYSQL_ERRNO = 1000;\n SIGNAL SQLSTATE \'45000\'\n SET MESSAGE_TEXT = \'An error occurred\', MYSQL_ERRNO = 1001;\n END IF;\nEND;\n','http://dev.mysql.com/doc/refman/5.5/en/signal.html'),(463,'SAVEPOINT',8,'Syntax:\nSAVEPOINT identifier\nROLLBACK [WORK] TO [SAVEPOINT] identifier\nRELEASE SAVEPOINT identifier\n\nInnoDB supports the SQL statements SAVEPOINT, ROLLBACK TO SAVEPOINT,\nRELEASE SAVEPOINT and the optional WORK keyword for ROLLBACK.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/savepoint.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/savepoint.html'),(464,'USER',17,'Syntax:\nUSER()\n\nReturns the current MySQL user name and host name as a string in the\nutf8 character set.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','mysql> SELECT USER();\n -> \'davida@localhost\'\n','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(465,'LABELS',24,'Syntax:\n[begin_label:] BEGIN\n [statement_list]\nEND [end_label]\n\n[begin_label:] LOOP\n statement_list\nEND LOOP [end_label]\n\n[begin_label:] REPEAT\n statement_list\nUNTIL search_condition\nEND REPEAT [end_label]\n\n[begin_label:] WHILE search_condition DO\n statement_list\nEND WHILE [end_label]\n\nLabels are permitted for BEGIN ... END blocks and for the LOOP, REPEAT,\nand WHILE statements. Label use for those statements follows these\nrules:\n\no begin_label must be followed by a colon.\n\no begin_label can be given without end_label. If end_label is present,\n it must be the same as begin_label.\n\no end_label cannot be given without begin_label.\n\no Labels at the same nesting level must be distinct.\n\no Labels can be up to 16 characters long.\n\nTo refer to a label within the labeled construct, use an ITERATE or\nLEAVE statement. The following example uses those statements to\ncontinue iterating or terminate the loop:\n\nCREATE PROCEDURE doiterate(p1 INT)\nBEGIN\n label1: LOOP\n SET p1 = p1 + 1;\n IF p1 < 10 THEN ITERATE label1; END IF;\n LEAVE label1;\n END LOOP label1;\nEND;\n\nThe scope of a block label does not include the code for handlers\ndeclared within the block. For details, see [HELP DECLARE HANDLER].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/statement-labels.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/statement-labels.html'),(466,'ALTER TABLE',40,'Syntax:\nALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name\n [alter_specification [, alter_specification] ...]\n [partition_options]\n\nalter_specification:\n table_options\n | ADD [COLUMN] col_name column_definition\n [FIRST | AFTER col_name ]\n | ADD [COLUMN] (col_name column_definition,...)\n | ADD {INDEX|KEY} [index_name]\n [index_type] (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]] PRIMARY KEY\n [index_type] (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]]\n UNIQUE [INDEX|KEY] [index_name]\n [index_type] (index_col_name,...) [index_option] ...\n | ADD FULLTEXT [INDEX|KEY] [index_name]\n (index_col_name,...) [index_option] ...\n | ADD SPATIAL [INDEX|KEY] [index_name]\n (index_col_name,...) [index_option] ...\n | ADD [CONSTRAINT [symbol]]\n FOREIGN KEY [index_name] (index_col_name,...)\n reference_definition\n | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}\n | CHANGE [COLUMN] old_col_name new_col_name column_definition\n [FIRST|AFTER col_name]\n | MODIFY [COLUMN] col_name column_definition\n [FIRST | AFTER col_name]\n | DROP [COLUMN] col_name\n | DROP PRIMARY KEY\n | DROP {INDEX|KEY} index_name\n | DROP FOREIGN KEY fk_symbol\n | DISABLE KEYS\n | ENABLE KEYS\n | RENAME [TO|AS] new_tbl_name\n | ORDER BY col_name [, col_name] ...\n | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]\n | [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]\n | DISCARD TABLESPACE\n | IMPORT TABLESPACE\n | FORCE\n | ADD PARTITION (partition_definition)\n | DROP PARTITION partition_names\n | TRUNCATE PARTITION {partition_names | ALL}\n | COALESCE PARTITION number\n | REORGANIZE PARTITION [partition_names INTO (partition_definitions)]\n | ANALYZE PARTITION {partition_names | ALL}\n | CHECK PARTITION {partition_names | ALL}\n | OPTIMIZE PARTITION {partition_names | ALL}\n | REBUILD PARTITION {partition_names | ALL}\n | REPAIR PARTITION {partition_names | ALL}\n | PARTITION BY partitioning_expression\n | REMOVE PARTITIONING\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n | COMMENT \'string\'\n\ntable_options:\n table_option [[,] table_option] ... (see CREATE TABLE options)\n\npartition_options:\n (see CREATE TABLE options)\n\nALTER TABLE changes the structure of a table. For example, you can add\nor delete columns, create or destroy indexes, change the type of\nexisting columns, or rename columns or the table itself. You can also\nchange characteristics such as the storage engine used for the table or\nthe table comment.\n\nFollowing the table name, specify the alterations to be made. If none\nare given, ALTER TABLE does nothing.\n\nThe syntax for many of the permissible alterations is similar to\nclauses of the CREATE TABLE statement. See [HELP CREATE TABLE], for\nmore information.\n\ntable_options signifies table options of the kind that can be used in\nthe CREATE TABLE statement, such as ENGINE, AUTO_INCREMENT,\nAVG_ROW_LENGTH, MAX_ROWS, or ROW_FORMAT. For a list of all table\noptions and a description of each, see [HELP CREATE TABLE]. However,\nALTER TABLE ignores the DATA DIRECTORY and INDEX DIRECTORY table\noptions.\n\npartition_options signifies options that can be used with partitioned\ntables for repartitioning, for adding, dropping, merging, and splitting\npartitions, and for performing partitioning maintenance. It is possible\nfor an ALTER TABLE statement to contain a PARTITION BY or REMOVE\nPARTITIONING clause in an addition to other alter specifications, but\nthe PARTITION BY or REMOVE PARTITIONING clause must be specified last\nafter any other specifications. The ADD PARTITION, DROP PARTITION,\nCOALESCE PARTITION, REORGANIZE PARTITION, ANALYZE PARTITION, CHECK\nPARTITION, and REPAIR PARTITION options cannot be combined with other\nalter specifications in a single ALTER TABLE, since the options just\nlisted act on individual partitions. For a list of partition options\nand a description of each, see [HELP CREATE TABLE]. For additional\ninformation, see\nhttp://dev.mysql.com/doc/refman/5.5/en/alter-table-partition-operations\n.html.\n\nSome operations may result in warnings if attempted on a table for\nwhich the storage engine does not support the operation. These warnings\ncan be displayed with SHOW WARNINGS. See [HELP SHOW WARNINGS].\n\nFor information on troubleshooting ALTER TABLE, see\nhttp://dev.mysql.com/doc/refman/5.5/en/alter-table-problems.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/alter-table.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/alter-table.html'),(467,'MPOINTFROMWKB',33,'MPointFromWKB(wkb[,srid]), MultiPointFromWKB(wkb[,srid])\n\nConstructs a MultiPoint value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html'),(468,'CHAR BYTE',23,'The CHAR BYTE data type is an alias for the BINARY data type. This is a\ncompatibility feature.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(469,'REPAIR TABLE',21,'Syntax:\nREPAIR [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n [QUICK] [EXTENDED] [USE_FRM]\n\nREPAIR TABLE repairs a possibly corrupted table. By default, it has the\nsame effect as myisamchk --recover tbl_name. REPAIR TABLE works for\nMyISAM, ARCHIVE, and CSV tables. See\nhttp://dev.mysql.com/doc/refman/5.5/en/myisam-storage-engine.html,\nhttp://dev.mysql.com/doc/refman/5.5/en/archive-storage-engine.html, and\nhttp://dev.mysql.com/doc/refman/5.5/en/csv-storage-engine.html. This\nstatement does not work with views.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nREPAIR TABLE is supported for partitioned tables. However, the USE_FRM\noption cannot be used with this statement on a partitioned table.\n\nYou can use ALTER TABLE ... REPAIR PARTITION to repair one or more\npartitions; for more information, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.5/en/partitioning-maintenance.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/repair-table.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/repair-table.html'),(470,'MERGE',18,'The MERGE storage engine, also known as the MRG_MyISAM engine, is a\ncollection of identical MyISAM tables that can be used as one.\n\"Identical\" means that all tables have identical column and index\ninformation. You cannot merge MyISAM tables in which the columns are\nlisted in a different order, do not have exactly the same columns, or\nhave the indexes in different order. However, any or all of the MyISAM\ntables can be compressed with myisampack. See\nhttp://dev.mysql.com/doc/refman/5.5/en/myisampack.html. Differences in\ntable options such as AVG_ROW_LENGTH, MAX_ROWS, or PACK_KEYS do not\nmatter.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/merge-storage-engine.html\n\n','mysql> CREATE TABLE t1 (\n -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> message CHAR(20)) ENGINE=MyISAM;\nmysql> CREATE TABLE t2 (\n -> a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n -> message CHAR(20)) ENGINE=MyISAM;\nmysql> INSERT INTO t1 (message) VALUES (\'Testing\'),(\'table\'),(\'t1\');\nmysql> INSERT INTO t2 (message) VALUES (\'Testing\'),(\'table\'),(\'t2\');\nmysql> CREATE TABLE total (\n -> a INT NOT NULL AUTO_INCREMENT,\n -> message CHAR(20), INDEX(a))\n -> ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;\n','http://dev.mysql.com/doc/refman/5.5/en/merge-storage-engine.html'),(471,'CREATE TABLE',40,'Syntax:\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n (create_definition,...)\n [table_options]\n [partition_options]\n\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n [(create_definition,...)]\n [table_options]\n [partition_options]\n select_statement\n\nCREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name\n { LIKE old_tbl_name | (LIKE old_tbl_name) }\n\ncreate_definition:\n col_name column_definition\n | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)\n [index_option] ...\n | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY]\n [index_name] [index_type] (index_col_name,...)\n [index_option] ...\n | {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...)\n [index_option] ...\n | [CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (index_col_name,...) reference_definition\n | CHECK (expr)\n\ncolumn_definition:\n data_type [NOT NULL | NULL] [DEFAULT default_value]\n [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]\n [COMMENT \'string\']\n [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]\n [STORAGE {DISK|MEMORY|DEFAULT}]\n [reference_definition]\n\ndata_type:\n BIT[(length)]\n | TINYINT[(length)] [UNSIGNED] [ZEROFILL]\n | SMALLINT[(length)] [UNSIGNED] [ZEROFILL]\n | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]\n | INT[(length)] [UNSIGNED] [ZEROFILL]\n | INTEGER[(length)] [UNSIGNED] [ZEROFILL]\n | BIGINT[(length)] [UNSIGNED] [ZEROFILL]\n | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]\n | DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL]\n | NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL]\n | DATE\n | TIME\n | TIMESTAMP\n | DATETIME\n | YEAR\n | CHAR[(length)] [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | VARCHAR(length) [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | BINARY[(length)]\n | VARBINARY(length)\n | TINYBLOB\n | BLOB\n | MEDIUMBLOB\n | LONGBLOB\n | TINYTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | TEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | MEDIUMTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | LONGTEXT [BINARY]\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | ENUM(value1,value2,value3,...)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | SET(value1,value2,value3,...)\n [CHARACTER SET charset_name] [COLLATE collation_name]\n | spatial_type\n\nindex_col_name:\n col_name [(length)] [ASC | DESC]\n\nindex_type:\n USING {BTREE | HASH}\n\nindex_option:\n KEY_BLOCK_SIZE [=] value\n | index_type\n | WITH PARSER parser_name\n | COMMENT \'string\'\n\nreference_definition:\n REFERENCES tbl_name (index_col_name,...)\n [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]\n [ON DELETE reference_option]\n [ON UPDATE reference_option]\n\nreference_option:\n RESTRICT | CASCADE | SET NULL | NO ACTION\n\ntable_options:\n table_option [[,] table_option] ...\n\ntable_option:\n ENGINE [=] engine_name\n | AUTO_INCREMENT [=] value\n | AVG_ROW_LENGTH [=] value\n | [DEFAULT] CHARACTER SET [=] charset_name\n | CHECKSUM [=] {0 | 1}\n | [DEFAULT] COLLATE [=] collation_name\n | COMMENT [=] \'string\'\n | CONNECTION [=] \'connect_string\'\n | DATA DIRECTORY [=] \'absolute path to directory\'\n | DELAY_KEY_WRITE [=] {0 | 1}\n | INDEX DIRECTORY [=] \'absolute path to directory\'\n | INSERT_METHOD [=] { NO | FIRST | LAST }\n | KEY_BLOCK_SIZE [=] value\n | MAX_ROWS [=] value\n | MIN_ROWS [=] value\n | PACK_KEYS [=] {0 | 1 | DEFAULT}\n | PASSWORD [=] \'string\'\n | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}\n | TABLESPACE tablespace_name [STORAGE {DISK|MEMORY|DEFAULT}]\n | UNION [=] (tbl_name[,tbl_name]...)\n\npartition_options:\n PARTITION BY\n { [LINEAR] HASH(expr)\n | [LINEAR] KEY [ALGORITHM={1|2}] (column_list)\n | RANGE{(expr) | COLUMNS(column_list)}\n | LIST{(expr) | COLUMNS(column_list)} }\n [PARTITIONS num]\n [SUBPARTITION BY\n { [LINEAR] HASH(expr)\n | [LINEAR] KEY [ALGORITHM={1|2}] (column_list) }\n [SUBPARTITIONS num]\n ]\n [(partition_definition [, partition_definition] ...)]\n\npartition_definition:\n PARTITION partition_name\n [VALUES \n {LESS THAN {(expr | value_list) | MAXVALUE} \n | \n IN (value_list)}]\n [[STORAGE] ENGINE [=] engine_name]\n [COMMENT [=] \'comment_text\' ]\n [DATA DIRECTORY [=] \'data_dir\']\n [INDEX DIRECTORY [=] \'index_dir\']\n [MAX_ROWS [=] max_number_of_rows]\n [MIN_ROWS [=] min_number_of_rows]\n [TABLESPACE [=] tablespace_name]\n [NODEGROUP [=] node_group_id]\n [(subpartition_definition [, subpartition_definition] ...)]\n\nsubpartition_definition:\n SUBPARTITION logical_name\n [[STORAGE] ENGINE [=] engine_name]\n [COMMENT [=] \'comment_text\' ]\n [DATA DIRECTORY [=] \'data_dir\']\n [INDEX DIRECTORY [=] \'index_dir\']\n [MAX_ROWS [=] max_number_of_rows]\n [MIN_ROWS [=] min_number_of_rows]\n [TABLESPACE [=] tablespace_name]\n [NODEGROUP [=] node_group_id]\n\nselect_statement:\n [IGNORE | REPLACE] [AS] SELECT ... (Some valid select statement)\n\nCREATE TABLE creates a table with the given name. You must have the\nCREATE privilege for the table.\n\nRules for permissible table names are given in\nhttp://dev.mysql.com/doc/refman/5.5/en/identifiers.html. By default,\nthe table is created in the default database, using the InnoDB storage\nengine. An error occurs if the table exists, if there is no default\ndatabase, or if the database does not exist.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-table.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/create-table.html'),(472,'>',20,'Syntax:\n>\n\nGreater than:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT 2 > 2;\n -> 0\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(473,'ANALYZE TABLE',21,'Syntax:\nANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE\n tbl_name [, tbl_name] ...\n\nANALYZE TABLE analyzes and stores the key distribution for a table.\nDuring the analysis, the table is locked with a read lock for InnoDB\nand MyISAM. This statement works with InnoDB, NDB, and MyISAM tables.\nFor MyISAM tables, this statement is equivalent to using myisamchk\n--analyze. This statement does not work with views.\n\nFor more information on how the analysis works within InnoDB, see\nhttp://dev.mysql.com/doc/refman/5.5/en/innodb-statistics-estimation.htm\nl. Also see\nhttp://dev.mysql.com/doc/refman/5.5/en/innodb-analyze-table-complexity.\nhtml and\nhttp://dev.mysql.com/doc/refman/5.5/en/innodb-restrictions.html.\n\nMySQL uses the stored key distribution to decide the order in which\ntables should be joined when you perform a join on something other than\na constant. In addition, key distributions can be used when deciding\nwhich indexes to use for a specific table within a query.\n\nThis statement requires SELECT and INSERT privileges for the table.\n\nANALYZE TABLE is supported for partitioned tables, and you can use\nALTER TABLE ... ANALYZE PARTITION to analyze one or more partitions;\nfor more information, see [HELP ALTER TABLE], and\nhttp://dev.mysql.com/doc/refman/5.5/en/partitioning-maintenance.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/analyze-table.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/analyze-table.html'),(474,'MICROSECOND',32,'Syntax:\nMICROSECOND(expr)\n\nReturns the microseconds from the time or datetime expression expr as a\nnumber in the range from 0 to 999999.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT MICROSECOND(\'12:00:00.123456\');\n -> 123456\nmysql> SELECT MICROSECOND(\'2009-12-31 23:59:59.000010\');\n -> 10\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(475,'CONSTRAINT',40,'MySQL supports foreign keys, which let you cross-reference related data\nacross tables, and foreign key constraints, which help keep this\nspread-out data consistent. The essential syntax for a foreign key\nconstraint definition in a CREATE TABLE or ALTER TABLE statement looks\nlike this:\n\n[CONSTRAINT [symbol]] FOREIGN KEY\n [index_name] (index_col_name, ...)\n REFERENCES tbl_name (index_col_name,...)\n [ON DELETE reference_option]\n [ON UPDATE reference_option]\n\nreference_option:\n RESTRICT | CASCADE | SET NULL | NO ACTION\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-table-foreign-keys.html\n\n','CREATE TABLE product (\n category INT NOT NULL, id INT NOT NULL,\n price DECIMAL,\n PRIMARY KEY(category, id)\n) ENGINE=INNODB;\n\nCREATE TABLE customer (\n id INT NOT NULL,\n PRIMARY KEY (id)\n) ENGINE=INNODB;\n\nCREATE TABLE product_order (\n no INT NOT NULL AUTO_INCREMENT,\n product_category INT NOT NULL,\n product_id INT NOT NULL,\n customer_id INT NOT NULL,\n\n PRIMARY KEY(no),\n INDEX (product_category, product_id),\n INDEX (customer_id),\n\n FOREIGN KEY (product_category, product_id)\n REFERENCES product(category, id)\n ON UPDATE CASCADE ON DELETE RESTRICT,\n\n FOREIGN KEY (customer_id)\n REFERENCES customer(id)\n) ENGINE=INNODB;\n','http://dev.mysql.com/doc/refman/5.5/en/create-table-foreign-keys.html'),(476,'CREATE SERVER',40,'Syntax:\nCREATE SERVER server_name\n FOREIGN DATA WRAPPER wrapper_name\n OPTIONS (option [, option] ...)\n\noption:\n { HOST character-literal\n | DATABASE character-literal\n | USER character-literal\n | PASSWORD character-literal\n | SOCKET character-literal\n | OWNER character-literal\n | PORT numeric-literal }\n\nThis statement creates the definition of a server for use with the\nFEDERATED storage engine. The CREATE SERVER statement creates a new row\nin the servers table in the mysql database. This statement requires the\nSUPER privilege.\n\nThe server_name should be a unique reference to the server. Server\ndefinitions are global within the scope of the server, it is not\npossible to qualify the server definition to a specific database.\nserver_name has a maximum length of 64 characters (names longer than 64\ncharacters are silently truncated), and is case insensitive. You may\nspecify the name as a quoted string.\n\nThe wrapper_name should be mysql, and may be quoted with single\nquotation marks. Other values for wrapper_name are not currently\nsupported.\n\nFor each option you must specify either a character literal or numeric\nliteral. Character literals are UTF-8, support a maximum length of 64\ncharacters and default to a blank (empty) string. String literals are\nsilently truncated to 64 characters. Numeric literals must be a number\nbetween 0 and 9999, default value is 0.\n\n*Note*: The OWNER option is currently not applied, and has no effect on\nthe ownership or operation of the server connection that is created.\n\nThe CREATE SERVER statement creates an entry in the mysql.servers table\nthat can later be used with the CREATE TABLE statement when creating a\nFEDERATED table. The options that you specify will be used to populate\nthe columns in the mysql.servers table. The table columns are\nServer_name, Host, Db, Username, Password, Port and Socket.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/create-server.html\n\n','CREATE SERVER s\nFOREIGN DATA WRAPPER mysql\nOPTIONS (USER \'Remote\', HOST \'192.168.1.106\', DATABASE \'test\');\n','http://dev.mysql.com/doc/refman/5.5/en/create-server.html'),(477,'FIELD',38,'Syntax:\nFIELD(str,str1,str2,str3,...)\n\nReturns the index (position) of str in the str1, str2, str3, ... list.\nReturns 0 if str is not found.\n\nIf all arguments to FIELD() are strings, all arguments are compared as\nstrings. If all arguments are numbers, they are compared as numbers.\nOtherwise, the arguments are compared as double.\n\nIf str is NULL, the return value is 0 because NULL fails equality\ncomparison with any value. FIELD() is the complement of ELT().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT FIELD(\'ej\', \'Hej\', \'ej\', \'Heja\', \'hej\', \'foo\');\n -> 2\nmysql> SELECT FIELD(\'fo\', \'Hej\', \'ej\', \'Heja\', \'hej\', \'foo\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(478,'MAKETIME',32,'Syntax:\nMAKETIME(hour,minute,second)\n\nReturns a time value calculated from the hour, minute, and second\narguments.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT MAKETIME(12,15,30);\n -> \'12:15:30\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(479,'CURDATE',32,'Syntax:\nCURDATE()\n\nReturns the current date as a value in \'YYYY-MM-DD\' or YYYYMMDD format,\ndepending on whether the function is used in a string or numeric\ncontext.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT CURDATE();\n -> \'2008-06-13\'\nmysql> SELECT CURDATE() + 0;\n -> 20080613\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(480,'SET PASSWORD',10,'Syntax:\nSET PASSWORD [FOR user] = password_option\n\npassword_option: {\n PASSWORD(\'auth_string\')\n | OLD_PASSWORD(\'auth_string\')\n | \'hash_string\'\n}\n\nThe SET PASSWORD statement assigns a password to a MySQL user account,\nspecified as either a cleartext (unencrypted) or encrypted value:\n\no \'auth_string\' represents a cleartext password.\n\no \'hash_string\' represents an encrypted password.\n\nSET PASSWORD can be used with or without an explicitly named user\naccount:\n\no With a FOR user clause, the statement sets the password for the named\n account, which must exist:\n\nSET PASSWORD FOR \'jeffrey\'@\'localhost\' = password_option;\n\n In this case, you must have the UPDATE privilege for the mysql\n database.\n\no With no FOR user clause, the statement sets the password for the\n current user:\n\nSET PASSWORD = password_option;\n\n Any client who connects to the server using a nonanonymous account\n can change the password for that account. To see which account the\n server authenticated you as, invoke the CURRENT_USER() function:\n\nSELECT CURRENT_USER();\n\nWhen the read_only system variable is enabled, SET PASSWORD requires\nthe SUPER privilege in addition to any other required privileges.\n\nIf a FOR user clause is given, the account name uses the format\ndescribed in http://dev.mysql.com/doc/refman/5.5/en/account-names.html.\nThe user value should be given as \'user_name\'@\'host_name\', where\n\'user_name\' and \'host_name\' are exactly as listed in the User and Host\ncolumns of the account\'s mysql.user table row. If you specify only a\nuser name, a host name of \'%\' is used. For example, to set the password\nfor an account with User and Host column values of \'bob\' and\n\'%.example.org\', write the statement like this:\n\nSET PASSWORD FOR \'bob\'@\'%.example.org\' = PASSWORD(\'auth_string\');\n\nThe password can be specified in these ways:\n\no Using the PASSWORD() function\n\n The \'auth_string\' function argument is the cleartext (unencrypted)\n password. PASSWORD() hashes the password and returns the encrypted\n password string for storage in the mysql.user account row.\n\n The PASSWORD() function hashes the password using the hashing method\n determined by the value of the old_passwords system variable value.\n It should be set to a value compatible with the hash format required\n by the account authentication plugin. For example, if the account\n uses the mysql_native_password authentication plugin, old_passwords\n should be 0 for PASSWORD() to produce a hash value in the correct\n format. For mysql_old_password, old_passwords should be 1.\n\no Using the OLD_PASSWORD() function:\n\n The \'auth_string\' function argument is the cleartext (unencrypted)\n password. OLD_PASSWORD() hashes the password using pre-4.1 hashing\n and returns the encrypted password string for storage in the\n mysql.user account row. This hashing method is appropriate only for\n accounts that use the mysql_old_password authentication plugin.\n\no Using an already encrypted password string\n\n The password is specified as a string literal. It must represent the\n already encrypted password value, in the hash format required by the\n authentication method used for the account.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/set-password.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/set-password.html'),(481,'ALTER TABLESPACE',40,'Syntax:\nALTER TABLESPACE tablespace_name\n {ADD|DROP} DATAFILE \'file_name\'\n [INITIAL_SIZE [=] size]\n [WAIT]\n ENGINE [=] engine_name\n\nThis statement can be used either to add a new data file, or to drop a\ndata file from a tablespace.\n\nThe ADD DATAFILE variant enables you to specify an initial size using\nan INITIAL_SIZE clause, where size is measured in bytes; the default\nvalue is 134217728 (128 MB). Prior to MySQL Cluster NDB 7.2.14, this\nvalue was required to be specified using digits (Bug #13116514, Bug\n#16104705, Bug #62858); in MySQL Cluster NDB 7.2.14 and later, you may\noptionally follow size with a one-letter abbreviation for an order of\nmagnitude, similar to those used in my.cnf. Generally, this is one of\nthe letters M (megabytes) or G (gigabytes).\n\n*Note*: All MySQL Cluster Disk Data objects share the same namespace.\nThis means that each Disk Data object must be uniquely named (and not\nmerely each Disk Data object of a given type). For example, you cannot\nhave a tablespace and an data file with the same name, or an undo log\nfile and a tablespace with the same name.\n\nOn 32-bit systems, the maximum supported value for INITIAL_SIZE is\n4294967296 (4 GB). (Bug #29186)\n\nINITIAL_SIZE is rounded, explicitly, as for CREATE TABLESPACE.\n\nOnce a data file has been created, its size cannot be changed; however,\nyou can add more data files to the tablespace using additional ALTER\nTABLESPACE ... ADD DATAFILE statements.\n\nUsing DROP DATAFILE with ALTER TABLESPACE drops the data file\n\'file_name\' from the tablespace. You cannot drop a data file from a\ntablespace which is in use by any table; in other words, the data file\nmust be empty (no extents used). See\nhttp://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-disk-data-objects.\nhtml. In addition, any data file to be dropped must previously have\nbeen added to the tablespace with CREATE TABLESPACE or ALTER\nTABLESPACE.\n\nBoth ALTER TABLESPACE ... ADD DATAFILE and ALTER TABLESPACE ... DROP\nDATAFILE require an ENGINE clause which specifies the storage engine\nused by the tablespace. Currently, the only accepted values for\nengine_name are NDB and NDBCLUSTER.\n\nWAIT is parsed but otherwise ignored, and so has no effect in MySQL\n5.5. It is intended for future expansion.\n\nWhen ALTER TABLESPACE ... ADD DATAFILE is used with ENGINE = NDB, a\ndata file is created on each Cluster data node. You can verify that the\ndata files were created and obtain information about them by querying\nthe INFORMATION_SCHEMA.FILES table. For example, the following query\nshows all data files belonging to the tablespace named newts:\n\nmysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA\n -> FROM INFORMATION_SCHEMA.FILES\n -> WHERE TABLESPACE_NAME = \'newts\' AND FILE_TYPE = \'DATAFILE\';\n+--------------------+--------------+----------------+\n| LOGFILE_GROUP_NAME | FILE_NAME | EXTRA |\n+--------------------+--------------+----------------+\n| lg_3 | newdata.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata.dat | CLUSTER_NODE=4 |\n| lg_3 | newdata2.dat | CLUSTER_NODE=3 |\n| lg_3 | newdata2.dat | CLUSTER_NODE=4 |\n+--------------------+--------------+----------------+\n2 rows in set (0.03 sec)\n\nSee http://dev.mysql.com/doc/refman/5.5/en/files-table.html.\n\nALTER TABLESPACE is useful only with Disk Data storage for MySQL\nCluster. See\nhttp://dev.mysql.com/doc/refman/5.5/en/mysql-cluster-disk-data.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/alter-tablespace.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/alter-tablespace.html'),(482,'DATABASE',17,'Syntax:\nDATABASE()\n\nReturns the default (current) database name as a string in the utf8\ncharacter set. If there is no default database, DATABASE() returns\nNULL. Within a stored routine, the default database is the database\nthat the routine is associated with, which is not necessarily the same\nas the database that is the default in the calling context.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','mysql> SELECT DATABASE();\n -> \'test\'\n','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(483,'IF FUNCTION',6,'Syntax:\nIF(expr1,expr2,expr3)\n\nIf expr1 is TRUE (expr1 <> 0 and expr1 <> NULL) then IF() returns\nexpr2; otherwise it returns expr3. IF() returns a numeric or string\nvalue, depending on the context in which it is used.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html\n\n','mysql> SELECT IF(1>2,2,3);\n -> 3\nmysql> SELECT IF(1<2,\'yes\',\'no\');\n -> \'yes\'\nmysql> SELECT IF(STRCMP(\'test\',\'test1\'),\'no\',\'yes\');\n -> \'no\'\n','http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html'),(484,'ENUM',23,'ENUM(\'value1\',\'value2\',...) [CHARACTER SET charset_name] [COLLATE\ncollation_name]\n\nAn enumeration. A string object that can have only one value, chosen\nfrom the list of values \'value1\', \'value2\', ..., NULL or the special \'\'\nerror value. ENUM values are represented internally as integers.\n\nAn ENUM column can have a maximum of 65,535 distinct elements. (The\npractical limit is less than 3000.) A table can have no more than 255\nunique element list definitions among its ENUM and SET columns\nconsidered as a group. For more information on these limits, see\nhttp://dev.mysql.com/doc/refman/5.5/en/limits-frm-file.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(485,'POINTFROMWKB',33,'PointFromWKB(wkb[,srid])\n\nConstructs a Point value using its WKB representation and SRID.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/gis-wkb-functions.html'),(486,'POWER',3,'Syntax:\nPOWER(X,Y)\n\nThis is a synonym for POW().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(487,'ATAN',3,'Syntax:\nATAN(X)\n\nReturns the arc tangent of X, that is, the value whose tangent is X.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT ATAN(2);\n -> 1.1071487177941\nmysql> SELECT ATAN(-2);\n -> -1.1071487177941\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(488,'STRCMP',38,'Syntax:\nSTRCMP(expr1,expr2)\n\nSTRCMP() returns 0 if the strings are the same, -1 if the first\nargument is smaller than the second according to the current sort\norder, and 1 otherwise.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html\n\n','mysql> SELECT STRCMP(\'text\', \'text2\');\n -> -1\nmysql> SELECT STRCMP(\'text2\', \'text\');\n -> 1\nmysql> SELECT STRCMP(\'text\', \'text\');\n -> 0\n','http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html'),(489,'INSERT DELAYED',28,'Syntax:\nINSERT DELAYED ...\n\nThe DELAYED option for the INSERT statement is a MySQL extension to\nstandard SQL that is very useful if you have clients that cannot or\nneed not wait for the INSERT to complete. This is a common situation\nwhen you use MySQL for logging and you also periodically run SELECT and\nUPDATE statements that take a long time to complete.\n\nWhen a client uses INSERT DELAYED, it gets an okay from the server at\nonce, and the row is queued to be inserted when the table is not in use\nby any other thread.\n\nAnother major benefit of using INSERT DELAYED is that inserts from many\nclients are bundled together and written in one block. This is much\nfaster than performing many separate inserts.\n\nNote that INSERT DELAYED is slower than a normal INSERT if the table is\nnot otherwise in use. There is also the additional overhead for the\nserver to handle a separate thread for each table for which there are\ndelayed rows. This means that you should use INSERT DELAYED only when\nyou are really sure that you need it.\n\nThe queued rows are held only in memory until they are inserted into\nthe table. This means that if you terminate mysqld forcibly (for\nexample, with kill -9) or if mysqld dies unexpectedly, any queued rows\nthat have not been written to disk are lost.\n\nThere are some constraints on the use of DELAYED:\n\no INSERT DELAYED works only with MyISAM, MEMORY, ARCHIVE, and BLACKHOLE\n tables. For engines that do not support DELAYED, an error occurs.\n\no An error occurs for INSERT DELAYED if used with a table that has been\n locked with LOCK TABLES because the insert must be handled by a\n separate thread, not by the session that holds the lock.\n\no For MyISAM tables, if there are no free blocks in the middle of the\n data file, concurrent SELECT and INSERT statements are supported.\n Under these circumstances, you very seldom need to use INSERT DELAYED\n with MyISAM.\n\no INSERT DELAYED should be used only for INSERT statements that specify\n value lists. The server ignores DELAYED for INSERT ... SELECT or\n INSERT ... ON DUPLICATE KEY UPDATE statements.\n\no Because the INSERT DELAYED statement returns immediately, before the\n rows are inserted, you cannot use LAST_INSERT_ID() to get the\n AUTO_INCREMENT value that the statement might generate.\n\no DELAYED rows are not visible to SELECT statements until they actually\n have been inserted.\n\no Prior to MySQL 5.5.7, INSERT DELAYED was treated as a normal INSERT\n if the statement inserted multiple rows, binary logging was enabled,\n and the global logging format was statement-based (that is, whenever\n binlog_format was set to STATEMENT). Beginning with MySQL 5.5.7,\n INSERT DELAYED is always handled as a simple INSERT (that is, without\n the DELAYED option) whenever the value of binlog_format is STATEMENT\n or MIXED. (In the latter case, the statement no longer triggers a\n switch to row-based logging, and so is logged using the\n statement-based format.)\n\n This does not apply when using row-based binary logging mode\n (binlog_format set to ROW), in which INSERT DELAYED statements are\n always executed using the DELAYED option as specified, and logged as\n row-update events.\n\no DELAYED is ignored on slave replication servers, so that INSERT\n DELAYED is treated as a normal INSERT on slaves. This is because\n DELAYED could cause the slave to have different data than the master.\n\no Pending INSERT DELAYED statements are lost if a table is write locked\n and ALTER TABLE is used to modify the table structure.\n\no INSERT DELAYED is not supported for views.\n\no INSERT DELAYED is not supported for partitioned tables.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/insert-delayed.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/insert-delayed.html'),(490,'SHOW PROFILE',27,'Syntax:\nSHOW PROFILE [type [, type] ... ]\n [FOR QUERY n]\n [LIMIT row_count [OFFSET offset]]\n\ntype:\n ALL\n | BLOCK IO\n | CONTEXT SWITCHES\n | CPU\n | IPC\n | MEMORY\n | PAGE FAULTS\n | SOURCE\n | SWAPS\n\nThe SHOW PROFILE and SHOW PROFILES statements display profiling\ninformation that indicates resource usage for statements executed\nduring the course of the current session.\n\nProfiling is controlled by the profiling session variable, which has a\ndefault value of 0 (OFF). Profiling is enabled by setting profiling to\n1 or ON:\n\nmysql> SET profiling = 1;\n\nSHOW PROFILES displays a list of the most recent statements sent to the\nserver. The size of the list is controlled by the\nprofiling_history_size session variable, which has a default value of\n15. The maximum value is 100. Setting the value to 0 has the practical\neffect of disabling profiling.\n\nAll statements are profiled except SHOW PROFILE and SHOW PROFILES, so\nyou will find neither of those statements in the profile list.\nMalformed statements are profiled. For example, SHOW PROFILING is an\nillegal statement, and a syntax error occurs if you try to execute it,\nbut it will show up in the profiling list.\n\nSHOW PROFILE displays detailed information about a single statement.\nWithout the FOR QUERY n clause, the output pertains to the most\nrecently executed statement. If FOR QUERY n is included, SHOW PROFILE\ndisplays information for statement n. The values of n correspond to the\nQuery_ID values displayed by SHOW PROFILES.\n\nThe LIMIT row_count clause may be given to limit the output to\nrow_count rows. If LIMIT is given, OFFSET offset may be added to begin\nthe output offset rows into the full set of rows.\n\nBy default, SHOW PROFILE displays Status and Duration columns. The\nStatus values are like the State values displayed by SHOW PROCESSLIST,\nalthough there might be some minor differences in interpretion for the\ntwo statements for some status values (see\nhttp://dev.mysql.com/doc/refman/5.5/en/thread-information.html).\n\nOptional type values may be specified to display specific additional\ntypes of information:\n\no ALL displays all information\n\no BLOCK IO displays counts for block input and output operations\n\no CONTEXT SWITCHES displays counts for voluntary and involuntary\n context switches\n\no CPU displays user and system CPU usage times\n\no IPC displays counts for messages sent and received\n\no MEMORY is not currently implemented\n\no PAGE FAULTS displays counts for major and minor page faults\n\no SOURCE displays the names of functions from the source code, together\n with the name and line number of the file in which the function\n occurs\n\no SWAPS displays swap counts\n\nProfiling is enabled per session. When a session ends, its profiling\ninformation is lost.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-profile.html\n\n','mysql> SELECT @@profiling;\n+-------------+\n| @@profiling |\n+-------------+\n| 0 |\n+-------------+\n1 row in set (0.00 sec)\n\nmysql> SET profiling = 1;\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> DROP TABLE IF EXISTS t1;\nQuery OK, 0 rows affected, 1 warning (0.00 sec)\n\nmysql> CREATE TABLE T1 (id INT);\nQuery OK, 0 rows affected (0.01 sec)\n\nmysql> SHOW PROFILES;\n+----------+----------+--------------------------+\n| Query_ID | Duration | Query |\n+----------+----------+--------------------------+\n| 0 | 0.000088 | SET PROFILING = 1 |\n| 1 | 0.000136 | DROP TABLE IF EXISTS t1 |\n| 2 | 0.011947 | CREATE TABLE t1 (id INT) |\n+----------+----------+--------------------------+\n3 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE;\n+----------------------+----------+\n| Status | Duration |\n+----------------------+----------+\n| checking permissions | 0.000040 |\n| creating table | 0.000056 |\n| After create | 0.011363 |\n| query end | 0.000375 |\n| freeing items | 0.000089 |\n| logging slow query | 0.000019 |\n| cleaning up | 0.000005 |\n+----------------------+----------+\n7 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE FOR QUERY 1;\n+--------------------+----------+\n| Status | Duration |\n+--------------------+----------+\n| query end | 0.000107 |\n| freeing items | 0.000008 |\n| logging slow query | 0.000015 |\n| cleaning up | 0.000006 |\n+--------------------+----------+\n4 rows in set (0.00 sec)\n\nmysql> SHOW PROFILE CPU FOR QUERY 2;\n+----------------------+----------+----------+------------+\n| Status | Duration | CPU_user | CPU_system |\n+----------------------+----------+----------+------------+\n| checking permissions | 0.000040 | 0.000038 | 0.000002 |\n| creating table | 0.000056 | 0.000028 | 0.000028 |\n| After create | 0.011363 | 0.000217 | 0.001571 |\n| query end | 0.000375 | 0.000013 | 0.000028 |\n| freeing items | 0.000089 | 0.000010 | 0.000014 |\n| logging slow query | 0.000019 | 0.000009 | 0.000010 |\n| cleaning up | 0.000005 | 0.000003 | 0.000002 |\n+----------------------+----------+----------+------------+\n7 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.5/en/show-profile.html'),(491,'SHOW PROCEDURE CODE',27,'Syntax:\nSHOW PROCEDURE CODE proc_name\n\nThis statement is a MySQL extension that is available only for servers\nthat have been built with debugging support. It displays a\nrepresentation of the internal implementation of the named stored\nprocedure. A similar statement, SHOW FUNCTION CODE, displays\ninformation about stored functions (see [HELP SHOW FUNCTION CODE]).\n\nTo use either statement, you must be the owner of the routine or have\nSELECT access to the mysql.proc table.\n\nIf the named routine is available, each statement produces a result\nset. Each row in the result set corresponds to one \"instruction\" in the\nroutine. The first column is Pos, which is an ordinal number beginning\nwith 0. The second column is Instruction, which contains an SQL\nstatement (usually changed from the original source), or a directive\nwhich has meaning only to the stored-routine handler.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-procedure-code.html\n\n','mysql> DELIMITER //\nmysql> CREATE PROCEDURE p1 ()\n -> BEGIN\n -> DECLARE fanta INT DEFAULT 55;\n -> DROP TABLE t2;\n -> LOOP\n -> INSERT INTO t3 VALUES (fanta);\n -> END LOOP;\n -> END//\nQuery OK, 0 rows affected (0.00 sec)\n\nmysql> SHOW PROCEDURE CODE p1//\n+-----+----------------------------------------+\n| Pos | Instruction |\n+-----+----------------------------------------+\n| 0 | set fanta@0 55 |\n| 1 | stmt 9 \"DROP TABLE t2\" |\n| 2 | stmt 5 \"INSERT INTO t3 VALUES (fanta)\" |\n| 3 | jump 2 |\n+-----+----------------------------------------+\n4 rows in set (0.00 sec)\n','http://dev.mysql.com/doc/refman/5.5/en/show-procedure-code.html'),(492,'MEDIUMTEXT',23,'MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]\n\nA TEXT column with a maximum length of 16,777,215 (224 − 1)\ncharacters. The effective maximum length is less if the value contains\nmultibyte characters. Each MEDIUMTEXT value is stored using a 3-byte\nlength prefix that indicates the number of bytes in the value.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/string-type-overview.html'),(493,'LN',3,'Syntax:\nLN(X)\n\nReturns the natural logarithm of X; that is, the base-e logarithm of X.\nIf X is less than or equal to 0, then NULL is returned.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT LN(2);\n -> 0.69314718055995\nmysql> SELECT LN(-2);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(494,'RETURN',24,'Syntax:\nRETURN expr\n\nThe RETURN statement terminates execution of a stored function and\nreturns the value expr to the function caller. There must be at least\none RETURN statement in a stored function. There may be more than one\nif the function has multiple exit points.\n\nThis statement is not used in stored procedures, triggers, or events.\nThe LEAVE statement can be used to exit a stored program of those\ntypes.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/return.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/return.html'),(495,'SHOW COLLATION',27,'Syntax:\nSHOW COLLATION\n [LIKE \'pattern\' | WHERE expr]\n\nThis statement lists collations supported by the server. By default,\nthe output from SHOW COLLATION includes all available collations. The\nLIKE clause, if present, indicates which collation names to match. The\nWHERE clause can be given to select rows using more general conditions,\nas discussed in\nhttp://dev.mysql.com/doc/refman/5.5/en/extended-show.html. For example:\n\nmysql> SHOW COLLATION LIKE \'latin1%\';\n+-------------------+---------+----+---------+----------+---------+\n| Collation | Charset | Id | Default | Compiled | Sortlen |\n+-------------------+---------+----+---------+----------+---------+\n| latin1_german1_ci | latin1 | 5 | | | 0 |\n| latin1_swedish_ci | latin1 | 8 | Yes | Yes | 0 |\n| latin1_danish_ci | latin1 | 15 | | | 0 |\n| latin1_german2_ci | latin1 | 31 | | Yes | 2 |\n| latin1_bin | latin1 | 47 | | Yes | 0 |\n| latin1_general_ci | latin1 | 48 | | | 0 |\n| latin1_general_cs | latin1 | 49 | | | 0 |\n| latin1_spanish_ci | latin1 | 94 | | | 0 |\n+-------------------+---------+----+---------+----------+---------+\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/show-collation.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/show-collation.html'),(496,'LOG',3,'Syntax:\nLOG(X), LOG(B,X)\n\nIf called with one parameter, this function returns the natural\nlogarithm of X. If X is less than or equal to 0, then NULL is returned.\n\nThe inverse of this function (when called with a single argument) is\nthe EXP() function.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT LOG(2);\n -> 0.69314718055995\nmysql> SELECT LOG(-2);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(497,'SET SQL_LOG_BIN',8,'Syntax:\nSET sql_log_bin = {0|1}\n\nThe sql_log_bin variable controls whether logging to the binary log is\ndone. The default value is 1 (do logging). To change logging for the\ncurrent session, change the session value of this variable. The session\nuser must have the SUPER privilege to set this variable. Set this\nvariable to 0 for a session to temporarily disable binary logging while\nmaking changes to the master which you do not want to replicate to the\nslave.\n\nAs of MySQL 5.5, sql_log_bin can be set as a global or session\nvariable. Setting sql_log_bin globally is only detected when a new\nsession is started. Any sessions previously running are not impacted\nwhen setting sql_log_bin globally.\n\n*Warning*: Incorrect use of sql_log_bin with a global scope means any\nchanges made in an already running session are still being recorded to\nthe binary log and therefore replicated. Exercise extreme caution using\nsql_log_bin with a global scope as the above situation could cause\nunexpected results including replication failure.\n\nBeginning with MySQL 5.5.5, it is no longer possible to set\n@@session.sql_log_bin within a transaction or subquery. (Bug #53437)\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/set-sql-log-bin.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/set-sql-log-bin.html'),(498,'!=',20,'Syntax:\n<>, !=\n\nNot equal:\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT \'.01\' <> \'0.01\';\n -> 1\nmysql> SELECT .01 <> \'0.01\';\n -> 0\nmysql> SELECT \'zapp\' <> \'zappp\';\n -> 1\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(499,'WHILE',24,'Syntax:\n[begin_label:] WHILE search_condition DO\n statement_list\nEND WHILE [end_label]\n\nThe statement list within a WHILE statement is repeated as long as the\nsearch_condition expression is true. statement_list consists of one or\nmore SQL statements, each terminated by a semicolon (;) statement\ndelimiter.\n\nA WHILE statement can be labeled. For the rules regarding label use,\nsee [HELP labels].\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/while.html\n\n','CREATE PROCEDURE dowhile()\nBEGIN\n DECLARE v1 INT DEFAULT 5;\n\n WHILE v1 > 0 DO\n ...\n SET v1 = v1 - 1;\n END WHILE;\nEND;\n','http://dev.mysql.com/doc/refman/5.5/en/while.html'),(500,'AES_DECRYPT',12,'Syntax:\nAES_DECRYPT(crypt_str,key_str)\n\nThis function decrypts data using the official AES (Advanced Encryption\nStandard) algorithm. For more information, see the description of\nAES_ENCRYPT().\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html'),(501,'DAYNAME',32,'Syntax:\nDAYNAME(date)\n\nReturns the name of the weekday for date. The language used for the\nname is controlled by the value of the lc_time_names system variable\n(http://dev.mysql.com/doc/refman/5.5/en/locale-support.html).\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html\n\n','mysql> SELECT DAYNAME(\'2007-02-03\');\n -> \'Saturday\'\n','http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html'),(502,'COERCIBILITY',17,'Syntax:\nCOERCIBILITY(str)\n\nReturns the collation coercibility value of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','mysql> SELECT COERCIBILITY(\'abc\' COLLATE latin1_swedish_ci);\n -> 0\nmysql> SELECT COERCIBILITY(USER());\n -> 3\nmysql> SELECT COERCIBILITY(\'abc\');\n -> 4\n','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(503,'INT',23,'INT[(M)] [UNSIGNED] [ZEROFILL]\n\nA normal-size integer. The signed range is -2147483648 to 2147483647.\nThe unsigned range is 0 to 4294967295.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html\n\n','','http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html'),(504,'GLENGTH',13,'GLength(ls)\n\nReturns a double-precision number indicating the length of the\nLineString or MultiLineString value ls in its associated spatial\nreference. The length of a MultiLineString value is equal to the sum of\nthe lengths of its elements.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/gis-linestring-property-functions.html\n\n','mysql> SET @ls = \'LineString(1 1,2 2,3 3)\';\nmysql> SELECT GLength(GeomFromText(@ls));\n+----------------------------+\n| GLength(GeomFromText(@ls)) |\n+----------------------------+\n| 2.8284271247461903 |\n+----------------------------+\n\nmysql> SET @mls = \'MultiLineString((1 1,2 2,3 3),(4 4,5 5))\';\nmysql> SELECT GLength(GeomFromText(@mls));\n+-----------------------------+\n| GLength(GeomFromText(@mls)) |\n+-----------------------------+\n| 4.242640687119286 |\n+-----------------------------+\n','http://dev.mysql.com/doc/refman/5.5/en/gis-linestring-property-functions.html'),(505,'COLLATION',17,'Syntax:\nCOLLATION(str)\n\nReturns the collation of the string argument.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','mysql> SELECT COLLATION(\'abc\');\n -> \'latin1_swedish_ci\'\nmysql> SELECT COLLATION(_utf8\'abc\');\n -> \'utf8_general_ci\'\n','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(506,'RADIANS',3,'Syntax:\nRADIANS(X)\n\nReturns the argument X, converted from degrees to radians. (Note that\nπ radians equals 180 degrees.)\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html\n\n','mysql> SELECT RADIANS(90);\n -> 1.5707963267949\n','http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html'),(507,'COALESCE',20,'Syntax:\nCOALESCE(value,...)\n\nReturns the first non-NULL value in the list, or NULL if there are no\nnon-NULL values.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html\n\n','mysql> SELECT COALESCE(NULL,1);\n -> 1\nmysql> SELECT COALESCE(NULL,NULL,NULL);\n -> NULL\n','http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html'),(508,'VERSION',17,'Syntax:\nVERSION()\n\nReturns a string that indicates the MySQL server version. The string\nuses the utf8 character set. The value might have a suffix in addition\nto the version number. See the description of the version system\nvariable in\nhttp://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/information-functions.html\n\n','mysql> SELECT VERSION();\n -> \'5.5.50-standard\'\n','http://dev.mysql.com/doc/refman/5.5/en/information-functions.html'),(509,'MAKE_SET',38,'Syntax:\nMAKE_SET(bits,str1,str2,...)\n\nReturns a set value (a string containing substrings separated by \",\"\ncharacters) consisting of the strings that have the corresponding bit\nin bits set. str1 corresponds to bit 0, str2 to bit 1, and so on. NULL\nvalues in str1, str2, ... are not appended to the result.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT MAKE_SET(1,\'a\',\'b\',\'c\');\n -> \'a\'\nmysql> SELECT MAKE_SET(1 | 4,\'hello\',\'nice\',\'world\');\n -> \'hello,world\'\nmysql> SELECT MAKE_SET(1 | 4,\'hello\',\'nice\',NULL,\'world\');\n -> \'hello\'\nmysql> SELECT MAKE_SET(0,\'a\',\'b\',\'c\');\n -> \'\'\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html'),(510,'FIND_IN_SET',38,'Syntax:\nFIND_IN_SET(str,strlist)\n\nReturns a value in the range of 1 to N if the string str is in the\nstring list strlist consisting of N substrings. A string list is a\nstring composed of substrings separated by \",\" characters. If the first\nargument is a constant string and the second is a column of type SET,\nthe FIND_IN_SET() function is optimized to use bit arithmetic. Returns\n0 if str is not in strlist or if strlist is the empty string. Returns\nNULL if either argument is NULL. This function does not work properly\nif the first argument contains a comma (\",\") character.\n\nURL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html\n\n','mysql> SELECT FIND_IN_SET(\'b\',\'a,b,c,d\');\n -> 2\n','http://dev.mysql.com/doc/refman/5.5/en/string-functions.html');
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `naplesquareDB` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `ncspider` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `oceanmet` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `orchestra` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `orchestra_en` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `phpmyadmin` /*!40100 DEFAULT CHARACTER SET latin1 */;
`tracking` set('UPDATE','REPLACE','INSERT','DELETE','TRUNCATE','CREATE DATABASE','ALTER DATABASE','DROP DATABASE','CREATE TABLE','ALTER TABLE','RENAME TABLE','DROP TABLE','CREATE INDEX','DROP INDEX','CREATE VIEW','ALTER VIEW','DROP VIEW') COLLATE utf8_bin DEFAULT NULL,
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `rebit` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `waterq` /*!40100 DEFAULT CHARACTER SET latin1 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `wordpress` /*!40100 DEFAULT CHARACTER SET utf8 */;
AnonSec - 2021 | Recode By D7net