28
ago
Tuve la necesidad de hacer una migración de datos en MySQL: De una tabla origen a otra destino completamente distintas (eran tablas de plugins distintos del WordPress). Para ello me topé con dos problemas:
¿Cómo recupero un valor con la fecha del día? (algo así como el “today” de oracle)
¿Cómo hago un “select … into”?
Si deseas consultar la fecha del sistema:
mysql> select date(now())as DateToday;
+------------+
| DateToday |
+------------+
| 2008-12-22 |
+------------+
1 row in set (0.00 sec)
Un select para llenar otra tabla:
MySQL Server no soporta la sintaxis de extensiones Sybase SQL: SELECT … INTO TABLE …. En su lugar, MySQL Server soporta la sintaxis estándar SQL INSERT INTO … SELECT …, que básicamente es lo mismo.
INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
Juntando ambas cosas:
INSERT INTO nueva_tabla (texto_nuevo, fecha_insercion)
SELECT texto_viejo, now()
FROM tabla_vieja;
Tags: bd, Desarrollo, Java, mysql, now, query, sql, today
Filed under: Bases de datos, Ciencias informáticas y computacionales, Desarrollo de software, Lenguajes informáticos, Programación, SQL, Sistemas informáticos
26
ago
Un proceso Java (servidor de aplicaciones, Java Web Start applications, Applets, etc.) requiere una máquina virtual Java (JVM) para su ejecución. Como parte de la configuración se pueden ajustar los valores que mejoran el uso del sistema de la JVM.
Pasaré a explicar los parámetros que más he usado:
-Xms: El valor por defecto son 64Mb. Este valor controla el tamaño inicial del almacenamiento dinámico Java. Si se ajusta correctamente este parámetro se reduce la actividad general de recogida de basura y se mejoran la productividad y el tiempo de respuesta del servidor. Para algunas aplicaciones, el valor por omisión de esta opción puede ser demasiado bajo, lo que causa un número elevado de recogidas de basura sin importancia, por lo que aumentaría el rendimiento en los casos que la aplicación haga uso intensivo de la memoria.
|
Valor por omisión: |
64 MB |
|
Valor recomendado: |
Específico de la carga de trabajo pero superior al valor por omisión. |
|
Uso: |
-Xms256m establece el tamaño del almacenamiento dinámico en 256 megabytes |
-Xmx: Este valor controla el tamaño máximo del almacenamiento dinámico Java. Si se ajusta correctamente este parámetro se reduce la actividad general de recogida de basura y se mejoran la productividad y el tiempo de respuesta del servidor. Para algunas aplicaciones, el valor por omisión de esta opción puede ser demasiado bajo, lo que causa un número elevado de recogidas de basura sin importancia. Si la aplicación supera el tamaño máximo de memoria que marca este parámetro, se lanza la excepción java.lang.OutOfMemoryError. No conviene asignar a este parámetro el máximo de la memoria de la máquina porque si ya no queda memoria física disponible se pueden producir escrituras en memoria asignada a otros programas y provocar un auténtico lío.
|
Valor por omisión: |
128 MB |
|
Valor recomendado: |
Específico de la carga de trabajo pero superior al valor por omisión. |
|
Uso: |
-Xmx512m establece el tamaño del almacenamiento dinámico en 512 megabytes |
-XX:PermSize=: Permite modificar la sección del almacenamiento dinámico reservado para la generación permanente que contiene todos los datos reflectivos de la JVM. Este tamaño debe aumentarse para optimizar el rendimiento de las aplicaciones que carga y descarga dinámicamente muchas clases. Esto agiliza la carga de aplicaciones, sobre todo en el caso de aplicaciones que hagan uso intensivo de este tipo de memoria (Spring, Hibernate, etc.). Si se especifica un valor de 128 MB megabytes se elimina la actividad general de aumentar esta parte del almacenamiento dinámico.
|
Valor recomendado: |
128 MB |
|
Uso: |
XX:PermSize=128m establece el tamaño de perm en 128 megabytes. |
-XX:MaxPermSize=: Tamaño máximo de la memoria de tipo PermGen a 128Mb. El valor por defecto son 64Mb. Si la aplicación supera el tamaño máximo de memoria para este tipo que marca este parámetro, se lanza la excepción java.lang.OutOfMemoryError: PermGen space. El valor necesario para este parámetro siempre suele ser menor que el de la memoria de tipo heap.
|
Valor por omisión: |
64 MB |
|
Valor recomendado: |
Específico de la carga de trabajo pero superior al valor por omisión. |
|
Uso: |
-XX:MaxPermSize=128m establece el tamaño del almacenamiento dinámico en 128 megabytes |
A continuación se dan distintos ejemplos de modificación de la memoria de distinta forma. No es necesario especificar todos los parámetros, se pueden especificar todos o ninguno (y se tomarían los valores por defecto)
Ejecución de un jar:
java -Xms128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -jar example.jar
Ejecución de una clase:
java -Xms128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m com.programacionenjava.examples.MemoryExample
Vía Java Web Start
Panel de control -> Java:
-Xms128M -Xmx256M -XX:PermSize=128M -XX:MaxPermSize=256M
Mediante Apache Ant
<java classname="com.coresware.MyExample" fork="yes" spawn="true">
<jvmarg value="-Xms128m"/>
<jvmarg value="-Xmx512m"/>
<jvmarg value="-XX:PermSize=128m"/>
<jvmarg value="-XX:MaxPermSize=128m"/>
<classpath refid="execution.classpath"/>
</java>
Por parámetros pasados al sistema operativo:
En Windows:
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m
En Linux:
JAVA_OPTS="$JAVA_OPTS -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m"
Fuentes:
Aumentar el tamaño de memoria de la máquina virtual en Java
Websphere Application Server: Ajuste de máquinas virtuales Java
How do you determine a good MaxPermSize?
Tags: Configuración, Desarrollo, Java, MaxPermSize, Memoria, PermSize, Xms, Xmx
Filed under: Arquitectura de software, Ciencias informáticas y computacionales, Desarrollo de software, Java, Lenguajes informáticos, Programación, Servidores de aplicaciones
26
ago
Ayer estuvimos haciendo pruebas a una aplicación desplegada en JBoss en mi máquina. Localmente las pruebas funcionaban pero al intentar conectar desde otra máquina no se podían conectar a la aplicación en mi máquina. El comando “ping” funcionaba. Unos días antes las pruebas estuvieron funcionando pero la única diferencia es que las pruebas anteriores se realizaron con Tomcat 6 y ahora estoy usando JBoss 4.2.
El problema era configurar a JBoss para que admita conexiones de todos lados. Investigando un poco en foros encontré la solución.
Si usas JBoss desde consola debes modificar el archivo run.bat o run.sh, encontrarás en el script una parte que dice:
"%JAVA%" %JAVA_OPTS% ^
-Djava.endorsed.dirs="%JBOSS_ENDORSED_DIRS%" ^
-classpath "%JBOSS_CLASSPATH%" ^
org.jboss.Main %*
Debe modificarse a:
"%JAVA%" %JAVA_OPTS% ^
-Djava.endorsed.dirs="%JBOSS_ENDORSED_DIRS%" ^
-classpath "%JBOSS_CLASSPATH%" ^
org.jboss.Main -b0.0.0.0 %*
(El 0.0.0.0 puede ser modificado si deseas colocar una IP específica)
Otra forma es iniciarlo desde la línea de comandos pasando el parámetro:
run -b 0.0.0.0
Pero como estoy ejecutando JBoss desde Eclipse necesito pasar el parámetro a través de Eclipse así que modifiqué los parámetros con los que inicia el servidor en modo de depuración (similar si lo quieres iniciar en el modo ‘normal’):

Modificando la configuración de la depuración en Eclipse

Configurando JBoss para que permita conexiones de cualquier URL
Como ven en la imagen, también hay parámetros de memoria modificados para que el JBoss no muera en el intento de iniciar.
(Más detalles sobre estos parámetros de memoria aquí)
Tags: Configuración, Desarrollo, Eclipse, Java, JBoss, localhost, Servidores
Filed under: Desarrollo de software, Java, Servidores de aplicaciones, Sistemas informáticos, Software
19
ago
Esta es la versión 3.0 de mi sitio personal. El 19 agosto de 2010, a las 15:23, este espacio personal volvió a ver la luz, renacido por tercera vez. Si quieren más datos o contactarme por favor ir a este link.