Archivo

Archivo para la categoría ‘Delphi’

“Code Faster in Delphi” y DelphiMVCFramework

miércoles, 21 de octubre de 2020 Sin comentarios
Share Button

Siempre en buena señal que haya publicaciones sobre Delphi, para mi es un indicativo de la buena salud de un producto. En el caso de Delphi al enos creo que es un indicativo de mejora.

Desde hace poco tiempo están disponibles estos dos libros que me parece interesantes como para comentarlos en este blog.

Libros

Leer más…

Categories: Delphi, libros Tags: , ,

GLibWMI v.3.0 ya disponible a través de GetIt!

miércoles, 5 de agosto de 2020 Sin comentarios
Share Button

Ya hace unos días que publiqué la versión 3.0 de la librería GLibWMI. Si queréis saber más información tenéis esta entrada de no hace mucho.

Captura_2020-08-05 09_32_09Como ya comenté, esta versión está totalmente renovada respecto a las anteriores. He reescrito mucho código y he creado nuevos componentes. He añadido documentación al código fuente para facilitar su uso y consulta y he ampliado las demos disponibles. Además el código fuente lo he subido a Github.

Por último, ya he considerado esta build como «estable» (hasta ahora la librería estaba marcada como beta).

Todo esto, junto con la reciente aparición de Sydney me animó a proponer a Embarcadero la librería GlibWMI para ser añadida al portfolio de GetIt! Veo que han aceptado y desde hace unos días está disponible en las últimas versiones para descarga e instalación a través de él.

Captura_2020-08-03 13_30_37

________________________________________________________________

ACTUALIZACIÓN (05/08/2020): He visto que dependiendo de la versión de descarga, el paquete se copila correctamente, pero a una de las demos (BIOSdemo) le falta un fichero (TestBiosInfo_Icon1.ico) y al compilar aparece este error:
“[BRCC32 Error] TestBiosInfo.vrc(63): file not found: TestBiosInfo_Icon1.ico”

Para solucionarlo, basta con eliminar esa línea que da el error del fichero vrc, o copiar un icono de otra demo con ese nombre es esa carpeta.

_________________________________________________________________________

Como siempre comentarios, sugerencias, dudas y críticas (si son constructivas) son bienvenidas.

Hasta la próxima.

Categories: Delphi, GLibWMI, Install, WMI Tags: , , ,

Instalando Delphi 10.4 + patches (updates 1, 2, y 3)

lunes, 3 de agosto de 2020 2 comentarios
Share Button

Ya hay varios updates que solucionan problemas de la verión 10.4 de Delphi.

Aunque una de las novedades de esta versión es que se pueden instalar desde el propio IDE, todavía falta pulir el proceso un poco. Sí es cierto que el la mayoría de los casos se ins5talan, pero en el caso del Patch 2 (no se si porque afecta también a los ficheros de GetIt!) es necesario realizar el último paso desde fuera.

Lo primero es que desde el IDE ya nos debería aparecer un aviso de que tenemos “IDE Patches” disponibles para instalar.

image Leer más…

Categories: Delphi, GetIt, IDE, Sydney Tags: , , , ,

Actualizada a la versión 3.0 la librería de componentes GLibWMI

jueves, 30 de julio de 2020 5 comentarios
Share Button

ImagenLibreria_154x154Aunque “oficialmente” es una actualización de la librería GLibWMI, que pasa a la versión 3.0, se ha reescrito el código de todos los componentes. A continuación se listan las novedades de esta actualización.

El código fuente estará a partir de esta versión en GitHub:

https://github.com/NeftaliDelphi/GLibWMI

Hasta ahora se consideraba en estado “beta” y esta versión pasa a ser “estable”.

  • Soporte desde Delphi6, Delphi7,… Delphi XE, XE2, XE3, XE4, XE5… Delphi 10.4
  • Reescrito todo el código completo de los componentes.
  • Se añade documentación a las propiedades y métodos de los componentes.
  • Nuevos Iconos para todos los componentes.
  • en esta versión se distribuyen los componentes en la paleta en 2 categorías (software y Hardware).
  • Añadidas nuevas demos de los componentes y se ha actualizado las existentes.
  • Se añaden nuevos componentes a la librerías:
    • PnpEntityInfo: Información de dispositivos Plug&Play.
    • FanInfo: Información de los ventiladores existentes en el sistema.
    • ProductInf: Información de los productos instalados en el sistema.
    • VideoControllerInfo: Información de los controladores de video presentes en el sistema.
    • DisplayInfo pasa a ser DisplayConfigurationInfo.

Captura_2020-06-29 14_04_45

El link a todas las actualizaciones de la librería está aquí.

Leer más…

Categories: Componentes, Delphi, GLibWMI, WMI Tags:

Pasado, presente y futuro… #Delphi104

lunes, 25 de mayo de 2020 5 comentarios
Share Button

Hay 2 cosas que me han motivado a realizar esta entrada, una positiva y otra negativa.
Empezaré con las negativas y así dejamos un buen sabor de boca para el final.

Estos días he escuchado (por n-esima vez) decir cosas similares a estas:

«La nueva versión de Delphi trae 4 cosas y poco más que justifiquen la actualización…»
«Incluye cosas que nadie quiere y temas visuales poco importantes…»

Y lo peor es que no es algo sólo de esta versión 10.4, sino que son comentarios recurrentes que leo en grupos y foros, versión tras versión. No me gusta entrar en discusiones así y respeto la opinión de cada uno, pero me parece una postura poco objetiva.

Todavía recuerdo la presentación de Firemonkey (Delphi XE2) en Barcelona con Pawel Glowacki, donde Salvador Jover y yo tuvimos la oportunidad de charlar con él y hacerle una pequeña entrevista (que podéis releer aquí). Mucho ha llovido desde aquella fecha y estoy seguro de que Pawel estaría orgulloso de la evolución que ha tenido el producto, desde aquella versión «inicial» que presentaba FMX.

VersionesSplashDelphi

Desde finales de 2011 «algunas» cosas han cambiado…

Leer más…

4- Integración continua con Delphi (Jenkins) – Pipelines

lunes, 4 de mayo de 2020 Sin comentarios
Share Button

Imagen relacionadaHasta ahora ya hemos visto cómo crear Jobs en Jenkins. Partiendo del que hicimos en la última entrada ya podemos extenderlo (ya sea en un único job o en varios) para conseguir el proceso completo de compilar nuestro proyecto, incluyendo obtener el código GIT, compilar el proyecto y el correspondiente de test unitarios, ejecutar las pruebas y enviar resultados vía email.

Esto sería el “pack” básico, pero a partir de ahí podemos extenderlo según las necesidades. Podríamos desplegar versiones, compilar diferentes ramas desde nuestro repositorio, subir los proyectos a un servidor de preproducción, a un FTP, enviar resultados y comunicados, estadísticas,… y un sinfín de opciones.

Antes de continuar, os adjunto los links de las entradas anteriores:

1- Integración continua con Delphi (GIT)
2- Integración continua con Delphi (Jenkins) – Instalación
3- Integración continua con Delphi (Jenkins) – Primer proyecto
4- Integración continua con Delphi (Jenkins) – Pipelines

INTRODUCCIÓN A LAS PIPELINES

Las pipelines de Jenkins vienen a ser una evolución de los jobs. En una pipeline se definen los diferentes pasos/operaciones del trabajo que vamos a realizar. Algo similar a como hemos hecho anteriormente en un Job, sólo que aquí tenemos mucha más libertad para definirlos.

Las pipelines al final no son más que un programa (escrito en Groovy) que puedes guardar en un fichero (o en un repositorio de código), por lo tanto podemos tener “versionado” de nuestros trabajos, al igual que hacemos con nuestro código. Esta es sólo una de las ventajas de las pipelines, algunas más las iré comentando a lo largo de esta entrada.

Integración continua con jenkins

Leer más…

Categories: CI, Delphi, Jenkins, TDD Tags: , , , ,

3- Integración continua con Delphi (Jenkins) – Primer proyecto

martes, 21 de enero de 2020 Sin comentarios
Share Button

Llegados a este punto (y vistas las entradas anteriores) ya tenemos completa nuestra configuración para poder automatizar un proyecto. Así que vamos a ver los pasos para generar nuestro primer proyecto en Jenkins que nos permitirá automatizar la generación/ejecución de la aplicación de pruebas unitarias (DUnitX).

Antes de continuar os dejo los links a las otras entradas de esta serie (las anteriores y las previstas):

1- Integración continua con Delphi (GIT)
2- Integración continua con Delphi (Jenkins)-Instalación
3- Integración continua con Delphi (Jenkins) – Primer proyecto
4- Integración continua con Delphi (Jenkins) – Pipelines

Para poder continuar con el artículo, primero vamos a crear 2 proyectos de Delphi. El primero será nuestro proyecto de prueba y el segundo serán los Test Unitarios (con DUnitX) sobre ese proyecto.

Ambos ya los tenéis subidos al repositorio con el que estamos trabajando desde el inicio de las entradas de esta serie (ahora ya está público y accesible):

https://github.com/NeftaliBlog/Ejemplos/

PROYECTOS DE TRABAJO

  • Proyecto de prueba: Continuaré con el proyecto que implementé en la primera entrada y que nos sirvió para ilustrar los primeros pasos con GIT. A este proyecto le he añadido una unit uFunciones.pas las funciones matemáticas básicas, sobre la que crearemos test unitarios con DUnitX. El formulario tiene una estructura como la que veis en la imagen.

image

  • Proyecto de Test Unitarios (DUnitX): Proyecto con DUnitX que contiene los test unitarios sobre las funciones definidas en la unit uFunciones.pas. La estructura de la clase de test es la que veis en la imagen siguiente.
    He añadido unos cuantos tests que nos servirán para las pruebas.

image

No voy a profundizar mucho más, en esta entrada, en el tema de DUnitX y pruebas unitarias. Si os interesa saber más podéis revisar anteriores entradas que he publicado en el blog sobre TDD. En ellas he hablado sobre el tema. A continuación os dejo los links.

Por ahora para crear el proyecto de Jenkins, nos vamos a centrar en la aplicación de Test, ya que es el primero que debemos compilar y ejecutar en nuestro proceso (si los test unitarios fallan, ya no hace falta que sigamos con el resto).

Leer más…

Categories: CI, Delphi, Jenkins, TDD Tags: , , , ,

2- Integración continua con Delphi (Jenkins)-Instalación

domingo, 8 de diciembre de 2019 3 comentarios
Share Button

imageEn la anterior entrada empezamos con el tema de Integración continua. Vimos cómo crear y trabajar por encima con repositorios GIT.

A continuación os adjunto los links a las otras entradas de esta serie (las anteriores y las previstas):

1- Integración continua con Delphi (GIT)
2- Integración continua con Delphi (Jenkins) – Instalación
3- Integración continua con Delphi (Jenkins) – Primer proyecto
4- Integración continua con Delphi (Jenkins) – Pipelines

Una vez visto el paso previo de GIT, lo siguiente que necesitamos  en “montar” nuestro servidor de automatización. Para ello he escogido Jenkins. Jenkins en un “Servidor de Automatización” Open Source escrito en java y que está basado en Hudson.

Admite herramientas de control de versiones como CVS, Subversion, Git, Mercurial, Perforce y Clearcase y puede ejecutar proyectos basados en Apache Ant y Apache Maven, así como secuencias de comandos de consola y programas por lotes de Windows.

A continuación vamos a ver los pasos necesarios para instalar y configurar Jenkins.

INSTALACIÓN DE JENKINS

Una vez descargado el paquete correspondiente a nuestro sistema, comenzamos la instalación. Actualmente está disponible la versión v2.202, pero la verdad es que tanto las actualizaciones del sistema, como la de los múltiples plugins que posee son muy frecuentes.

image

Captura_2019-10-31 08_54_05

Jenkins se instala como un servicio de Windows y la instalación no tiene más opciones que el directorio de destino, que podemos dejar el que propone por defecto. El acceso se realiza a través de un navegador web y utiliza por defecto el puerto 8080.

Una vez finalizada la instalación podemos comprobar que la consola de Servicios de Windows que se ha instalado correctamente y que está “Iniciado”. Se abrirá una ventana del navegador a la dirección:   http://localhost:8080/

Leer más…

Categories: CI, Delphi, GIT, Jenkins, TDD Tags: , , , ,

1- Integración continua con Delphi (GIT)

lunes, 4 de noviembre de 2019 3 comentarios
Share Button

Voy a dedicar varias entradas a hablar de Integración Continua con Delphi (a partir de ahora escribiré en algunos sitios CI –Continuous Integration– para abreviar).

Para no extenderme mucho voy a intentar dividir esta entrada en tres/cuatro entregas. Cada una de ellas centrada en un “pieza” importante de las que vamos repasar. Esta es la idea inicial, pero es posible que a medida que vaya desarrollando las otras, la cosa pueda cambiar.

1- Integración continua con Delphi (GIT)
2- Integración continua con Delphi (Jenkins) – Instalación
3- Integración continua con Delphi (Jenkins) – Primer proyecto
4- Integración continua con Delphi (Jenkins) – Pipelines

image

Una definición de Integración Continua (que puede ser un término muy amplio) podría ser esta:

La integración continua es una práctica de desarrollo de software mediante la cual los desarrolladores combinan los cambios en el código en un repositorio central de forma periódica, tras lo cual se ejecutan pruebas y se generan versiones automáticas.

Es algo así como ir encadenando los diferentes pasos que habitualmente hacemos (o deberíamos hacer manualmente) de una forma automatizada.

VENTAJAS DE LA CI

¿Porqué utilizar Integración continua?

Utilizar esta metodología, como muchas otras, a priori puede generar una sensación de pérdida de tiempo y un trabajo extra, pero a la larga la automatización de tareas suele traer ventajas que al principio pueden no ser evidentes, pero que pasado un tiempo se hacen visibles.

¿Qué nos puede aportar introducir esta metodología en nuestros desarrollos?

  • Obtenemos mejoras en el rendimiento a la hora de desarrollar aplicaciones. Se dedica menos tiempo a tareas manuales y repetitivas. Se evita que con el tiempo se dejen de hacer cosas como las pruebas automáticas, ya que no hay que hacerlas manualmente.
  • Minimiza los errores. Al automatizar tareas, éstas se pueden realizar con más frecuencia. Además, si aparecen errores se detectan con más rapidez y permite corregirlos más rápido.
  • Se generan actualizaciones de nuestro software (builds, compilaciones, releases,…) con mayor rapidez y frecuencia. Se pueden realizar entregas (si son necesarias) de forma más continuada.
  • Documentación e historial de las versiones generadas, resultados de los tests, cambios,…
  • Concede al desarrollo una mayor seguridad y confiabilidad, y eso repercute en la confianza del equipo de trabajo.

Leer más…

Categories: CI, Delphi, GIT, Jenkins, TDD Tags: , , , ,

FMX Linux – Primeros proyectos

lunes, 15 de julio de 2019 4 comentarios
Share Button

Hace poco publiqué una primera entrada introductoria sobre FMX Linux. En ella explicaba los primeros pasos para su instalación y configuración. En mi caso lo hice utilizando un sistema Ubuntu 18.04 desktop.

FMX Linux – Configuración

Captura_2019-07-10 13_37_51

Para las pruebas estoy utilizando una máquina virtual preconfigurada sobre VirtualBox. Es una buena solución, además de práctica y rápida de comenzar con un sistema ya configurado y listo para funcionar. De esta forma me puedo centrar en lo que realmente importa para estas entradas.

Captura_2019-07-10 10_46_56Para esto he utilizado la web descargarmaquinasvirtuales.com que permite descargar (como su nombre indica) máquinas de diferentes sistemas ya configuradas (tanto para VirtualBox como para VMWare), de forma que podemos tenerlas en marcha y funcionando en unos minutos.

Una vez instalado y funcionando, la idea es ir ejecutando diferentes proyectos realizados en Delphi para ver cómo se desempeñan en Linux. Son proyectos que desde que apareció Firemonkey he ido desarrollando, algunos para entradas del blog, otros de ejemplo y otros como parte de aplicaciones más grandes, un poco de todo.

La primera prueba ya la comenté en la entrada anterior, y se trata del programa “Hola Mundo!”. En este caso funciona sin problemas (como era de esperar). También comenté que con este programa realicé un Debug paso a paso básico.

Forms y animaciones

La siguiente prueba, también bastante sencilla ha sido probar con varios formularios. Abrir, cerrar y liberarlos sin problemas. Además en el primero de ellos he añadido al color de fondo una animación.

Podéis ver que el color de fondo utiliza un gradiente y una animación en loop.

El botón de cerrar también tiene un efecto de blur aplicado.

Leer más…