jueves, abril 16, 2009

Error WSWS3047E al consumir un webservice en Rational Web Developer

Relacionado al Post Anterior, estabamos tratando de consumir un webservice desde el Rational Web Developer de IBM.
Cuando consumiamos el webservice desde visual basic o desde el SoapUi, lograbamos consumirlo perfectamente, pero al tratar de consumirlo desde el RWD6 nos daba error.

El problema específico que estabamos teniendo con este webservice es que luego de invocar al mismo, al traer los resultados de la ejecución nos estaba dando este mensaje:


WebServicesFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultString: org.xml.sax.SAXException: WSWS3047E: Error: No se puede deserializar el elemento cod_Cuenta del bean dataTransferObject.customerABE.customerDomain.framework.scl.tmmas.com.RegistroComercialDTO.
faultActor: null
faultDetail:

El servicio se ejecutaba, es decir, la llamada fue correcta y se hacian las acciones del servicio. Pero no lograbamos obtener el objeto que trae los resultados obtenidos de la ejecución. El servicio no fue desarrollado por nosotros y no teniamos acceso tampoco a los logs del servidor (del servicio) como para poder identificar el problema. Esto nos hizo perder mucho tiempo en pruebas infructuosas.

Instalamos y probamos el TCPMon para rastrear el problema y encontramos que la respuesta del webservice si se estaba enviando por la red, pero que (como dice el error) no se podía parsear. Cambiamos los wsdl con tipos de datos String asumiendo alguna posible incompatibilidad de tipos entre el servicio y el cliente. No funcionó.

Los servicios fueron desarrollados sobre WebLogic.

Luego de algunas investigaciones, encontramos que al parecer habia cierta información que se enviaba en la respuesta que no era acorde a las especificaciones RFC de XML. Y que esto es lo que estaba dando el problema.

http://www-01.ibm.com/support/docview.wss?uid=swg21220377


Procedimos a cambiar nuevamente el wsdl indicandole la propiedad
elementFormDefault="unqualified" al wsdl y recrear el cliente y apartir de ahi empezamos a consumir correctamente los servicios.

El unqualified es porque el weblogic no genera los namespaces usando las especificaciones RFC al 100% mientras que el websphere sí.


saludos!



miércoles, abril 15, 2009

TCPMon

Ayer tuve que trabajar en un problema complicado relacionado con un webservice. No lograba encontrar el error. Probaba el servicio desde unas aplicaciones en .net y funcionaba correctamente, pero al probarlo desde mi aplicación java, enviando los mismos parametros no lograba hacerlo funcionar.

Leyendo en internet encontré un producto buenísimo que se llama TCPMon. Este me sirvió para poder ver los paquetes enviados por la red, como un sniffer. Con esto pude rastrear lo que estaba enviando al WebService y lo que me contestaba exactamente y así logré encontrar el error.

Yo estaba consumiendo un servicio en el SERVERXXX con el puerto 7103.

Lo que hice fué configurar para que TCPMon actuara como listener y en un puerto 7199 y apuntara a SERVERXXX:7103.
Cambie mi aplicacion para usar localhost:7199 y pude rastrear todos los mensajes que pasaban por la red.

Me parece una aplicacion muy util para temas de webservices, aplicaciones que leen datos de sockets, analisis de paquetes http.

saludos!

sábado, abril 04, 2009

Configurar Memoria en un Websphere application server 6.1 (WAS6.1)

Como Configurar el tamaño de la Memoria en un Websphere application server 6.1 (WAS6.1)

Hace algún tiempo tuve que reconfigurar la configuración de la memoria de un WAS. Un tema "relativamente" facil. Hoy lo haré de nuevo, les cuento los detalles:

Creo que por default el servidor asigna un rango de 256MB a 512MB.


Entro al administrador y busco el servidor de aplicaciones que tengo configurado.


Busco las opciones del JVM, donde dice "definición de procesos". (mi was esta en español :s )

y luego seteo el tamaño de memoria (heap) maximo e inicial.

aplico los cambios y luego bajo el servidor. C:\IBM\WebSphere\AppServer\bin>stopserver server1 ADMU0116I: La información de la herramienta se está anotando en el archivo C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\stopServer. log ADMU7702I: Dado que server1 se ha registrado para ejecutarse como un servicio de Windows, la petición de detener este servidor se realizar deteniendo el servicio de Windows asociado. ADMU0116I: La información de la herramienta se está anotando en el archivo C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\stopServer. log ADMU0128I: Iniciando herramienta con el perfil AppSrv01 ADMU3100I: Leyendo la configuración para el servidor: server1 ADMU3201I: Se ha emitido una petición de detención del servidor. Esperando el estado de detención. ADMU4000I: La detención del servidor server1 ha finalizado.


Reinicio el servidor:
C:\IBM\WebSphere\AppServer\bin>startserver server1 ADMU0116I: La información de la herramienta se está anotando en el archivo C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\startServer .log ADMU7701I: Dado que server1 se ha registrado para ejecutarse como un servicio de Windows, la petición de iniciar este servidor se realizará iniciando el servicio de Windows asociado. ADMU0116I: La información de la herramienta se está anotando en el archivo C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\startServer .log ADMU0128I: Iniciando herramienta con el perfil AppSrv01 ADMU3100I: Leyendo la configuración para el servidor: server1 ADMU3200I: El servidor se ha iniciado. Esperando el estado de inicialización. ADMU3000I: Servidor server1 abierto para e-business; el ID de proceso es 2920

Luego de esto... listo! el server tiene nueva memoria.


Troubleshooting
Cuando hice esto hace algún tiempo, tuve el problema de que por alguna extraña razon el servidor no levanto por falta de memoria. Es decir, le estaba asignando mas memoria de la que el servidor tenía. (esto probablemente lo detalle en un post luego del cambio que haga hoy ;)
Esto me provocó que no pudiera entrar al administrador de was a configurar nuevamente la memoria.

Lo que hice fue buscar el archivo server.xml C:\IBM\WebSphere\AppServer\profiles\AppSrv01\config\cells\carloscNode01Cell\nodes\carloscNode01\servers\server1\server.xml
Y modificar la configuración de la memoria desde el archivo de texto:
initialHeapSize="512" maximumHeapSize="1024"

luego reinicie el server y funcionó de nuevo ;)

saludos!

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!