sábado, 30 de junio de 2018

Apache NetBeans y Python


Debemos descargar el plugin de NetBeans desde este sitio 

Se tiene que extraer los archivos del plugin para poder instalarlo en el NetBeans.

Nos vamos al menú Tools

Luego al menú plugins

Después debemos ir al tab de downloaded para poder instalar el plugin

Damos clic al botón de Add Plugins y buscamos el plugin que descargamos. Cuando lo encontramos le damos clic a la carpeta y seleccionamos todos los archivos que tiene el plugin.

Despues de seleccionar todos los archivos vamos a ver la siguiente ventana

Ahora simplemente le damos clic al botón de install y esperamos que el IDE nos pida reiniciar. 

Cuando el proceso termina reiniciamos el IDE y ya estamos listos para poder trabajar con Python en Apache NetBeans.

Ahora nos vamos a crear un proyecto nuevo

Como vemos ya tenemos la opción de hacer el proyecto en Python. En mi caso voy hacer un proyecto de tipo "Python Project – Ant". El nombre de mi proyecto es TestPython y cuando NetBeans termina de hacer el proyecto crea un archivo donde podemos iniciar a escribir nuestro código.

Ahora nuestro sistema lo que muestra es el mensaje de Apache NetBeans 9.0



Etiquetas: ,

miércoles, 20 de junio de 2018

Apache Netbeans


Hace unos días descargue la versión de Apache Netbeans para ver como estaba funcionando. En eso buscando unos archivos encontré un proyecto viejo que me toco hacer para una tarea de la universidad. Este proyecto era un juego de busca minas. En mi caso se llama busca bombas. 

Este proyecto lo desarrolle en el 2005 con Netbeans 4.1 y una maquina virtual 5.0. Usando interfaz de java swing. 

Cuando vi el proyecto me dieron ganas de abrirlo con Apache Netbeans 9 RC 1 para ver que tal. Lo primero que me paso es que no pude abrir el proyecto. Como que los archivos de configuración eran diferentes. Pero bueno me toco hacer un proyecto nuevo y copié las clases al nuevo proyecto compilé y todo bien. 

Entonces me fui a cambiar algunas cosas del código para ver que tal. Por ejemplo, los ciclos, la declaración de las variables locales de los métodos. Realmente no cambie muchas cosas. 

Tenia algunas clases dentro de otras clases entonces las pase a sus propios archivos. En general trabajar con el nuevo Netbeans esta muy bien. Durante algunos cambios me dio algunos errores, pero nada que no me dejara continuar trabajando. 

Después de ver el código con las declaraciones de variables usando el var me dio mucho gusto. Cuando se desarrolló esa pequeña tarea nunca pensé en usar este tipo de declaraciones. Creo que los profesores tampoco pensaron en tener esto. 


La primera versión que descargue de Apache Netbeans me dio unos problemas al construir la carpeta dist y crear el JAR pero ahora con esta nueva versión todo funciona super bien. 

También tiene soporte para trabajar con modules de java 9. Esto no lo he podido probar, pero me imagino que funciona super bien también con el IDE. Voy a trabajar en un ejemplo con esto para ver cómo funciona y después les cuento como me fue con esto. 


Les dejo el código en caso de que quieran verlo. Por favor disculpen las cosas que pueden estar mal. Fue cuando estaba aprendiendo a programar. Algunos nombres de variables están terribles, etc. 




Etiquetas: , ,

miércoles, 13 de junio de 2018

Entity Framework Core 2.0


Lo primero que vamos hacer es ir a VS2017 y crear un proyecto de tipo console de .Net Core 2.0 para poder hacer uso del Entity Framework Core 2.0.

Ahora antes de continuar con el ejemplo debemos crear una base de datos.

CREATE TABLE Person(
Id int identity primary key,
Name nvarchar(100),
LastName nvarchar(100),
Email nvarchar(100)
)

Ahora vamos a instalar el Entity Framework y otras dependencias desde la consola de Nuget

  •          Install-Package Microsoft.EntityFrameworkCore.SqlServer
  •          Install-Package Microsoft.EntityFrameworkCore.Tools
  •          Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design


Esperamos que termine la instalación para poder usar el EF Core 2.0
En mi caso voy hacer un folder llamado Model donde voy a mapear los objetos de mi base de datos.
Ahora podemos correr el siguiente script en la consola de Nuget

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=TUBASEDEDATOS;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Model

Se debe de sustituir la conexión de base de datos para que se mapeen los objetos de su base de datos en las clases de C#.

Después de correr el script vemos lo que se generó con la información de nuestra base de datos.

Este script lo que nos permite es generar las clases que van a mapear las tablas de la base de datos de SQL Server. En nuestro caso es solamente una tabla.

Para no tener problemas debemos agregar esta referencia a nuestra clase que tiene el método main

using System.Linq;
después de esto ya podemos escribir código para acezar los datos. Debemos recordar que el objeto db se inicializa con el contexto que se creo con el script. El que podemos ver en la figura anterior sobre la clase Person.cs.

Con los queries que ya conocemos podemos borrar, leer o actualizar la información de nuestra base de datos.

Ya con esto estamos listos para utilizar EF core 2.0

Aquí puede encontrar como implementar Identity Server con Core 2.0

Etiquetas: , , ,

martes, 12 de junio de 2018

Hilos Java


Los sistemas actuales son capaces de realizar más de una tarea a la vez y los usuarios cada día demandan de más capacidad y velocidad en las tareas. Con los hilos podemos lograr correr más de una sola tarea a la vez. Un ejemplo que podríamos mencionar es el enviar un correo mientras el sistema está recibiendo otros correos electrónicos. No suena muy eficiente tener que esperar enviar el correo para poder recibir los correos que nos están enviando. 

Ahora si vemos algún ejemplo en el entorno de la computación que difícil seria usar un navegador de internet y tener que esperar mientras descargamos un video, película o imagen para poder continuar navegando. Por suerte actualmente podemos dar clic en descargar y mientras esa descarga termina podemos continuar navegando en internet. Esta es la idea que deseamos desarrollar, tener la posibilidad que nuestro sistema pueda estar haciendo varias tareas al mismo tiempo.

Ahora vamos a ver un ejemplo muy simple de cómo crear un hilo.

Lo primero que debemos hacer es heredar de la clase Thread o implementar la interfaz Runnable. Al final van a trabajar muy similar, pero se implementar un poquito diferente. Es importante también estudiar el ciclo de vida de un hilo, en este post no lo vamos a describir, pero pueden buscarlos en internet para que entiendan mejor cómo se comportan los hilos.

Vamos a iniciar utilizando la interfaz Runnable. Entonces tenemos que agregar una clase normal que desarrollamos en Java. Cuando tenemos esta clase lista vamos a implementar la interfaz Runnable que nos va a permitir desarrollar el hilo.

Para este ejemplo vamos a crear un pequeño cronometro, entonces debemos crear un proyecto llamado timer. Cuando tenemos el proyecto listo vamos a crear una clase llamada TimerControl.

Se debe de implementar la interfaz Runnable. Cuando ya tenemos esto listo debemos sobrescribir el método run que se encarga de ejecutar el código que tenemos en paralelo. Además de esto debemos recordar que el hilo se va a encontrar vivo mientras el método run se encuentre corriendo.

En nuestro ejemplo necesitamos enviar un JLabel para poder mostrar como los números se van actualizando en el sistema por medio del hilo.

Para poder implementar el hilo con Runnable vamos a requerir hacer una variable de tipo Thread que se va a encargar de ejecutar el hilo. Esta variable se debe inicializar y se le tiene que pasar por parámetro el hilo que queremos que se ejecute.

Ahora lo que se debe hacer es invocar el método start que tenemos en la clase Thread. Por medio de este método se va hacer el llamado al método run que sobrescribimos en la clase TimerControl.

Antes de correr nuestra aplicación vamos a agregar un método sleep. Este método sleep nos permite detener el hilo por un tiempo antes que se debe dar en milisegundos. Cuando este tiempo se termina nuestro programa continúe corriente hasta salid del método run. En nuestro caso vamos a dejarlo con un ciclo infinito para que continúe nuestro cronometro.
Tenemos que tener presente que a la hora de llamar el método sleep debemos agregar un try/catch por cualquier posible error que este genere.  

Luego vamos a tener una clase grafica llamada MainWindow que se va a encargar de agregar el label y donde vamos a llamar nuestro Hilo

Como podemos ver en las líneas 19 se crear un objeto de tipo Thread donde vamos a pasar en el constructor un objeto de tipo TimerControl. A este se le debe pasar también el Label que vamos a usar para actualizar nuestro cronometro.

Después en la línea 20 simplemente ejecutamos el método start para poder correr nuestro hilo.
Ya estamos listos para correr nuestro programa y vamos a ver que esta muestra el tiempo en nuestra pantalla.

Este solo muestra el contador incrementando, se ve muy simple pero ya tenemos una forma de implementar hilos en Java

Ejemplo

Etiquetas:

jueves, 7 de junio de 2018

Codename One


Hace unos días estaba trabajando en una aplicación móvil. Yo he trabajado con Android para hacer las aplicaciones en dispositivos con sistema operativo Android. Pero no he tenido la oportunidad de trabajar en iPhone ya que algunas herramientas requieren tener Mac para poder desarrollar las aplicaciones para iPhone. Lo cual puede ser un problema cuando no se cuenta con esto.

Después de investigar algunas herramientas que existen para desarrollar aplicaciones móviles me parece una buena opción codenameone.

Por ejemplo, para poder desarrollar con objective-c se requiere de Mac. Existen herramientas como Oracle MAF que nos permite desarrollar aplicaciones para Android, Mac y windows. Ahora el problema es que se requiere de Xcode para poder compilar la versión de Mac para los iPhones. Claro no hay problema cuando se tienen las herramientas ya que realmente es muy fácil programar la aplicación con Java y después compilarla para cada uno de los dispositivos.

Otra herramienta muy buena me parece Xamarin que nos permite crear aplicaciones nativas para diferentes dispositivos. Además de que es muy popular existe mucha documentación, pero el problema es que se requiere también de herramientas como Xcode o el compilador de Android para poder compilarla en cada una de las plataformas.

Por otro lado, herramientas que crean híbridos. Ahora tenemos muchas opciones, muchas de estas herramientas nos permiten crear el código con html5 y javascript.

Pero Codename One se puede escribir el código en Java de las diferentes aplicaciones que deseamos publicar. Se puede escribir en Netbeans que es un IDE muy poderoso y fácil de usar. Lo que más me gusta es que no se requiere de instalar Xcode o Android SDK para poder crear las aplicaciones.

¿Cómo funciona? Realmente es muy simple. Se debe instalar un plugin en Netbeans (también se puede usar en otros IDEs como Eclipse), cuando se termina de instalar el plugin vamos a tener las opciones para poder crear los proyectos de tipo Codename one.

Existen varios tipos de formatos de proyectos que se pueden crear con Codename One. Otra de las herramientas que me parece interesantes es que tiene un editor de la parte gráfica. Los componentes gráficos se pueden agregar de manera simple usando la herramienta de drag and drop o simplemente se puede escribir los componentes desde la clase.

Una de las cosas que más me gusta sobre este framework es que realmente el código se escribe una sola vez, ya que cuando se termina el proyecto se enviar a una de las nubes de Codename One donde el código es compilado y crea su ejecutable nativo. Se pueden seleccionar varios tipos de archivos, es decir, se puede compilar para Android, iOs, Windows, etc. Todo esto con un solo clic y sin tener que instalar todas las otras herramientas. Esta es una de las mejores características que tiene desde mi punto de vista.

Existen muchas librerías que se pueden usar para hacer las cosas más simples con Codename One, algunas tienen poca documentación, pero son fáciles de usar realmente. El soporte es muy bueno y siempre contestan rápidamente.

Para poder trabajar con Codename One existen varias versiones,  una de estas es gratis. Esta versión gratis tiene algunas limitantes, pero realmente se puede usar para hacer todas las pruebas necesarias antes de tomar la decisión de cual herramienta seleccionar. También se tienen otras versiones que se tienen que pagar que cuentan con mayores características que la versión gratuita.



Después de subir el proyecto, el cual se hace desde el mismo Netbeans, se espera a tener un resultado de la nube de Codename One. Esto nos da un código QR que podemos usar para descargar nuestro proyecto.

Me parece muy buena la herramienta ya que
  •    No tenemos que instalar todas las herramientas para poder compilar en las diferentes plataformas
  •     Ahorramos mucho tiempo ya que el mismo código es el que se usa para compilar en todas las plataformas.
  •    Todo el proceso de creación de su ejecutable ocurre en la plataforma de Codename One.

El desarrollo de aplicaciones móviles es un tema muy serio hoy en día. Muchas empresas y personas están haciendo sus aplicaciones para muchos diferentes usos y estas demandan mucho tiempo y conocimiento si queremos desarrollar en cada una de las plataformas. Con este tipo de framework se hace un solo código y se puede usar en todas las plataformas.

Etiquetas: , , , ,