Ir al contenido principal

Entradas

Mostrando entradas de 2025

Amor vs fanatismo por el trabajo

  ¿Para tener éxito en el trabajo de uno cuál es el límite entre amor y fanatismo por el trabajo? Respuesta breve: El límite está en si tu pasión por el trabajo te impulsa a crecer y disfrutar de la vida, o si se convierte en una obsesión que afecta tu salud, tus relaciones y tu equilibrio personal. Amar lo que haces es sano; el fanatismo laboral (workaholism) es dañino. ❤️ Amor al trabajo Motivación positiva: Te energiza y te da propósito. Equilibrio vital: Disfrutas de tu profesión sin descuidar familia, amigos, descanso y hobbies. Crecimiento personal: Ves cada reto como una oportunidad de aprender y mejorar. Satisfacción: El trabajo es fuente de alegría, no de ansiedad. ⚠️ Fanatismo laboral (workaholism) Obsesión: No puedes desconectarte, incluso fuera del horario laboral. Desequilibrio: Sacrificas salud, relaciones y descanso por trabajar más. Dependencia emocional: Tu identidad depende exclusivamente de tu rendimiento laboral. Agotamiento: A largo plazo, conduce a es...

Mantener el estado entre páginas en React

  ¿Es verdad que en React existe un hook de estado global que sirve para mantener el estado entre cambios de página? Muy buena observación, Gabriel 👌. La respuesta corta es: React no trae un hook de estado global por defecto . Los hooks nativos ( useState , useReducer , useEffect , etc.) manejan estado local al componente . Si cambiás de página (por ejemplo, con React Router), ese estado se pierde porque el componente se desmonta. 🔹 Entonces, ¿cómo se logra un estado global en React? React ofrece varias formas de compartir estado entre páginas o componentes : Context API ( useContext ) Es lo más cercano a un “estado global” nativo. Podés crear un Context y envolver tu aplicación en un Provider . Ejemplo: jsx const AuthContext = React.createContext(); function AuthProvider({ children }) { const [user, setUser] = React.useState(null); return ( <AuthContext.Provider value={{ user, setUser }}> {children} </AuthContext.Provider> ); } function useAuth...

Equilibrar actividades de desarrollador freelance

Quiero ser un desarrollador de software independiente. ¿Cuánto tiempo debería dedicar a la programación y cuánto a otras actividades como marketing, administración, etc.? Respuesta rápida: Como desarrollador independiente, lo ideal es dedicar 60–70% del tiempo a la programación y el resto a actividades como marketing, administración y networking. La proporción exacta depende de tu nivel de experiencia y de cuán estable sea tu flujo de clientes. 📊 Distribución recomendada del tiempo Actividad % del tiempo sugerido Detalles clave Programación / desarrollo 60–70% Tu producto y servicio dependen de la calidad del código. Mantén foco en entregar valor técnico. Marketing y ventas 15–20% Incluye presencia online, portafolio, redes sociales, networking y búsqueda activa de clientes. Administración / gestión 10–15% Facturación, contratos, impuestos, organización de proyectos y gestión de tiempo. Aprendizaje / mejora continua 5–10% Capacitación en nuevas tecnologías, frameworks y tendencias p...

Alias de rutas Typescript

  ¿Hay alguna herramienta de la build chain que permite en Typescript hacer imports a paths como @/components, y que los encuentre en un alias, digamos en /resources/js/components? Sí, Gabriel 👌. Eso se logra configurando alias de paths en tu build chain. En proyectos Laravel + React + TypeScript, lo más común es que uses Vite (desde Laravel 9/10) o Webpack (si es más viejo). Ambos soportan alias, y TypeScript también necesita saberlos para resolver los imports. 🔹 En Vite (Laravel moderno) Instalar el helper de paths: bash npm install -D vite-tsconfig-paths (este plugin hace que Vite respete los alias definidos en tsconfig.json ). Configurar vite.config.js : js import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import tsconfigPaths from 'vite-tsconfig-paths' export default defineConfig({ plugins: [react(), tsconfigPaths()], }) Configurar tsconfig.json : json { "compilerOptions": { "baseUrl": "./reso...

Colores Tailwind vs. variables CSS

 ¿Cuál es la diferencia, las ventajas y desventajas de definir un color directamente en tailwind.config.js o crear una variable CSS? Muy buena pregunta, Gabriel 👌. La diferencia entre definir un color directamente en tailwind.config.js y usar una variable CSS ( --color-primary ) está en el nivel de control y flexibilidad que buscás. 🔹 Definir color en tailwind.config.js Cómo funciona js // tailwind.config.js module.exports = { theme: { extend: { colors: { brand: "#1E40AF", }, }, }, }; Luego lo usás con clases como bg-brand , text-brand , fill-brand . Ventajas Integración directa con Tailwind : todas las utilidades ( bg- , text- , fill- , stroke- ) se generan automáticamente. Consistencia : el color queda centralizado en la configuración, fácil de mantener. Autocompletado : muchos editores reconocen los nombres de colores definidos en Tailwind. Sin dependencias externas : no necesitás definir variables CSS aparte. Desventajas Menos dinámico ...

Menú con submenús

 Quiero hacer un área dentro de una página web donde al clickear tanto con el botón derecho como con el izquierdo aparezca un menú de items personalizado. Perfecto, Gabriel 🙌. Lo que quieres es crear un menú contextual personalizado que aparezca al hacer clic (izquierdo o derecho) dentro de un área específica de tu página. Te muestro cómo hacerlo paso a paso con HTML, CSS y JavaScript . 📂 Ejemplo básico HTML html <!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <title>Menú personalizado</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div id="area"> Haz clic aquí (izquierdo o derecho) </div> <!-- Menú oculto --> <ul id="menu"> <li>Opción 1</li> <li>Opción 2</li> <li>Opción 3</li> </ul> <script src="script.js"></script>...

Bundlers de frontend (HTML, JS, CSS, assets)

 ¿Qué información importante hay sobre estructuras de proyectos frontend y bundlers para gente que no conoce nada de eso? Respuesta breve: Una estructura de proyecto frontend organiza los archivos y carpetas para que el desarrollo sea claro y mantenible. Los bundlers (como Vite, Webpack o Parcel) son herramientas que empaquetan tu código y recursos (HTML, CSS, JS, imágenes) para que el navegador los entienda y cargue más rápido. 🧩 Estructura básica de un proyecto frontend Para alguien que empieza desde cero, lo más importante es entender cómo se organizan los archivos: index.html → El punto de entrada de la aplicación. Aquí se cargan los estilos y scripts. src/ → Carpeta donde vive tu código fuente. components/ → Pequeñas piezas reutilizables de interfaz (ej. botones, menús). styles/ → Archivos CSS o preprocesadores (Sass, Less). assets/ → Imágenes, íconos, fuentes. main.js o main.tsx → Archivo principal que inicia la aplicación. public/ → Archivos estáticos que no neces...

Diferentes maneras de importar un archivo .svg

 Estoy importando un archivo que se llama torta.svg como si fuera un componente de React, a través de SVGR. Dice: InvalidCharacterError: Failed to execute 'createElement' on 'Document': The tag name provided ('http://127.0.0.1:5173/resources/images/torta.svg') is not a valid name. Este es un error muy común cuando se usa SVGR y Vite, ¡pero es fácil de solucionar! El mensaje de error indica que React está intentando usar una cadena de texto que contiene la ruta de tu archivo SVG ( http://127.0.0.1:5173/.../torta.svg ) como si fuera el nombre de un componente JSX. Esto sucede porque Vite y SVGR exponen el SVG de dos maneras distintas, y probablemente estás usando la exportación por defecto , que es la URL del archivo, en lugar de la exportación nombrada , que es el componente React en sí. La Solución: Usar la Exportación Nombrada ( ReactComponent ) Cuando instalaste vite-plugin-svgr , este configuró la importación para darte dos cosas: Exportación por defecto: ...