dimecres, 20 de novembre del 2013

Problemes amb els estils de newsletters a Gmail

A Amidasoft estem desenvolupant el portal d'Exposicions Itinerants de la Diputació de Girona (http://www.ddgi.cat/exposicions). Disn d'aquest portal, hi ha la utilitat d'enviament de newsletters amb les darreres novetats del mateix.

Fins aquí tot correcte, però amb les darreres proves, els usuaris han detectat que a Gmail (i altres webmails, com el OWA), tot el text apareix en color blau.

Debugant el sistema, hem vist que l'email que s'envia i el que mostra el Gmail són diferents: al fitxer origen, totes les etiquetes tenen un style="color:black" , mentre que, usant el Firebug, es pot comprovar que aquest atribut no apareix al mail rebut.

He trobat a http://www.emailonacid.com/blog/details/C13/12_things_you_must_know_when_developing_for_gmail_and_gmail_mobile_apps que el Gmail ignora l'atribut de color si aquest és "black", "#000" o "#000000".

Per tant, la solució és fàcil: canviar el style="color:black" per style="color:#010101" 

divendres, 14 de juny del 2013

Condicions a Oracle ignorant accents i majúscules

Moltes vegades succeeix que, en anar a escriure les condicions d'una consulta, aquestes es fan sobre camps de text que poden contenir accents, majúscules, minúscules, etc. i no es vol que aquests elements distorsionin els resultats.

Una opció (en ORACLE) és usar la funció translate.

Aquesta funció rep tres paràmetres:

  1. La cadena a tractar.
  2. Un conjunt de caractèrs a substituir.
  3. Els caràcters pels que substituir.
El que fa és, sobre la cadena a tractar, per cada ocurrència de (2), busca el caràcter que està a la mateixa posició de (3) i el canvia.



Exemple:


    SELECT nom
      FROM usuaris o
     WHERE TRANSLATE(UPPER(o.nom),'ÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛ','AEIOUAEIOUAEIOU')
      LIKE TRANSLATE(UPPER('%lluis%'),'ÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛ','AEIOUAEIOUAEIOU') ;

Aquesta consulta retorna les files que tenen el camp o.nom amb valors: lluis,lluís, Lluís, Lluïs, etc.

dijous, 23 de maig del 2013

Error 17002 d'Oracle desde Tomcat

Avui hem trobat un nou problema: en una aplicació executant-se sobre Tomcat 7, usant les llibreries de persistència EclipseLink, un cop fet loguin es quedava tot penjat.

Mirant el catalina.out hi havia els missatges:


[EL Info]: 2013-05-22 23:24:06.515--ServerSession(9509498)--EclipseLink, version: Eclipse Persistence Services - 2.3.2.v20111125-r10461 
[EL Info]: 2013-05-22 23:24:06.624--ServerSession(9509498)--file:/usr/local/apache-tomcat-7.0.40/webapps/BopGestioUsuaris/WEB-INF/classes/_BopGestioUsuarisPU login successful 
[EL Info]: 2013-05-22 23:39:34.411--UnitOfWork(27713589)--Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query. Error was: Exception 
[EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseExceptionInternal 
Exception: java.sql.SQLException: Excepción de E/S: Expiró el tiempo de conexión 
Error Code: 17002Call: SELECT COUNT(CODIENTITAT) FROM ENTITAT WHERE (? = ?)        bind => [2 parameters bound]Query: ReportQuery(referenceClass=Entitat sql="SELECT COUNT(CODIENTITAT) FROM ENTITAT WHERE (? = ?)").

Era un error curiós, ja que en reiniciar el Tomcat, funcionava durant una estona correctament.
Buscant informació, hem trobat que això és degut a un error de xarxa, ja que no és capaç de trobar el servidor de base de dades.

Solució: modificar el fitxer persistence.xml per a modificar la URL de connexió i especificar el nom complet del servidor.

dimecres, 30 de gener del 2013

Redirigir wget cap a la sortida estàndard

De vegades és útil fer que el wget, enlloc d'escriure el resultat de la web a descarregar a un fitxer, l'escrigui per la sortida estàndard. Darrerament m'ha estat d'utilitat fer-ho en posar un wget a una tasca CRON, ja que així rebo el resultat per mail.
Simplement cal afegir el paràmetre -O -

Exemple:

 
 wget -q -O - http://www.amidasoft.com  

divendres, 11 de gener del 2013

Plegat de codi amb NetBeans (code-fold)

L'IDE NetBeans permet ocultar talls de codi que no són importants per tal de permetre centrar l'atenció en aquells que sí que ho són.
Per a aconseguir-ho, únicament cal embolcallar el codi a plegar amb els comentaris:



// <editor-fold defaultstate="collapsed" desc="descripció-que-es-mostrarà">
EL CODI QUE ES VOL OCULTAR
// </editor-fold>