TCExam: applicazione web per test on line

14 06 2009

Sono stato alla ConfSL è ho assistito ad un software per fare test/quiz on line chiamato TCExam, realizzato in PHP e rilasciato con GPL 3 a cura di Nicola Asuni che ho conosciuto personalmente. Nicola, già autore di TCPDF, si è concentrato sull’aderenza agli standard (XHTML 1.0, CSS 2.0 e WAI-AAA) che all’uso di AJAX che eventualmente potete aggiungere (concordo con lui anche perchè questo tipo di software è generalmente inglobato in altri ed è preferibile avere l’aderenza agli standard).

L’installazione, la versione attuale è 9.0.017, è semplice basta estrarre il file zip e copiarlo ad esempio nella cartella htdocs di Xampp e andare all’indirizzo:

http://localhost/TCexam/install/install.php

dove dovrete mettere i parametri di connessione al vostro database MySQL (default) o PostgreSQL. La procedura creerà un database con una 15 di tabelle.

Fatto ciò finite nella schermata di login. Dovete sapere però che esiste sia il lato pubblico che quello amministrativo che trovate all’indirizzo:

http://localhost/TCexam/admin/code/

e inserire le credenziali di amministratore admin/1234.

Occorre dire che il sistema di autenticazione si può basare su CAS, LDAP, Radius; i file di configurazione li trovate nella cartella shared/config.

La cosa interessante è che il software è multilingua ed è disponibile in Arabo, Bulgaro, Portoghese brasiliano, Cinese, Tedesco, Greco, Inglese, Spagnolo, Francese, Hindi, Ebreo, Ungherese, Indonesiano, Italiano, Giapponese,Marathi, Malese, Olandese, Polacco, Russo, Turco, Vietnamita.
Le lingue sono in un unico file che trovate nel path shared/config/lang/language_tmx.xml

Dal pannello potete creare utenti e assegnare loro dei gruppi. Potete importare/esportare utenti in formato XML o CSV e vedere lo stato dei risultati.

Le domande sono strutturare in moduli e argomenti e possono essere di tipo a risposta singola, multipla, libera e ordinamento delle risposte.
L’editing delle domande e risposte è basato su un editor che permette l’aggiunta di formule e immagini in Latex (cosa ottima) tramite tag quindi non visuale, tuttavia si può vedere la preview. Le domande possono essere importate/esportare in XML mentre la lista si può esportare anche in PDF.

La creazione dei test è anch’essa semplice. Per ogni test potete specificare la data di inizio e fine (fa fede quella del server), i gruppi di utenti che possono partecipare, i punti da assegnare per risposta corretta, sbagliata o non data, i punti minimi per passare l’esame e che tipo di domande aggiungere.

E’ possibile esportare il test in PDF così magari da stamparlo. Sul PDF generato compare un logo e un’intestazione specificati nel file shared/config/tce_pdf.php mentre l’immagine si trova nella cartella images.

A questo punto non vi resta che augurarvi buon test e se avete bisogno di aiuto chiedete direttamente a lui che è molto disponibile !





BambooINVOICE: applicazione web per fatture

29 04 2009

Qualche giorno fa avevo già parlato di Invoicex, un’applicazione java per la gestione di fatture.

Oggi ho provato ad installare BambooINVOICE, un sistema di gestione fatture scritto in PHP e rilasciato con licenza GPL. In particolare è basato su PHP5, realizzato con CodeIgniter (un web application framework basato per applicazion PHP) e usa i seguenti database MySQL e MySQLi 4.1 ma anche MSSQL, Postgre, OCI8, SQLite e ODBC.

La versione attuale 0.8.9, rilasciata il 15 aprile 2009 è basata su CodeIgniter 1.7.1

Per poterlo installare in locale su XAMPP, lo scaricate e lo estraete nella cartella htdocs di XAMPP dando il nome alla cartella bambooinvoice.

Dovete poi creare un database (dal nome bambooinvoice, che potete fare con PHPMyAdmin) ed eventualmente modificare i parametri contenuti ne file:

bambooinvoice/bamboo_system_files/application/config/database.php

Con il vostro browser andate poi all’indirizzo: http://localhost/bambooinvoice

La prima schermata che vi appare vi chiede il vostro indirizzo email, utente e password e premete il tasto Install.

Se non ci sono problemi, l’applicazione è già installata e non dovete fare altro che loggarvi con l’email e la password inseriti prima.

L’interfaccia di default è in inglese ma è disponibile anche in francese, tedesco, olandese, danese, rumeno, spagnolo, portoghese, bulgaro, svedese e italiano. Tutto cio’ è possible cambiando la proprietà:

$config['language']    = ‘english’;

nel file:

bambooinvoice/bamboo_system_files/application/config/config.php

e sostituendo “english” con:  “french”, “german”, “dutch”, “danish”, “romanian”, “spanish”, “portuguese”, “bulgarian”, “swedish”,  “italian”.

Fate un refresh della pagina web e vedete che la lingua è cambiata (certo che sarebbe bello cambiare la lingua o configurare il database dall’interfaccia grafica).

Cmq l’interfaccia di per se è semplice, avete una barra laterale contestuale alle opzioni selezionate. Il menu principale è molto semplice, avete fatture, clienti, grafici, impostazioni, account e utilties (questi ultimi 3 servono solo per la configurazione).

Per creare una fattura dovete prima di tutto creare un cliente (o potete farlo in corso d’opera) e poi sul pulsante del menu laterale “Nuova fattura”, semplice ma per l’esportazione della fattura in PDF dovete configurare DOMPDF.

I grafici raggiungibili dal menu principale generano sono degli istogrammi del fatturato mese per mese ma non è possible esportarli in PDF tuttavia se andate nel menu utilities potete esportare l’elenco delle fatture in XML o Excel. Dallo stesso menu potete vedere se esiste una nuova versione.

Se avete dei problemi o segnalazioni potete rivolgervi al forum:  http://forums.bambooinvoice.org/





Glassfish 2.1, Quercus 3.2.1 e WordPress 2.7.1

7 04 2009

Talvolta avevo pensato di migrare da PHP a JSP poichè Tomcat supporta nativamente JSP ma Tomcat non è un application server.

Ultimamente sto valutando di usare Glassfish o Jboss come application server per usarli come base per Hudson un continuous integration engine (vedete articolo precedente) invece di usare Winstone integrato al suo interno.

In particolar modo, siccome quelli di Glassifish con Metro affermano l’interoperabilità con .NET per i web service (a partire da Jax-WS più le implementazione degli stessi standard con .NET cosa che Axis2 fa ma più lentamente a mio parere), ho pensato di concentrarmi su Glassfish.

Per caso ho scoperto che esiste Quercus che è una libreria java che è una implementazione java di PHP, in pratica il codice PHP viene trasformato in Java, in pratica potete far girare le vostre applicazioni PHP.

Quercus viene rilasciato con licenza GPL 2 da Caucho Technology una azienda che ha realizzato Resin un java/php application server e Hessian un protocollo binario per web services che avevo già sentito nominare quando lavoravo sui web services.

Quelli di Caucho affermano che le prestazioni si vedono.

Presto detto quello che avete bisogno quindi è GlassFish, Quercus e i driver JDBC che dovete installare nel vostro application server e che Quercus farà uso e la vostra applicazione PHP ovviamente.

Ho scelto WordPress perchè ho trovato un tutorial e di conseguenza ho installato i driver JDBC per Mysql e Mysql stesso.

I tutorial che ho seguito sono:

  • http://blogs.steeplesoft.com/glassfish-php-and-wordpress/ (ma non spiega che bisogna creare un connection pool su glassfish ovvero la connessione tramite i driver JDBC). Dovete prima di tutto estrarre i 3 file (quercus.jar, resin-util.jar, javamail-141.jar) che si trovano nel file war di Quercus nella cartella lib di Glassfish o nella cartella di lib del vostro dominio (domain1 nel mio caso)  a seconda della visibilità che volete dare. Poi in pratica nella cartella del vostro dominio trovate il file config/default-web.xml e dovete inserirci la seguente configurazione:

<servlet>
<servlet-name>Quercus Servlet</servlet-name>
<servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
<init-param>
<param-name>ini-file</param-name>
<param-value>WEB-INF/php.ini</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Quercus Servlet</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>

Dovete poi estrarre WordPress nella cartella docroot del vostro dominio.

Poi oggi rivedendo Quercus ho visto che la procedura è spiegata nel file readme :-) che trovate nel pacchetto e che vi consiglio a questo punto di leggere per prima.

Ora mi concentro anche su Jboss e vedo per qualche applicazione in PostGres.

Nota: vedere anche Php-Java bridge.





Note su Hudson e CruiseControl

23 03 2009

In uno dei recenti progetti sto valutando con un mio collega la possibilità di fornire come servizio l’uso di uno strumento di Continuous Integration.

Attualmente stiamo hostando diversi progetti Java (30), PHP (10), Python (6) e Javascript(6), C++ (4) più altri minimi progetti; di conseguenza ho cominciato a valutare strumenti Java tra cui Hudson, CruiseControl e Apache Continuum per poi vedere quale è il più indicato per progetti in PHP e Python.

Nota: Avevo già provato Apache Continuum ma non mi aveva dato una grande impressione.

Guardando sul sito JavaPowerTools , Wakkaleo, SOA World Magazine, Eclipse Community Survey 2009 e partecipando al Devoxx si nota come Hudson e CruiseControl sono i preferiti.

Se diamo uno sguardo a strumenti di continuous integration per PHP ritroviamo in pratica Xinc e PHPUnderControl, quest’ultimo si basa su CruiseControl e include strumenti come PHPUnit, PhpDocumentor e PHP_CodeSniffer.

Se quindi consideriamo CruiseControl + PHPUnderControl si copre una grossa percentuale di progetti. CruiseControl e Hudson hanno comunque il supporto a Phing per progetti in PHP ma PHPUnderControl è alettante.

Vediamo quali strumenti esistono per Python:

Development in Python

Link

Buildbot, a python continuous integration tool http://buildbot.net/trac
It explains how to integrate Hudson and Python (but an internal link explains the same thing with CruiseControl with PyUnit). For Hudson there is a plugin that uses Pylint http://redsolo.blogspot.com/2007/11/hudson-embraces-python.html
Python Ant task (Pydoc generation) http://www.rpstechnologies.net/PyAntTasks.html

http://www.ibm.com/developerworks/opensource/library/os-ecant/

Python Doxygen integration http://internetducttape.com/2007/03/20/automatic_documentation_python_doxygen/
Pylint (errors in python code – command line) http://www.logilab.org/857

It claims to be more advanced of PyChecker, also Netbeans Python Early Access seems to use it, see:

http://www.netbeans.org/kb/docs/python/temperature-converter.html#08

Also PyDev (Eclipse plugin) has a support for PyLint, see

http://pydev.sourceforge.net/pylint.html

Eric Python IDE has a plugin for Pylint, see:

http://eric-ide.python-projects.org/index.html

PyChecker (error in python code – command line) http://pychecker.sourceforge.net/

Used by Stani Python Editor, see:

http://pythonide.blogspot.com/

PyFlakes (error in python code – command line) http://divmod.org/trac/wiki/DivmodPyflakes
Figleaf (code coverage – command line) http://darcs.idyll.org/~t/projects/figleaf/doc
General notes http://www.doughellmann.com/articles/CompletelyDifferent-2008-03-linters/index.html

Sfortunatamente vediamo che esiste in pratica solo Buildbot che non puo’ essere integrato con CruiseControl o Hudson ma esiste un plugin, più per Hudson che per CruiseControl, che aiuta ad integrare Python con gli altri tools.

Dall’altro lato abbiamo un Python Ant Task e qualche strumento a linea di comando che possono essere usati con Ant e quindi una facile integrazione con CruiseControl e Hudson.

Riguardo Javascript al momento l’unico Javascript unit test che sembra integrabile con Ant per eseguire unit test è JsUnit.

Riguardo a C++ notiamo che in Hudson ci sono 2 plugin (CCCC e CppUnit) mentre su CruiseControl sembra che non ci sia niente (solo questo link). Tuttavia ho trovato un Ant task per C++ che permette di scegliere tra diversi compilatori.

Per quanto riguarda i generatori di documentazione ritroviamo:

Document generator

Link

Javadoc

http://java.sun.com/j2se/javadoc/

Doxygen

http://www.stack.nl/~dimitri/doxygen/

PhpDocumentor

http://www.phpdoc.org/

Pydoc

http://docs.python.org/library/pydo

JsDoc Toolkit

http://code.google.com/p/jsdoc-toolkit-ant-task

Per C++ di solito viene usato Doxygen. Per Javascript potete notare JsDoc Toolkit per cui esiste il rispettivo Ant task.

Sarebbe bene anche includere software che fanno analisi statica del codice per fare debug del codice tra questi ritroviamo dal sito JavaPowerTools:

Java Analyzer Code Style

Vote – Number of votes

Checkstyle

3,37/5 – 90

PMD

3,63/5 – 84

Findbugs

3,69/5 – 83

Dobbiamo dire che Doxygen e questi strumenti (più Cobertura) sono integrati come plugin su Hudson tuttavia essi sono disponibili come Ant task e quindi integrabili con CruiseControl:

Plugins

Link

Checkstyle

http://checkstyle.sourceforge.net/anttask.html

Findbugs

http://findbugs.sourceforge.net/manual/anttask.html

Cobertura

http://cobertura.sourceforge.net/anttaskreference.html

PMD

http://pmd.sourceforge.net/ant-task.html

Doxygen

http://ant-doxygen.blogspot.com/

Per C++ ho notato che esiste Cppcheck to do static code analysis. Qui ho trovato come usarlo, in pratica è un eseguibile (esiste exe e deb)  che si puo’ facilmente integrare.

Per Javascript ho notato che esiste Yasca strumento a linea di comando che si integra con diversi strumenti visti prima (tra questi Javascript Lint e CppCheck) e genera diversi report.

Ultime note:

  • abbiamo notato che Gforge AS (quindi non la nostra versione community), ha un plugin per CruiseControl.
  • Gforge ha poi un sistema di gestione delle richieste di supporto (ticket) non tanto carino e sarebbe possible rimpiazzarlo con Trac che ha tra i suoi plugin proprio il supporto per CruiseControl e Hudson.
  • Abbiamo notato che Jboss e Linkedin fanno uso di Hudson (stiamo parlando di soli progetti Java).
  • Quelli di Apache usano sia Hudson che Continuum :-)
  • Stefane Fermigier, CEO di Nuxeo, afferma di usare Hudson e Glassfish come application server.
  • Installando Hudson per prova si vede subito la possibilità di usarlo su più nodi per scalabilità o semplicemente perchè alcuni progetti richiedono sistemi operativi diversi mentre sembra per CruiseControl non esiste una perfetta integrazione. Entrambi comunque propongono JNLP come connessione.
  • Occorre considerare l’integrazione con LDAP. Per Hudson un post interessante è qui.
  • Trovata una tabella comparativa.
  • Trovato un documento comparativo pubblicato il 2 gennaio 2009

Ora credo ci sia da scegliere anche perchè ho notato in rete che la gente lamenta il fatto che CruiseControl vada opportunatamente configurato tramite file XML mentre Hudson tramire interfaccia grafica e gli sviluppatori migrano nel tempo a Hudson.

//





BitNami, una alternativa a Xampp

13 08 2008

Se fino ad ora ho apprezzato Xampp come package all-in-one per Apache, PHP e MySQL per Windows, Linux, Mac OS X e Solaris non posso che farmi piacere BitNami.

Ultimamente avevo voglia di provare PostGres che Xampp purtroppo non ha e nella ricerca di soluzioni semplici ho trovato BitNami che fa lo stesso di Xampp ma aggiunge a richiesta la possibilità di avere lo stack Apache, PHP e PostGres (con PhpPgAdmin).

Sul sito di BitNami tra l’altro c’è lo stack per Ruby On Rails con Ruby, Rails, MySQL e Subversion e altre applicazioni pronte per essere installate direttamente insieme ad Apache PHP e MySQL, oppure separatamente, come WordPress, Drupal, Joomla, Alfresco, phpBB, SugarCRM e KnowledgeTree.

Gli sviluppatori hanno aperto poi un questionario su quali applicazioni vorreste trovare già pacchettizzate.

Non vi resta a questo punto che provare!!





Torrentflux: client torrent PHP

21 06 2008

Sono sempre alla ricerca di nuovi software liberi possibilmente multipiattaforma.

Di client torrent ce ne sono a bizzeffe ed io fino ad ora mi sono accontentato di usare Transmission sotto Ubuntu e Mac OS X e mi va bene cosi’ in quanto è leggero e posso anche impostare upload a 0 (la mia connessione è a banda limitata sul totale in ingresso e uscita).

Oggi ha destato mio interesse Torrentflux, un client web da poco giunto alla versione 2.4, scritto in PHP e rilasciato con licenza GPL. L’installazione su Xampp si rilevata semplice, ho estratto il file compresso (1.5 MB) nella cartella htdocs, creato il database torrentflux da PhpMyAdmin e caricato il file sql che si trova all’interno della cartella di Torrentflux.

All’avvio chiede username e password di amministratore e poi si presenta una interfaccia web, semplice e intuitiva, che vi chiede per prima cosa che la cartella di download sia settata con permessi 777.

La cosa interessante è che è basata su utenti che dispongono di una propria cartella, si può dire quindi che se messo su pc che fa da server può riverlarsi utile.

Potete poi fare ricerche su server torrent, caricare un torrent da url e da disco e monitorare lo stato dei download con una barra di progressione usata anche per mostrare lo spazio del disco rimanente (non si sa mai che state scaricando troppo e non vi accorgete che lo spazio sta per finire :-) )

Per ulteriori dettagli vi rimando alla pagina del wiki di Ubuntu-it che è ben dettagliata:

http://wiki.ubuntu-it.org/InternetRete/Condivisione/TorrentFlux

Buon download !