blog de neodevelop

DDD, y más temas que aparecen cuando quieres simplificar.

Hace poco, alguien me preguntó al respecto de DDD, y si bien, se puede platicar teóricamente muchas cosas y echar a volar ideas en el aire o en un café, pues no hay nada mejor que ejemplificarlo. Y de aquí, encontré un pequeño reto que me hace retomar ciertas tecnologías, pero a su vez no perderme en la complejidad de esas herramientas para poder explicar el concepto original, concentrar la idea de forma abstracta pero siendo pragmático con lo que estoy queriendo explicar.

Así pude crear un snippet de código, con Groovy, Hibernate, GORM y H2 cómo base de datos. Lo encontré valioso y lo quise describir, así que pongo el código y los comentarios apropiados dentro del mismo para explicar los conceptos y distinguirlo de la tecnología; lo importante aquí es el concepto, pero me ayudo de la brevedad de la herramienta para no distraer, y dar a notar que se puede usar alguna otra herramienta, framework o biblioteca.

/*
*   Utilizo Groovy para el Script,
*   y Grape como administrador de dependencias
*/

@GrabConfig(systemClassLoader=true)
@Grapes([
  @Grab("org.grails:grails-datastore-gorm-hibernate5:7.3.1"),
  @Grab("com.h2database:h2:1.4.192"),

¿Cómo saber si un servicio SMTP funciona? Te dejo un script...

A veces he tenido la necesidad de saber si un servicio de envío de correos está funcionando, y siempre uso el mismo script, le hice un pequeño refactor y aquí te los dejo...

@Grapes([
  @Grab(group='javax.mail', module='mail', version='1.4.7'),
  @Grab(group='org.springframework', module='spring-context-support', version='5.1.5.RELEASE')
])

import org.springframework.mail.MailSendException
import org.springframework.mail.SimpleMailMessage
import org.springframework.mail.javamail.JavaMailSender
import org.springframework.mail.javamail.JavaMailSenderImpl

textMessage = """
  Este es un correo de prueba que nos ayuda a determinar la comunicación
  entre el servidor SMTP y los diferentes remitentes, sus dominios y el rastreo de recepción.

  No hay que contestarlo.

  Enviado a las ${new Date()}

  Saludos
"""

SimpleMailMessage message = new SimpleMailMessage().with {
  from = "info@makingdevs.com"
  to = "juan@makingdevs.com"
  cc = "juan@makingdevs.com"
  subject = "Hello world"
  text = textMessage
  delegate
}

JavaMailSender mailSender = new JavaMailSenderImpl().with {
  port = 587
  host = "email-smtp.us-east-1.amazonaws.com"

Queries Dinámicos en Spring Data JPA

Tuve la necesidad de crear un Query de forma dinámica con JPA, pues tenía varios métodos definidos y podrían crecer mas, algo así:

QuestionRepository.groovy

interface QuestionRepository extends PagingAndSortingRepository<Question,Long> {
  List<Question> findAllByAuthorAndEnabledAndStatusInAndParentIsNull(UserGE author,Boolean enabled,List<String> statuses, Pageable pageable)
  List<Question> findAllByCampus_CodeLikeAndSubject_subjectNumberLikeAndTypeLikeAndCareer_codeLikeAndUnityLikeAndComplexityLikeAndAuthorAndEnabledAndStatusInAndParentIsNull(String campusCode, String subjectNumber, String type, String careerCode, String unity, String complexity, UserGE author, Boolean enabled,List<String> statuses, Pageable pageable)
  long countByAuthorAndEnabledAndStatusInAndParentIsNull(UserGE author,Boolean enabled,List<String> statuses)
  long countByCampus_CodeLikeAndSubject_subjectNumberLikeAndTypeLikeAndCareer_codeLikeAndUnityLikeAndComplexityLikeAndAuthorAndEnabledAndStatusInAndParentIsNull(String campusCode, String subjectNumber, String type, String careerCode, String unity, String complexity,UserGE author, Boolean enabled,List<String> statuses)

Aplicar AOP con JavaConfig (AspectJExpressionPointcut)

Hace poco me toco tocar un componente en dónde tuve que aplicar un aspecto, la última vez que lo hice lo configuré con el namespace de AOP de Spring, pero estz vez quise hacerlo todo con JavaConfig; he aquí lo que hice:

El XML era este:

<bean id="monitoringAdvice" class="net.bull.javamelody.MonitoringSpringInterceptor" />
<aop:config>
  <aop:pointcut expression="execution(* com.makingdevs.service..**.*(..))"
    id="monitoringPointcut" />
  <aop:advisor advice-ref="monitoringAdvice" pointcut-ref="monitoringPointcut" />
</aop:config>

Pruebas de unidad con Mockito(Aportación) - [SGCE2013]

En esta ocasión, con la finalidad de aportar algo a la comunidad(y ver si de paso me gano un pase) les quiero poner un tema que les de a conocer una herramienta que puedan usar los que están haciendo desarrollo en Java.

Les platico brevemente el escenario que me ha puesto a escribir de este tema: hace un par de meses me asignaron a la tarea de hacer el mentoring de un grupo de desarrolladores, el objetivo era "aumentar la calidad del software que se desarrollaba", y esto lo fui elaborando a través de varias técnicas: programación en pares, dojos, control de versiones, mediciones de tiempos, pomodoros, etc., y la guía técnica para ir creciendo un proyecto con Java; yo vengo desarrollado Groovy desde hace mucho tiempo y esto se me hizo interesante para medir nuevamente el tiempo de desarrollo de un proyecto con Java. El factor común de todos era Maven y por supuesto Java(en varios niveles de experiencia), lo cual lo hacía más interesante.

Video podcast de ViveCodigo 00xEOS - Final de temporada

EOS = End of Season
Muchas gracias a todos los que descargaron los podcast, muchas gracias por sus comentarios y su asistencia.
Gracias a los entrevistados por compartir su conocimiento, gracias a los asistentes a los Dojos por compartir su experiencia y participación, gracias a los patrocinadores y sobre todo gracias al público que nos demanda y nos hace mejores con sus comentarios.
En esta última emisión de esta temporada nos reunimos todos para platicar un poco de nuestra línea de tiempo en el desarrollo de software y algunas otras aficiones. Terminamos en un bar con algunas cervezas y alitas, rifando un par de libros y dos pases para Software Gurú Conferencia y Expo
Sin lugar a dudas nos divertimos, sufrimos, compartimos, creamos, innovamos, en fin…
Que lo disfruten:

Workshop de Git + Github en SynergyJ, charla abierta y Drinkup con @matthewmccull

Los sistemas de control de versiones son herramienta fundamental en cualquier proyecto de software, es por esto que a toda la comunidad de desarrolladores de cualquier plataforma, les estamos invitando asistan al evento organizado por SynergyJ el día 15 de Mayo del presente, en donde Matthew McCullough de GitHub vendrá a impartir un Workshop. Este evento es de pago y es de cupo límitado.
Toda la información para registrarte la puedes encontrar en http://synergyj.com/git/

Definitivamente no se lo pueden perder.

Seguido al workshop se les hace la cordial invitación a toda la comunidad de desarrolladores de cualquier plataforma a la sesión abierta que dará Matthew McCullough, quién es instructor oficial de GitHub.com, autor de libros como Building and Testing with Gradle y Version Control with Git: Powerful tools and techniques for collaborative software development.

La charla se llevará a cabo en las mismas instalaciones del Workshop y esta totalmente abierta al público, es gratuita y es importante que se registren al evento.

Su registro lo pueden hacer en: http://stghq.me/e/qU

La ubicación es en Av. San Lorenzo 1009 Piso 4, colonia Del Valle, Delegación Benito Juárez, México D.F., C.P. 03100 y será a las 17:30 hrs.

Después de esta sesión daremos paso al Drinkup de SynergyJ y Github, el cuál se llevará a cabo en Corazón de Maguey ubicado en Jardín Centenario 9, Colonia Villa Coyoacán, cerca del lugar de la sesión. La reservación esta hecha a nombre de SynergyJ y Github y es a partir de las 20;00 hrs.

Sin dudarlo será una excelente experiencia compartir y platicar con Matthew algunas de sus experiencias como desarrollador e instructor de compañías de software de gran renombre.

Los esperamos

Podcast de ViveCodigo 00x17 - Entrevista con Graeme Rocher

Una emisión más en audio del podcast de ViveCodigo presentando en entrevista a Graeme Rocher, creador de Grails; la liga del sitio original en:
http://vivecodigo.org/2012/04/09/episodio-17-de-la-temporada-0/

Podcast de ViveCodigo 00x16 : Agile inception

Se acerca el final de la temporada y en ViveCodigo pudimos meternos en una organización con varios desarrolladores, líderes de proyecto y arquitectos para incentivar el uso de prácticas ágiles, el resultado fue un episodio distinto a los anteriores donde seguramente encontrarás varias joyas("frases legendarias") para cuando hacemos software. No se lo pueden perder. La liga original en: http://vivecodigo.org/2012/03/31/episodio-16-de-la-temporada-0/

VideoPodcast de ViveCodigo 00x15 : Coding Dojo

VideoPodcast de ViveCodigo 00x15 : Coding Dojo

A través del sitio de ViveCodigo.org, se ha publicado su última edición en donde se realizó un Coding Dojo, en el video, se muestra a los asistentes resolviendo una Kata de nombre "Numbers to LCD", para más detalle al respecto te recomendamos visitar el blog post.

http://vivecodigo.org/2012/03/15/podcast-15-de-la-temporada-0/

Saludos

Distribuir contenido