Discussion:
Dudas sobre mi primer proyecto con Python
(too old to reply)
Mariano Falcon
2009-04-12 00:09:17 UTC
Permalink
Que tal gente, les paso a contar lo que voy a estar haciendo estos meses con
Python. En mi presentacion en la lista habia hablado de desarrollar un
sistema web para el jardin de infantes de mis viejos. Bueno, resulta que en
una materia que tengo en la facu(UTN) llamada Habilitacion Profesional se
nos pidio que presentaramos dos proyectos para poner en practica los
conocimientos que desarrollamos a lo largo de la carrera.

Resulta que eligieron mi propuesta que obviamente es desarrollar este
sistema asi que voy a contar con la cooperacion de dos compañeros y de los
profesores de la materia para realizar tal tarea. Mi experiencia en el
lenguaje es poca, hace mas o menos 1 mes que empece a aprenderlo.

Voy a proponer al profesor hacer el desarrollo en Python con Django ya que
quiero hacerlo web, y el motor de base de datos MySQL ya que a mis
compañeros les conviene mas aprender algo de ese motor que de PostgreSQL,
porque creen que saber ese motor les da mejor salida laboral(?). Igualmente
el mayor encargado del desarrollo voy a ser yo, mis compañeros se van a
dedicar mas a las fases anteriores(relevamiento, estudio de fact, analisis,
diseño, etc...)

Las dudas que traigo a la lista son basicamente si ven que esta bien la
eleccion de framework+motor de db(no trabaje nunca con ninguno de los dos) y
si el proyecto es realizable teniendo en cuenta que debe estar para fines de
Junio completo.

Muchisimas gracias,

Mariano Falcón.
SAn
2009-04-12 00:51:52 UTC
Permalink
Post by Mariano Falcon
Que tal gente, les paso a contar lo que voy a estar haciendo estos meses con
Python. En mi presentacion en la lista habia hablado de desarrollar un
sistema web para el jardin de infantes de mis viejos. Bueno, resulta que en
una materia que tengo en la facu(UTN) llamada Habilitacion Profesional se
nos pidio que presentaramos dos proyectos para poner en practica los
conocimientos que desarrollamos a lo largo de la carrera.
Resulta que eligieron mi propuesta que obviamente es desarrollar este
sistema asi que voy a contar con la cooperacion de dos compañeros y de los
profesores de la materia para realizar tal tarea. Mi experiencia en el
lenguaje es poca, hace mas o menos 1 mes que empece a aprenderlo.
Voy a proponer al profesor hacer el desarrollo en Python con Django ya que
quiero hacerlo web, y el motor de base de datos MySQL ya que a mis
compañeros les conviene mas aprender algo de ese motor que de PostgreSQL,
porque creen que saber ese motor les da mejor salida laboral(?). Igualmente
el mayor encargado del desarrollo voy a ser yo, mis compañeros se van a
dedicar mas a las fases anteriores(relevamiento, estudio de fact, analisis,
diseño, etc...)
En general, la idea de usar Django involucra utilizar su ORM, osea,
desligarse del motor de la base de datos y de sus detalles, más aún en
fase de desarrollo de la aplicación (dejando de lado posibles
optimizaciones utilizando SQL, etc).

Puden terminar haciendo una gran aplicación y no saber nada del motor
de base de datos, mas aún, son intercambiables (salvo raras
excepciones si uno hace algo fuera de lo comun) con 2 comandos y
modificando 1 linea de codigo se migra la db y se pasa a usar otro
motor.

Es posible no usar la ORM de DJango e ir de macho con la DB, pero debe
ser laborioso y se desvia del hecho de hacer la aplicacion.

saludos y suerte
SAn
Ricardo Aráoz
2009-04-12 01:54:24 UTC
Permalink
Post by Mariano Falcon
Voy a proponer al profesor hacer el desarrollo en Python con Django ya
que quiero hacerlo web, y el motor de base de datos MySQL ya que a mis
compañeros les conviene mas aprender algo de ese motor que de
PostgreSQL, porque creen que saber ese motor les da mejor salida
laboral(?). Igualmente el mayor encargado del desarrollo voy a ser yo,
mis compañeros se van a dedicar mas a las fases
anteriores(relevamiento, estudio de fact, analisis, diseño, etc...)
Una pregunta, "quiero hacerlo web", por qué razón? No estás poniendo el
carro delante del caballo? Primero relevar y análisis, y recién en etapa
de diseño uno toma esas decisiones. No podés relevar o analizar pensando
en la implementación, eso sólo ensucia el trabajo. Una vez que tenés el
sistema relevado y analizado, te planteás si lo hacés web o escritorio.
Necesita el usuario acceder desde lugar remoto? Qué ventajas me da la
web? Qué desventajas? (si no encontrás desventajas no estás haciendo
bien tu trabajo). Y si no necesita acceder desde lugar remoto, qué
ventajas y desventajas tiene hacerlo app de escritorio? Y si necesita
acceder desde lugares remotos. Es web la única solución?
Mariano Falcon
2009-04-12 16:27:16 UTC
Permalink
Post by Ricardo Aráoz
Una pregunta, "quiero hacerlo web", por qué razón? No estás poniendo el
carro delante del caballo? Primero relevar y análisis, y recién en etapa
de diseño uno toma esas decisiones. No podés relevar o analizar pensando
en la implementación, eso sólo ensucia el trabajo. Una vez que tenés el
sistema relevado y analizado, te planteás si lo hacés web o escritorio.
Necesita el usuario acceder desde lugar remoto? Qué ventajas me da la
web? Qué desventajas? (si no encontrás desventajas no estás haciendo
bien tu trabajo). Y si no necesita acceder desde lugar remoto, qué
ventajas y desventajas tiene hacerlo app de escritorio? Y si necesita
acceder desde lugares remotos. Es web la única solución?
La decision la tomo ahora para poder empezar a capacitarme en el tema, si
espero todas las etapas previas cuando llegue el momento de desarrollar no
voy a llegar con el tiempo. Elegi un sistema web porque, entre otras cosas,
me permite: aprender a desarrollar este tipo de aplicaciones(es a lo que me
voy a dedicar en un futuro cercano), acceder desde lugares remotos(en
principio no, pero me gustaria tener la posibilidad de estar de vacaciones,
ingresar al sistema y ver los numeros de como sigue el negocio en mi
ausencia), se planea iniciar otro jardin para el año que viene por lo que
obtendria un acceso centralizado, etc...
Las desventajas que le encuentro son: si quiero acceder remotamente voy a
tener que hostearla(mayores costos), voy a tener riesgos de seguridad, mas
lentitud.
Ricardo Aráoz
2009-04-12 17:02:13 UTC
Permalink
Post by Ricardo Aráoz
Una pregunta, "quiero hacerlo web", por qué razón? No estás poniendo el
carro delante del caballo? Primero relevar y análisis, y recién en etapa
de diseño uno toma esas decisiones. No podés relevar o analizar pensando
en la implementación, eso sólo ensucia el trabajo. Una vez que tenés el
sistema relevado y analizado, te planteás si lo hacés web o escritorio.
Necesita el usuario acceder desde lugar remoto? Qué ventajas me da la
web? Qué desventajas? (si no encontrás desventajas no estás haciendo
bien tu trabajo). Y si no necesita acceder desde lugar remoto, qué
ventajas y desventajas tiene hacerlo app de escritorio? Y si necesita
acceder desde lugares remotos. Es web la única solución?
La decision la tomo ahora para poder empezar a capacitarme en el tema,
si espero todas las etapas previas cuando llegue el momento de
desarrollar no voy a llegar con el tiempo. Elegi un sistema web
porque, entre otras cosas, me permite: aprender a desarrollar este
tipo de aplicaciones(es a lo que me voy a dedicar en un futuro
cercano), acceder desde lugares remotos(en principio no, pero me
gustaria tener la posibilidad de estar de vacaciones, ingresar al
sistema y ver los numeros de como sigue el negocio en mi ausencia), se
planea iniciar otro jardin para el año que viene por lo que obtendria
un acceso centralizado, etc...
Las desventajas que le encuentro son: si quiero acceder remotamente
voy a tener que hostearla(mayores costos), voy a tener riesgos de
seguridad, mas lentitud.
También : peor interfaz, dependés de tener acceso a la web, de que tu
hosting no tenga problemas. Tus datos no van a estar en tú máquina, o
sea que dependés de la responsabilidad de otro a quien no contrataste ni
conocés. Es más complicado para hacer backup de tus datos. Temas de
velocidad (si los hay).
Ahora, si el tema es capacitarte para programar web, todo bien, pero
tené en claro que ese es tu objetivo principal (y no el sistema).
Aparte de esto a mí me picó porque es lo que veo y no me gusta en toda
la industria, Mariano lo que sigue es general y no se aplica a vos.

<Queja>
En general las empresas contratan gente especializada en desarrollos
web, o en desktop, y en uno u otro lenguage o base de datos. Con lo cual
ya al momento del análisis del problema el proceso está viciado ya que
si tenés exclusivamente desarrolladores web vas a pensar sólo en una
aplicación web, y viceversa. Lo mismo con el lenguage, la bd etc. El
análisis debiera hacerse en vacío sólo considerando el problema y no la
solución, una vez tenés el problema analizado es entonces cuando te
planteás qué medios son más idóneos para expresar esa solución.Esto hace
que los sistemas se diseñen y ejecuten de acuerdo a la moda, al mercado
(de programadores y lenguages), al status quo de la empresa contratada,
pero no de acuerdo a las necesidades reales del usuario final.
</Queja>
Mariano Falcon
2009-04-12 23:26:46 UTC
Permalink
Perfecto Ricardo, quedo claro el tema de la eleccion del tipo de aplicacion.
Ahora con el tema de eleccion de framework + motor de bd y si puedo llegar
bien a terminarlo para fines de junio si le dedico un buen tiempo.

En este momento estoy realizando el tutorial de Django con Sqlite3 (tuve
problemas para instalar el MySQLdb). Sqlite me servira para este proyecto o
necesito algo como MySQL/PostgreSQL?.
Post by Ricardo Aráoz
Una pregunta, "quiero hacerlo web", por qué razón? No estás poniendo el
carro delante del caballo? Primero relevar y análisis, y recién en etapa
de diseño uno toma esas decisiones. No podés relevar o analizar pensando
en la implementación, eso sólo ensucia el trabajo. Una vez que tenés el
sistema relevado y analizado, te planteás si lo hacés web o escritorio.
Necesita el usuario acceder desde lugar remoto? Qué ventajas me da la
web? Qué desventajas? (si no encontrás desventajas no estás haciendo
bien tu trabajo). Y si no necesita acceder desde lugar remoto, qué
ventajas y desventajas tiene hacerlo app de escritorio? Y si necesita
acceder desde lugares remotos. Es web la única solución?
La decision la tomo ahora para poder empezar a capacitarme en el tema,
si espero todas las etapas previas cuando llegue el momento de desarrollar
no voy a llegar con el tiempo. Elegi un sistema web porque, entre otras
cosas, me permite: aprender a desarrollar este tipo de aplicaciones(es a lo
que me voy a dedicar en un futuro cercano), acceder desde lugares remotos(en
principio no, pero me gustaria tener la posibilidad de estar de vacaciones,
ingresar al sistema y ver los numeros de como sigue el negocio en mi
ausencia), se planea iniciar otro jardin para el año que viene por lo que
obtendria un acceso centralizado, etc...
Las desventajas que le encuentro son: si quiero acceder remotamente voy a
tener que hostearla(mayores costos), voy a tener riesgos de seguridad, mas
lentitud.
También : peor interfaz, dependés de tener acceso a la web, de que tu
hosting no tenga problemas. Tus datos no van a estar en tú máquina, o sea
que dependés de la responsabilidad de otro a quien no contrataste ni
conocés. Es más complicado para hacer backup de tus datos. Temas de
velocidad (si los hay).
Ahora, si el tema es capacitarte para programar web, todo bien, pero tené
en claro que ese es tu objetivo principal (y no el sistema).
Aparte de esto a mí me picó porque es lo que veo y no me gusta en toda la
industria, Mariano lo que sigue es general y no se aplica a vos.
<Queja>
En general las empresas contratan gente especializada en desarrollos web, o
en desktop, y en uno u otro lenguage o base de datos. Con lo cual ya al
momento del análisis del problema el proceso está viciado ya que si tenés
exclusivamente desarrolladores web vas a pensar sólo en una aplicación web,
y viceversa. Lo mismo con el lenguage, la bd etc. El análisis debiera
hacerse en vacío sólo considerando el problema y no la solución, una vez
tenés el problema analizado es entonces cuando te planteás qué medios son
más idóneos para expresar esa solución.Esto hace que los sistemas se diseñen
y ejecuten de acuerdo a la moda, al mercado (de programadores y lenguages),
al status quo de la empresa contratada, pero no de acuerdo a las necesidades
reales del usuario final.
</Queja>
Ricardo Aráoz
2009-04-13 01:38:33 UTC
Permalink
Post by Mariano Falcon
Perfecto Ricardo, quedo claro el tema de la eleccion del tipo de
aplicacion. Ahora con el tema de eleccion de framework + motor de bd y
si puedo llegar bien a terminarlo para fines de junio si le dedico un
buen tiempo.
En este momento estoy realizando el tutorial de Django con Sqlite3
(tuve problemas para instalar el MySQLdb). Sqlite me servira para este
proyecto o necesito algo como MySQL/PostgreSQL?.
Si tu acceso a la base de datos va a ser mono usuario con SQLite estás
bien. Si vas a tener varios usuarios accediendo a la vez a la base
entonces te conviene otro motor.
Matigro
2009-04-13 12:42:32 UTC
Permalink
Post by Mariano Falcon
Perfecto Ricardo, quedo claro el tema de la eleccion del tipo de aplicacion.
Ahora con el tema de eleccion de framework + motor de bd y si puedo llegar
bien a terminarlo para fines de junio si le dedico un buen tiempo.
En este momento estoy realizando el tutorial de Django con Sqlite3 (tuve
problemas para instalar el MySQLdb). Sqlite me servira para este proyecto o
necesito algo como MySQL/PostgreSQL?.
Está bien la elección del framework (aunque yo hubiera usado TurboGears ;) )
Una aplicación web te va a servir, y bien. Si quieren mejorar la parte
visual, poné a uno de tus compañeros a leer sobre Django y Ajax, con
eso van a hacer interfaces con el usuario para que queden popí-cucú.
SQLite se banca bastante una aplicación pequeña, quizás como el
sistema que querés hacer. Te ahorrás configuración del motor, espacio
en disco, etc. Pero corrés el riesgo de que todo se almacena en un
sólo archivo, si se corrompe, a llorar al cementerio.
Tal como dijeron anteriormente, el uso de ORM te abstrae del motor, y
la sintaxis, de la bbdd.
Arranquen con SQLite3, armen todo lo posible, hagan un branch de
desarrollo sobre MySQL y empiecen a configurar para optimizar si es
necesario, pero mientras tanto tenés la aplicación andando.

Salute
mi hornero de austral
Matías
--
http://www.linkedin.com/in/matigro
Mariano Falcon
2009-04-15 03:39:05 UTC
Permalink
Post by Matigro
Está bien la elección del framework (aunque yo hubiera usado TurboGears ;) )
Una aplicación web te va a servir, y bien. Si quieren mejorar la parte
visual, poné a uno de tus compañeros a leer sobre Django y Ajax, con
eso van a hacer interfaces con el usuario para que queden popí-cucú.
SQLite se banca bastante una aplicación pequeña, quizás como el
sistema que querés hacer. Te ahorrás configuración del motor, espacio
en disco, etc. Pero corrés el riesgo de que todo se almacena en un
sólo archivo, si se corrompe, a llorar al cementerio.
Tal como dijeron anteriormente, el uso de ORM te abstrae del motor, y
la sintaxis, de la bbdd.
Arranquen con SQLite3, armen todo lo posible, hagan un branch de
desarrollo sobre MySQL y empiecen a configurar para optimizar si es
necesario, pero mientras tanto tenés la aplicación andando.
Muchas gracias por el aporte Matias, me es de mucha utilidad tu opinion.
Como vos bien mencionaste, estoy analizando el usar un ORM (SQLAlchemy) para
abstraerme de lo que es SQL. La aplicacion la tenemos que sacar lo mas
pronto posible, ya para fines de Junio tiene que estar terminada asi que lo
malo es que no podemos ir probando cosas y viendo cuales son las que mas
convienen para nuestro caso especifico.

Saludos, Mariano.
Hernan Olivera
2009-04-15 04:28:00 UTC
Permalink
Post by Mariano Falcon
Post by Matigro
Está bien la elección del framework (aunque yo hubiera usado TurboGears ;) )
Una aplicación web te va a servir, y bien. Si quieren mejorar la parte
visual, poné a uno de tus compañeros a leer sobre Django y Ajax, con
eso van a hacer interfaces con el usuario para que queden popí-cucú.
SQLite se banca bastante una aplicación pequeña, quizás como el
sistema que querés hacer. Te ahorrás configuración del motor, espacio
en disco, etc. Pero corrés el riesgo de que todo se almacena en un
sólo archivo, si se corrompe, a llorar al cementerio.
Tal como dijeron anteriormente, el uso de ORM te abstrae del motor, y
la sintaxis, de la bbdd.
Arranquen con SQLite3, armen todo lo posible, hagan un branch de
desarrollo sobre MySQL y empiecen a configurar para optimizar si es
necesario, pero mientras tanto tenés la aplicación andando.
Muchas gracias por el aporte Matias, me es de mucha utilidad tu opinion.
Como vos bien mencionaste, estoy analizando el usar un ORM (SQLAlchemy) para
abstraerme de lo que es SQL. La aplicacion la tenemos que sacar lo mas
pronto posible, ya para fines de Junio tiene que estar terminada asi que lo
malo es que no podemos ir probando cosas y viendo cuales son las que mas
convienen para nuestro caso especifico.
Saludos, Mariano.
HOla Mariano

Lo estas pensando bien, aunque no este en la web si hay mas de un
usuario lo corres en la red local y está perfecto. Hoy en dia las
aplicaciones van para ese lado, y si tenes varios puestos de trabajo
simplifica mucho las cosas porque solo requiere que tengan un
navegador funcionando. No te conviene cambiar de ORM sino usar la
propia de Django, salvo que tengas alguna necesidad particular, si
usas SQLAlchemy perdes algunas funcionalidades (basicamente el admin,
que vas a adorar). Usar SQLite no te va a dar problemas, mysql te das
mas escalabilidad, pero para la aplicación que decís no creo que haga
falta, para aprender podes concentrarte en el desarrollo usando
sqlite, que no requiere nada y despues si te sobra tiempo poner a
andar las cosas con mysql o postgres y ver como justamente podes
cambiar sin problemas gracias a la orm. Y si, de una hay que usar
jscript en la interfase (por ejemplo para llenar campos asociados y
autocompletar), lo mas sencillo es usar jQuery y un poco de Ajax para
la funcionalidad y css para el diseño visual, pero es mas facil de lo
que parece. De paso si es para aprender instalate un trac y un svn
para el seguimiento del proyecto y el manejo de versiones, eso ayuda
muchisimo, y mas aun si no van a trabajar todo el tiempo en el mismo
lugar. Y si van a programar los tres, Django ayuda a separar
desarrollo en el diseño web (la interfase, con html, js y css) y la
aplicación misma.

y cualqueir cosa chiflá

saludos
--
Hernan Olivera
Matigro
2009-04-15 12:44:08 UTC
Permalink
Post by Mariano Falcon
Muchas gracias por el aporte Matias, me es de mucha utilidad tu opinion.
Como vos bien mencionaste, estoy analizando el usar un ORM (SQLAlchemy) para
abstraerme de lo que es SQL. La aplicacion la tenemos que sacar lo mas
pronto posible, ya para fines de Junio tiene que estar terminada asi que lo
malo es que no podemos ir probando cosas y viendo cuales son las que mas
convienen para nuestro caso especifico.
Si la aplicación tienen que prepararla y meterla al horno lo antes
posible, usá el ORM que provee Django que te va a ayudar enormemente,
es como las harinas que vienen con todo listo, le ponés agua, amazás y
listo.
A SQLAlchemy lo podés ir viendo en una rama paralela del desarrollo,
porque de esa forma Django te provee los utensilios, pero vos vas a
tener que buscar la receta y mezclar la harina, el agua, la sal, la
levadura, el azúcar.

Tal como dicen en otro email, el uso de subversion [1] + trac es una
herramienta superpoderosa, seas uno o miles de desarrolladores.

[1] Existen otras herramientas de control de versiones, en el
historial de la lista vas a encontrar opiniones diversas.
--
http://www.linkedin.com/in/matigro
Continue reading on narkive:
Loading...