tag:blogger.com,1999:blog-58602682024-02-20T04:01:01.611-06:00Blog de carcascoBlog pensado para escribir de algunos temas que me interesan: Informatica, Desarrollo web, genealogía, etc.carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.comBlogger36125tag:blogger.com,1999:blog-5860268.post-20092248212038126422014-07-16T14:46:00.001-06:002014-07-16T14:46:11.492-06:00YAWOT... Yet... another Wine Office Tutorial :pSi... casi no publico nada... pero cada año vuelvo a poner el Wine con Office y siempre es lo mismo... olvido como lo hice :p<br />
<br />
Asi que me decido a hacer mi YAWOT :o<br />
YAWOT = Yet.. another wine office tutorial = si... otro tutorial de instalacion de office<br />
<br />
En fin... pongo en limpio mis notas pero para ubuntu 14.04:<br />
<br />
1. descargar e instalar wine:<br />
<br />
<blockquote class="tr_bq">
sudo add-apt-repository ppa:ubuntu-wine/ppa<br />sudo apt-get update<br />sudo apt-get install wine1.7</blockquote>
<br />
2. borrar instalaciones previas:<br />
<blockquote class="tr_bq">
rm -rf .wine</blockquote>
<br />
3. Crear prefijo y ambiente win32<br />
<blockquote class="tr_bq">
export WINEARCH=win32 WINEPREFIX=~/wineoffice<br />winecfg</blockquote>
4. Instalar WineTricks<br />
<br />
<blockquote class="tr_bq">
cd ~/wineoffice<br />wget http://www.kegel.com/wine/winetricks<br />chmod +x ./winetricks</blockquote>
5. Prepara requisitos:<br />
Descargar msxml3.msi de http://download.cnet.com/Microsoft-XML-Parser-MSXML-3-0-Service-Pack-7-SP7/3000-7241_4-10731613.html<br />
<blockquote class="tr_bq">
y copiarlo en /home/USER/.cache/winetricks/msxml3</blockquote>
<br />
6. Ejecutar winetricks e instalar los requisitos:<br />
<blockquote class="tr_bq">
./winetricks</blockquote>
<br />
7. Desde la opcion "Install a Windows DLL or Component" instalar estos componentes:<br />
Components are selected: msxml3, dotnet20, gdiplus, riched20, riched30, and vcrun2005<br />
<br />
8. Instalar Fonts:<br />
<blockquote class="tr_bq">
wget http://imaginux.com/repos/pool/renzo/msttcorefonts-offline_1.0-0ubuntu1_all.deb<br />sudo dpkg -i msttcorefonts-offline_1.0-0ubuntu1_all.deb</blockquote>
<br />
9. Ejecutar el setup e instalar:<br />
<blockquote class="tr_bq">
wine setup.exe</blockquote>
<br />
Fuentes:<br />
<br />
<ul>
<li>http://www.ubuntubuzz.com/2011/09/install-microsoft-office-2007-in-ubuntu.html</li>
<li>http://community.linuxmint.com/tutorial/view/1325</li>
</ul>
<br />
<br />
Post anteriores de lo mismo:<br />
<br />
<ul>
<li>http://carcasco.blogspot.com/2013/10/instalar-office-2007-en-linux-mint-15.html</li>
<li>http://carcasco.blogspot.com/2012/04/instalar-office-2007-en-ubuntu-1204.html</li>
</ul>
<br />
saludos!<br />
<div>
<br /></div>
carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com0tag:blogger.com,1999:blog-5860268.post-90849068121140413002014-04-02T15:14:00.000-06:002014-04-02T15:14:39.211-06:00Buscar un texto en un archivo grande - LINUXPor error borré una vista de un esquema en mysql. :D<br />
<br />
Tome mi backup para buscar el script y cuando trate de abrirlo... se puso lento porque era muy grande.<br />
<br />
Lo que quería era encontrar el script de la vista xxx_vw en un txt gigante.<br />
<br />
Como lo solucioné:<br />
<br />
<ul>
<li>Busque el número de linea que tiene la creación de la vista con grep: </li>
</ul>
<blockquote class="tr_bq">
<ul>
<li>grep -nr xxx_vw mibackup.sql</li>
</ul>
</blockquote>
<ul>
<li>Teniendo el número de linea, ej. 4108</li>
<li>Movi el fragmento del archivo a otro archivo, para tener algo manejable: </li>
</ul>
<blockquote class="tr_bq">
<ul>
<li>sed -n '4100,4200p' backup.sql > salida.txt</li>
</ul>
</blockquote>
<ul>
<li>Luego ya lo abri salida.txt con gedit y listo! ahi estaba mi script.- </li>
</ul>
<br />
<br />
saludos!<br />
<div>
<br /></div>
carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com0tag:blogger.com,1999:blog-5860268.post-12124493183894808822013-10-03T18:08:00.002-06:002013-10-03T18:08:44.427-06:00Instalar Office 2007 en Linux Mint 15Hace más de un año escribi esto: <a href="http://carcasco.blogspot.com/2012/04/instalar-office-2007-en-ubuntu-1204.html">http://carcasco.blogspot.com/2012/04/instalar-office-2007-en-ubuntu-1204.html</a><br />
<br />
Ahora lo actualizo sobre la versión que tengo actualmente Linux Mint 15 con Office 2007:<br />
<br />
Instalé Wine<br />
<blockquote class="tr_bq">
sudo add-apt-repository ppa:ubuntu-wine/ppa<br />sudo apt-get update<br />sudo apt-get install wine1.7</blockquote>
<br />
Luego seguí con esta guia: <a href="http://community.linuxmint.com/tutorial/view/1325">http://community.linuxmint.com/tutorial/view/1325</a><br />
<br />
Realmente solo paso 1 y paso 2 porque no apliqué los parches.<br />
<br />
Hay que mencionar que solo instalé MSProject porque es lo único que necesitaba. Funcionó a la primera.<br />
<br />
saludos!carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com0tag:blogger.com,1999:blog-5860268.post-46538024833132725712013-09-02T10:35:00.000-06:002013-09-02T12:11:13.380-06:00Configurar el monitor externo como primarioRecién formateé el fin de semana y hoy que vengo a la oficina y pongo mi monitor externo tengo el problema de configurar el monitor externo como primario. (Instalé mint 15)<br />
<br />
Este es un problema sencillo que me ha pasado varias veces y siempre me toca volver a investigar porque lo olvido :D Así que decidí escribirlo para cuando lo vuelva a olvidar.-<br />
<br />
Tengo mi laptop y un monitor externo, pero uso el monitor del lado izquierdo y la laptop del lado derecho, el problema es que el panel sale en la pantalla de la laptop y yo uso principalmente mi monitor externo.<br />
<br />
Lo que he hecho es ver con xrand cual es el monitor externo:<br />
<blockquote class="tr_bq">
carcasco@ccc ~ $ xrandr -q<br />
Screen 0: minimum 320 x 200, current 3046 x 1050, maximum 32767 x 32767<br />
LVDS1 connected 1366x768+1680+282 (normal left inverted right x axis y axis) 256mm x 144mm<br />
1366x768 60.0*+<br />
1360x768 59.8 60.0 <br />
1024x768 60.0 <br />
800x600 60.3 56.2 <br />
640x480 59.9 <br />
<span style="background-color: yellow;">VGA1</span> connected 1680x1050+0+0 (normal left inverted right x axis y axis) 470mm x 300mm<br />
1680x1050 59.9*+<br />
1280x1024 75.0 72.0 70.0 60.0 <br />
1280x960 60.0 <br />
1024x768 75.1 72.0 70.1 60.0 <br />
832x624 74.6 <br />
800x600 72.2 75.0 60.3 56.2 <br />
640x480 72.8 75.0 66.7 60.0 <br />
720x400 70.1 <br />
HDMI1 disconnected (normal left inverted right x axis y axis)<br />
DP1 disconnected (normal left inverted right x axis y axis)</blockquote>
<br />
y luego setear desde terminal que el VGA es el primario.<br />
<blockquote class="tr_bq">
xrandr --output VGA1 --primary</blockquote>
referencias:<br />
http://ubuntuforums.org/showthread.php?t=1458743<br />
<br />
--<br />
Update 12pm GMT-6:<br />
cuando reinicié ya no funcionó, asi que hice un archivo en mi home llamado <i>setoutput.sh </i>con el siguiente contenido:<br />
<blockquote class="tr_bq">
#!/usr/bin/env sh<br />xrandr --output VGA1 --primary</blockquote>
le di permisos de execute<br />
<blockquote class="tr_bq">
chmod +x setoutput.sh </blockquote>
y de último lo puse en mis aplicaciones de startup de mint.<br />
<br />
saludos! carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com3tag:blogger.com,1999:blog-5860268.post-86241987512638896772013-01-21T09:09:00.001-06:002013-01-21T09:10:12.863-06:00Configurar 2 certificados SSL en un mismo ApacheTengo un servidor Apache funcionando con su nombre de dominio, un SSL y un proxypass hacia una máquina interna en la red que tiene la aplicación. Esto funciona bien desde hace tiempo.<br />
<br />
Resulta que se hizo una aplicación nueva que debe estar en SSL con su propio dominio y certificado SSL.<br />
<br />
Para configurar el dominio no hay problema solamente agregué un VirtualHost por nombre y funcionaba ok. (uno así para HTTP y otro para HTTPS usando los certificados)<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglUhMIZaZHIGW3sX9PWJitwW_d5afOvhuaC3N6T2NJxOJlIFHkmSsgqXr-IZMTpvdfEyQZ1WuuNAWfqTPloXOUdSoSRcLIMOAsE2Ip0VIPMMEFv-37CJHKQP_Pgqb_9PqzCnYoqw/s1600/uno.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="269" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglUhMIZaZHIGW3sX9PWJitwW_d5afOvhuaC3N6T2NJxOJlIFHkmSsgqXr-IZMTpvdfEyQZ1WuuNAWfqTPloXOUdSoSRcLIMOAsE2Ip0VIPMMEFv-37CJHKQP_Pgqb_9PqzCnYoqw/s320/uno.png" width="320" /></a></div>
<span class="Apple-tab-span"><span style="white-space: pre;"><br /></span></span>
<i></i>Usar 2 puertos distintos: se verá muy feo. porque tendríamos que acceder a http://server:8443/algo y puede que algunos ISP incluso bloqueen puertos y puede dar problemas.<br />
<br />
La parte del "directory<directory>" la puse porque me daba un problema de que no tenía acceso al directorio. Al final no revisé si era necesaria o no.</directory><br />
<br />
En el DocumentRoot tengo un index.html que hace un META REFRESH hacia la url http://web.server.com/miaplicacionweb o http://movil.server.com/miaplicacionmovil<br />
<br />
Al momento de querer poner el certificado la cosa se complicó. Puse el SSL y me dió este error:<br />
<i>Init: You should not use name-based virtual hosts in conjunction with SSL!!</i><br />
<br />
Leyendo la documentación encontré que hay un problema con esta configuración ya que el apache no puede usar múltiples SSL en una misma IP+Puerto.<br />
<a href="http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts2">http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts2</a><br />
<br />
Entiendo que el problema es por esto: El SSL cifra el contenido de la página. Cuando Apache debe decidir cual virtualhost usar, para saber que SSL se usa debe decifrar el contenido de la página y como está cifrada apache no sabe cual certificado utilizar.<br />
<br />
En el caso de tener múltiples IP's puede filtrar el virtualhost por IP sin tener que descifrar nada y ahí si funciona.<br />
(confuso: si. Estoy seguro: no. Pero eso entendí :p )<br />
<br />
Alternativas:<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Poner 2 IP's en la misma máquina: hay que tener 2 IP's públicas.<br />
<br />
Lo primero que se hizo fué solicitar 2 IP's públicas. Como era una máquina virtual se le creó una segunda tarjeta de red y se le puso una segunda IP.<br />
<br />
Como estaba atras de un Firewall las IP's publicas se nateaban en algún router y llegaban a las IP's privadas. Algo así como:<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>200.x.x.1 Publica1 apunta a 192.0.1.1 Privada1 (eth1)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>200.x.x.2 Publica2 apunta a 192.0.1.2 Privada2 (eth2)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
Al tener esto y los DNS's configurados:<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>web.server.com en 200.x.x.1<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>movil.server.com en 200.x.x.2<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>* esto lo confirmaba haciendo un <i>nslookup web.server.com</i> y luego un <i>telnet web.server.com 80 </i>(para ver si respondía el puerto).<br />
<br />
Luego hice la configuración de virtualhost por IP. (IP-NAMED dice la configuración de apache). Perdí 4 horas de mi vida tratando de entender porque no funcionaban los virtualhost.<br />
<br />
Para ver el problema le puse un log distinto a cada virtual host. Luego de batallar un buen rato encontré que el problema era que yo estaba usando en el virtualhost las ips publicas y no las internas. Al final, la conclusión es que hay que usar las ip's privadas. Dejando la configuración algo asi:<br />
<br />
<br />
Para HTTP:<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQH3TIp2qLaM2lfx6csIGss-hdsvYLrDmyZCUL768VRxSZp5ldsf6QC50s3nvT501NVK40lsYuWSuHWYrdohbaiXFFMl5PpJataGj0CFJwDyWAliCulDadWz8ozumFxq4hSpBOJw/s1600/http.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="279" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQH3TIp2qLaM2lfx6csIGss-hdsvYLrDmyZCUL768VRxSZp5ldsf6QC50s3nvT501NVK40lsYuWSuHWYrdohbaiXFFMl5PpJataGj0CFJwDyWAliCulDadWz8ozumFxq4hSpBOJw/s320/http.png" width="320" /></a></div>
<br />
<i></i><br />
<br />
y para el HTTPS:<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg83J3vdLzEm-N4LrPUDMehpnutg6d_rwvmZZL3G-NK3OkcfnjM3BM9uinJ1yy-ToMLxNnhJqSn51BT3rjzTHFQ1lS5n63ROHzFYyC-PWTr63vmNRoCSkTjViZxZhEOXJcklULA4Q/s1600/ssl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="370" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg83J3vdLzEm-N4LrPUDMehpnutg6d_rwvmZZL3G-NK3OkcfnjM3BM9uinJ1yy-ToMLxNnhJqSn51BT3rjzTHFQ1lS5n63ROHzFYyC-PWTr63vmNRoCSkTjViZxZhEOXJcklULA4Q/s400/ssl.png" width="400" /></a></div>
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
y ya. con eso debe de estar funcionando correctamente.<br />
<br />
saludos!<br />
<div>
<br /></div>
carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com3tag:blogger.com,1999:blog-5860268.post-56656639939551966792012-04-30T16:40:00.002-06:002012-04-30T16:41:44.548-06:00Instalar Office 2007 en Ubuntu 12.04<br />
Acabo de instalar Ubuntu 12.04, en una máquina limpia.<br />
<br />
Parte de lo que debía hacer es instalar office. Uso el LibreOffice para el 80% de los temas, pero hay un 20% de temas que requieren office. (MSProject y algunos archivos que deben tener cierto formato).<br />
<br />
En la 11.10 había seguido este manual (<a href="http://www.ubuntubuzz.com/2011/09/install-microsoft-office-2007-in-ubuntu.html">http://www.ubuntubuzz.com/2011/09/install-microsoft-office-2007-in-ubuntu.html</a>) pero ahora me dió un problema, cuando trataba de instalar el dll dotnet20 me daba este error: <i>"This product is not supported on a 64-bit operating system. Setup will now exit."</i> desde una ventanita de windows. Recordé que puse la versión de 64 bits de ubuntu. (no recuerdo si en 11.10 tenia 64 bits.. pero.. no importa).<br />
<br />
Luego de algunas pruebas vi que tenía que hacer esto:<br />
<br />
1. descargar ultima version de wine *no se si es necesario pero igual lo dejo.<br />
Actualizar el Wine:<br />
<blockquote class="tr_bq">
<i>sudo add-apt-repository ppa:ubuntu-wine/ppa<br />sudo apt-get update<br />sudo apt-get install wine1.3</i></blockquote>
El comando dice wine1.3 pero es la versión 1.4. Tambíen me dió duda y lo busque :D<br />
Verifico que esté correctamente la última versión:<br />
<blockquote class="tr_bq">
<i>wine --version<br />:~/.wine$ wine --version<br />wine-1.4</i></blockquote>
2. eliminar cualquier isntalación previa del Wine<br />
<blockquote class="tr_bq">
<i>rm -rf .wine</i></blockquote>
3. Forzar a que la máquina virtual tenga 32bits.<br />
<blockquote class="tr_bq">
<i>export WINEARCH=win32<br />export WINEPREFIX=~/.wine<br />winecfg</i></blockquote>
4. instalar winetricks<br />
<blockquote class="tr_bq">
<i>cd .wine/<br />wget http://www.kegel.com/wine/winetricks<br />chmod +x ./winetricks<br />./winetricks</i></blockquote>
5. Luego.. Seguir la guía que se tenía para 11.10 <a href="http://www.ubuntubuzz.com/2011/09/install-microsoft-office-2007-in-ubuntu.html">http://www.ubuntubuzz.com/2011/09/install-microsoft-office-2007-in-ubuntu.html</a> saltando la parte donde dice install.wine<br />
<br />
al final de cuentas solo agrego la parte de 32bits.<br />
<br />
referencias:<br />
<a href="http://appdb.winehq.org/objectManager.php?sClass=version&iId=3754">http://appdb.winehq.org/objectManager.php?sClass=version&iId=3754</a><br />
<a href="http://forums.fedoraforum.org/showthread.php?t=272681">http://forums.fedoraforum.org/showthread.php?t=272681</a><br />
<a href="http://pingato.wordpress.com/2009/04/16/winetricks-instalaciones-sencillas-en-wine/">http://pingato.wordpress.com/2009/04/16/winetricks-instalaciones-sencillas-en-wine/</a><br />
<div>
<br /></div>
<div>
Ojo.. no soy experto ni mucho menos en linux. Solo soy un usuario que soluciona los temas que vienen. A veces sin saber exáctamente porque :D</div>carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com2tag:blogger.com,1999:blog-5860268.post-25833384424872962202011-10-14T16:44:00.012-06:002011-10-14T17:55:16.857-06:00Deadlock detected al obtener las conexiones JNDI en un WAS 7.0.0.13<div style="text-align: center;"><div style="text-align: center;"><br /></div></div><div>Hace unos días dejamos en producción una aplicación que migramos de websphere 6.1 a websphere 7. (IBM WAS 7).</div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br /></div><div>En principio vale mencionar que no hay nada transparente ni "migrable" entre lo que hicimos con RAD6 para que funcione en WAS7, RAD8 no soporta SDO y tuvimos que migrar "a mano" muchas cosas re-certificando toda la aplicacion, pero eso es otro tema que no comentaré a detalle.</div><div><br /></div><div>Lo que sí quería mencionar es un error un poco raro que tuvimos luego de la salida en producción. La aplicación en testing y desarrollo funcionaba bien, pero al estar en producción empezó a dar algunos problemas, en momentos de stress de repente el WAS se colgaba completo, inclusive dejaba de responder la consola.</div><div><div style="text-align: center;"><br /></div><div style="text-align: center;"><br /></div><div>Revisando el SystemOut y el SystemErr empezaron a aparecer algunos errores en la clase que obtenía la conexión a la base de datos, pero no encontramos nada que nos diera una pista de que podría dar problemas. </div><div></div><div>Vale la pena comentar que como desarrollo no teníamos acceso a los servidores por lo que el proceso de resolución fué muy tortuoso y lento. </div><div style="text-align: center;"><br /></div><div>Lo primero que verificamos, lo obvio, fué pensar que había un leak de conexiones. Revisamos el systemout buscando cualquier error que nos diera una pista del error y no encontramos nada. Recibimos algunos reportes de los administradores donde se miraba que la caída era un problema que sucedía en poco tiempo (<2 minutos). No era un proceso de degradación poco a poco sino que era una caída casi inmediata.</div><div style="text-align: center;"><br /></div><div></div><div style="text-align: center;"><br /></div><div>Sospechabamos de algún reporte o algún proceso donde por algún error hubiera algún tipo de loop infinito donde no se cerraran las conexiones. No encontramos nada.</div><div>Luego encontramos en los reportes que el total de threads que tenía configurado el WAS se ocupaban al 100%, nuestra teoría en este momento era que el leak de conexiones hacía que las peticiones se encolaran en el jndi y ocuparan threads y esto hiciera que el server se cayera.</div><div style="text-align: center;"><div></div></div><div>Exploramos algunas alternativas sobre la configuración del WAS, subimos los threads disponibles, pusimos un parámetro en el JNDI para que si no recibía la conexión en 5seg que diera exception. Esto aunque sabíamos que no corregía el error nos daba lapsos más grande</div><div>s entre una caída y otra y en lugar de que el was se quedara freeze empezaría a dar error de aplicación donde podríamos encontrar la raíz del problema. Hicimos los cambios y nada. Aunque subieramos los threads igual se ocupaban todos y por alguna extraña razón no respetaba el parametro que pusimos para que diera exception si no obtenía la conexión.</div><div style="text-align: center;"><br /></div><div><div style="text-align: center; "><div></div></div></div><div>Un poco desesperados peinamos el código (una aplicación grande) y revisamos todas las conexiones para incluir un best practice en cuanto a cierre de las conexiones. Probamos de nuevo y nada. Es más, los errores ocurrian más seguido.</div></div><div><div style="text-align: center;"><br /></div><div></div><div style="text-align: center;"><div><div style="text-align: center; "><div></div></div></div></div><div>Luego un día estando en audio con los administradores de bdd y con los administradores de WAS, tuvimos una caída. Fué entonces cuando logramos tener al fin el error en las manos. Vimos las propiedades del pool y ... sorpresa! el uso del pool estaba al 50% de su capacidad... No podía ser un connection leak si solo teníamos 50% de las conexiones usadas. Ya habíamos limpiado todos los system.out.println y el systemout estaba sin ningun tema. el systemerr tampoco tenía nada. Generaron un dump de la caída y ahí vimos entonces el error. </div><div><div style="text-align: center; "><div><div style="text-align: center; "><div></div></div></div></div></div><div>buscando en el javacore encontramos un Deadlock detected.</div><div></div><div><div><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_x0w7of6lVX7B3fr7iybGz6CWvuO5EBhataB055I5bJiyyuKTKeDDOpPH7vTsWfQ-hNye8JEE1f9b4R6u1maqP55C2HJVMIQOsObb-Ry1clTWHvUJ1vQwcdO6TNlK-eJEMk-a9w/s400/Selecci%25C3%25B3n_098.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5663483321815346194" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 123px; " /></div></div><div><div><div style="text-align: center; "><div><div style="text-align: center; "><div><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgon56iDlHyyTLYaI1DyZCWNhffxDkLhp-B3cC8CZqn2AAU1jnZDhMBDatQfQnSp8wF6RKXGqghmIZrF-zntP-SnImd3l8dOvKRFBv8AWlNVKqADK1eUwM0AELcDOkCCIlzfFt0PQ/s400/Selecci%25C3%25B3n_099.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5663483581684425522" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 73px; " /><div></div></div></div></div></div></div></div><div>Al analizar más a detalle el lugar donde se reporta el error, vimos que el metodo que muestra la traza es un metodo del pool y que no es parte del aplicativo sino parte del driver jndi de websphere. </div><div><div><div><div style="text-align: center; "><div><div style="text-align: center; "><div><div><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjUo6lLvMXh_ZzUX9VZWE9A5XYsNsFyfI6InrkzVkQKZ33RnMC8YFJHExFNmqJKzIQ53C290nZ9Sb5dNUZ1eMTYM2_QfA4Y8xVMcMkl9zWz-IyNDxoeb6ZCsRxRzNZjKdmwdbPhQ/s400/Selecci%25C3%25B3n_100.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5663483965658247922" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 103px; " /></div><div></div><div></div><div></div></div></div></div></div></div></div></div><div><br /></div><div>Buscando un poco más sobre este tema encontramos algunos casos similares al nuestro:</div><div> <a href="http://www.ibm.com/developerworks/forums/thread.jspa?threadID=374264&tstart=0#14631511">http://www.ibm.com/developerworks/forums/thread.jspa?threadID=374264&tstart=0#14631511</a></div><div> </div><div>Y encontramos luego un problema del driver de jdbc, "PK69110: THE SERVANT ABENDS CAUSED BY HUNG THREADS IN JDBC DRIVER".</div><div>Este bug tiene afectación en la versión de WAS que usamos <a href="http://www-01.ibm.com/support/docview.wss?uid=swg1PK69110&wv=1">http://www-01.ibm.com/support/docview.wss?uid=swg1PK69110&wv=1 </a></div><div><br /></div><div>La versión de WAS que usamos es la 7.0.0.13, encontramos entonces el problema definitivo. Un parámetro useRRASetEquals en la configuración custom del datasource.</div><div><br /></div><div>se hizo la prueba, se pasó a producción y luego de varias semanas tratando de encontrar el problema en nuestra aplicación vimos que es un bug de WAS.</div><div><br /></div><div>El bug era este: Cuando yo le pido una conexión al pool, el jndi usa un objeto con las conexiones utilizadas. Este objeto es compartido. Por alguna razón al tratar de reservar una conexión en el pool el objeto se quedaba tomado por otro thread y causaba un deadlock de threads. Todo esto a nivel de los javas que hacen el pool. mientras mas usuarios trataban de obtener la conexión habían más threads que se encolaban hasta que se acababan los threads del was. Luego ni siquiera la consola de WAS funcionaba y era el freeze. Como era el objeto que reservaba la conexión el error se daba antes de que el parametro de timeout que configuramos entrara y por eso no se tomaba en cuenta.</div><div> </div><div>La moraleja:</div><div> hay que leer los javacore cuando hay servers colgados... aunque sean de 500MB.</div><div><br /></div><div>saludos!</div></div>carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com0tag:blogger.com,1999:blog-5860268.post-33194941284412924422011-09-02T20:43:00.005-06:002011-09-02T21:18:59.010-06:00Ubuntu dejó de reconocer mi modem usb<div>instalé hace unos días mi linux (ubuntu 11.04) y al poner mi modem de tigo todo funcionó ok, solo le cambié el APN por broadband.tigo.gt (es pospago y es un huawei e226) .-</div><div>
<br /></div><div>hoy lo quise usar y no me lo reconocía la barrita de redes donde aparecía la conexión. Un poco oxidado en linux decidí buscar el var/log/messages para ver si aparecía una pista para buscar.</div><div>
<br /></div><div>encontré que ahora el /var/log/messages ahora es /var/log/syslog en fin.. dejé un tail -f para ver que pasaba al conectarlo y salió algo como esto: </div><div>
<br /></div><div><pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>
<br />Sep 2 17:31:15 carloscastaneda kernel: [ 70.847353] usb 2-1.2: new full speed USB device using ehci_hcd and address 5
<br />Sep 2 17:31:15 carloscastaneda kernel: [ 70.927358] usb 2-1.2: device descriptor read/64, error -32
<br />Sep 2 17:31:15 carloscastaneda kernel: [ 71.117371] usb 2-1.2: device descriptor read/64, error -32
<br />Sep 2 17:31:16 carloscastaneda kernel: [ 71.307382] usb 2-1.2: new full speed USB device using ehci_hcd and address 6
<br />Sep 2 17:31:16 carloscastaneda kernel: [ 71.387526] usb 2-1.2: device descriptor read/64, error -32
<br />Sep 2 17:31:16 carloscastaneda kernel: [ 71.577396] usb 2-1.2: device descriptor read/64, error -32
<br />Sep 2 17:31:16 carloscastaneda kernel: [ 71.767412] usb 2-1.2: new full speed USB device using ehci_hcd and address 7
<br />Sep 2 17:31:16 carloscastaneda kernel: [ 72.187310] usb 2-1.2: device not accepting address 7, error -32
<br />Sep 2 17:31:16 carloscastaneda kernel: [ 72.267438] usb 2-1.2: new full speed USB device using ehci_hcd and address 8
<br />Sep 2 17:31:17 carloscastaneda kernel: [ 72.687307] usb 2-1.2: device not accepting address 8, error -32
<br />Sep 2 17:31:17 carloscastaneda kernel: [ 72.687486] hub 2-1:1.0: unable to enumerate USB device on port 2
<br /></code></pre>al final encontré por acá la solución: <a href="http://www.absolutelytech.com/2009/11/01/solved-ath5k-wifi-module-not-working-in-karmic-koala/">http://www.absolutelytech.com/2009/11/01/solved-ath5k-wifi-module-not-working-in-karmic-koala/</a></div><meta equiv="content-type" content="text/html; charset=utf-8"><div><span class="Apple-style-span"><u><pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>cd /sys/bus/pci/drivers/ehci_hcd
<br />ls
<br />sudo sh -c 'echo -n "0000:00:xx.x" > unbind'
<br /></code></pre></u></span></div><div><u><meta equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="-webkit-text-decorations-in-effect: none; "><div>reinicié y listo.-</div><div>
<br /></div><div>saludos!</div><div>
<br /></div></span></u></div>carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com0tag:blogger.com,1999:blog-5860268.post-88746239246324065922010-09-13T07:39:00.000-06:002010-09-13T07:40:17.208-06:00Día del programador!!<div style="text-align: center;"><br /></div>Feliz día del programador!!<div><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizFrOGFtHtgIBpZ99FNzQB_6KyGigvrFT6XOhnmwWGO3Y4GWkWNdulq9vQwzBz0OJT0h3dDPu02W677-JLv7UD-Y7HREe5tBjb2DYuFlj1IpLD8ydeJMMfbv1WrU3fbMgIqUgNFg/s320/PD_Logo_Spanish.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 160px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5516392181620635986" /><div><br /></div><div>Hoy se celebra el día 256 del año que es el día del programador... felicidades a todos mis compañeros.</div><div><br /></div><div>Este día todavía no es oficial pero si insistimos cada año en celebrarlo podemos institucionalizarlo para hacer notar la importancia de nuestro trabajo en la forma en que el mundo se desenvuelve diariamente.- </div><div><br /></div><div><a href="http://www.programmerday.info/index.html">http://www.programmerday.info/index.html</a></div><div><br /></div><div><a href="http://en.wikipedia.org/wiki/Programmers'_Day">http://en.wikipedia.org/wiki/Programmers'_Day</a></div><div><br /></div><div>saludos!</div></div>carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com1tag:blogger.com,1999:blog-5860268.post-53165828318764967082010-03-16T07:55:00.000-06:002010-03-16T07:56:04.057-06:00Configurar tamaño de archivo de mantisbt<span style="font-size:100%;"><span style="font-family:arial;">Necesitaba poder subir archivos grandes como adjuntos en <a href="http://www.mantisbt.org/">mantisbt</a>, es un tema realmente básico pero que implico cambiar todas las capas de archivos de configuracion: aplicacion, base de datos, php.<br /><br /></span><span style="font-family:arial;">El error que recibía era:</span></span><span style="font-size:100%;"><br /><span style="font-style: italic;">Allowed memory size of 8388608 bytes exhausted</span></span><span style="font-size:100%;"><span style="font-family:arial;"><br /><span style="font-style: italic;">APPLICATION ERROR #401<br /><br /></span>Fueron varios temas los que tuve que cambiar:</span></span><br /><br />php.ini<br /> memory_limit = 32M <br /> upload_max_filesize = 8M<br /><br />config.inc de mantis:<br /> $g_max_file_size = 8388608; # 8 MB<br /><br />mysql:<br /> max_allowed_packet = 16Mcarcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com0tag:blogger.com,1999:blog-5860268.post-42130807016169725102010-03-14T18:25:00.001-06:002010-03-14T18:25:40.758-06:00Orden de Arranque en GRUB2 (ubuntu 9.10)Para cambiar el orden de arranque de linux ubuntu 9.10:<br />ubuntu 9.10 usa el grub2 en lugar de grub, eso me hizo perder algun tiempo leyendo en internet.<br /><br />1. ver que tiene el archivo grub.cfg usando<br /> cat /boot/grub/grub.cfg<br /><br />2. se busca cual es la opcion que queremos que arranque primero, en mi caso quiero que arranque windows en lugar de linux. Mi windows esta en el orden 8.<br /><br />3. modificar el default del archivo /etc/default/grub desde el gedit:<br /> sudo gedit /etc/default/grub<br /> <br />4. cambio la linea y grabo<br /> GRUB_DEFAULT=8<br /><br />5. actualizo los cambios<br /> sudo update-grub<br /><br /> <br />sudo update-grub<br />Generating grub.cfg ...<br />Found linux image: /boot/vmlinuz-2.6.31-20-generic<br />Found initrd image: /boot/initrd.img-2.6.31-20-generic<br />Found linux image: /boot/vmlinuz-2.6.31-16-generic<br />Found initrd image: /boot/initrd.img-2.6.31-16-generic<br />Found linux image: /boot/vmlinuz-2.6.31-14-generic<br />Found initrd image: /boot/initrd.img-2.6.31-14-generic<br />Found memtest86+ image: /boot/memtest86+.bin<br />Found Windows 7 (loader) on /dev/sda1<br />done<br /><br /><br />reiniciar.-carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com4tag:blogger.com,1999:blog-5860268.post-90285012103857476182010-02-09T17:06:00.002-06:002010-02-09T17:10:56.347-06:00La Cámara del Terror (Manuel José Arce)Incluyo otro poema de Manuel José Arce, Guatemalteco.<br />es del libro Episodios del vagón de carga (20.05.1971)<br />hace unos días tenía ganas de leerlo pero no lo encontre en ninguna parte de internet así que lo publico porque no se puede negar a la gente la belleza de este poema.<br />------------------------------------------------------------<br /><br /><br />DE repente estoy triste<br />--aunque tú no lo sabes<br /><br />Se derrumban de pronto<br />torres y catedrales.<br /><br />Se nos queman las alas<br />y hasta las ganas de vivir se caen.<br /><br />Se nos vuelven más largas y más sordas las calles.<br /><br />La tristeza nos coge<br />a patadas infames.<br /><br />Es de pronto. Al doblar una esquina.<br />Al decir una cosa. Al saludar a alguien.<br /><br />Es una bofetada sorpresiva esta tristeza tonta.<br />Pero tú no lo sabes.<br /><br />Porque si lo supieras tendría algún sentido.<br />Esta manera amarga sería menos grave.<br /><br />Pero tú no lo sabes.<br />Y si tú no lo sabes ya no lo sabe nadie.<br />Ni importa que lo sepa alguna gente.<br />Ni es tampoco importante.<br /><br />Es un poco molesto nada más<br />desangrarse.<br /><br />Es tonto y sucio.<br />Sería más higiénico llegar al sicoanálisis.<br /><br />De que sirve todo esto<br />cuando Dios se tropieza en una esquina y cae.<br /><br />Cuando el cielo se vuelve algo tan torpe<br />que sólo sirve para molestarme.<br /><br />Cuando me cae mal toda la gente.<br />Cuando es ridículo hasta el preguntarme.<br />Cuando se pone triste hasta la sombra.<br />Cuando tú no lo sabes.<br /><br />Y si tú no lo sabes<br />no importa que lo sepa nadie.<br /><br />Nadie.carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com0tag:blogger.com,1999:blog-5860268.post-67878233845056214802009-10-15T09:28:00.002-06:002009-10-15T09:32:52.561-06:00Hormiga (Poema)Otro poema, del 98. De los que escribí luego de dejar de escribir.<br /><br />------------------------------------------------<br /><br />Tome mi disfraz de hormiga, y caminé,<br />Sólo,<br />En la fila de las negras voces,<br />En las voces de las grandes filas,<br />En las cara de siluetas desteñidas<br />y en tus labios rotos camine.<br /><br />Solo para encontrar más negro,<br />Más cientos de hormigas disfrazadas de colores<br />Formadas como estrellas en una larga fila negra,<br />De silencios,<br />De misterios negros y oscuras cicatrices.<br /><br />Vi como el silencio se desvanecía,<br />vi la luz, vi el mar<br />y vi una sonrisa perdida entre los destellos del viento,<br />luego la vi desaparecer.<br /><br />Este manto negro que me cubre...<br />Este manto negro, piel de hormiga, que me esconde...<br />Como pesa ya este manto negro…!<br />Como pesa ya este tiempo eterno,<br />Como se me impregna por entre los poros esta tinta inmaterial,<br />que se va secando,<br />que se va apropiando de mis nuevos huesos negros,<br />de mi sangre, de mi alma y de mis ojos negros.<br /><br />A donde me llevará la noche?<br />En que lugar susurrare ahora tu nombre,<br />Como poder recordarte si me olvido,<br />Si me pierdo en este oscuro horizonte?<br /><br />Acércate más...<br />Acércate más que no te encuentro,<br />Acaríciame el rostro para saber que lo tengo,<br />Grita mi nombre,<br />No dejes que me olvide,<br />No dejes que me pierda,<br />Quítame este manto negro...<br /><br />Piel de hormiga, hormiga adentro.<br /><br />Caminar...<br />Por esta larga fila, caminar.<br />Por esta oscura línea, caminar.<br />Tanto tiempo y caminar,<br />Tanta hormiga y caminar,<br />Tanta tinta negra que se seca y nos envuelve,<br />Tan espeso el aire que nos une,<br />Ahorcándonos en esta tinta negra,<br />Y nos aprieta, y nos estrecha<br />y nos va juntando hasta que somos uno,<br />una sola línea,<br />mil puntos y una sola línea disfrazada en tinta negra,<br />y caminar,<br /> Caminar...<br /><br /><br />carcasco .30.10.1998carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com0tag:blogger.com,1999:blog-5860268.post-28725665794818345552009-09-16T19:03:00.003-06:002011-09-13T10:13:11.269-06:00Balanceo de Carga para dos websphere application server 6.1 usando mod_proxy_balancer<span style=""><span style="font-family:Arial;">Hace varios días que vengo trabajando en un problema que me ha quitado el sueño y la tranquilidad.<br /><br />Hace como mes y medio empece a leer sobre el tema de balanceo de carga desde Apache usando el mod_proxy_balancer.<br /><br /><a send="true" class="moz-txt-link-freetext" href="http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html">http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html</a><br /><br />Desde las guías todo parecía sencillo. Sinceramente no estaba muy claro de las modificaciones que se estaban planteando, pero para variar, empece a probar sin terminar de leer la documentación :p<br /><br />Hice unas pruebas y asumi que todo estaba funcionando bien. El tema se quedó dormido durante algún tiempo, pero luego tuve que retomarlo desafortunadamente con las fechas ya bastante apretadas.<br /></span></span><span style=""><span style="font-family:Arial;"><br /></span></span><span style=""><span style="font-family:Arial;"><a send="true" class="moz-txt-link-freetext" href="http://www.howtoforge.com/load_balancing_apache_mod_proxy_balancer">http://www.howtoforge.com/load_balancing_apache_mod_proxy_balancer</a><br /><br />Me pareció excelente que se pudiera tener no solamente el balanceo de carga sino la tolerancia a fallos. De manera que si un server se caía, podía seguir operando con el otro server.<br /></span></span><span style=""><span style="font-family:Arial;"><br /></span></span><span style=""><span style="font-family:Arial;">-- la version 1 de mi httpd.conf<br /></span></span> <blockquote><span style=""><span style="font-family:Arial;"><i><span style="font-family:Arial Narrow;"><b>LoadModule proxy_balancer_module modules/mod_proxy_balancer.so</b></span></i></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;">ProxyRequests Off</span></i></b></span></span><br /><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"><Proxy *></span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"> Order deny,allow</span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"> Allow from all</span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"></Proxy></span></i></b></span></span><br /><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;">ProxyPass /balancer-manager !</span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;">ProxyPass / balancer://clusterWAS/ stickysession=BALANCEID nofailover=On</span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;">ProxyPassReverse / <a send="true" class="moz-txt-link-freetext" href="http://192.168.15.124:9080/">http://192.168.15.124:9080/</a></span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;">ProxyPassReverse / <a send="true" class="moz-txt-link-freetext" href="http://192.168.15.127:9080/">http://192.168.15.127:9080/</a></span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"><Proxy balancer://clusterWAS></span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"> BalancerMember <a send="true" class="moz-txt-link-freetext" href="http://192.168.15.124:9080/">http://192.168.15.124:9080</a> route=http1</span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"> BalancerMember <a send="true" class="moz-txt-link-freetext" href="http://192.168.15.127:9080/">http://192.168.15.127:9080</a> route=http2</span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"> ProxySet lbmethod=byrequests</span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"></Proxy></span></i></b></span></span><br /><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"><Location /balancer-manager></span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"> SetHandler balancer-manager</span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"> Order deny,allow</span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"> Allow from all</span></i></b></span></span><br /><span style=""><span style="font-family:Arial;"><b><i><span style="font-family:Arial Narrow;"></Location></span></i></b></span></span><br /></blockquote> <span style=""><span style="font-family:Arial;">Hice unas pruebas y asumi que todo estaba funcionando. Pero desafortunamente en ese momento no puse mucha importancia al tema de la sesion.<br /><br />Al tener mi servidor balanceando carga entre los 2 nodos, la mitad de los requerimientos va a un server y la otra mitad al otro. Pero... si entro a mi aplicacion y me firmo. Esto se guarda en una variable de sesion. Y balanceando la carga se pierde.... :(<br /><br />Es decir..<br /> Pinto pantalla de login (Nodo1)<br /> Recibo parametros de login valido y guardo variables de sesion(nodo2)<br /> Reenvio a pantalla de inicio (Nodo1)<br /><br /> El problema es que en el nodo1, nunca guarde variables asi que asume que no esta firmado y vuelve a pedir la clave.<br /><br />Lei un poco sobre el tema y hablaba del stickysession.<br /><br />Ahora que ya entendí les cuento que la famosa stickyession es una cookie con un id de session. Que tiene 2 partes. La session y el route.<br /></span></span>Cookie<code class="">JSESSIONID=00009jrrrDW78YKKVP6BTuDqqFg.-1<br /><br /></code><span style=""><span style="font-family:Arial;">Esto lo pude ver gracias al pluggin firebug de firefox. Que en la pestaña de red muestra los paquetes enviados.<br /><br />No obstante no lograba que funcionara en mi esquema.<br /><br />Yo tengo 2 nodos con Websphere Application Server 6.1. Los 2 tienen la aplicacion instalada y funcionando.<br /><br />Luego de buscar bastante y hacer bastantes pruebas encontré que la cookie de session se envía diferente en websphere que en tomcat. Y que el apache no la entendía.<br /></span></span>Cookie<code class="">JSESSIONID=00009jrrrDW78YKKVP6BTuDqqFg:-1<br /><br /></code><span style=""><span style="font-family:Arial;">La diferencia es el ":" en lugar del ".".<br /><br /><a class="moz-txt-link-freetext" href="https://issues.apache.org/bugzilla/show_bug.cgi?id=42513">https://issues.apache.org/bugzilla/show_bug.cgi?id=42513</a><br /><br />No hay un parque para esto en los releases.<br /><br />Tuve que recompilar el apache para inlcuir la modificación en el modulo. (esto será un post aparte).<br />El truco no era la recompilada de apache, el truco era, la recompilada en Windows de apache :S<br /><br />Bueno... luego de recompilado el apache con la recomendación que dan en el bug. Logre que la cookie tuviera el formato adecuado... pero... aun así no funcionaba!<br /><br /></span></span>Cookie<code class="">JSESSIONID=00009jrrrDW78YKKVP6BTuDqqFg.-1<br /><br /></code><span style=""><span style="font-family:Arial;">Fue luego de esto cuando comprendí que el problema es que el -1 que estaba mostrando debía ser el nombre del nodo.<br /><br />En algunos post, encontre que este valor es llamado route. y se configuraba en los tomcat como jvmrouteid. En websphere no encontraba nada por el estilo.<br /><br />Un poco de suerte me llevo a una url donde se miraba el debug de una traza en websphere con balanceo de carga y hablaba de un Clone ID ... <a class="moz-txt-link-freetext" href="http://www-01.ibm.com/support/docview.wss?uid=swg27014498&aid=1">http://www-01.ibm.com/support/docview.wss?uid=swg27014498&aid=1</a><br /><br />Buscando en la documentación encontre como configurarlo y funcionó.<br /><br /><a class="moz-txt-link-freetext" href="http://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//index.jsp?topic=/com.ibm.websphere.zseries.doc/info/zseries/ae/rprs_custom_properties.html">http://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//index.jsp?topic=/com.ibm.websphere.zseries.doc/info/zseries/ae/rprs_custom_properties.html</a><br />Application servers > server1 > Web container > Custom Properties<br /><br />Para el nodo uno le puse un HttpSessionCloneId de "nodo1" y al otro "nodo2".<br /><br />Ahora sí. Mis cookies quedaban de la siguiente forma:<br />para el nodo1:<br /></span></span><code class="">JSESSIONID=0000gQCnyQMY94sb5oVXZsLU0lR:nodo1</code><br /><span style=""><span style="font-family:Arial;"><br />para el nodo2:<br /></span></span><code class="">JSESSIONID=0000gQCnyQMY94sb5oVXZsLU0lR:nodo2</code><br /><span style=""><span style="font-family:Arial;"><br /></span></span><span style=""><span style="font-family:Arial;">Con mi apache recompilado y con mis cookies en buen estado procedí a realizar las configuraciones que me hacían falta en el apache.<br /><br />Primero habilité los módulos necesarios:<br /><b><i>LoadModule proxy_module modules/mod_proxy.so<br />LoadModule proxy_balancer_module modules/mod_proxy_balancer.so<br />LoadModule proxy_http_module modules/mod_proxy_http.so</i></b><br /></span></span><span style=""><span style="font-family:Arial;"><br />Luego algunos parámetros generales de la configuracion:<br /><b><i>ProxyRequests Off<br /><Proxy *><br />Order deny,allow<br />Allow from all<br /></Proxy></i></b><br /><br />Configuré el balance con mis 2 nodos:<br /><b><i><Proxy balancer://clusterPerfilUno><br />BalancerMember <a class="moz-txt-link-freetext" href="http://192.168.15.121:9080/">http://192.168.15.121:9080</a> route=nodo1<br />BalancerMember <a class="moz-txt-link-freetext" href="http://192.168.15.123:9080/">http://192.168.15.123:9080</a> route=nodo2<br />ProxySet lbmethod=byrequests<br /></Proxy></i></b><br /><br />donde dice "route=nodo1" es el nombre que haya puesto al cloneid en mi WAS. Luego hago el proxypass en mi aplicacion hacia el balanceo.<br />La stickysession la hago sobre la cookie que logre setear. Y seteo el reverse para el regreso de las conexiones.<br /><br /><b><Location /app><br /> Order allow,deny<br /> Allow from all<br /> ProxyPass balancer://clusterPerfilUno/app stickysession=JSESSIONID nofailover=On<br /> ProxyPassReverse <a class="moz-txt-link-freetext" href="http://192.168.15.121:9080/app">http://192.168.15.121:9080/app</a><br /> ProxyPassReverse <a class="moz-txt-link-freetext" href="http://192.168.15.123:9080/app">http://192.168.15.123:9080/app</a><br /></Location></b><br /></span></span><span style=""><span style="font-family:Arial;"><br />Puse el loglevel en debug para rastrear posibles errores y me sale algo asi:<br />[Wed Sep 16 16:16:57 2009] [debug] mod_proxy_balancer.c(46): proxy: BALANCER: canonicalising URL //</span></span><span style=""><span style="font-family:Arial;"><b>clusterPerfilUno</b></span></span><span style=""><span style="font-family:Arial;">/app<br />[Wed Sep 16 16:16:57 2009] [debug] mod_proxy_balancer.c(280): ICON: proxy: BALANCER: Found value 00006BXDRmMTJiopXVx9UnRFUCR:nodo1 for stickysession JSESSIONID<br />[Wed Sep 16 16:16:57 2009] [debug] mod_proxy_balancer.c(296): proxy: BALANCER: Found route nodo1<br />[Wed Sep 16 16:16:57 2009] [debug] mod_proxy_balancer.c(579): proxy: BALANCER (balancer://</span></span><span style=""><span style="font-family:Arial;"><b>clusterPerfilUno</b></span></span><span style=""><span style="font-family:Arial;">) worker (<a class="moz-txt-link-freetext" href="http://192.168.15.121:9080/">http://192.168.15.121:9080</a>) rewritten to <a class="moz-txt-link-freetext" href="http://192.168.15.121:9080/">http://192.168.15.121:9080/</a><b>app</b><br />[Wed Sep 16 16:16:57 2009] [debug] mod_proxy.c(993): Running scheme balancer handler (attempt 0)<br />[Wed Sep 16 16:16:57 2009] [debug] mod_proxy_http.c(1920): proxy: HTTP: serving URL <a class="moz-txt-link-freetext" href="http://192.168.15.121:9080/app">http://192.168.15.121:9080/app</a><br /><br />Si no tengo buena la cookie recibo el found value (null) for stickysession JSESSIONID.<br /><br />con esto logre hacer el balanceo de carga usando mod_proxy_balancer con un websphere 6.1 en los nodos.<br /><br />En los proximos días estaré haciendo pruebas de esto y si encuentro algo mas lo publico.<br /><br />Espero poder publicar la recompilada del apache sobre windows y también una segunda alternativa que estuve a punto de implementar.<br /><br />Cabe mencionar que el IHS de IBM es una alternativa que no logre a terminar de evaluar para resolver este problema.<br /><br />saludos!<br /><br /></span></span>carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com2tag:blogger.com,1999:blog-5860268.post-32288612018167349272009-08-26T11:17:00.001-06:002009-08-26T11:22:55.885-06:00ORA-04030: out of process memory when trying to allocate 123404 bytesHace algunos días empece a recibir errores extraños en una de nuestras aplicaciones. Ocasionalmente nos reportaban que no podian hacer algo o que no se mostraba cierta información, pero cuando volvían a probar la aplicacion empezaba a funcionar correctamnete.<br /><br />El problema con este tipo de reportes, es que son bastante difíciles de encontrar y de replicar, por consiguiente se empiezan a volver difíciles de resolver.<br /><br />La aplicación es una aplicación web en java que consulta una base de datos oracle, ambos servidores estan corriendo sobre windows.<br /><br />Lo primero que hicimos fue empezar a generar logs adicionales a los bloques de codigo que pensabamos pudieran estar fallando, empezamos a encontrar errores de este tipo desde mis programas:<br /><br />java.sql.SQLException: ORA-04030: out of process memory when trying to allocate 123404 bytes (QERHJ hash-joi,kllcqas:kllsltba)<br /><br />y desde el sistema operativo empece a ver errores en el event viewer que decían que no se podía asignar memoria a un thread de la base de datos.<br /><br />Aclaro que no soy DBA, soy desarrollador. Pero a veces como desarrollador es necesario involucrase en temas de infraestructura para poder identificar los problemas que suceden.<br /><br />Tenía una maquina con 4gb de ram y cuando miraba la memoria de la maquina no pasaba de los 2gb.<br /><br />Encontramos 2 temas que estaban causando el problema:<br /> 1. El servidor es un windows de 32 bits, y por ser un windows de 32 bits no puedo tener ningún proceso en ejecución con mas de 2gb de uso de memoria.<br /> Se modifico el boot.ini del servidor para que pudieran utilizarse hasta 3 gb de ram en un solo proceso.<br /><br /> http://technet.microsoft.com/es-es/library/bb124810.aspx<br /><br /> 2. Revisando los parámetros de la base de datos, encontré que se tenía configurado un SGA de 2GB y un PGA de 1.6GB. Por lo que el tamaño del proceso que estaría ejecutando el oracle llegaría a tener hasta 3.6 GB en memoria. Procedímos a cambiar los parámetros de configuracion de la base de datos para corregir el tema.<br /><br /> Este cambio se hizó en los parámetros, sga_target y pga_aggregate_target.<br /><br />saludos!carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com1tag:blogger.com,1999:blog-5860268.post-49653505605477311812009-08-01T09:39:00.004-06:002014-07-25T14:48:33.348-06:00Silla (poema)Antes de ser programador (durante mi adolescencia) era más artístico. Escribí algunos poemas que a veces leo y que guardo con mucho cariño. Hoy publicaré un poema o escrito que hice hace ya algún tiempo en una fugaz comunicación entre los 2 lados de mi cerebro.<br />
<br />
-------------------------------------------<br />
<br />
Silla<br />
<br />
Una mañana desperté, y estaba muerto. Escupiendo gusanos por mi ojos, estaba sentado frente al monitor de siempre, con la manos sobre el teclado, con raíces brotando de mis uñas y encarnándose en el decadente espacio de la alfombra.<br />
Muerto.<br />
Con un pequeño resplandor en mi rostro, reflejo del ups aún prendido.<br />
A lo lejos, todavía se escuchan los susurros sobrantes de cientos de reuniones sobre la mesa, de miles de discusiones infructuosas y banales. Hoy nada.<br />
Solo yo,<br />
Muerto.<br />
Desvestido ya; más la ropa está aún planchada sobre mis piernas.<br />
No recuerdo cuando me quedé dormido, no recuerdo cuando olvidé mi nombre, o el tuyo. Solo sé que paso… y que seguía sentado.<br />
Una mancha de café sobre la mesa... y en el amarillo de mis dientes.<br />
¿Cuándo comenzó a endurecerse mi rostro… y cuándo mis manos?<br />
¿Cuándo empezó a confundirse el día y la noche… y cuándo dejo de importarme?<br />
Todo pasa… Y el pasado se convierte en un pequeño resentimiento a la nostalgia, y en seguir allí. Absorbiendo la luz del monitor, dejando que mis ojos se carcoman. Y mi voz, cada ves mas callada y sola.<br />
Sentado.<br />
¿Cuántas veces tendré que morir para olvidar esto?<br />
¿Cuántas veces volver a pensar lo mismo… y seguir tratando?<br />
¿Cuantos silencios?… solo quedo yo, sentado, destruyéndome, viendo como mi deformado cuerpo se esconde tras mi mente… Y la luz del monitor! siempre allí, prendido, con su maldito calor quemándome, pegando mis articulaciones hasta el punto de no poder levantarme.<br />
Sigo aquí sentado en esta silla cada vez mas grande, las ventanas cada vez mas chicas, el frió del aire, la Luz del monitor, las gigantescas paredes, el inalcanzable techo, las enormes sillas y mis delgadas y secas piernas que se enredan en sus patas llegando a la alfombra, arañándola, rasgándola, como queriendo enterrarse. Y los gusanos que se arrastran por mi cuerpo y me comen.<br />
Y me seco, y me muero… Ya mi cuerpo no responde y no se levantarme. Solo seguir sentado. Me quedo quieto… y por momentos duermo. Abro los ojos y es igual, duermo otra vez. Seguir tratando. Solo puedo a veces respirar, las noche cada ves es mas larga, y el amanecer que no termina de llegar. Vuelvo a dormir, despierto. Miro el reloj y sigue igual. La misma luz enfrente, mis manos igual. Cada ves mas oscuro y mas silencio.<br />
Me estoy quedando solo.<br />
Como molestan estos malditos gusanos.. y la luz! No me deja dormir, ni respirar. Y este café que me mata, y el silencio. Y este sueño que no acaba, esta noche interminable. La incomodidad de mi silla,<br />
y volver a dormir…<br />
<br />
<br />
carcasco - 02 de Octubre del 2,001carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com1tag:blogger.com,1999:blog-5860268.post-49150201115170798382009-07-09T14:17:00.001-06:002009-07-09T14:17:30.096-06:00Programando GreaseMonkeySoy un adicto a Ikariam, lo acepto. :D<br /><br />En mi alianza juego con gente de España y Argentina y nos cuesta un poco mantenernos sincronizados para algunas "campañas".<br /><br />Decidí hacer un pequeño script para que al lado de la fecha pueda poner la fecha de GT y de ARG.<br /><br />GreaseMonkey es un complemento de Firefox que permite pogramar javascripts adicionales a las paginas que sean actualizados en el browser. Algo asi como... modificar la pagina de cualquier servidor web con funcionalidad javascript programada por nosotros.<br /><br />El ejemplo que use fue:<br />El server de Ikariam muestra la hora del servidor en españa. Yo quería modificar la pagina de ikariam para que al lado aparezca la hora de Guatemala y la de Argentina.<br /><br />Las primeras lineas dan información del script:<br /><br />// ==UserScript==<br />// @name HoraArgGua<br />// @namespace http://carcasco.blogspot.com<br />// @description Poner varios horarios en el ikariam<br />// @include http://s6.ikariam.es/index.php*<br />// ==/UserScript==<br /><br />Las funciones que puse despues son cosas que solo utilicé de la misma pagina ikariam. Luego mi funcion de cambia de horario.<br /><br />busco el elemento que quiero cambiar: <br /> servertime = document.getElementById('servertime');<br /><br />Si existe entonces creo un nuevo elemento:<br /> detalleHoras = document.createElement('span');<br /><br />Y lo inserto luego de ese. Es decir, agregue un tag de html extra a la pagina:<br /> servertime.parentNode.insertBefore(detalleHoras, servertime.nextSibling);<br /> <br />Adicional hice la funcion que calcula la fecha (puro javascript) y cambio el innerHtml del elemento recién creado.<br /><br />saludos!<br /><br />Codigo Completo: <br />=================<br /><pre class="html"><br /><br />// ==UserScript==<br />// @name HoraArgGua<br />// @namespace http://carcasco.blogspot.com<br />// @description Poner varios horarios en el ikariam<br />// @include http://s6.ikariam.es/index.php*<br />// ==/UserScript==<br /><br />function dezInt(num,size,prefix){prefix=(prefix)?prefix:"0";var minus=(num<0)?"-":"",result=(prefix=="0")?minus:"";num=Math.abs(parseInt(num,10));size-=(""+num).length;for(var i=1;i<=size;i++){result+=""+prefix;}<br />result+=((prefix!="0")?minus:"")+num;return result;}<br /><br />function getFormattedDate(timestamp,format){var currTime=new Date();currTime.setTime(timestamp);str=format;str=str.replace('d',dezInt(currTime.getDate(),2));str=str.replace('m',dezInt(currTime.getMonth()+1,2));str=str.replace('Y',currTime.getFullYear());str=str.replace('y',currTime.getFullYear().toString().substr(2,4));str=str.replace('G',currTime.getHours());str=str.replace('H',dezInt(currTime.getHours(),2));str=str.replace('i',dezInt(currTime.getMinutes(),2));str=str.replace('s',dezInt(currTime.getSeconds(),2));return str;}<br /><br /><br />function cambiarHorario() {<br /> var d = new Date();<br /> d.setMinutes(d.getMinutes()+d.getTimezoneOffset()-6*60);<br /> var strHoraGt = "GT: "+ getFormattedDate(d, 'd/G:i');<br /> d = new Date();<br /> d.setMinutes(d.getMinutes()+d.getTimezoneOffset()-3*60);<br /> var strHoraArg = "AR: "+ getFormattedDate(d, 'd/G:i');<br /> document.getElementById('servertime').nextSibling.innerHTML=" | "+strHoraGt+" | "+strHoraArg;<br />}<br /><br />iniciaCambioHorario = function() {<br /> var servertime,detalleHoras;<br /> servertime = document.getElementById('servertime');<br /> if (servertime) {<br /> detalleHoras = document.createElement('span');<br /> detalleHoras.innerHTML="";<br /> servertime.parentNode.insertBefore(detalleHoras, servertime.nextSibling);<br /> } <br /> cambiarHorario();<br />}<br /><br />iniciaCambioHorario();<br /> <br /></pre>carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com1tag:blogger.com,1999:blog-5860268.post-55715843276898041692009-07-07T19:03:00.003-06:002009-07-07T19:07:34.746-06:00Extraño accidente en Zona 10Hoy en el edificio hubo un extraño accidente, un carro por error (!!!) entró por las gradas del primer nivel en lugar de entrar por la rampa al parqueo ???!??<br /><br /><br />Es cierto, yo lo ví.. Al parecer era un señor de edad avanzada y como que se le descompuso el radar :D<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiNk2cLEvekhWaghMH5PEd88mWtXyUkRAdC-KTEbnbZcXFFy9bljOsmzlkRNN9R-hBTpu4vgs_x_E_emckJglQVTzDvYTW3zRSZSEodHuLxXD0GdMfPrk2ASI66AxMNENZ0HvKtw/s1600-h/moz-screenshot-16.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 258px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiNk2cLEvekhWaghMH5PEd88mWtXyUkRAdC-KTEbnbZcXFFy9bljOsmzlkRNN9R-hBTpu4vgs_x_E_emckJglQVTzDvYTW3zRSZSEodHuLxXD0GdMfPrk2ASI66AxMNENZ0HvKtw/s320/moz-screenshot-16.jpg" alt="" id="BLOGGER_PHOTO_ID_5355889324521198802" border="0" /></a>carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com1tag:blogger.com,1999:blog-5860268.post-40175080123458390792009-07-03T10:29:00.001-06:002009-07-03T10:29:45.580-06:00WordPress.com desde Guatemala resuelto<h2 class="entry-title">WordPress.com desde Guatemala resuelto</h2> <p>El "fallo" o "bloqueo" que habia mencionado fue corregido.</p><p>Que casualidad que 3 empresas distintas tuvieron el msmo fallo al mismo tiempo. :S</p><p>saludos!<br /></p>carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com0tag:blogger.com,1999:blog-5860268.post-39817732007284968102009-06-30T08:05:00.004-06:002009-06-30T08:24:00.643-06:00Bloqueo de Blogs en Guatemala<div class="title">Desde ayer vengo leyendo varios post relacionados a que en Guatemala estaba siendo bloqueado wordpress... me parecio al principio algo extraño y la verdad no tuve tiempo de revisar el tema.<br /><br />WordPress es un sitio que al igual que blogspot provee de una herramienta para publicar blogs. Muchas personas en Guatemala lo utilizan como plataforma para publicar sus opiniones, muchas de ellas políticas.<br /><br />Hoy tratando de leer mis feeds habituales me encuentro con que es verdad!!!! Tuve que salir por un proxy para poder leer los blogs que hablan del tema.<br /><br />En uno de los blogs que leo hablan de Turbonett, yo ahora estoy navegando desde tigo movil y tambien esta bloqueado?!<br /><br />Yo no soy de los que apoyan las teorías conspiradoras, pero esto me suena bastante preocupante. Esto es algo que uno podría pensar que estuviera pasando en IRAN o COREA del Norte, o que hubiera pasado hace 25 años.... pero hoy?<br /><br />No me parece un bug de dns o algo por el estilo, porque no es posible que los distintos proveedores de internet tengan el mismo bug.<br /><br />Hoy voy a llamar a mi proveedor de internet para exigir que vuelvan a habilitar este portal. Les invito a publicar esta noticia en su blog, en su twitter, en el mensajito de su msn y a llamar a su proveedor de internet para que les expliquen porque tienen bloqueado WordPress. <br /><br />Adjunto el post escrito en el blog de Javier Gramajo, por si no pueden leerlo. La dirección es esta http://jgramajo.wordpress.com/2009/06/30/bloqueo-de-blogs-en-guatemala/<br /><br /><span style="font-weight: bold;">Bloqueo de Blogs en Guatemala (Javier Gramajo)</span><br /><p>Las razones del bloqueo o fallo no las se y en cualquier caso hay que ir dos pasos más allá, mi recomendación es que para lo usuarios de cualquier sistema operativo se instalen <a title="Tor Project" href="http://www.torproject.org/" target="_blank">TOR</a>, además es muy importante que le expliquen a sus contactos como resolver este problema mandándoles las referencias a manuales que permitan la instalación adecuada y oportunamente.</p> <p>Como presidente de la Comisión Técnica Intersectorial de Información e Informática del <a href="http://www.concyt.gob.gt/" target="_blank">CONCYT</a> estoy haciendo todas las averiguaciones oportunas y de ser necesario haremos un comunicado en relación al bloqueo y el atentado que posiblemente se esté cometiendo a la libre emisión del pensamiento en Guatemala, como ciudadano me preocupa el cierre voluntario pero abrupto de dos blogs o espacios que han sido seguidos por muchas personas <a title="Fuera Colom" href="http://fueracolom.com/" target="_blank">FueraColom</a> y <a title="Prensa Negra" href="http://prensanegra.wordpress.com/" target="_blank">PrensaNegra</a>, no califico aqui lo acertado de cada espacio, si no la expresión clara de la democracia que impera o debería imperar en Guatemala, en relación a la libre expresión del pensamiento, libertad que se ha puesto en entredicho al señalar a miembros de la comunidad Bloggers o Twitteros como es el caso de <a title="Jean Anleu" href="http://alt1040.com/2009/05/carta-de-jean-anleu-a-la-opinion-publica" target="_blank">Jean Anelu (carta abierta)</a> o <a title="@janfer" href="http://www.prensalibre.com/pl/2009/junio/27/324386.html" target="_blank">@jeanfer (entrevista)</a>.</p> <p>El uso de las Tecnologías de la Información y las Comunicaciones TICs en Guatemala es de uso intensivo y los distintos indicadores en los que aparece Guatemala no son fiel reflejo de la realidad de un país como Guatemala, el uso de las TICs y las últimas noticias de impacto mundial, las actuaciones y manifestaciones de los últimos meses, ponen de manifiesto a un gran colectivo fundamentado en las TICs y como utiliza un medio trascendental para la búsqueda de una sociedad más equilibrada, desde mi perspectiva todos los sectores deberán poner más atención a uso e impacto que tienen las TICs en la sociedad Guatemalteca de hoy en adelante, si quieren ser coherentes con ese 43% de la población menor de 30 años de este país.</p> <p>Se están realizando distintas propuestas dentro de la sociedad Guatemalteca quizá una de las más estructuradas sea la de <a title="Pro Reforma" href="http://www.blogger.com/www.proreforma.org.gt/" target="_blank">ProReforma</a> propuesta que deberá ser analizada por los distintos colectivos ya existentes y que deberia analizarse para que sea apoyada, no solo por las 70,000 firmas que ha recaudado si no por millones de Guatemaltecos, pero como todo deberá pasar por el consenso de cada Guatemalteco, quizá la única forma de que sea consensuada y validada radique en la utilización de las TICs, dependerá de la estrategia que sigan los que la proponen para social izarla por las redes sociales oportunamente, hay que mencionar que hay cuatro estados en un proceso de validación: Independencia, codependencia, contra dependencia, Interdependencia. No pretendo explicar cada uno pero quizá el más peligroso sea el de contra dependencia que es un estado el que cualquier propuesta será rechazada porque no se origina en el que la rechaza, <a title="¡CUÁNTO DAÑO NOS HAN HECHO!" href="http://www.sigloxxi.com/opinion/6155" target="_blank">Guatemala no necesita</a> de personas contra dependientes, independientes (en su sentido negativo) y menos codependientes, necesitamos trabajar de manera interdependiente.</p> <p>Finalmente muchos de los movimientos que se generarón en los últimos meses en Guatemala, lo cuales han fundamentado su actuar en las TICs, es en esos espacios donde debería calificarse si el movimiento se ha <a href="http://www.lahora.com.gt/notas.php?key=51184&fch=2009-06-27" target="_blank">apagado o no</a>, no entiendo como se está calificando la actuación de los distintos colectivos basados en la <a title="Tomarán las calles para expresar repudio " href="http://www.prensalibre.com.gt/pl/2009/junio/28/322270.html" target="_blank">presencia o protesta</a> física, en primer lugar es necesario un cambio de paradigma de los que participan y aquellos que califican en y a los movimientos, la protesta no está en la calles está en los blogs, en los mensajes, correos, cadenas, redes sociales, etc, y es por ello que es tan peligroso el hecho que hasta el día de hoy no se pueda acceder a los blogs publicados en espacios como wordpress.</p> <p>Con el bloqueo de los Blogs que residen en wordpress, donde seguramente se generan más del 60% de los blog en Guateamala se están dejando de discutir temas como la Comisión de Postulaciones, el recurso interspuesto por los Rectores (<a title="Rectores en la mira" href="http://www.prensalibre.com/pl/2009/junio/28/321936.html" target="_blank">artículo</a>, <a title="Sobre la consulta de los rectores" href="http://www.prensalibre.com/pl/2009/junio/26/321697.html" target="_blank">opinión</a>) de la universidades del país en la Corte de Constitucionalidad (<a title="CC suspende provisionalmente el sorteo para presidir comisiones de postulación " href="http://www.prensalibre.com/pl/2009/junio/26/324343.html" target="_blank">articulo</a>, <a title="Celeridad de CC genera dudas" href="http://www.prensalibre.com/pl/2009/junio/27/324367.html" target="_blank">declaraciones</a>) así que sea fallo o bloqueo existen herramientas que permiten evadir cualquier de los anteriores, no quiero dejar de terminar sin recomendar a todos aquellos estudiantes o profesionales del sector TICs en Guatemala a que jamas utilicen su conocimiento para atentar contra la <a title="Derechos fundamentales." href="http://www.wikilearning.com/apuntes/los_derechos_fundamentales/11318" target="_blank">derechos fundamentales</a> de cualquier individuo y ciudadano de un país.</p> <p>Relacionados con el tema:</p> <p>1.<a title="Carpe Diem" href="http://luisfi61.blogspot.com/2009/06/que-es-lo-que-pasa-con-wordpress-en.html" target="_blank">Carpe Diem</a></p> <p>2.<a title="Guatemala Drummer" href="http://guatemaladrummer.blogspot.com/2009/06/acceso-desde-isp-de-telgua-wordpresscom.html" target="_blank">Guatemala Drummer</a></p> <p>3.<a title="Maestros de la Web" href="http://www.maestrosdelweb.com/actualidad/guatemala-problema-acceso-wordpresscom/" target="_blank">Maestros de la Web</a></p> <p>4. Artículo: <a title="Artículo" href="http://www.prensalibre.com/pl/2009/junio/29/324738.html" target="_blank">Prensa Libre se expresan en la web</a></p> <p>5. <a title="ALT1040" href="http://alt1040.com/2009/06/guatemala-bloquea-el-acceso-a-wordpresscom" target="_blank">ALT1040: Guatemala Bloquea acceso a WordPress</a></p><p><br /></p></div>carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com1tag:blogger.com,1999:blog-5860268.post-17901837397567225602009-05-27T15:12:00.001-06:002009-05-27T15:12:44.873-06:00Oracle busquedas like (fuzzy, contains, soundex)<span style="font-family:arial;">Necesito hacer una busqueda por nombres, pero quiero que el sistema me diga si hay un nombre "parecido" en el sistema. Es decir, quiero buscar un cliente llamado Carlos Castañeda pero en la base de datos tengo varios similares, aunque ninguno igual:</span><br /><span style="font-family:arial;"> Juan Carlos Castañeda</span><br /><span style="font-family:arial;"> Carlos Castañeda Perez</span><br /><span style="font-family:arial;"> Carlos Castaneda</span><br /><br /><span style="font-family:arial;">La verdad estuve divagando bastante en el tema y no lograba encontrar el camino correcto.</span><br /><br /><span style="font-family:arial;">Lo primero que busqué fue la funcion </span><a style="font-family: arial;" href="http://es.wikipedia.org/wiki/Soundex">Soundex</a><span style="font-family:arial;">. Soundex es un algoritmo que hace equivalencias foneticas de 2 palabras. Por ejemplo ait con eight. Cada palabra tiene un valor soundex y si los valores son iguales, entonces, tengo un acierto.</span><br /><span style="font-family:arial;"> <span style="font-style: italic;"> <span style="color: rgb(102, 102, 102);">select soundex('eigt'), soundex('eight') from dual</span></span></span><br /><span style="font-family:arial;"> Ambos registros me devuelven E230 por lo que deben ser equivalentes.</span><br /><br /><span style="font-family:arial;">Pero.... este algoritmo solo funciona en ingles. No para español.</span><br /><br /><span style="font-family:arial;">Seguí buscando y encontre un blog con una implementacion plsql del soundex: http://oraclenotepad.blogspot.com/2008/03/soundex-en-espaol.html</span><br /><br /><span style="font-family:arial;">Pero el soundex me compara solamente una palabra y yo quería comparar 2 nombres completos. Modifiqué un poco el codigo e hize una funcion que sacaba el soundex de cada palabra del nombre_a_buscar en el campo_nombre y si cumplía mas del N porciento entonces devolvía ok. Estaba bien, pero... </span><br /><br /><span style="font-family:arial;">el performance se fue al suelo cuando quería buscar en una tabla con mas de medio millon de registros.</span><br /><br /><span style="font-family:arial;">De dedique entonces a buscar la funcion CONTAINS de Oracle. Esta funcion me permite buscar en textos grandes. Separa las palabras de un texto y las indexa. Hay que crear un indice para utilizarla:</span><br /><br /><span style="font-style: italic; color: rgb(153, 153, 153);font-family:arial;" >create index clientes_idx on temp (nombre) indextype;</span><br /><br /><span style="font-family:arial;">ya ahi podía hacer consultas:</span><br /><span style="color: rgb(153, 153, 153); font-style: italic;font-family:arial;" >SELECT score(1),nombre FROM clientesWHERE CONTAINS (nombre, 'castañeda',1) > 0;</span><br /><br /><span style="font-family:arial;">El contains devuelve un score con el que se evalúa el resultado. Mientras mas alto sea el resultado es mas exacta la busqueda.</span><br /><br /><span style="font-family:arial;">Cuando busco con 2 nombres, este query me devuelve los resultados que tengan los 2 nombres, por ejemplo juan Carlos Castañeda o Carlos Castañeda Perez</span><br /><span style="font-style: italic; color: rgb(153, 153, 153);font-family:arial;" >SELECT score(1),nombre FROM clientesWHERE CONTAINS (nombre, 'carlos castañeda',1) > 0;</span><br /><br /><span style="font-family:arial;">pero... no me devuelve nombres como Carlos Alberto Castañeda Perez.</span><br /><br /><span style="font-family:arial;">agregué un OR a la consulta</span><br /><span style="color: rgb(153, 153, 153); font-style: italic;font-family:arial;" >SELECT score(1),nombre FROM clientesWHERE CONTAINS (nombre, 'carlos or castañeda',1) > 0;</span><br /><span style="font-family:arial;">pero... me devuelve todos los carlos y todos los castañedas. Carlos Perez, Carlos Lopez, Juan Castañeda, Carlos Castañeda, etc.</span><br /><br /><span style="font-family:arial;">Cambié la consulta a un AND y mejoró </span><br /><span style="font-style: italic; color: rgb(153, 153, 153);font-family:arial;" >SELECT score(1),nombre FROM clientesWHERE CONTAINS (nombre, 'carlos or castañeda',1) > 0;</span><br /><br /><span style="font-family:arial;">Pero me posicionaba de igual manera el Carlos Castañeda del Carlos Jose Castañeda y del Carlos Castañeda Perez.</span><br /><br /><span style="font-family:arial;">Necesitaba diferenciar las busquedas exactas.</span><br /><br /><span style="font-family:arial;">Busque entonces: </span><br /><span style="font-style: italic; color: rgb(153, 153, 153);font-family:arial;" >SELECT score(1),nombre FROM clientesWHERE CONTAINS (nombre, 'carlos or castañeda or (carlos and castaneda)',1) > 0;</span><br /><br /><span style="font-family:arial;">El query se empezaba a complicar un poco. Además estaba buscando tambien que me diera busquedas Fuzzy, es decir, busquedas que me devolvieran palabras que contienen "casi" todos los caracteres de la palabra a buscar.</span><br /><br /><span style="font-family:arial;">en ese caso debía buscar</span><br /><span style="font-style: italic; color: rgb(102, 102, 102);font-family:arial;" >SELECT score(1),nombre FROM clientesWHERE CONTAINS (nombre, '?carlos or ?castañeda',1) > 0;</span><br /><br /><span style="font-family:arial;">Encontré también algo que no había utilizado que es el "query template" que me permitiría tener un query un poco más sencillo, con esto deje mi query así:</span><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyw4SphMN_zTlj-BXlPiSkxxEaE1_w4syk4i8tADbzgdskI-5bbE7w3H2DDpy3acLDbF-VlxLewzS_S6Fsjf7dvv0ilmq3NdjGe3HyEy_g50d-C4RHcbGzUYBJ4rVHPaZ3FhUUqw/s1600-h/query.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 147px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyw4SphMN_zTlj-BXlPiSkxxEaE1_w4syk4i8tADbzgdskI-5bbE7w3H2DDpy3acLDbF-VlxLewzS_S6Fsjf7dvv0ilmq3NdjGe3HyEy_g50d-C4RHcbGzUYBJ4rVHPaZ3FhUUqw/s320/query.jpg" alt="" id="BLOGGER_PHOTO_ID_5340614130389740034" border="0" /></a><br /><br /><br /><br /><br /><br /><br /><br /><br /><span style="font-family:arial;">Lo que hace la plantilla es partir la cadena que envio en textquery como si fuesen varios tokens, y además va evaluando progresivamente cada una de las opciones que le envío. Es decir, primero busca con AND para ver si estan todas las palabras:</span><br /><span style="font-style: italic; color: rgb(153, 153, 153);font-family:arial;" ><rewrite>transform((TOKENS, "{", "}", "AND"))</rewrite></span><br /><br /><span style="font-family:arial;">Luego busco con AND pero con palabras "fuzzy" o parecidas, añadiendo el "?"</span><br /><span style="font-style: italic; color: rgb(102, 102, 102);font-family:arial;" ><rewrite>transform((TOKENS, "?{", "}", "AND"))</rewrite></span><br /><br /><span style="font-family:arial;">Si quisiera que hiciera un soundex pondria un "!" antes del token. Pero el soundex es en ingles y no me sirve.</span><br /><span style="font-family:arial;"> <span style="font-style: italic; color: rgb(102, 102, 102);"><rewrite>transform((TOKENS, "!{", "}", "AND"))</rewrite></span></span><br /><br /><span style="font-family:arial;">Luego hago lo mismo pero con OR para que busque alguna de las 2 palabras.</span><br /><br /><span style="font-family:arial;">pero...</span><br /><span style="font-family:arial;"> también estuve leyendo que el query no estaba sincronizado por default, habría que sincronizarlo.</span><br /><pre style="font-family:arial;"><span style="font-style: italic; color: rgb(102, 102, 102);">begin</span><br /><span style="font-style: italic; color: rgb(102, 102, 102);"> CTX_DDL.SYNC_INDEX('clientes_idx','50K');</span><br /><span style="font-style: italic; color: rgb(102, 102, 102);">end;</span><br /><span style="font-style: italic; color: rgb(102, 102, 102);">/</span><br /><br />pero.. yo no quería sincronizarlo cada ves que ejecuto el query... así que cambie el indice para que se sincronice al hacer commit:<br /><br /><span style="color: rgb(102, 102, 102); font-style: italic;">create index clientes_idx on temp (nombre) indextype is ctxsys.context parameters('sync (on commit)');</span><br /><br />ahora sí, cuando quise buscar CASTANEDA o JOSE en lugar de josé no me devolvia los mismo valores. Consideras las tildes como caracteres distintos.<br /><br />Encontre que el indice hay que indicarle que utilice un LEXER_BASIC.<br /><br />Para esto me conecte como sys y me di grants: <span style="font-style: italic; color: rgb(102, 102, 102);">grant execute on CTX_DDL to scott;</span><br /><br />ya en mi esquema, creé una preferencia con el LEXER que necesito:<br /><span style="font-style: italic; color: rgb(102, 102, 102);">begin</span><br /><span style="font-style: italic; color: rgb(102, 102, 102);"> CTX_DDL.CREATE_PREFERENCE ('LEXER_SINTILDES', 'BASIC_LEXER');</span><br /><span style="font-style: italic; color: rgb(102, 102, 102);"> CTX_DDL.SET_ATTRIBUTE ('LEXER_SINTILDES', 'BASE_LETTER', 'YES');</span><br /><span style="font-style: italic; color: rgb(102, 102, 102);"> end;</span><br /><span style="font-style: italic; color: rgb(102, 102, 102);"> /</span><br /><br />recreé el indice:<br /><br /><span style="color: rgb(102, 102, 102); font-style: italic;">create index temp_nombre_idx on temp (nom_contacto) indextype is ctxsys.context parameters('sync (on commit) LEXER LEXER_SINTILDES');</span><br /><br />Con eso ya logré los resultados que esperaba. mmm... no del todo. No encontré un soundex que me diera mejores resultados sin sacrificar el performance. Pero tengo buenos resultados.<br /><br />saludos!<br /></pre><span style="font-family:arial;">Algunos de los links que leí... solo algunos:<br /><br /></span><span style="font-family:arial;">http://hugoracle.blogspot.com/2008/07/mejora-de-desempeo-con-oracle-text.html</span><br /><span style="font-family:arial;">http://www.orafaq.com/forum/t/95509/2/</span><br /><cite style="font-family: arial;">http://www.<b>oracle</b>.com/technology/products/text/pdf/10gtext_features_overview.<wbr>pdf</cite><br /><span style="font-family:arial;">http://www.oracle.com/technology/products/text/htdocs/prog_relax.html?_template=/ocom/print</span>carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com3tag:blogger.com,1999:blog-5860268.post-18840734907527637942009-05-19T12:44:00.008-06:002009-05-20T07:02:24.172-06:00WSWS3549E: Error: WSDL2Java could not discover a suitable StubWriter for null.Estabamos creando un cliente de webservice en Rational Web Developer 6.0.<br />El servicio estaba hecho en visual basic o .net<br />Cuando tratabamos de consumirlo recibimos un error de WSWS3549E: Error: WSDL2Java could not discover a suitable StubWriter for null.<br /><br />Buscando un poco en la red, encontre que el problema es que RWD6.0 no utiliza soap 1.2 y por eso no me dejaba crear el cliente.<br /><br />Encontré 3 posibles soluciones:<br />llamar a los desarrolladores del servicio y pedir que lo publiquen sin soporte soap 1.2, esto cambiando el web.config agregando estas lineas. Con esto logre crear el cliente correctamente.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiprZgnDqi75eNJhGyTQVcTfiORotKupK69Rm_YqCwx-LNOwMWNFr7mCTDRUiqBsnH8_tN_cjv_WYYkhcqN3at7cSPy63ISyFKhm1yyeIvZ7OSJDKscArCnfwOA4HIWUriZ5r-8Mg/s1600-h/basic.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 437px; height: 78px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiprZgnDqi75eNJhGyTQVcTfiORotKupK69Rm_YqCwx-LNOwMWNFr7mCTDRUiqBsnH8_tN_cjv_WYYkhcqN3at7cSPy63ISyFKhm1yyeIvZ7OSJDKscArCnfwOA4HIWUriZ5r-8Mg/s320/basic.jpg" alt="" id="BLOGGER_PHOTO_ID_5337610695814456626" border="0" /></a><br /><br /><br /><br /><br />Crear el cliente usando Axis, ahi logré utilizar el servicio.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc9Q3lo2t4HpyYaDYbMZHN4Fvk3RsTTmUCOjbEl-YA7yP79lT8pfIeH38rqLyC0WNNb_CZrfYP92azDzHhXc-ngyqEDoY-xvO6wSvAtUmPU1eLp_9AXeeAKnKqenAFVJ92uZh93w/s1600-h/axis.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 380px; height: 164px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc9Q3lo2t4HpyYaDYbMZHN4Fvk3RsTTmUCOjbEl-YA7yP79lT8pfIeH38rqLyC0WNNb_CZrfYP92azDzHhXc-ngyqEDoY-xvO6wSvAtUmPU1eLp_9AXeeAKnKqenAFVJ92uZh93w/s320/axis.jpg" alt="" id="BLOGGER_PHOTO_ID_5337610684239382338" border="0" /></a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Modificar "a mano" los wsdl quitando las llamadas a soap 1.2<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUi9vR9GIMS8ICg9lJJbVFXiDLkhTQlxsUZ0yh66RLi-7yl9MsV67FxviczYX38ym-PIKpl3sYTxo7SQqgAHaO4QZMRsXkkLE_eW7vcCCYEsk5Seh7Lebqi4XDb8TAVCvnydIYsw/s1600-h/wsdl1.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 426px; height: 199px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUi9vR9GIMS8ICg9lJJbVFXiDLkhTQlxsUZ0yh66RLi-7yl9MsV67FxviczYX38ym-PIKpl3sYTxo7SQqgAHaO4QZMRsXkkLE_eW7vcCCYEsk5Seh7Lebqi4XDb8TAVCvnydIYsw/s320/wsdl1.jpg" alt="" id="BLOGGER_PHOTO_ID_5337610693665412018" border="0" /></a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Hasta ahí todo bien... pero... mas cosas pasaron en esa implementación....<br /><br /><a style="font-family: arial;" href="http://www.ibm.com/developerworks/forums/thread.jspa?threadID=113283&tstart=30">Ref. http://www.ibm.com/developerworks/forums/thread.jspa?threadID=113283&tstart=30</a><br /><br />continuará.-carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com1tag:blogger.com,1999:blog-5860268.post-56079348953819212552009-04-16T07:00:00.001-06:002009-04-16T07:00:01.105-06:00Error WSWS3047E al consumir un webservice en Rational Web Developer<span style=""><span style="font-family:Arial;">Relacionado al Post Anterior, estabamos tratando de consumir un webservice desde el Rational Web Developer de IBM.<br />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.<br /><br />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:</span></span><span style="font-style: italic;"><span style="font-family:Arial;"><br /><br />WebServicesFault<br />faultCode: {<a send="true" class="moz-txt-link-freetext" href="http://schemas.xmlsoap.org/soap/envelope/">http://schemas.xmlsoap.org/soap/envelope/</a>}Server.generalException<br />faultString: org.xml.sax.SAXException: WSWS3047E: Error:<b> No se puede deserializar el elemento cod_Cuenta del bean</b> dataTransferObject.customerABE.customerDomain.framework.scl.tmmas.com.RegistroComercialDTO.<br />faultActor: null<br />faultDetail:<br /><br /></span></span><span style=""><span style="font-family:Arial;">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.</span></span><span style=""><span style="font-family:Arial;"> 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.</span></span><span style="font-style: italic;"><span style="font-family:Arial;"><br /></span></span><span style=""><span style="font-family:Arial;"><br />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ó.<br /><br />Los servicios fueron desarrollados sobre WebLogic.<br /><br />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.<br /></span></span><span style=""><span style="font-family:Arial;"><br /><a class="moz-txt-link-freetext" href="http://www-01.ibm.com/support/docview.wss?uid=swg21220377">http://www-01.ibm.com/support/docview.wss?uid=swg21220377</a> </span></span><br /><span style=""><span style="font-family:Arial;"><br />Procedimos a cambiar nuevamente el wsdl indicandole la propiedad </span></span><span style="font-style: italic;"><span style="font-family:Arial;">elementFormDefault="unqualified"</span></span><span style=""><span style="font-family:Arial;"> </span></span><span style=""><span style="font-family:Arial;">al</span></span><span style=""><span style="font-family:Arial;"> wsdl </span></span><span style=""><span style="font-family:Arial;">y recrear el cliente y apartir de ahi empezamos a consumir correctamente los servicios.<br /><br />El unqualified es porque el weblogic no genera los namespaces usando las especificaciones RFC al 100% mientras que el websphere sí.</span></span><span style=""><span style="font-family:Arial;"><br /><br />saludos!</span></span><span style="font-style: italic;"><span style="font-family:Arial;"><br /><br /><br /></span></span>carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com1tag:blogger.com,1999:blog-5860268.post-58675042278980661592009-04-15T08:29:00.005-06:002009-04-15T08:43:46.917-06:00TCPMonAyer 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.<br /><br />Leyendo en internet encontré un producto buenísimo que se llama <a href="http://ws.apache.org/commons/tcpmon/">TCPMon</a>. 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.<br /><br />Yo estaba consumiendo un servicio en el SERVERXXX con el puerto 7103.<br /><br />Lo que hice fué configurar para que TCPMon actuara como listener y en un puerto 7199 y apuntara a SERVERXXX:7103. <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb_Cb271b2n1aJi-OlkYj1ouypZx8Xc_I2Ym0_kJtbIT98FGL2ACoShq1WTGtSwj3TsaAO0JaJS8Ksg8QthNfCcwA6SKP79CAvCwhtyTN3721hcLNpFGuVXLhBoLmVGRM-OZtMww/s1600-h/tcpmon02.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 311px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjb_Cb271b2n1aJi-OlkYj1ouypZx8Xc_I2Ym0_kJtbIT98FGL2ACoShq1WTGtSwj3TsaAO0JaJS8Ksg8QthNfCcwA6SKP79CAvCwhtyTN3721hcLNpFGuVXLhBoLmVGRM-OZtMww/s320/tcpmon02.jpg" alt="" id="BLOGGER_PHOTO_ID_5324928288359692866" border="0" /></a><br />Cambie mi aplicacion para usar localhost:7199 y pude rastrear todos los mensajes que pasaban por la red.<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE00ann5e26G8l_8RNyrotif4Yc7DMZRKYtlXLokqjhFiuhvgOSR5CGMvldoj1QEyOPRYVtc4Ux4qZXcvRCzD8011y2kFQMbDFKPkXNVO_IjMeZskX-M4TtzkO2O5tKIKmgyieDg/s1600-h/tcpmon01.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 225px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE00ann5e26G8l_8RNyrotif4Yc7DMZRKYtlXLokqjhFiuhvgOSR5CGMvldoj1QEyOPRYVtc4Ux4qZXcvRCzD8011y2kFQMbDFKPkXNVO_IjMeZskX-M4TtzkO2O5tKIKmgyieDg/s320/tcpmon01.jpg" alt="" id="BLOGGER_PHOTO_ID_5324928064037696834" border="0" /></a><br /><br />Me parece una aplicacion muy util para temas de webservices, aplicaciones que leen datos de sockets, analisis de paquetes http.<br /><br />saludos!carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com0tag:blogger.com,1999:blog-5860268.post-2142229730195768182009-04-04T17:22:00.000-06:002009-04-04T17:23:20.705-06:00Configurar 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)<br /><br />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:<br /><br />Creo que por default el servidor asigna un rango de 256MB a 512MB.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUUBi2uDbktqFF7EmX7mfKj5STRm_BT6_PES6FCALif7GVX-S3jQGFOr9yFM6AKFVWWvgpAZFC5yylb-RhOzx_pEkCR893EgPwhsuSBx5rCS2hivOhNDkyCNzeKmfv5GC1qAgHrg/s1600-h/was+memoria+00.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 117px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUUBi2uDbktqFF7EmX7mfKj5STRm_BT6_PES6FCALif7GVX-S3jQGFOr9yFM6AKFVWWvgpAZFC5yylb-RhOzx_pEkCR893EgPwhsuSBx5rCS2hivOhNDkyCNzeKmfv5GC1qAgHrg/s320/was+memoria+00.jpg" alt="" id="BLOGGER_PHOTO_ID_5320979010345559682" border="0" /></a><br /><br />Entro al administrador y busco el servidor de aplicaciones que tengo configurado.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIeNqRVFy7iUn1-BTAINJyUOeL3_lili2FVooxSTRZ5FE-frQA-FCJTS5vBOWaga-uaF7Hx5J-F5YirxwKQHjHhZUsEYXkEpRbDt0wzrRfkfGfO7OdsHwbbhBF5iUNZMyarjLafw/s1600-h/was+memoria+01.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 209px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIeNqRVFy7iUn1-BTAINJyUOeL3_lili2FVooxSTRZ5FE-frQA-FCJTS5vBOWaga-uaF7Hx5J-F5YirxwKQHjHhZUsEYXkEpRbDt0wzrRfkfGfO7OdsHwbbhBF5iUNZMyarjLafw/s320/was+memoria+01.jpg" alt="" id="BLOGGER_PHOTO_ID_5320976478072121458" border="0" /></a><br />Busco las opciones del JVM, donde dice "definición de procesos". (mi was esta en español :s )<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG7pOtsftgMMikXIbqVnwICFgvwmOHgAI0toA5Hyp6GyhZ5a3bG8t631KtDGjk22K6ekorSWtL-grmexngcd_QZZZhGpckuvW5OhKUkgtKuAy5OFraf3vdUD3R7u13OgkoZ4jteg/s1600-h/was+memoria+02.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 291px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG7pOtsftgMMikXIbqVnwICFgvwmOHgAI0toA5Hyp6GyhZ5a3bG8t631KtDGjk22K6ekorSWtL-grmexngcd_QZZZhGpckuvW5OhKUkgtKuAy5OFraf3vdUD3R7u13OgkoZ4jteg/s320/was+memoria+02.jpg" alt="" id="BLOGGER_PHOTO_ID_5320979237213914386" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtpox_OA58N92zKzvS8iUlfZ1fHsvC9FUXzfZdgfRCusKkRTeOcAApvO0q5IDf7flMeXEBQL2H7-rgyyoQBbfY6hUV2kzSWk8zMOJEZo8KaDspP9xjoL__6vE5RImjtsBYVR4_IA/s1600-h/was+memoria+03.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 159px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtpox_OA58N92zKzvS8iUlfZ1fHsvC9FUXzfZdgfRCusKkRTeOcAApvO0q5IDf7flMeXEBQL2H7-rgyyoQBbfY6hUV2kzSWk8zMOJEZo8KaDspP9xjoL__6vE5RImjtsBYVR4_IA/s320/was+memoria+03.jpg" alt="" id="BLOGGER_PHOTO_ID_5320979441549860162" border="0" /></a><br />y luego seteo el tamaño de memoria (heap) maximo e inicial.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRC0EOrhRbzWK0XF9x0lvxw6wi8RG32HGKkrU4xc4BRLguehlFcbx3KNH4eKZ3ocFudankKB3K2hMLJ06oaGXqMXL4lWBwgSifxZX5ZWXq9ELb98eZwpDLnnmtPv9DP8rhAx3aDw/s1600-h/was+memoria+04.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRC0EOrhRbzWK0XF9x0lvxw6wi8RG32HGKkrU4xc4BRLguehlFcbx3KNH4eKZ3ocFudankKB3K2hMLJ06oaGXqMXL4lWBwgSifxZX5ZWXq9ELb98eZwpDLnnmtPv9DP8rhAx3aDw/s320/was+memoria+04.jpg" alt="" id="BLOGGER_PHOTO_ID_5320979597635399218" border="0" /></a><br />aplico los cambios y luego bajo el servidor. <span style="font-style: italic;font-family:courier new;" >C:\IBM\WebSphere\AppServer\bin>stopserver server1</span> <span style="font-style: italic;font-family:courier new;" >ADMU0116I: La información de la herramienta se está anotando en el archivo</span> <span style="font-style: italic;font-family:courier new;" > C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\stopServer.</span> <span style="font-style: italic;font-family:courier new;" >log</span> <span style="font-style: italic;font-family:courier new;" >ADMU7702I: Dado que server1 se ha registrado para ejecutarse como un servicio</span> <span style="font-style: italic;font-family:courier new;" > de Windows, la petición de detener este servidor se realizar</span> <span style="font-style: italic;font-family:courier new;" > deteniend</span><span style="font-style: italic;font-family:courier new;" >o el servicio de Windows asociado.</span> <span style="font-style: italic;font-family:courier new;" >ADMU0116I: La información de la herramienta se está anotando en el archivo</span> <span style="font-style: italic;font-family:courier new;" > C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\stopServer.</span> <span style="font-style: italic;font-family:courier new;" >log</span> <span style="font-style: italic;font-family:courier new;" >ADMU0128I: Iniciando herramienta con el perfil AppSrv01</span> <span style="font-style: italic;font-family:courier new;" >ADMU3100I: Leyendo la configuración para el servidor: server1</span> <span style="font-style: italic;font-family:courier new;" >ADMU3201I: Se ha emitido una petición de detención del servidor. Esperando el</span> <span style="font-style: italic;font-family:courier new;" > estado de detención.</span> <span style="font-style: italic;font-family:courier new;" >ADMU4000I: La detención del servidor server1 ha </span><span style="font-style: italic;font-family:courier new;" >finalizado.</span><br /><br /><br />Reinicio el servidor:<br /><span style="font-style: italic;font-family:courier new;" >C:\IBM\WebSphere\AppServer\bin>startserver server1</span> <span style="font-style: italic;font-family:courier new;" >ADMU0116I: La información de la herramienta se está anotando en el archivo</span> <span style="font-style: italic;font-family:courier new;" > C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\startServer</span> <span style="font-style: italic;font-family:courier new;" >.log</span> <span style="font-style: italic;font-family:courier new;" >ADMU7701I: Dado que server1 se ha registrado para ejecutarse como un servicio</span> <span style="font-style: italic;font-family:courier new;" > de Windows, la petición de iniciar este servidor se realizará</span> <span style="font-style: italic;font-family:courier new;" > iniciando el servicio de Windows asociado.</span> <span style="font-style: italic;font-family:courier new;" >ADMU0116I: La información de la herramienta se está anotando en el archivo</span> <span style="font-style: italic;font-family:courier new;" > C:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\startServer</span> <span style="font-style: italic;font-family:courier new;" >.log</span> <span style="font-style: italic;font-family:courier new;" >ADMU0128I: Iniciando herramienta con el perfil AppSrv01</span> <span style="font-style: italic;font-family:courier new;" >ADMU3100I: </span><span style="font-style: italic;font-family:courier new;" >Leyendo la configuración para el servidor: server1</span> <span style="font-style: italic;font-family:courier new;" >ADMU3200I: El servidor se ha iniciado. Esperando el estado de inicialización.</span> <span style="font-style: italic;font-family:courier new;" >ADMU3000I: Servidor server1 abierto para e-business; el ID de proceso es 2920</span><br /><br />Luego de esto... listo! el server tiene nueva memoria.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_U_ai1wF8h_t67LbQJ_FHlIFHgkHhPcsnpLgocchObajhyBK5UtYUs-UspsAbzlfhCGnPEmTPfN7Qbos8WYz7Ggcm56Rq1Ug6gnJw6HsA91vv0ty08CizUkpXQtRpupmDZytqbA/s1600-h/was+memoria+05.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 114px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_U_ai1wF8h_t67LbQJ_FHlIFHgkHhPcsnpLgocchObajhyBK5UtYUs-UspsAbzlfhCGnPEmTPfN7Qbos8WYz7Ggcm56Rq1Ug6gnJw6HsA91vv0ty08CizUkpXQtRpupmDZytqbA/s320/was+memoria+05.jpg" alt="" id="BLOGGER_PHOTO_ID_5320979802703775650" border="0" /></a><br /><br /><span style="font-weight: bold;">Troubleshooting</span><br />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 ;)<br />Esto me provocó que no pudiera entrar al administrador de was a configurar nuevamente la memoria.<br /><br />Lo que hice fue buscar el archivo server.xml <span style="font-style: italic;font-family:courier new;" >C:\IBM\WebSphere\AppServer\profiles\AppSrv01\config\cells\carloscNode01Cell\nodes\carloscNode01\servers\server1\server.xml</span><br />Y modificar la configuración de la memoria desde el archivo de texto:<br />initialHeapSize="512" maximumHeapSize="1024"<br /><br />luego reinicie el server y funcionó de nuevo ;)<br /><br />saludos!carcascohttp://www.blogger.com/profile/04160609060642490217noreply@blogger.com5