APACHE NON RISOLVE LE PAGINE PHP (UBUNTU SERVER 10.04)

Aggiornando server alla versione 10.04. potrebbe capitare che il server web non sia più in grado di parserizzare le varie pagine forzando quindi il browser
ad un download della pagina richiesta questo anche se in apparenza l’installazione di e la configurazione del sembrano corrette tanto che l’applicativo PHPMYADMIN funziona benissimo.

Il problema potrebbe essere localizzato in uno dei moduli di che permette l’interpretazione del da parte del web server.
Il modulo in questione è il PHP5.conf che si trova nella cartella /etc/apache2/mods-available

<IfModule mod_php5.c>
<FilesMatch “\.ph(p3?|tml)$”>
SetHandler application/x-httpd-
</FilesMatch>
<FilesMatch “\.phps$”>
SetHandler application/x-httpd--source
</FilesMatch>
# To re-enable in user directories comment the following lines
# (from <IfModule …> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
#<IfModule mod_userdir.c>
#    <Directory /home/*/*>
#        php_admin_value engine Off
#    </Directory>
#</IfModule>
</IfModule>

Come potete notare è presente un commento che esplicitamente avvisa che per riabilitare il nelle directory dei vari utenti configurati sul server che contengono i siti web esposti
è necessario commentare le righe che vanno dalla tag <IfModule sottostante il commento fino alla chiusura del tag </IfModule>

Dopo il riavvio dell’ tutto dovrebbe tornare a funzionare correttamente.
Alla prossima

Cyber-attacchi, le vittime devono parlare

La SEC distribuisce una nuova serie di regole comportamentali per le societa’ quotate in Borsa e cadute vittima di attacchi cyber-attacchi. Spunta l’obbligo della divulgazione dettagliata anche per gli incidenti avvenuti in passato

USA, indagini sulle tasse di Google?

L’autorita’ competente avrebbe convocato i vertici di Mountain View per parlare di tasse. E stavolta potrebbe non essere routine

PHP APC E WORDPRESS

Sembra sia nota un’incompatibilità fra alcune versioni di WordPress ed il noto modulo -APC che consente il caching e l’ottimizzazione del codice .

L’incompatibilità si manifesta con un errore durante il caricamento delle pagine WP che vengono visualizzate parzialmente caricate.

Per risolvere il problema è possibile disabilitare il modulo sul virtual-host che ospita l’installazione di WP attraverso la seguente direttiva da aggiungere alla configurazione virtual-host di :

<Directory “path della directory fisica”>
    Options -Indexes
    php_admin_flag apc.enabled “0″
</Directory>

Alla prossima

 

JQuery e Prototype

Mi è capitato ultimamente di dover utilizzare contemporaneamente due fra le più importanti librerie
all’interno dello stesso progetto: parlo della libreria JQuery e Prototype.

Nel fare questo però ho incontrato non poche difficoltà a motivo del fatto che entrambe le librerie dichiarano la stessa
variabile “$”.

Per questo motivo tutto ciò che veniva referenziato attraverso la variabile $ come ad esempio:

$('nome oggetto').value

generava un errore di undefined variabile “$” impedendo di fatto al codice di funzionare correttamente.

Per ovviare a questo problema ho trovato una soluzione utilizzando una funzione JQuery con la quale è possibile ridefinire
la variabile “$” con un altro nome:

var Qr = jQuery.noConflict();

Dopo aver ridefinito la variabile, questa potrà essere utilizzata in ogni riferimento a funzione JQuery come nell’esempio seguente:

Qr(document).ready

Grazie a questo piccolo accorgimento le due librerie non interferiscono più fra di loro e tutto torna a funzionare correttamente.

Alla prossima

Installare e Iniziare a programmare con Android (Eclipse + Android-SDK)

Installare Ambiente di Sviluppo (Eclipse + )

Qui a seguito vi mostrerò i passi principali per installare l’ambiente di sviluppo che ci permettarà di iniziare a programmare su !

Come linguaggio di programmazione viene utilizzato Java quindi bisogna avere preinstallata(oppure bisogna scaricare) sul vostro computer l’ultima versione di Java.

Come principale strumento di lavoro utilizziamo la IDE di sviluppo di Eclipse;
Eclipse ci permette di sviluppare in differenti linguaggi; si consiglia sempre di scaricare l’ultima versione del programma che troviamo disponibile gratuitamente al link http://www.eclipse.org/downloads/ (scaricare l’ultima versione “Eclipse IDE for Java Developers” in base al nostro sistema operativo, cioè a 32 o 64 bit).
Il file estratto sarà uno zip che andrà estratto nel vostro computer preferibilmente nella cartella “Programmi“.
Per avviare il programma basta entrare nella cartella di Eclipse e cliccare sull’eseguibile eclipse.exe.

Il secondo passo fondamentale rigurarda l’installazione del pacchetto SDK di (lo si puo trovare al link http://developer..com/sdk/index. ).

Per gli utenti windows si puo scaricare o il file eseguibile oppure consiglio di creare una nuova cartella “” nella cartella “Programmi” e estrapolare il file .zip in questa cartella.
Una volta scaricato l’SDK basta lanciare l’eseguibile “SDK Manager.exe“.
L’SDK-Manager una volta lanciato farà una verifica dei files già installati sul vostro computer(“Installed packages“) e dei files invece disponibili da scaricare(“Available packages“);
procedete con l’intallazione sul vostro pc di tutti i files necessari trovati dall’SDK-Manager.

Una volta effettuato il download dei files mancanti vi consiglio di tenere aperto l’SKD-Manager e andare nella sezione “Virtual devices“; qui cliccando in alto a destra su “New” potete creare subito un ambiente virtuale che utilizzerete in seguito per visualizzare un’emulazione delle vostre applicazioni.
Nella creazione vi verranno richieste varie informazioni come per esempio il nome, il livello di API di su cui volete programmare, la dimensione della periferica virtuale.

Finite queste prime due procedure bisogna connettere l’ambiente di sviluppo Eclipse con i file scaricati di .
Una volta aperto Eclipse bisogna cliccare nel menu in alto la voce “Help“; qui selezionare la voce “Install new Software“; nella schermata che vi si apre cliccate nella sezione “Work with“ sul pulsante “Add” e inserite come nome del software “” e come location il seguente url: https://dl-ssl.google.com//eclipse/.
Nella finestra vi dovrebbe comparire il software “Developer Tools“ da scaricare, voi selezionate tutto e cliccate su “Next” per proseguire e scaricare e installare il plugin.

Finita questa procedura dovrete effettuare il restart di Eclipse.

Per verificare che tutto il processo sia andato a buon fine cliccate nel menu di Eclipse su “File”->”New”->”Project” e tra i vari tipi di progetti dovrebbe comparirvi “ Project”.

Per creare un primo progetto cliccare su “ Project” e successivamente su “Next“; vi verrà richiesto il nome da assegnare al progetto, la location riguardante il workspace, la scelta del livello di API(scegliete la stessa con cui avete in precedenza creato la “virtual device“), il nome dell’applicazione (per esempio “androidTest“), il “Package name“(per esempio “org.example.“) e il nome dell’attività (per esempio “androidTest“);
Cliccando su “Finish” vi comparirà nella sezione “Project Expoler” di Eclipse il vostro primo progetto !!!
Per avvicinarci alla programmazione di qualche piccolo esempio con vi consiglio di guardavi i vari esempi su questo link: http://developer..com/resources/browser.?tag=tutorial.

Per esempio potete iniziare col copiarvi pari pari il codice proposto da qualche esempietto di questo sito nel vostro progetto; una volta sviluppato(o copiato) codice, per visualizzare il risultato basta cliccare col tasto destro sul progetto, andare sulla voce “Run As” (o “Degug As” per effettuare un debug) e cliccare su “ Application“;
Se possedete un telefonino che ha come sistema operativo potete collegarlo tramite la presa USB al vostro pc e se attivate la funzione di Debug(sul vostro telefono) quando avvierete un applicazione da Eclipse vi verrà richiesto se voltete eseguire l’applicazione sulla “virtual device” precedentemente creata oppure se volete eseguirla direttamente sul vostro telefonino (in questo caso una volta che la eseguite l’applicazione viene caricata sul vostro telefonino e la potrete riavviare anche una volta scollegato il telefono).

E ora divertitevi!
Buona programmazione!!! :D

Andre

Symfony 2 – Cosa c’è di nuovo? (parte 2)

I Bundle

Come accennato nell’articolo precedente, una delle grosse novità di 2 è l’introduzione dei Bundle.

I Bundle possono essere considerati come i plugin nella versione 1 del framework e per chi ha maggiore dimestichezza con il mondo JAVA, i bundle possono essere considerati come i package.
La struttura a bundle del framework 2 è resa possibile dall’implementazione del concetto di NAMESPACE introdotta dalla versione 5.3 di , versione che 2 richiede obbligatoriamente.

Di seguito riporto un esempio di struttura di un bundle:

Con 2 i bundle vengono attivati dal kernel dell’applicazione attraverso il modulo descritto di seguito:

use \Component\HttpKernel\Kernel;
use \Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new \Bundle\FrameworkBundle\FrameworkBundle(),
            new \Bundle\TwigBundle\TwigBundle(),
            new \Bundle\ZendBundle\ZendBundle(),
            new \Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new \Bundle\DoctrineBundle\DoctrineBundle(),
            new \Bundle\AsseticBundle\AsseticBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
        );

        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new \Bundle\WebProfilerBundle\WebProfilerBundle();
            $bundles[] = new \Bundle\WebConfiguratorBundle\SymfonyWebConfiguratorBundle();
	    $bundles[] = new Makeallweb\LoginBundle\LoginBundle();
	    $bundles[] = new Makeallweb\EntitiesBundle\MakeallwebEntitiesBundle();
	    //$bundles[] = new Bundle\WebServiceBundle\WebServiceBundle();
        }

        return $bundles;
    }

    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
    }

    public function registerRootDir()
    {
        return __DIR__;
    }
}

Attraverso questo modulo è possibile controllare in maniera capillare quali bundle vengono utilizzati dall’applicazione ed è possibile agire sullo stato anche dei bundle del core del framework.

Inoltre affinchè il bundle sia visibile nell’intera applicazione è nesessario registrarlo all’interno del nuovo modulo di autoloading, modulo di cui parleremo in maniera approfondita nella prossima parte dell’articolo.

Per una trattazione approfondita di come implementare un nuovo bundle all’interno di un progetto, fare riferimento alla documentazione ufficiale di symfony2.

Ogni bundle incorpora tutte le risorse necessarie a renderlo un modulo completamente autonomo: risorse web come i template grafici, i CSS e i metodi ,  le risorse quali i controller con le varie action che operano sui relativi template ed le varie risorse di configurazione.

All’interno del bundle troviamo anche tutta la sezione per l’implementazione dei test che sfrutta la tecnologia PHPUnit.

Grazie a questa struttura è possibile trasportare un bundle da un progetto all’altro semplicemente registrandolo nell’applicazione corrente. Dopo tale operazione sarà possibile utilizzarlo immediatamente all’interno del progetto.

 

Symfony 2 – Cosa c’è di nuovo? (Parte 1)

Con questo articolo vorrei cominciare una serie di considerazioni sull’evoluzione di uno dei più famosi framework attualmente utilizzato: .

Per chi non lo conoscesse, è un framework , estremamente utile alla realizzazione di web application che necessitano di una struttura di progetto ben definita e di una serie di strumenti di sviluppo che altrimenti il linguaggio in se non metterebbe a disposizione.

Per questo motivo aggrega una serie di concetti che di fatto facilitano e velocizzano lo sviluppo di applicazioni rendendole nello stesso tempo robuste e facilmente manutenibili.

Concetti quali:

  • MVC
  • ORM
  • AJAX
  • Components
  • Bundles

 

Dalla 1 alla 2 – STRUTTURA FOLDER

Tutti coloro che, ad oggi, sono abituati alla versione 1, si troveranno di fronte ad una notevole ristrutturazione del framework che, sfruttando le nuove caratteristiche della versione 5.3 di , ha fatto un notevole passo avanti verso la filosofia JAVA.

2 organizza il progetto con una struttura di folder molto diversa rispetto alla versione 1. Un esempio possiamo trovarlo di seguito:

 

 

APP Folder

La cartella APP rappresenta l’applicazione che con 2 diventa unica.
Con 1 era possibile creare più applicazioni in un progetto, ad esempio “Frontend” e “Backend” e tutto il codice di gestione delle action veniva suddiviso in moduli all’interno della APP folder.

Con 1 il codice non è più presente in questa cartella, ma la APP folder contiene tutti gli oggetti di base dell’applicazione come ad esempio i file di configurazione, i log, la cache e i template.

SRC Folder

La SRC Folder contiene tutto il codice di gestione dell’applicazione. Il codice con 2 vive all’interno dei Bundle paragonabili ai Plugin nella versione 1 di .
I Bundle possono essere paragonati ai Package in Java e rappresentano delle sotto folder all’interno della SRC Folder.
2 è in grado di implementare una struttura a Bundle grazie all’introduzione del concetto di “name spacing” implementato nella versione 5.3 di .

Nei prossimi articoli approfondiremo l’argomento Bundle.

VENDOR Folder

La VENDOR Folder accoglie tutte le librerie che rappresentano il CORE del framework e tutte le librerie dei vari PLUGIN utilizzati da 2 come ad esempio Doctrine, Swiftmailer e Twig

WEB Folder

La WEB Folder non cambia molto rispetto alla versione 1. La differenza più significativa sta nel fatto tutte le risorse web quali (, immagini e CSS) vengono organizzate in bundle come nel caso del codice.

Regular Expression con Symfony

Durante l’implementazione dei vari controlli di validazione di un form potrebbe capitare di dover aggiungere un’ espressione regolare per la verifica di un particolare campo.

Di seguito riporto un esempio di come è possibile aggiungere un controllo di tipo regular expression in una classe form:

 $this->setValidators(array(
    'telefono_cellulare' => new sfValidatorRegex(array('pattern' => '/\+[3][9][0-9]{10}$/i'),
                            array('invalid' => 'Formato del numero errato. +39XXXXXXXXXXXX'))
 ));

Il controllo riguarda la verifica del formato di un numero di cellulare affinchè venga inserito esattamente come richiesto.

Alla prossima

Problema overwrite di datasource sulla stessa XPage

Durante l’implementazione di una XPage potrebbe capitare di avere più di un DataSource all’interno della stessa pagina. Questa situazione è abbastanza comune, ad esempio, se vengono effettuate inclusioni di pagine in altre pagine.

Se tali DataSource vengono realizzati con lo scopo di effettuare una OpenDocument, potreste trovarvi di fronte ad un problema di overwrite del documento. Per essere più chiaro, quando vengono stampati i dati del secondo documento aperto, vi accorgerete che, in realtà, vengono ristampati i dati del primo documento aperto, anche se i documento sono di tipologia differente.

Il problema è legato ad una caratteristica di Lotus Notes che obbliga tutti i datasource a considerare i parametri della REQUEST, di conseguenza i resultset vengono caricati con i medesimi dati.
Per ovviare al problema occorre specificare a Lotus che l’OpenDocument in corso non deve considerare i parametri della REQUEST. Esiste una proprietà specifica dell’istruzione OpenDocument denominata: “IgnoreRequestParam”, come potete vedere nell’immagine sottostante.

Impostando a true questa opzione, i datasource divengono indipendenti caricando i documenti specificati dalla view impostata.

Alla prossima