Buscando artículos sobre " Programación"
9-septiembre-2016
admin

Eliminar Spring Roo con eclipse

Para quitar Spring Roo de un proyecto que lo esté utilizando sin perder las funcionalidades que se tienen se deben seguir los siguientes pasos:

Paso 1: Eliminación de los aspectos del proyecto
Para ello seleccionamos el proyecto en el IDE -> pulsamos el botón derecho del ratón -> en el menú contextual seleccionamos la opción Refactor/Push In… -> tras pulsar el botón “OK” -> se eliminarán del proyecto las clases de los aspectos.

Paso 2: Eliminación de las anotaciones de las clases del proyecto.
Se realiza reemplazando las anotaciones de Spring Roo. Para ello, iremos a la opción del menú Search/Search/File Search -> en el campo con título “containing text” insertaremos la expresión regular “\n.*[@\.]Roo[^t_]+?.*$” (sin comillas) -> seleccionaremos las check: “Case sensitive” y “Regular expression” -> a continuación, pulsaremos el botón “Replace…” -> y, para finalizar, se mostrará un ventana que solicitará el nuevo texto, en donde pulsaremos el botón de aceptación.

Paso 3: Eliminación referencias del pom.
Se eliminan a mano todas las dependencias a Spring ROO existentes en el pom.xml.

Paso 4: Corregir errores del eclipse
Aparte es posible que haya que corregir algun error en el codigo generado en las clases con relaciones muchos a muchos. Tales como:
– crear método ‘getSerialversionUID’ en las clases,
– pasar los constructores a public
– quitar la propiedad ‘final’ de la clase
– quitar los ‘implements serializes’ repetidos
– añadir los métodos ‘hashcode’ y ‘equals’
– …
Se trata de errores que se solucionan rapido porque los va a ir sacando el eclipse.

Tras todo eso puedes probar tu proyecto ejecutando
mvn clean install jetty:run

31-agosto-2016
admin

Crear aplicación a partir de la Base de Datos con Spring Roo

Paso 1: Instalar Spring Roo
– En primer lugar necesitas tener instalado Java y Maven.
– A continuación te descargas Spring Roo de la página oficial.
– Se descomprime en un directorio y se añade al path. En windows seria añadir en el path $ROO_HOME\bin siendo $ROO_HOME el directorio donde lo has descomprimido.
– Para comprobar que se ha instalado correctamente podemos ejecutar directamente en la consola el siguiente comando.
roo quit
Si todo va bien debería mostrarnos el logo de Spring Roo.


Paso 2: Crear un proyecto de Spring Roo
Se puede crear de distintas formas:
– Con el STS se puede crear un proyecto de Spring Roo como tal.
– Con el eclipse también se podría añadiendo el plugin de Spring Roo.
– Y por último también podriamos utilizar directamente la consola para su creación.

De esta forma, los comandos para la creación de un proyecto a partir de una BD Mysql serían:

//Primero se configura la BD de la que luego se hará ingeniería inversa...
jpa setup --database MYSQL --provider HIBERNATE --databaseName nombre_de_mi_esquema --hostName ip_de_mi_mysql --userName mi_usuario --password mi_contraseña
//Luego se puede comprobar si se ha realizaco la conexión bien
database introspect --schema nombre_de_mi_esquema
// si te dice que no encuentra el driver puedes instalarlo así
addon search mysql
//te deberia salir una lista con los drivers que puedes instalar para a continuación
addon install id --searchResultId xx    
//xx sería el codigo del driver mostrado en el listado que saca el anterior comando...
//En mi caso me dió problemas y el de mysql no me lo instaló bien así que lo instale a mano.
//Para ello me lo descargue y lo instalé con el siguiente comando:
osgi start --url file:///C:\\mysql-connector-java-5.1.18.jar
//Ahora ya se puede crear las entidades a partir de la BD.
database reverse engineer --schema nombre_de_mi_esquema --package ~.domain --includeTables "tab_*"

Por último sería añadir el resto del negocio y la presentación. Para ello pongo dos ejemplos: MVC y JSF.

//Usando Spring MVC
web mvc setup
web mvc all --package ~.web
Usando JSF
web jsf setup --implementation --library --theme
web jsf all --package ~.web

Como nota decir que se lía algo con las tablas con clave primaria múltiple (hay que quitar unos errores que salen en los ficheros *.aj que crea).

Puedes probar a ejecutar el proyecto simplemente con la instrucción de manve
mvn clean install jetty:run


Documentación:
Ejemplo de creación de un proyecto con STS. Ver
Ejemplo de creación de un proyecto con el plugin de eclipse para Spring Roo. Ver

7-junio-2016
admin

Herramientas para testeo de Microsoft Edge

Microsoft nos facilita una serie de herramientas gratuitas para mejorar el diseño y la accesibilidad de nuestros sitios web en las distintas plataformas.

Virtual machines
Te permite probar tu aplicación web desde cualquier versión de internet explorer mediante máquinas virtuales gratuitas que se pueden descargar. Disponibles para cualquier tipo de sistema operativo.
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/windows/


RemoteIE
Mediante esta herramienta puedes probar de forma remota gratis con Azure RemoteApp en Windows, Mac, iOS o Android.
https://developer.microsoft.com/en-us/microsoft-edge/tools/remote/


Generate screenshots
Herramienta que te muestra como se ve tu sitio web a través de 9 navegadores y dispositivos más comunes.
https://developer.microsoft.com/en-us/microsoft-edge/tools/screenshots/


F12 Dev Tools
Uso de las propias herramientas de desarrollo de Microsoft Edge.
https://developer.microsoft.com/en-us/microsoft-edge/platform/documentation/f12-devtools-guide/


Site Scan
Herramienta que permite analizar tu sitio web. Detecta problemas de diseño y accesibilidad.
Analiza el código HTML, CSS y JavaScript de un sitio o aplicación web. Se advierte acerca de las prácticas tales como la especificación incompleta de las propiedades CSS, doctypes no válidos o incorrectos, y las versiones obsoletas de JavaScript populares de libraries.
https://developer.microsoft.com/en-us/microsoft-edge/tools/staticscan/


Otras Herramientas que pueden resultar útiles:
BrowserStack: Prueba todos los navegadores y dispositivos de forma interactiva desde su dispositivo preferido
Borland Silk Test: Asegura la calidad de la aplicación web a través de navegadores de escritorio y móviles.
Kraken.io: Permite optimizar sus imágenes, ahorrar ancho de banda y mejorar los tiempos de carga.

29-mayo-2016
admin

Efectos en aplicaciones Androd

View Pager
El viewpager es un componente que nos permite desplazarnos entre pantallas deslizando el dedo horizontalmente. Permite dotar a nuestras aplicaciones de un buen efecto y es sencillo de implementar. Es muy usado, te lo puedes encontrar en aplicaciones como: youtube, google store,…

Documentación oficial
Tutorial

Drawer Layout
Se trata de un layout que incluye Android que nos permite crear menus que se muestran y se ocultan en el lateral de tu aplicación.

Documentación oficial
Tutorial

Sliding Pane Layout
Es otro layout similar al Drawer Layout, se diferencia en que desplaza una vista para situar otra.

Tutorial

Parallax
Este efecto se utiliza mucho en los listados. Te permite hacer que, por ejemplo, la cabecera de una lista se expanda o se contraiga según nos movemos utilizando el scroll.

Ejemplo con ListView y ScrollView

10-febrero-2016
admin

Logging en python

Ejemplo de configuración de log para python. Se utiliza un fichero de configuracion llamado logging.conf, donde se definen dos manejadores uno a nivel de consola StreamHandler y otro a nivel de fichero FileHandler.
StreamHandler: Escribirá en la salida estandar del sistema las trazas con nivel INFO.
FileHandler: Escribirá en un fichero llamado Result_Operations.log las trazas con nivel DEBUG.
En ambos se formatean los mensajes para que sólo muestre el contenido del mensaje.

from logging import config
....
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('root')

logger.debug("mensaje para el FileHandler")
logger.info("mensaje para ambos")

logging.conf

[loggers]
keys=root

[handlers]
keys=FileHandler,consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=FileHandler,consoleHandler

[handler_FileHandler]
class=FileHandler
level=DEBUG
formatter=simpleFormatter
args=("Result_Operations.log",)

[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=simpleFormatter
args=(sys.stdout,)

[formatter_simpleFormatter]
format= %(message)s
datefmt=

Documentación oficial logging python
Documentación de los tipos de manejadores

5-febrero-2016
admin

SyntaxError: Non-ASCII character ‘\xe9’

En python para definir la codificación del archivo se puede colocar al inicio del archivo la siguiente línea de código.

# -*- coding: utf-8 -*-

De esta forma se solucionan los errores del tipo: Non-ASCII character ‘\xe9’

Más info PEP 0263 — Defining Python Source Code Encodings.

21-enero-2016
admin

Modificar el tamaño de una imagen y añadir una marca de agua en python

Pillow es una variante (o fork) de la popular librería PIL (Python Image Library) que permite procesar con facilidad imágenes con Python 2.x/3.x.

Permite consultar información básica de una imagen como su tamaño, el formato que tiene, el tipo de imagen (bits/pixel, BN/color, etc.), es posible cambiar su tamaño, recortar un área, girar, aplicar filtros y efectos, convertir el tipo de imagen y su formato, etc.

Para instalar la librería basta con ejecutar el comando.

 pip install Pillow

Un ejemplo de uso puede ser:

import PIL
from PIL import Image

img = Image.open("C:\\foto.jpg")
img = img.resize((500, 500), Image.ANTIALIAS)

imgAgua= Image.open("C:\\agua.jpg")
img.paste(imgAgua, (25, 25))

img.save("C:\\imagenFinal.jpg")

En el ejemplo se abre la imagen foto.jpg para redimensionarla a un ancho y alto de 500px.
Además, se le añade encima una imagen agua.jpg en las coordenadas 25,25 a modo de marca de agua o firma.

Documentación: Link1, Link2

4-enero-2016
admin

Picasso: Librería para manejar imágenes en Android

Picasso es una de las muchas librerías disponibles para la carga de imágenes en tu aplicación android. Con una simple línea de codigo como por ejemplo:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

Te evita el trabajo que conlleva realizar la carga de la imagen de manera manual: memoria automática, almacenamiento en cache, transformaciones complejas usando el mínimo de memoria, …

//Ejemplo de transformación:
Picasso.with(context).load(url).resize(50, 50).centerCrop().into(imageView)
//Ejemplo añadiendo una imagen por defecto por si falla la descarga:
Picasso.with(this).load("http://www.host.com/imagen.jpg")
      .error(R.drawable.error)
      .fit().transform(new RoundedTransformation()).into(imageView);
//dependencia Maven
< dependency>
  < groupId>com.squareup.picasso< /groupId>
  < artifactId>picasso< /artifactId>
  < version>2.5.2< /version>
< /dependency>

Documentación Oficial

27-diciembre-2015
admin

Interface Parcelable en Android

Esta interface se usa en Android para poder pasar objetos entre las Activities. A continuación se muestra un ejemplo de uso paso por paso:

Paso 1/ Crear una clase que implemente el interface Parcelable

public class User implements Parcelable{
	private String id;
	private String name;
	private String direccion;
        //La clase Comentario también debería un objeto Parcelable
	private List< Comentario> comments;

        ....getters y setters....
}

Paso 2/ Implementar los métodos describeContents y writeToParcel

	@Override
	public int describeContents() {
		return 0;
	}
	@Override
	public void writeToParcel(Parcel dest, int flags) {
		dest.writeString(this.id); 
		dest.writeString(this.name);
		dest.writeString(this.direccion);
		dest.writeTypedList(this.comments);
	}

Paso 3/ Implementar un campo static llamado CREATOR

	public static final Parcelable.Creator< User> CREATOR = 
                                  new Parcelable.Creator< User>() {
	    @Override
	    public User createFromParcel(Parcel source) {
	        return new User(source);
	    }
	 
	    @Override
	    public User[] newArray(int size) {
	        return new User[size];
	    }
	 
	};


	private User(Parcel source) {
                // los campos se deben leer en el mismo orden que se han
                // escrito en writeToParcel
		this.id = source.readString();
		this.name = source.readString();
		this.direccion = source.readString();
		if (comments == null) {
			comments = new LinkedList< Comentario>();
		}
		source.readTypedList(comments, Comentario.CREATOR);
	}

Paso 4/ Para utilizarlo sería

//Al lanzar la nueva actividad se metería el objeto parcelable
Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("variableUser", user); //user sería un objeto User
startActivity(intent);
//en el create de la actividad lanzada se extraería
public class OtherActivity extends Activity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_second);
 
         User datos = getIntent().getParcelableExtra("variableUser");
     }
     ....
}

Documentación Oficial

20-diciembre-2015
admin

Añadir banner de publicidad Admob en Android

Documentación oficial

A modo de resumen sería:

1 – Incluir en el proyecto la depencia para utilizar Mobile Ads SDK.
‘com.google.android.gms:play-services-ads:8.3.0’

2 – Obtener el Ad Unit ID para tú aplicación se puede colocar en el strings.xml.
ca-app-pub-XXXXXXXXXXXXXXXX/NNNNNNNNNN

3 – Añadir en tu activity layout el AdView que contendrá el banner. (No olvidar incluir el namespace xmlns:ads=»http://schemas.android.com/apk/res-auto»)

    < com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id">
    < /com.google.android.gms.ads.AdView>

4 – Cargar el adview en la activity.

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class MainActivity extends ActionBarActivity {

    ...

    protected void onCreate(Bundle savedInstanceState) {
        ....
        AdView mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }
    ...
}
Páginas:«12345678...15»

Categorias

Linkedin