viernes, marzo 27, 2009

Pool de conexiones en websphere - Connection reset

Me tope con el problema, de que en una aplicación habia un proceso que funcionaba y al rato dejaba de funcionar...

Leyendo logs encontré este error:
com.ibm.websphere.ce.cm.StaleConnectionException: Io exception: Connection reset
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:67)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

Pero si entraba a probar la conexion funcionaba...

No estoy seguro si la conexión fue cerrada por el servidor de base de datos o por caídas de conexión, pero la conexión fue cerrada.

Cambie las propiedades del pool de conexiones para forzarlo a verificar si la conexion esta activa antes de utilizarla. Esto es ponerle un sobrecosto al ejecutar conexiones, pero nos asegura que el pool tenga conexiones disponibles y funcionales.

En propiedades avanzadas del origen de datos:Cambio la propiedad para que se prueben las conexiones:

Esto suena util si la base de datos te cierra las conexiones inactivas por cierto tiempo o si la conexion entre el servidor de aplicaciones y el servidor de base de datos es inestable.

saludos!

lunes, marzo 23, 2009

Error ORA-27102 al modificar el sga_max_size en oracle

El sabado me topé con un error en una base de datos. Un error que me complicó un poco más de la cuenta.

Necesitabamos modificar los parámetros de memoria asignada al SGA de una base de datos. Lo que hicieron fue modificar el sga_max_size de Oracle para que consumiera más memoria de la que se tenía.

El problema fue que luego de hecho el cambio y reiniciada la base de datos, la misma no levantaba.

Revisando logs encontré que me daba un mensaje:
ORA-27102: Out of memory
OSD-00022: aditional error information
O/S-Error: (OS 8) Not enough storage avaible

Resulta que la maquina donde estaba instalado el oracle era un nodo de un VMWARE y al tratar de asignar la memoria no se encontró espacio de memoria suficiente.

Hasta aca todo normal, sería solo de modificar de nuevo los parámetros y reiniciar.

Ingrese al sqlplus:
sqlplus /nolog
connect / as sysdba

trate de subir el pfile al spfile y levantar la base de datos:
CREATE spfile FROM pfile='c:/initORCL.ora';
startup

Y me dio un error:
ORA-27100 shared memory realm already exists

mmm.... la base esta levantada? probe bajarla
shutdown immediate
ORA-27101 shared memory realm does not exists

Y entonces.. ni esta arriba ni esta abajo ???! Buscando en internet encontre un par de paginas que habia una especie de bug de oracle que te dejaba la base de datos asi...

Que hice?

* baje el servicio de oracle
* baje la base con linea de comando oradim -shutdown -sid ORCL -shuttype srvc,inst
* me conecte al sqlplus
* sqlplus /nolog
* connect / as sysdba
* Cambie el pfile
* CREATE spfile FROM pfile='c:/initORCL.ora';
* Levante la base usando el nuevo pfile
*

oradim -startup -sid ORCL -starttype srvc -pfile c:/initORCL.ora

Ahi ya me pude conectar.. pero la base no levantaba automaticamente. Lo siguiente es lo que creo que hay que hacer.. pero no quise hacerlo porque ya eran las 4:00am... y debiamos estar con la base levantada en produccion.. (ohh... fue en una base de datos en produccion).-

* Borrar el servicio de oracle oradim -delete -sid ORCL
* Recrear el servicio de oracle oradim -new -sid ORCL -pfile c:/initORCL.ora

y ya....

Saludos!

Ref.
http://www.dba-oracle.com/t_ora_27100_shared_memory_realm_already_exists.htm


http://newsgroups.derkeiler.com/Archive/Comp/comp.databases.oracle.server/2005-10/msg01447.html

jueves, febrero 26, 2009

Tráfico y Descentralización

Yo vivo en Antigua Guatemala (a 45km de la capital) y trabajo en la zona 9 de la capital de Guatemala. Trabajo en la capital porque en Antigua no se consiguen la mismas oportunidades que en la Capital. La mayoría de "buenos" trabajos se encuentra en la capital y centralizados principalmente en las zonas 9 y 10.

He viajado a la capital durante 12 o 13 años asi que el tema del viaje no me afecta. Pero en mi recorrido paso por una de las arterias principales de la ciudad y esto me afecta enormemente en mi viaje.

Ultimamente el tema de tráfico se ha vuelto cada vez mas complicado, tanto que ahora incluso se encuentra congestionamiento de vehículos entrando a la capital desde antes de las 5:50am.

Como la mayoría de conductores paso mucho tiempo esperando que fluya el tránsito. Este tiempo me ha servido para reflexionar sobre este tema. Durante este tiempo te pones a pensar y proponer posibles rutas alternas, posibles ampliaciones de rutas y algunas otras alternativas para resolver el problema.

El problema que veo es que a mediano-largo plazo, no importa que tanto se amplien las carreteras y que tantas rutas alternas se vayan creando el congestionamiento continuará. Esto porque la mayoría de empresas "corporativas" se encuentran en la misma zona. Para evitar problemas de congestionamiento a largo plazo será necesario empezar a establecer políticas de "descentralizacion" en las que se promueva la creación de nuevas areas industriales, corporativas o comerciales.

La mayoría de las personas vive en "ciudades dormitorio" en las afueras de la capital y salen a sus trabajos en el centro (centro y zonas 9-10) de la ciudad.

El gobierno debería de fomentar la creación de zonas en las que las empresas y corporaciones puedan construir edificios, comercios y que no esten precisamente dentro de el centro de la ciudad.

Mi propuesta es crear varias de estas zonas, una en San Lucas Sacatepequez (para quienes ingresan de Occidente) otra cerca de Amatitlán, otra por Carretera al Atlantico (en Palencia?), otra en Pinula... de manera que flujo de personas a su trabajo sea hace "afuera" de la ciudad.

No estoy inventando el agua azucarada... En Santa Fé Mexico se ve algo parecido... en Costa del Este en Panamá también.

Como promover esto? Pues el gobierno debería de buscar zonas con características que permitan contruir varios edificios, debería de proveer infraestructura como carreteras (planificadas y amplias), transporte público y servicios básicos. El gobierno podría tambien de negociar con las TELCO's grandes para que ellas se encarguen de crear enlances a Teléfono, Internet y estos servicios talvez con anillos de fibra optica.


Habría que promover la creación de centros comerciales y de edificios. ¿como hacer esto con dinero de la empresa privada? Podrían eliminarse impuestos de construccion, podría incluso pensarse en que los gastos de construccion en estas areas puedan ser deducibles de impuestos. El area debe ser grande, para que no quede como un par de edificios sino que sea una "ciudad completa" donde los inquilinos se seintan cómodos, seguros y que tenga accesibilidad para los empleados, los ejecutivos y este interconectada (aunque sea digitalmente) con la ciudad principal (la capital).

Es bastante inversión y es algo a largo plazo... pero.. imaginen a toda la gente de Villa Nueva, Villa Canales y Petapa viajando hacia amatitlan en lugar de hacia el centro... y la gente de Mixco hacia San Lucas... Eso segmentaría el flujo de automoviles hacia el centro disminuyendo bastante el trafico en zonas como el trebol, liberación y reforma.

Se motivaría la inversion de capital nacional y extranjero en infraestructura, se proveería de nuevos medios de trabajo a la gente de departamentos aledaños a la capital (Antigua, Chimaltenango, Escuintla, Santa Rosa, El Progreso).

Creo que es hora de que empecemos a planificar soluciones integrales a los problemas y que empecemos a "fundar" nuevas cidudades diseñadas para la realidad actual.

Esta es una de las varias ideas que van surgiendo al respecto... tambien se puede pensar en ampliar carreteras, en promover el transporte colectivo (añadiendo seguridad... ), en hacer trenes de alta velocidad... en un metro (o transmetro)... incluso en planificacion familiar... (para que no seamos tantos. ) ... seguro hay otras alternativas...

¿más ideas?

martes, febrero 17, 2009

Hackearon www.maestrosdelweb.com !

Hoy empece el día con mi lectura habitual de blogs y me tope con la sorpresa de que hackearon el sitio de Christian Van Deer www.maestrosdelweb.com. Al parecer robaron la administracion del dominio en el dns. Este sitio tiene muchas visitas y un excelente ranking en los buscadores. Segun he leido será un poco complicado hacer que le devuelvan el sitio e inclusive tendra que utilizar abogados para gestionar esto.

No acostumbro escribir sobre lo que leo en otros blogs porque igual alguien ya lo publico, pero esta noticia creo que vale la pena que se divulgue lo mas posible para "presionar" hasta donde sea posible para que GoDaddy devuelva el dominio al dueño original.


Cuando inicié a trabajar en ambientes Web fui durante bastante tiempo un asiduo lector de las listas de correo de esta página, de sus articulos y ahora de los blogs.

Sea cual sea la razón por la cual perdió su sitio esperemos que recupere rapido su dns y que le afecte lo menor posible.


http://dumitraqui.guateblogger.com/2009/02/maestros-del-web-foros-del-web.html

http://www.aeromental.com/2009/02/16/maestros-del-web-y-foros-del-web-quedaron-offline/

viernes, febrero 13, 2009

Google Sync sincroniza Contactos

Hace algunos días leí en blogs que google sync ahora ya sincroniza contactos. La funcionalidad esta buenísima, con eso me aseguro de tener un backup de mi libreta de direcciones en mi cuenta de gmail.

El tema de los contactos siempre ha sido complicado porque tengo unos en el "outlook (o thunderbird)" otros en el telefono y otros en mi mail.. Ahora ya sincronizo entre mi telefono BlackBerry y mi gmail. Hace tiempo estuve usando el zindus para thunderbird... tendre que retormarlo ya que este sincroniza thunderbird con gmail.

Esto no es tan util para quienes tiene exchange y sincronizan ahi todo, pero en mi caso esta perfecto.

Para descargarlo simplemente entre a http://m.google.com/sync desde mi blackberry


saludos!

jueves, febrero 05, 2009

Instalar un certificado SSL en un IBM Websphere 6.1

Mas de alguna vez me he topado con el problema de instalar un certificado SSL en Java. Hoy nos toco instalarlo en un Was 6.1 (Websphere Application Server de IBM).

¿porque necesitaría instalarlo?

Porque tengo una aplicacion java instalada en el WAS que necesita consumir un servicio proveído por otra maquina mediante SSL, por ejemplo: consumir un webservice en una direccion https, crear usuarios en un LDAP, leer el contenido de un https.

¿porque es complicado?

Realmente no es muy complicado pero es un poco dificil conseguir documentacion ya que la mayoría de documentación relacionada esta orientada a Tomcat, o a configurarlo en un JVM usando herramientas como el keytool. Ademas que las busquedas en google regularmente te refieren a como instalar un SSL en tu WAS o a como conectar tu WAS a un LDAP con SSL.

¿que error me da?

Si trabajo con conexiones SSL sin tener los certificados registrados, me aparecen errores como:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Could not find trusted certificate

Handshake terminated SSL engine: CLOSED at com.ibm.ws.webservices.engine.transport.http.HttpOutboundChannelConnection.connect(HttpOutboundChannelConnection.java:752) at com.ibm.ws.webservices.engine.transport.http.HttpsOutboundChannelConnection.connect(HttpsOutboundChannelConnection.java)

¿que debo hacer?
La idea es encontrar el lugar de almacenamiento de los certificados en JVM (keystore) y registrar los certificados de las urls en las que confiamos. Es decir si me voy a conectar a https://banco.com.gt debo de instalar el certificado de banco dentro de mi JVM.

En un tomcat buscaría el JRE que se esta ejecutando e instalaría el certificado: "keytool -keystore cacerts -trustcacerts -import -file xxx.cer".

pero para el WAS 6.1 no puedo hacerlo de esa manera.

WAS 6.0 funciono usando el keytool de la JRE que viene en WAS.

¿que debo hacer?

1. ir al sitio del banco y desde el explorador descargar el certificado.


2. En el sitio administrativo de WAS, buscar la opcion de "almacenes de claves" y desde ahi configurar los certificados:

Seleccionar las opciones de certificados firmados

y ahi busco el certificado default para el Nodo/celda en la que estoy trabajando dentro de WAS.Aqui agrego el archivo CER generado y con esta información ya dejo registrado el certificado de banco como confiable (trusted).



Luego de esto se reinicia el WAS y las aplicaciones ya encuentran los certificados como confiables y establecen la conexion.

saludos!

martes, octubre 14, 2008

Frankenstein se queja (Manuel José Arce)

Incluyo un hermoso poema de Manuel José Arce, Guatemalteco.
se llama Frankenstein se queja
es del libro Episodios del vagón de carga (20.05.1971)
-------------------------------

HASTA que un día llega
y estoy harto del miedo.

Harto de ver el miedo
y de vivirlo.
De sentir su jalea entre las manos,
de encontrarlo en los labios.

Y da asco.

Me revuelve las tripas ese miedo
que voy hallando en todas las miradas.

Repito: me da asco.

Es un miedo a vivir
que tiñe de amarillo la sonrisa y el canto.

Que quiebra las palabra y tuerce los caminos,
pone sordina al grito sublevado
y edulcora lo libre de lo amargo.

En un parque, una vez,
yo fui dueño de un banco.
Enfrente, floreció una jacaranda.
Detrás, vociferaban los borrachos.
Era un banco muy duro
y muy mojado.
Aquella madrugada puse en él mi bandera,
lo declare mi territorio exacto.
Lo inauguré soñando.

Mas llegaron las hordas amarillas del miedo
y arrasaron
con mi bandera, con mi jacaranda,
con mi sueño encendido
y con mi banco.

Llegaron.

Yo vi teñirse de amarillo pálido
primero una sonrisa,
después una palabra,
luego un beso desviado.

Al final se ahogaron los sonidos,
las horas y los días, los versos y los cantos,
todo
después de todo
se fue hundiendo
entre un charco amarillo, acobardado.

Detesto el miedo.
Me da asco.
Me revuelve las tripas.
Sin embargo
lo encuentro en todos lados.

lunes, agosto 04, 2008

Particularidades del desarrollo Web

Estoy investigando un poco sobre las tecnicas de desarrollo web,
especialmente en ambiente java. Para iniciar, estoy tratando de
identificar las necesidades que surgen del desarrollo web y como se han
ido solventando.

Este primer articulo es sobre las particularidades generales del
desarrollo web y servirá de base para el resto de artículos.

El desarrollo de aplicaciones en ambiente web se diferencia de otros
por las peculiaridades impuestas por el protocolo HTTP. Este protocolo
maneja una logica de request (solicitud) y response (respuesta). El
cliente, en este caso el explorador, hace una solicitud de información
al servidor y el servidor se encarga de responderla. Luego de recibida
la respuesta, se cierra la conexion.

Este desarrollo frecuentemente necesita mantener estado. Para esto
se usan las cookies, que es información que un servidor puede almacenar
en el sistema cliente. Son realmente archivos de texto pequeños donde se
almacenan llaves que luego se hace match con el servidor. Esto le
permite a las aplicaciones Web instituir la noción de "sesión", y
también permite rastrear usuarios ya que las cookies pueden guardarse en
el cliente por tiempo indeterminado.

Los primeros servidores que publicaron información fueron servidores
estáticos, que recibían solicitudes de páginas Web y retornaban
contenidos en formato HTML. Al principio se necesito que que
diseñadores o programadores de HTML cambiaran constantemente el
contenido de las paginas para mantener temas como tasas de cambio o
resultados de las empresas que publicaban información.

El desarrollo de aplicaciones en entorno Web nace así, de la constante
necesidad de publicación de contenido en un ambiente Web. Estos
contenidos se volvieron cada vez más variables y requerían de una
actualización constante. En algunos casos surgió también la necesidad de
no solo publicar información sino de interactuar con los usuarios de la
Internet solicitando información de consultas y personalizando la
información a mostrar. De ahí la necesidad de automatizar esta
publicación de contenido.

El desarrollo de aplicaciones Web tiene algunas particularidades que hay
que tomar en cuenta al momento de desarrollar una aplicación.

  • Históricamente el desarrollo de aplicaciones Web a tomado como
    premisa trabajar con enlaces en los que se asumen bajas velocidades a
    Internet. Últimamente los accesos a Internet son cada vez mejores en
    ambientes corporativos pero también empiezan a surgir enlaces a Internet
    desde los móviles con anchos de banda no tan grandes.
  • Las aplicaciones desarrolladas para ambiente Web son accedidas por
    clientes anónimos en los que es difícil instalar aplicaciones adicionales.
  • Las aplicaciones desarrollas para ambiente Web deben ser accedidas
    por múltiples programas clientes y en diferentes sistemas operativos.
  • Este tipo de desarrollo no mantienen conexiones activas a los
    sistemas backoffice del cliente. Se manejan mediante un envío y
    respuesta de información (request & response).
  • Las aplicaciones Web no tienen control sobre los recursos de la
    computadora cliente.
  • Los clientes que utilizan aplicaciones Web son anónimos y
    heterogéneos lo que limita la capacidad de poner requisitos de software
    y hardware.

Estas premisas se abordan de diferente manera según la tecnología que se
esta trabajando.

En los próximos artículos voy a ir escribiendo pequeños analisis de lo
que la experiencia me ha enseñado sobre las diferentes tecnologías que
se han ido desarrollando sus ventajas y desventajas.

En terminos generales lo que quiero transmitir en estos articulos lo pueden ver aca: Artículo de intenciones YouTube


saludos!

miércoles, junio 11, 2008

Ahorro de Combustible: Carros Hibridos o Electricos

Hace como 2 años pase a la toyoya a ver carros, tenian un carro hibrido. El vendedor me lo mostro y se miraba muy bonito, por fuera era como ver un Corolla.

Hace 2 años no estaba tan cara la gasolina, me quede pensando en ese carro y en las posibilidades que ofrece.

Es un carro que recorre alrededor de 100km/galon y tiene casi la misma potencia de un yaris u otro carro.

¿porque no comprar un carro así ahora que el combustible esta tan caro?

Primero, estos carros tienen un precio mas alto que uno similar de gasolina. Por ejemplo un corolla ahora esta en aproximadamente 130mil quetzales. y este carro estimo que estará arriba de los 170mil.

La diferencia no es tanta... pero y los repuestos? solo en la agencia. Ahi los precios son mas caros.
Y si se arruina algo? tambien.

¿Como podríamos hacer que este concepto funcionara?
Si el gobierno esta interesado en una politica de reduccion de gastos de combustible podría hacer una ley para que los carros hibridos no paguen impuestos (creo que se pagan alrededor del 30% actualmente).
Si los carros hibridos no pagan impuestos... 170mil por 0.7 son 119mil. Un poquito menos que un corolla... mas caro que un yaris, pero no tanto.

Si sos una persona que recorre bastantes kilometros, creo que un carro que haga 100km/galon, te va a ahorrar bastante plata y podes recuperar la inversion.

Pero y los talleres?

Al reducir los impuestos se motivaria el ingreso de carros de este tipo y eso crearia un nicho de mercado para mecanicos y mecanicos/electricos para abrir sus talleres.
Esto se podría ademas motivar dando cursos en el intecap para reparar estos carros.

Supongo que los japoneses de Toyota estarían muuuy felices de colaborar con instructores ya que una medida de esta puede favorecerlos bastante en las ventas.

Supongo que nissan o mazda tendran soluciones similares.

Creo que si se quitan los impuestos por unos 5 años será suficiente. y en 5 años, tendremos tecnicos, tendremos demanda y ya no sera necesario hacer esto.

Tendremos entonces un pais menos dependiente del petroleo.

¿que les parece?

carcasco.-

Referencias:
http://es.wikipedia.org/wiki/Toyota_Prius
http://www.univision.com/content/content.jhtml?cid=466721

miércoles, enero 30, 2008

OutOfMemoryError en Visual Basic 2005 Expresss por un WebBrowser

Tengo una aplicación, que cuando esta sin uso, activa un Timer.

La aplicación tiene un WebBrowser desde donde muestra varias paginas html con publicidad.

Cada N segundos, cambia el html por otro.

Resulta que me reportaron que luego de tener la aplicación mostrando los htmls durante la noche, en la mañana aparecía sin funcionar.

Luego de revisar bien el problema, encontre que me estaba dando un mensaje de System.OutOfMemoryError.

Revisando las ejecuciones, me di cuenta que con cada WebBrowser1.Navigate(url) la aplicación empezaba a utilizar mas y mas memoria …

Lo primero que paso por mi mente fue… el Garbage Collector… me puse a buscar como llamar al GB… como darle dispose o destroy …

Al final encontre que hay que darle dispose… que hay que quitarlo del form.. y hay que darle new y volverlo a agregar…. Pero… tampoco funciono.

Luego de varias desesperadas pruebas encontre que el problema es que las paginas html que estaba mostrando… eran… mht… pero eso no me daba problemas antes… el problema es que las paginas mht tienen llamadas a SWF flash…

La solucion… volver las paginas de publicidad a html… aunque tengan flash.. no fallán..!

Saludos!

miércoles, diciembre 12, 2007

Tildes, Charset, Linux y JSP

Hoy me encontre con un pequeño problema, hay una aplicación que hicimos en jsp hace un tiempo. Ha estado funcionando bien en mis ambiente de desarrollo y en algunos otros ambientes de producción. Pero en uno de los servidores de producción la aplicación dejo de mostrar "ñ" y tildes.
Este servidor es un RedHat que yo no instalé.

La configuracion del servidor es:
LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"

Lo supe viendo el archivo /etc/sysconfig/i18n

Agregué estas lineas al inicio de mis jsp para confirmarle al browser que la pagina era en español. Ahora esta funcionando ok.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

saludos!