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
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
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.
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.
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.
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
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’
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.
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>
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"); } .... }
Añadir banner de publicidad Admob en Android
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); } ... }
Categorias
- adobe (2)
- agile (1)
- Alfresco (1)
- Android (26)
- Angular (6)
- angularjs (10)
- apache (1)
- axis (2)
- Bases de datos (14)
- Bootstrap (1)
- C# (3)
- Cámara (1)
- chrome (3)
- Codeigniter (2)
- Control de Versiones (2)
- CSS (25)
- CVS (1)
- Django (9)
- Django Rest Framework (1)
- DNS (1)
- Docker (3)
- dominio (1)
- eclipse (5)
- Entity Framework (2)
- ETL (1)
- Firefox (6)
- flash (1)
- freecad (1)
- Git (12)
- GitHub (4)
- gpg (2)
- Groovy (1)
- Handlebars (1)
- hibernate (4)
- hosting (1)
- HTML (50)
- HTML 5 (26)
- Impresión 3D (9)
- Inkscape (1)
- IOS (2)
- ireports (3)
- Java (44)
- Javascript (55)
- JBoss (5)
- JPA (2)
- JQuery (20)
- Json (7)
- JSP (6)
- Keycloak (1)
- Lamp (1)
- LDAP (2)
- lean (1)
- linkedin (1)
- LINQ (1)
- linux (13)
- Livecycle (1)
- log (1)
- microcontroladores (1)
- MongoDB (4)
- MySQL (8)
- Node.js (5)
- OC4J (1)
- Openshift (2)
- Oracle (6)
- Patrones de Diseño (1)
- Photoshop (2)
- php (20)
- PostgreSQL (1)
- python (19)
- rabbitmq (1)
- Raspberry PI (13)
- Raspherry PI (5)
- React (6)
- seguridad (3)
- Selenium (3)
- Sencha Touch (1)
- Sin categoría (29)
- Spring (17)
- spring-boot (3)
- SQL (7)
- SQLServer (1)
- SSO (1)
- struts (2)
- SVN (1)
- Talend (1)
- Tomcat (6)
- unity (3)
- Visual Studio Code (2)
- vmware (5)
- Web Services (11)
- windows (18)
- wordpress (10)
- Xiaomi (1)
- xml (2)
Trabajos Realizados
- App Android – Autoka Fr
- App Android – Cartelera Cántabra
- App Android – Gramática y Vocabulario Ingles
- App Android – Hoja de Gastos
- App Android – Hotel Torre Cristina
- App Android – OcioEnjoy
- App Android – Visor CardBoard
- App Firefox – Managapp
- DiamanteBomba – DisasterCode
- Generador de Partes de Trabajo
- GitHub – Android Web Generator
- GitHub – Dynamic Angular Gallery
- GitHub – Dynamic React Gallery
- GitHub – Sotilizator
- GitHub – SpringAngularJS
- GitHub – Swiper Dynamic Angular Gallery
- HazParejas – DisasterCode
- RompeCabezas – DisasterCode
- Unity Game – English Couple
- Unity Game – Kill Wasp
- WordPress – El Buen Apicultor
- WordPress – El Cajón de los Retales
- WordPress – El Vestidito Azul
- WordPress – Feuchas
- WordPress – Fragua de Navajas Ponce
- WordPress – Humor a las Tres
- WordPress – Photo Places