.: HosiriS :.

Informatica e non solo

Archive for ottobre 2010

Creiamo una galleria immagini con Symfony

Posted by hosiris su ottobre 31, 2010

Avviso subito che questo post è valido solo se state usando Propel come ORM perchè prevediamo l’uso del plugin sfAssetsLibraryPlugin. Non parlerò dell’installazione di questo plugin che è ben spiegata nel readme.
I restanti plugin che utilizzeremo e che vi conviene installare da subito sono:

  • sfThumbnailPlugin
  • sfJQueryLightboxPlugin
  • sfJqueryReloadedPlugin

Accediamo al backend di sfAsset (…/backend/sfAsset) e creiamo una cartella “gallery”. All’interno di questa cartella potrete uploadare tutte le immagini.
Per configurare il frontend cominciamo con il creare il modulo gallery:

$ ./symfony generate:module frontend gallery

Aggiungiamo la rotta per il nuovo modulo:

# apps/frontend/config/routing.yml
gallery_list:
  url: /gallery
  param: { module: gallery, action: index }

Apriamo il file action.class.php del modulo gallery e aggiungiamo:

public function executeIndex(sfWebRequest $request)
{
  $parentPath = null;
  $path = $request->getParameter('dir', 'gallery');
  $folder = sfAssetFolderPeer::retrieveByPath($path);
  $this->forward404Unless(!$folder->isRoot());
  $parentPaths = explode('/', $folder->getParentPath());
  if (0 < $cnt = count($parentPaths)) {
    $parentPath = $parentPaths[$cnt-1];
  }
  $c = new Criteria();
  $c->add(sfAssetPeer::FOLDER_ID, $folder->getId());
  $c->addDescendingOrderByColumn(sfAssetPeer::CREATED_AT);
  $this->files = sfAssetPeer::doSelect($c);
  $this->dirs = $dirs;
  $this->folder = $folder;
  $this->parentPath = $parentPath;
}

Adesso modifichiamo il template, quindi apriamo il file indexSuccess.php

  <?php use_stylesheet('gallery.css', 'last') ?>
  <?php use_helper('I18N', 'sfAsset') ?>
  <h1><?php echo strtoupper($folder->getRelativePath()) ?></h1>
  <hr/>
  <div id="media">
  <?php if (null !== $parentPath && $parentPath == 'gallery'): ?>
    <div class="assetImage">
      <div class="thumbnails">
        <?php echo link_to_asset(image_tag('/sfAssetsLibraryPlugin/images/up', 'size=64x64 alt=up title='.__('Parent directory', null, 'sfAsset')), '@gallery_list?dir='. $folder->getParentPath()) ?>
      </div>
      <div class="assetComment" id="ajax_dir_0">..</div>
    </div>
  <?php endif ?>
  
  <?php foreach ($dirs as $dir): ?>
    <div class="assetImage">
      <div class="thumbnails">
        <?php echo link_to_asset(image_tag('/sfAssetsLibraryPlugin/images/folder', 'size=64x64 alt=folder title='.$dir->getName()), '@gallery_list?dir=' . $dir->getRelativePath()) ?>
      </div>
      <div class="assetComment"><?php echo auto_wrap_text($dir->getName()) ?></div>
    </div>
  <?php endforeach ?>
  </div>
  <div id="gallery">
  <?php foreach ($files as $sf_asset): ?>
      <?php $src_thumb = $sf_asset->getUrl('small', isset($folder) ? $folder->getRelativePath() : null); ?>
      <?php echo image_tag($src_thumb, array('class'=>'light', 'width'=>154, 'height'=>140)) ?>
  <?php endforeach ?>
  </div>
  </div>

Cancelliamo la cache:

$ ./symfony cc

In questo modo vedremo apparire la galleria nella pagina: http://yoursite/frontend_dev.php/gallery.

Possiamo aggiungere un effetto lightbox alle immagini quando viene cliccata una immagine.
Riapriamo il file indexSuccess.php e mofichiamo l’uso dell’helper in:

e modifichiamo il div gallery come segue:

Ricaricate la pagina, et voila… tutto pronto.

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

L’ecocardiografia tridimensionale basata sulla modalità a singolo battito

Posted by hosiris su ottobre 30, 2010

L’ecocardiografia tridimensionale (3DE) raggiunge la stessa accuratezza della risonanza magnetica nella misurazione del volume ventricolare. La modalità multibattito comparata a quella a singolo battito richiede l’uso di tecniche per eliminare gli errori causati dal respiro e dal ritmo cardiaco che limita l’uso di questa tecnica in pazienti con fibrillazione atriale.
Lo studio presentato mira ad investigare l’accuratezza delle misurazioni delle tecniche basate su singolo battito confrontate con le tecniche multibattito.

FONTE: www.cardiovascularultrasound.com
DOWNLOAD FILE: PDF

Posted in Ingegneria Biomedica, NewsOfTheDay | Leave a Comment »

Stato dell’arte sulla risonanza magnetica cardiovascolare

Posted by hosiris su ottobre 29, 2010

Effettuare studi sulla risonanza magnetica cardiovascolare (CMR) a un campo di forza di 3 Telsa porta ad alcuni vantaggi, tra cui l’aumento della magnetizzazione, l’aumento della risposta alla frequenza di risonanza. Tuttavia, vi sono notevoli sfide di eseguire al fine di usare periodicamente la CMR, compresa la riduzione dell’omogeneità del campo magnetico principale, l’aumento della deposizione di potenza RF e l’aumento degli elementi di base di suscettibilità. Nella recensione proposta, si delineano gli effetti fisici che si verificano durante l’imaging ad alti campi, esaminano i risultati concreti che questi effetti hanno sulle applicazioni CMR ed esamina i metodi utilizzati per compensare questi effetti. In particolare, verranno esaminate “cine-imaging”, “angiografia coronarica”, “imaging di perfusione del miocardio”.

FONTE: jcmr-online.com
DOWNLOAD FILE: PDF

Posted in Ingegneria Biomedica, NewsOfTheDay | Leave a Comment »

Lavoriamo con Google Maps tramite Symfony

Posted by hosiris su ottobre 27, 2010


$ svn co http://svn.symfony-project.com/plugins/sfEasyGMapPlugin/branches/v3 sfEasyGMapPlugin

settings.yml

all:
  .settings:
    enabled_modules: [default, sfEasyGMapPlugin]

modifica ProjectConfiguration.class.php

$this->enablePlugins('sfEasyGMapPlugin');


$ php symfony cc


$ ln -s ../plugins/sfEasyGMapPlugin/web web/sfEasyGMapPlugin

In the action:

$this->gMap = new GMap();
$this->gMap->addMarker(new GMapMarker(51.245475,6.821373));
$this->gMap->addMarker(new GMapMarker(46.262248,6.115969));

In the template:

<?php use_helper('Javascript','GMap') ?>
<?php include_map($gMap,array('width'=>'512px','height'=>'400px')); ?>
<!-- Javascript included at the bottom of the page -->
<?php include_map_javascript($gMap); ?>

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

Configurare DNS per risolvere i nomi della VPN

Posted by hosiris su ottobre 26, 2010

Adesso che ho configurato la VPN ho potuto ottimizzare un po’ di ambienti: backup, sviluppo, siti on line… niente di importante o serio… ma ordinato 😀
Ma ricordarmi gli ip che vengono assegnati da server VPN è un tantino poco efficacem soprattutto pensando a tutti gli alias usati per accedere ai siti di sviluppo. Allora perchè non configurare un bel DNS?
Cominciamo subito con l’installazione del server:

$ sudo apt-get install bind9

Ho configurato il mio DNS come server autoritario, atto quindi a risolvere i nomi che vengono impostati.
Modifichiamo il file /etc/bind/named.conf.options:

options {
  directory "/var/cache/bind";
  forward first;
  forwarders {
    ;your dns address
  };
  auth-nxdomain no; # conform to RFC1035
};

Modifichiamo il file /etc/resolv.conf modificando il valore di “nameserver” con l’indirizzo della macchina locale.
Adesso cominciamo a configurare le zone e gli alias:

; /etc/bind/named.conf.local
zone "lan" in {
type master;
file "/etc/bind/db.lan";
};


; /etc/bind/db.lan
$TTL 3h
@. IN SOA server.lan. root.lan. (
2005030801; Serial
3h; Refresh
1h; Retry
1w; Expire
1h) ;Negative cache
;dns server
IN NS server.lan.
;database risolutivo
server.lan. IN A 127.0.0.1
pc1.lan. IN A 192.168.1.1
;alias
alias.server.lan. IN CNAME server.lan.

Adesso dobbiamo modificare il server VPN per inviare le informazioni del DNS nella configurazione. Per questo aprite il vostro file di configurazione del server:

#/etc/openvpn/server.conf
push "dhcp-option DNS ipaddress"
push "dhcp-option DNS dnsips"

Inoltre bisogna instruire i client ad accettare le informazioni passate dal server. Questa operazione va fatta solo sui client linux perchè a causa dei permessi non viene modificato il file resolv.conf.
Installiamo:

$ sudo apt-get install resolvconf

Poi apriamo il file di configurazione del client e aggiungiamo le seguenti linee:

up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

riavviate tutte le configurazioni e adesso potrete dimenticare l’uso dei file hosts.

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

Altre voci di… delusione

Posted by hosiris su ottobre 25, 2010

Con questo post voglio solo condividere una lettera scritta sul sito di “Generazione Italia” in cui Mirko Montuori espone le proprie lamentele.
Certamente non sarei mai stato in grado di scrivere così come ha fatto lui, ma i sentimenti sono gli stessi:

Lettera aperta

Posted in Attualità, Politica | Leave a Comment »

Aggiungere una galleria di immagini in WordPress

Posted by hosiris su ottobre 25, 2010

Certo di guide se ne trovano sempre… ma perdere mezza giornata perchè sono poco chiari non mi pare il caso, quindi questa memo mi servirà qualora dovessi averne bisogno.

A prima vista non mi era sembrato che sul WP si potessero inserire gallerie di immegini, ma girovagando un po’ per la rete ho capito che dovevo cercare più a fondo.

Cominciamo con il creare una nuova pagina, io l’ho chiamata “Gallery”. Successivamente clicchiamo sull’iconcina per inserire delle immagini:

Successivamente selezionate la sezione gallery:

Nelle impostazioni della galleria selezionate “File immagine” e poi inserisci galleria.
Salvate la pagina “Gallery” e visualizzatela, vedrete la vostra bella galleria di immagini apparire.

Buon divertimento

Posted in CMS&MVC | 5 Comments »

In giro per il frusinate!

Posted by hosiris su ottobre 24, 2010

Ormai con le orecchie assuefatte al rumore quotidiano, ho sentito la necessità di lasciarmi tutto alle spalle e andarmi a disperdere nella natura. Non conoscendo bene la parte sud del Lazio ho deciso di dirigermi verso Frosinone.
Vista la presenza di un lago ho anche portato l’attrezzatura per le immersioni.
La prima tappa è stata Posta Fibreno, piccola località nei pressi di Sora, in cui troviamo il lago di cui sopra. Purtroppo l’immersione è stata troncata sul nascere causa rottura del mio erogatore e del GAV del mio accompagnatore (ci vuola fortuna nella vita), ma comunque ho avuto modo di provare le acque fredde del lago e la osservare la bellezza dei fondali lacustri. Se siete amanti della natura vi consiglio vivamente di visitare la “Riserva Naturale di Posta Fibreno” anche solo per una passeggiata rilassante.

In serata mi sono diretto ad Arpino e ho alloggiato in un agriturismo che ha un unica pecca: la difficoltà di raggiungibilità. L’agriturismo di cui parlo è La Staccionata. Quella che poco fà ho definito come una pecca, dal mio punto di vista è stato un vantaggio. Cercavo la pace assoluta e vi garantisco che la prima sensazione che avrete sarà proprio questa. L’agriturismo offre una visuale spettacolare, avendo di fronte l’intera vallata e la poca illuminazione permette di ammirare il cielo stellato che sovrasta le numerose cittadine.
I padroni di casa sono molto ospitali ed è un piacere rimanere a chiaccherare davanti ai succulenti piatti proposti del menù.
Proprio su questo argomento ho raggiunto la maggior estasi: è ormai difficile trovare agriturismi in cui tutto è prodotto localmente, in genere qualcosa viene sempre acquistato; a “La Staccionata” non ho trovato niente che non fosse di produzione propria: olio, vino, ortaggi, pasta, carne… tutto prodotto rigorosamente dal duro lavoro dei proprietari. Se amate la buona cucina, vi consiglio di fare un viaggetto e di andare a provare.

I prezzi sono onestissimi, 40.00 euro per la doppia con colazione compresa (abbondante colazione sempre con prodotti di loro produzione) e 25.00 euro a testa per la cena.

Nient’altro da aggiungere.

Posted in Viaggi | 2 Comments »

Inviamo email con Symfony

Posted by hosiris su ottobre 23, 2010

Con la versione 1.3 in Symfony è stata integrata la classe Swift Mailer 4.1, semplificando enormemente le operazioni necessarie ad inviare mail.
La configurazione è basata sull’applicazione e può essere diversa per ogni ambiente. Queste configurazioni si trovano in apps/frontend/config/factories.yml.

prod:
  mailer:
    param:
      delivery_strategy: realtime
test:
  mailer:
    param:
      delivery_strategy: none
dev:
  mailer:
    param:
      delivery_strategy: single_address
      delivery_address: your_email
all:
  mailer:
    param:
      transport:
        class: Swift_SmtpTransport
        param:
          host: smtp.gmail.com
          port: 465
          encryption: ssl
          username: your_gmail_account
          password: your_gmail_password

Per istanziare un oggetto “mail”, nell’azione è sufficiente richiamare:

$this->getMailer()

La composizione e l’invio della mail sono possibili in maniera semplice tramite il metodo:

$this->getMailer()->composeAndSend('from@example.com', 'to@example.com', 'Subject', 'Body');

Se fosse necessario creare messaggi più complessi, la classe sfMailer fornisce accesso a tutte le funzionalità di SwiftMailer. Ad esempio:

#/myproject/apps/frontend/modules/mymodule/actions.class.php
public function executeSend($request)
{
...
    $message = $this->getMailer()->compose();
    $message->setSubject($params['subject']);
    $message->setTo($params['to']));
    $message->setFrom($params['from']);
    $html = $this->getPartial('mymodule/myTemplateHtml',$params);
    $message->setBody($html, 'text/html');
    $text = $this->getPartial('mymodule/myTemplateTxt',$params);
    $message->addPart($text, 'text/plain');
    $this->getMailer()->send($message);
...
}

Per maggiori approfondimento consiglio di leggere la documentazione.

Buon divertimento

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

Come lavorare con i form in Symfony

Posted by hosiris su ottobre 22, 2010

In vari casi abbiamo visto come, in maniera del tutto automatica, Symfony potesse generare i form di inserimento e modifica per la gestione del modello.
Ma se volessimo comporre un form che ci permetta, ad esempio, di richiedere dei dati da un utente, che procedura dovremmo seguire?
Per questo scopo, cominceremo ad analizzare la classe sfForm. Iniziamo con il descrivere la classe ContactForm:

// lib/form/ContactForm.class.php
class ContactForm extends sfForm
{
  public function configure(){
    $this->setWidgets(array(
      'name' => new sfWidgetFormInputText(),
      'email' => new sfWidgetFormInputText(),
      'message' => new sfWidgetFormTextarea(),
    ));
  }
}

Adesso che la classe è pronta possiamo generare un modulo:

$ ./symfony generate:module frontend contact

Adesso dobbiamo modificare l’azione del modulo contact:

// apps/frontend/modules/contact/actions/actions.class.php
class contactActions extends sfActions
{
  public function executeIndex(){
    $this->form = new ContactForm();
  }
}

E per fare in modo che venga visualizzato il form, modifichiamo il template:

// apps/frontend/modules/contact/templates/indexSuccess.php
<form action="<?php echo url_for('contact/submit') ?>" method="post">
  <table>
    <?php echo $form ?>
    <tr>
      <td colspan="2">
        <input type="submit" />
      </td>
    </tr>
  </table>
</form>

Per vedere il risultato, portiamoci sulla pagina /frontend_dev.php/contact.
Se provate ad inserire i dati e premere submit, vedrete che non succederà niente; questo perchè non abbiamo definito una azione per il “submit”:

// apps/frontend/modules/contact/action/action.class.php
public function executeSubmit($request)
{
  $this->forward404Unless($request->isMethod('post'));
  $params = array(
    'name'    => $request->getParameter('name'),
    'email'   => $request->getParameter('email'),
    'message' => $request->getParameter('message'),
  );
  $this->redirect('contact/thankyou?'.http_build_query($params));
}
public function executeThankyou()
{
}
// apps/frontend/modules/contact/templates/thankyouSuccess.php
<ul>
  <li>Name:    <?php echo $sf_params->get('name') ?></li>
  <li>Email:   <?php echo $sf_params->get('email') ?></li>
  <li>Message: <?php echo $sf_params->get('message') ?></li>
</ul>

In questo modo dopo il submit apparirà una finestra che mostrerà le informazioni che sono state inserite.
Visto il nome del modulo si è capito che stiamo per creare una conct form. Il secondo passo sarà quello di inviare una mail con le informazioni inserite nel form.
Vi consiglio di dare un’occhiata alla sezione della validazione del form, che ci permette con poche linee di testo di essere sicuri che l’utente stia lavorando correttamente.

Buon divertimento

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