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

HeXaN

#120 Sinceramente no sé qué será mejor si tener 20 peticiones con 20 UA diferentes desde la misma IP o con el mismo UA.

isvidal

Día 18.1

Python

Ya tengo toda la data, he hecho alguna guarrada en el main_stale.py por una excepción que me tiraba a veces la página, y para probar como funciona el try catch en Python.

Aunque realmente sería mejor hacer un while data[x] is not set o algo así.

Tambien tengo ya la data insertada en la Mongo, así que hoy ya en volver del campo me pongo con Jenkins, que lo uso en el curro pero no he montado uno de 0 en la vida.

Commit

Aqui una captura de mi Mongo con la data. so nice

2 respuestas
Unrack

#122 Por si tienes pensado hacer un logger para tu servicio python https://docs.python.org/3/library/logging.html

1 respuesta
Kaledros

#122 Oye, ¿cuando envías el primer insert al mongo te crea un proceso que llama a la base de datos cada veinte segundos, por casualidad?

1 respuesta
JuAn4k4

la data, la mongo. Madre mia que dolor de ojos.

Mirate CircleCI/TravisCI mejor que Jenkins, y ya de paso haces PRs

2 respuestas
HeXaN

#125 Es terrible cuando la gente dice "la data" y no es la primera vez que lo escucho xD

2 1 respuesta
isvidal

#123 Lo apunto en el trello para implementarlo a un nivel basico.

#124 Lo llamo solo una vez al final de la ejecución así que no puedo decirte.

#126 #125 Que os pasa que os apuñalo

A ver si me podeis ayudar, estoy haciendo el Jenkins y ya tengo montado todo para que cuando haga commit en master se me lo lleve y haga deploy, pero me falta que, despues de llevarselo, monte todo el tema del venv y ejecute el pip install con el lo que tengo en req.txt.

No se si teneis algun video, tutorial pasito a pasito y tal.

#125 Voy a utilizar Jenkins que es lo que uso en el curro, y si no estoy loco, la mayoría de ofertas de trabajo hablan de Jenkins. Si ya supiera de Jenkins probaria esas que dices, pero prefiero mejorarlo un poco.

ITS WORKING BITCHEEEEEEEEEESSSSSSSS

1 respuesta
JuAn4k4

#127 Puedes meterle Docker a tu repo, hacer la build en docker, y que Jenkins simplente tire el comando de build.sh (en tu repo) con parámetros de branch/buildnum/etc y que build.sh te cree las docker images y las pushee a dockerhub. (puedes tener 1 imagen privada)

Con CircleCI/TravisCI se hace en dos patadas, yo lo tengo hecho en ambas en dos repos diferentes.

Yo creo que lo ideal es hacer build de las PRs y te las marque como OK/KO para bloquearlas. y no romper develop. Que haga también rebuild en pushes, para actualizar el estado.
Builds en develop/master (si haces gitflow en el futuro)
Y que todo eso te genere imágenes de Docker en algun repo como DockerHub.

Y luego meter CD, tras la build en master.

1 respuesta
isvidal

Día 18.2

Jenkins & Docker

Bueno, hoy lo he pasado mal, uso Docker y Jenkins, pero mantenimiento, nunca montado de 0 por mi, y me doy cuenta de lo cojo que estoy cuando tengo que hacerlo todo.

He sufrido mucho esta tarde, primero con docker, y luego con un error con Selenium y los drivers de chrome dentro de la docker, que me han llevado a la desesperación. Pero ya lo tengo up and running.

Python

Hoy he hecho como 20 commits de todas las pruebas que he ido haciendo en el Dockerfile, cambios de código para Selenium con los drivers de Chrome etc... etc... etc...

https://github.com/jvidalv/python-horoscope-scraper/commits/master

#128 Al final son, logicamente, dos procesos, uno empalmado a Github que buildea cuando hago un commit a master, y construye un docker con mi versión de python para probar todos los packages, y luego otro que se tira cada dia que monta un docker y ejecuta el main.py.

1 respuesta
JuAn4k4

#129 ¿No lo pruebas en local antes de hacer el commit? :\

2 respuestas
HeXaN

#130 Siempre hay que programar sobre producción.

1
isvidal

#130 En local funcionaba 🤷‍♀️

1 respuesta
JuAn4k4

#132 ¿La imagen la creas para windows en un sitio y Linux en otro? Si no, no tiene mucho sentido que mo funcione igual

1 respuesta
isvidal

Día 19

Día productivo hoy, como ha llovido me he podido pasar todo el dia programando sin sentirme mal conmigo mismo.

React Native

He iterado todo el diseño de la app de nuevo, su navegación, elementos, pantallas, he añadido transiciones, fondos, cambiado colores, logos, signos del zodiaco... lo he tocado todo, y lo que me queda aún. Aquí os dejo una previa, WIP:

Dos magníficos commits:

Commit mañana
Commit tarde (8000 additions jajaja)

Dejo aquí el Trello por si quereis criticar como lo monto jajaja:

https://trello.com/b/MnAUighY/horoscope

Mongo, Python, Jenkins, Docker

Estoy feliz de tener eso acotado y montado, es lo que más me preocupaba (A nivel de pozo de tiempo) pues no tenia ni puta idea y partía de cuasi 0.

Teniendo ya montado voy a hacer un focus tremendo a la aplicación y espero, a finales de semana ya tener la aplicación limpia y preparada para empezar a tener data no-dummy.

Comentarios

#133 La verdad es que durante muchos commits no sabia ni donde estaba el error, jenkins, el docker del SO, el docker del script, al final si que ya lo hubiera podido tirar en local, pero como tenía el hook para los commits y la consola abierta, casi me costaba lo mismo probarlo en local que arriba.

1
HeXaN

Muy chulo.

1
Zoko

Tienes muy buen gusto a la hora de diseñar la interfaz la verdad, me gusta bastante.

Kaledros

En esos commits me maté yo, pero ya me gustaría a mí que mi interfaz tuviera tan buena pinta...

1 respuesta
Wei-Yu

Con respecto al diseño igual te interesa mirar un poco el tema de accesibilidad. No controlo mucho, pero a priori hay algunas cosas que no tienen mucho contraste (en especial el texto gris sobre un logo gris) y quizás el tamaño de la fuente sea algo pequeño para alguna persona.

pero muy guay, me mola mucho el tema oscuro

1 respuesta
Zoko

Sí, lo de los commits es algo que podías revisar JAJ , te recomiendo esta lectura: https://www.conventionalcommits.org/en/v1.0.0/#summary

Yo creo que es un buen estandar y a mi me ha hecho mejorar mucho.

2 2 respuestas
isvidal

#137 Al final es iterar, iterar, iterar, me he bajado 20 aplicaciones de Horóscopos y me voy quedando con lo que más me gusta de cada una, adaptandolo a mi gusto, no hace falta reinventar la rueda (Ni puedes hacerlo cuando eres 1 persona).

#138 ¿Donde hay texto gris sobre un logo gris? Te lo juro que no lo veo. Sobre accesibilidad me miraré si tengo que hacer algo yo, o si el usuario tiene configurado letras grandes ya lo escala automáticamente. Lo apunto en el trello.

#139 No os engañaré, me da toda la pereza jajaja Pero lo meteré en la documentación y a ver si le puedo echar un ojo.

1 respuesta
desu

#139 Esta guapo, lo voy a adoptar.

A mi gustaría aprender un poquito de React y voy a mirarme tu codebase. Le eche un ojo y se ve muy clean. Usas alguna "arqutectura" o estandard de organizacion que deba googlear para entender el código? Me interesa para web y lo tuyo es native, importa?

1 respuesta
Wei-Yu

#140 en el segundo 8 donde se muestran los signos del zodiaco. Es muy poca cosa, pero a la hora de hacer paletas son cosas que a veces se quieren tener en mente. Si buscas por inet seguro que encuentras unas guidelines básicas de accesibilidad, yo ya te digo que tampoco controlo mucho y es por dar algo de feedback en algo que no se suela mencionar.

isvidal

#141 React es muy fácil de seguir, todo es declarativo, empieza por el App.js (En este caso App.tsx) y veras que este tiene como hijo un <Main/>. Te vas arriba a los imports y veras import Main from "./src/Main";. Y allí vas haciendo lo mismo, absolutamente todo lo que uso, navegación incluso, es declarativo, así que si vas siguiendo de esta forma llegarás a todas las pantallas de la aplicación, no tiene pérdida.

No se si alguna vez has visto React, pero si lo viste con clases yo ya no las uso, ahora esto va de hooks, todo son "funciones funcionales" que contienen su propio estado y re-renderizan en función de la modificación de estos con los hooks (useState ...).

Como buena librería que es no hay ninguna estructura de carpetas y ficheros. Pero si te sirve de algo siempre suelo usar estas como mínimo

  • components (Aquí voy creando subcarpetas si es requerido)
  • hooks
  • screens / views (En native screens, en web views o pages)
  • navigators
  • constants
  • utils

No empieces por Native si quieres aprender, la estructura es exactamente la misma, de variar, solo varia que en React maquetas con CSS y aquí con StyleSheet, pero tiene un poco más de complejidad el desarrollo, montar emuladores etc... etc... En react solo es hacer npm create-react-app y ya vas volando.

1 1 respuesta
Kaledros
#143isvidal:

En react solo es hacer npm create-react-app y ya vas volando.

Y te crea una carpeta con 28.000 ficheros. Y no es una exageración XD

isvidal

Día 20

React Native

He empezado a rehacer todo el flujo inicial, me he quedado en la pantalla del escáner de la palma de la mano, que lo reharé para que funcione sobre la toma de una foto en lugar de funcionar en vivo.

Commit de los que os gusta

Commit

Python

Ya tiene logo el repo:

Y he decidido que lo haré más génerico y lo usare para todos mis futuros scrapeos de aplicaciones futuras, asi que le cambiare el nombre de la repo, pondre todos los scripts del horoscope dentro de una subcarpeta etc...

1
isvidal

Día 21

He editado el post sin querer juejuejue

1
isvidal

Día 22

Me he levantado con cara de linxuero así que me he puesto a montar el vagrant para mi entorno de desarrollo del back en dev con PHP 7.4, nginx blablablabla

En otro orden de cosas he creado un repo privado en Github donde voy a almacenar todos los ficheros privados de mis repos públicos, con la misma estructura con la que estan en la aplicación original, porque sino, ya me veo que el dia que cambie de PC esto sera un despelote.

isvidal

Día 23

React Native

Sigo avanzando, al final he quitado todo lo del scanner palmar, creo que no conseguía llegar a las cotas de calidad que me auto exijo, así que de gastare los esfuerzos en otros apartados, como en mejorar mucho mis skills con las animaciones para un par de cosas que quiero hacer.

Mañana espero hacer la pantalla nueva de Astrologos y de Aprende, que sera como una wiki de cosas relacionadas con este mundillo. Me falta una 5 pestaña que de momento no tengo muy claro que puedo poner, temas de lunas? De cortes de pelo?

Commit

Backend

Como dije, voy a ir a buscar la data a un back con PHP + Yii2, este finde espero tenerlo montado y funcional ya, ayer me estuve peleando con la vagrant y al final tiré por el Homestead de laravel que va fino filipino y es ubuntu como mi máquina en Digital Ocean asi que...

isvidal

Día 24

React Native

Hoy he adelantado mucho todo el tema de astrólogos, me falta terminar de maquetar la vista de enviar preguntas, y rematar detalles de ambas, mañana espero tener esto terminada y la pantalla de aprender más también.

Luego empezaré a implementar toda la publicidad (AdMob), ahora ya voy dejando detalles pero me pondre en serio, api todo etc...

Luego iterare otra vez todas las pantallas para dejarlas lo más limpio posible y preparar todos los handlers y fetchs para la data y para las interacciones de usuario.

Commit

1
isvidal

Estoy trabajando en la vista de "Learn" aka guías sobre el mundillo escondidas detrás de un anuncio de admob, y llevaba dias detras del efecto de esconder un elemento de la cabecera del scroll al hacer scroll down del mismo, y hoy porfin he tenido un resultado satisfactorio, so fucking proud, ahora iterar y pulir y añadir funcionalidades extra:

Aquí el componente que hace de wrapper para esta mierda:

3 1 respuesta