09 agosto 2013

Recuperar disco externo con datos corruptos (chkdsk)

Situación

Contamos con un disco externo, o memoria flash usb, o algún otro dispositivo de almacenamiento al que no podemos acceder.
Más precisamente, en un sistema linux al tratar de acceder al dispositivo nos muestre el mensaje siguiente
[...]
Failed to mount '/dev/sdb1': Input/output error
NTFS is either inconsistent, or there is a hardware fault, or it's a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows twice. The usage of the /f parameter is very
important! If the device is a SoftRAID/FakeRAID then first activate
it and mount a different device under the /dev/mapper/ directory, (e.g.
/dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation
for more details.
[...]
Mientras que en Windows si bien nos aparece la unidad, al intentar acceder muestre un mensaje con el texto "Windows no puede acceder al disco" o si intentan acceder desde línea de comando les muestre el texto "El archivo o directorio está dañado o es ilegible" si el sistema operativo esta en idioma español o "The file or directory is corrupted or unreadable" si esta en ingles.

Solución

Una forma de intentar corregir el problema, si el desperfecto es solamente a causa de información que se encuentra corrupta, es utilizar la herramienta chkdsk.
Los pasos para ejecutar la herramienta son:

  1. Conectar el dispositivo a una computadora con sistema operativo Windows.
  2. Abrir una línea de comando (cmd) con permisos de administrador. En Windows Vista y 7 esto se puede lograr haciendo click derecho sobre el acceso a la linea de comando y elegir la opción "Ejecutar como administrador"
  3. Escribir el siguiente comando donde la unidad X debe corresponder a la letra de unidad que se le asigno al dispositivo que se pretende reparar.
    chkdsk X: /f
Finalizada la ejecución del comando anterior y con algo de suerte, el dispositivo estará pronto para utilizarse normalmente.
Si finaliza correctamente la ejecución, debe mostrar un resumen con información de la capacidad y uso del dispositivo. A continuación dejo parte de una salida de ejemplo de una ejecución exitosa.
C:\Windows\system32>chkdsk X: /f
El tipo del sistema de archivos es NTFS.
La etiqueta de volumen es ETIQUETA_DISPOSITIVO.

CHKDSK está comprobando archivos (etapa 1 de 3)...
7% completado. (6989 de 9984 registros de archivos procesados)
Eliminando registro de atributo dañado (128, "")
del segmento de registro de archivo 7723.
...
CHKDSK está comprobando índices (etapa 2 de 3)...
66% completado. (9887 de 12132 entradas de índice procesadas)
...
CHKDSK está examinando los archivos no indizados para volver a conectarse a su directorio original.
Recuperando archivo huérfano $MFT (0) en el archivo de directorio 5.
...
976758783 KB de espacio total en disco.
201693964 KB en 8814 archivos.
4720 KB en 1076 índices.
0 KB en sectores defectuosos.
107035 KB en uso por el sistema.
El archivo de registro ha ocupado 65536 kilobytes.
774953064 KB disponibles en disco.

4096 bytes en cada unidad de asignación.
244189695 unidades de asignación en disco en total.
193738266 unidades de asignación disponibles en disco.

11 marzo 2011

Chat de Facebook en Pidgin

El cometido de este post es simplemente difundir dos formas para integrar/incluir el chat de Facebook en Pidgin


Como primera forma de hacerlo, contamos con la solución que nos provee la propia gente de facebook.
Los pasos para realizarla son bien sensillos y los pueden encontrar en este sitio de facebook. En este encontrarán una lista con la configuración a realizar, de varios clientes de chat, para incluir el chat de facebook, incluyendo la que corresponde a Pidgin. Bastará con seleccionarlo de la lista para que se muestre los pasos a realizar, pero para esto recomiendo que primero se encuentren logueados en su cuenta de facebook y ya hayan instalado el Pidgin el cual pueden conseguir a través de este link




La otra forma es utilizando el plugin Facebook Chat for Pidgin.
Este es tan sencillo de agregar como cualquier otro plugin de Pidgin. Una vez que lo hagan, encontrarán un nuevo "protocolo" de nombre facebook con el mismo logotipo azul que todos conocemos. Ahí simplemente deberán crear una cuenta con ya habrán hecho para otras cuentas de chat.



Ahora bien, si ambas son formas válidas, esta claro que la primera es una solución provista por la gente propia de facebook y por lo tanto tiene su "respaldo" por decirlo de alguna manera. Mientras que el plugin de Pidgin, por más que continúa avanzando en su desarrollo, aún no esta lo suficientemente maduro o, mejor dicho, no acompaña del todo los cambios que realiza el staff de facebook por lo que incurre en varios problemas de conexión y logueo, siempre hablando hasta la fecha de este post.
Cómo siempre, la decisión de cual optar esta en uno mismo y como aclaré al comienzo, la idea de este post es difundir y no así vender solución alguna.

29 noviembre 2010

Como integrar JDBC-tools sobre un datasource dentro de JBoss AS 5.1

En este post se explica una forma de integrar la herramienta JDBC-tools con el servidor JBoss para el uso de datasource manejados por éste.

El fin de esta integración es poder loguear las ejecuciones realizadas por el datasource, el cuál utiliza la aplicación, sobre el driver de la base.
El ambiente, sobre el cual se ha realizado/comprobado esta configuración, consta de las siguientes herramientas:

  • JBoss Application Server 5.1.0
  • JDBC-tools 1.1.1
  • JDK 1.6 update 17 a 20



Pasos a seguir:



Paso 1.
Conseguir la herramienta JDBC Tools la cual puede descargarse de su sitio http://jdbc-tools.sourceforge.net.


Paso 2.
Dentro del distribuible se encuentran los archivos que se deben incluir en el servidor de la siguiente manera,


Paso 3.
Ubicar las librerías jdbc-tools y jdbc-listener en el directorio del servidor server\\lib.


Paso 4.
Ubicar los archivos de configuración jdbc-tools.properties y jdbc-listener.properties en el directorio server\\conf.


Paso 5.
Modificar el archivo jdbc-listener.properties como se muestra más adelante en el punto jdbc-listener.


Paso 6.
Modificar el archivo jdbc-tools.properties como se muestra en el sub-punto jdbc-tools.


Paso 7.
Modificar la definición del datasource como se ejemplifica en el punto Datasources<./p>

Una vez realizados estos pasos, toda ejecución sobre el driver, a través del datasource en cuestión, se logueará en un archivo de nombre jdbc-logging.log en el directorio bin del servidor. Notar que se realiza un respaldo automático de este archivo, cada vez que se vuelve a iniciar el servidor, en archivo con el mismo nombre a los que se le concatena la fecha y hora.

Aquí debajo se detallas los archivos mencionados en los pasos anterios.


JDBC-listener.properties

En este archivo deben estar definido únicamente las siguientes variables.



jdbc.listener.classes: com.facdatum.jdbc.logger.JDBCLogger
driver.delegate: oracle.jdbc.driver.OracleDriver
datasource.delegate: java:Delegate (sustituir por el nombre del datasource a través del cual se conecta la aplicación)
datasource.props: serverName:localhost,portNumber:1521
jndi.factory: org.jnp.interfaces.NamingContextFactory
jndi.context.url: jnp://localhost:1099


JDBC-tools.properties

En este archivo deben estar definido únicamente las siguientes variables.

jdbc.listener.classes: com.facdatum.jdbc.logger.JDBCLogger
driver.delegate: oracle.jdbc.driver.OracleDriver
datasource.delegate: java:Delegate (sustituir por el nombre del datasource a través del cual se conecta la aplicación)
datasource.props: serverName:localhost,portNumber:1521
jndi.factory: org.jnp.interfaces.NamingContextFactory
jndi.context.url: jnp://localhost:1099
driver.path oracle14.jar
driver.class oracle.jdbc.driver.OracleDriver
driver.url jdbc:oracle:thin:@localhost:1521:XE
driver.user nombre de usuario en la base de datos
driver.password password del usuario en la base de datos
valores por defecto para las variables: jdbc.include, jdbc.exclude, app.include, app.exclude, jdbc.duration.filter.limit, jdbc.duration.filter.change, jdbc.duration.store.filepath, log.levels, log.path, log.filename, call.include, call.exclude y jdbc.planner.repeat.



Datasources
<local-tx-datasource>
<jndi-name><datasource_nombre></jndi-name>
<connection-url>jdbc:oracle:thin:@localhost:1521:XE</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name><db_usuario_nombre></user-name>
<password><db_usuario_pass></password>
<min-pool-size>5</min-pool-size>
<max-pool-size>10</max-pool-size>
<valid-connection-checker-class-name>
org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker
</valid-connection-checker-class-name>
<exception-sorter-classname>
org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
</exception-sorter-classname>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</local-tx-datasource>

<local-tx-datasource>
<jndi-name><datasource_nombre></jndi-name>
<connection-url>jdbc:oracle:thin:@localhost:1521:XE</connection-url>
<driver-class>com.facdatum.jdbc.listener.driver.DataSourceListener</driver-class>
<user-name><db_usuario_nombre></user-name>
<password><db_usuario_pass></password>
<min-pool-size>5</min-pool-size>
<max-pool-size>10</max-pool-size>
<exception-sorter-classname>
org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
</exception-sorter-classname>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</local-tx-datasource>


23 noviembre 2010

Error de certificado omega.contacts.msn.com en Pidgin

Para aquellos que usan Pidgin, aquí les dejo un link a la página donde encontré la solución para el error de certificado omega.contacts.msn.com, el cual es causa y consecuencia de que no podamos acceder a nuestras cuentas de mail.live.com o hotmail.com.


Fix Pidgin (MSN) Omega.contacts.msn.com Certificate Errors

A continuación agregaré la traducción para la solución.



[...] Si ud usa Pidgin con MSN, probablemente se habrá topado reiteradas veces con el error de certificado "omega.contacts.msn.com" estos últimos días. Bueno, aquí encontrará el cómo solucionarlo.

1. Descargue éste certificado omega.contacts.msn.com.

2. En Pidgin, vaya al menú Herramientas > Certificados y elimine el certificado "omega.contacs.msn.com" que ahí encuentre. Luego elija "Agregar" y agregue el certificado que descargó en el paso 1 y cuando le pida el nombre de servidor ingrese el siguiente (sin las comillas): "omega.contacts.msn.com"


Pidgin arreglo omega.contacts.msn.com

Ahora de OK y eso es todo!. [...]


Actualización: Si bien la solución funciona sin mayores problemas, sucedía que cada vez que uno iniciaba sesión debía volver a agregar el certificado. Para solucionar esto simplemente deberemos copiar el certificado omega.contacts.msn.com al directorio .purple/certificates/x509/tls_peers, por ej. ejecutando el siguiente comando,

mv omega.contacts.msn.com .purple/certificates/x509/tls_peers


16 septiembre 2010

Instalar Oracle SQL Developer en Ubuntu

En este post se explica una manera de instalar la herramienta Oracle SQL Developer en Ubuntu.

Ésta es una potente herramienta gráfica gratuita para desarrollar con bases de datos, la cual corre sobre java. Por esto último y antes de seguir con esta guía, debemos verificar si se tiene instalada una versión de JRE según necesite la versión de SQL Developer que instalemos (lo cual pueden saberlo accediendo al archivo relnote.html que viene junto a la herramienta).

Para verificar la JRE instalada puede correrse el comando que se resalta en el siguiente ejemplo.

vos@equipo:~$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)


Ahora, si no se cuenta con una versión de SQL Developer se puede descargar de su sitio oficial en Oracle.com, al cual puede accederse directamente con este link.


Una vez que hayamos conseguido el zip deberemos descomprimirlo en el directorio /usr/lib/sqldeveloper, que bien se podría optar por uno diferente pero debe tenerse presente que la explicación se realiza sobre el mismo. Esto debe hacerse con permisos de root así que, suponiendo que ubicamos el zip en el escritorio, una manera de hacerlo sería con el siguiente comando,

sudo unzip -q ~/Desktop/sqldeveloper--no-jre.zip -d /usr/lib
.
Luego debemos darle permisos de ejecución al script de arranque sqldeveloper.sh,
sudo chmod +x sqldeveloper.sh



A fin de poder correr la herramienta como una aplicación cualquiera por parte de cualquier usuario, primero modificamos el script de arranque que se recién se mencionó. Este tiene el siguiente contenido,

#!/bin/bash
cd "`dirname $0`"/sqldeveloper/bin && bash sqldeveloper $*

del cual modificaremos la segunda línea como se muestra aquí,
#!/bin/bash
cd /usr/lib/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*


Y segundo, crearemos un link a este en el directorio /usr/bin así,
sudo ln -s /usr/lib/sqldeveloper/sqldeveloper.sh /usr/bin/sqldeveloper




Llegado a este punto, nos encontramos en condiciones de probar si la aplicación levanta sin mayores complicaciones. Para probar bastaría con correr el comando que sqldeveloper que recién se definió pero antes de esto debemos tener presente que, para levantar, el script de arranque busca la variable de entorno JAVA_HOME. Si este se encuentra definido a nivel de batch (que se puede comprobar con el comando export | grep JAVA_HOME) no habrá problema alguno. Pero sí puede suceder que no este definida y que el script no ubique los directorio "clasicos" donde podría estar instalada.
Para esto veremos una forma de indicarle al script el directorio de la maquina java modificando la propia configuración de la herramienta para aprender un poco más de ésta, y no así una correcta definición de la variable de entorno que explicaré próximamente en otro post.
Así primero veremos los directorios de las maquinas java que tenemos instalados utilizando el comando como se muestra en el ejemplo,

$ update-alternatives --list java
/usr/lib/jvm/java-6-openjdk/jre/bin/java
/usr/lib/jvm/java-6-sun/jre/bin/java

De estas utilizaremos la segunda opción en este ejemplo.
Ahora editaremos el archivo /usr/lib/sqldeveloper/sqldeveloper/bin/sqldeveloper.conf modificando la línea que es bastante intuitivo entender lo que hace
SetJavaHome ../../jdk

por esta otra con lo cual nos aseguramos de dejar la herramienta funcionando
SetJavaHome /usr/lib/jvm/java-6-sun



Hecho esto no habría que poner más reparos en la instalación de la herramienta pero para facilitar aún más el acceso, agregaremos una entrada en el menú Applications \ Programming.
Lo primero entonces es crear un archivo de nombre sqldeveloper.desktop, que ubicaremos en el escritorio, con el siguiente contenido,
[Desktop Entry]
Encoding=UTF-8
Name=SQL Developer
Comment=Oracle SQL Developer
Categories=Development;
Hidden=false
Icon=/usr/lib/sqldeveloper/icon.png
Exec=sqldeveloper
Terminal=false
Type=Application

Notar que en este se indica que se levantará el SQL Developer ejecutando el comando sqldeveloper que hemos creado en el paso anterior.

Y segundo lo moveremos con permisos de root al directorio /usr/share/applications con el siguiente comando por ejemplo,

sudo mv ~/Desktop/sqldeveloper.desktop /usr/share/applications



20 junio 2010

Problema con redes Wi-Fi (Wpa/Wpa2) en Windows XP

Algunas computadoras veteranas, sobre todo notebooks, que corren sistemas Windows XP livianos (ej. Windows Home) ya sea porque no pueden darse el lujo de correr versiones más pesadas o no pueden actualizarlas por temas licencias.., suelen tener problemas en conectarse a redes Wi-Fi con protocolos de seguridad WPA/WPA2.
Una de las razones por los cuales se puede dar esto es porque no cuentan con las últimas actualizaciones/instalación de componentes para dar soporte a este tipo de protocolos.

Estos siempre son fáciles de conseguir pues basta con revisar un poco el site de microsoft y descargarlos... Lo complicado es pasar la prueba de originalidad de windows.

A continuación se encuentran la actualizaciones necesarias para este tipo de redes en sistema Windows XP con Service Pack 2 o superior, distinguiendo según el idioma puesto que se puede instalar la versión que tenga el mismo idioma que el sistema.



También pueden encontrar más información de este tema en el sitio de soporte de Microsoft Descripción de la actualización de cliente inalámbrico para Windows XP con Service Pack 2 y/o descargar la actualización para su Windows XP original en este link (sepan cambiar el idioma de la actualización acorde a su sistema).



(2012/09/15) Actualización de los links de descarga

02 junio 2010

Instalar Impresora Epson Stylus c92 en Ubuntu

En este post se muestra un truco para instalar los drivers de la impresora Epson Stylus C92 en Ubuntu.

Impresora Epson Stylus C92 instalada!

A la fecha de post, no hay un driver especifico para dicha impresora pero por suerte sí hay drivers de modelos anteriores que son compatibles con la misma.
Estos modelos son,

  • Stylus C68
  • Stylus C79


Así pues al momento de instalarla ya sea utilizando el wizard, que puede aparecernos al conectarla por primera vez, o instalándola manualmente, lo que debemos hacer es seleccionar uno u otro modelo de los mencionados y ya estaremos en condiciones de imprimir normalmente.

Cabe mencionar que esta configuración la he probado y ha funcionado correctamente en las versiones Ubuntu 8.10, 9.10 y 10.04.



Link interesante,

Open Printing (The Linux Fundation)



09 mayo 2010

Incluir Thunderbird en el Indicator-Applet en lugar de Evolution

En este post se explica una forma de modificar el applet Indicator-Applet, que viene por defecto con Ubuntu, para incluir en este el cliente de correo Mozilla Thunderbird en lugar de Evolution.


Por defecto en Ubuntu para las versiones 9.10 y 10.04 ya viene integrado al panel este applet, el cual pretende mostrar información de aplicaciones de forma centralizada y prolija.
A su vez trae por defecto opción para configurar el cliente de correo, el Broadcast y el cliente de mensajería instantánea (chat), pero sucede aquí que no da opción a modificar los programa que actuarán como cliente para cada una de estas, que son entonces Evolution, Gwibber y Empathy respectivamente.
Así pues la idea de este post es mostrar cómo definir a Thunderbird en lugar de Evolution y quitar completamente a éste último, lo cual no quita que pueda aplicarse un procedimiento similar para modificar las demás opciones y/o agregar nuevas.


Primero que nada, desde el gestor de paquetes Synaptic o de alguna otra manera, debemos desinstalar a Evolution. También debemos instalamos normalmente el Thunderbird.

Luego debemos modificar el archivo /usr/share/applications/thunderbird.desktop de forma de agregar lo que a continuación se resalta en negrita

[Desktop Entry]
Encoding=UTF-8
Name=Mozilla Thunderbird Mail/News
Comment=Read/Write Mail/News with Mozilla Thunderbird
GenericName=Groupware Suite
Exec=thunderbird %u
Terminal=false
X-MultipleArgs=false
Type=Application
# Icon=thunderbird
Icon=evolution
Categories=GNOME;GTK;Application;Network;Email:Calendar;ContactManagement;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;
StartupWMClass=Thunderbird-bin
StartupNotify=true
...

X-Ayatana-Desktop-Shortcuts=Compose;Contacts

[Compose Shortcut Group]
Name=Compose New Message
Exec=thunderbird mailto:
OnlyShowIn=Messaging Menu


[Contacts Shortcut Group]
Name=Contacts
Exec=thunderbird -addressbook
OnlyShowIn=Messaging Menu

Respecto a la variable Icon, se define igual que para Evolution de forma que el Thunderbird en lugar de aparecer con su conocido icono aparezca con el que trae Evolution que suele ir más acorde al theme del applet, pero esto es a gusto y solo para mostrar la forma de hacer el cambio.

Siguiendo con la explicación, para que figure los accesos a Thunderbird en nuestro Indicator-Applet debemos crear un archivo, llamémoslo thunderbird, escribiendo en este la siguiente línea,

/usr/share/applications/thunderbird.desktop

Notar que esta es la ubicación del archivo que previamente editamos

Luego se debe ubicar el nuevo archivo en el directorio /usr/share/indicators/messages/applications.

Por último y para que el applet tome los cambios simplemente debemos reiniciar la session.


Como se pudo notar en la explicación, las rutas y los archivos editados son indistintos a los distintos usuarios, por lo cual dichos cambios aplicarán a todos los usuarios.
También podemos percatarnos de que en el directorio /usr/share/indicators/messages/applications figuran otros archivos los cuales tienen el mismo fin que el recién agregado. Quien use por ejemplo el Pidgin como cliente de mensajería instantánea verá un archivo de nombre pidgin con una línea similar a la que definimos, y así también otros que hacen referencia a las varias aplicaciones que se incluyen el Indicator-Applet, de forma que es un buen punto para empezar a probar y configurar el applet a gusto de cada uno.


08 mayo 2010

Arrastrar ventanas entre escritorios en Ubuntu con GNOME

Breve apunte para aquellas personas que les gusta arrastrar ventanas desde y hacia los varios escritorios que permite tener GNOME.


Accedan al gconf-editor y marquen el checkbox de la variable edgeflip_move para habilitar y así poder arrastrar las ventanas entre escritorios, y viceversa en caso de querer deshabilitar dicha funcionalidad.
En Ubuntu, dicha deberían encontrarla, explorando las propiedades con gconf-editor, en el directorio
/apps/compiz/plugins/wall/screen0/options


Seguramente hay formas más sencillas de realizar esta configuración, pero puede que a alguno le suceda igual que a mi de no poder encontrar otra manera con las herramientas que se incluyen por defecto en la versión Ubuntu 10.04 LTS (Lucid Lynx).

17 febrero 2010

Problema con botones de Eclipse en Ubuntu 9.10 Karmic Koala

Aquí se trata el problema de los botones en Eclipse corriendo en Ubuntu 9.10 (Karmic Koala) y una forma de ejecutar Eclipse cómodamente incluyendo la solución del mismo.


Primero que nada un link a la guía de Ubuntu para Eclipse donde en la sección Problemas con botones en Ubuntu 9.10 Karmic Koala se encuentra mencionado el problema y su solución. Ahí también se encuentra un link al reporte oficial del bug que lo genera.

Básicamente lo que dice es que dicho bug se encuentra resuelto para la próxima versión de Eclipse (3.5.2 >=) pero no así para la 3.5.1, que es la última estable al momento de publicar este artículo.

Como se puede ver en la guía de Ubuntu, la solución pasa por definir una variable antes de ejecutar Eclipse, y para esto sugiere crear un script el cual deberemos ejecutar cada vez que deseemos abrirlo, lo cual ya deja de ser tan simple como correr el ejecutable de Eclipse.
Por esto último, a continuación listo los pasos para crear un ejecutable incluyendo la solución.


Paso 1. Crear el script
Este paso es hacer lo que sugiere la solución de la guía Ubuntu que es crear un script, el cual se encargará de setear la variable GDK_NATIVE_WINDOWS y de correr el Eclipse ubicado en el directorio que recibe por parámetro. Así entonces, y como base para que funcionen los demás pasos, hay que crear un archivo de nombre eclipserun.sh dentro de la carpeta de eclipse y escribir en este las siguientes líneas,

#!/bin/sh
export GDK_NATIVE_WINDOWS=1
$1eclipse


Paso 2. Crear el programaCreamos un archivo con nombre eclipserun.c y escribimos dentro de este el siguiente código (que esta en lenguaje C).
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main() {
int i;
int lpath;
char cmds[512];
char path[249];
cmds[0] = 0;

// obtengo el path absoluto donde esta ubicado el ejecutable
lpath = readlink("/proc/self/exe", path, sizeof(path));
for( i = lpath; '/' != path[i]; i-- );
path[++i] = 0;

// armo el comando para ejecutar el script ubicado donde el ejecutable
strcat(cmds, path);
strcat(cmds, "eclipserun.sh ");
strcat(cmds, path);

// ejecuto es script
return system(cmds);
}

Este define un programa que ejecutará el script del paso anterior. Primero obtiene el path donde corre el ejecutable para así ubicar el script y pasarle a este la ruta donde levantar el Eclipse. La necesidad de obtener el path es a causa de poder luego crear enlaces al ejecutable y poder ubicarlos en cualquier lado.
Por último realiza una llamada al sistema para correr el script. Por más información se puede consultar la especificación de la función system.


Paso 3. Crear el ejectuable
Para crear el ejecutable desde consola basta con, estando ubicado en el directorio donde se encuentra el archivo eclipserun.c, ejecutar el siguiente comando

gcc -O3 eclipserun.c -o eclipserun

Este creará un ejecutable con el nombre eclipserun. La flag O3 (letra O, número 3) es para optimizar el tiempo de ejecución del ejecutable, pero en caso de fallar la compilación se puede bajar la exigencia usando en lugar O2, O1 o O, o simplemente no usar flag algúna.


Paso 4. Ubicar el ejecutable
Lo que hace el segundo comando que ejecuta el script es correr el ejecutable de Eclipse. Este se define con ruta absoluta a donde se encuentra el nuevo ejecutable creado en el paso 2, por lo tanto este mismo debería ubicarse en el mismo directorio donde se encuentra el ejecutable de Eclipse.
Claro esta que puede definirse otra ruta en dicho comando, o escribir el programa para que reciba la ruta por parámetro o demás formas que haya, pero aquí se simplifico de modo que baste con ubicar el ejecutable nuevo en la carpeta de eclipse.


Paso 5. Levantar Eclipse
De ahora en más, para levantar el Eclipse sin problemas basta simplemente con correr el nuevo ejecutable cada vez.
Si se tienen links, lanzadores o demás, ahora lo único que se debe hacer es modificarlos para correr el nuevo ejecutable en lugar del ejecutable eclipse.



Terminada la explicación, dejo algunos links de interés.



15 febrero 2010

Configurar arranque de servidor PostgreSQL 8.4 en Ubuntu

Aquí se menciona brevemente cómo hacer para configurar el arranque (automático/manual/deshabilitado) del servidor PostgreSQL 8.4 en Ubuntu 9.10.

Claro esta que no quita que pueda aplicarse para otra combinación de servidor y sistema operativo, pero la siguiente configuración se ha probado en el caso de haber instalado en Ubuntu 9.10 (Karmic Koala) los siguientes paquetes con su configuración por defecto:

  • postgresql
  • postgresql-8.4
  • postgresql-client
  • postgresql-client-8.4
  • postgresql-common
  • postgresql-client-common

También recomiendo instalar los siguientes paquetes que incluyen documentación sobre la configuración y uso en formato html,

  • postgresql-doc
  • postgresql-doc-8.4

Para acceder a ésta basta con cargar en el navegador la url
file:///usr/share/doc/postgresql-doc-8.4/html/index.html, o bien se podría modificar la configurar del pgAdmin III para que acceda a la misma lo cuál explicará en un próximo artículo.
Cabe mencionar que la misma se puede encontrar en el sitio de PostgreSQL, donde habrá que prestar atención a la versión del servidor a que corresponde la documentación.

Por defecto, al instalar el servidor se crea un cluster, bajo el nombre main, en el directorio /etc/postgresql/8.4/main. Este último es el área de almacenamiento en disco a donde irán a parar las base de datos. Así pues un cluster de base de datos es una colección de bases de datos que son manejadas por una única instancia en ejecución del servidor de base de datos (ver por más información).
En el directorio mencionado es donde encontraremos los archivos de configuración a modificar.


Unos comentarios antes de modificar el arranque del servidor.
Por defecto el arranque esta configurado en modo 'automático' (auto).
Al levantar la maquina, el arranque del servidor PostgreSQL se produce al ejecutar el script /etc/init.d/postgresql-8.4, el cual a su vez ejecuta métodos (start, stop, restart, etc.) definidos en /usr/share/postgresql-common/init.d-functions. Es en éste último donde vemos cómo se procede para levantar el servidor, entre otras cosas.
Aquí podemos ver que para iniciar el servidor lee el archivo de configuración start.conf ubicado en el directorio que se mencionó más arriba.

Como escapa a la idea de este artículo, no se tratará los controles del servidor desde línea de comandos, pero cabe mencionar el servidor se puede detener/levantar/reiniciar utilizando el comando pg_ctlcluster de la siguiente manera;

  • Detener: sudo -u postgres pg_ctlcluster 8.4 main stop
  • Levantar: sudo -u postgres pg_ctlcluster 8.4 main start
  • Reiniciar: sudo -u postgres pg_ctlcluster 8.4 main restart

Otro comentario. Cuando el servidor esta levantado, el PID (id del proceso servidor) es guardado en el archivo /var/lib/postgresql/8.4/main/postmaster.pid; esto es a modo de prevenir que multiples instancias del servidor corran sobre los mismos datos, pero uno lo puede utilizar para detener/controlar el servidor.


A continuación, se muestra cómo abrir el archivo /etc/postgresql/8.4/main/start.conf para modificar el arranque del servidor PosgresSQL, teniendo presente que el usuario postgres es quien tiene permisos sobre éste.
Al abrirlo se puede ver una explicación breve de las tres variantes a optar.
A fin de que no inicie el servidor al levantar el equipo, se modificará el arranque por defecto (auto) por arranque manual (manual).

Editando el archivo como usuario postgres
tu_usuario@equipo:~$ sudo su - postgres
[sudo] password for tu_usuario:
postgres@equipo:~$ nano /etc/postgresql/8.4/main/start.conf
postgres@equipo:~$ logout
tu_usuario@equipo:~$

Editando el archivo como superusuario
tu_usuario@equipo:~$ sudo gedit /etc/postgresql/8.4/main/start.conf
[sudo] password for tu_usuario:
tu_usuario@equipo:~$

Finalmente el archivo modificado debería ser similar al siguiente.
# Automatic startup configuration
# auto: automatically start/stop the cluster in the init script
# manual: do not start/stop in init scripts, but allow manual startup with
# pg_ctlcluster
# disabled: do not allow manual startup with pg_ctlcluster (this can be easily
# circumvented and is only meant to be a small protection for
# accidents).

manual


Una vez hecho lo anterior habremos terminado.
De todas maneras, aquí debajo encontrarán links que puede ser de utilidad si se desea profundizar en el tema.



01 febrero 2010

Instalar/Agregar repositorios de OpenOffice 3 en Ubuntu

En este post se explica brevemente cómo agregar/instalar OpenOffice 3 en sistemas Ubuntu desde el repositorio para aquellos que no lo incluyan, como les debe suceder a quienes utilizan Ubuntu 8.10 Intrepid Ibex, por ejemplo, que incluye OpenOffice 2.4.

Primero que nada, el repositorio a agregar es el siguiente, al cual se puede acceder pegando la url en el navegador:
http://ppa.launchpad.net/openoffice-pkgs/ubuntu
En este encontrarán OpenOffice para las versiones Hardy 8.4, Intrepid 8.10 y Jaunty 9.4.

Ahora se explican dos formas de agregar dicho repositorio.

La primer forma es utilizando el gestor de paquetes Synaptic.
En este hay abrir desde el menú Configuración >> Repositorios. Una vez ahí se debe ir a la pestaña Otro Software y dar click en el botón Añadir. Al hacer esto se abrirá una ventana donde se debe agregar la siguientes líneas según la versión de Ubuntu.

  • Hardy: deb http://ppa.launchpad.net/openoffice-pkgs/ubuntu hardy main

  • Intrepid: deb http://ppa.launchpad.net/openoffice-pkgs/ubuntu intrepid main

  • Hardy: deb http://ppa.launchpad.net/openoffice-pkgs/ubuntu jaunty main


Luego damos click en Añadir origen, cerramos la ventana y, estando aún en Synaptic, recargamos/actualizando la información donde se incluirá el nuevo repositorio.
Una vez actualizada la información de los paquetes, se debe instalar los paquetes que uno encuentre conveniente de OpenOffice, como también puede instalarse simplemente el paquete openoffice que es la suite del programa. Aquí recomiendo instalar los siguientes paquetes: openoffice.org-writer, openoffice.org-calc, openoffice.org-draw, openoffice.org-base, openoffice.org-impress y openoffice.org-help-es. Para quienes utilicen GNOME como interfaz también es recomendable que instalen el paquete openoffice.org-gnome para mayor compatibilidad.



La otra forma es para gente más entendida pero no provee mayores ventajas que el realizar mediante Synaptic.
Esta consiste en agregar los repositorios manualmente editando el archivo de repositorios sources.list; desde terminal sería así:
sudo gedit /etc/apt/sources.list

Esto abrira el archivo para editar. Se debe agregar al final del archivo la línea deb http://ppa.launchpad.net/openoffice-pkgs/ubuntu intrepid main según la versión de ubuntu, como se explico en la forma anterior.
Luego de salvar los cambios, se ejecuta la siguiente línea ,
sudo apt-get update

Con esto se actualizarán los repositorios luego de lo cual aparecerá un mensaje indicando que hay actualizaciones (en estas está incluido OpenOffice 3). Bastará con instalarlas para contar OpenOffice pero cada quien sabrá incluir únicamente las que desee/necesite.

06 diciembre 2009

Instalación del navegador Chromium

En este post se explica cómo instalar, de modo gráfico, el navegador Chromium en Ubuntu para su versión Karmic Koala pero puede fácilmente modificarse para las vesiones Hardy, Intrepid,
Jaunty, Lucid.

Lo primero es agregar el repositorio puesto que, a la fecha 6/12/2009, este no se incluye en los repo oficiales. Para esto debemos abrir el Gestor de paquetes Synaptic e ir al menú Configuración >> Repositorios. Una vez ahí nos movemos a la pestaña Otro Software y damos en Añadir.

Ahí nos abrirá una ventana, similar a la que se muestra a continuación, donde deberemos ingresar la siguiente línea para agregar el repositorio. Solo nos permitira confirmar el ingreso cuando agerguemos correctamente dicha línea.

La línea a agregar es...
deb http://ppa.launchpad.net/chromium-daily/ppa/ubuntu karmic main


Agregando repositorio de navegador Chromium

Hecho esto veremos la siguiente ventana donde debemos asegurarnos que se encuentra marcado el checkbox al lado del repositorio que recién se ha agreado.

Lista de repositorios incluyendo al repositorio del navegador Chromium

Luego al cerrar la venta a de configuración de repositorios, en el menú principal de Synaptic debemos recargar la información de los paquetes para que cargue la información del nuevo repositorio. Esto es lo que nos sugiere la ventana que aparecerá así que no hay que preocuparse por esta misma.

Recarga de información de los paquetes (incluyendo nuevos repositorios)

Una vez que ha recargado la información se podrá encontrar el paquete chromium-browser el cual bastará con instalarlo, como se hace con cualquier otro paquete, para contar con el nuevo navegador.

Como comentario final, se podrá acceder al navegador desde el menú Aplicaciones >> Internet >> Chromium Web Browser

14 noviembre 2009

Configurar cuenta Gmail en Evolution (POP3)

Aquí encontrarán una explicación breve de cómo configurar una cuenta Gmail tipo POP en el cliente de correo Evolution.

Una vez abierto Evolution, encontrarán el menú para configurar sus cuentas en Editar >> Preferencias >> Cuentas de correo.
Ahí veran listadas las cuentas que ya han configurado y, sobre su derecha, verán opciones para añadir, borrar, editar cuentas y seleccionar la cuenta predeterminada.

Si ya se ha creado la cuenta Gmail, se debe seleccionarla y dar en Editar. En caso de que querer crearla, dar en Añadir.
La única diferencia entre Añadir y Editar es que al dar en añadir se abrirá el wizard para asistir en la creación de la cuenta. Pero cualquiera sea el caso, las variables/opciones a ingresar son las mismas y estan bajo el mismo nombre. Estas variables son las que listo a continuación indicando la pestaña en que se ubicarían si se estuviera editando una cuenta.


Recepción de correo
Tipo de servidor: POP
Configuración - Servidor: pop.gmail.com
Configuración - Usuario: nombre de usuario (no hay por qué incluir @gmail.com)
Seguridad - Usar conexión segura: Cifrado SSL
Tipo de autenticación: Contraseña


Envío de correo
Tipo de servidor: SMTP
Configuración del servidor - Servidor: smtp.gmail.com
Configuración del servidor - marcar el checkbox El servidor requiere autenticación
Seguridad - Usar conexión segura: Cifrado SSL
Autenticación - Tipo: PLAIN
Autenticación - Usuario: nombre de usuario (no hay por qué incluir @gmail.com)


También es muy importante que verifiquen que la/las cuenta/as de Gmail en cuestión tienen habilitado el acceso POP3; caso contrario no va a funcionar ningun cliente de correo por más bien configurado que este.
Por lo cual dejo el siguiente link a un artículo gmail para realizar dicha configuración y otro que refiere a la configuración de clientes de correo.


21 julio 2009

Solucionar error about:newtab de Megaupload Toolbar en Firefox

Como ya conté en el post anterior, la barra de megaupload trae un par de problemas en firefox. Uno de estos conlleva a que no podamos quitar el molesto "about:newtab" que se carga en la barra de dirección cada vez que abrimos una nueva pestaña en blanco.

Lo que hace el complemento de la barra de megaupload de firefox es definir la uri de las pestañas nuevas y una página template que es la que se carga, en este caso la uri es "about:newtab". Así lo que veremos será algo similar a la siguiente imagen.


Mega Toolbar instalada en el browser Mozilla Firefox

Si deseamos volver a la normalidad lo que hay que hacer es marcar el checkbox que se señala en la imagen anterior y cerrar la ventana mediante el botón Close que vemos ahí mismo.
Pero aquí nos salta una ventana donde dice
ReferenceError: DTFox is not defined

como también se puede ver en la siguiente imagen.


Mega Toolbar instalada en el browser Mozilla Firefox

Esto es producto de un error para el cual presentaré un par de soluciones.

La primera solución es pasarlo por alto.
Lo que haremos no es arreglar el problema sino saltearlo y desactivar directamente esta funcionalidad que nos agregó la barra de megaupload.
Para esto debemos modifcar una variable de configuración. Por esto lo primero es poner en la barra de dirección "about:config", lo cual al intentar acceder nos mostrará la siguiente advertencia


Mega Toolbar instalada en el browser Mozilla Firefox

Lo que dice es cierto y, como debe ser, prometeremos tener cuidado.

Hecha la promesa, debermos buscar la variable "megaupload.toolbar.ntObserve" la cual tiene valor 'true' incialmente. Para la búsqueda recomiendo tipear el nombre de la variable tal cual en la barra de filtro como se ve en la siguiente imagen.


Mega Toolbar instalada en el browser Mozilla Firefox

En esta imagen también se ve como modificarla haciendo click derecho sobre la variable. Otra forma es haciendo doble click sobre esta.
Indistintamente de cómo se haga para modificarla, lo importante es que ésta tome el valor 'false', dejando demas atributos incambiados, como vemos a continuación.


Mega Toolbar instalada en el browser Mozilla Firefox

Con esto habremos terminado todos los pasos de esta solución.


La segunda solución es más técnica e implica meterse en el código del complemento pero tampoco es nada de otro mundo.

Lo que debermos hacer es modificar una llamada (invocación) a un método javascript, para lo cual primero que nada ubicaremos el complemento Megaupload Toolbar de Firefox y luego, dentro de éste, el archivo donde se encuentra dicha llamada.

Repitiendo un poco las palabras del anterior post que mencione más arriba, explicaré cómo ubicar el complemento de firefox.

En un mismo equipo, cada usuario puede gestionar su preferencias de firefox independientemente de las preferencias de los demás usuarios, en lo que también se incluyen los complementos.
La información de las preferencias y complementos se almacenan en el perfil del usuario. Este se encuentra en el directorio 'C:\Documents and Settings\NOMBRE DE USUARIO\Datos de programa\Mozilla\Firefox\Profiles' (cambiando Datos de programa a Application Data para la versión de windows en inglés). Nuestro profile lo encontraremos en una carpeta con un nombre raro que tiene como postfijo el texto '.default'.
El contenido de esta no lo tocaremos pues lo que nos es relevante esta en la carpeta extensions.
Una vez en la carpeta extensions, veremos carpetas con nombres más que desagradables. Lo que debemos hacer es encontrar la que corresponde a el complemento de la Mega Toolbar, lo cual lograremos buscando aquella que tenga, dentro de una carpeta con nombre chrome, el archivo megaupload.jar.

Para esclarecer donde se debe ubicar el archivo megaupload.jar, pondré como ejemplo el directorio donde se ubica en mi caso;
C:\Documents and Settings\Guillermo\Datos de programa\Mozilla\Firefox\Profiles\luybz4xj.default\extensions\{991A772A-BA13-4c1d-A9EF-F897F31DEC7D}\chrome\megaupload.jar

Ahora necesitaremos abrir dicho jar para explorar su contenido (así como abrimos un .zip) utilizando algún compresor que lo soporte.
WinRAR lo hace; para abrirlo debemos ir a Abrir con y seleccionar el programa WinRAR, pusto que sino puede que intente ejecutarlo como a un ejecutable java.
Yo recomiendo utilizar el compresor 7-Zip el cual es free y soporta casi que todo formato.

Una vez abierto debermos extraer el archivo content\newTab.xhtml para poder editarlo y luego sustituir el que se encuentra en el jar.

Este archivo xhtml es el template a partir del cual se genera la "página en blanco" que la barra de Megaupload nos setea como defecto. En este se definen un par de funciones javascript, entre las cuales nos importa la función disableTabObserve que es invocada si marcamos el checkbox como explique en el comienzo del post.
Aquí puede verse una imagen con la función aún sin modificarse.


Mega Toolbar instalada en el browser Mozilla Firefox

Lo que deberemos hacer es sustituir la línea 54 donde dice
DTFox.prefs.set('ntObserve',false);

por la siguiente línea
MU_DTFox.prefs.set('ntObserve',false);


En la siguiente figura puede verse como debería quedar una vez modificada.


Mega Toolbar instalada en el browser Mozilla Firefox

Hecho esto se debe sustituir el archivo dentro del zip, y realizar los siguientes pasos para asegurarnos de que Firefox (y más precisamente la barra de Megaupload) tomará la modificación.
  1. acceder al menú Herramientas >> Complementos y buscar el complemento Megaupload Toolbar 3.x
  2. seleccionar y desactivar (no desinstalar) el complemento
  3. reiniciar Firefox
  4. acceder nuevamente al menú de Complementos, buscar el complemento Megaupload Toolbar y activarlo
  5. reiniciar Firefox nuevamente


Listo, con esto finalizamos los pasos a seguir para la segunda solución.

Como comentario y previo a dejar el link donde podrán descargar el archivo megaupload.jar ya arreglado, en la línea número 14 del archivo content\client\mu_tabs.js (dentro de megaupload.jar) encontrarán la uri que carga la barra de Megaupload (cuando esta activa) que en nuestro caso es el molesto 'about:newtab' en la barra de direcciones.

Archivo megaupload.jar arreglado


03 julio 2009

Solucionar error de Megaupload Toolbar en Firefox

Al igual que muchos/as, acostumbro descargar diversidad de cosas de los varios file-hosting/alojamientos de archivos que hay en la vuelta. Algunos de estos proveen herramientas para facilitarnos la vida al momento de subir/descargar, organizar y/o buscar archivos.
En este post hablaré y mostrare cómo solucionar un problema que presenta la herramienta Mega Toolbar, que es propia y desarrollada para el file-hosting Megaupload.

El problema que trato a continuación se da si se cumplen los siguientes requisitos, lo cual no quita que suceda en algún otro caso particular.
  • Navegador Mozilla Firefox (versión 1.5 hasta la 3.5 inclusive)
  • Sistema operativo Windows XP en español
  • Mega Toolbar 3

El que windows este en español no es un error. Capaz que basta con que no este en inglés pero, al no estar seguro, prefiero no darlo por sentado. Así pues puede que este post sea provechoso para la comunidad habla hispana más que nada :p

Advertencia! De aquí en más comienza la explicación del problema y de cómo solucionarlo uno mismo. Para arreglarlo sin entrar en más detalles vaya directamente al último párrafo del post.


En la siguiente imagen se ve la Mega Toolbar como la vemos en firefox, y también aprovecho para señalar no la raiz de este problema pero sí la funcionalidad que esta estrechamente vínculada mismo: el Email.

Mega Toolbar instalada en el browser Mozilla Firefox

Ya con la barra instalada en el sistema y activado el complemento de ésta en Firefox, cada vez que levantamos este último nos muestra esta excepción,

[Exception... "Component returned failure code: 0x80520001
(NS_ERROR_FILE_UNRECOGNIZED_PATH) [nsILocalFile.initWithPath]" nsresult: "0x80520001
(NS_ERROR_FILE_UNRECOGNIZED_PATH)" lccation: "JS frame :: chrome://megaupload/content/xpcom/network.js :: anonymous :: line 38" data: no]

Capaz con una imagen es más fácil de reconocerla

Mensaje de error al levantar el browser Mozilla Firefox

La excepción indica que el error se produce en la línea nro 38 del JavaScript network.js. Si se desea se puede ver el script directamente en el navegador accediendo a la dirección "chrome://megaupload/content/xpcom/network.js" (notar que se escribe chrome y no http).
En la línea 38 veremos la sentencia 'file.initWithPath(path);' en la cual se produce la excepción pero no es el problema. Esta función, según su especificación, debe recibir rutas absolutas.

Durante la carga del complemento de firefox para instanciar la barra, se pretende asociar el ejecutable EmailNotifier.exe a la funcionalidad Email que se muestra en la primer imagen, el cual se ubica en directorios diferentes acorde al idioma de nuestra distribución de windows:
  • español C:\Documents and Settings\All Users\Datos de programa\EmailNotifier
  • inglés C:\Documents and Settings\All Users\Appliaction Data\EmailNotifier


Ahora antes de avanzar más, ubicaremos dicho complemento de firefox para esta barra problemática.
Como habrán notado, en un mismo equipo, cada usuario puede gestionar su preferencias de firefox independientemente de las preferencias de los demás usuarios, en lo que también se incluyen los complementos.
La información de las preferencias y complementos se almacenan en el perfil del usuario. Este se encuentra en el directorio 'C:\Documents and Settings\NOMBRE DE USUARIO\Datos de programa\Mozilla\Firefox\Profiles' (cambiando Datos de programa a Application Data para la versión en inglés). Nuestro profile lo encontraremos en una carpeta con un nombre raro que tiene como postfijo el texto '.default'.
El contenido de esta no lo tocaremos pues lo que nos es relevante esta en la carpeta extensions.
Una vez en la carpeta extensions, veremos carpetas con nombres más que desagradables. Lo que debemos hacer es encontrar la que corresponde a el complemento de la Mega Toolbar, lo cual lograremos buscando aquella que tenga, dentro de una carpeta con nombre chrome, el archivo megaupload.jar.

Para esclarecer donde se debe ubicar el archivo megaupload.jar, pondré como ejemplo el directorio donde se ubica en mi caso;
C:\Documents and Settings\Guillermo\Datos de programa\Mozilla\Firefox\Profiles\luybz4xj.default\extensions\{991A772A-BA13-4c1d-A9EF-F897F31DEC7D}\chrome\megaupload.jar
Horrible, no es verdad?

Cuando accedimos con el navegador al script network.js a través de la dirección chrome://megaupload/.../network.js lo que hicimos fue navegar dentro de éste archivo jar.


Continuando con el problema.
Necesitaremos abrir dicho jar para explorar su contenido (así como abrimos un .zip) utilizando algún compresor que lo soporte.
WinRAR lo hace; para abrirlo debemos ir a Abrir con y seleccionar el programa WinRAR, pusto que sino puede que intente ejecutarlo como a un ejecutable java.
Yo recomiendo utilizar el compresor 7-Zip el cual es free y soporta casi que todo formato.

Una vez abierto debermos extraer el archivo content\xpcom\dir.js para poder editarlo y luego sustituir el que se encuentra en el jar.

Este javascript define funciones que son utilizadas por el complemento para obtener las rutas (absolutas) de varios directorios en nuestro sistema operativo. El que nos es relevante, como se mencionó antes, es el de Datos de programa.
La función encargada de ubicar dicho directorio es 'DTFox.dirUtil.getProgDataDir' como vemos en la línea nro 64 del archivo. La siguiente imagen es una captura del script original.

funcion DTFox.dirUtil.getProgDataDir del javascript dir.js original
No hay que ser un gran conocedor de la programación para darse cuenta que lo que hace es usar la ruta en que se encuentra la carpeta Start Menu, puesto que la carpeta Datos de programa se ubica en el mismo directorio que ésta. Aquí es donde falla el complemento.
La carpeta Start Menu tiene por nombre Menú Inicio para windows en español. Por esto es que no encuentra el directorio y retorna un ruta no absoluta que también daría problema porque diría /Application Data cuando debería ser Datos de programa en español.

A continuación tienen una implementación de dicha función y luego una captura de como quedaría el archivo. Bastara con que sustituyan la original por la que aquí les paso y graben, en el archivo jar, el javascript dir.js ya modificado. También cabe mencionar que cada uno puede y sabrá arreglar dicha función como mejor le parezca, aquí simplemente les hago llegar mi solución la cual he comprobado que funciona.

// Return Program Data directory
DTFox.dirUtil.getProgDataDir = function (){
common = DTFox.dirUtil._getSpecialDir('CmStrt');
if (common.substr(0, common.lastIndexOf("\\Microsoft")) == ''){
if (-1 != common.lastIndexOf("\\Start Menu")) { // encontro start menu (english)
progData = common.substr(0, common.lastIndexOf("\\Start Menu")) + "\\Application Data";
} else if (-1 != common.lastIndexOf("\\Menú Inicio")) { // encontro menu inicio (spanish)
progData = common.substr(0, common.lastIndexOf("\\Menú Inicio")) + "\\Datos de programa";
} else {
alert("The lenguaje of your windows distribution is not well supported by " +
"Megaupload Toolbar, sorry :s\nMegaupload Toolbar no soporta muy " +
"bien que digamos el lenguaje de tu distribución de windows, lo lamento :s");
}
}else{
progData = common.substr(0, common.lastIndexOf("\\Microsoft"));
}
return progData;
}


funcion DTFox.dirUtil.getProgDataDir del javascript dir.js arreglada

Luego de haber hecho todo lo anterior tenemos que reiniciar el complemento de la Mega Toolbar para que tome los cambios. El reiniciar un complemento es simplemente desactivarlo y luego volverlo a activar.
Para esto, en Firefox deben realizar los siguientes pasos:
  1. acceder al menú Herramientas >> Complementos y buscar el complemento Megaupload Toolbar 3.x
  2. seleccionar y desactivar (no desinstalar) el complemento
  3. reiniciar Firefox
  4. acceder nuevamente al menú de Complementos, buscar el complemento Megaupload Toolbar y activarlo
  5. reiniciar Firefox nuevamente

Con esto estaría solucionado.
Igual quiero mencionar que este problema no tiene que ver con el problema de la página que aparece al crear nuevas tabs. Esto un tema de configuración que explicaré como modificarla en el próximo post seguramente.


Claro esta que no voy a esperar que todo el mundo siga el proceso anterior. Lo hice a fin de explicar a quien le interese saber cómo lo solucione.

Para quien busque arreglarlo rápidamente y seguir con otra cosa, aquí debajo dejo un link (haganme saber si lo necesitan pero ya caduco) para que descarguen el archivo megaupload.jar el cual tendrán que simplemente ubicarlo, sustituyendo al original que más arriba mencioné cómo encontrarlo, en un direcotorio similar a este C:\Documents and Settings\nombre_de_usuario\Datos de programa\Mozilla\Firefox\Profiles\nombre_horrible.default\extensions\{991A772A-BA13-4c1d-A9EF-F897F31DEC7D}\chrome\megaupload.jar.

Archivo megaupload.jar arreglado


29 junio 2009

Cómo conseguir diccionarios para Eclipse Spelling con Aspell

Aquí explicaré una forma de conseguir diccionarios para luego incorporarlos al corrector ortográfico de Eclipse.

La configuración de dicho corrector se encuentra en Windows >> Preferences >> General >> Editors >> Text Editors >> Spelling como se muestra en este link donde también se describen brevemente las opciones.

El campo que nos interésa es User defined dictionary puesto que en este deberemos indicar la ruta al archivo diccionario que crearemos más abajo.

Eclipse toma como diccionario a cualquier tipo de archivo que ahí se le indique, del cual identificará las palabras como una secuencia de caracteres separadas por saltos de línea y/o espacios. Por lo tanto bastará con crear un archivo donde se listen todas las palabras del diccionario en cuestión separándolas por espacios y/o saltos de línea.
Hasta el momento no he conseguido encontrar alguna base a partir de la cual armar el listado, pero sí una solución provisoria que pasa por utilizar los diccionarios que usa Aspell.

Aspell es un corrector ortográfico que se puede usar como una aplicación autónoma o incluida en otros programas.

En un sistema linux (Ubuntu en este ejemplo) lo instalamos así,
sudo apt-get install aspell

Y luego debemos instalar los diccionarios de nuestro interés como el español en este ejemplo,
sudo apt-get install aspell-es


Luego, como los diccionarios de aspell no van 100% acorde a lo que requiere el Eclipse, vamos a instalar el mawk o gawk, basta con uno cualquiera. Estos son intérpretes del lenguaje de programación AWK.
AWK es útil para el tratamiento de archivos de datos, recuperación y tratamiento de texto, para lo que le daré uso a continuación.

Para crear un archivo con un diccionario pronto para importar en Eclipse debemos ejecutar lo siguiente:

aspell dump master es | awk -F/ '{print $1}' > dic_es.txt


El último paso consta simplemente de setear la ruta al archivo dic_es.txt en el campo User defined dictionary como se menciono anteriormente.

Nota:
Se debe reiniciar el Eclipse cada vez que se vuelva a setear la ruta del archivo diccionario.
Eclipse hace referencia a dicho archivo y no así lo registra, por lo cual debe prestarse atención al momento de definir su ubicación.



Explicando un poco la última linea:
  • aspell dump master es - Por si sola mostrará el diccionario 'es'. La falg master es la que permite elejir el diccionario a mostrar. Por más información de los comandos Aspell basta con ejecutar en consola 'info aspell'.
  • awk -F/ '{print $1}' - Lo que hace es tomar el diccionario aspell-es procesar cada lína de este delimitando las palabras mediante el signo '/' indicado por la flag -F (para tener más claro el por qué de ésto, sugiero ejecutar solo el comando aspell para ver la salida que genera). Luego lo parseado hasta el caracter delimitador es almacenado en la variable $1 que es impresa con el comando '{print &1}'. Así estas impresiones son almacenadas en el archivo dic_es.txt generando un diccionario limpio para utilizar en Eclipse.


Agregado 09/11/2010 (diccionario expandido):
Aquí tienen el comando para conseguir una lista de palabras mucho más completa que la que se explica previamente en el post. Esta, como podan probar, funciona correctamente y el archivo generado es soportado por el Eclipse pese a que es unas 20 veces más grande que pueden generar con la versión no extendida.
aspell -l es dump master | aspell -l es expand | sed "s/ /\n/g" > dic_es_expandido.txt


Comparando librerías de componentes JSF AJAX - JSFMatrix

JSF AJAX Component Library Feature Matrix es el nombre que lleva la tabla que encontraran en el sitio JSFMatrix, y noten que no digo 'una' sino 'la tabla'.
Como veran, en esta se comparan librerías de componentes JSF incluyendo también comenarios con soluciones y problemas que aplican a éstas además de algunos ejemplos y/o demos. Entre las librerías que se comparan encontramos Tomahawk y Trinidad de Apache, ICEfaces, RichFaces de JBoss, Woodstock de Glassfish, entre otras.


Para aquel que no sepa, JSF (Java Server Faces) es un framework de desarrollo basado en el patrón MVC (Modelo Vista Controlador) que busca simplificarnos la vida al desarrollar interfaces web de usuario en aplicaciones Java EE (Java Enterprise Edition).

A continuación dejo una serie de links, para quien quiera introducirse en el tema, empezando por el sitio oficial de JSF.


21 junio 2009

Codec de video y audio para Windows Vista: Vista Codec Package

Actualmente se da que mucha gente adquiere sus nuevos computadores con alguna versión del sistema operativo Windows Vista ya instalada.
Así pues si bien en el post Cómo reproducir cualquier formato de video fácilmente sugerí un paquete de codecs de video y audio que son compatibles con Vista, acá voy a mencionar otro paquete free que me ha resultado pero que esta pensado para Windows Vista. Igual cabe mencionar que es compatible con XP.

Este paquete es Vista Codec Package.



El mismo incluye codecs para los formatos: Quicktime, RealMedia, MPEG, FLV, SWF, WMV, FFDSHOW, Haali Media Splitter, Ogg, DivX, XviD, y demás.
En particular los codecs de RealMedia permiten que puedan reproducirse videos rmvb, como aquellos que se pueden descargar del blog de fanático (ver Enlaces Externos).

La última versión de Vista Codec Package se puede encontrar en el siguiente sitio http://shark007.net/vistacodecpackage.html junto con el link para descargalo. Al momento en que público este post, la versión es la 5.3.1, y se puede descargar directamente a través del siguiente link.


Claro esta que los codecs deben acompañarse de un buen reproductor que sepa hacer uso de estos, por lo cual vuelvo a recomendar el The KMPlayer.

12 junio 2009

Eclipse no detiene los servidores correctamente

Para las versiones de Eclipse Ganymede (3.4.x), al mandar a detenerse un servidor (simple Stop sobre el servidor en la perspectiva Servers), luego de un tiempo se mostraba un error notificando que el servidor no responde y así daba la impresión de que no se lograba detener.

Posiblemente este error puede conllevar a que el IDE muestre una ventana con el siguiente mensaje:
Server [JBoss v5.0 at localhost] is not responding. Do you want to terminate this server? Click Ok to terminate the server or click Cancel to continue waiting.

Claro esta que para este caso se había definido un runtime de servidor JBoss v5.

El problema en este caso particular era que la ruta con la que configuraba los runtimes (o Server Runtime Enviroments) era relativa. Esto se hacía a fin de hacer más portable dichas configuraciones pero hubo que restringirse a utilizar rutas absolutas para solucionarlo y seguir el paso, o salir de este.., como se prefiera decir.

Por si a caso estas, con demás configuración de los runtime definidos, se pueden editar/agregar/remover en la sección Windows >> Preferences >> Server >> Runtime Environments


También vale aclarar que el mensaje, como se puede apreciar, no da pie del error en cuestión y puede aplicar a otro problema. Por ejemplo que el time out, que se le dió al server creado para ese runtime, no sea tiempo suficiente para que este se detenga, e igual salta el mensaje aunque logre detenerse tarde o temprando.
Esto lo modifican en la sección Timeouts de la definición del servidor, digamos en el Overview; y no se esta haciendo referencia a la configuración del runtime, estas son cosas diferentes.

Nro de visita Cantidad de visitas recibidas