domingo, 26 de mayo de 2013

Autoincrement en Oracle

Oracle, a diferencia de otros motores de base de datos como MySql, no soporta la instrucción Autoincrement, pero siempre podemos hacer uso de esa característica.

Para hacerlo, debemos primero crear una secuencia, que es donde llevaremos el incremento. La secuencia puede crearse de modo gráfico, o ejecutando un script como este: 

create sequence ejemplo_seq
start with 1
increment by 1
nomaxvalue;

Donde podemos especificar el número con el que iniciará y el incremento, en este caso lo incrementamos en 1




El segundo paso es crear un trigger (o disparador) para correr la secuencia. También lo podemos crear en forma gráfica o con el siguiente script:

create trigger ejemplo_trigger
before insert on  <nombre_tabla>
for each row
begin
select ejemplo_seq.nextval into :new.id from dual;
end;

Con la instrucción "select ejemplo_seq.nextval into :new.id from dual;" le indicamos al trigger que ejecute la secuencia con el siguiente valor y lo asigne al nuevo registro que estamos creando.


martes, 21 de mayo de 2013

Cómo solucionar el error NTFS-fs al montar USB en Debian

Al conectar un disco duro externo USB en Debian, pude darme cuenta de que  ¡no  montaba!

Este era el error que me mostraba:



Al ver el detalle del problema con dmesg | tail en la consola, pude verificar que el problema consistia en que el tamaño de mi disco duro externo excedia al tamaño reconocido por debian, que es de 2 terabytes, cuando el mio era de 2.5 TB.

Si a alguno le pasa lo mismo que a mi, la solución que encontré fue instalando el paquete ntfs-3g:

$ sudo apt-get install ntfs-3g



jueves, 16 de mayo de 2013

Instalar impresora en red en Debian

Instalar la impresora compartida en red de la oficina no fue una tarea fácil, sobre todo porque no encontré mucha información al respecto, asi que para que no se me olvide nada y talves para ayudar a más de alguno que ande con el mismo problema, escribo la nota con todos los pasos que me ayudaron a resolverlo.

En primer lugar Debian viene instalado con CUPS, que es un sistema de impresión para Gnome o KDE con un entorno sencillo y accesible para configurar nuestras impresoras.

Para acceder a CUPS simplemente escribimos la dirección http://localhost:631 en nuestro navegador web, desde aqui podemos gestionar nuestras impresoras compartidas en red.

En caso de que no tengamos CUPS instalado, ingresamos la siguiente instrucción en la linea de comandos:

$ sudo apt-get install cups

Accedemos a CUPS e ingresamos a la pestaña de Administración para añadir la impresora. Hasta aqui deberia andar todo bien.
Es posible que ocurra que no podamos imprimir, para eso verificamos si tenemos el paquete hplip instalado, si no lo tenemos, lo instalamos:


$ sudo apt-get install hplip

y verificamos si hay algun error:
$ hp-check -t

En mi caso, el problema que tenia era que mi usuario no pertenecía al grupo lp y lpadmin, por lo que tuve que agregarlo:
# adduser usuario lp
# adduser usuario lpadmin

Por último solo queda configurar la impresora con el comando:
# hp-setup



sábado, 11 de mayo de 2013

Crear modelos Master-Detalle en Django

Podemos crear un modelo conteniendo dos o más clases en django con la clase  ModelAdmin. La clase ModelAdmin es la representación de un modelo en la interfaz del administrador, que nos permite establecer el tipo de relación entre las clases 
que le incluyamos.

La clase ModelAdmin ya viene activada por defecto, pero en versiones anteriores es necesario añadir django.contrib.admin al bloque INSTALED_APPS del archivo settings.py para poder utilizarlo

Como ejemplo de cómo utilizar ModelAdmin, crearemos el modelo Master-Detalle de una factura, para ello editamos el archivo models.py y creamos las clases necesarias:

class factura(models.Model):
    nombre = models.CharField(max_length=40, blank=True)
    nit_cliente = models.CharField(max_length=10, blank=True)
    fecha = models.DateField(null=True)
    total = models.IntegerField(null=True, blank=True)
def  __unicode__(self):
    return self.total

class detalle_factura(models.Model):
    factura = models.ForeignKey(factura, db_column='factura_id')
    cliente = models.IntegerField(null=True, blank=True)
    producto = models.ForeignKey(producto, db_column='producto_id')
    cantidad = models.IntegerField()
    subtotal = models.IntegerField()
def  __unicode__(self):
    return self.subtotal


Ahora creamos el modelo utilizando ModelAdmin y lo añadimos al sitio Admin:

class detalle_facturaInline(admin.TabularInline):
    model = detalle_factura

class facturaAdmin(admin.ModelAdmin):
    inlines = (detalle_facturaInline,)

admin.site.register(factura, facturaAdmin)
   

Con esto ya tenemos el modelo Master-Detalle listo.



 Para más información visita la documentación de Django: docs.djangoproject.com/en/dev/ref/contrib/admin


martes, 7 de mayo de 2013

Instalar Eclipse (Android SDK) en Debian

Android SDK es un paquete que contiene todas las librerias API, el IDE de Eclipse y las herramientas necesarias para desarrollar aplicaciones en Android.

Para empezar a desarrollar en Android, la forma más facil es instalando el ADT Bundle, que incluye los componentes esenciales del Android SDK y una versión de Eclipse, todo en una sola descarga.
Para descargarlo, vamos a la página oficial de desarrolladores de android: developer.android.com/sdk/index.html#ExistingIDE y descargamos el paquete adt-bundle-linux-x86-20130219.zip

Uno de los requisitos para instalar el ADT Bundle es tener instalado el JVM de Java en la version 1.6 o mayor. Si no lo tienes instalado, puedes descargarlo aqui: www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html?ssSourceSiteId=otnes
Aceptamos los acuerdos de licencia y descargamos el paquete jre-7u21-linux-i586.tar.gz, que es el Java SE para linux

Para instalarlo, abrimos la terminal y escribimos:
$ su
mkdir -p /usr/java

Esto nos creará una carpeta java en el directorio /usr, que será allí donde alojaremos nuestra instalación del JRE de Java
Nos dirijimos a la carpeta que acabamos de crear, descomprimimos el paquete JRE y creamos un enlace simbólico de nombre default, para utilizarlo en nuestra variable PATH, para ello escribimos en la terminal:

cd /usr/java
tar -zxvf jre-7u21-linux-i586.tar.gz
ln  -s jre1.7.0_21 default

Ahora editamos el archivo bashrc para apuntar nuestra instalación de java al PATH:

gedit /home/nombre_usuario/.bashrc

export PATH=/usr/java/default/bin:$PATH
export JAVA_HOME=/usr/java/default


Guardamos los cambios en el archivo y cerramos la terminal. Abrimos una nueva terminal para comprobar la instalación de java escribiendo:


java -version

Aqui nos debería aparecer el numero de la version de java que acabamos de instalar, que en este caso es la 1.7.0_21

Añadimos una variable de entorno global para que eclipse pueda utilizar java, escribiendo en la terminal (siempre con derechos de superusuario):



gedit /etc/profile.d/java.sh

#!/bin/sh


export PATH=/usr/java/default/bin:$PATH
export JAVA_HOME=/usr/java/default


Guardamos el archivo y cerramos la terminal
 
Ahora procedemos a instalar el ADT Bundle que contiene Eclipse, para ello abrimos la terminal y escribimos:


$ su
mv adt-bundle-linux-x86-20130219.zip /home/nombre_usuario
unzip adt-bundle-linux-x86-20130219.zip

Ya con esto tenemos instalado Eclipse, pero tenemos que indicarle la ruta del JRE de nuestro PATH, y para ello, escribimos en la terminal:


gedit /home/nombre_usuario/adt-bundle-linux-x86-20130219/eclipse/eclipse.ini

editamos el archivo eclipse.ini, añadiendo la siguiente linea al final del fichero:
eclipse -vm /home/nombre_usuario/java/jre1.7.0_21/bin

Guardamos los cambios y reiniciamos.
Ya solo nos falta añadir un enlace a eclipse en el menu principal. Vamos a Sistema->Preferencias->Menu Principal
En la pestaña Programación seleccionamos Elemento Nuevo y escogemos que sea tipo Aplicación. En el campo de Nombre escribimos Eclipse y en el campo Comando ubicamos el ejecutable de Eclipse, que se encontrará en /home/sara/adt-bundle-linux-x86-20130219/eclipse



 
Damos un click en el icono para cambiarlo, y seleccionamos el archivo icon.xpm de la ubicación anterior.

Ahora solo tenemos que ir a Aplicaciones->Programación->Eclipse para empezar a desarrollar en Android.

domingo, 5 de mayo de 2013

Instalar Django en Windows + complemento Oracle


Django es un framework web de código abierto desarrollado en Python que permiteconstruir aplicaciones web rápidamente y con menos código. Para instalarlo en Windows tenemos que tener instalado en primer lugar el intérprete de python, el cual podemos descargar aqui.

Una Vez instalado python, cambiamos las variables de entorno para poder  ejecutarlo desde cualquier ubicación. Para hacerlo, nos dirigimos a Propiedades del Sistema y agregamos la siguiente linea a la variable de sistema Path:
C:\PythonX;C:\PythonX\Tools\Scripts;
donde X es la versión de Python instalada, para mi caso, la 2.7, por lo que tuve:
C:\Python27;C:\Python27\Tools\Scripts;

Abrimos la terminal para comprobar que funciona y escribimos python, si todo va bien, deberiamos obtener algo como esto: 


En caso de que el comando python no sea reconocido por el sistema, revisamos la variable de sistema Path, y verificar la ubicación de la carpeta Scripts de la instalación de Python, ya que ésta puede cambiar en versiones diferentes. 

Ahora instalamos Django y para ello,  descargamos la versión reciente más estable compatible con nuestra versión de Python, para mi caso fue la 1.4.3. Puedes descargar Django directamente aqui
Descomprimimos el paquete de Django y lo ubicamos en la carpeta raíz del sistema, en mi caso en el C:\ 
Una vez hecho esto, volvemos a editar la variable Path del sistema, y agregamos la siguiente linea: C:\Django-X;C:\Django-X\django\bin;
donde X es la versión de Django instalada, en mi caso:
C:\Django-1.4.3;C:\Django-1.4.3\django\bin;


Reiniciamos el equipo y abrimos la terminal, donde nos ubicamos en la carpeta de instalación de Django, en mi caso C:\Django-1.4.3 y ejecutamos la siguiente instrucción: python setup.py install
 
Ahora solo debemos comprobar nuestra instalación.  Para hacerlo,abrimos la terminal y nos situamos en el Escritorio, o en la ubicación deseada para nuestro proyecto y escribimos: django-admin.py startproject prueba
Esto nos creará una carpeta con nuestro proyecto, ahora debemos ejecutarlo, y para ello, nos ubicamos en la carpeta de nuestro proyecto y escribimos: python manage.py runserver



Si todo va bien, deberiamos ver algo como esto: 



Desde aquí ya podemos empezar a trabajar con Django en nuestro proyecto, pero posiblemente quieras utilizar Django con la base de datos Oracle, y para ello debes descargar el paquete cx-Oracle, complemento para manejar Django con Oracle. Puedes descargarlo desde la página: cx-oracle.sourceforge.net, donde debes escoger el complemento específico, según la versión de Oracle y Django.

Instalamos el complemento y abrimos el archivo settings.py ubicado en la carpeta de nuestro proyecto. Editamos el bloque DATABASES, de esta forma:


Donde 'Name' es el nombre de la base de datos, en mi caso XE de la version express, 'User' y 'Password' el nombre y usuario de la base de datos por donde Django se conectará y creará sus propias tablas y 'Host' y 'Port' que por defecto es 'localhost' y '1521' en Oracle. 
Por último, sincronizamos nuestro proyecto Django con la base de datos, abriendo la terminal y ejecutamos la siguiente linea en la ubicación de nuestro proyecto:
python manage.py syncdb


Django nos preguntará si queremos crear un usuario administrador y le decimos que sí, indicamos el nombre del administrador y el password y listo: Django funcionando con base de datos Oracle!