.: HosiriS :.

Informatica e non solo

Archive for aprile 2010

Recupero dati persi… foremost

Posted by hosiris su aprile 30, 2010

Ebbene si… nella fretta di rimuovere dati inutili, ho tolto di mezzo anche dati che mi servivano!!! Mannaggia a quando ho imparato ad usare la combinazione SHIFT+CANC.
Dopo aver inveito contro tutto e tutti mi sono messo a cercare una soluzione. Ho trovato un bell’applicativo che fa al caso mio: foremost, installabile da repo.
Una volta installato è sufficiente dare il seguente comando:


sudo foremost -v -o recupero /dev/sda1

dove ho ipotizzato che il dispositivo da cui ripristinare i file sia “/dev/sda1” e i dati vengano salvati in “recupero”.
Dopo qualche ora mi sono ritrovato una cartella piena di file (avendo dato il comando come amministratore ho dovuto risistemare i permessi). L’unica nota negativa riguarda il nome dei file. Non vengono salvati col nome originale, bensì col numero della traccia in cui sono stati trovati.

Annunci

Posted in Informatica, Linux, Ubuntu | Leave a Comment »

Usabilità di un ambiente di realtà virtuale che simula una cassa automatica per la valutazione e formazione di persone con lesioni cerebrali acquisite

Posted by hosiris su aprile 30, 2010

Lo studio ha lo scopo di esaminare l’usabilità di un ambiente di realtà virtuale di nuova concezione (VR) che simula il funzionamento di una macchina Bancomat (ATM) per la valutazione e la formazione.

Fonte: www.jneuroengrehab.com

Download File: PDF

Posted in Ingegneria Biomedica, NewsOfTheDay | Leave a Comment »

Costruiamo un sito con Drupal: firstWebSite

Posted by hosiris su aprile 29, 2010

Per mostrare quanto sia semplice creare una applicazione utilizzando Drupal, prenderò in esame la costruzione di un sito che abbia le seguenti caratteristiche:

  • Home Page: statica con visualizzazione di dati scelti da noi
  • Dove Siamo: con utilizzo delle API di Google
  • Contatti: con presente un form di invio messaggio
  • Vetrina: come esempio di applicazione e-commerce
  • Sezione Feed: modulo laterale che mostra le ultime notizie di siti di nostro interesse.

Scarichiamo Drupal, al momento la versione stabile è la 6.
Io utilizzo il metodo degli host virtuali per indirizzare apache alla root del progetto, ma il metodo più semplice è quello di scompattare l’archivio nella document root predefinita di apache. Come convenzione, quando scriverò di visualizzare sul browser la pagina http://firstwebsite indicherò di visualizzare la pagina http://localhost/firstwebsite per tutti quelli che hanno creato il progetto nalla document root predefinita.
Quindi posizionati nella cartella del progetto, scompattiamo l’archivio e rinominiamolo:


$ tar xvzf drupal-6.tar.gz
$ mv drupal-6 firstwebsite

Dobbiamo dare dei permessi speciali alla cartella firstwebsite/sites/default ed inoltre dobbiamo copiare un file, quindi:


$ cd firstwebsite/sites/default
$ cp default.settings.php settings.php
$ cd ..
$ chmod -R 777 default

Dobbiamo anche preparare un database che userà Drupal durante l’installazione:


$ mysqladmin -uroot -p create firstwebsitedb

Da questo momento potete dimenticare il terminale (almeno per le operazioni di configurazione). Aprite il browser e andate alla pagina del progetto: http://firstwebsite, vi troverete di fronte ad una pagina di installazione di Drupal:

Scegliete la lingua (al momento lasciamo inglese) e andate avanti con l’installazione. Inserite i dati che vi saranno richiesti e terminate l’installazione.
Al termine rimuoviamo il file di installazione e rimuoviamo i permessi di scrittura al file di setting:


$ rm install.php
$ sudo chmod -R 755 sites/default

Tornate alla Home (http://firstwebsite) e cominciamo a modificare il nostro sito.
Intanto abilitiamo la funzionalità Clean URLs, che trovate sotto Administer->Site configuration, la quale serve a rendere gli URL più leggibili e sicuri.
Creiamo subito una home page (diversa da quella di default), quindi clicchiamo su Create content->Page ed inseriamo i dati necessari, inoltre aprendo l’opzione Menù settings potete impostare il nome che comparirà nel menù. Salvate ed andate alla pagina: Administer->Site configuration->Site information e cercate la voce che fa riferimento a default home ed inserite l’indirizzo della home (in genere /node/1). Visitando nuovamente http://firstwebsite vi troverete di fronte alla nuova home… vuota nel mio caso:

Su questa pagina pagina potete inserire tutto quello che vi pare, se volete inserire del testo HTML, nell’opzione Input format è necessario abilitare l’opzione Full HTML.
Adesso cominciamo ad usare qualche modulo: creiamo la pagina dei contatti. Andate in Administer/Modules e mettete il segno di spunta su Contact, poi salvate. Vi apparirà una nuova voce nel menù Administer chiamata Contact Form, cliccateci. Poi andate in Add category ed inserite le informazioni richieste. Adesso aggiungiamo una nuova pagina, chiamandola CONTATTI, quindi andiamo al menù Create content->Page. Date un nome alla pagina e ricordate di aggiungere la pagina al menù dei primary links. Successivamente andate in Administer->Site Building->Menù->Primary Links e editate CONTATTI modificando l’elemento path in contact. Salvate.
Fatto questo non rimane che impostare i giusti permessi al modulo, quindi andate in Administer->User management->Permission e cercate la voce contact module. Impostate i permessi come meglio credete e salvate. Ecco a voi il contact form bello e pronto.

PS: l’articolo continua qui

Posted in CMS&MVC, Drupal, Programmazione | Leave a Comment »

G.Li.Ar: il modello

Posted by hosiris su aprile 28, 2010

Avendo definito le specifiche, passiamo all’analisi del modello. Tratterò libri ed articoli in tabelle separate cercando di ottimizzare il trattamento dei dati.
Creiamo il progetto:


$ mkdir -p gliar/lib/vendor
$ cp symfony.tar.gz gliar/lib/vendor
$ cd gliar/lib/vendor
$ tar xvzf symfony.tar.gz
$ cd ../..
$ php lib/vendor/symfony/data/bin/symfony generate:project gliar --orm=Propel

Lo schema del DB è il seguente:

Per la realizzazione dello schema ho usato DIA.
Da questo schema deriva la configurazione che va inserita nel file config/schema.yml:


propel:
  editori:
    id: ~
    nome: { type: varchar(255), required: true }
  riviste:
    id: ~
    nome: { type: varchar(255), required: true }
    id_editore: { type: integer, foreignTable: editori, foreignReference: id }
  categorie:
    id: ~
    nome: { type: varchar(255), required: true }
    descrizione: { type: longvarchar }
  autori:
    id: ~
    nome: { type: varchar(255), required: true }
    cognome: { type: varchar(255), required: true }
    data_nascita: { type: date }
    data_decesso: { type: date }
    luogo_nascita: { type: varchar(255) }
  libri:
    id: ~
    titolo: { type: varchar(255), required: true }
    descrizione: { type: longvarchar }
    indice: { type: longvarchar }
    numero_pagine: { type: integer }
    data: { type: date }
    prezzo: { type: double }
    ISBN: { type: varchar(50) }
    id_editore: { type: integer, foreignTable: editori, foreignReference: id }
  articoli:
    id: ~
    titolo: { type: varchar(255), required: true }
    sommario: { type: longvarchar }
    pagina_inizio: { type: integer }
    numero_pagine: { type: integer }
    data: { type: date }
    id_rivista: { type: integer, foreignTable: riviste, foreignReference: id }
  autori_libri:
    id_autore: { type: integer, foreignTable: autori, foreignReference: id }
    id_libro: { type: integer, foreignTable: libri, foreignReference: id }
  autori_articoli:
    id_autore: { type: integer, foreignTable: autori, foreignReference: id }
    id_articolo: { type: integer, foreignTable: articoli, foreignReference: id }
  categorie_libri:
    id_categoria: { type: integer, foreignTable: autori, foreignReference: id }
    id_libro: { type: integer, foreignTable: libri, foreignReference: id }
  categorie_articoli:
    id_categoria: { type: integer, foreignTable: autori, foreignReference: id }
    id_articolo: { type: integer, foreignTable: articoli, foreignReference: id }

Adesso creiamo l’applicazione e generiamo le classi del modello:


$ ./symfony generate:app frontend
$ mysqladmin -uroot -p create gliar_db
SeCrEt
$ ./symfony configure:database "mysql:host=localhost;dbname=gliar_db" root SeCrEt
$ ./symfony propel:build-all --no-confirmation

Dal prossimo post cominceremo a creare i moduli e personalizzare le viste e le rotte.
Do per scontato la creazione dell’host virtuale per la visualizzazione dell’applicazione.

Posted in GLiAr, PHP, Progetti Personali, Programmazione, Symfony | Leave a Comment »

Gestione Libri e Articoli: G.Li.Ar

Posted by hosiris su aprile 27, 2010

Comincio, con questo post, il tentativo di sviluppo di una applecazione che ha come scopo la gestione della mia libreria (moltissimi libri in cartaceo, molti di più in digitale) e degli articoli delle riviste che leggo.
Sono a conoscenza del fatto che ne esistono a bizzeffe… ma con quelli non potrei fare pratica con symfony e poi… che piacere c’è?
Questo noioso post descriverà le specifiche che guideranno la progettazione della mia applicazione. Sempre nella idea di apprendimento comunitario, se qualcuno fosse interessato e vorrebbe dire la sua, faccia pure senza problemi! Per questo progetto prevedo di utilizzare svn come sistema di versioning.
Come dovrebbe funzionare questa applicazione?

  • l’accesso alla home page mostrerà una pagina statica
  • visualizzazione della lista dei libri
  • i libri sono ordinati per categoria e per ordine alfabetico
  • visualizzazione della lista degli articoli
  • ordinati per rivista e per pagina
  • ricerca dei libri o articoli in base a delle parole chiave
  • visualizzazione della lista degli autori
  • visualizzazione della lista delle categorie
  • cliccando su un oggetto si accede a info dettagliate
  • un utente può solo visualizzare dati
  • un admin o un utente con permessi può effettuare modifiche

Per il momento non mi viene altro… bene a domani… analizzeremo il modello dei dati.

Posted in GLiAr, PHP, Progetti Personali, Programmazione, Symfony | Leave a Comment »

Programmazione veloce: un aiutino da Drupal!

Posted by hosiris su aprile 26, 2010

Solo qualche mese fa programmavo ancora scrivendo tutto il codice da zero: bello si, non si può negare, ma che fatica e soprattutto quanto è dura mantenere il codice! E i bug? Certo non è facile mantenere la sicurezza.
Ho fatto un enorme balzo iniziando a studiare symfony e sono convinto di aver fatto una scelta giusta! Ma più lo studio e più capisco che costruire un semplice portale per clienti che vogliono a mala pena una sola pagina dinamica! Allora ho cominciato a cercare qualche CMS. Certo la rete è piena di fazioni e scegliere non è facile visto che ormai nascono CMS come funghi. Dopo averne provati alcuni, ho trovato la mia soluzione preferita: Drupal.
E’ molto versatile e di semplice utilizzo quindi, per un neofita come me, ne consiglio l’utilizzo!
Una volta scaticato ed installato, vi troverete ad amministrare il sito attraverso un pannello a cui accedete dal browser.
Ulteriore vantaggio è l’enorme aiuto che ho ricevuto nel canale IRC #drupal-italia su FreeNode.

Inutile parlarne ancora. Iniziate ad usarlo.

Posted in CMS&MVC, Drupal, Programmazione | Leave a Comment »

Symfony: amministriamo le nostre attività

Posted by hosiris su aprile 25, 2010

Ci siamo divertiti con le prime basi di Symfony. La mia applicazione brutta era e brutta e rimasta… senzo estetico proprio zero, ma son felice lo stesso perchè tutto funziona.
Adesso non rimane che soddisfare gli ultimi punti delle nostre specifiche: il pannello amministrativo. Avendo a che fare con una applicazione così semplice la creazione della sezione amministrativa è cosa da poco; cominciamo col creare una nuova applicazione e il modulo di backend:


$ ./symfony generate:app backend
$ ./symfony propel:generate-admin backend todo --module=todo

andando all’indirizzo http://todo/backend_dev.php/todo troverete una pagina che contiene i record inseriti nel db, con un pannello di gestione dei dati (tutto messo un pò a casaccio però).
Solo per rendere il pannello più accettabile diamo il comando:


$ ./symfony plugin:publish-assets

ricaricando la pagina, vedrete un ambiente molto più amichevole e comprensibile 😉

Con questo concludo il progetto della todo list. Non volevo raggiungere risultati eccezionali, ma imparare i concetti base di questo framework… diciamoci che viste le potenzialità usarlo per una todo list… fa ridere! Credo che si può essere d’accordo sul fatto che con uno strumento così potente di possono gestire progetti molto più complessi.
Quindi passerò ad un progetto diverso, magari cercando di capire qualcosa anche di grafica, che prevederà maggiori tabelle nel DB e maggiori specifiche: un gestionale per libri e articoli.

PS: Convinto del fatto che in gruppo di impara di più, se ci fosse qualche altro niubbo di symfony oppure qualcuno a cui potrebbe interessare collaborare con me, ad esempio su progetti personali, contattatemi!

Posted in PHP, Progetti Personali, Programmazione, Symfony, ToDoList | Leave a Comment »

Nuovo utilizzo per robot chirurgici: tumori alla testa e al collo

Posted by hosiris su aprile 24, 2010

Gli ospedali stanno cominciando ad usare robot chirurgici per i tumori alla testa e al collo.
Nel dicembre dello scorso anno la FDA (Food and Drud Administration) ha permesso l’utilizzo del robot da Vinci per tumori maligni e benigni localizzati su lingua, tonsille e labbra.
Gli studi hanno dimostrato che, confrontato con le normali tecniche operatorie, il sistema robotico permette di ottenere minori complicazioni dovute a febbre, eccessiva perdita di sangue e permette di ridurre i rischi di infezioni e problemi a lungo termine nella deglutizione.
“Il sistema fornisce una visualizzazione 3D ad alta definizione ed è significativamente molto precisa,” dice il chirurgo Chad Zender.
Il sistema è composto da 4 arti robotici. Un braccio sostiene una coppia di piccole camere. Le altre tre, invece, sono fornite di strumenti chirurgici. Il chirurgo rimane seduto ad una console con un monitor 3D e due joystick. I movimenti della mano del chirurgo sono tradotti in precisi movimenti della strumentazione chirurgica. Il robot non prende decisioni e non può essere pre-programmato.

Posted in Ingegneria Biomedica, NewsOfTheDay | Leave a Comment »

Feed reader in PHP: SimplePie

Posted by hosiris su aprile 24, 2010

Nell’attesa di aver appreso i primi concetti di symfony, ho dovuto soddisfare una necessità di un mio amico: mi servirebbe un visualizzatore di news nel mio sito… evabbè, già mi stavo scrivendo la classe, quando mi imbatto in SimplePie.
Ha un utilizzo così semplice, che la decisione di scrivere questo articolo ancora mi fa ridere, ma è giusto spargere le informazioni, quindi vi presenterò una piccola applicazione (quello che ho usato io :P).
Innanzitutto occorre scaricare il pacchetto ed inserirlo nella web root. Dopodicchè aprite il file su cui volete fare comparire le news:


<?php
  require('simplepie/simplepie.inc'); //richiamiamo la libreria
  $feed = new SimplePie(); //istanziamo l'oggetto
  $feed->set_feed_url('https://hosiris.wordpress.com/feed'); //impostiamo la sorgente del feed
  $feed->enable_cache(false); //disabilito la cache
  $feed->init(); //inizializziamo la "raccolta dei feed"
  $feed->handle_content_type();
  foreach($feed->get_items() as $item){ // scorriamo ogni feed
    $feed = $item->get_feed();
    ?>
    <a href="<?php echo $item->get_permalink(); ?>"><?php echo html_entity_decode($item->get_title(), ENT_QUOTES, 'UTF-8') ?></a> // stampiamo il titolo
    <?php
    echo $item->get_content(); // e il contenuto del feed
    echo '<br>';
  }
?>

Ecco fatto! Questo naturalmente è il minimo che si possa fare. E’ possibile aggiugere un array di siti, è possibile visualizzare immagini prese dai feed… insomma la fantasia è l’unico limite.

A presto

Posted in PHP, Programmazione | Leave a Comment »

Analisi basate sul controllo delle componenti principali di una mano artificiale sottoattuata

Posted by hosiris su aprile 23, 2010

Funzionalità, controllabilità ed estetica sono le principali questioni da affrontare per poter realizzare con successo una sostituzione funzionale della mano umana per mezzo di una protesi. Non solo la protesi dovrebbe duplicare la mano dell’uomo in forma, funzionalità, percezione e senso di appartenenza al corpo, ma dovrebbe anche essere controllata come quella naturale. Attualmente, le mani protesiche sono controllate per mezzo di interfacce non invasive, basate sull’elettromiografia (EMG). Guidare una mano con molti gradi di libertà implica che, per raggiungere la destrezza di una mano naturale, si debbano analizzare molti segnali EMG, il che potrebbe richiedere una sforzo cognitivo eccessivo per l’utente.
Nello studio, viene utilizzato un algoritmo chiamato Principal Components Analysis (APC), per guidare un prototipo di mano protesica (chiamato CyberHand) con 16 gradi di libertà sottoattuati con un controllo a due input, al fine di fornire le tre forme utilizzate soprattutto nelle ADL. Tale insieme è stato derivato direttamente dalla mano artificiale, raccogliendo i dati sensoriali durante l’esecuzione di 50 differenti operazioni, e successivamente utilizzato per il controllo.
I trial hanno mostrato che i due segnali di input indipendenti possono essere usati in maniera soddisfacente per il controllo della mano robotica.

Fonte: www.jneuroengrehab.com

Download File: PDF

Posted in Ingegneria Biomedica, NewsOfTheDay | Leave a Comment »