viernes, 26 de septiembre de 2014

Error en la instalación de MongoDB en Debian 7


He estado utilizando a MongoDB con Debian para montar las bases de datos de la empresa donde trabajo (ser jefe tiene sus ventajas) y hasta hoy en la mañana no había tenido ningún problema. Traté de instalar mongodb en una de las máquinas de la oficina que tenía ya instalado Debian y falló. No tenía mucho tiempo de revisar, pensé que era un problema aislado y seguí con los pendientes del día anterior.

Poco entregaron un servidor y lo asignaron al área para que trabajaramos ahí y pusieramos en producción un proyecto, me sentí motivado porque siempre es bueno estrenar los juguetes nuevos, más si es un servidor.

Instalé algunas librerías, uno que otro paquete que necesitaba, NodeJS y demás. No tuve problema alguno hasta que empecé con MongoDB. Dos fallos en un día. Ni modo, a darle..

Seguí los pasos de la página oficial pero cuando quise iniciar el servicio....
[FAIL] Starting database: mongod failed!
[FAIL] Starting database: mongod failed!
invoke-rc.d: initscript mongod, action "start" failed.
dpkg: error al procesar mongodb-org-server (--configure):
 el subproceso instalado el script post-installation devolvió el código de salida de error 1
Configurando mongodb-org-mongos (2.6.4) ...
Configurando mongodb-org-tools (2.6.4) ...
dpkg: problemas de dependencias impiden la configuración de mongodb-org:
 mongodb-org depende de mongodb-org-server; sin embargo:
 El paquete `mongodb-org-server' no está configurado todavía.

dpkg: error al procesar mongodb-org (--configure):
 problemas de dependencias - se deja sin configurar
Se encontraron errores al procesar:
 mongodb-org-server
 mongodb-org
E: Sub-process /usr/bin/dpkg returned an error code (1)

¡El mismo error apareció!

No iniciaba...


"Ok, tranquilo", me dije a mi mismo. "Revisa los logs antes de googlear", recordé. Quise hacer las pruebas en la máquina que previamente había mostrado ese error. Es mejor echar a perder un equipo de 10mil pesos que uno de 10mil dólares...

En la guía de instalación decía claramente que los logs se guardaban en /var/log/mongodb.

tail -n30 /var/log/mongodb/mongod.log
La clave estaba en un par de líneas:
2014-07-15T12:59:41.089+0000 [initandlisten] ERROR: Insufficient free space for journal files
2014-07-15T12:59:41.089+0000 [initandlisten] Please make at least 3379MB available in /data/db/journal or use --smallfiles

Lo chistoso es que según yo, ese disco tenía 1TB.

Bien, ahora para ver el problema:
df -h
root@delta:/home/global# df -h
S.ficheros                                             Tamaño Usados  Disp Uso% Montado en
rootfs                                                   323M   164M  143M  54% /
udev                                                      10M      0   10M   0% /dev
tmpfs                                                    790M   352K  790M   1% /run
/dev/disk/by-uuid/9710f932-bf8e-4455-a0af-5df066802577   323M   164M  143M  54% /
tmpfs                                                    5.0M      0  5.0M   0% /run/lock
tmpfs                                                    4.7G      0  4.7G   0% /run/shm
/dev/sda9                                                890G   3.5G  842G   1% /home
/dev/sda8                                                368M    82M  268M  24% /tmp
/dev/sda5                                                8.3G   2.5G  5.5G  31% /usr
/dev/sda6                                                2.8G   1.4G  1.3G  52% /var

El error estaba en que instalaron Debian en todo el disco duro con la opción de separar el directorio /var 

En este caso el espacio disponible estaba en /home. Entonces lo más práctico es cambiar el path en la configuración. Consulté la guía nuevamente. Para no hacer tanto rollo y hacer las pruebas más rápido, creé un directorio y edité el archivo de configuración; no sin antes hacer
cp /etc/mongod.conf /etc/mongod.conf.bak
Cambié la opción al directorio que había creado.


Traté de iniciar nuevamente:
mongod --config /etc/mongodb.conf

Intenté reparar:
mongod --repair

Ok, cambiaré el path de la base.
mongod --repair --dbpath /home/global/mongodb/



De nuevo error. De regreso a ver el .log.

Ahora el error es de permisos.



¡Já! Creé el directorio para la base de datos como root. A todo el mundo le puede pasar...
chown mongodb mongo/*


¡Listo!

Ahora vamos por el server, será lo mismo pero tendré que esperar hasta el lunes porque ya casi es hora de la salida...


jueves, 11 de septiembre de 2014

Cómo usar un resaltador de sintaxis en Blogger o en tu página personal.


He querido compartir algunas cosas en mi blog pero por cuestiones de tiempo (ahora trabajo de tiempo completo en una oficina) no había podido entrar por aquí. Una de las características que quiero tener en mi blog es el resaltador de sintaxis para poder poner código en las entradas.

Después de googlear por un rato encontré muchos artículos sobre la solución de Alex Gorvatchev (yo la usaba hace tiempo) pero por alguna razón no me decidí a utilizarla; al final me decidí por highlight.js. 

Aquí los pasos para integrarla a su platilla de blogger (los pasos para ponerlo en otro sitio son práctimente los mismos).

1. Abrimos el panel de nuestro blog y damos clic en "Plantilla" y después en "Editar HTML".






2. Agregar los CDN justo antes del cierre de la etiqueta . NOTA: debido a que la plantilla es un documento XML se requiere que cierres todas tus tags por lo que deberás cerrar la etiqueta si no quieres que te muestre un error.



3. Ahora solo falta que en cuando escribas una entrada agregues la clase correspondiente al lenguaje:
<pre><code class="html">...</code></pre>


var express = require('express');
var app = express();
var bodyParser = require('body-parser');


Les dejo nuevamente el enlace de la librería.

Felices líneas.

miércoles, 20 de noviembre de 2013

Cómo saber si hay conexión de datos en FirefoxOS.

Si estamos desarrollando una aplicación que requiera hacer peticiones a un servidor o descargar contenido de una fuente externa, tal vez necesitemos saber si el dispositivo está o no conectado a una red.

Según la documentación de FirefoxOS, existen varios métodos para realizar esta tarea; sin embargo, cuando los probé ninguno me dió los resultados esperados. La opción más popular en Google y que aparece en más ejemplos es la siguiente:

var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;  

En teoría, solo bastaría saber el valor de connection.bandwidth pero de esta forma parece que siempre devuelve Infinity. Otra solución es realizar una petición a algún servidor y así detectar si se está conectado o no según la respuesta que se obtenga.

Para mi lo que mejor se adaptó a lo que necesitaba fue utilizar navigator.onLine. Aquí un ejemplo:

var online = navigator.onLine;

if(online){
   // aquí va el código
}

Ojalá les sirva.
Felices líneas.