#120 Sinceramente no sé qué será mejor si tener 20 peticiones con 20 UA diferentes desde la misma IP o con el mismo UA.
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.
Aqui una captura de mi Mongo con la data. so nice
#122 Por si tienes pensado hacer un logger para tu servicio python https://docs.python.org/3/library/logging.html
#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?
la data, la mongo. Madre mia que dolor de ojos.
Mirate CircleCI/TravisCI mejor que Jenkins, y ya de paso haces PRs
#125 Es terrible cuando la gente dice "la data" y no es la primera vez que lo escucho xD
#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
#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.
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.
#132 ¿La imagen la creas para windows en un sitio y Linux en otro? Si no, no tiene mucho sentido que mo funcione igual
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.
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
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.
#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.
#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?
#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.
#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.
#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
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
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...
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.
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?
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...
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.
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: