Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programación. Mostrar todas las entradas

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.

viernes, 29 de octubre de 2010

Script para dejar de seguir a alguien si ha publicado cierta frase en Twitter. (PHP)



Después del rollo que me aventé en el título de esta entrada paso a explicar:

En Twitter hay frases o temas que se ponen de moda, algunos son graciosos, otros interesantes, probablemente haya los que nos parezcan tan molestos que quisieramos dejar de seguir a aquellos que escriban sobre él. Respecto a lo anterior, cierto día leí a una persona que comentaba en tono de broma que sería buena idea que hubiera un script que pudiera "dar unfollow" a quienes escribieran cierta frase en su estatus; a mí en lo personal me hizo gracia ya que en verdad hay momentos en que parece que sí hace falta algo así, por lo que me dí a la tarea de empezar a escribir unas líneas al respecto hasta que salió este script.

Antes que nada debo aclarar, que el verdadero fin de realizar este ejemplo no es dar unfollow a diestra y siniestra (para eso no sigo a nadie desde un principio), sino para ver el uso de Oauth y de la API de twitter, puede que un segmento de este código le sirva a alguien en un futuro:

Ahora sí manos a la obra. Como ya sabrán antes hacer una actualización a twitter era relativamente fácil con PHP (y con cualquier otro lenguaje), sin embargo hace unos meses solo se puede hacer mediante Oauth. Afortunadamente almas caritativas han hecho el trabajo sucio por nosotros y han escrito las librerías que facilitan nuestra tarea.

Para que nuestro script funcione necesitamos crear una aplicación: "logueados" en nuestra cuenta de Twitter desde esta página.

Llenamos los datos:

En Application Name, Description, Application Website y Organization escribe lo que desees.
En Application Type selecciona Client.
Callback URL déjala en blanco.
Default Access type: Read & Write.
Por último si quieres adórnala con ícono.

Una vez registrada nuestra aplicación necesitaremos los siguientes datos:

Consumer Key y Consumer Secret.

Además

Access Token (oauth_token) y Access Token Secret (oauth_token_secret).

Estos últimos los obtenemos dando click en el botón My Access Token que esta a la derecha.


El código es el siguiente:


#! /usr/bin/php

require('twitteroauth.php');

// Oauth settings: llenar segun datos al crear tu aplicacion

$consumerKey= 'XXXXXXXXXXXXXXXXXXXXX';
$consumerSecret = 'XXXXXXXXXXXXXXXXXXXXX';
$oauthToken = 'XXXXXXXXXXXXXXXXXXXXX';
$oauthTokenSecret = 'XXXXXXXXXXXXXXXXXXXXX';

// crea el objeto.
$conexion = new TwitterOAuth($consumerKey, $consumerSecret, $oauthToken, $oauthTokenSecret);

$path = 'statuses/home_timeline';

$parametros = array('count'=> 6, 'page'=> 1,);


if(isset($argv[1])){
$i = 1;
while(isset($argv[$i])){
$cadena = $cadena.$argv[$i]." ";
$i++;
}

$cadena = chop($cadena);

$timeline = $conexion->get($path,$parametros);

if ($conexion->http_code == 200) {

foreach($timeline as $tweet){

$texto = $tweet->text;
// se obtiene un objeto con los datos de usuario
$user = $tweet->user;

$usuario = $user->screen_name;

// si esta el texto, hace el unfollow
if(strstr($texto,$cadena)){
echo"BYE BYE $usuario ahora sigue a @driverInside :D";
$conexion->post('friendships/destroy', array('screen_name' => $usuario));
}

}

} else {
echo"\n Error de conexion \n";
}

}else{
echo"\nDebes ingresar la cadena a buscar.\n";
echo"Uso: php unfollow.php [cadena]\n";
echo"Ejemplo: php unfollow.php #SigueAdriverInside";
}

?>

Un ejemplo de uso es php unfollow.php Un ejemplo de mensaje

Notas:

Necesitas obviamente tener php.

http://windows.php.net/download/
apt-get install php5-cli

También necesitas curl:

apt-get install php5-curl
(en el instalador de php en Windows deberás seleccionar que se instale curl).

Como puedes ver en la línea "require('twitteroauth.php');" el programa utiliza otros archivos para funcionar, estos son twitteroauth.php y Oauth.php escritos por Abraham Williams ( http://abrah.am ) los cuales debes poner en la misma carpeta que tu aplicación.

Aquí los archivos:

http://generadoresfree.com/wc/manuales/aptelmex.zip
http://www.fileden.com/files/2010/10/29/3004194//aptelmex.zip


Y lo más importante, es multiplataforma (bueno lo he probado en Ubuntu 10.10, Ubuntu 9.10, Windows 7 y Windows XP; en Mac todavía no :3).

Sin más les deseo felices líneas y feliz día de muertos.

jueves, 19 de agosto de 2010

Envío automatizado de mensajes en emesene con Eval

Si son usuarios de algún cliente de mensajería instantánea, probablemente hayan querido encontrar la manera de mandar mensajes a alguno de sus contactos de manera automática; por ejemplo el contenido de un archivo de texto.

Se me ocurrió utilizar uno de los complementos que tiene emesene llamado EVAL para dicha tarea.

Primero tuve que habilitar el complemento.

Ahora el script en python.

/eval import time
archivo = open("/home/driver/msn.txt","r")
for linea in archivo.readlines():
send(linea)
time.sleep(3)
archivo.close()


Noten que hay una instrucción time.sleep() yo la agregué para darle una pausa al envio. Una opción puede ser time.sleep(0.5) para que mande los mensajes cada medio segundo.

Por último, tenemos que copiar el script y pegarlo en la ventana del contacto al que queremos enviar el texto.

Salu2 y felices líneas.

viernes, 9 de abril de 2010

Hola Mundo en PHP

PHP (Hypertext Pre-Processor) es un lenguaje interpretado e incrustado que originalmente fue diseñado para la creación de páginas web dinámicas.

Aunque su función principal es la interpretación del lado del servidor (server-side scripting), actualmente puede ser utilizado en una línea de comandos o en la creación de otros tipos de programas incluyendo interfaz gráfica.

Más info aquí o aquí.

Dar los primeros pasos en este lenguaje, es realmente sencillo. Como se darán cuenta tendrán que realizar algunas cosas antes (que ya he explicado paso paso en la entrada anterior), pero no hay mayor problema.

Antes que nada, hay que saber que para incrustar el código PHP se usan unos tags o etiquetas que indican dónde empieza y dónde termina.

La forma estándar y recomendada es la siguiente:


<?php ?>

PHP tiene varios modos de mostrar valores en una página. Los dos más habituales son el uso de print( ) y de echo. Aunque se crean como idénticas, no lo son.

En este caso usaremos echo.



Para visualizar el resultado en el servidor que instalamos previamente tenemos que crear un archivo con nuestro poderoso notepad (en windows) o el editor de su preferencia.

Lo guardamos como holamundo.php (o con el nombre que deseen pero con extensión php).

Tenemos que guardarlo en el directorio destinado a nuestras páginas dentro de la configuración del servidor.

Lo que nos resta es ver los resultados, tan solo debemos abrir una ventana de nuestro explorador y escribir en la barra de direcciones:

http://127.0.0.1/holamundo.php

o

http://localhost/holamundo.php

miércoles, 10 de febrero de 2010

Cómo instalar WAMP (Apache, MySQL y PHP)


Aunque el término es originalmente LAMP, existen variantes y alternativas. Dicho acrónimo se refiere a un conjunto de herramientas:

  • Linux (LAMP) / Windows (WAMP).
  • Apache.
  • MySql.
  • PHP.
Una de las soluciones más sencillas para su instalación en Windows puede ser AppServ, WampServer o xampp.

En esta entrada explico la instalación de AppServ 2.5.10.

Primero hay que descargarlo de aquí.

Después de aceptar los términos de la licencia, ponemos la carpeta destino. Damos click en siguiente (o Next).


Elegimos todos los componentes y damos en Siguiente.

En nombre del servidor escribimos localhost, en el mail del Administrador podemos poner cualquiera y en el puerto http se pone 80 (el default).


Por último establecemos la contaseña para MySql y damos Instalar.


Una vez terminada la instalación abrimos una ventana del explorador y en la barra de navegación escribimos http://localhost/ para ver que todo vaya bien.



Explorando C:\AppServ podemos ver que se crean 4 carpetas. C:\AppServ\www es la carpeta por defecto para nuestras páginas. Podemos crear una en Mis Documentos , quedaría por ejemplo:


En C:\AppServ\Apache2.2\conf abrimos (puede ser con el bloc de notas) el archivo httpd.conf



Editamos la línea que empieza con Document root "C:/AppServ/www" y ponemos la ruta de la carpeta que creamos para nuestras paginas.



DocumentRoot "C:\Documents and Settings\Administrador\Mis documentos\Mis Paginas"


Buscamos la parde donde dice:

<Directory "C:\AppServ\www">

Y lo cambiamos por>


<Directory "C:\Documents and Settings\Administrador\Mis documentos\Mis Paginas">




Guardamos los cambios y reiniciamos el servicio. INICIO - Todos los Programas - AppServ - Control Server by Service - Apache Restart.

Lo único que nos falta es probar que todo va bien. Creamos un html llamado index en la nueva carpeta y lo abrimos en nuestro navegador escribiendo http://localhost



<html>

<head>

<title>prueba appserv</title>

</head>

<body>

Prueba de appserv

</body>

</html>




Se debe ver algo como esto:

domingo, 26 de julio de 2009

Diagramas UML y código JAVA en NetBeans 6.5

En la entrada anterior se vió como crear un diagrama de clases en UML sobre Netbeans, ahora pongo cómo se agregan atributos y métodos a las clases y cómo obtener el código en JAVA.

Para nombrar una clase damos doble click sobre la propiedad Name del diagrama.

Si queremos agregar atributos y/o métodos solo damos click derecho y elegimos la opción deseada.

Podemos especificar la visibilidad o alcance y su valor de inicialización.
Así mismo para los métodos se pueden añadir sus parámetros.
Una opción interesante es la de poder agregar su documentación:
Yo creé un proyecto nuevo llamado proyectoOrdenador para obtener el código de la clase a partir de su diagrama UML aunque se puede añadir a cualquier proyecto. Sobre el nombre del proyecto UML, damos click derecho y elegimos Generar código.


Indicamos el proyecto en el cual se va a generar el código y damos aceptar.
Ya tenemos el código generado, con sus atributos y métodos.

Tal vez yendo un poco más allá también podamos añadir a los atributos sus metodos get y set.
En el menú Reestructurar damos click en Encapsular campos y después elegimos qué campos y métodos inlcuir.

sábado, 25 de julio de 2009

Generar diagramas UML en NetBeans 6.5

Una de los complementos que se me hizo interesante en NetBeans es la creación de diagramas UML. Estos son los pasos para instalarlo y algunas imágenes. Después pondré un ejemplo de cómo generar el código de las clases que vayamos haciendo de este modo.

1. Una vez abierto nuestro IDE, en el menú Herramientas damos click en Complementos.

2. En la pestaña de Complementos disponibles buscamos UML, y elegimos Instalar.
3. Una vez descargado, tenemos que aceptar el acuerdo de siempre y finalmente damos click en Finalizar.
4. Ya instalado el complemento, en la pantalla de Proyecto Nuevo ya tendremos habilitada la opción de crear proyectos en UML.
5. Como se puede observar podemos crear diversos tipos de diagramas, para el ejemplo voy a ocupar el diagrama de clases.
6. Ya creado el proyecto solo es cuestión de arrastrar los elementos para empezar a trabajar con ellos y las posibles relaciones que se pueden hacer.
Son muchas las posibilidades que se tienen con este complemento instalado en el IDE como la aplicación de ingeniería inversa a un codigo en JAVA para crear su diagramado.

sábado, 13 de junio de 2009

Cómo instalar un programa en Linux

Comparación entre las instalaciones en w1ndow$ y Linux...

Hacer click aquí o aquí para agrandar (en verdad vale la pena).
vía Hornoxe

jueves, 8 de enero de 2009

Clase Factorial Java

El mismo ejemplo anterior pero ahora con Java:

/**
*
* @author driverInside
*/

public class Factorial {
// Atributos
private int factorial;
// Métodos
long facIte(int base){ // metodo iterativo
factorial = base;
if (base == 0){
return 1;
}
else{
while(base > 1){
factorial = factorial * (base -1);
base--;
}
}
return factorial;
}// fin del método facIte

long facRec(int base){ // método recursivo
factorial = base;
if(base == 0){
return 1;
}
else{
return base * this.facRec(base -1);
}
} // Fin del método facRec

public static void main(String[] args) {
// se crea un objeto Factorial
Factorial factorial = new Factorial();

for(int i =0; i <=10; i++){
System.out.printf("El factorial de %d es: %d\n",
i, factorial.facRec(i));
}

} // fin de la función main

}// fin de la clase factorial

lunes, 5 de enero de 2009

Clase Factorial C++

En un foro me encontré a un usuario que deseaba sacar el factorial los primeros 10 números (básico ejercicio en programación) pero con clases en C++ o Java, probablemente era alguna tarea. La solución que le propuse fue la siguiente, solo para los primeros 5. Utilicé dos formas para relizar el cálculo: una iterativa y otra recursiva.
Y como siempre les deseo felices líneas :P

#include<iostream>
#include<string>
using namespace std;

class Factorial{
// Atributos
private:
int factorial;
// Métodos
public:
int facIte(int base){ // Forma Iterativa
factorial = base;
if(base == 0){
return 1;
}
else{
while(base >1){
factorial = factorial * (base - 1);
base--;
}
}
return factorial;
} // Fin del método facIte
int facRec(int base){ // forma recursiva
factorial = base;
if(base == 0){
return 1;
}
else{
return base * this->facRec(base -1);
}
}// Fin del método facRec
}; // Fin de la clase Factorial
int main(){

// Se crea un objeto Factorial
Factorial fact01;

for(int i = 0; i <= 5; i ++){
cout<<"El factorial de "<<>
}
cout<<"\n";
for(int i = 0; i <= 5; i ++){
cout<<"El factorial de "<<>
}
} // Fin de la Función main


Y como siempre les deseo felices líneas :P

martes, 23 de diciembre de 2008

Gambas 2 En ubuntu 8.10

Después de una larga ausencia por estos rumbos a consecuencia de la escuela les quiero explicar qué es Gambas.

Según Google:

Es un lenguaje de progamación derivado de BASIC interpretado (como Java que genera bytecode) que usa un interprete -Gambas runtime-. Ofrece generar aplicaciones de todo tipo:
  • Aplicaciones de texto.
  • Servicios WEB
  • Diseño en 2D, 3D, openGL.
  • Empaquetado en diferentes distribuciones.
Y un largo etc. Además hay que decir que la similitud con VB de window$ es muy grande. Sin embargo hay una gran diferencia: Es orientado a objetos, VB 6.0 es basado en objetos así que es una buena opción para los que programan en Java y no han olvidado al clásico VB 6.0.

Aquí los pasos para en famoso "Hola Mundo".

Paso 1: Instalar.

$ sudo aptitude install gambas2

Paso 2: Generar el Proyecto.

Aplicaciones > Programación > Gambas2

Nuevo Proyecto

Aplicación gráfica



Elegir ubicación. puede ser /home/usuario/Documentos. Incluso el Escritorio




Damos Nombre y Título



Veremos que se genera un Formulario. Para cambiar el nombre podemos dar F2 o hacer click derecho en la barra de la izquierda (yo puse frmHola, víctima de la nostalgia).


Agregamos un botón



*opcional: cambiar el nombre del boton. Como hice en el caso del formulario también le cambié el nombre. Si damos doble click sobre la propiedad "TEXT" nos sale una ventana:


Doble click sobre el control y escribimos:

Message.Info ("Hola Mundo")




Damos ejecutar y listo!

A darle se ha dicho. Hay muchas cosas que se pueden hacer, recordando siempre que no es para nada un clon del de window$; solo hay que buscarle y agarrarle el modo.

Felices Líneas.

jueves, 31 de julio de 2008

Hola Mundo con Java y Ubuntu

¿Qué es Java?

Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems en la década de los 90's

Java se creó con cinco objetivos principales:

  1. Debería usar la metodología de la POO.
  2. Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.
  3. Debería incluir por defecto soporte para trabajo en red.
  4. Debería diseñarse para ejecutar código en sistemas remotos de forma segura.
  5. Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++.
Manos a la obra.

Antes que nada hay que tener todo lo necesario para hacer que funcione esto. Si ya hiciste el ejemplo anterior con C# esto se te hará pan comido. Si empiezas desde cero de igual forma verás que es muy sencillo.

1. Abre una terminal y escribe:

$ sudo aptitude install sun-java5-jdk sun-java5-bin sun-java5-demo sun-java5-jre

2. Después de este paso lo que sigue es crear nuestro archivo .java y escribir nuestro código. En una terminal escribimos:

$ cd Escritorio
Nota: Probablemente tendrás que escribir cd Desktop, más si no usas ubuntu.

$ mkdir holajava

$ gedit holajava.java



3. Verás que en este punto habrás creado una carpeta en tu escritorio llamada holajava y saldrá un editor en el cual vamos a escribir lo siguiente (ver imágen)

public holajava{
public static void main(String args[]){
System.out.println("Hola Mundo");
}// fin del main
}// fin de la clase holajava




Nota: Es importante que el nombre del archivo y el nombre de la clase publica sean los mismos, de lo contrario marca un error. En C# no es necesario esto.

4. En la terminal escribimos:

$ javac holajava.java

y por ultimo

$ java holajava



Como se puede ver hay muchas similutudes con el hola mundo en C#.

Felices Líneas (me refiero a las de código).