Friday, 9 January 2015

De verdes nada, colega…

Cuando un buen ingeniero se enfrenta a un problema, lo estudia, analiza sus causas y diseña un conjunto de medidas que sean certeras, eficaces y eficientes. Medidas que realmente ataquen la fuente del asunto, y lo resuelvan de forma definitiva. Y si no sabe como hacerlo, se asesora y busca ayuda.

Muchos de los políticos actuales, sin embargo, nos han demostrado una y otra vez que es mucho más fácil y cómodo saltarse a la torera esa fase de análisis, y tomar medidas precipitadas y drásticas. Sin el debido asesoramiento, sin meditar y sin apuntar. Medidas que no ayudan en nada a resolver la situación y a menudo son injustas.

Un ejemplo: hace no mucho, cuando el gobierno quiso frenar la piratería, no se le ocurrió mejor majadería que poner un canon a todo medio o dispositivo electrónico susceptible de albergar contenidos. Así, cuando te comprabas un CD para guardar tu trabajo de fin de carrera o una tarjeta de memoria para las fotos de tus vacaciones, estabas ayudando a la SGAE a mantener su precioso palacio en el centro de Madrid. Que digo yo si no se pueden defender los derechos de los autores desde un “bajo derecha”, o desde un polígono industrial, en lugar de un palacio en el centro que vale millones (como el de la derecha).

¿Ayudó dicho canon a frenar la piratería? No, en absoluto. No sirvió para absolutamente nada más que para que ciertas personas se pusieran muy contentas y dejaran de quejarse, mientras la población general pagaba un canon totalmente injusto. Una medida inútil, injusta, ineficaz y que no resuelve el problema.

Ahora mismo estamos ante otro de éstos ejemplos: El PSOE quiere prohibir los coches diésel en Madrid, para el año 2020.

Misma situación: Un problema, el de la contaminación, que requiere de un análisis complejo y profundo. Pero es mucho más cómodo que el político de turno decida prohibir los coches diésel. Así. A lo fácil… Porque ayer en el bar le dijeron que contaminan más.

Como bien explica este artículo de Motorpasión, ni todos los coches diesel son iguales, ni tampoco todos los gasolina son iguales.

Con la (necesaria) preocupación por el efecto invernadero, todo el mundo ha oído hablar de las emisiones de CO2 desde hace mucho tiempo. Y sí, es cierto que el combustible diesel emite algo más de CO2 que la gasolina cuando se consume. Por cada litro, el diesel emite 2.65 Kg frente a los 2.37 Kg de la gasolina. Pero por regla general los diésel consumen bastantes menos litros cada 100 Km, por lo que esa diferencia normalmente se compensa.

Pero es que, además, hay muchos otros factores a tener en cuenta. Por ejemplo:

  • ¿Sabe este político que entre un 15% y un 25% de las partículas emitidas por el tráfico se deben en realidad al desgaste de frenos, embragues y neumáticos, y no al combustible quemado ni a los gases del escape?
  • ¿Sabe este lumbreras que el 40% de la contaminación del trafico (casi la mitad) es producido por el 10% del parqué automovilístico de coches más antiguos?
  • ¿Sabe este señor que los coches también emiten Óxido de Nitrógeno y Partículas en Suspensión, que de hecho son los elementos que se consideran cancerígenos, y que dichos componentes están regulados para los diésel por la normativa EURO 6?
  • ¿Sabe que dicha normativa impone a los coches diésel límites muy similares a los gasolina (mediante el uso de catalizadores)?
    1. Diésel: 0,080 g/km para los óxidos de nitrógeno - 0,005 g/km para las partículas en suspensión
    2. Gasolina: 0,060 g/km para los óxidos de nitrógeno - 0,005 g/km para las partículas en suspensión
  • ¿Sabe este político que, según un estudio de TÜV, los nuevos motores de gasolina que recurren a la inyección directa y al downsizing emiten, de hecho, muchísimas más partículas que los diésel? (hasta 10 veces más que un diésel, y hasta 1000 veces más que uno de inyección indirecta) Fuente aquí.
  • ¿Acaso sabe que aunque el gasolina de inyección directa emita la misma masa total de partículas, al ser éstas mucho más pequeñas y numerosas, se mantienen más tiempo suspendidas en el aire y se abren paso más fácilmente a nuestro sistema respiratorio, por lo que son mucho más propensas a generar cáncer?.
  • ¿Sabe este señor que la normativa europea actual para los coches gasolina no contempla este hecho, y en la práctica permite coches gasolina altamente nocivos? Fuente aquí (las normativas actuales regulan por masa, y no por cantidad de partículas, hecho que será modificado en 2017 en la normativa EURO 6c)

Me temo que no. Este señor no sabe nada de esto. Porque para saber de estas cosas hay que molestarse en leer, informarse, estudiar, preguntar y asesorarse. Y es mucho más fácil y cómodo prohibir, y ya está. Porque “somos verdes que te pasas, colega”.

Dudo mucho que semejante disparate salga a delante, porque de ser así complicarían la vida a medio Madrid (se calcula que el 70% de los conductores llevan diésel).

Tubo de escape emitiendo PM

En definitiva, es importantísimo recalcar que hay enormes diferencias de unos coches a otros. Tratar a todos “los diesel” como un todo, es enormemente simplista y equivocado.

  • ¿No sería más lógico centrarnos en regular ya mismo las emisiones de los gasolina sin esperar a 2017, antes de que se hayan vendido miles de coches altamente contaminantes?
  • ¿No sería más efectivo seguir empujando para que el parqué automovilístico se renueve, y desaparezcan los coches antiguos que más contaminan?
  • ¿No sería mejor seguir construyendo zonas verdes, carriles bici y zonas peatonales, fomentar el transporte público y los medios de transporte alternativos?

En fin…

Saturday, 13 December 2014

Imagen del día…

O más bien del jueves pasado… jajajaa….

Alonso

Tuesday, 9 December 2014

Imagen del dia

Impresionante las cosas que se pueden hacer con la cámara del Lumia 930!!

Tuesday, 26 August 2014

Inyectando TypeEditors dinámicamente

Muchas aplicaciones de edición todavía utilizan Windows Forms. Y muchas de ellas (sobre todo si son prototipos rápidos o herramientas internas) utilizan el PropertyGrid como método rápido y eficiente para editar propiedades de objetos.

Una de las funcionalidades más utiles de los PropertyGrids, es la posibilidad de definir TypeEditors para las propiedades de un objeto, de forma que el sistema escogerá automáticamente un interfaz de usuario específico para editar su valor. .Net incluye por defecto algunos de ellos, como el ColorPicker o el DateTimePicker:

Cuando los TypeEditors por defecto no son suficiente, es una gran idea desarrollar tus propios editores, para hacer tus editores lo más eficientes posible. Por ejemplo, el selector de colores por defecto de .Net no permite escoger valores para el canal Alpha (transparencia). La solución es sencilla y fácil: podemos implementar nuestro propio editor que sí lo permita.

Ahora bien, ¿qué ocurre si queremos aplicar ese TypeEditor a todas las propiedades de un tipo definido en otra DLL?

Es un caso bastante frecuente. En mi entorno, por ejemplo, tengo mi propia clase para almacenar colores, llamada Color4, pero está definida en una DLL específica para operaciones matemáticas. Es una DLL muy básica que quiero mantener con el menor número de referencias posible, para evitar dependencias todo lo que pueda. Por este motivo, es imposible definir el TypeEditor en dicha DLL, ya que eso implicaría referenciar System.Windows.Forms, System.Drawing, y unas cuantas cosas más que no tienen que estar ahí. A fin de cuentas, es mi editor visual el que debe depender de Windows Forms, y no mi DLL de operaciones matemáticas. ¿La solución?

Inyección dinámica de editores de tipo

La solución es asignar el TypeEditor dinámicamente, programaticamente, o como queráis decirlo. En lugar de incluirlo en tiempo de compilación, con clásico código…

 [EditorAttribute("Color4Editor", typeof(System.Drawing.Design.UITypeEditor))]

…lo añadiremos en tiempo de ejecución, algo posible gracias a la clase TypeDescriptor y su método AddAttributes.

Basta con invocar algo como lo siguiente el el inicio del programa:

TypeDescriptor.AddAttributes(typeof(Color4), new EditorAttribute(typeof(Color4Editor), typeof(UITypeEditor)));

De esta forma, mantenemos las DLLs limpias de referencias innecesarias, y solo dependeremos de Windows Forms y similares donde realmente se necesita: en el editor.

Listo ! Smile