Buscando artículos sobre " Programación"
31-marzo-2014
admin

Tipos de generadores de identificadores en hibernate

En hibernate podemos utilizar el elemento generator para generar identificadores únicos para instancias de la clase persistente. De requerirse algún parámetro para configurar o inicializar la instancia del generador, se pasa utilizando el elemento .

Todos los generadores implementan la interfaz org.hibernate.id.IdentifierGenerator. Algunas aplicaciones pueden decidir brindar sus propias implementaciones especializadas. Sin embargo, Hibernate provee un rango de implementaciones ya incorporadas. Los nombres de atajo para los generadores incorporados son los siguientes:

increment: genera indentificadores de tipo long, short o int que sólamente son únicos cuando ningún otro proceso está insertando datos en la misma tabla. No lo utilice en un clúster.

identity: soporta columnas de identidad en DB2, MySQL, MS SQL Server, Sybase y HypersonicSQL. El identificador devuelto es de tipo long, short o int.

sequence: usa una secuencia en DB2, PostgreSQL, Oracle, SAP DB, McKoi o un generador en Interbase. El identificador devuelto es de tipo long, short o int.

hilo: utiliza un algoritmo alto/bajo para generar eficientemente identificadores de tipo long, short o int, dada una tabla y columna como fuente de valores altos (por defecto hibernate_unique_key y next_hi respectivamente). El algoritmo alto/bajo genera identificadores que son únicos sólamente para una base de datos particular.

seqhilo: utiliza un algoritmo alto/bajo para generar eficientemente identificadores de tipo long, short o int, dada una secuencia de base de datos.

uuid: utiliza un algoritmo UUID de 128 bits para generar identificadores de tipo cadena, únicos dentro de una red (se utiliza la direccón IP). El UUID se codifica como una cadena hexadecimal de 32 dígitos de largo.

guid: utiliza una cadena GUID generada por base de datos en MS SQL Server y MySQL.

native: selecciona identity, sequence o hilo dependiendo de las capacidades de la base de datos subyacente.

assigned: deja a la aplicación asignar un identificador al objeto antes de que se llame a save(). Esta es la estrategia por defecto si no se especifica un elemento < generator>.

select: recupera una clave principal asignada por un disparador de base de datos seleccionando la fila por alguna clave única y recuperando el valor de la clave principal.

foreign: utiliza el identificador de otro objeto asociado. Generalmente se usa en conjunto cón a una asociación de clave principal < one-to-one>.

sequence-identity: una estrategia de generación de secuencias especilizadas que utiliza una secuencia de base de datos para el valor real de la generación, pero combina esto junto con JDBC3 getGeneratedKeys para devolver el valor del identificador generado como parte de la ejecución de la declaración de inserción. Esta estrategia está soportada sólamente en los controladores 10g de Oracle destinados para JDK1.4. Los comentarios en estas declaraciones de inserción están desactivados debido a un error en los controladores de Oracle.

Ejemplo 1:
Si tenemos una clave primaria «idAplicacion» en MySQL con la propiedad auto_increment, se mapearia así:

//Mapeo usando anotaciones
        @Id
        @GeneratedValue
        private Integer idAplicacion;

//Mapeo en fichero hbm
        < id name="idAplicacion" type="int" unsaved-value="0">
            < column name="idAplicacion" precision="5" scale="0"/>
	    < generator class="identity"/>
        < /id>

Ejemplo 2:
Si tenemos una clave primaria «idAplicacion» en una BD oracle y queremos asignarle una secuencia llamada SEQ_ID_APLICACION, se mapearía así:

//Mapeo usando anotaciones
        @Id
        @SequenceGenerator(name="seq", sequenceName="SEQ_ID_APLICACION")
        @GeneratedValue(strategy=GenerationType.AUTO, generator="seq")
        private Integer idAplicacion;

//Mapeo en fichero hbm
        
                
                
                        SEQ_ID_APLICACION
                
        

Fuente
Explicación de diferentes generadores con ejemplos

29-enero-2014
admin

Usar Bootstrap en tu Django admin app

Si quieres añadir Bootstrap a tu aplicación realizada con el administrador de Django es tan facil como:

1 – Descargarte esta aplicación.

2 – Instalarla

 pip install django-admin-bootstrapped

3 – Añadir ‘django_admin_bootstrapped’ a la lista de INSTALLED_APPS antes de ‘django.contrib.admin’

Más información

26-enero-2014
admin

Instalar panel de administración de Django y añadir nuevos modelos

En primer lugar se debe activar la interfaz de la administración ya que se trata de una funcionalidad opcional. Pasos para activarlo:

1 – Realizar los siguiente cambios en el fichero settings.py:
* Añadir ‘django.contrib.admin’ a la propiedad INSTALLED_APPS.
* Añadir también a la propiedad INSTALLED_APPS los paquetes: ‘django.contrib.auth’, ‘django.contrib.contenttypes’, y ‘django.contrib.sessions’.
* Añadir en MIDDLEWARE_CLASSES los valores ‘django.middleware.common.CommonMiddleware’,
‘django.contrib.sessions.middleware.SessionMiddleware’, y ‘django.contrib.auth.middleware.AuthenticationMiddleware.

2 – Ejecutar python manage.py syncdb. Esto instalará las tablas de base de datos que utiliza el interfaz de administración. La primera vez que se ejecute syncdb con ‘django.contrib.auth’ en INSTALLED_APPS, te preguntará sobre la creación de un superusuario. Si no lo crea, tendrá que ejecutar python manage.py createsuperuser por separado para crear una cuenta de usuario administrador más adelante. Ya que esto es necesario para entrar a la administración.

3 – Agregue el sitio de administración a su URLconf en el fichero urls.py.

    from django.contrib import admin
    admin.autodiscover()

    urlpatterns = patterns(”,
    (r’^admin/’, include(admin.site.urls)),
    )

4 – Ahora ya puede ejecutar la administración de Django. Simplemente hay que ejecutar el servidor de desarrollo (python manage.py runserver) e ir a la url http://127.0.0.1:8000/admin/

A continuación, ya puede añadir modelos al sitio de administración y crear sobre ellos los CRUD automáticamente con una interfaz amigable. Para ello dentro de la aplicación que contiene el modelo se debe crear un fichero admin.py con el siguiente contenido:

    from django.contrib import admin
    from miaplicacion.models import modelocreado

    admin.site.register(modelocreado)

Una vez que haya hecho esto, en la página de inicio de administración se debe ver una sección de modelocreado. Es necesario reiniciar runserver para que los cambios tengan efecto.

22-enero-2014
admin

Error Django: «ImportError: No module named defaults»

Este error pasa por usar django.conf.urls.defaults a partir de la versión 1.6 de Django. Ya que ha sido deprecado.

Ahora lo correcto es usar django.conf.urls

20-enero-2014
admin

Actualizar la versión de Django

Para instalar una nueva versión de Django los pasos a seguir son:

1º – Desinstalar la versión instalada.
Para desinstalar django basta con borrar el directorio que hay en:
{carpeta de instalación de python}\Lib\site-packages

Si no sabes donde está se puede ejecutar la siguiente instrucción para buscarla:

python -c "import sys; sys.path = sys.path[1:]; 
                                    import django; print(django.__path__)"

2º – Instalar la nueva versión.

python setup.py install

18-enero-2014
admin

Error en Django: «ImportError: No module named setuptools»

Intentando instalar una libreria para usar Django (python setup.py install). Me daba el siguiente error:

ImportError: No module named ‘setuptools’
Buscando un poco de información:
«Setuptools es una colección de programas para mejorar las herramientas de distribución de Python, que permiten crear y distribuir paquetes de Python, incluyendo dependencias para su instalación… Fuente»

Por lo tanto bastaría con instalarlo: https://pypi.python.org/pypi/setuptools

Para mi caso no me hizo falta instalar la librería setuptools. En su lugar simplemente instalé la librería distribute. Está librería ya ha sido absorvida por setuptools por lo tanto lo correcto es la otra opción.

Descargar distribute aquí: http://python-distribute.org/distribute_setup.py
Para instalar: python distribute_setup.py

12-enero-2014
admin

Usar HTML para formatear textos en Android

Cuando en Android quieres incluir un texto HTML en la aplicación aplicación se debe utilizar el paquete android.text.html.

Documentación Oficial

Ejemplo de uso:

//Asigna texto con formato HTML
txtTexto.setText(
     Html.fromHtml("prueba"), BufferType.SPANNABLE);

Funciona perfectamente con opciones de formato básicas, como son: negritas, cursivas, subrayado o colores de texto. Alguna como el tamaño del texto sí funciona correctamente con el método toHtml(), sin embargo con el método fromHtml() no. También, permite incluir imágenes.

En esta página hay una buena introducción de los objetos span de android. A través de los cuáles también se pueden formatear textos usando html.

7-enero-2014
admin

Añadir tipos de letra a las aplicaciones Android

Paso 1/ Poner en el directorio Assets/fuente la fuente deseada. En este caso BA-Wet_Paint.otf.
Nota: En esta página hay numerosos tipos de fuentes gratuitos.

Paso 2/ Creamos por ejemeplo un TextView tal que así:

< TextView  
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:id="@+id/texto" / >

Paso 3/ Por último podemos asignarle por código el tipo de letra:

TextView text = (TextView) mView.findViewById(R.id.texto);
Typeface font = Typeface.createFromAsset(context.getAssets(), 
                                           "fuente/BA-Wet_Paint.otf"); 
text.setTypeface(font);

//Si, además, se quiere poner en negrita
text.setTypeface(text.getTypeface(), Typeface.BOLD);

6-enero-2014
admin

Desordenar aleatoriamente un array en java y en php

Para desordenar un array en PHP tenemos la función shuffle. En el ejemplo se crea una array ordenado de 1 a 6 mediante la función range para luego mezclarlos:


En java tenemos la función Collections.shuffle que es equivalente. Recibe como parámetro una lista y mezcla los distintos objetos o tipos que la componen.

List< TuObjeto> asks = new LinkedList< TuObjeto>();
asks.add(new TuObjeto(1));
asks.add(new TuObjeto(2));
asks.add(new TuObjeto(3));
Collections.shuffle(asks);

Como apunte decir que si lo que queremos es desordenar una lista obtenida directamente desde una Base de Datos MySql podemos usar la función rand(). Más información de esta y otras funciones en la documentación oficial de MySql.

SELECT * FROM wth_users ORDER BY rand()

7-diciembre-2013
admin

Generar ficheros excel o word con php

Para generar un una hoja de excel con php basta con añadir al inicio de la página esta cabecera:


Para las celdas puedes utilizar una tabla.

Si quisieras que fuera un documento word tendrías que añadir:


Ésta sería la forma más rudimentaria que hay. Actualmente existen librerías para php que permiten la creación de ficheros excel de una forma más amigable. Por ejemlo:

PHPExcel – es una librería muy potente para PHP integrada por un conjunto de clases que permiten escribir y leer diferentes formatos de archivos de hojas de cálculo como .xls, . xlsx, .csv, .ods, PDF, HTML,… Este proyecto se basa en el estándar OpenXML Microsoft y PHP.

SimpleExcel PHP – es una librería PHP bastante simple que te permite analizar, convertir y escribir datos tabulares desde y hacia Microsoft Excel XML / CSV / TSV / HTML / formato JSON

PHP-Excel – es una librería php-excel muy simple que permite para generar documentos Excel desde php.

Categorias

Linkedin