Nueva versión: 0.10.0

Buenas 🙂 , aquí llega una nueva versión con novedades interesantes, tanto en la gestión como en la propia biblioteca.

Mejoras en la gestión del proyecto

En primer lugar, estoy haciendo algunos esfuerzos para facilitar que desarrolladores externos puedan y/o quieran contribuir al desarrollo de ColorSharp.

El primer cambio interesante, aunque ha supuesto ningún esfuerzo, es integrar el repositorio de ColorSharp en Github con el servicio Gitter; desde ahora ColorSharp tiene una sala dedicada de chat, tipo IRC. Se puede acceder a este chat a tanto a través de su página web como a través de diversas aplicaciones móviles.

Otro cambio menor es que finalmente tenemos una guía para contribuir al proyecto. Es muy probable que esta guía tenga que cambiar mucho dado que hasta ahora ColorSharp ha sido un proyecto fundamentalmente unipersonal.

Como extra, y por el momento sólo de forma experimental, estoy empezando a trastear con Gitcolony para gestionar la revisión de commits y “pull requests”. Parece una herramienta muy interesante (aunque privativa :(, todo sea dicho) para gestionar las revisiones de código de forma más o menos automatizada y bien organizada.

Cambios interesantes

  • Añadidos los illuminants B, C, D50 y D55.
  • Añadida una clase para generar espectros lumínicos de cuerpos negros para una temperatura dada.
  • Añadidas las funciones de matching de 1964 (10º) de la CIE.
  • Reemplazado las funciones de matching ed 1931 (2º) de la CIE con datos más precisos.
  • Mejoras menores en la conversión espectro->color:
    • Separadas las estrategias de conversión espectro->color de las estrategias para conversiones color->color.
    • Ahora es posible escoger entre las funciones de matching de 2º y 10º.
  • Mejorada la documentación XML.
  • Eliminada la dependencia de la biblioteca MathNet.Numerics.

Ideas que han surgido sobre la marcha

Durante estos días en que he estado realizando los cambios de esta versión he descubierto un proyecto muy interesante: Public Lab, en especial uno de sus subproyectos, Spectral Workbench. Esto me ha hecho pensar que podría ser interesante integrar en la biblioteca una forma de interactuar con la API de Spectral Workbench para importar o exportar espectros.

Bien, de momento no hay muchas más novedades que comentar. Os dejo con esto, y como siempre, os invito a colaborar 🙂 , y más ahora que os lo estoy poniendo más fácil.

Anuncios

Nueva versión: 0.9.1

Buenas,

hoy he liberado una nueva versión de ColorSharp (0.9.1). La lista de cambios no es demasiado larga, son los siguientes:

  • Añadido el espacio de color CIE UVW (1960).
  • Conversiones menos destructivas (ahora la información se preserva mejor)
  • Ahora los métodos ToSRGB, ToCIExyY y ToCIEUVW son virtuales y no abstractos para reutilizar código y facilitar la implementación de nuevos espacios de color. Esto se puede hacer gracias a la centralidad del espacio CIE XYZ (1932) dentro de la teoría de colorimetría.
  • Actualizada la dependencia MathNet.Numerics.

No hay mucho más que contar al respecto. Como siempre, os animo a colaborar y a preguntar si tenéis dudas 🙂 .

Saludos!

P.D. (Edición posterior) :

Después de liberar la versión 0.9.1 he introducido dos ligeras novedades en el desarrollo y distribución de ColorSharp:

  • Ahora también distribuyo los paquetes de NuGet a través de Github (en la sección releases), para no depender exclusivamente de nuget.org . Esto puede ahorrar muchos quebraderos de cabeza si la biblioteca se usa para desarrollos empresariales y nuget.org falla.
  • Por fin he añadido soporte a Travis CI 🙂 , antes era relativamente complicado, se tenía que trampear un poco el sistema, pero desde hace poco se le da soporte (beta) a Mono. Con este cambio todos los commits dispararán la ejecución de los tests dentro del entorno de integración contínua. Esto sirve para facilitar la integración de código ajeno (reduciendo el tiempo necesario de revisión), y para que cualquiera pueda hacerse una idea sobre la calidad del código sin tener que ejecutar sus propios tests.

Slow progress, but still advancing

Hi!

ColorSharp development has stalled in recent weeks, but there are minor improvements that deserve mentioning. In few words, there is more flexibility.

  • There are new constructors in the RegularLightSpectrum class.
  • Added HashCode and Equals methods to the spectrum classes, this is a requirement to make possible using spectrum instances in dictionaries and other similar data structures.
  • Minor (not significant) performance improvements.
  • Updated MathNet.Numerics dependency.

In a few days I’ll start again providing improvements to the library. In recent posts I’ve talked about performance, but I’ll prioritize architecture improvements (towards objects immutability and common interfaces implementation) and colour features extraction.

Nueva v0.7.0 y algunos apuntes

Hola a todos,

ayer lancé 2 nuevas versiones de ColorSharp con cambios significativos que podéis ver en el CHANGELOG, pero os hago un resumen de los más importantes:

  • Corregido un error importante en la conversión entre el espacio sRGB y el espacio CIE XYZ.
  • Eliminada dependencia de NUnit (he separado los tests en un proyecto distinto bajo la misma “Solución”).
  • Refactorización importante (que rompe la API anterior):
    • He eliminado el anterior sistema, que buscaba el “camino más corto” dentro de un “grafo de conversiones”. Era una característica de la que me encariñé, pero debido a limitaciones de C# (que le restaban elegancia a la implementación) y a que el número de espacios de color es acotado y “pequeño”, ésta no aportaba ventajas evidentes y sin embargo afectaba negativamente al rendimiento.
    • La componente Y del blanco de referencia pasa a ser 1.0 en vez de 100.0, se ahorran divisiones y se presta menos a confusión.
  • Añadida nueva documentación XML (el sistema de autocompletado o IntelliSense funcionará mejor con ColorSharp).
  • Ligeras mejoras en el fichero README, y por supuesto, por fin hay CHANGELOG.

Ok, esto en lo tocante al desarrollo del proyecto. También durante el día de ayer descubrí otros dos proyectos muy interesantes con objetivos muy parecidos a los de ColorSharp y en estadios de desarrollo bastante más avanzados.

Aun no he podido estudiarlos en profundidad, pero eso no es excusa para no darlos a conocer:

  1. El primero es Colourful , también centrado en .NET/Mono. Particularmente su arquitectura no me convence, pero aun así es una biblioteca muy potente y de la que seguramente sacaré ideas.
  2. El segundo es Colour-Science, un proyecto centrado principalmente en Python, pero que también provee código para otros entornos (como Matlab). Sinceramente, me ha dejado impresionado. El trabajo que hay detrás es descomunal y está claro que hay verdaderos expertos trabajando en él.

Tengo algunas cosas más sobre las que hablar (C#, .NET, Mono, NuGet, PowerShell, PASH…), pero se merecen sus propios artículos y un cierto esfuerzo de síntesis que soy incapaz de hacer a estas horas de la madrugada.