Update from obsidian - thinkpad

Affected files:
.obsidian/plugins/obsidian-omnivore/data.json
Read Later/Git Merge vs Rebase vs Squash ¿Qué estrategia debemos elegir-.md
Read Later/How Game Reviews Actually Affect You.md
Read Later/Let's Get Webby! 🦀 🕸️.md
Read Later/Use cases for Rust.md
Read Later/What the Rust Book didn't tell you about testing....md
Read Later/Why Signals Are Better Than React Hooks.md
books/Book/Caballo de troya.md
books/Book/En el nombre de la rosa.md
notes/coping mechanisms/Good Enough.md
notes/utils/Crear una nueva funcionalidad.md
notes/utils/Git.md
notes/utils/React.md
projects/personal-page-notes/List of Games.md
projects/quests.md
This commit is contained in:
Alexander Navarro 2023-11-05 13:26:21 -03:00
parent c3e2778f4e
commit 784703b79b
15 changed files with 160 additions and 55 deletions

View file

View file

@ -1,6 +1,3 @@
# 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
@ -16,6 +13,15 @@ Los siguientes pasos son una breve guía sobre como implementar cualquier funcio
- [[#Descansar y repetir|Descansar y repetir]]
- [[#Ejemplo de recursividad|Ejemplo de recursividad]]
## Cosas a tener en mente
- [Accept that Everything Is a Draft](The%20cult%20of%20done.md#Accept%20that%20Everything%20Is%20a%20Draft), siempre se puede volver a ello y mejorarlo. Por ahora, esto es un prototipo...
- Contrario al punto anterior, si algo fue lanzado al mundo, ya se fue, no quedarse modificando lo mismo para siempre.
- Concentrarse en una cosa a la vez:
1. Escribir algo que funcione.
2. Mejorar la implementación, performance y corregir bugs.
3. Limpiar y refactorizar, sólo si queda tiempo/energía y es necesario ([good enough](Good%20Enough.md)).
## 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.

25
notes/utils/Git.md Normal file
View file

@ -0,0 +1,25 @@
## Merge strategies
![Notes](Git%20Merge%20vs%20Rebase%20vs%20Squash%20¿Qué%20estrategia%20debemos%20elegir-.md#Notes)
## Buscar cuando un bug se introdujo
Utilizar `git bisect`
## Fix messy commits
Ya que estas opciones sobre escriben el historial de git, solo deben aplicarse en local y no commits publicados a un remote.
### Last commit
Si solo necesitamos agregar un cambio pequeño al ultimo commit (typo o correr el formatter), podemos aplicarlo con `git commit --ammend`, se puede sobre escribir el mensaje con `-m`.
### Mutiple commits
Se pueden arreglar el historial de commits con un `git rebase -i [since commit or branch]` y utilizar las estratégias de pick, squash, reword y drop.
En caso de que sepamos que haremos un commit que luego no necesitaremos, podemos hacer:
- `git commit --fixup [commit hash]` -> descarta el commit message de este commit y mantiene el del commit de referencia
- `git commit --squash [commit hash]` -> git juntará los mensajes de todos los commits a hacer squash y el commit de referencia.
Finalmente podemos hacer `git rebase -i --autosquash` y git eligirá las opciones necesarias a tomar en vez de tener que hacerlo de manera manual.

View file

@ -1,3 +1,5 @@
## Issues with useEffect dependency array
React use [shallow comparision](https://learntechsystems.com/what-is-shallow-comparison-in-js/) (values are equals in case of primitive types. In case of object it just check the reference) to check if the dependency changes between renders, this can conduce to bugs in the following situa
### Always use a depency array
@ -50,3 +52,33 @@ useEffect(() => {
```
[source](https://blog.logrocket.com/solve-react-useeffect-hook-infinite-loop-patterns/)
## Reset a component state
React utiliza la propiedad `key` para poder identificar un componente, esta propiedad puede ser omitida y react le asignará una en base a su posición en el Virtual DOM Tree.
Cuando la propiedad cambia, React entiende que el componente no es el mismo, por lo que destruye el componente actual y crea uno nuevo, lo que por ende, tiene el estado inicial.
Para esto tenemos dos opciones:
- Pasar alguna propiedad de los datos como key.
- Generar un valor único localmente.
Lo primero es como pasar el ID de un usuario. para lo segundo podemos usar lo siguiente:
```jsx
import { useRef } from 'react';
export default function Parent() {
const key = useRef(crypto.randomUUID());
const resetComponent = () => key.current = crypto.randomUUID();
return (
<div>
<Component key={key.current} />
<button onClick={() => resetComponent()}></button>
</div>
)
}
```