Entre jureles y boquerones -> EJB v2.0

Datos y reflexiones sobre ciencia, técnologías de la información y alguna cosilla más

Archivos de la categoría ‘técnica’

Trastear con pdfs en Linux

Publicado por jurelillo en Agosto 13, 2009

Circunstancias indirectas aunque no demasiado ajenas me han obligado a bichear dos procedimientos en los que intervenían documentos pdf. Cosas de la e-administración…

El caso es que me encontraba ante la disyuntiva de tener que instalar sw para la edición de documentos escaneados en la máquina virtual de WXP o buscarme la manera desde Linux. Es obvio que ya sabes por qué me terminé decantando.

Googleando -todavía no les he dicho nada a estas criaturas, ni a los bonstruos de yahoo tampoco, sobre lo que pienso de su política en paises como China…me reservo un post más adelante pero ya desde aquí les cubro con toda la mala baba que puedo- conseguí conocer 2 herramientas la mar de útiles: imagemagick y pdftk, ambas para su ejecución en modo consola.

imagemagick es una aplicación que sirve para crear, editar y componer imágenes. Puede  además leer, convertir y guardar imágenes en una gran variedad de formatos, y esto último es lo que me interesaba. Pero es mucho más que eso, pues es capaz de crear, editar, componer y transformar archivos de mapas de bits. Además, proporciona APIs para la mayoría de los lenguajes de programación más usuales. Se puede ver más info aquí

Dado que se encuentra en el repositorio de Ubuntu, para los usuarios de ese sabor de Linux es aún más sencillo: tan solo hay que descargarlo además de GhostScript:

sudo apt-get install imagemagick gs

Para poder convertir un jpg en pdf, an sólo hay que ejecutar:

convert miImagen.jpg miPdf.pdf /* No es mu complicao, verdad?*/

Repito: imagemagick es muucho más que esto, y hay que bichearlo con detenimiento, pero quédate en la cabeza la asociación de modificación de una o varias imágenes con este set de herramientas. Puedes ver ejemplos aquí.

La otra herramienta, pdftk -también disponible en el Canonical de Ubuntu- es muy sencilla de utilizar:

pdftk pdf1.pdf pdf2.pdf pdf3.pdf…pdfN.pdf output pdfSalida.pdf

Crea un nuevo pdf a partir de la secuencia de parámetros de entrada, pero cosa curiosa: si somos cuidadosos y nombramos a nuestros pds de origen de manera secuencial, se puede emplear una variante que el comando reconoce y produce una salida ordenada. Suponiendo los nombres de los pdfs de entrada de antes:

senegalensis:~$ cd carpetaConLosPdfs

senegalensis:~/carpetaConLosPdfs$  pdftk *.pdf output pdfSalida.pdf

La salida es un pdf construido según el sufijo ordinal de los pdfs de la carpeta en cuestión.

Saludos calamares.

Publicado en Informática | Etiquetado: , , , , , , , | 1 comentario

Cliente vnc para sistemas Linux y servidores Windows inversos

Publicado por jurelillo en Mayo 25, 2009

Este post viene a solventar un tema que me ha traido un tanto liadillo, y se encuadra dentro de un sistema de soporte a usuarios con asistencia remota, soporte que no hubiese conocido sin ayuda de mis culturetas colegas Salva, JaviR y JaviG, a los que aprovecho para saludar como se merecen: cuadrándome  :-D

(Saludos a toda la peña cultureta XDDD…)

Los sistemas VNC inversos, excelentemente descritos en el link, permiten la conexión a voluntad entre usuarios de los diferentes sistemas de información de la Organización y el servicio de soporte, solventando 2 de los principales problemas de una infraestructura de red corporativa estándar: la asignación dinámica de IP a los usuarios, que impide que el técnico conozca la dirección concreta donde levantar un servidor vnc, y de paso, la cuestión de privacidad que siempre genera susceptibilidades, debido a que éste es un sistema que al contrario del vnc estándar o directo, delega en el usuario el establecimiento y fin de la conexión.

La conexión entre servidores (usuarios) y clientes (soporte) cuando los sistemas son windows es trivial, puesto que no se trata más que de crear el .exe del servidor “one click” enviando a una dirección url un pequeño archivo de configuración modificado por  nosotros (Ver aqui) y listo. Pero cuando el cliente vnc hay que utilizarlo desde una máquina Linux, la cosa cambia.

Después de mucha guerra y googleo, parece que los clientes VNC más usuales no soportan levantar la interfaz gráfica cuando se conectan en modo pasivo (Reverse Mode) con el servidor VNC  “De un sólo click” o servidor inverso,  como los que tenemos para ubicar en las máquinas de nuestros usuarios.

Así, xvncviewer, vncviewer y demás consiguen la conexión (netstat -an |grep tcp) pero no levantar la interfaz gráfica…una putada.

Menos mal que existe un cliente que sí que lo hace: se llama tightvncviewer y es accesible desde la URL:

http://downloads.sourceforge.net/ssvnc/ssvnc_unix_only-1.0.22.tar.gz

y su instalación no es complicada. No ay más que descomprimir la carpeta, moverla a una ruta del path (/usr/local/bin por ejemplo), crear ahí mismo enlaces simbólicos a los archivos de ssvcn/bin que comienzan por t ó s :

ln -s ssvnc/bin/{s,t}* .

y lanzar en modo listen el cliente:

tightvncviewer -listen

Entonces sí, XDDD, sí que podemos acceder a las máquinas de los intrépidos usuarios.

Saludos calamares.

Publicado en Informática | Etiquetado: , , , , | Deja un Comentario »

VirtualBox: Una configuración de invitado compartiendo la red nativa del host

Publicado por jurelillo en Marzo 30, 2009

/*Modificado el 14/08/2009*: Aclaración de conceptos/

/*Modificado el 20/08/2009*: Aclaración de conceptos/

Tirando de aquí y allí por fin he conseguido enterarme cómo configurar una máquina virtual integrada en la red nativa del host. Hago la correspondiente transferencia de conocimientos.

Tras instalar las utilidades pertinentes:

sudo apt-get install uml-utilities
sudo apt-get install bridge-utils

Utilizamos los comandos para crear y configurar la estructura virtual de red entre anfitrion y máquinas invitadas. La idea es crar un bridge que conmute las tramas hacia las interfaces de invitado. Hay que crear pues el bridge, las interfaces tap (nivel 2) y asociarlas a la interfaz del bridge:

sudo brctl addbr br0

sudo ip link set tap0 up

sudo ip link set tap1 up

sudo tunctl -t tap0

sudo tunctl -t tap1

sudo brctl addif  br0 tap0

sudo brctl  addif  br0 tap1

Después, hay que configurar la(s) interfa(z)ces virtual(es) de red para la(s) máquina(s) . Para ello se edita el archivo correspondiente:

sudo gedit /etc/network/interfaces

Deberá quedar algo así:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto tap0
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user root

auto tap1
iface tap1 inet manual
up ifconfig $IFACE 0.0.0.0
down ifconfig $IFACE downn
tunctl_user root

auto br0
iface br0 inet dhcp
bridge_ports eth0 tap0 tap1

Si no quereis levantar la infraestructura de red como root, no hay mas que sustituirlo como usuario con derechos sobre cada interfaz por el que se quiera.

Yo utilizo 2 máquinas, una con Windos XP y otra con Scientific Linux; el host, Ubuntu. El archivo de configuración muestra la interfaz real eth0, el bucle local lo, dos interfaces virtuales, tap0 y tap1, y el bridge br0 que enlaza tap0, tap1 y la interfaz real del host eth0.

Entiendo que br0 es la interfaz anfitriona que, por delante de las otras interfaces de red, proporciona la capacidad de direccionamiento (de nivel 2) al host. De hecho, si cambiamos el archivo de configuración introduciendo esta variante:

auto br0
iface br0 inet static

address 192.168.0.15
netmask 255.255.255.0
gateway 192.168.0.1

bridge_ports eth0 tap0 tap1

La máquina anfitriona asume la dirección IP del bridge, ya que eth0 sigue manteniendo la asignación manual de IP.

Si configuramos las interfaces virtuales tap con asignación manual de direccionamiento IP, tenemos la opción de asignar IPs fijas a las máquinas invitadas, y voila, nuestros servidores web, ftp, etc dentro de la red del anfitrión.

Modificado el archivo, lo que toca ahora es levantar las interfaces, y para ello no hay mejor que restablecer el servicio de red:

sudo /etc/init.d/networking restart

Lanzamos Virtualbox y procedemos a configurar el host; como ejemplo sirva la máquina con Windows XP.

vb02p

Se trataría pues de asignar la interfaz tap1 (esa es la que tengo asociada, la tap0 va al otro Linux) a la máquina virtual correspondiente, una vez seleccionada la opción de compartir la interfaz del anfitrión en la correspondiente opción de configuración de la red.

Y listo. Es así de simple. Podemos asociar una IP fija, o que le sea asignada dinamicamente, esto reside en el archivo de configuración, al igual que la elección del protocolo de red IPv4 (inet) o IPv6. Ya podemos instalar nuestro servidor web, o ftp, o de correo…contemplen los resultados: un Apache levantado en el guest de Linux accesible desde la red del anfitrión…¡Qué bonito!

vb03p

Saludos calamares.

Publicado en Informática, técnica | Etiquetado: , , , | 1 comentario

¿Y por qué no puedo cambiar la instalación eléctrica de mi casa?

Publicado por jurelillo en Febrero 18, 2009

Pues porque el señor electricista no ha tenido a bien incluirla en los planos de la casa. Peor, me dice el que me ha vendido la casa que como se me ocurra examinarla, ampliarla o modificarla me va a meter un puroquetecagas por conculcar sus derechos de autor…¡Joder, que acojone….!

Publicado en Informática, reflexiones | Deja un Comentario »

El portapapeles XDDDDD…

Publicado por jurelillo en Febrero 4, 2009

clipboard No me resisto a colocar este fragmento, real como la vida misma, que muestra como de espabilaos vamos con esto de los ordenadores. Os imaginais qué no pasaría si fuese para conducir vehículos??

Jejeje…comentaré la jugada:

usuario1:  oye el portapapeles donde esta
yo:  en la memoria del pc; no lo ves “fisicamente”
tan solo cuando “pegas” en el sitio corespondiente
usuario1:  y entonces?
yo:  un archivo de texto, un libro excel, una tabla
vuelca su contenido en el citado archivo
y siempre estará ahí, mientras el pc esté encendido
y tú no hayas ejecutado una operación “copiar”
(o “cortar” , claro)
Enviado a la(s) 14:21 del miércoles
usuario1:  no se puede ver ni copiar de ahí a un word
yo:  claro que si
boton derecho +Pegar
en la pagina del word
(el archivo lo tienes que abrir, claro)
usuario1:  o pegar una cosas tras otra
el problema es que no consigo ver el texto que pego en el portapapeles

(mi usuario ha pasao de mí…si le acabo de decir que tiene que seleccionar el texto XDD…¿Cómo no va a saber lo que pega?)

yo:  pero lo debes saber
si no
crea un txt intermedio
lo pegas, lo ves, y desde ahí, con las correciones, lo pegas en el word
(Que no se diga que no puede existir un plan B, joderrr)
usuario1:  da igual gracias
yo:  da igual? no lo has entendido?
usuario1:  de verdad? no
yo:  pues dímelo, y te lo explico de otra manera
qué no has entendido?
usuario1:  usuario2 copia un parrafo de un pdf y le da solo la opcion de guardar en el portapapeles

( amo a vé…pero no decía que NO SABÍA QUE GUARDABA???)

despues no sabiamos encontrar el texto para pasarlo a un word
yo:  el texto está en la memoria ram del ordenador

(obviamente, introducir a estal alturas y aquí el swapping no tenía demasiado sentido…)

yo:  y no persiste en un archivo

usuario1:  por eso te pregunte que donde estaba el portapapeles
siiiiiiiii
usuario1:  pero no puedo verlo
si o no
yo:  claro, porque lo que hay en ram NO SE PUEDE VER
se puede usar
usar
pero NO ver
para verlo, hay que hacerlo persistente, en un archivo
que, en realidad no es mars que un cacho de disco duro
QUE ES LO QUE SIEMPRE PUEDES VER
usuario1:  la usuario3 no da credito a tus explicaciones
yo:  los cachos de disco duro, en forma de archivos que puedes manipular con los diferentes programas
usuario1:  se descuajaringa…
yo:  pues es bien sencillo, se trata de memoria volatil, es decir, que se pierde cuando apagas el pc…
usuario1:  eres un bucle

(qué manera de vacilarme…esto es la leche…van sobraos encima, tú..)

yo: ya

yo:  …y memoria permanente, que se almacena en otro sitio, en el disco duro, en un diskete, en un pendrive, etc

pues hasta que no entendais esto, querid@s, no os vais a enterar de cosas como el portapapeles y mil mas
y así os va, preguntandoos por el sexo de los ángeles

(me han tocao la fibra sensible, pos ahí llevas las verdades del barquero)
usuario1:  perdona ehhh pero te estas pasando

(vaya XD, que se me han molestado los sensibles usuarios…)

yo:  jajaja
se siente…
¿Cuantas veces en tu vida has utilizado el copiar/pegar?
cienes y cienes, no?
usuario1:  como rescatas y lo metes en un pendrive si no sabemos donde localizarlo que es lo que te pregunto desde primera hora. En el disco duro , es C pero como se llama ‘porque por portapapeles no lo encontramos so listoooooo

(dónde está el enchufe que me voy a electrocutar voluntariamente, XDDDDDDDD…)

yo:  pues llevas toda la vida utilizando el portapapeles
XDDDDDD
el portapapeles no lo vas a encontrar nunca
el portapapeles lo utilizarás
pero no reside físicamente en un sitio al que puedas acceder
ejemplo práctico:
te escribo esta frase para que la copias al portapapeles
ahora, coges y selecciona con el ratón la frase anterior
usuario1:  si yo lo se si la usuario3 la que no se entera de naaa
yo:  una vez seleccionado
le das con boton derecho a la selección y “Copiar”
DESDE ESE INSTANTE, EL TEXTO ESTÁ EN EL PORTAPAPELES
¿CÓMO LO SABES?
pues bien, abres un nuevo documento de texto
y, una vez hecho, clic con bptón derecho otra vez, seleccionando ahora “pegar”
el texto, se vuelca en el fichero
pero aun más
usuario1:  mentira soy la usuario3 el problema es q se copio en el portapapeles y  nunca no habia salido la palabra portapapeles cada vez q copiamos, ya lo entendemos
yo:  si abres un nuevo libro excel (…espera, que ya lo han entendido..noto como algo húmedo corre por mi cara…estoy llorando de la emoción…¡Lo han entendido…!.)
bueno, eso espero, porque mañana os examino
usuario1:  muchas gracias de usuario2
yo:  de nada, a ver si os ha servido
Enviado a la(s) 14:41 del miércoles
usuario1:  buffffffffffffffffffffffffff
yo:  ??
usuario1:  es posible que en la barra abajo se quede una pestaña que pusiese portapapeles
?
eso dice usuario2
el nos ha liado
yo:  si estás en word, o alguna versión nueva de acrobat, es posible
eso se pone
para evitarle al usuario el lío de comprender esto que te he dicho
pero claro
en cuanto se sale del ámbito de esa aplicación
y se quiere pegar en un archivo abierto por otra, vienen los líos
y si no se entiende que es un cacho de memoria del ordenador, que el sistema operativo de deja a ti para que guardes tus cositas, mientras está encendido
pues no te explicas el comportamiento
usuario1:  entonces ¿no somos tan torpes no??
yo:  no no, ese es uno de los problemas típicos del usuario, y sirve como ilustración para comprender que en el ordenador coexiste más de un tipo de memoria

(a estas alturas ya soy consciente de que esta conversación va posteada fijo…jejeje)

usuario1:  mmm…estas mu fino hoy
yo:  cuando quieres que algo que estás manipulando con un programa de aplicación, sea word, excel acrobat o photoshop
quede permanente
tienes que alamcenar el contenido de la memoria volatil -la ram, para que te hagas idea- en le memoria permanente, y en forma de archivo, que es como sabe guardarlo la máquina
es que soy un artista…
usuario1:  que me voy, leches!
adios
Se ha habilitado el registro de este chat.
yo:  jaja adios
usuario1 no ha recibido tu chat.

Eso es to…eso es to….eso es todo amigossss

(Apócrifa despedida de G.W. Bush al lobby del petróleo tras su salida de la Casa Blanca)

Publicado en Informática | Etiquetado: , , , , | 1 comentario

¿Somos GPL o software privativo?

Publicado por jurelillo en Febrero 1, 2009

creative_commons_haircut_george_kelley_sm mmm…complicado de decidir…somos contenedores de objetos cuyas clases son concrecciones de otras puras abstracciones…mmm…veamos…

El contexto -el organismo, el individuo, a veces el entorno- tiene mucho que decir de cómo debe funcionar cada componente, y regula su expresión favoreciendo la de unos  y bloqueando la de otros según un plan maestro que, alojado en cada una de sus unidades funcionales -células-, se ejecuta siguiendo las señales que parten del sistema central de regulación. Lo más increible de todo esto es que este mecanismo de control existe en todas y cada una de las unidades funcionales, aunque convenientemente bloqueado al igual que el resto de la funcionalidad posible pero que esa unidad nunca va a ejercer.

Hasta 1950  no hubo problema; eramos cajas negras, código cerrado a cal y canto para ojos curiosones, y la propiedad sin cuestionar: del dios correspondiente o patrimonio de la humanidad -la tierra para el que la trabaja..jé!- según otros. No tengo la certeza, pero me da que durante esa época, la propiedad se presumía y se asumía, aunque no se recogía en los textos jurídicos de ningún pais  de este nuestro mundo mundial.

adn Watson, Crick y Franklin, que no Wilkins -Ay, Rosalind Franklin, según nos contaron en la carrera el mundo te debe una disculpa-, los descubridores de la estructura de la molécula de ADN,  destapan la caja y liberan las barreras para el descifrado del código genético , lo que a su vez es señal de partida para la carrera biotecnológica, carrera que desde los 70 y con el descubrimiento de los primeros mecanismos de manipulación génicos, seguidos en la decada de los 80 por el descubrimiento de potentes y baratas técnicas de amplificación del material genético, se convierte en una merienda de negros en la que cada cual va a lo que van todas las empresas: a sacar la mayor tajada

¿Y en qué afecta esto a nuestro negocio? Pues queridos, afecta porque las empresas biotecnológicas han cambiado el formato y pretenden cobrar por ello el copyright. Nuestros amigos “bichean” por el código de un superviviente de un contexto controlado, llámese cáncer, SIDA, o cualquier otro que cumple con lo siguiente:

  • Es chungo: o la palmas o te quedas puteado para los restos
  • Afecta a los que pueden pagar un tratamiento
  • Hay suficiente masa crítica para cubrir costes

Seguimos, si el contexto cumple con esto, estos amigos buscan en la “biblioteca” cual es  el la clase -el alelo o la combinación de alelos- que implementa la funcionalidad deseada y…vualá…encontrada y patentada -aquí creo que todavía no pero en el pais del libremercadoqueunpocomasynosmandalacarajoalamitad sí que pueden, ¡Ay que si pueden..! .La patentan..XDD, patentan un fragmento de código que era de la comunidad…serán cabrones…

O sea, que patentan algo que existe, o reclaman la propiedad intelectual de algo que forma parte de nuestra condición de humanos…mmm…no se ve, verdad? Esto no es como lo de la aspirina…

gnunf7 La genialidad está en el código del objeto, en esa singularidad de ese alelo, de esa rutina que hace que el procedimiento se ejecute de manera más eficaz dentro del contexto actual de la aplicación; pero además, ese código está distribuido por toda la comunidad, en mayor o menor frecuencia, pero forma parte del pull, del conjunto de software que compartimos todos desde el inicio de los tiempos…¿Y entonces…? ¿Quien se puede apropiar de él? ¿Su actual portador? …mmm…es un alquilado…¿Quien lo secuencia?… una…como una olla -pero que malablao que estoy, pero me enciende esto¡¡¡- ¿Quien descubre su utilidad?

Somos soportes temporales de un conjunto de funcionalidad que compartimos en mayor o menor medida con el resto de la humanidad del mundo mundial y por tanto, no es más nuestra que de otros. Quien descubre para qué sirve una parte, quien la compila, quien la lee o quien la utiliza  para crear algo que no exista siempre tiene que saber que esta bajo la licencia Creative commons, y por tanto no podrá licenciar su trabajo sin mencionar al “autor” y mucho menos sacar beneficio pecuniario alguno cuando por acción u omisión hemos decidido que el propietario original cede sus derechos con la condición contraria: Oiga! Usted es libre de estudiar el código, de modificarlo, de utilizarlo para lo que estime conveniente, pero si quiere sacar beneficios de esto, pues va a ser que no, básese entonces en otro código.

Saludos, calamares.

Publicado en Informática, biología, reflexiones | Etiquetado: , , , | 2 Comentarios »

Soy una tupla de 30.000 columnas llena de DCP’s

Publicado por jurelillo en Enero 14, 2009

Asonadas

Asonadas

Por qué? Por ser un caso único, una combinación irrepetible de los alelos que conforman el conjunto de posibles valores de cada uno de los genes de nuestro genoma.  Pues sí, resulta que  soy un tipo de datos complejo, producto cartesiano de 30000 dominios, mantengo una relación de una sola tupla…quemierdadevidaesta…

Pero además, debo cuidar de mis proyecciones, es decir, de como las tratan l@s que me las demandan. Proyectado de cualquier manera, puedo quedar con el culo al aire delante de todos. No se trata pues de ofrecer una proyección a cualquiera que me lo pida…podría ser calificado de proyector precoz.

Mis proyecciones están protegidas por ley, y como no podía ser menos, es una ley “orgánica”, adecuada a lo que se trata. ¡Ay del que las obtenga sin mi consentimiento! Qué puro -además- puede llevarse…

Sí que os puedo decir también, y para terminar por ahora, que la unión con otra tupla homóloga y el establecimiento periódico de operaciones de diversa índole pero que incluían proyecciones completas y consentidas han dado lugar a la creación de tuplas independientes que mantienen ya en la actualidad relaciones por sí mismas y, me temo, incluso alguna que otra proyección en algun caso. Es mi deber protegerlas durante cierto tiempo y gracias a lo aprendido en estos últimos meses creo que ahora va a ser más sencillo.

Saludos calamares.

PS: (Dedicado a Calixto y Chemari. Gracias por la compaña, la tertulia y los problemillas de mates)

Publicado en Ciencia y técnica, Informática, biología, ciencia, reflexiones | Etiquetado: | 5 Comentarios »

Un glosario de términos blogueros

Publicado por jurelillo en Junio 10, 2008

Buscando málaga me encontré malagón…pero como me ha parecido bastante interesante para el visitante lego en estos avatares, os pongo este enlace para que podais consultar los términos más frecuentes en este submundo del blogging

Glosario de blogs

Jureles y boquerones nadan incautos mientras atunes y marrajos se relamen.
Pero…atunes y marrajos: no olvideis la almadraba.

Publicado en Ciencia y técnica, técnica | Etiquetado: | Deja un Comentario »

Un vistazo a linqToXsd

Publicado por jurelillo en Junio 5, 2008

Bueno, para los que no esteis muy al tanto de esta tecnología de .NET, linq es un conjunto de tecnologías para el acceso a datos capaz de serializar tipos a fuentes de datos diversas, y deserializar en forma de tipos accesibles por el analizador sintáctico del lenguaje en cuestión (C# por ejemplo).

Esto es algo verdaderamente glorioso, pues mediente unas reglas sintácticas muy sencillas podemos acceder a los datos ya tipados y también serializarlos -almacenarlos de forma permanente- de manera tal que los errores de acceso a datos van a surgir, XD, en tiempo de diseño -en la compilación- y no en tiempo de ejecución, cuando ya no podemos cazarlos.

linqToXsd es una librería más de este conjunto que utiliza un archivo xml como origen de datos, pero que a diferencia de linqToXml, es capaz de utilizar un esquema de definición de datos asociado en forma de archivo xsd para generar internamente un conjunto de tipos que son añadidos automatizadamente a la blblioteca de tipos del proyecto y pueden ser manipulados en tiempo de diseño.

Las ventajas son evidentes: es posible entonces extraer listas de objetos directamente tan solo mediante una expresion lambda y un casting al tipo adecuado que ha sido generado desde el xsd. Casi ná…

Ejemplo:

Un usuario experto se plantea la necesidad de ejecutar muchas veces un grupo relativamente reducido de operaciones sobre un banco de imágenes: cambiar su título, su descripción, adscribirlas a categorías diferentes, eliminarlas…

Dado que por sus conocimientos controla Excel con un mínimo de dignidad, era posible la solución que se le propuso, que no fué otra que generar una hoja con datos tabulados en 3 columnas : identificador de la imagen, operación y valor, que queda en el sistema definiendo una interfaz común

public interface OperacionesConImagenes
{
void Do(ushort? idImagen, string valor);
}

y el cjto de operaciones como clases que la implementan

La parte más chula de todo esto es que tan sólo hay que convertir la hoja a XML y extraer la plantilla correspondiente:

<?xml version=”1.0″ encoding=”utf-8″?>
<xs:schema attributeFormDefault=”unqualified” elementFormDefault=”qualified” xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
<xs:element name=”ListaDeTareas”>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs=”unbounded” name=”Tarea”>
<xs:complexType>
<xs:sequence>
<xs:element name=”Orden” type=”xs:unsignedShort” />
<xs:element minOccurs=”0″ name=”pg” type=”xs:unsignedByte” />
<xs:element minOccurs=”0″ name=”Id” type=”xs:unsignedShort” />
<xs:element minOccurs=”0″ name=”Nombre” type=”xs:string” />
<xs:element name=”Operacion” type=”xs:string” />
<xs:element minOccurs=”0″ name=”Valor” type=”xs:string” />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

la cual es utilizada por la librería para generar unos tipos en la biblioteca de objetos: el tipo ListaDeTareas y el tipo Tarea, siendo el primero una lista de objetos del segundo tipo. Para ello hay que aplicar el valor LinqToXSDSchema a la propiedad BuildAction del objeto xsd que hemos integrado en la solución.

Y así, desde el xml se pudo almacenar una lista de tareas en forma de tuplas Tareas que fueron ejecutadas. La forma de obtener la operación a aplicar con un parámetro de entrada de tipo string fué así:

OperacionesConImagenes opAplicar = Activator.CreateInstance(Type.GetType(“OperacionesEnBatch.Op” + Enum.GetName(typeof(TiposOperacionesConImagenes), operacion))) as OperacionesConImagenes;

opAplicar.Do(idImagen, valorOperacion);
Mola, eh?

Para saber más sobre el tema…

Publicado en Informática, técnica | Etiquetado: , , , , | Deja un Comentario »

Centrar un contenedor html

Publicado por jurelillo en Noviembre 23, 2007

Un Tip CSS: Para centrar un div de una manera simple 1o mejor es modificar el la propiedad tex-align del contenedor superior a “center” para a continuación actualizar la propiedad margin a “auto” del contenedor a centrar.

Publicado en Informática | Etiquetado: , , , | 1 comentario