Hoy tuve uno de esos problemas que te "sacan un ojo" porque son una tontería, y por lo mismo no encuentras solución fácilmente. Este error que en inglés es "Can't copy / move 'XXX.svn-base' to 'XXX.tmp': The system cannot find the file specified" y que te impide hacer checkout de tu proyecto, surge por la sencilla razón de que existen 2 archivos con el nombre igual, pero que uno de ellos difiere en mayúsculas y minúsculas. Como Windows no es "Case Sensitive", se genera este mensaje de error que nada tiene que ver la realidad.
Gracias a este post, pude hacer checkout y continuar con mi trabajo normalmente, claro, luego de perder unas cuántas horas.
martes, 17 de marzo de 2009
viernes, 6 de marzo de 2009
Error con Xerces
Durante el desarrollo de Snoits, me encontré con el desagradable problema del error org.apache.xerces.dom.DeferredDocumentImpl.normalizeDocument()V al momento de utlizar Facebook Connect.
Mirando la documentación de Glassfish encontré que se podía solucionar agregando la siguiente línea en el archivo domain.xml
Efectivamente esto solucionó el problema con Facebook Connect pero generó otro con paypal. Luego de investigar un poco encontré que el error se produce por la librería "xerces.jar" que viene incluida en la distribución de paypal.
Luego de actualizarla con esta versión (2.9.1), se solucionaron ambos problemas.
Mirando la documentación de Glassfish encontré que se podía solucionar agregando la siguiente línea en el archivo domain.xml
- <jvm-options>-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl</jvm-options>
-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
Efectivamente esto solucionó el problema con Facebook Connect pero generó otro con paypal. Luego de investigar un poco encontré que el error se produce por la librería "xerces.jar" que viene incluida en la distribución de paypal.
Luego de actualizarla con esta versión (2.9.1), se solucionaron ambos problemas.
jueves, 5 de marzo de 2009
X-Deep/32 y Putty
Muchas veces es necesario acceder remotamente a un servidor, sin embargo es normal que se pierda la práctica con las líneas de comandos.
Para muchos es más práctico configurar cosas por medio de interfaces gráficas. Pues gracias a Putty y X-Deep/32 es posible por medio de SSH.
En esta página está muy bien explicado.
Con esta "fórmula" pude solucionar el problema que se presentaba cuando intentaba instalar Glassfish por medio de una consola, pero la licencia se mostraba de forma gráfica y me generaba un error.
Para muchos es más práctico configurar cosas por medio de interfaces gráficas. Pues gracias a Putty y X-Deep/32 es posible por medio de SSH.
En esta página está muy bien explicado.
Con esta "fórmula" pude solucionar el problema que se presentaba cuando intentaba instalar Glassfish por medio de una consola, pero la licencia se mostraba de forma gráfica y me generaba un error.
Instalar Glassfish para Linux en Modo Consola
Gracias a la amable ayuda que nos ha brindado Walmeric, hoy he tenido que instalar Glassfish en un servidor remoto por medio de SSH.
Lo primero fue obviamente descargarlo. Para ello solo basta escribir el comando
Una vez descargado, ejecuté el comando
Esto genera una carpeta llamada "glassfish".
Posteriormente dentro de la carpeta generada hay que ejecutar el comando
Es posible que tu equipo no tenga instalado ANT. En la documentación de glassfish dice que lo puedes ejecutar directamente desde la carpeta con el comando:
Esto no lo probé. Simplemente instalé ANT que ya explicaré cómo en una entrada posterior.
También tuve un pequeño problema al momento de instalar ya que la licencia me pedía interfaz gráfica. Para solucionarlo utilicé X-Deep/32 y Putty para acceder remotamente al X-server. También lo explicaré en una entrada posterior.
Esta ayuda la encontré en el blog de Ken Kranz y en Glassfish Community.
ACTUALIZACIÓN: Tuve un error de memoria con Ant que solucioné con el siguiente comando:
Lo primero fue obviamente descargarlo. Para ello solo basta escribir el comando
- wget http://java.net/download/javaee5/v2.1_branch/promoted/Linux/glassfish-installer-v2.1-b60e-linux.jar
wget http://java.net/download/javaee5/v2.1_branch/promoted/Linux/glassfish-installer-v2.1-b60e-linux.jar
Una vez descargado, ejecuté el comando
- java -Xmx256m -jar filename.jar
java -Xmx256m -jar filename.jar
Esto genera una carpeta llamada "glassfish".
Posteriormente dentro de la carpeta generada hay que ejecutar el comando
- ant -f setup.xml
ant -f setup.xml
Es posible que tu equipo no tenga instalado ANT. En la documentación de glassfish dice que lo puedes ejecutar directamente desde la carpeta con el comando:
- % lib/ant/bin/ant -f setup.xml
% lib/ant/bin/ant -f setup.xml
Esto no lo probé. Simplemente instalé ANT que ya explicaré cómo en una entrada posterior.
También tuve un pequeño problema al momento de instalar ya que la licencia me pedía interfaz gráfica. Para solucionarlo utilicé X-Deep/32 y Putty para acceder remotamente al X-server. También lo explicaré en una entrada posterior.
Esta ayuda la encontré en el blog de Ken Kranz y en Glassfish Community.
ACTUALIZACIÓN: Tuve un error de memoria con Ant que solucioné con el siguiente comando:
- export ANT_OPTS=-Xmx256m
export ANT_OPTS=-Xmx256m
martes, 17 de febrero de 2009
TinyMCE: Botónes Básicos
TinyMCE es un gran editor WYSIWYG (What You See, Is What You Get) en javascript. Sin embargo, es posible que en nuestra aplicación no sean necesarias tantas funciones.
Un ejemplo de un editor de texto con funciones básicas sería el siguiente:
Aquí se puede ver que el "mode" es "exact". Esto quiere decir que solo incluirá los botones que le indiquemos, en este caso bold, italic, underline, etc.
De esta forma, es posible personalizar tanto como se quiera la barra, evitando que el usuario pueda llegar a perderse entre tanta función.
Gracias a Subesh por la información.
Un ejemplo de un editor de texto con funciones básicas sería el siguiente:
- <script language="javascript" type="text/javascript">
- tinyMCE.init({
- theme : "advanced",
- mode: "exact",
- elements : "content",
- theme_advanced_toolbar_location : "top",
- theme_advanced_buttons1 : "bold,italic,underline,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,outdent,indent,separator,undo,redo",
- theme_advanced_buttons2 : "",
- theme_advanced_buttons3 : ""
- });
- </script>
Aquí se puede ver que el "mode" es "exact". Esto quiere decir que solo incluirá los botones que le indiquemos, en este caso bold, italic, underline, etc.
De esta forma, es posible personalizar tanto como se quiera la barra, evitando que el usuario pueda llegar a perderse entre tanta función.
Gracias a Subesh por la información.
jueves, 15 de enero de 2009
Compilar Varios Módulos GWT con Netbeans
Al utilizar el plugin de GWT para Netbeans, se crean automáticamente los scripts de ANT para compilar y empaquetar la aplicación. Sin embargo, esto solo aplica para un módulo. Si se agrega un nuevo módulo, éste no es compilado. Luego de buscar un poco por la red, no logré encontrar una explicación de cómo hacerlo de forma automática desde Netbeans. Por tal motivo, tuve que "picar" manualmente los scripts con el fin de automatizar la tarea.
Para ello, agregué dos definiciones de variables en el archivo gwt.properties ubicado en la carpeta "nbproject".
Esta definición es la siguiente:
Luego en el archivo build-gwt.xml dentro del tag dupliqué las etiquetas de java, property y move. Es decir, como se muestra a continuación.
Como verán, el "build.web.dir" es el mismo, sin embargo, cambia el "gwt.output.dir".
Esto lo apliqué para los demás módulos nuevos.
Es importante recordar que este archivo se reconstruye cada vez que cerramos Netbeans. Por lo tanto, hay que reescribirlo a menudo. En mi opinión es una forma "chapucera" de solucionarlo, pero funcionó. Por lo menos, dejé de perder tiempo intentando hacerlo directamente con una función de Netbeans. :p
Si alguien conoce una mejor forma... bienvenida!!
Para ello, agregué dos definiciones de variables en el archivo gwt.properties ubicado en la carpeta "nbproject".
Esta definición es la siguiente:
- gwt.module2=com.snoofing.gwt.UserPrivateArea
- gwt.output.dir2=/com.snoofing.gwt.UserPrivateArea
gwt.module2=com.snoofing.gwt.UserPrivateArea
gwt.output.dir2=/com.snoofing.gwt.UserPrivateArea
Luego en el archivo build-gwt.xml dentro del tag
- <java classpath="${javac.classpath}:${src.dir}" failonerror="true" <brbr=""> classname="com.google.gwt.dev.GWTCompiler" fork="true">
- <arg value="-out"></arg>
- <arg path="${build.web.dir}"></arg>
- <arg value="-style"></arg>
- <arg value="${gwt.compiler.output.style}"></arg>
- <arg value="-logLevel"></arg>
- <arg value="${gwt.compiler.logLevel}"></arg>
- <arg value="${gwt.module2}"></arg>
- </java>
- <property name="gwt.output.dir" value="${gwt.module2}"></property>
- <move todir="${build.web.dir}/${gwt.output.dir2}">
- <fileset dir="${build.web.dir}/${gwt.module2}"></fileset>
- </move>
classname="com.google.gwt.dev.GWTCompiler" fork="true">
Como verán, el "build.web.dir" es el mismo, sin embargo, cambia el "gwt.output.dir".
Esto lo apliqué para los demás módulos nuevos.
Es importante recordar que este archivo se reconstruye cada vez que cerramos Netbeans. Por lo tanto, hay que reescribirlo a menudo. En mi opinión es una forma "chapucera" de solucionarlo, pero funcionó. Por lo menos, dejé de perder tiempo intentando hacerlo directamente con una función de Netbeans. :p
Si alguien conoce una mejor forma... bienvenida!!
Disminuir tiempo de compilación en GWT
Aquellos que programan en GWT, encontrarán que a medida que aumenta el tamaño de la aplicación también aumenta el tiempo de compilación.
Esto se debe a que GWT genera automáticamente los scripts necesarios para hacer compatible la aplicación con la mayoría de navegadores. Sin embargo, en tiempo de desarrollo normalmente se utiliza únicamente uno de ellos, en mi caso, Firefox.
Para disminuir sustancialmente este tiempo, basta con agregar la siguiente línea en tu archivo "nombreModulo.gwt.xml"
En"value" además puedes poner los valores: ie6, gecko, gecko1_8, safari, opera
Gracias a Yekmer por la información, que a su ves la tomó de Olivier
Esto se debe a que GWT genera automáticamente los scripts necesarios para hacer compatible la aplicación con la mayoría de navegadores. Sin embargo, en tiempo de desarrollo normalmente se utiliza únicamente uno de ellos, en mi caso, Firefox.
Para disminuir sustancialmente este tiempo, basta con agregar la siguiente línea en tu archivo "nombreModulo.gwt.xml"
- <set-property name="user.agent" value="gecko1_8"></set-property>
En"value" además puedes poner los valores: ie6, gecko, gecko1_8, safari, opera
Gracias a Yekmer por la información, que a su ves la tomó de Olivier
Un nuevo blog!
Dado que a menudo encuentro dificultades al momento de programar, he decidido llevar un registro que me permita encontrar fácilmente a mí, y ojalá a otros, la solución a problemas comunes.
La idea es que este blog pueda servir como referencia, especialmente a programadores que no dominan el inglés, ya que la mayoría de las soluciones se encuentran en este idioma.
Así que... adelante y espero sirva de algo.
La idea es que este blog pueda servir como referencia, especialmente a programadores que no dominan el inglés, ya que la mayoría de las soluciones se encuentran en este idioma.
Así que... adelante y espero sirva de algo.
Suscribirse a:
Entradas (Atom)