Diario de una aplicación móvil de horóscopo (Python + React + NoSQL)

isvidal

Que belleza de código

Un poco más bonito, una capita encima del pesado del AsyncStorage para no tener que estar parseando strings

1 respuesta
isvidal

Día 11

React Native

Hoy he perfilado aún más todas las pantallas (Animaciones para pasar de carga del contenido al contenido, mañana las enseño) y ya me he metido de lleno con la sesion local de usuario, calculo del zodiaco, fechas etc.. Mañana seguiré iterando sobre las pantallas y creo que si puedo meter 3-4 horas lo tendre ya casi listo para empezar con Python la semana que viene.

Decir que odio la gestión de fechas de JS vanilla.

Un buen commit:

https://github.com/jvidalv/react-native-daily-horoscope/commit/e7d0257bdffb6e23c46c4acee5803da344c503cd

HeXaN

#61 Pero cabrón... ¿Qué clase de código es ese?

3 1 respuesta
isvidal

#63 Me lo copie del internet, toda la pereza programar a mano el sacar el zodiaco dado una fecha, y oye, funciona y funciona bien, y el código se entiende perfectamente, que más quieres en esta vida 🤷‍♀️

Podría hacer algo más elaborado y chachi, crear un array de objetos con sus respectivos números y luego iterar....pero a caballo regalado...

2
Wei-Yu

entre que piensas y no una alternativa ya llevas un rato a otra cosa y además es algo que no va a cambiar nunca ni va a dar problemas porque es más estático que el favicon

1 1 respuesta
Soumynon

#65 https://trome.pe/horoscopo/ofiuco-signo-13-zodiaco-confirmado-nasa-24294/

:P

isvidal

Día 12

React Native

Hoy he terminado ya la fase ALPHA de todas las pantallas de la aplicación, con sus handlers, lógica dummy implementada y multiidioma, a falta de pulir cosas que vayan saliendo la voy a aparcar hasta nuevo aviso y me pondré a cuchillo con Python.

Me gustaria mucho que alguno lo probara y me diera feedback y subiera captura de pantalla aqui para darle vidilla, probarla es muuuuuy fácil, solo teneis que instalaros una aplicación que se llama Expo y luego abrir este enlace (funcona en iOS y Android) y scanear el QR que hay:
https://expo.io/@vidalv/astral-daily-horoscope-2020

Tened en cuenta que cuando se ejecuta así no se está ejecutando aún de forma Nativa, sino sobre la aplicación de Expo, ergo, pierdes performance etc...

Os dejo unas cuantas capturas de pantalla:

En otro orden de cosas, cada dia me gusta menos el logo, creo que antes de la salida a PROD lo voy a cambiar.

Commit, creo que he hecho récord de ficheros tocados:

https://github.com/jvidalv/react-native-daily-horoscope/commit/de43849a1e5e0b5f53a3886ecfcadc37f028072f

Jenkins

Voy a empezar a montar un Jenkins en mi docker que tengo en DO para poder lanzar el scraper de Python de forma recurrente cada dia, o recomiendas otra forma @HeXaN ?

Python

Mañana empezaré a darle, el objetivo es primero, definir el modelo de los datos que voy a guardar, no estoy seguro aún de cómo voy a estructurarlos.

Firebase

Mañana tambien espero montar la Realtime BD para ir trasteando.

PD: Ya son 20 favoritos!!
PD2: Bonus track, mi perro con una hoja en la cabeza esta mañana. haciendome compañia mientras yo trabajaba en la viña

2 respuestas
Kaledros

#67 Lo del Jenkins me interesa. Había pensado usar CircleCI para la mía pero cualquier información es bienvenida.

1 respuesta
HeXaN

#67 Esa forma está chachi.

1 respuesta
isvidal

Ya tengo Jenkins funcionando:

Al final no voy a utilizar Firebase ni Google ni mierdas, voy a instalar una MongoDB en mi docker y tirar de ahí.

#68 #69 Animaros a probar la app que son 2 minutos!!!

1
isvidal

Ya tengo el Mongo montado con autenticación y todo en el docker.

Mañana empiezo con dos cosas muy bellas que no he tocado en mi vida julio, Python y Mongo

Y desde aquí os vuelvo a animar a darle una pruebita a la app que son 2 minutos y me dais feedback, instalar la aplicación de Expo en vuestro móvil y abrir este enlace, y ya:

https://expo.io/@vidalv/astral-daily-horoscope-2020

1 respuesta
HeXaN

#71 Mañana la pruebo.

kikonazoo

Yo tengo unas cuantas preguntas como buen novato, sobretodo de temas de plataforma y diseño:

  • Entiendo que montas la DB para almacenar los datos del scraping diario, pero no vas a almacenar ningún tipo de datos de los usuarios, ¿verdad? ¿Esa info queda en local en el dispositivo?

  • En caso de almacenar datos de usuarios, ¿te metes ya en historias de GDPR y demás?

  • ¿Has creado tu todos los elementos gráficos de la app? Iconos de cada signo, etc.

1 respuesta
isvidal

#73

  1. Del usuario almacenare el token del dispositivo para poder mandarle notificaciones push , pero efectivamente, toda la data de nombre, sexo etc... lo guardo en el dispositivo local, si borran la app se borra.
  2. Como no almaceno nada que pueda identificarlos no necesito molestarme con GDPR.
  3. No, los svgs los he sacado todos de flaticon.com y utilizo una libreria de componentes para maquetar que se llama react-paper, y encima de ella itero y extiendo los componentes para mis necesidades. Y los iconos son de materialdesignicons.com .
1
isvidal

Día 13

React Native

He estilizado algo el código mientras estaba aburrido en una reunión del curro.

MongoDB

Hoy he invertido el tiempo aprendiendo todo lo básico y su funcionamiento fundamental, me he enamorado, no creo que vuelva a usar sql para mis side projects, demasiada flexibilidad.

Le he dado vueltas al modelo de datos y cómo voy a almacenar la data, mañana lo pongo aqui para que me deis vuestra opinión

2 respuestas
HeXaN
#75isvidal:

me he enamorado, no creo que vuelva a usar sql para mis side projects, demasiada flexibilidad.

No caigas en este error. Que te deje hacer lo que te de la gana no es sinónimo de que sea la mejor opción. Muchas veces una base relacional es la mejor de las soluciones.

1 respuesta
Kaledros

#75 Lo que dice el pato. Mongo mola si no necesitas integridad referencial y sólo quieres un registro, que entonces todo son ventajas. En el momento en que necesites cualquier cosa relacional es un dolor usar Mongo, mucho mejor sql que se inventó para eso.

1 respuesta
isvidal

#76 #77 No lo dudo, pero ya hago el cupo de SQL y MySQL en el curro, no voy a aprender nada por mi cuenta que no vaya a aprender en una empresa con 20 años de puro SQL, decenas de bases de datos y centenares de tablas, procedures, vistas repartidos en todo tipo de entornos.

No hay nada más saludable un lunes por la mañana que un buen café y una rica openquery con outer apply de SQLServer a MySQL ☕

Y con la dimensión que van a tener mis proyectos, máx 1-2 meses, la inversión de tiempo para tener algo rulando es menor, y la flexibilidad para hacer cambios on the fly también, echo la vista atrás y me doy cuenta que todos los proyectos que tengo por mi lado, mi blog, mi anterior app etc... En todos mongo era como anillo al dedo.

1 1 respuesta
Kaledros

#78 Sí, por eso estoy usando yo también Mongo en la mía, porque aparte de que SQL es un engorro para algo que es básicamente un registro de entradas prefiero pegarme con una tecnología que he usado poco y me puede aportar más. SQL lo llevo usando diez años.

isvidal

¿Qué os parece el modelo de datos?

Lo he hecho bastante sencillo, supongo que se entiende.

Creía que sería más rebuscado pero una vez me he puesto a revisar, es algo bastante sencillo, no creo que me de mucho trabajo python, lo que me va a dar por culo es querer hacerlo en inglés y español

Maaarc

Enhorabuena por el trabajo y sobretodo por la constancia, tanto por trabajar en tu proyecto como mantener actualizado el hilo. Muy interesante ver como lo vas evolucionando. Yo soy incapaz de desarrollar nada con UI/UX potable y usable, así que en la vida atraería usuarios.

Sigue así!

1 respuesta
isvidal

Soy super organizado y me gusta todo tenerlo en carpetitas, pero después de 30 minutos de estudiar como importar ficheros en Python veo que necesitas un master y un doctorado... y estoy por meterlo todo en el root y ha cagar, que total es la cadena de conexión y una clase para abstraer un poco la conexión a mongo.

me cago en la leche merche, que tengo toc, porque me haceis esto.

O es que estoy espeso a las 10 de la noche, si es asi, y alguien me hace un resumen rapido o explicación que entienda en Python 3.8, mi toc os lo agradecera.

#81 Al final es como todo, es meterse, darle horas y ya vas pillando por donde van los tiros, nadie nace aprendido, eso si, horas.

1 respuesta
HeXaN

#82 ¿Qué problema te está dando lo de "importar ficheros".

3 respuestas
isvidal

#83 ahora te paso una foto de mi estructura de carpetas y lo que quiero conseguir

isvidal

#83

Es fácil, quiero importar a la clase src/utils/Mongo.py el string que guardo en src/keys/db_mongo.py, y luego Mongo.py importarlo al /index.py que es donde estara todo mi proceso de scraping diario.

Por cierto, como le llamariais vosotros al entry point, le he puesto index por costumbre.

1 respuesta
Zoko

Una alternativa es llamarlo "main"

1 1 respuesta
Kaledros

#86 Qué dices, a quién se le ocurre. Eso no tiene futuro.

Unrack

#85 https://www.python.org/dev/peps/pep-0008/#imports

Si quieres importar al index.py la clase de src/utils/Mogno.py

import src.utils.mongo
1 respuesta
isvidal

#88 Y si quiero importar de en mongo py un fichero en otra carpeta del mismo nivel?

Es decir como importo src/keys/mongo_db.py a src/utils/Mongo.py ?

1 respuesta
Unrack

#89

import mongo_db

Puedes jugar con alias de los import o importar solo clases o funciones que necesites (algo típico para uso de alguna cosa concreta de alguna librería).

Cuando tienes que entrar en paths largos y complejos se puede tirar de relative imports

1 respuesta