Javascript e blocco tasto invio

Un semplice snippet che permette di bloccare l’uso del tasto INVIO nella gestione dei form, usando anche jQuery:

 

$("#myForm").bind("keypress",
function(e)
{
   if (e.keyCode == 13) return false;
}
);

Il codice funziona sia su IE 6 che su Firefox e Chrome.

Il problema che mi si presentava era durante la compilazione di un modulo HTML: quando scrivevo il valore in un campo di testo con l’ausilio di un barcode scanner; il form mi scappava di mano e passava alla maschera successiva anche se non avevo terminato di compilarlo.

Ok, lo so, si poteva anche agire lato scanner, ma avendone un migliaio in giro dal mio cliente è stato più ragionevole agire dal lato del browser.

RBAC – Role Based Access Control

logo YiiYii implementa la gestione dei permessi secondo il paradigma RBAC che permette di definire chi può fare cosa su quale oggetto e a quale livello.

Ad esempio: un amministratore di un social network può reimpostare la password dei singoli utenti se loro se la sono dimenticata; mentre ogni utente può gestire completamente il proprio profilo, ma non quello degli altri, anche se li può vedere.

Yii possiede la potenzialità di auto estendersi per task specifici come quelli di realizzare una griglia di autorizzazioni all’accesso degli oggetti dell’applicazione, estendendo le funzionalità tramite potenziamento dei comandi disponibili dall’interfaccia dell’interprete yiic da linea di comando.

Leggi il prosieguo dell’howto per una breve panoramica.

Gestire le relazioni molti-a-molti con Yii

logo YiiStudiando il manuale Agile Web Application Development with Yii 1.1 and PHP 5 mi sono imbattuto in un problema che causa un errore di Yii a causa di un passaggio parametri non corretto. Dettagli nella pagina di Yii.

Le cifre del Web

Mentre preparo degli appunti sul web per un lavoro che devo fare, mi imbatto in questo interessantissimo video che snocciola una serie di cifre sull’utilizzo dei maggiori servizi web del momento.

Volunia Power User

Sono stato sorteggiato come Power User… sono proprio curioso.

PHP Pear, PHPUnit e Yii

Per testare il codice scritto in PHP con il framework Yii è di moda, ma anche a ragione, usare una procedura di unit test, nel mio caso PHPUnit.

Ho dovuto fare un po’ di lavoro, può essere utile a qualcuno che si è trovato nelle stesse situazioni vedere come ho risolto la cosa.

Dettagli qui.

Modifica ai virtualhost per l’applicazione ecommerce

Tenere due domini di secondo livello mi provoca problemi con i cookies nelle sessioni in cui ho due tab aperte sui due siti: infatti il cookie è unico e, se si lavora con un solo browser, insorgono problemi, Opencart non riesce ad aprire due sessioni distinte, e prima o poi, una mangia l’altra.

Per ovviare a questo problema ho definito due domini: cliente1.tld e cliente2.tld, rivisto i virtual host di Apache e il file hosts. Tutto funziona a pallino.

Come configurare Opencart in modalità multi-store

Opencart ha l’utilissima (nel mio caso) caratteristica che consente di costruire più di un negozio elettronico con la medesima installazione.

Dal punto di vista del database, esiste l’entità store ogni riga della quale definisce un negozio separato, ognuno con logo, aspetto e catalogo distinti. La differenziazione degli articoli viene poi fatta agganciando le categorie agli store tramite la tabella category_to_store. L’interfaccia di amministrazione consente di gestire separatamente i cataloghi per le diverse aziende.

Le istruzioni per costruire un multi negozio elettronico sono relativamente poche e nemmeno troppo complicate, ma il tralasciare uno stupido slash (“/”) può costare ore di lavoro.

Operazioni da interfaccia di amministrazione

Nella interfaccia di amministrazione di Opencart seguire il menu Sistema > Impostazioni (o System > Settings).

E’ definito sempre un negozio di default, che ha 0 come store_id. Possiamo definirne altri (non c’è limitazione) premendo il pulsante Inserisci, e in ognuno di questi dobbiamo inserire queste informazioni basilari:

  • * URL negozio: in questa casella di testo scriviamo l’URL del singolo negozio; meglio se in un dominio a parte o in un dominio almeno di secondo livello. Ad esempio potremmo scrivere http://hifi.esempio.com/ oppure se proprio è qualcosa di completamente separato (ad esempio due clienti distinti) http://www.hifi.com/; per un secondo negozio sceglieremo http://computers.esempio.com/ oppure http://www.computers.com/. Questo campo è obbligatorio (vedi l’asterisco rosso), e vediamo più avanti come va gestito anche il dominio.
    Attenzione: lo slash finale (/) è assolutamente obbligatorio (l’avverbio è inutile, ma serve a rendere l’idea del tempo che si può perdere…) pena la redirezione al negozio predefinito!
  • Nome negozio: qui consiglio di scrivere un nome possibilmente breve per il negozio: nella tendina “Vai al negozio” dell’interfaccia amministratore si vedrà l’elenco degli store creati e, se il descrittore è troppo lungo, la lista si vedrà male.
  • Il resto dei campi compiliamolo a discrezione.

Operazioni su Apache

Ora è necessario agire sull’httpd server che viene invocato quando andiamo a visitare i negozi. Per ora sto allestendo un setup sperimentale in una sola macchina per cui mi arrangio modificando solo alcuni file (quelli di apache e il file hosts), in un ambiente di produzione occorre mettere mano anche ai DNS, se serve.

Io uso Apache 2.2 e per definire due diversi host modifico la configurazione dei VirtualHosts:

  • /etc/apache2/apache2.conf delega le configurazione personalizzate ai file sites-enabled/*, per cui creo un nuovo file /etc/apache2/sites-available/opencart che contiene la definizione dei virtual hosts:
<VirtualHost *:80>
DocumentRoot /var/www/opencart/
ServerName negozio1.opencart.com
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /var/www/opencart/
ServerName negozio2.opencart.com
</VirtualHost>

Come si vede, sto puntando alla stessa istanza di opencart, la selezione dei cataloghi è a carico di Opencart in base all’URL digitato dall’utente.

  • devo anche creare un link simbolico nella directory sistes-enabled per abilitare il virtual host
$ cd /etc/apache2/conf.d/sites-enabled
$ ln -s ../sites-available/opencart .

Alla fine riavvio Apache

$ sudo apachectl graceful

Come ultima modifica, devo dire al sistema operativo di invocare localhost quando cerco opencart.com (si può scrivere anche un tld di fantasia quando si lavora in locale, tipo opencart.tld):

127.0.0.1       negozio1.opencart.com negozio2.opencart.com

Ora devo splittare i cataloghi nel database: quando ho importato i dati dal gestionale aziendale ho avuto cura di distinguere le categorie e i prodotti in base ad una informazione company_id che ho introdotto nel database di Opencart per non perdere il legame. Ora basta che valorizzi in modo coerente category_to_store per utilizzare questa informazione per il multi store (in realtà non era necessario modificare la base dati per questo motivo, ma ho comunque dovuto aggiungere della complessità a OpenCart a partire da un gestionale che aveva parecchie complicazioni in più).

 

Volunia: un punto di vista radicalmente nuovo nei motori di ricerca

Volunia LogoHo aderito entusiasticamente come aspirante power user del progetto di Massimo Marchiori perché mi piacciono le idee nuove.

Marchiori ha prudenzialmente  evitato di fornire dettagli sul suo progetto, sicuro che Google avrebbe “sicuramente messo al lavoro un centinaio di ingegneri per lavorare notte e giorno” sulla sua idea e batterlo sul tempo.

Ha inventato HyperSearch dal quale è nato Page Rank, l’idea centrale di Google, collabora con il W3C, con il MIT di Boston e insegna Basi di dati alla Facoltà di Scienze MMFFNN dell’Università di Padova. Lieto di averlo preceduto, nel mio piccolo.

Volunia dovrebbe uscire a giorni (il contatore alla rovescia nel sito non ha le idee chiare, ma faccio tutti gli in bocca al lupo possibili).

 

Bosone di Higgs: ultimi progressi

Atlas and CMS Experiments @CERNLa particella di Dio si fa desiderare. Nell’ultima conferenza stampa di ieri, 13 dicembre (che non è il giorno più corto che ci sia come dicono ai telegiornali!), è stato affermato che se il bosone di Higgs esiste, deve avere una massa compresa tra 115 e 130 GeV. Insomma non è ancora stata scoperta, ma ci arriveranno.

L’articolo completo sul sito del CERN.

La definizione di elettronVolt e perché si misurano le masse con un’unità di misura dell’energia.