From 48ffd10e81508b7962894f7698efda97ad8389b9 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 19 Sep 2023 17:19:11 -0300 Subject: [PATCH] Update from obsidian - thinkpad Affected files: games/anonymous-code.md games/mario-and-luigi-superstar-saga-plus-bowsers-minions.md games/mario-luigi-bowser-s-inside-story.md games/mario-luigi-partners-in-time.md games/the-typing-of-the-dead-overkill.md notes/utils/Crear una nueva funcionalidad.md projects/todos-notes/Rewrite neovim config.md projects/todos.md --- games/anonymous-code.md | 28 ++++ ...igi-superstar-saga-plus-bowsers-minions.md | 32 +++++ games/mario-luigi-bowser-s-inside-story.md | 25 ++++ games/mario-luigi-partners-in-time.md | 27 ++++ games/the-typing-of-the-dead-overkill.md | 25 ++++ notes/utils/Crear una nueva funcionalidad.md | 124 ++++++++++++++++++ projects/todos-notes/Rewrite neovim config.md | 1 + projects/todos.md | 2 + 8 files changed, 264 insertions(+) create mode 100644 games/anonymous-code.md create mode 100644 games/mario-and-luigi-superstar-saga-plus-bowsers-minions.md create mode 100644 games/mario-luigi-bowser-s-inside-story.md create mode 100644 games/mario-luigi-partners-in-time.md create mode 100644 games/the-typing-of-the-dead-overkill.md create mode 100644 notes/utils/Crear una nueva funcionalidad.md diff --git a/games/anonymous-code.md b/games/anonymous-code.md new file mode 100644 index 0000000..8c42cfc --- /dev/null +++ b/games/anonymous-code.md @@ -0,0 +1,28 @@ +--- +alias: Anonymous;Code +developers: +- 5pb. +- Chiyomaru Studio +- MAGES. +- Numskull Games +- Spike ChunSoft +franchises: +- Science Adventure +genres: +- Adventure +- Visual Novel +registered_hours: 0 +release: '2022-07-27' +status: Backlog +times_played: 0 +title: Anonymous;Code +url: https://www.igdb.com/games/anonymous-code +--- + +# Anonymous;Code + +## Brief + +> This is the latest work by Steins;Gate creator Chiyomaru Shikura, in collaboration with returning staff from the Science Adventure Series. + +## Thoughts diff --git a/games/mario-and-luigi-superstar-saga-plus-bowsers-minions.md b/games/mario-and-luigi-superstar-saga-plus-bowsers-minions.md new file mode 100644 index 0000000..369b916 --- /dev/null +++ b/games/mario-and-luigi-superstar-saga-plus-bowsers-minions.md @@ -0,0 +1,32 @@ +--- +alias: 'Mario & Luigi: Superstar Saga + Bowser''s Minions' +developers: +- AlphaDream +- Nintendo +- Nintendo of America +- Nintendo of Europe +franchises: +- Mario +genres: +- Platform +- Role-playing (RPG) +- Adventure +registered_hours: 0 +release: '2017-10-04' +status: Backlog +times_played: 0 +title: 'Mario & Luigi: Superstar Saga + Bowser''s Minions' +url: https://www.igdb.com/games/mario-and-luigi-superstar-saga-plus-bowsers-minions +--- + +# Mario & Luigi: Superstar Saga + Bowser's Minions + +## Brief + +> "The game that launched the Mario & Luigi series returns looking better than ever before. + +In this renewed classic, Mario and Luigi journey to the Beanbean Kingdom with Bowser to restore Princess Peach’s voice. Control Mario and Luigi simultaneously, making use of their unique Bros. Moves to solve puzzles and emerge victorious in action-packed battles. Pay heed to the enemy’s patterns and time your reactions right to land satisfying counterblows. + +Included in this remake is the Minion Quest: The Search for Bowser mode, which tells the story of the game from the perspective of Bowser’s minions. Recruit characters to grow your own Minion army as you fight to locate your missing leader!" + +## Thoughts diff --git a/games/mario-luigi-bowser-s-inside-story.md b/games/mario-luigi-bowser-s-inside-story.md new file mode 100644 index 0000000..0fb7a91 --- /dev/null +++ b/games/mario-luigi-bowser-s-inside-story.md @@ -0,0 +1,25 @@ +--- +alias: 'Mario & Luigi: Bowser''s Inside Story' +developers: +- AlphaDream +- Nintendo +franchises: +- Mario +genres: +- Platform +- Role-playing (RPG) +registered_hours: 0 +release: '2009-09-13' +status: Backlog +times_played: 0 +title: 'Mario & Luigi: Bowser''s Inside Story' +url: https://www.igdb.com/games/mario-luigi-bowser-s-inside-story +--- + +# Mario & Luigi: Bowser's Inside Story + +## Brief + +> Mario & Luigi: Bowser's Inside Story is the third game in the Mario & Luigi series of games. Players control Mario and Luigi simultaneously in the side-scrolling platform environment of Bowser's body, while also controlling the Koopa King himself in the top-down world of the Mushroom Kingdom. Similar to games like Earthbound, enemy encounters are seen as actual enemies that players can avoid or attempt to strike early. The actual battles are a combination of turn-based menu attacks, and timed reactions to enemies during battle. By watching the way an enemy reacts, you can anticipate their attack and avoid it or counterattack. + +## Thoughts diff --git a/games/mario-luigi-partners-in-time.md b/games/mario-luigi-partners-in-time.md new file mode 100644 index 0000000..65a6b99 --- /dev/null +++ b/games/mario-luigi-partners-in-time.md @@ -0,0 +1,27 @@ +--- +alias: 'Mario & Luigi: Partners in Time' +developers: +- AlphaDream +- Nintendo +- Nintendo SPD Production Group No. 4 +franchises: +- Mario +genres: +- Puzzle +- Role-playing (RPG) +- Adventure +registered_hours: 0 +release: '2005-11-27' +status: Backlog +times_played: 0 +title: 'Mario & Luigi: Partners in Time' +url: https://www.igdb.com/games/mario-luigi-partners-in-time +--- + +# Mario & Luigi: Partners in Time + +## Brief + +> The famous Mario Brothers return in this sequel to the humorous Superstar Saga. In this adventure, Princess Peach takes a trip in a time machine, but when it returns, there's only a monster inside! The heroic brothers travel back in time only to discover that evil alien life forms known as the Shroobs have taken over the Mushroom Kingdom, and no-one is safe! They soon meet up with their younger selves, and set out to stop the alien menace, not to mention rescue the Princess! + +## Thoughts diff --git a/games/the-typing-of-the-dead-overkill.md b/games/the-typing-of-the-dead-overkill.md new file mode 100644 index 0000000..82111a5 --- /dev/null +++ b/games/the-typing-of-the-dead-overkill.md @@ -0,0 +1,25 @@ +--- +alias: 'The Typing of the Dead: Overkill' +developers: +- Blitz Games Studios +- Modern Dreams +- Sega +franchises: +- The House of the Dead +genres: +- Shooter +registered_hours: 0 +release: '2013-10-28' +status: Backlog +times_played: 0 +title: 'The Typing of the Dead: Overkill' +url: https://www.igdb.com/games/the-typing-of-the-dead-overkill +--- + +# The Typing of the Dead: Overkill + +## Brief + +> The Typing of the Dead: Overkill fuses the horror and comedy of the legendary House of the Dead series with unique typing mechanics in order to deliver a truly original gaming experience! This gruesome shooter puts you in the middle of a mutant outbreak in Bayou county. Blast pieces out of the zombie horde across 9 stages, one keystroke at a time, in order to save you and a friends life as you work to uncover the mystery behind the outbreak. + +## Thoughts diff --git a/notes/utils/Crear una nueva funcionalidad.md b/notes/utils/Crear una nueva funcionalidad.md new file mode 100644 index 0000000..5ab754a --- /dev/null +++ b/notes/utils/Crear una nueva funcionalidad.md @@ -0,0 +1,124 @@ +# Cómo crear una nueva funcionalidad + +Los siguientes pasos son una breve guía sobre como implementar cualquier funcionalidad al momento de desarrollar, es agnóstica a cualquier tecnología, lenguaje y complegidad. Además podemos pensar en ella como una estrategia recursiva en donde vamos realizando funcionalidades atómicas para producir una funcionalidad más compleja. + +## TLDR + +1. Start time tracking + - Utilizar técnicas como pomodoro o flowtime +2. Planear + - Entradas + - Salidas + - Nombres +3. Realizar un Mock de la salida (si aplica) +4. ¿Cómo genero un mock de la salida? +5. Implementar +6. Probar +7. Descanso y repetir hasta completar + +## Time Tracking + +Esto no es con el objetivo de reportar lo realizado o de maximizar la productividad, si no con el de evitar la fatiga y la visión de túnel. Puedes utilizar la técnica, metodología y/o longitud que prefieras o sea más apta para la tarea, pero lo ideal es tomar descansos regulares. Esto ayudará fisiológicamente a nuestro cuerpo (ojos, espalda, cuello, etc) y a nuestra mente. + +Algunas metodologías que pueden ser utilizadas incluyen: +- Pomodoro +- Flowtime + +## Planear + +Similar a la resolución de problemas en matemática, debemos asegurarnos de que entendemos lo que debemos realizar, con que datos contamos o necesitamos y que es lo que debemos entregar. Mientras mayor claridad tengamos sobre esto, más fácil será realizar la tarea. Con el tiempo este proceso se vuelve algo automático que hacemos mentalmente, pero es buena idea realizar el ejercicio concientemente para facilitar el trabajo. + +En caso de lenguajes tipeados como Typescript, C++, Rust u otros, definir los tipos de datos es algo necesario durante el desarrollo, si bien podemos hacerlo durante o despues de escribir la funcionalidad, hacerlo antes tiene sus ventajas: + +- Claridad de la información con la que contamos y lo que debemos producir, por lo que no necesitaremos modificar la definición del tipo de retorno multiples veces a medida que desarrollamos la funcionalidad, por ejemplo. +- Reduciremos la cantidad de código en rojo, alertas y errores de compilación que nos distraerán de desarrollar la funcionalidad. + +En lenguajes no tipeados como Javascript, Python o Lua, también podemos aplicar definiciones de tipo para funciones, metodos, clases y otros mediante comentarios, que nos ayudarán tanto a definir nuestras entradas y salidas como al lector del código ya que el editor les dará información sobre como utilizarlo: + +En caso de Javascript, se puede utilizar [JSDocs](https://jsdoc.app/) + +### Entradas + +Debemos definir que información necesitamos (o contamos) para realizar la tarea, definir esto en primera instancia nos ayudará en la etapa de ejecución a que ya sabemos que tenemos disponible y sus posibles variaciones, por lo que podemos correr los aplicar validaciones y asegurarnos de cumplir todos los posibles casos. + +Algunas cosas que son buena idea considerar en este momento: +- Las entradas deben ser acotadas, Ej: no pasar parámetros demás a una función. +- Seguir estándares y buenas prácticas, Ej: La programación funcional dice que no debemos modificar un parámetro. + +### Salidas + +¿Cuál será la forma final de la funcionalidad? Debemos definir el tipo de dato que mejor se acomode a lo que vamos a realizar, ¿Es mejor un array o una tupla? ¿Quizá entregarlo como un hash-map? + +### Nombres + +Definir un buen nombre para los elementos utilizados en el algoritmo, esto puede incluir el nombre de la función o método que estemos creando, los parametros, el nombre de la clase, el archivo, módulo, etc. + +Algunas recomendaciones: +- Usar un sustantivo para _datos_ ó _información_ (_variables_ ó _propiedades_), este debe ser descriptivo y puntual para describir lo que contiene. + - _userData_ es muy amplio y ambiguo, _userAddress_ es algo más acotado y aceptable +- Usar verbos para _funcionalidad_ (_funciones_ ó _métodos_), hay que describir lo que **hace**, no lo que es. + - _activateUserAccount_ en ves de _userAccountUpdater_ +- Ajustarse a las convenciones definidas (Ej: Casing). +- Evitar nombres ambiguos o vagos (Ej: aux, util), estos nombres son aceptables si se pueden especificar más. Ej: una carpeta llamada _utils_ con archivos más especificos dentro. +- Usar palabras completas, evitar abreviaciones y **NO** usar una sola letra. Los editores de texto proveen autocompletado, por lo que no hay beneficio en escoger un nombre más corto para evitar escribir más, solo aumentamos la legibilidad del código. +- **NO** usar _magic numbers_ (números escritos en duro en el código), es mejor convertirlos en una variable para saber porqué es ese numero en especifico o en un ultimo caso, dejar un comentario. + + +Para mayor información, [este](https://www.youtube.com/watch?v=K9ohUuZhWnY) video es un buen recurso: + + + +## Realizar un mock de la salida + +En caso de tipos de datos simples, podemos simplemente devolver _0_ de una función por ejemplo, pero en caso más completos podemos devolver un json completo con la información que necesitamos de una REST API y así sabremos que tenemos que producir este resultado final. La idea es despejar nuestra mente sobre el _que_ entregar y así luego solo preocuparnos sobre... + +## ¿Cómo genero la salida? + +Con todos los actores definidos podemos hacer un outline del _"paso a paso"_ necesario para realizar obtener la salida o realizar la acción deseada, este puede ser un punteo simple y en orden de las cosas a realizar. Para mayor claridad podemos escribirlo como un comentario en el código para que podamos verlo a medida que desarrollamos la funcionalidad. + +## Realizar la implementación + +Finalmente realizamos el paso a paso que definimos para poder crear la funcionalidad deseada. Es importante que para este punto sigamos las normas de la estrategia de time tracking definidas para evitar la visión de túnel y la fatiga. + +## Realizar pruebas + +Una ves terminada nuestra funcionalidad, debemos realizar algunas pruebas para saber si funciona correctamente en distintos contextos, estas puedes ser a mano, con pruebas unitarias, pruebas end to end, etc. Sólo debemos aplicar las pruebas y no hacer un trabajo correctivo aún, pues debemos realizar el siguiente paso antes de corregir. + +Algunas ideas para probar la funcionalidad son: + +- Volver a leer el requerimiento y seguirlo paso a paso. +- Probar esta funcionalidad con todos los tipos de usuario que apliquen. +- Realizar casos extremos. +- Intentar hacer fallar la funcionalidad a propósito para ver el manejo de errores. + +## Descansar y repetir + +Una vez completada la funcionalidad (exitosamente o no) debemos descansar un momento, levantarse y realizar alguna acción completamente agena a lo que estábamos realizando, darle un tiempo a nuestro cerebro de descansar y así nuevamente evitar la visión de túnel y la fatiga. En caso de que la funcionalidad no haya pasado las pruebas exitosamente, o si tenemos tiempo de mejorar nuestra funcionalidad, podemos repetir todos este proceso, pasando más rápido o saltando los pasos que no sea necesario realizar tan en profundidad nuevamente. + +## Ejemplo de recursividad + +Podemos ver un ejemplo de como aplicar esta guía para realizar una tarea compleja y dividirla en sub tareas donde tambien aplicamos esta guía. Notar que en este ejemplo está simplificado y no se detallan las entradas y salidas como deberían. + +Debemos producir un servicio para una REST API que guarde un campo en la base de datos: +1. Servicio POST: + - Entrada: JSON con datos. + - Salida: HTTP 201, como cuerpo un JSON con el mensaje "recurso creado con éxito" ó HTTP 422 con los errores adecuados en caso de fallo. + - Funcionalides: + 1. Ruta en la aplicación: + - Entrada: JSON con datos. + - Salida: HTTP 201, como cuerpo un JSON con el mensaje "recurso creado con éxito" ó HTTP 422 con los errores adecuados en caso de fallo. + - Funcionalidad: + 1. Controlador: + - Entrada: JSON con datos. + - Salida: HTTP 201, como cuerpo un JSON con el mensaje "recurso creado con éxito". + - Funcionalidad: Lógica del controlador. + 2. Validaciones: + - Entrada: JSON con datos. + - Salida: Ninguna en caso de éxito, HTTP 422 con los errores adecuados en caso de fallo. + - Funcionalidad: validaciones especificas para los campos. + 2. Documentación de API: + - Entrada: Ninguna. + - Salida: Documentación sobre como utilizar este servicio. + - Funcionalidad: Documentación sobre como utilizar este servicio. + +En este simplificado ejemplo, podemos ver que para realizar la funcionalidad completa de crar un servicio POST que guarde un registro en la base de datos, podemos aplicar esta guía a cada funcionalidad, para segmentar su complegidad y poder concentrarnos en una sola tarea a la ves para realizarla bien. \ No newline at end of file diff --git a/projects/todos-notes/Rewrite neovim config.md b/projects/todos-notes/Rewrite neovim config.md index 2dbc504..01c4f47 100644 --- a/projects/todos-notes/Rewrite neovim config.md +++ b/projects/todos-notes/Rewrite neovim config.md @@ -27,6 +27,7 @@ Especific stuff - [ ] Bufferline -> Exclude quickfix - [ ] Git -> [Neogit](https://github.com/NeogitOrg/neogit/), [Fugitive](https://github.com/tpope/vim-fugitive) - [x] TODO comments +- [ ] Disable suggestion in ttsserver --- diff --git a/projects/todos.md b/projects/todos.md index bec2f2b..b32e1b0 100644 --- a/projects/todos.md +++ b/projects/todos.md @@ -30,6 +30,7 @@ kanban-plugin: basic - [ ] Look into grandia 2 - [ ] Scooter Electrico - [ ] Override methods on Typescript +- [ ] Investigate and try git worktree in work projects ## Waiting for... @@ -42,6 +43,7 @@ kanban-plugin: basic - [ ] Llenar bases de datos
- Series
- Juegos
- Libros - [ ] Traer React Hooks a Wiki
Añadir a portafolio de alguna manera +- [ ] Pasar en limpio notas del cuaderno ## Doign (3)