[Python-es] Desarrollo web o no

9 views
Skip to first unread message

Jesús Quintero Suárez

unread,
Jan 13, 2016, 11:03:23 AM1/13/16
to La lista de python en castellano

Cordial saludo para todos, en un post anterior estaba decidido a crear aplicaciones de escritorio y solicitaba la mejor combinación utilidades para lograrlo, las respuestas generaron controversia en el sentido que si era mejor hacerlas web o no, eso me agrada pues la idea principal es la de mejorar el producto existente, desarrollado 100% en Visual FoxPro, multiusuario, con la base de datos nativa y siempre conectado.

Ahora lo que quiero es migrar a python y de paso mejorarlas en tos sus aspectos, pero se presenta tres alternativas, web, escritorio o hibrido, entiendo perfectamente las ventajas del desarrollo web, pero, hay requerimientos que cumplir y algunas limitaciones:

Requerimientos:

·         Son varias aplicaciones que comparten la base de datos, en cuanto a su mantenimiento o administración.

·         Cada aplicación debe funcionar independiente de las otras, excepto por la base de datos.

·         Un cliente puede poseer una o varias de ellas, pero nunca todas.

·         Cada cliente debe tener su propia base de datos, es información muy sensible.

·         Las aplicaciones básicas responden a los requerimientos del estado colombiano y no a los del cliente, a solicitud se desarrollan aplicaciones especiales para el diligenciamiento automático de las básicas, con la garantía de ninguno de mis otros clientes podrán acceder a ellas.

·         La función principal de las aplicaciones básicas es la de generar archivos que representan un único documento, pero una sola operación puede generar más de 1000 documentos, tamaño máximo por archivo 100KB codificado en ASCII extendido hasta 256 caracteres.

·         Como lo mencioné antes, estas aplicaciones desarrolladas en VFP se encuentran en producción, y no creo que mis clientes acepten ni sería justo entregarles menos de lo que ya poseen, quiero decir:

o   Validación campo a campo teniendo en cuenta todos los datos hasta el momento incorporados.

o   Para campos relacionados el usuario digita dato requerido por que en la mayoría de los casos lo tiene a la mano o se lo sabe, esto les brinda más agilidad que ponerse a seleccionar de una lista de probablemente miles de opciones, sin embargo, si lo desconoce al oprimir una tecla especial se le brindara una lista filtrada de acuerdo con datos conocidos y con opción de búsqueda por los campos de la tabla padre.

o   Prevención de diligenciamiento, activación o desactivación de casillas de acuerdo con datos incorporados en el formulario actual o anteriores.

·         Por último y la más importante, mis clientes están sometidos a un régimen sancionatorio por errores, omisión de información o no entrega oportuna de la documentación, y pueden ser económicas (cuantiosas), suspensión o cierre de la entidad, esto está amparado por pólizas que el estado hace efectivas tan pronto como lo crea conveniente, normalmente siempre y después pregunta que paso mediante un requerimiento. Esto realmente es preocupante y solo pensar en ofrecer los servicios de servidor ya sea web o de ejecución de aplicaciones remotas me da miedo, en caso de fallo y no poder restaurarlo rápidamente me metería en serios problemas, y no con uno sino con todos.

·         En la actualidad mi segundo mejor cliente tiene mi aplicación en servidor de aplicaciones y la acceden a través de internet desde diferentes sucursales en el país, como lo hicieron, no tengo ni idea, pero lo importante es que cuando lo deseen pueden trastear con la base de datos e instalar el software en cada una de las sucursales y hacerlas independientes y en cuestión de minutos están en producción nuevamente.

Las limitaciones no son infranqueables, se deben a mi falta de conocimientos sobre web, pero si van influir significativamente en el tiempo de desarrollo, he estudiado python, django, html5 y css, pero creo que aún me falta mucho más, por ejemplo:

·         Como ponerlas en producción local y/o hosting sin ningún conocimiento en servidores y que además con lo que estudiado sigo sin entender.

·         Como por lo menos replicar las características del software anterior en VFP.

Mi opinión, que igual puede estar lejos de la realidad, es que Django está muy estructurado y revertir todo eso podría ser más complejo por ir en contra de su filosofía y su forma de actuar, quizá con Flask tenga que codear más pero a lo mejor aprenderé a recorrer el camino, creo que con cualquiera de estos framework se puede resolver el segundo punto de mis limitaciones, es cuestión aprender, claro con un poco de orientación como sobre que debo estudiar. El que me preocupa realmente es el primer punto, si no puedo poner en producción la aplicación de forma local en el sistema operativo Windows de una manera sencilla, que corra bien y sin mayores inconvenientes a futuro, que no interfiera con los procesos y actividades actualmente corriendo en el equipo que fungirá de servidor y que no genere costos adicionales a mi cliente, debo descartarlo y tomar el camino de aplicaciones de escritorio, que en realidad es mucho más dispendioso pero tránsito por caminos conocidos, programación controlada por eventos, solo requiero que me orienten en la selección de las herramientas para el desarrollo de GUIs, he leído algo sobre las que están relativamente actualizadas con las últimas versiones de Python, me gustan Kivy, pyGObject, pyQt, Qt5, como herramientas de diseño gráfico no me gusta ninguna, creo poder utilizar las de VFP y generar los archivos para utilizarlos con python y la utilería que me aconsejen, ah, y en cualquiera de los casos debo conocer muy bien las características de PostgreSql.

Disculpen lo extenso y quedo a la espera de su colaboración, gracias de antemano, Jesús

Mario Lacunza

unread,
Jan 13, 2016, 11:23:07 AM1/13/16
to La lista de python en castellano
Y cuanto pagas por el análisis? jajaja

Mira lo último q planteas sobre usar VFP para diseñar intefaces GUI para python no se como te lo has inventado. Si va a usar QT usa su designer q es muy bueno, si vas a usar wxPython te aconsejo wxFormbuilder. Lo demás es perdida de tiempo, no reinventes la rueda.

Segundo: web o desktop pues partiendo q sabes Python para web debes aprender mínimo 3 lenguajes HTML+CSS+JS y si quieres hacer interfaces dinámicas AJAX + el framework q vayas a usar. SI tienes el tiempo para todo esto pues... yo a pesar de saber estos últmos en tu caso me decantaría por  una desktop tradicional, yo uso wxPython y SQL alchemy en todos mis softwares sin problemas, deploy ya lo mencione, la primera vez 4 instaladores click click en windows al hacer un upgrade solo distribuyo el EXE. No tengo mayores problemas.

El resto es análisis y diseño del software.

Saludos / Best regards

Mario Lacunza
Email:: mlac...@gmail.com
Personal Website:: http://www.lacunza.biz/
Hosting:: http://mlv-host.com/
Mascotas Perdidas:: http://mascotas-perdidas.com/
Skype: mlacunzav

Lima - Peru

_______________________________________________
Python-es mailing list
Pyth...@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Carlos Zuniga

unread,
Jan 13, 2016, 1:00:28 PM1/13/16
to La lista de python en castellano
2016-01-13 11:01 GMT-05:00 Jesús Quintero Suárez <jesu...@msn.com>:
> Cordial saludo para todos, en un post anterior estaba decidido a crear
> aplicaciones de escritorio y solicitaba la mejor combinación utilidades para
> lograrlo, las respuestas generaron controversia en el sentido que si era
> mejor hacerlas web o no, eso me agrada pues la idea principal es la de
> mejorar el producto existente, desarrollado 100% en Visual FoxPro,
> multiusuario, con la base de datos nativa y siempre conectado.
>
> Ahora lo que quiero es migrar a python y de paso mejorarlas en tos sus
> aspectos, pero se presenta tres alternativas, web, escritorio o hibrido,
> entiendo perfectamente las ventajas del desarrollo web, pero, hay
> requerimientos que cumplir y algunas limitaciones:
>
> Requerimientos:
>
> · Son varias aplicaciones que comparten la base de datos, en cuanto
> a su mantenimiento o administración.
>
> · Cada aplicación debe funcionar independiente de las otras, excepto
> por la base de datos.
>
> · Un cliente puede poseer una o varias de ellas, pero nunca todas.
>
> · Cada cliente debe tener su propia base de datos, es información
> muy sensible.

Aquí depende de si vas a hacer un servicio web, donde todos los
clientes se registran en tu servidor y acceden a su propio contenido o
si cada uno va a tener su propio servidor web. Para lo primero,
probablemente usaras una sola base de datos y diferenciaras los datos
de cada cliente por algún campo en ella. Aquí es importante filtrar en
todas las consultas por ese campo para evitar acceder a la data de
otro cliente, pero se simplifica la administración y actualización del
software ya que todo esta en tus propios servidores (cada nuevo
cliente solo significa crear una nueva cuenta no instalar nada).
Podrías separar bases de datos por cliente pero aún así todas las
bases de datos están dentro de tu infraestructura así que no es mucha
la diferencia. Con la segunda forma cada cliente requiere su propia
infraestructura, el mantenimiento y actualización serán más
complicados ya que tendrán que realizarse para cada uno pero el diseño
de la base de datos será más simple, se simplifican las consultas a la
BD y no habrá problemas de fuga de datos de un cliente a otro.

Las aplicaciones de escritorio requerirán actualizar los cambios en
cada estación de trabajo (o un sistema de actualización por la red).

También hay que tener en cuenta la disponibilidad del servicio, si por
alguna razón el cliente se queda sin Internet, pierde acceso al
servicio web, pero sigue teniendo acceso a sus propios servidores. Por
otro lado, pueden acceder al servicio web desde cualquier navegador
(incluso su smartphone) y no solo dentro de la empresa (y esto le
suele gustar a los gerentes).

>
> · Las aplicaciones básicas responden a los requerimientos del estado


> colombiano y no a los del cliente, a solicitud se desarrollan aplicaciones
> especiales para el diligenciamiento automático de las básicas, con la
> garantía de ninguno de mis otros clientes podrán acceder a ellas.
>
> · La función principal de las aplicaciones básicas es la de generar
> archivos que representan un único documento, pero una sola operación puede
> generar más de 1000 documentos, tamaño máximo por archivo 100KB codificado
> en ASCII extendido hasta 256 caracteres.

Una aplicación web tendría que generar todos estos archivos en el
servidor y el usuario tendrá que descargarlos (puedes ponerlos en un
zip para que sea una sola descarga), esto significa descargas de unos
100MB (seguro menos si los comprimes en zip pero aún así son archivos
grandes). Tienes que tener en cuenta que tus servidores tengan espacio
en disco para cubrir el uso de todos tus clientes. En este punto una
aplicación de escritorio puede ser más veloz y sencilla de usar.

>
> · Como lo mencioné antes, estas aplicaciones desarrolladas en VFP se


> encuentran en producción, y no creo que mis clientes acepten ni sería justo
> entregarles menos de lo que ya poseen, quiero decir:
>
> o Validación campo a campo teniendo en cuenta todos los datos hasta el
> momento incorporados.

La aplicación web requerirá de mucho javascript para hacer validación
en caliente. Además de la validación en el lado del servidor, que aún
si validas en el cliente no debes dejar de hacerla.

Y si la aplicación requiere widgets como grids, hacerlos con una
aplicación de escritorio es más fácil que javascript en web.

>
> o Para campos relacionados el usuario digita dato requerido por que en la
> mayoría de los casos lo tiene a la mano o se lo sabe, esto les brinda más
> agilidad que ponerse a seleccionar de una lista de probablemente miles de
> opciones, sin embargo, si lo desconoce al oprimir una tecla especial se le
> brindara una lista filtrada de acuerdo con datos conocidos y con opción de
> búsqueda por los campos de la tabla padre.

Para hacer esto en web necesitarás de todas maneras hacer llamadas
AJAX (a menos que sean tan pocas opciones que las puedas cargar todas
al inicio).

>
> o Prevención de diligenciamiento, activación o desactivación de casillas
> de acuerdo con datos incorporados en el formulario actual o anteriores.

Lo mismo, requeriras mucho Javascript y AJAX para activar/desactivar
widgets de acuerdo a los datos ingresados.

>
> · Por último y la más importante, mis clientes están sometidos a un


> régimen sancionatorio por errores, omisión de información o no entrega
> oportuna de la documentación, y pueden ser económicas (cuantiosas),
> suspensión o cierre de la entidad, esto está amparado por pólizas que el
> estado hace efectivas tan pronto como lo crea conveniente, normalmente
> siempre y después pregunta que paso mediante un requerimiento. Esto
> realmente es preocupante y solo pensar en ofrecer los servicios de servidor
> ya sea web o de ejecución de aplicaciones remotas me da miedo, en caso de
> fallo y no poder restaurarlo rápidamente me metería en serios problemas, y
> no con uno sino con todos.

Si optas por hacer un servicio web, tendrás que tomar en cuenta
siempre hacer backups y pensar en una infraestructura que te permita
actualizar y hacer rollbacks del software cuando sea necesario. Si la
implementación es independiente por cliente, tendrán ellos que hacer
sus propios backups y siendo la implementación uno por uno, ayuda que
tal vez te puedas dar cuenta de fallos cuando solo está instalado en
los primeros clientes en lugar de mostrar el fallo a todos a la vez.

>
> · En la actualidad mi segundo mejor cliente tiene mi aplicación en


> servidor de aplicaciones y la acceden a través de internet desde diferentes
> sucursales en el país, como lo hicieron, no tengo ni idea, pero lo
> importante es que cuando lo deseen pueden trastear con la base de datos e
> instalar el software en cada una de las sucursales y hacerlas independientes
> y en cuestión de minutos están en producción nuevamente.

Si fuera a ser un servicio web ya no podrán trastear con la BD ya que
no tienen acceso directo a la misma, ni copiar y pegar el software en
otro lado para independizarlo, ya que todo se maneja a través de una
sola página web con cuentas, tendrían que registrar una nueva cuenta
en tu sistema. O lanzar un segundo servicio en sus servidores si
manejan servidores web independientes.

>
> Las limitaciones no son infranqueables, se deben a mi falta de conocimientos
> sobre web, pero si van influir significativamente en el tiempo de
> desarrollo, he estudiado python, django, html5 y css, pero creo que aún me
> falta mucho más, por ejemplo:
>
> · Como ponerlas en producción local y/o hosting sin ningún
> conocimiento en servidores y que además con lo que estudiado sigo sin
> entender.

Seguir estudiando, o pagarle a alguien que sepa. No hay otra manera :)

>
> · Como por lo menos replicar las características del software
> anterior en VFP.

Todo depende de la complejidad de los formularios y las limitaciones
de los navegadores web.

>
> Mi opinión, que igual puede estar lejos de la realidad, es que Django está
> muy estructurado y revertir todo eso podría ser más complejo por ir en
> contra de su filosofía y su forma de actuar, quizá con Flask tenga que
> codear más pero a lo mejor aprenderé a recorrer el camino, creo que con
> cualquiera de estos framework se puede resolver el segundo punto de mis
> limitaciones, es cuestión aprender, claro con un poco de orientación como
> sobre que debo estudiar. El que me preocupa realmente es el primer punto, si
> no puedo poner en producción la aplicación de forma local en el sistema
> operativo Windows de una manera sencilla, que corra bien y sin mayores
> inconvenientes a futuro, que no interfiera con los procesos y actividades
> actualmente corriendo en el equipo que fungirá de servidor y que no genere
> costos adicionales a mi cliente, debo descartarlo y tomar el camino de
> aplicaciones de escritorio, que en realidad es mucho más dispendioso pero
> tránsito por caminos conocidos, programación controlada por eventos, solo
> requiero que me orienten en la selección de las herramientas para el
> desarrollo de GUIs, he leído algo sobre las que están relativamente
> actualizadas con las últimas versiones de Python, me gustan Kivy, pyGObject,
> pyQt, Qt5, como herramientas de diseño gráfico no me gusta ninguna, creo
> poder utilizar las de VFP y generar los archivos para utilizarlos con python
> y la utilería que me aconsejen, ah, y en cualquiera de los casos debo
> conocer muy bien las características de PostgreSql.
>
> Disculpen lo extenso y quedo a la espera de su colaboración, gracias de
> antemano, Jesús
>

Existen bibliotecas para desarrollo de GUIs complejos en javascript,
pero en mi opinión no llegan al nivel de control (y sencillez) que
puedes tener en una aplicación de escritorio. Con la aplicación de
escritorio además simplificas la programación ya que solo vas a usar
un lenguaje de programación y no dos.

Así que mi respuesta final es: ♫ Depende, de que depende, de según
como se mire todo depende ♫


Saludos
--
A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
de leer manuales.

Mario R. Osorio

unread,
Jan 13, 2016, 2:19:00 PM1/13/16
to La lista de python en castellano
Un saludo para ti tambien Jesus,

Si la mision de tu(s) aplicacion(es) es tan critica como indicas, haces muy bien en pensar en PostgreSQL. Tu puedes crear cualquier cantidad de bases de datos y darle a las respectivas credenciales y permisos a quien debas. Sin problemas. Incluso podrias tener en la ubicacion de cada cliente, una replica de SU bases de datos de manera que si pierde conectividad con el servidor pueda continuar trabajando de la manera mas sencilla posible.

Yo estoy 100% convencido de que con cualquier web framework basado en Python que pudieras decidir mas un RDBMS como PostgreSQL o incluso MySQL o MariaDB; vas a tener un sistema muchisimo mas robusto y facil de actualizar y administrar que lo que ahora tienes con VFP (Y que conste que yo trabaje con dBase/VFP por muchos años!).

En cuanto a mi, tan pronto aprendi Python, me case con Django. La curva de aprendizaje es grande, pero igual te sirve para practicamenet cualquier projecto, pero acepto que puede ser "Mucho camison pa'Petra" en algunas ocasiones. No quiero con esto hablar mal de ningun otro web framework hecho en Python.

Si te interesa poder ofrecer un servicio mas completo a tus clientes, yo utilizaria (y de hecho eso hago yo) un VPS, o varios segun tus necesidades; dedicado(s) exclusivamente a la base de datos. En lo perdonal, yo utilizo Digital Ocean que me ha resultado MUY economico y practico. Ellos opfrecen 100% de 'up time' y la verdad NNUNCA he tenido problemas con mis VPS's.

En lo personal, soy TERRIBLE para el front; yo me dedico a la administracion de servidores, bases de datos y el desarrollo de 'back ends', pero mi tocayo Acunza te dio muen consejo sobre que utilizar para el 'front end'

Si aun deseas crear aplicaciones para de escritorio, te recomiendo altamente que revises el projecto Dabo. Yo lo considero una mezcla de VFP+Access+Esteroides. Lo unico es que, hasta donde se, aun no han trabajado la version para Python 3.

Por cierto que la administracion de servidores y bases de datos genera muy buenos reditos!

Por ultimo, ofrezco disculpas por los errores ortograficos, ando muy apurado, asi que no me dio tiempo de revisar lo que he escrito


Un abrazo!!


Dtb/Gby
=======
Mario R. Osorio
A.S. of Computer Programming and Analysis

“If I had asked people what they wanted, they would have said faster horses.”
 ― Henry Ford

            

      

2016-01-13 11:01 GMT-05:00 Jesús Quintero Suárez <jesu...@msn.com>:

Jesús Quintero Suárez

unread,
Jan 13, 2016, 6:20:39 PM1/13/16
to La lista de python en castellano

Hola todos, en ocasiones las dependencias de terceros traen consigo más problemas que soluciones, en estos casos reinventar la rueda es benéfico, migrar de VFP a Python es exactamente eso, mis aplicaciones corren perfectamente, cero problemas.

Con respecto a los diseñadores de GUIs para Python que visto, en todos tiene que hacer cosas adicionales y en algunos más que en otros porque tienen problemas con Windows, talvez no conozcan el de VFP, te abre ventanas independiente para codear eventos, métodos para un o múltiples widgets, esto facilita el trabajo, todo tu diseño queda plasmado en una tabla de base de datos nativa, en la que cada elemento inclusive la ventana es un registro que incluye todas y cada una de las característica y el código de control, la cual puedes leer y con un programa generar el archivo completamente funcional que necesitas para correr en Python y de verdad nada complicado y si un alivio enorme hacia futuro.

Saludos, Jesús.

Reply all
Reply to author
Forward
0 new messages