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>


Nro de visita Cantidad de visitas recibidas