Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - peter_lyon

#1
Eso funciona, pero la forma más correcta de hacerlo, es modificando la salida standard a un fichero de tu elección, por ejemplo, pasado por argv[1]:


import sys
sys.stdout = open(sys.argv[1], 'w')



Y ya con eso, cada print irá a ese fichero, al final.
Si quieres que cada vez que se ejecute el script, el fichero  se borre, en vez de añadir líneas al final, simplemente abres con la opción "wb" en vez de con "w".

Espero que se haya entendido la idea.
#2
Django tiene un potente backend para manejar SQLite3 (así como cualquier otro SGBD habitual, MySQL, Oracle, PostgreSQL, mongodb...).

Siempre que necesito usar SQlite3, independientemente de que sea app web o no, uso Django.

El funcionamiento es muy simple, tú defines en un fichero unos modelos (clases con los campos que tenga cada cosa). Con un comando se generan solas las tablas y a partir de ahí, las consultas se hacen muy fácil sin escribir nada de SQL.

Además, Django por defecto ya trae soporte para usuarios, por lo tanto, nada más generar un nuevo proyecto, vas a tener tablas de usuarios, grupos y permisos.

Aquí tienes algo de documentación en castellano, aunque la oficial es más completa, pero está en inglés.
http://pythoniza.me/guia-definitiva-django-1-8-en-espanol/
#3
Scripting / Re: [Python] ABM archivo de texto
7 Julio 2016, 14:21 PM
Es muy simple, tú por un lado vas a tener en memoria, tu diccionario de bancos(  banks = {} )

Cuando arranques la app cargas este diccionario del JSON, si es que este existe y tiene contenido, sino, banks = {}.

Cada vez que se altera tu diccionario en memoria, vuelves a volcarlo a JSON con la función que te dejé (save_to_file), que borra lo que hubiera antes en el fichero y lo actualiza con los nuevos contenidos.

De esta forma, si cada vez que alteres tu lista en memoria, haces un volcado nuevo a JSON con la función save_to_file, te olvidas del trabajo de estar buscando registros por el fichero y demás complicaciones.
Te dejo las 3 funciones que me pides, están escritas sobre la marcha, no las he probado pero supongo que si hay algún fallo será alguna tontería de sintaxis y sabrás arreglarlo.

Para añadir banco:

def add_banck(id, descipt):
 if id in banks:  return False # Ya existe, devolvemos false
 else:
   banks[id] = descript
   save_to_file("banks.json")
   return True # operacion completada con exito

para eliminar un banco:

def del_bank(id):
 if "id" in banks:
   del banks[id]
    save_to_file("banks.json")
   return True
 else: return False # No existe, no se puede borrar


para editar un banco:

def change_bank_descript(id, new_descript):
 if id in banks:
   banks[id].descript = new_descript
    save_to_file("banks.json")
   return True
 else:
   return False # no existe


 
#4
Scripting / Re: [Python] ABM archivo de texto
6 Julio 2016, 23:36 PM
No os preocupéis, ahora mismo ando terminando un proyecto (es un programa python por cierto...), pero en unos días comienzo mis vacaciones.

Os haré un pequeño tutorial para hacer una aplicación con esas funcionalidades pero de forma profesional, con bases de datos, interfaz web con diseño responsive, diseño elegante, etc.

Las apps con interfaz de consola, están bien para aprender, pero nadie va a abrir un terminal para ejecutar una aplicación de este tipo.

#5
Scripting / Re: [Python] ABM archivo de texto
6 Julio 2016, 00:19 AM
Madre mía qué locura de código jajajaja

No entiendo como vuestros profesores os meten problemas tan grandes sin enseñaros primero cosas como un diccionario...

Parece que esto es igual en todos los sitios, enseñar poquito y mandar tareas muy complejas para que el alumno tarde muchas horas en hacer los trabajos...

Por lo que has subido a Github, veo que has avanzado mucho con el problema.
Un consejo, ya que no estás usando clases y usas contenedores genéricos de python como listas y diccionarios, puedes usar algún formato estándar como JSON o XML, para guardar los datos de una forma más simple, con esto hubieras ahorrado un buen rato de trabajo:


import json


def load_file(filename):
   with open(filename) as b:
       banks = json.load(b)

   
def save_to_file(filename):
   with open(filename, "wb") as b:
      json.dump(banks, b)




Por cierto, si algún día estás interesado en hacer este mismo "reto" pero de forma profesional, puedo enseñarte como hacerlo, verás que es mucho más fácil que como tú lo haces, pero hay que conocer las herramientas adecuadas.

MOD EDIT: No hacer doble post.
#6
Siendo así, programa esa función en JS, dentro de una web. Súbela a un hosting gratuito (o dámela y la subo yo a uno de mis servidores) y estará online para todo el que quiera utilizarla.
#7
Scripting / Re: [Python] ABM archivo de texto
4 Julio 2016, 02:51 AM
Hola, nos cuentas pocas cosas como para tener un conocimiento total del problema. Te indico cosas que veo:

Python es un lenguaje que permite programar de mil formas diferentes. El código que veo, me recuerda mucho a Java y la obsesión con hacer programación orientada a objetos pura, lo cual solo sirve para complicar el código y hacer los programas más grandes y aburridos.

Luego, veo que estás usando como estructura de datos para los bancos una lista: banks = [].
No se si conoces ya los diccionarios. Un diccionario permite almacenar datos mediante una clave, en vez de tenerlos todos en una lista "lineal".

El símbolo para declarar un diccionario vacío es: {}
Ejemplo:

self.banks = {}

De esta forma, como supongo que los "id" de los bancos serán únicos, puedes usar la propia "id" de un banco para obtenerlo, en vez de recorrer toda la lista hasta encontrarlo (método search).

Ejemplo:

def search(self, id):
  if id in self.banks:  return self.banks[id] # si existe lo devuelvo
  else: return None  # devuelvo None porque no existe


Te recomiendo que la función save, genere un archivo nuevo, borrando todo lo que hubiera con anterioridad. Es decir, volcando una copia de banks al archivo. Todo será mucho más simple.

No se si tienes restricciones a la hora de usar unas determinadas cosas, no se si te han dado ya un diseño de como tienes que hacerlo y te han quitado la libertad de hacerlo como tú quieras.

Dinos hasta dónde eres libre para hacerlo como tú quieres, y si tienes libertad entonces te haré un programa bien hecho, con la mitad de líneas o menos que funciona muy bien y es mucho más simple de entender y programar, que es la filosofía de python.
El diseño que tú has seguido es una Programación Orienta a Objetos clásica, muy noventera, pero estamos en 2015, eso ya no está de moda ;D


#8
Como te dice tincopasan, python te vale perfectamente para hacer una app móvil, de hecho vale para casi todo y es un lenguaje que debes saber sí o sí, si te gusta la informática.

Pero eso es distinto a hacer la APP. Puedes hacerla en python, pero te recomiendo que aprendas algo más productivo, en cuanto a que puedas hacer una APP de calidad en poco tiempo.

Sobre las sueldos, no es una cuestión de ofertas de trabajo. En la mayoría de empresas te van a ofrecer sueldos mucho más bajos que los 2400€ que te comentaba, por la sencilla razón de que siempre hay gente que trabajo por menos.
Pero el mundo de la informática es un mundo liberal, como el de los abogados. Un abogado puede trabajar para un bufete de abogados por un sueldo, o puede buscarse él mismo sus clientes. Pues en la informática igual.

Existen mercados online para freelance como: nubelo, infojobs-freelance, elance, freelancer...
Ahí se anuncian proyectos, mandas tu oferta, y si al cliente le interesa le haces el trabajo. Al principio cuesta mucho sacar proyectos, ya que al no tener trabajos para demostrar tu experiencia, los clientes suelen desconfiar. Por eso está bien contactar con otros freelances con buena reputación y que ante un exceso de trabajo puedan cederte parte de sus proyectos, o que participes en ellos, con lo que ganarás experiencia y podrás ir creando un portfolio (un listado de proyectos en los que has trabajado).
Al principio debes cobrar algo menos, pero conforme vayas teniendo un portfolio más grande, tus clientes empezarán a tener  una buena imagen de ti, y podrás ir aumentando tus precios.

Para que te hagas una idea, una App móvil sencilla, que puedes hacer en 3 semanas echando 3-5 horas al día, se puede pagar fácilmente por 4000-6000€, a los que tendrás que restarle impuestos, pero te quedaran aún 3.000-4.000€.

Lo bueno es que estos trabajos de freelances, puedes ir cogiéndolos cuando tengas tiempo, y compaginarlos con estudios, lo cual te aporta nuevos conocimientos y un interesante ingreso de dinero.

Toda la información que necesitas está en internet. Problema? Que la mayor parte está en inglés, tendrás que ir aprendiendo poco a poco, es el lenguaje estándar para todo en este mundo. No obstante, el traductor de google ha mejorado mucho, y hoy en día puedes traducir automáticamente las webs con chrome con unos resultados muy buenos.

Cualquier duda de programación, en StackOverflow (un foro de desarrolladores) te la resolverán en un rato. Ya hay versión en Español, no tanto contenido como en la original, pero hay muchos hispanohablantes resolviendo dudas en español.

Si usas solo tecnologías libres, ten por seguro que siempre habrá alguna comunidad que te ayudará con cualquier duda o problema que tengas, en foros, listas de correo y chats IRC.

Si tienes ya algo hecho en python y quieres puedes pasármelo, le echo un vistazo y te digo si es fácil de convertir en App móvil.
También puedes hacer la aplicación en una aplicación web, así cualquier móvil con conexión a internet podrá acceder a una URL y usar la aplicación sin tener que descargarla e instalarla. También te ahorras todo el proceso de darla de alta en el market (Play).

Y en el mundo de la web, python sí que tiene un potencial increible, pero igualmente deberás usar JS para el frontend (parte que se ejecuta en el navegador).

Así que como consejo final te digo, que aprendas JS y que aprendas Python, ambos son libres, con unas comunidades muy potentes y con los que puedes hacer prácticamente todo.
#9
Soy programador (python, JS, C++) profesional y no uso python para hacer apps móvil.

Si eres nuevo en programación y buscas un lenguaje polivalente, rápido, sencillo y que sirva para hacer apps móvil entre otras cosas, mírate JS.

Con una base de JS podrás hacer app móviles con apache Cordova, usando frameworks como IONIC.

Te dejo un vídeo para que veas como va el asunto, y si te gusta adelante con ello, sin duda alguna es una herramienta potentísima y si sabes manejarla bien, no te faltará trabajo. Te hablo de 2400€ al mes en adelante.

https://www.youtube.com/watch?v=5BTKbwRJ-b0&index=2&list=PLYPjmy5IVxT-7FV0uzpG2izFhGoE0Hq2y
#10
Está más que demostrado que los bugs se arreglan antes en sistemas libres que en privativos, por mucho que pagues, nadie te garantiza que detectado un bus se arregle en 24h...

¿que el software libre está sobrevalorado?

Bueno Google trabaja prácticamente todo con tecnologías libres, conozco a 2 trabajadores de Google. La mayoría de servidores del mundo son Linux. Android es libre, y está construido sobre linux. Facebook, instagram, pinterest, ebay, paypal... todos usan tecnologías libres, salvo facebook (php-hhvm) los demás usan python.

En el mundo del big data, minería, análisis y visualización de datas; sector que mueve la mayoría de dinero del sector; desde hace ya unos años domina el software libre, con tecnologías como Knime, weka, spark o hadoop, y lenguajes como R o Python.

Nosotros la verdad, no vemos qué rentabilidad tiene hacer programas de escritorio para windows, llevo años en el sector y jamás he visto en mercado un proyecto de este tipo.
Hacer una aplicación de gestión para windows de escritorio hoy en día es un retraso, ya que solo funcionará ahí. Si la haces web, funcionará en cualquier dispositivo con navegador.

En la industria (sector que más trabajamos), todo el control se programa con lenguajes libres y sobre servidores linux. Con la entrada de las free-boards como raspberry, hay un amplio abanico de posibilidades, todas libres, no hay Windows para CPUs ARM.

Sí que vemos muchos proyectos con C#, es un sector que trabajan las grandes consultoras con salarios estándar y en las que las condiciones de trabajo no son muy agradables.

Que hayamos elegido trabajar con tecnologías libres es una decisión puramente económica, se consiguen mejores soluciones en menor tiempo y por lo tanto se puede ganar bastante más la hora con estas tecnologías que con Java/C#, que ha derivado en toda una industria clásica de software con métodos muy antiguos y que son poco competitivas.

Para tecnologías móviles, nosotros estamos usando IONIC, un framework muy completo, aunque con una curva de aprendizaje un poco durilla al principio. Últimamente están saliendo vídeos y documentación muy interesante que facilita más el aprendizaje, pero aún así, para gente nueva en el mundo de la programación es casi imposible usar esta tecnología sin aprender primero una base técnica de programación.