El día 16 de diciembre de 2010 14:02, Alberto Curro
<bertothun...@gmail.com> escribió:
>
> 2010/12/16 Francesc Alted <fal...@pytables.org>
>>
>> A Thursday 16 December 2010 12:26:48 Alberto Curro escrigué:
>>
>> >   Me surgen entonces las siguientes dudas:
>> >
>> >   - Licencia: ¿qué problemas pueden surgir? Estoy desconectado desde
>> > hace un tiempo del mundillo del software libre, y ya no me acuerdo
>> > si alguno de los módulos usados (4Suite, Reportlab) podría afectar
>> > en la publicación de la solución en GPL.
>>
>> Nosotros elegimos GPL ya que dependiamos de una libreria GPL (creo que
>> era pyinotify).  Mi consejo es que, debido a la naturaleza viral de GPL
>> la evites si puedes (BSD o MIT van muy bien: sencillas y no pretenden
>> imponer la libertad).  Sin embargo, hay que decir que mucha gente se
>> siente a gusto con la GPL y la elige a propósito (no es mi caso).
>>
>
>   Bueno, en esta parte tendría que revisarla. Creo que ni 4Suite ni
> Reportlab son GPL...
>
4Suite tenía una licencia derivada de Apache 1.1 y creo que no es
compatible con GPL. 4Suite ya no tiene soporte. El proyecto se ha
transformado en Amara  y mejorado muchísimo, entre otras cosas en
prestaciones. Amara tiene licencia Apache 2.0, compatible con GPL v3.

>   Como verás, no miento cuando afirmo que estoy pez y muy desconectado del
> mundillo en los últimos 2 o 3 años. Ni se me había ocurrido MIT o BSD y,
> sinceramente, pensándolo me gusta más esa filosofía: yo soy libre porque
> quiero serlo, tú haz lo que quieras :)
>
>
>> >   - Tecnología: ¿hay soluciones mejores, o más eficientes, para el
>> > procesamiento de los XML, XSLT, o mejores que reportlab?
>>
>> Hombre, hay infinitas :-)  Nosotros por ejemplo no usamos XML para nada.
>> Nos inventamos nuestro propio sistema de plantillas para generar los
>> PDFs a partir de ficheros texto y un fichero de control (o formato)
>> parecido a:
>>
>>    [task]
>>    doctype = Factura amb copia
>>    input_encoding = cp850
>>    output_name = Factura #123
>>    ncopies = 2
>>    host = dept-comptabilitat
>>    barcode = 123a20080619
>>
>>    [copy]
>>    dir = /el/meu/directori
>>
>>    [email]
>>    from = pdflisti...@exemple.com
>>    to = p...@ferrer.es
>>    subject = Factura #123
>>    bcc = factu...@exemple.com
>>
>> Por supuesto, se podian definir plantillas en PDF que se superinponian
>> al listado definitivo.  Como ves, no hay XML, así que va como un tiro.
>
>   Básicamente usamos XML en su momento porque nos eran sencillo generar los
> ficheros XML de entrada (en algún caso trabajábamos contra una solución
> propietaria, y el nuestro era un aplicativo externo, simple imposición de
> mercado), y también fue una decisión de diseño por la experiencia en ese
> momento; estábamos usando XSLT para otras cosas y decidimos continuar por
> esa línea.
>
>   Personalmente ahora mismo, si puedo, escapo de XML como de la peste,
> aunque reconozco sus virtudes en algunas cosas. Pero bueno, ya que está
> hecho, se podría mantener como uno de los soportes a usar, pero no el único
> (una de las primeras ideas que se me ocurrió tras verlo el otro día).
>
>

jeje,  Amara es una buena solución para huir de la peste del XML :P


>>
>> >   - Repositorio: ¿qué forja debería usar para publicarlo?
>>

Amara se alojaba en bitbucket (mercurial) y usábamos trac. Ahora hemos
migrado a github + redmine.

>> No infinitas, pero muchas, así que tendrás que elegir una.  Yo
>> últimamente me he decantado por github.com (aunque eso te obliga a usar
>> git como controlador de versiones).
>
>   Usar git no tiene mayor problema, porque es el que uso ahora mismo en lo
> personal y algo en lo profesional, aparte de SVN.
>
>>
>> >   A nivel técnico, el programa habría que revisarlo, dándole
>> > posibilidades en cuanto a parámetros de entrada, posibles salidas,
>> > una buena refactorización y puesta al día del código (os recuerdo
>> > que fue nuestro primer software python, aprendimos python con él...)
>> > etc., dado que ahora mismo lo que hace es un proceso de 1 única vía:
>> > coge xml -> transforma XSL -> genera RML -> convierte con reportlab
>> > -> almacena / imprime.
>>
>> Aparte de esto, el nuestro también envia por e-mail y fax (aparte de
>> otros posibles métodos definidos por el usuario).
>
>  Esas posibilidades son muy fáciles de implementar ahora mismo, casi una
> chiquillada :)
>
>>
>> >   La solución en sí es muy sencilla: coge un fichero XML con datos,
>> > lo procesa mediante XSLT, genera un documento RML y lo procesa con
>> > Reportlab para generar el PDF final (y enviarlo a impresora o
>> > guardarlo). Aparte de reportlab, se usaba 4Suite para el procesado
>> > de XML, el motor XSLT y, por supuesto, Reportlab.
>> >
>> >   Sin embargo, a nivel características era muy potente gracias a
>> > Reportlab: se podían generar auténticas "virguerías" a nivel de
>> > informes, con la complejidad que se requiriese; sólo deciros que
>> > fuimos capaces de conseguir generar, punto por punto, línea por
>> > línea, imagen por imagen, todos los tipos de informes usados por 3
>> > empresas de distintos tamaños (hablamos de facturas, informes
>> > internos, albaranes, etiquetado para logística, etc.) eliminando el
>> > uso de los formularios pre-impresos que venían usando, sin que se
>> > notase el cambio.
>>
>> Ahi el nuestro no es tan flexible.  Simplemente se pasa texto a PDF
>> diciéndole el tamaño del papel y el número de filas y columnas que iban
>> a caber.  Simple, pero efectivo.
>
>  Creo que ya lo he dicho, pero si no, ahí va: en nuestro caso era casi un
> "must", porque uno de los requisitos era: quiero sacarme el papel de encima,
> pero que siga imprimiendo o generando los PDFs igualitos a lo que había en
> papel antes. Estuvimos echando un vistazo a posibilidades, y lo único que
> parecía cumplir todos los requisitos era reportlab.
>>
>> >   Eso sí, el mayor problema (y donde se consumía el tiempo) era en la
>> > parte del diseño de las plantillas XSL y RML, que no habíamos
>> > escrito un software de diseño de las plantillas, y se hacía a mano
>> > :)  Por otro lado, no era una maravilla en velocidad: un informe
>> > normal tardaba alrededor de 1-1.5 segundos en estar en pantalla, un
>> > informe muy largo (más de 20 páginas) o muy complejo... pues
>> > imaginaos. La parte más lenta era la de transformación XML/XSLT
>> > (incluido el parseo y validación del XML); después de esto iba
>> > bastante bien, aunque reportlab en aquel momento no eran tampoco la
>> > panacea en velocidad.
>>

No sé cómo hacíais el parseo/validación. A nosotros nos funciona muy
rápido con las últimas versiones de Amara.


-- lm


>> Más lento parseando XML que el propio reportlab renderizando?  Creo que
>> se me han ido las ganas de trabajar con XML de por vida :-)  Recuerdo
>> claramente que nuestro cuello de botella era el reportlab, y se podian
>> alcanzar velocidades de varios informes (de entre 1 y 10 pags) por
>> segundo.
>
>  Ten en cuenta que cuando hablo de un informe "normal" estoy hablando, por
> ejemplo, de una factura: escribir los resultados de las queries en XML,
> llamada al programa, se cargaban los módulos, validadaba el XML contra el
> XSLT y el DTD, parseaba, transformaba, obtenía el RML... a partir de ahí era
> renderizado de Reportlab, y aunque no era un guepardo... pues chico, la
> impresión era esa, que no era la parte más lenta :)
>>
>> >    Bueno, creo que ya me he explayado bastante por ahora, para lo que
>> > eran unas simples preguntas; cualquier recomendación, consejo,
>> > interés en el proyecto, o preguntas, aquí me tenéis. No os cortéis
>> > :)
>>
>> Ya ves que compartimos sinergias :-)  Nuestro paquete es libre, pero no
>> está disponible en la red básicamente por el coste de crear el
>> repositorio y hacer una página medio decente explicando el asunto
>> (cuesta bastante tiempo, y si nadie te lo subvenciona pues...).  De
>> todas maneras, si quieres echarle un vistazo, puedes descargar el
>> paquete de:
>>
>> http://www.pytables.org/temporal/pdflistings-0.6.1.dev.tar.gz
>>
>
>  Esta última parte es la que más me hace pensar: implicará tiempo y energía.
> Todavía no sé si debería revisar el código y comenzar el desarrollo antes de
> comenzar a trabajar con la forja y subir código, o directamente subirlo
> "as-is", comentando las posibilidades en curso, y dejar que los interesados
> colaboren a medida que quieran.
>
>  Supongo que la segunda opción es la lógica, pero como siempre he trabajado
> en proyectos ya existentes en las forjas, nunca en uno propio (ni desde
> cero)...
>
>  PD: Seguro que otros muchos comparten sinergias, pero estamos bastante
> ocultos unos de otros (y ocupados)...
>
>>
>> Saludos,
>>
>> --
>> Francesc Alted
>> _______________________________________________
>> Python-es mailing list
>> Python-es@python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>
>
> _______________________________________________
> Python-es mailing list
> Python-es@python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a