tag:blogger.com,1999:blog-63478066509489616492024-03-18T17:21:40.279-06:00PathrosDesarrollo web y desplieguepathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.comBlogger875125tag:blogger.com,1999:blog-6347806650948961649.post-31016103668467928762024-03-11T12:43:00.005-06:002024-03-11T12:47:06.020-06:00Descubre Cómo Ahorrar en Tus Pedidos con Este Código Exclusivo de Didi Food<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4nfY9o5ayGeXTUevO7XFmN0z_XfkHF0Q75bxMVT1HjoHT3l7v2uQX3sZy2x_1IeZpfzaY0pPo75JDzZOKF5drER87phakBPgrRIWjo9Af0CHeNOEI7kUjGjhKto4NCczKog0vNE2O_8Y8EIn-a7QklpEHW3KBg-cWQ_WSJ39G47cQBnDgcLtNKvbocXE/s1024/didi%20food%20co%CC%81digo%20promocional.webp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="FOOD-B5U9VU Disfruta de una variedad de deliciosos platos como pizza, sushi y ensaladas con grandes descuentos usando el código promocional FOOD-B5U9VU en Didi Food. Esta imagen colorida y atractiva captura la esencia de la conveniencia y el ahorro, destacando el logo de Didi Food y promoviendo el uso del código de descuento para pedidos a domicilio. Perfecta para quienes buscan disfrutar de su comida favorita con un extra de ahorro" border="0" data-original-height="1024" data-original-width="1024" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4nfY9o5ayGeXTUevO7XFmN0z_XfkHF0Q75bxMVT1HjoHT3l7v2uQX3sZy2x_1IeZpfzaY0pPo75JDzZOKF5drER87phakBPgrRIWjo9Af0CHeNOEI7kUjGjhKto4NCczKog0vNE2O_8Y8EIn-a7QklpEHW3KBg-cWQ_WSJ39G47cQBnDgcLtNKvbocXE/w320-h320/didi%20food%20co%CC%81digo%20promocional.webp" title="FOOD-B5U9VU Disfruta de una variedad de deliciosos platos como pizza, sushi y ensaladas con grandes descuentos usando el código promocional FOOD-B5U9VU en Didi Food. Esta imagen colorida y atractiva captura la esencia de la conveniencia y el ahorro, destacando el logo de Didi Food y promoviendo el uso del código de descuento para pedidos a domicilio. Perfecta para quienes buscan disfrutar de su comida favorita con un extra de ahorro" width="320" /></a></div><p>En la actualidad, la comodidad de pedir comida a domicilio se ha convertido en una parte esencial de nuestro estilo de vida. Ya sea por una noche de películas, reuniones con amigos, o simplemente para disfrutar de tus platillos favoritos sin salir de casa, Didi Food te ofrece una amplia variedad de opciones. Y hoy, tengo una sorpresa especial para ti: ¡un código de referido exclusivo que te brindará grandes descuentos en tus próximos pedidos!</p><h4 style="text-align: left;">¿Cómo funciona el código?</h4><p>El código de referido "<b>FOOD-B5U9VU</b>" es tu llave maestra para desbloquear descuentos exclusivos en Didi Food. Utilizarlo es tan sencillo como ingresar el código en la sección de promociones antes de finalizar tu pedido. Instantáneamente, se aplicará un descuento significativo a tu compra, permitiéndote disfrutar de tus comidas favoritas mientras ahorras.</p><h4 style="text-align: left;">Beneficios de usar el código</h4><p>Ahorro instantáneo: Disfruta de una rebaja directa en tu pedido, haciendo que tus comidas favoritas sean aún más accesibles.</p><p>Acceso a una variedad de restaurantes: Didi Food colabora con una amplia gama de restaurantes, ofreciéndote desde cocina local hasta platos internacionales. Con nuestro código, explorar nuevas opciones nunca ha sido tan económico.</p><p>Comodidad sin igual: Olvídate de cocinar y lavar platos; con unos pocos clics, tu comida llegará directamente a tu puerta, listo para ser disfrutada.<br /><br /></p><h4 style="text-align: left;">Cómo usar el código</h4><p>Descarga la app de Didi Food y crea una cuenta o inicia sesión.</p><p>Elige tus platos favoritos de una amplia selección de restaurantes.</p><p>Antes de proceder al pago, ingresa el código "<b>FOOD-B5U9VU</b>" en la sección de promociones.</p><p>Disfruta de tu descuento y espera tu deliciosa comida.</p><h4 style="text-align: left;">Conclusión</h4><p>No dejes pasar la oportunidad de hacer tus pedidos de comida más económicos y emocionantes. Usa el código "<b>FOOD-B5U9VU</b>" hoy mismo y comienza a disfrutar de todos los beneficios que Didi Food tiene para ofrecerte. ¡Buen provecho y felices ahorros!</p><p><br /></p><p> </p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-72702209202297475962024-02-15T10:27:00.003-06:002024-02-15T10:27:49.014-06:00Bachata coreografía apuntes<p>Dejo anotado, a manera de apuntes, los pasos de bachata más pragmáticos y relativamente fáciles de aprender para toda ocasión de social.</p><p>Toa la noche</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/x4HpjEtNzvU" width="320" youtube-src-id="x4HpjEtNzvU"></iframe></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><p>Así es la vida</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/e-f_QOMO7Pw" width="320" youtube-src-id="e-f_QOMO7Pw"></iframe></div><br /><p><br /></p><p>Mi rival</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/uLDkNCO6hKQ" width="320" youtube-src-id="uLDkNCO6hKQ"></iframe></div><br /><p><br /></p><p>Saludos</p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-31792688072668547682024-02-13T12:53:00.008-06:002024-02-13T12:58:44.803-06:00Cetes directo Formato Único de Trámites<p>Como luego resulta muy difícil encontrar el Formato único de trámites para cetes directo:</p><p>https://cetesvideo.com/archivos/pdf/FTramites.pdf</p><p>El "Formato Único de Trámites" de Cetes Directo permite realizar una variedad de operaciones para gestionar inversiones y actualizaciones de información personal y bancaria. Con este formulario, los usuarios pueden actualizar datos generales, como el domicilio y la información de contacto, así como detalles bancarios incluyendo la CLABE y el número de tarjeta de débito. Además, facilita la reposición de tarjetas de seguridad y el restablecimiento de contraseñas. Es una herramienta esencial para quienes buscan eficiencia y seguridad en la gestión de sus inversiones en Cetes Directo, asegurando que todos los trámites se realicen de manera confidencial y protegida.</p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-88975708182924257862024-02-09T10:54:00.002-06:002024-02-09T10:54:27.148-06:00git pull error: fatal: detected dubious ownership in repository<p>Al intentar hacer un pull con git, especialmente en un directorio en el que no eres el propietario, de ahí que utilizas sudo: </p><div style="background: rgb(248, 248, 248); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">sudo git pull</pre></div><p>y te sale el siguiente error:</p><p><span style="color: #990000;">fatal: detected dubious ownership in repository at '/var/www/docker/proyecto/repositorio'</span></p><p><span style="color: #990000;">To add an exception for this directory, call:</span></p><p><span style="color: #990000;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>git config --global --add safe.directory </span>/var/www/docker/proyecto/repositorio</span></p><p>En mi caso, el problema radicaba en que tal directorio yo no era el propietario o dueño. Eso lo verifiqué mediante el comando:</p><div style="background: rgb(248, 248, 248); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">ls -lah
drwxr-xr-x 87 otroUsuario www-data 4.0K Jan 23 17:29 laradock
drwxr-xr-x 14 otroUsuario www-data 4.0K Jan 24 09:23 proyecto</pre></div><p>En donde claramente otroUsuario no soy yo, por lo que, dado que tengo capacidades "sudo", pude ejecutar lo siguiente, para cambiar el propietario de la carpeta por el nombre de mi usuario:</p><div style="background: rgb(248, 248, 248); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">sudo chown -R pathros:www-data laradock</pre></div><p>y listo. El error de "sudo git pull" desapareció, e incluso ya podía utilizar "git pull" sin sudo.</p><p>Saludos</p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-80877818963813791912023-12-28T13:59:00.002-06:002023-12-28T18:08:20.874-06:00Instalación de LM Studio en MacBook Pro M3<p>Vamos a instalar LM Studio en una MacBook Pro M3.</p><h2 style="text-align: left;">Descarga de LM Studio a la MacBook Pro M3</h2><p>Hay dos maneras que he encontrado para descargarlo, </p><p></p><ol style="text-align: left;"><li>ya sea obtener el archivo de instalación desde el <a href="https://lmstudio.ai" target="_blank">sitio web oficial de LM Studio</a>.</li><li>Instalar <a href="https://formulae.brew.sh/cask/lm-studio#default" target="_blank">LM Studio vía Homebrew</a>.</li></ol><p></p><h4 style="text-align: left;">Descarga LM Studio para Mac M3 desde el sitio web oficial</h4><p>Visitamos el <a href="https://lmstudio.ai" target="_blank">sitio web oficial de LM Studio</a> y hacemos clic en "Download LM Studio for Mac".</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5uJollSNiCav2Vx-JDZrgXlI93qPpuoBzbjDbxeQ_p0Izc6m6V9A8MBUWCaRJ_hINzU2NArtREl2ePRmdGYq_NcHO4NudPT8cGId2OiUN-W9lM4kzjjQUcBg4eSqZK3EP8l_pieHehl9cnnDZS5Vv12N8uB5_S7pa6aoBs8PSYvLPxR05Rvsy0ofe1tY/s3074/Descarga%20de%20LM%20Studio%202023-12-28%20a%20la(s)%2011.18.35%E2%80%AFa.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instalación de LM Studio en MacBook Pro M3" border="0" data-original-height="1334" data-original-width="3074" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5uJollSNiCav2Vx-JDZrgXlI93qPpuoBzbjDbxeQ_p0Izc6m6V9A8MBUWCaRJ_hINzU2NArtREl2ePRmdGYq_NcHO4NudPT8cGId2OiUN-W9lM4kzjjQUcBg4eSqZK3EP8l_pieHehl9cnnDZS5Vv12N8uB5_S7pa6aoBs8PSYvLPxR05Rvsy0ofe1tY/w640-h278/Descarga%20de%20LM%20Studio%202023-12-28%20a%20la(s)%2011.18.35%E2%80%AFa.m..png" title="Instalación de LM Studio en MacBook Pro M3" width="640" /></a></div><p>Se descargará el archivo, lo cual tomará varios segundos o algunos minutos. Una vez descargado el archivo, dale doble clic para que se instale. Sigue las instrucciones de instalación.</p><h4 style="text-align: left;">Descarga e instala LM Studio con Homebrew para Mac M3</h4><p>Abre la terminal de comandos y ejecuta la siguiente instrucción:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">brew install --cask lm-studio</pre></div><p>Crear acceso directo a LM Studio en Mac M3</p><p>Una vez descargado, ahora vamos a la carpeta de "Aplicaciones" y de ahí lo arrastramos al Dock.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht87qNLjD369MZAuyvgc7AHYJn4W3H5l1qL_MfrnbBF2V34p-A1n4hk6cZB90ep-de2StnbfkQ-lZzA7Nzr8fllj8i2FRzLrkqCyO7awah5VR3rkM4aFFiOOPWdhkef3N3VjtWI8IViCDZ_aJXXGSb5RvY7BrEJvFhwGafonr3UG04G9sniaRx2pz7NLg/s1228/LM%20Studio%20crear%20acceso%202023-12-28%20a%20la(s)%2011.24.43%E2%80%AFa.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="LM Studio crear acceso directo en Mac M3" border="0" data-original-height="794" data-original-width="1228" height="414" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht87qNLjD369MZAuyvgc7AHYJn4W3H5l1qL_MfrnbBF2V34p-A1n4hk6cZB90ep-de2StnbfkQ-lZzA7Nzr8fllj8i2FRzLrkqCyO7awah5VR3rkM4aFFiOOPWdhkef3N3VjtWI8IViCDZ_aJXXGSb5RvY7BrEJvFhwGafonr3UG04G9sniaRx2pz7NLg/w640-h414/LM%20Studio%20crear%20acceso%202023-12-28%20a%20la(s)%2011.24.43%E2%80%AFa.m..png" title="LM Studio crear acceso directo en Mac M3" width="640" /></a></div><br /><p>Cuando le haces doble clic para ejecutar</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxqRMAn5IfPTkCYYd2CKx_cO-oIUliPE6EnD0M9cnJUy3Eghu8-JpXZw57oSGCY0Ha4nlCvA6MU9wT5jYuKeUw9a0EVazb0wSY_BbYB3309xZaIVTuUu77QiGJLoTpOKbenunpakMEZDhhYfFnZJ92_fidmKex9BaDXrTLMvopnHHKRtKutMyztm2G3Ps/s606/LM%20studio%20confirmar%20abrir%202023-12-28%20a%20la(s)%2011.26.34%E2%80%AFa.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="LM Studio Mac M3 - confirmar abrir aplicación descargada de Internet" border="0" data-original-height="526" data-original-width="606" height="556" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxqRMAn5IfPTkCYYd2CKx_cO-oIUliPE6EnD0M9cnJUy3Eghu8-JpXZw57oSGCY0Ha4nlCvA6MU9wT5jYuKeUw9a0EVazb0wSY_BbYB3309xZaIVTuUu77QiGJLoTpOKbenunpakMEZDhhYfFnZJ92_fidmKex9BaDXrTLMvopnHHKRtKutMyztm2G3Ps/w640-h556/LM%20studio%20confirmar%20abrir%202023-12-28%20a%20la(s)%2011.26.34%E2%80%AFa.m..png" title="LM Studio Mac M3 - confirmar abrir aplicación descargada de Internet" width="640" /></a></div><br /><p>Cuando abres LM Studio por primera vez, un cuadro de diálogo aparecerá desplegando las más recientes mejoras y características de LM Studio</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVWJTfLr5VLAjKX51Rfhum8LyK-OmgXbWK8Y3NHIzSDHd5WMGn__yceoezWtIIvLinowWnJEGhT2oyJtSzpk0a1GL9qz0uD4U4OdcvpvbAGSFlLHcj1GAmrc0z7uYVfD5z0nWXCRI9yAU3Ssb2Vui1uVLrKG4_1wFmdl9htn0i3KZXE5fil17Gr0xo8ww/s1446/LM%20Studio%20notas%20de%20la%20versio%CC%81n%202023-12-28%20a%20la(s)%2011.27.23%E2%80%AFa.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Cuando abres LM Studio por primera vez, un cuadro de diálogo aparecerá desplegando las más recientes mejoras y características de LM Studio" border="0" data-original-height="1078" data-original-width="1446" height="478" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVWJTfLr5VLAjKX51Rfhum8LyK-OmgXbWK8Y3NHIzSDHd5WMGn__yceoezWtIIvLinowWnJEGhT2oyJtSzpk0a1GL9qz0uD4U4OdcvpvbAGSFlLHcj1GAmrc0z7uYVfD5z0nWXCRI9yAU3Ssb2Vui1uVLrKG4_1wFmdl9htn0i3KZXE5fil17Gr0xo8ww/w640-h478/LM%20Studio%20notas%20de%20la%20versio%CC%81n%202023-12-28%20a%20la(s)%2011.27.23%E2%80%AFa.m..png" title="Cuando abres LM Studio por primera vez, un cuadro de diálogo aparecerá desplegando las más recientes mejoras y características de LM Studio" width="640" /></a></div><br /><p>Cuando haces clic, en el menú que se encuentra del lado izquierdo en posición vertical, te mostrará nueva característica de configuraciones predefinidas por chat.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin2i6s85whci88W6d199swppxbHIXIOnJAPukiilYntk7x9FUHjd9EiY4Hc9vrtplP9FhG3kXUoVY3RnmCSifea4Exs_w5CfjgHYzU5JlZoDI51DRIPB8JztCi1_phXkcGneJ3fwbN9swzeeCGWLPRGKA2-afXyRh1XvqO112BOGC1bLOFssRewBjXJCQ/s2378/LM%20Studio%20Chat%20settings%20and%20config%20presets%202023-12-28%20a%20la(s)%2011.28.57%E2%80%AFa.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="LM Studio - configuraciones predefinidas por chat" border="0" data-original-height="1284" data-original-width="2378" height="346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEin2i6s85whci88W6d199swppxbHIXIOnJAPukiilYntk7x9FUHjd9EiY4Hc9vrtplP9FhG3kXUoVY3RnmCSifea4Exs_w5CfjgHYzU5JlZoDI51DRIPB8JztCi1_phXkcGneJ3fwbN9swzeeCGWLPRGKA2-afXyRh1XvqO112BOGC1bLOFssRewBjXJCQ/w640-h346/LM%20Studio%20Chat%20settings%20and%20config%20presets%202023-12-28%20a%20la(s)%2011.28.57%E2%80%AFa.m..png" title="LM Studio - configuraciones predefinidas por chat" width="640" /></a></div><br /><p>Cuando haces clic en el icono de inicio o home 🏠, en el menú del lado izquierdo, aparecerá un cuadro de búsqueda de modelos de lenguaje LLM. <b>Más abajo</b>, aparecerá el listado de LLMs más recientes o sugeridos que podrás descargar.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR_UMqB78nZ-GZ9fTqmTCFEAkjGsAFnrNi8M-2o7hW-d-Pim0d4al2zChOu9n9H-8qNciBDuiQbGzG-OhC3Hgk3IZZwaMKXWmnA0YO5shjCUML8BERA4wZAimoIlHe0r_b-gDihMFeu5NQsEQQ3T57Cod1vmawTKylrh94OvuGvlJpsWLKnBStm-ogwLU/s3436/LM%20Studio%20home%20inicio%20listado%20de%20LLMs%20que%20puedes%20descargar%202023-12-28%20a%20la(s)%2011.30.49%E2%80%AFa.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="LM Studio - listado de LLMs más recientes o sugeridos que podrás descargar" border="0" data-original-height="1768" data-original-width="3436" height="330" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR_UMqB78nZ-GZ9fTqmTCFEAkjGsAFnrNi8M-2o7hW-d-Pim0d4al2zChOu9n9H-8qNciBDuiQbGzG-OhC3Hgk3IZZwaMKXWmnA0YO5shjCUML8BERA4wZAimoIlHe0r_b-gDihMFeu5NQsEQQ3T57Cod1vmawTKylrh94OvuGvlJpsWLKnBStm-ogwLU/w640-h330/LM%20Studio%20home%20inicio%20listado%20de%20LLMs%20que%20puedes%20descargar%202023-12-28%20a%20la(s)%2011.30.49%E2%80%AFa.m..png" title="LM Studio - listado de LLMs más recientes o sugeridos que podrás descargar" width="640" /></a></div><br /><p>Cuando haces una búsqueda, por ejemplo, he tecleado "Mixtral" y me han aparecido tales resultados:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidkx1njte9nsfdOH3tlsaBnBKHsLVlGBoqFDPRohPXTnrHY-IwC1LGGmcSSttNICBtXcQwNgCAMtrRxTUftbJEYCig3YYG3TsVyZaWjkev8pzTiGYjkepxRpOb4dVdFI5suogzzQrWGdTw1YkEvZeozRYs1dfRAX-2h-c6MbrZaMPXnDIyqIcD2ForWiQ/s3436/LM%20Studio%20ejemplo%20de%20bu%CC%81squeda%20de%20LLMs%202023-12-28%20a%20la(s)%2011.42.00%E2%80%AFa.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="LM Studio - he tecleado "Mixtral" y me han aparecido tales resultados" border="0" data-original-height="1678" data-original-width="3436" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidkx1njte9nsfdOH3tlsaBnBKHsLVlGBoqFDPRohPXTnrHY-IwC1LGGmcSSttNICBtXcQwNgCAMtrRxTUftbJEYCig3YYG3TsVyZaWjkev8pzTiGYjkepxRpOb4dVdFI5suogzzQrWGdTw1YkEvZeozRYs1dfRAX-2h-c6MbrZaMPXnDIyqIcD2ForWiQ/w640-h312/LM%20Studio%20ejemplo%20de%20bu%CC%81squeda%20de%20LLMs%202023-12-28%20a%20la(s)%2011.42.00%E2%80%AFa.m..png" title="LM Studio - he tecleado "Mixtral" y me han aparecido tales resultados" width="640" /></a></div><br /><p>Del listado de archivos que aparecen del lado derecho, hago clic, en cada uno de ellos, sobre la letra ℹ️ hasta encontrar uno que me diga "recommended". Ahora procedo a descargarlo:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSjppNCoK-joSji4G4xfEg4R2TdwQCtxoGoxwoAUVpQwNwrFKf1Itnt1gFYq8-JCw_vBGlz6wdV5JOlh4vcW23S5c3oYscU-EtimxwXdkDowUEO8pf7tfJCYbgMDVyQn6K3I0xvpnI4inGEx8JNIt3qelBD4GAhXyx-L-keqZbzxNkXC1v3Ihlir4rJ2g/s3436/LM%20Studio%20descargando%20LLM%20mixtral%202023-12-28%20a%20la(s)%2013.53.24.png" style="margin-left: 1em; margin-right: 1em;"><img alt="LM Studio - LM Studio descargando LLM mixtral" border="0" data-original-height="1876" data-original-width="3436" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSjppNCoK-joSji4G4xfEg4R2TdwQCtxoGoxwoAUVpQwNwrFKf1Itnt1gFYq8-JCw_vBGlz6wdV5JOlh4vcW23S5c3oYscU-EtimxwXdkDowUEO8pf7tfJCYbgMDVyQn6K3I0xvpnI4inGEx8JNIt3qelBD4GAhXyx-L-keqZbzxNkXC1v3Ihlir4rJ2g/w640-h350/LM%20Studio%20descargando%20LLM%20mixtral%202023-12-28%20a%20la(s)%2013.53.24.png" title="LM Studio - LM Studio descargando LLM mixtral" width="640" /></a></div><br /><p>Una vez descargado el o los modelos LLM, ahora vamos a la sección de Chat 💬 , en el menú principal que está del lado izquierdo para seleccionar uno o el modelo que hemos descargado.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUnUfB9CfOX6xHv1P5z4zBtt-BQjwl2zbd5owJn6bhusWfvtPrtNCnpsmdKtvbCY0ZBpfgbQYVElkBQ3_qAUFDB7wEItr7aoA3_V8XtWCpxJSnN_X43CRZ9m7bpDJpD3lufFS2hDXoLN_XfFoh_R00h01ksNG_KgDz8O3XarPS3E7SomgnBkX09NlezVQ/s3436/LM%20Studio%20-%20Seleccio%CC%81n%20de%20modelo%20para%20chatear%202023-12-28%20a%20la(s)%2014.04.17.png" style="margin-left: 1em; margin-right: 1em;"><img alt="LM Studio - LM Studio - Selección de modelo para chatear" border="0" data-original-height="1876" data-original-width="3436" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUnUfB9CfOX6xHv1P5z4zBtt-BQjwl2zbd5owJn6bhusWfvtPrtNCnpsmdKtvbCY0ZBpfgbQYVElkBQ3_qAUFDB7wEItr7aoA3_V8XtWCpxJSnN_X43CRZ9m7bpDJpD3lufFS2hDXoLN_XfFoh_R00h01ksNG_KgDz8O3XarPS3E7SomgnBkX09NlezVQ/w640-h350/LM%20Studio%20-%20Seleccio%CC%81n%20de%20modelo%20para%20chatear%202023-12-28%20a%20la(s)%2014.04.17.png" title="LM Studio - LM Studio - Selección de modelo para chatear" width="640" /></a></div><br /><h2 style="text-align: left;">Quant type not supported with Metal</h2><p>Habrá modelos, que aún terminando en la extensión .gguf, saldrá el siguiente error en LM Studio:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #990000;">LM Studio Quant type f16 is not supported with metal!</span></pre></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUvabsvVebMYgz-TxvkLoc7LDRGlSf-Kya3VjG9VO0Qjn3jTO27z1ETLWz9M3GjoSHQw4BV1xNXsLUpJrZf_fAW91lVcW_JSp7q2qo2ovHHAsyNDf7PecekHpbCY6tgqMK2e-_AX2iNSgLfmFZ2XNwtFC6JmYCBKHOc0tpU9-zUH9Vhs55ZWSLHPsB0rc/s1350/LM%20Studio%20Quant%20type%20f16%20is%20not%20supported%20with%20metal%202023-12-28%20a%20la(s)%2017.01.10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="LM Studio Quant type f16 is not supported with metal!" border="0" data-original-height="546" data-original-width="1350" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUvabsvVebMYgz-TxvkLoc7LDRGlSf-Kya3VjG9VO0Qjn3jTO27z1ETLWz9M3GjoSHQw4BV1xNXsLUpJrZf_fAW91lVcW_JSp7q2qo2ovHHAsyNDf7PecekHpbCY6tgqMK2e-_AX2iNSgLfmFZ2XNwtFC6JmYCBKHOc0tpU9-zUH9Vhs55ZWSLHPsB0rc/w640-h258/LM%20Studio%20Quant%20type%20f16%20is%20not%20supported%20with%20metal%202023-12-28%20a%20la(s)%2017.01.10.png" title="LM Studio Quant type f16 is not supported with metal!" width="640" /></a></div><p>Por lo que deberás descargar y elegir otro modelo que tenga alguna de esas terminaciones, tal y como se indica en la figura anterior: Q5_K,Q6_K,Q8_0, etc.</p><p><br /></p><p><br /></p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-14699734202848366162023-12-25T23:33:00.002-06:002023-12-25T23:46:30.089-06:00Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3<p>Veamos cómo instalar Powerlevel10k con OhMyZsh en MacOS.</p><p>En este caso estaré utilizando iTerm2.</p><h2 style="text-align: left;">Instalación de Oh My Zsh</h2><p>Abre una ventana de tu terminal en la carpeta de inicio $HOME:</p><p><br /></p><p>De acuerdo al <a href="https://ohmyz.sh/#install" target="_blank">sitio oficial de OhMyZsh</a>, hay que ejecutar el siguiente comando en la terminal:</p><div style="background: rgb(248, 248, 248); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: black; font-style: italic;">sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"</span></pre></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivs7V_6D7sWu9sXHbo_OM6OMrI6XlyLlbzmyZKgGoMjw1bYFya5bhywRV8nLmnoFMlmGeIhrO4axAlcd6wKL3E9_pxoEF0tKL66uOjIw4gwh7Ay2zBuuIJOSj6I8iDXwyF0cFBTYMe_DuJ1C3pXm2o3uBdglfc7b4oT_04bEdc9asAMAOzHPDD4x5FfH8/s1882/Install%20OhMyZsh%20on%20macbook%20pro%20m3%202023-12-25%20a%20la(s)%2010.42.32%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instalar Oh My Zsh en MacBook Pro M3" border="0" data-original-height="1126" data-original-width="1882" height="382" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivs7V_6D7sWu9sXHbo_OM6OMrI6XlyLlbzmyZKgGoMjw1bYFya5bhywRV8nLmnoFMlmGeIhrO4axAlcd6wKL3E9_pxoEF0tKL66uOjIw4gwh7Ay2zBuuIJOSj6I8iDXwyF0cFBTYMe_DuJ1C3pXm2o3uBdglfc7b4oT_04bEdc9asAMAOzHPDD4x5FfH8/w640-h382/Install%20OhMyZsh%20on%20macbook%20pro%20m3%202023-12-25%20a%20la(s)%2010.42.32%E2%80%AFp.m..png" title="Instalar Oh My Zsh en MacBook Pro M3" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><h2 style="text-align: left;">Instalación de PowerLevel10k en MacBook Pro M3</h2><p>De acuerdo a las <a href="https://github.com/romkatv/powerlevel10k#homebrew" target="_blank">instrucciones de instalación del sitio oficial</a>, ejecutamos el siguiente par de comandos de instalación via Homebrew:</p><div style="background: rgb(248, 248, 248); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: black; font-style: italic;">brew install powerlevel10k</span>
<span style="color: black; font-style: italic;">echo "source $(brew --prefix)/share/powerlevel10k/powerlevel10k.zsh-theme" >>~/.zshrc</span></pre></div><p>Una vez que has ejecutado tales comandos, powerlevel10k iniciará el proceso de configuración. El mismo programa iTerm2 te preguntará, a través de un banner con fondo amarillo, si permites que PowerLevel10k se ejecute, por lo que te aconsejo hacer click en "Always Allow".</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN99Xjn6hkeTI3pL0qxEfYvfFxu0PoABj1QC803NhzaRGjDSntscgh37ZsaeaabsphUnp-Izidjki9QyyQH2cVfY0phmZ7dqIabPgCL-ny_kS_mMAvhWDwI0l-uA1UGVJLJykyg0lJhXut0KlvPxXXIombPj-5SSl7lZFxJJNURMoyN2lP4I_vajfMgwA/s1330/Instalacio%CC%81n%20de%20Meslo%20en%20PowerLevel10k%202023-12-25%20a%20la(s)%2010.57.10%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instalación de PowerLevel10k en MacBook Pro M3" border="0" data-original-height="924" data-original-width="1330" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN99Xjn6hkeTI3pL0qxEfYvfFxu0PoABj1QC803NhzaRGjDSntscgh37ZsaeaabsphUnp-Izidjki9QyyQH2cVfY0phmZ7dqIabPgCL-ny_kS_mMAvhWDwI0l-uA1UGVJLJykyg0lJhXut0KlvPxXXIombPj-5SSl7lZFxJJNURMoyN2lP4I_vajfMgwA/w640-h444/Instalacio%CC%81n%20de%20Meslo%20en%20PowerLevel10k%202023-12-25%20a%20la(s)%2010.57.10%E2%80%AFp.m..png" title="Instalación de PowerLevel10k en MacBook Pro M3" width="640" /></a></div><br /><p>Una vez que tecleas "y" y das enter, el proceso de configuración de PowerLevel10k instalará las fuentes de manera automática.</p><p><br /></p><p>Una vez terminada la instalación, te solicitará salir del iTerm2 con "Quit" y volverlo a abrir:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2LuHYHgh4VF9ZFClTg1INC5ltMBY99j9y1kdbp5tN3g3FsRFJEI8IKy7Wi9oPXEHIGhXlnVXLgmkHGLH43nBHmNZxqOlW9IWsc346jc76cHOw2IrcoS0FiotC9qH-Hi73ERXj10pcQiWecZZJzQ_cCxKKyRTKZ15DLGUCxWSvgatTr_zeadgPdFnsScU/s1062/Reiniciar%20iTerm2%20para%20aplicar%20los%20cambios%20de%20PowerLevel10k%202023-12-25%20a%20la(s)%2010.58.19%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instalación de PowerLevel10k en MacBook Pro M3" border="0" data-original-height="478" data-original-width="1062" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2LuHYHgh4VF9ZFClTg1INC5ltMBY99j9y1kdbp5tN3g3FsRFJEI8IKy7Wi9oPXEHIGhXlnVXLgmkHGLH43nBHmNZxqOlW9IWsc346jc76cHOw2IrcoS0FiotC9qH-Hi73ERXj10pcQiWecZZJzQ_cCxKKyRTKZ15DLGUCxWSvgatTr_zeadgPdFnsScU/w640-h288/Reiniciar%20iTerm2%20para%20aplicar%20los%20cambios%20de%20PowerLevel10k%202023-12-25%20a%20la(s)%2010.58.19%E2%80%AFp.m..png" title="Instalación de PowerLevel10k en MacBook Pro M3" width="640" /></a></div><br /><p>Vuelvo a abrir el programa de iTerm2 y comenzará el asistente de configuración, el cual llevará varios minutos:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMSU9GHiPaycO_541hW9aTSd3Fl8I3DJxhZUDoaPyYEeXHJUmiPKm3PYBKOty6CWdix5iFENnAt4puRCP0zLHtUaZgu9JYucG0V0_RYs8k86-WsUbyZKeXSEkc3nD4rEuTBhvtKu7F1WdCWaMoS_iMiVHI_0gANMaZYAQfAvbl2-FubBaJAIyvHTxW2Uc/s1296/PowerLevel10k%20candado%202023-12-25%20a%20la(s)%2011.07.19%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - ¿se muestra el icono del candado?" border="0" data-original-height="682" data-original-width="1296" height="336" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMSU9GHiPaycO_541hW9aTSd3Fl8I3DJxhZUDoaPyYEeXHJUmiPKm3PYBKOty6CWdix5iFENnAt4puRCP0zLHtUaZgu9JYucG0V0_RYs8k86-WsUbyZKeXSEkc3nD4rEuTBhvtKu7F1WdCWaMoS_iMiVHI_0gANMaZYAQfAvbl2-FubBaJAIyvHTxW2Uc/w640-h336/PowerLevel10k%20candado%202023-12-25%20a%20la(s)%2011.07.19%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - ¿se muestra el icono del candado?" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicOo9iSJy68slzgaT3OBert2_VcIG0b6ju7D6KA0KaY5m-dNxJehIYJ1FK7z5J5JgfBuvv1Pr0_IS89Lk8xzEE5f1vdR9Evl3I8dClWPUnHDdruPI8en_PIM2kRU9I1iYtXkL2mzVFCSMOOl19gXmUzCU_rs0RNFpGaxV21xz3fxxwFlNWeMNf4Bbqeig/s1296/PowerLevel10k%20diamante%202023-12-25%20a%20la(s)%2011.07.10%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - ¿se muestra el icono del diamante?" border="0" data-original-height="682" data-original-width="1296" height="336" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicOo9iSJy68slzgaT3OBert2_VcIG0b6ju7D6KA0KaY5m-dNxJehIYJ1FK7z5J5JgfBuvv1Pr0_IS89Lk8xzEE5f1vdR9Evl3I8dClWPUnHDdruPI8en_PIM2kRU9I1iYtXkL2mzVFCSMOOl19gXmUzCU_rs0RNFpGaxV21xz3fxxwFlNWeMNf4Bbqeig/w640-h336/PowerLevel10k%20diamante%202023-12-25%20a%20la(s)%2011.07.10%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - ¿se muestra el icono del diamante?" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0UVgQnqSwYWfPaMNHT6p22hZDZWHFF7Shl8I-C5NtA2pHZjuV8At8npUM5ldeesQSGrSlTUcYuTRO9Ckj8Hg5wQlKV-mcaZRfc_o4WNDdCtw1vq2dYufPeNlgTsKAX0SnZIUY_ncIoRa_sKo1xD04PdYQMyu-qXrQHDqimE5rIcDJauhmvEKByXZH_Z0/s1296/PowerLevel10k%20flecha%20hacia%20arriba%202023-12-25%20a%20la(s)%2011.07.28%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - ¿se muestra el icono del flecha?" border="0" data-original-height="682" data-original-width="1296" height="336" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0UVgQnqSwYWfPaMNHT6p22hZDZWHFF7Shl8I-C5NtA2pHZjuV8At8npUM5ldeesQSGrSlTUcYuTRO9Ckj8Hg5wQlKV-mcaZRfc_o4WNDdCtw1vq2dYufPeNlgTsKAX0SnZIUY_ncIoRa_sKo1xD04PdYQMyu-qXrQHDqimE5rIcDJauhmvEKByXZH_Z0/w640-h336/PowerLevel10k%20flecha%20hacia%20arriba%202023-12-25%20a%20la(s)%2011.07.28%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - ¿se muestra el icono del flecha?" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicPc5IwHkEQu-BOKnB2WoXU-dYG-Za26f52Bwu07EOMtVi7rM6ijvg-apBFA-rNxkz6L5C-BLTgyZYa8XEW_8kjOJuIec5BoPU4WDhvmrIL0XPRr_i7kY_8PAbVpTAOKEx-WBmEotOYXsO1OvSP8dWcmWKNk3l2SSlz2mjYqmdqPNjxRZISiZF5T1dKww/s1296/PowerLevel10k%20icons%202023-12-25%20a%20la(s)%2011.11.34%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - ¿Mostrar íconos?" border="0" data-original-height="708" data-original-width="1296" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicPc5IwHkEQu-BOKnB2WoXU-dYG-Za26f52Bwu07EOMtVi7rM6ijvg-apBFA-rNxkz6L5C-BLTgyZYa8XEW_8kjOJuIec5BoPU4WDhvmrIL0XPRr_i7kY_8PAbVpTAOKEx-WBmEotOYXsO1OvSP8dWcmWKNk3l2SSlz2mjYqmdqPNjxRZISiZF5T1dKww/w640-h350/PowerLevel10k%20icons%202023-12-25%20a%20la(s)%2011.11.34%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - ¿Mostrar íconos?" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhySHvXVQxicAdkwSXj5yZSyXlbdvKBrtXJ_PWcRkKtYXYD2ZMUgB0XyArbwe0edlks-PJkOCzVzah7cnqSmBLh8gDtAQJIjH6Y9ztSiwy6o2zAn18ktMIDxKEEPf4V44HvOA7VIaTUTrljEgY_b3z_Io5zx07Df1-1-kcW6neoRY41f1GLdnBriDWfd80/s1296/PowerLevel10k%20instant%20prompt%20mode%202023-12-25%20a%20la(s)%2011.12.30%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - Instant prompt mode" border="0" data-original-height="712" data-original-width="1296" height="352" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhySHvXVQxicAdkwSXj5yZSyXlbdvKBrtXJ_PWcRkKtYXYD2ZMUgB0XyArbwe0edlks-PJkOCzVzah7cnqSmBLh8gDtAQJIjH6Y9ztSiwy6o2zAn18ktMIDxKEEPf4V44HvOA7VIaTUTrljEgY_b3z_Io5zx07Df1-1-kcW6neoRY41f1GLdnBriDWfd80/w640-h352/PowerLevel10k%20instant%20prompt%20mode%202023-12-25%20a%20la(s)%2011.12.30%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - Instant prompt mode" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwO4xozVZ93lW-hreprLu0gOkUAxSc1Ha_JSAWQN232e8-1r16DtJo3akn0Yac-FVheEDfRakueipWV17ZRPtNTtBOVt-TzQeraBMOyltE2TeKgQTJ84Dsj3DA-dvSqemOR7UWKJd4tzJbhcohO6NFnTisNtXIKyVfAilh8rWsqDBZ1Fd-GwJjeZRrags/s1296/PowerLevel10k%20i%CC%81conos%20entre%20cruces%202023-12-25%20a%20la(s)%2011.07.36%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - Muchos íconos sin encimarse" border="0" data-original-height="682" data-original-width="1296" height="336" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwO4xozVZ93lW-hreprLu0gOkUAxSc1Ha_JSAWQN232e8-1r16DtJo3akn0Yac-FVheEDfRakueipWV17ZRPtNTtBOVt-TzQeraBMOyltE2TeKgQTJ84Dsj3DA-dvSqemOR7UWKJd4tzJbhcohO6NFnTisNtXIKyVfAilh8rWsqDBZ1Fd-GwJjeZRrags/w640-h336/PowerLevel10k%20i%CC%81conos%20entre%20cruces%202023-12-25%20a%20la(s)%2011.07.36%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - Muchos íconos sin encimarse" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjytW4iy7xFEDxfdiWtugtCasaREIfGJydKIcfkNjIUMPUXfQu8FLJzzHB4gfwcRlccIh4TO8taxsiHed06gS9YkMsL_vasC7_TbhoXepFRt1YKF7668fph6Oc0RnDe0syfg-yWUHRN8ZxTjVB41OLWruRRnq0vHtQ2ZgBFPnlf3K9eByIhrodaAdxjSV8/s1296/PowerLevel10k%20prompt%20connection%202023-12-25%20a%20la(s)%2011.10.31%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt connection" border="0" data-original-height="852" data-original-width="1296" height="420" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjytW4iy7xFEDxfdiWtugtCasaREIfGJydKIcfkNjIUMPUXfQu8FLJzzHB4gfwcRlccIh4TO8taxsiHed06gS9YkMsL_vasC7_TbhoXepFRt1YKF7668fph6Oc0RnDe0syfg-yWUHRN8ZxTjVB41OLWruRRnq0vHtQ2ZgBFPnlf3K9eByIhrodaAdxjSV8/w640-h420/PowerLevel10k%20prompt%20connection%202023-12-25%20a%20la(s)%2011.10.31%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt connection" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2TASNn-05Xu7KY_qP_K9OqLOA4ngajjHTqN0UpEnO5QiPwT2PqPo7bBPAScvvfkDID9WMbYZfZhgTkpJvRaQS7up0repHpwm778C8yhyphenhyphenZZM3oftVM_FN9zskHYToD5KFY5yCJf2gyjRRcEMQtFwaBD1nso2KJemK7v15W4UthJBnRQ1thMrnpoP4oD24/s1296/PowerLevel10k%20prompt%20flow%202023-12-25%20a%20la(s)%2011.11.46%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt flow" border="0" data-original-height="708" data-original-width="1296" height="350" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2TASNn-05Xu7KY_qP_K9OqLOA4ngajjHTqN0UpEnO5QiPwT2PqPo7bBPAScvvfkDID9WMbYZfZhgTkpJvRaQS7up0repHpwm778C8yhyphenhyphenZZM3oftVM_FN9zskHYToD5KFY5yCJf2gyjRRcEMQtFwaBD1nso2KJemK7v15W4UthJBnRQ1thMrnpoP4oD24/w640-h350/PowerLevel10k%20prompt%20flow%202023-12-25%20a%20la(s)%2011.11.46%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt flow" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Wagy_CB4iY-ZsiIF7nEx7oH68Y_4i_efuzy_M9HKWX7g627D29SHVoGX9h5kIKDLDe33AuGmchpSDz36fJyti1FZCoC6TOTTcSsQfPd8A_X4DperLZSIGnvuNZL_Rnpk3cRg2-qgmvk8rXHXfZX5L_T67JY6JrIcu2QchredjKJN8POZ3FtoNBWj6JU/s1296/PowerLevel10k%20prompt%20frame%202023-12-25%20a%20la(s)%2011.10.41%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt frame" border="0" data-original-height="852" data-original-width="1296" height="420" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Wagy_CB4iY-ZsiIF7nEx7oH68Y_4i_efuzy_M9HKWX7g627D29SHVoGX9h5kIKDLDe33AuGmchpSDz36fJyti1FZCoC6TOTTcSsQfPd8A_X4DperLZSIGnvuNZL_Rnpk3cRg2-qgmvk8rXHXfZX5L_T67JY6JrIcu2QchredjKJN8POZ3FtoNBWj6JU/w640-h420/PowerLevel10k%20prompt%20frame%202023-12-25%20a%20la(s)%2011.10.41%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt frame" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwQ5pdaO6_Ni-gYLPiOWplQWcY1aIYUpNtxOTEt6jECLcLeTENdWkYcZGhm4LhvevRyzzCvKHltP7ubi5SJ4_47JVcyqbJCh46V13OiTsqgHGlEBzcSaHSsDlwM4VvPD81DlAGtnKXhQ1LkV4yUbVIhdD51njZ22wBMI3ndyupny87nxnfhUhEeXrS95s/s1296/PowerLevel10k%20prompt%20heads%202023-12-25%20a%20la(s)%2011.09.39%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt heads" border="0" data-original-height="922" data-original-width="1296" height="456" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwQ5pdaO6_Ni-gYLPiOWplQWcY1aIYUpNtxOTEt6jECLcLeTENdWkYcZGhm4LhvevRyzzCvKHltP7ubi5SJ4_47JVcyqbJCh46V13OiTsqgHGlEBzcSaHSsDlwM4VvPD81DlAGtnKXhQ1LkV4yUbVIhdD51njZ22wBMI3ndyupny87nxnfhUhEeXrS95s/w640-h456/PowerLevel10k%20prompt%20heads%202023-12-25%20a%20la(s)%2011.09.39%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt heads" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMAyVTkpT5QjPZRIg5LoKrqaXmuPUzPwpJfvpZOAc0kLjgT5mq0JKrY2Wyj15YDBnRG9l4Zn7gUdEEbKHXsYiuwq4XRGCcWTdZM2S_FSEe6HihtKiRgmBilQ0nwmWP_q531ljKoqu6ImXBsmHDs-MBy8tHVX9Ueom4oH1KHSTXf90fh_ObxT9mKFOYwHw/s1296/PowerLevel10k%20prompt%20height%202023-12-25%20a%20la(s)%2011.10.09%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt height" border="0" data-original-height="672" data-original-width="1296" height="332" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMAyVTkpT5QjPZRIg5LoKrqaXmuPUzPwpJfvpZOAc0kLjgT5mq0JKrY2Wyj15YDBnRG9l4Zn7gUdEEbKHXsYiuwq4XRGCcWTdZM2S_FSEe6HihtKiRgmBilQ0nwmWP_q531ljKoqu6ImXBsmHDs-MBy8tHVX9Ueom4oH1KHSTXf90fh_ObxT9mKFOYwHw/w640-h332/PowerLevel10k%20prompt%20height%202023-12-25%20a%20la(s)%2011.10.09%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt height" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5_0hSW3isnN5zRWNuz_QJcnIEngB6-fat4dTZ7_IoAsxndUraefxOcOEhnvgQuGVVzm3pY6kfZnh7dz8MUz1bzVed6LAg8bSSg1c5bVC_5NmVAGGCaS3TWT-bJXn_k9cmp9HijnxBLIDBBzHZj8ObeGvfVqOhlKAQgeTsF3vyu8uqq3bN11PP-ni1cQg/s1296/PowerLevel10k%20prompt%20separations%202023-12-25%20a%20la(s)%2011.09.08%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt separator" border="0" data-original-height="922" data-original-width="1296" height="456" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5_0hSW3isnN5zRWNuz_QJcnIEngB6-fat4dTZ7_IoAsxndUraefxOcOEhnvgQuGVVzm3pY6kfZnh7dz8MUz1bzVed6LAg8bSSg1c5bVC_5NmVAGGCaS3TWT-bJXn_k9cmp9HijnxBLIDBBzHZj8ObeGvfVqOhlKAQgeTsF3vyu8uqq3bN11PP-ni1cQg/w640-h456/PowerLevel10k%20prompt%20separations%202023-12-25%20a%20la(s)%2011.09.08%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt separator" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6DOJaQC0fKQ1gb8tElLoE-XLTeGirGNnnT0XTGcng37ozhStawDMq6RYxpl8rxnRdKgk7HKNYki43NhZ6DzQDSHxKrlouhbPHa2cRrvSRl-Dlb5T_BAPoAwqHiUDAXPD4iXolnVk9pqqKiuY-y_0qRoCQdeCiuNGiZ20cc-ggDcK2Q9ZQvMQuYTr6ll4/s1296/PowerLevel10k%20prompt%20spacing%202023-12-25%20a%20la(s)%2011.11.21%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt spacing" border="0" data-original-height="876" data-original-width="1296" height="432" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6DOJaQC0fKQ1gb8tElLoE-XLTeGirGNnnT0XTGcng37ozhStawDMq6RYxpl8rxnRdKgk7HKNYki43NhZ6DzQDSHxKrlouhbPHa2cRrvSRl-Dlb5T_BAPoAwqHiUDAXPD4iXolnVk9pqqKiuY-y_0qRoCQdeCiuNGiZ20cc-ggDcK2Q9ZQvMQuYTr6ll4/w640-h432/PowerLevel10k%20prompt%20spacing%202023-12-25%20a%20la(s)%2011.11.21%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt spacing" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihr41W7atiBlpV3q1hhh-4oxvrsexN2o1ZzOD5kudDONmwMhKZYHguaOoWY6WCB71zD1H8Q73jL06jN7XZ9Pga1zcNXCzs7MrmE1RVLQPVdRk7WXWli9zWwhWVVS740bQTlILelwrAjTBAk8NWqeDpJgvZ97j4WgdH_0IZsfFredWomZ5L_7Vece5C8Go/s1296/PowerLevel10k%20prompt%20style%202023-12-25%20a%20la(s)%2011.08.13%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt style" border="0" data-original-height="854" data-original-width="1296" height="422" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihr41W7atiBlpV3q1hhh-4oxvrsexN2o1ZzOD5kudDONmwMhKZYHguaOoWY6WCB71zD1H8Q73jL06jN7XZ9Pga1zcNXCzs7MrmE1RVLQPVdRk7WXWli9zWwhWVVS740bQTlILelwrAjTBAk8NWqeDpJgvZ97j4WgdH_0IZsfFredWomZ5L_7Vece5C8Go/w640-h422/PowerLevel10k%20prompt%20style%202023-12-25%20a%20la(s)%2011.08.13%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt style" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc36v3B9BVSDmXj1JgkEID4-JmZlXNvxkaydaLGZPy-DYn3A5eESAfjF67v0XkwLV13VCzwk-vAoF6Ejhdjllw_3PaY6LRUdY7ND2Qp6LKmzQmkEfUkWDZ5_xrBJm4EdQN001aJopD44DiYFNOw0KvYAXahg_4VPGbCx7Z9sHCQUR7L4kph4iUN3CYkjQ/s1296/PowerLevel10k%20prompt%20tails%202023-12-25%20a%20la(s)%2011.09.51%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt tails" border="0" data-original-height="922" data-original-width="1296" height="456" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc36v3B9BVSDmXj1JgkEID4-JmZlXNvxkaydaLGZPy-DYn3A5eESAfjF67v0XkwLV13VCzwk-vAoF6Ejhdjllw_3PaY6LRUdY7ND2Qp6LKmzQmkEfUkWDZ5_xrBJm4EdQN001aJopD44DiYFNOw0KvYAXahg_4VPGbCx7Z9sHCQUR7L4kph4iUN3CYkjQ/w640-h456/PowerLevel10k%20prompt%20tails%202023-12-25%20a%20la(s)%2011.09.51%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - prompt tails" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO5b29aJOhedxQxCtJzNTRzJnguoc_9YbXb5nVT-wfdcXgxg3vhKZrgT72jzigdgiU4rZ6DzgYc4MFwKSoIchYfO26idlMlV0nHay1hPnnMTFJ9eZnv_HQZEKGYiK6_5XBTGqJan_-H7JYYZCfIwXKWRZqDYSICpbjwFYLe2qibcS12bbbwCR1E9asnbg/s1296/PowerLevel10k%20show%20current%20time%202023-12-25%20a%20la(s)%2011.08.47%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - show current time" border="0" data-original-height="854" data-original-width="1296" height="422" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiO5b29aJOhedxQxCtJzNTRzJnguoc_9YbXb5nVT-wfdcXgxg3vhKZrgT72jzigdgiU4rZ6DzgYc4MFwKSoIchYfO26idlMlV0nHay1hPnnMTFJ9eZnv_HQZEKGYiK6_5XBTGqJan_-H7JYYZCfIwXKWRZqDYSICpbjwFYLe2qibcS12bbbwCR1E9asnbg/w640-h422/PowerLevel10k%20show%20current%20time%202023-12-25%20a%20la(s)%2011.08.47%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - show current time" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmQ9rPFWcKj6trdMXw5dvWGe9ssXosf_9QSeQwZlXvWLchA7oPwok5i08EYbevaUn4QXbkk_BZUxb9CyEyaZdtHo-jO4cehOPi0XuCARUhWLTV5g9QDJEIbrXBVBwatsdAOF-_ttZNJWytu270aUoD4V3LGK6UkJHeKkdv49ezSgDlBvJy0g_mil66_A0/s1296/PowerLevel10k%20transient%20prompt%202023-12-25%20a%20la(s)%2011.12.03%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - enable transient time" border="0" data-original-height="982" data-original-width="1296" height="484" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmQ9rPFWcKj6trdMXw5dvWGe9ssXosf_9QSeQwZlXvWLchA7oPwok5i08EYbevaUn4QXbkk_BZUxb9CyEyaZdtHo-jO4cehOPi0XuCARUhWLTV5g9QDJEIbrXBVBwatsdAOF-_ttZNJWytu270aUoD4V3LGK6UkJHeKkdv49ezSgDlBvJy0g_mil66_A0/w640-h484/PowerLevel10k%20transient%20prompt%202023-12-25%20a%20la(s)%2011.12.03%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - enable transient time" width="640" /></a></div><br /><p><br /></p><p>Una vez terminada la configuración, podrás ver la terminal con la configuración deseada.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlo_nogdW-ZECQuFFgqDSqOQtp4ApnGF3CiM2Le_quMdhvTPgypLALkh63G7jA4ycV8ADg4NRMjxYGZYOrRk_XYMPtqLKmoNybIj70u2LrlSyQ-K1XXapaJjV6ZODTpUjs1bIr-_-qNTkmd9Ockw6kXk0uqqC2hykOT-76eQLqZgEiLy8Fj6g-dQveCaA/s1296/PowerLevel10k%20instalado%202023-12-25%20a%20la(s)%2011.13.09%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - instalado" border="0" data-original-height="630" data-original-width="1296" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlo_nogdW-ZECQuFFgqDSqOQtp4ApnGF3CiM2Le_quMdhvTPgypLALkh63G7jA4ycV8ADg4NRMjxYGZYOrRk_XYMPtqLKmoNybIj70u2LrlSyQ-K1XXapaJjV6ZODTpUjs1bIr-_-qNTkmd9Ockw6kXk0uqqC2hykOT-76eQLqZgEiLy8Fj6g-dQveCaA/w640-h312/PowerLevel10k%20instalado%202023-12-25%20a%20la(s)%2011.13.09%E2%80%AFp.m..png" title="Instala Oh My Zsh y Powerlevel10k en MacBook Pro M3 - instalado" width="640" /></a></div><br /><h2 style="text-align: left;">Seguir leyendo 🤓</h2><p><a href="https://pathros.blogspot.com/2022/05/zsh-plugins-mas-importantes.html">ZSH plugins más importantes</a>.</p><p>Saludos.</p><p><br /></p><p><br /></p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-29479158442331394452023-12-25T17:08:00.005-06:002023-12-25T20:13:37.406-06:00Instala homebrew en macbook pro<h4 style="text-align: left;">La Importancia de Homebrew en tu MacBook Pro: Potencia y Versatilidad a tu Alcance</h4><p>En la búsqueda constante de optimizar la experiencia en nuestras MacBook Pro, nos encontramos con una herramienta esencial que no debería pasar desapercibida: Homebrew. Esta poderosa plataforma de gestión de paquetes para macOS abre un mundo de posibilidades, mejorando la eficiencia y la versatilidad de tu dispositivo de manera significativa. A continuación, exploraremos por qué Homebrew es una herramienta indispensable para cualquier usuario de MacBook Pro.</p><p><br /></p><h4 style="text-align: left;">1. Facilita la Instalación de Software</h4><p>Una de las mayores ventajas de Homebrew es su capacidad para simplificar la instalación de software. Olvídate de buscar en la web, descargar archivos de instalación y seguir procesos complicados. Con Homebrew, simplemente utilizas la terminal y un comando para instalar aplicaciones, herramientas y utilidades. Esto no solo ahorra tiempo, sino que también reduce el riesgo de descargar software malicioso.</p><p><br /></p><h4 style="text-align: left;">2. Mantén tus Programas Actualizados</h4><p>Con Homebrew, mantener tus programas actualizados es pan comido. Un simple comando "brew update" seguido de "brew upgrade" te permitirá mantener todos tus paquetes y aplicaciones al día, garantizando un rendimiento óptimo y la corrección de vulnerabilidades de seguridad.</p><p><br /></p><h4 style="text-align: left;">3. Acceso a una Biblioteca Extensa</h4><p>Homebrew cuenta con una amplia biblioteca de paquetes que abarcan desde herramientas de desarrollo hasta aplicaciones de productividad, juegos y mucho más. No importa cuál sea tu campo de interés, es probable que encuentres lo que necesitas en el extenso catálogo de Homebrew.</p><p><br /></p><h4 style="text-align: left;">4. Compatibilidad y Control</h4><p>Una de las preocupaciones más comunes al instalar software en una MacBook Pro es la compatibilidad. Homebrew simplifica este proceso al proporcionar versiones específicas de software y paquetes que funcionan sin problemas en macOS. Además, te brinda un control total sobre las dependencias y las versiones de los programas que instalas, lo que garantiza una experiencia de usuario más estable y personalizada.</p><p><br /></p><h4 style="text-align: left;">5. Desarrollo y Personalización</h4><p>Si eres un desarrollador, Homebrew se convierte en una herramienta imprescindible. Te permite instalar rápidamente herramientas de desarrollo, lenguajes de programación y bibliotecas sin complicaciones. Además, puedes personalizar tu entorno de desarrollo según tus necesidades específicas.</p><p><br /></p><p>En resumen, Homebrew es un aliado indispensable para los usuarios de MacBook Pro que buscan maximizar la potencia y versatilidad de sus dispositivos. Simplifica la gestión de software, garantiza la seguridad, y brinda acceso a una amplia gama de aplicaciones y herramientas. Si aún no lo has probado, no esperes más. Descarga Homebrew y descubre cómo puede transformar tu experiencia en tu MacBook Pro.</p><h2 style="text-align: left;">Instalación de Homebrew en MacBook Pro M3</h2><p>Abre la terminal de comandos</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbI4c-L1CfWK1j-5nbIrxhuYYB7Oeb4g0ENjCc9qS3SVir2kPvYcCPM0vejlV5HbWtAVTH_d_n0UG6lP07tD1TnZ3ChXj3mfJlNTvz0khgG7qgYEVkTgpVwsRQU-ojp5Pnr52KMdVlepnQrdNXWEa1wwTN_e3luw-BVejOZa3EOvxSl3PDold-VgRb3RM/s1193/Homebrew%20terminal.png" style="margin-left: 1em; margin-right: 1em;"><img alt="MacBook pro M3 abrir la terminal de comandos para instalar Homebrew" border="0" data-original-height="341" data-original-width="1193" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbI4c-L1CfWK1j-5nbIrxhuYYB7Oeb4g0ENjCc9qS3SVir2kPvYcCPM0vejlV5HbWtAVTH_d_n0UG6lP07tD1TnZ3ChXj3mfJlNTvz0khgG7qgYEVkTgpVwsRQU-ojp5Pnr52KMdVlepnQrdNXWEa1wwTN_e3luw-BVejOZa3EOvxSl3PDold-VgRb3RM/s16000/Homebrew%20terminal.png" title="MacBook pro M3 abrir la terminal de comandos para instalar Homebrew" /></a></div><br /><p>Dentro de la terminal, de acuerdo con el <a href="https://brew.sh/es/" rel="" target="_blank">sitio web oficial</a>, ejecuta el siguiente comando:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #444444;">/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"</span></pre></div><p><br /></p><p>Finalmente, se te solicita ejecutar el siguiente par de comandos:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #444444;">(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/pathros/.zprofile</span></pre></div><p>y</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #444444;">eval "$(/opt/homebrew/bin/brew shellenv)"</span></pre></div><p>Y listo.</p><p>Para comprobar el funcionamiento de Homebrew, ejecuta el siguiente comando:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">brew outdated
brew update
brew upgrade
brew cleanup
brew doctor</pre></div><h2 style="text-align: left;">Instalación de iTerm2 con Homebrew</h2><p>Dado que estoy usando la terminal por defecto de MacBook Pro y quiero utilizar iTerm2, voy a instalarla usando <i>Homebrew</i>:</p><div style="background: rgb(248, 248, 248); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: black; font-style: italic;">brew install --cask iterm2</span></pre></div><p>Una vez que se ha instalado Homebrew, automáticamente queda en la carpeta de Aplicaciones. Lo cual significa que desde ahí puedes crear un acceso directo a iTerm2 en tu dock.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxX30zxx35rTobeLW1AURj4TG8pOHBPmW5-tELUi50uxVv_EqUkIQFkMUaGn_mk5UxhK4OKx4ijcdI5VShZdXd6LKY_Qj3kHrjiGDtOoENvfYvhtr8AeE9jD5fU7Ma0XocuqvD6nJ1SwTi84nFSTxvtlhvVirpehmw0tsyCWLQdqKMSDdy_FETjYSmTLc/s1239/iterm2%20install%20with%20homebrew%202023-12-25%20a%20la(s)%203.44.18%E2%80%AFp.m..png" style="margin-left: 1em; margin-right: 1em;"><img alt="Instalar iTerm2 con Homebrew en MacBook Pro" border="0" data-original-height="546" data-original-width="1239" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxX30zxx35rTobeLW1AURj4TG8pOHBPmW5-tELUi50uxVv_EqUkIQFkMUaGn_mk5UxhK4OKx4ijcdI5VShZdXd6LKY_Qj3kHrjiGDtOoENvfYvhtr8AeE9jD5fU7Ma0XocuqvD6nJ1SwTi84nFSTxvtlhvVirpehmw0tsyCWLQdqKMSDdy_FETjYSmTLc/s16000/iterm2%20install%20with%20homebrew%202023-12-25%20a%20la(s)%203.44.18%E2%80%AFp.m..png" title="Instalar iTerm2 con Homebrew en MacBook Pro" /></a></div><br /><p>Ahora puedes ejecutar el programa de iTerm2 en MacBook Pro M3.</p><h2 style="text-align: left;">Programas de desarrollo web (Laravel) a instalar con Homebrew</h2><p>Con Homebrew, aparte de instalar el programa de iTerm2, se puede también instalar toda una plétora de programas o herramientas para el desarrollo web con Laravel y Docker:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">brew install --cask iterm2
brew install --cask google-chrome
brew install --cask firefox
brew install --cask phpstorm
brew install --cask zoom
brew install --cask mysqlworkbench
brew install --cask docker
brew install --cask android-studio
brew install --cask herd</pre></div><p><br /></p><h2 style="text-align: left;"><span>Instalar programas como herramientas para la ejecución de modelos de lenguaje LLM con Homebrew</span></h2><p><span>Con Homebrew también puedes instalar herramientas para la ejecución y desarrollo de modelos de lenguaje de inteligencia artificial:</span></p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">brew install pyenv
brew install poetry</pre></div><div><br /></div>Saludos<div>y continuará ...</div>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-17572254699040744922023-12-02T22:54:00.008-06:002023-12-27T21:37:56.720-06:00Instalación de PrivateGPT en MacOS intel<p>En este post veremos cómo instalar PrivateGPT en laptop local MacOS intel.</p><h2 style="text-align: left;">Requisitos</h2><p></p><ul style="text-align: left;"><li>Tener instalado Homebrew</li><li>Contar con un manejador de versiones de Python. En este caso: <a href="https://formulae.brew.sh/formula/pyenv#default" target="_blank">pyenv</a>.</li><li>Instalar <a href="https://formulae.brew.sh/formula/poetry#default" target="_blank">poetry</a> con homebrew.</li></ul><h2 style="text-align: left;">Actualización y chequeo de Homebrew en MacOS</h2><div><div>Antes que nada, primero actualizo mi homebrew con la siguiente serie de comandos:</div><p></p><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">brew outdated
brew update
brew upgrade
brew cleaunp
brew doctor</pre></div></div></div><h2 style="text-align: left;">Instalación de Poetry en MacOS</h2><div>De acuerdo a la página de <a href="https://formulae.brew.sh/formula/poetry" target="_blank">Homebrew para instalar Poetry</a>, el comando que hay que aplicar es:</div><div><br /></div><p></p><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">brew install poetry</pre></div></div><h2 style="text-align: left;">Instalación de PrivateGPT</h2><h4 style="text-align: left;">Descarga o clonación del proyecto desde Github.</h4><div>Recomiendo tener tus proyectos Python en carpetas que puedas localizar e identificar fácilmente. En mi caso he creado una carpeta "python", dentro de dicha carpeta, procedo a clonar el proyecto con el siguiente comando:</div><div><br /></div><p></p><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">git clone https://github.com/imartinez/privateGPT
ls
<span style="color: #007020;">cd </span>privateGPT</pre></div></div><p></p><div><br /></div><div>El primer comando va a crear la carpeta "privateGPT" desde la carpeta en la que te encuentres. El segundo comando es para listar las carpetas y puedas comprobar que efectivamente se ha creado la carpeta "privateGPT". El tercer comando se refiere a que vas a entrar a dicha carpeta. De igual forma, puedes aplicar "ls" dentro de la carpeta "privateGPT" para ver el listado de archivos descargados.</div><div><br /></div><h4 style="text-align: left;">Versión 3.11 de Python</h4><div>De acuerdo a la <a href="https://docs.privategpt.dev/installation" target="_blank">documentación oficial de PrivateGPT</a>, se requiere tener instalada la versión 3.11 de Python. Probablemente tú tengas otra versión instalada de python:</div><div><br /></div><p></p><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">pyenv versions
pyenv install -l
pyenv install 3.11.6</pre></div></div><p></p><div><br /></div><div>De lo anterior, con el primer comando listo las versiones que tengo instaladas y veo que no tengo la 3.11. Con el segundo comando, se despliegan todas las versiones de Python disponibles, por lo que elijo la más actual de la versión 3.11.x, en este caso la 3.11.6. Con el tercer comando procedo a instalar la versión 3.11.6.</div><div><br /></div><div>Ahora, para aplicar esta versión a mi carpeta de "privateGPT", estando dentro de esa carpeta, ejecuto el siguiente comando:</div><p></p><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">pyenv <span style="color: #007020;">local </span>3.11.6</pre></div></div><p></p><div>El cual configura a que la carpeta de "privateGPT" aplique la versión de Python 3.11.6, lo cual puedo comprobar con el siguiente comando:</div><p></p><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #333333;">python -V
</span><span style="color: #45818e;">Python 3.11.6</span></pre></div></div><p></p><div><br /></div><h4 style="text-align: left;">Creación de ambiente virtual Python 3.11</h4><div>Ahora considero que es recomendable crear un ambiente virtual con esta versión de Python 3.11.x para instalar "privateGPT" con todas sus dependencias requeridas.</div><div><br /></div><div>Procedo a crear el ambiente virtual, llamándolo "privateGPT" con el siguiente comando:</div><p></p><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">pyenv virtualenv privateGPT</pre></div></div><p></p><div>Para comprobar que estoy utilizando la versión 3.11.x de Python, aplico el siguiente comando:</div><p></p><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #333333;">pyenv which python
</span><span style="color: #45818e;">/Users/<b>yo_mero</b>/.pyenv/versions/3.11.6/bin/python</span></pre></div></div><p></p><div><br /></div><div>Y ahora hay que activar dicho ambiente virtual:</div><p></p><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">pyenv activate privateGPT</pre></div></div><p></p><div><br /></div><div>Si te sale el siguiente error:</div><p></p><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #990000;">Failed to activate virtualenv.
Perhaps pyenv-virtualenv has not been loaded into your shell properly.
Please restart current shell and try again.</span></pre></div></div><p></p><div>Yo usando ZSH, tuve que agregar ciertas directivas, de acuerdo a esta respuesta en StackOverflow "<a href="https://stackoverflow.com/a/71867424/1883256" target="_blank">Failed to activate virtualenv with pyenv</a>".</div><div><br /></div><div>Abrir el archivo zsh de configuración:</div><p></p><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">vim ~/.zshrc</pre></div></div><p></p><div>Verificar que tengamos lo siguiente:</div><p></p><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #888888;"># Pyenv - https://gist.github.com/josemarimanio/9e0c177c90dee97808bad163587e80f8</span>
<span style="color: #007020;">export </span><span style="color: #996633;">PATH</span>=<span style="background-color: #fff0f0;">"/$HOME/.pyenv/shims:${PATH}"</span>
<span style="color: #007020;">export </span><span style="color: #996633;">PYENV_VIRTUALENV_DISABLE_PROMPT</span>=1
<span style="color: #007020;">eval</span> <span style="background-color: #fff0f0;">"$(pyenv init --path)"</span>
<span style="color: #007020;">eval</span> <span style="background-color: #fff0f0;">"$(pyenv init -)"</span>
<span style="color: #007020;">eval</span> <span style="background-color: #fff0f0;">"$(pyenv virtualenv-init -)"</span></pre></div></div><p></p><div>Recargar la configuración.</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #007020;">source</span> ~/.zshrc</pre></div></div><div><br /></div><div>Por otro lado, si no te acuerdas del nombre del ambiente virtual, puedes obtenerlo con el siguiente comando:</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #333333;">pyenv virtualenvs
</span><span style="color: #45818e;">3.11.6/envs/privateGPT (created from /Users/<b>yo_mero</b>/.pyenv/versions/3.11.6)
privateGPT (created from /Users/<b>yo_mero</b>/.pyenv/versions/3.11.6)</span></pre></div></div><div><br /></div><div><br /></div><h4 style="text-align: left;">Actualización de pip</h4><div>Dado que estamos en un ambiente virtual, cada vez que hago la instalación de un programa en ambiente virtual, me sale un mensaje de que me recomiendan actualizar pip, por lo que de una vez ejecutamos la instalación:</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">pip install --upgrade pip</pre></div></div><div><br /></div><h4 style="text-align: left;">Instalación de las dependencias de PrivateGPT con Poetry</h4><div>Ejecutamos el siguiente comando:</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">poetry install --with ui,local</pre></div></div><div><br /></div><div>lo cual procederá a instalar todas las dependencias requeridas:</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">poetry install --with ui,local
Installing dependencies from lock file
Package operations: 163 installs, 1 update, 0 removals
...
Installing the current project: private-gpt (0.1.0)</pre></div></div><div><br /></div><div>Ahora, vamos a correr el programa (por ser la primera vez, se tardará, en mi caso como 11 minutos, ya que debe descargar primero el modelo de lenguaje que tiene por defecto en el archivo settings.yaml, es decir, el Mistral 7B.</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">poetry run python scripts/setup</pre></div></div><div><br /></div><div>Entonces, ya cuando termina avisa:</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">mistral-7b-instruct-v0.1.Q4_K_M.gguf: 100%|
4.37G/4.37G [10:10<00:00, 7.15MB/s]
LLM model downloaded!
Setup <span style="color: #008800; font-weight: bold;">done</span></pre></div></div><div><br /></div><div>Configuración adicional para MacOS</div><div>De acuerdo a la <a href="https://docs.privategpt.dev/installation#osx-gpu-support" target="_blank">documentación oficial</a>, hay que aplicar el siguiente comando:</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #996633;">CMAKE_ARGS</span>=<span style="background-color: #fff0f0;">"-DLLAMA_METAL=on"</span> pip install --force-reinstall --no-cache-dir llama-cpp-python</pre></div></div><div><br /></div><div>El cual en mi caso ha instalado todo sin problemas.</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">Collecting llama-cpp-python
Installing build dependencies ... <span style="color: #008800; font-weight: bold;">done</span>
<span style="color: #008800; font-weight: bold;"> </span>Getting requirements to build wheel ... <span style="color: #008800; font-weight: bold;">done</span>
<span style="color: #008800; font-weight: bold;"> </span>Installing backend dependencies ... <span style="color: #008800; font-weight: bold;">done</span>
<span style="color: #008800; font-weight: bold;"> </span>Preparing metadata (pyproject.toml) ... <span style="color: #008800; font-weight: bold;">done</span>
Successfully built llama-cpp-python
Successfully installed diskcache-5.6.3 llama-cpp-python-0.2.20 numpy-1.26.2 typing-extensions-4.8.0</pre></div></div><div><br /></div><div>Continuando con la <a href="https://docs.privategpt.dev/manual/advanced-setup/llm-backends#local-models" target="_blank">documentación oficial</a>, ahora hay que ejecutar el siguiente comando</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #996633;">PGPT_PROFILES</span>=<span style="color: #007020;">local </span>make run</pre></div></div><div><br /></div><div>Pero tuve el error de "segmentation fault 11", por lo que, de acuerdo a esta <a href="https://github.com/imartinez/privateGPT/issues/1182#issuecomment-1814179193" target="_blank">respuesta en github "Disable metal"</a>, tuve que ejecutar el siguiente comando para deshabilitar el uso del GPU ya que probablemente no tiene la suficiente capacidad en memoria:</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #996633;">CMAKE_ARGS</span>=<span style="background-color: #fff0f0;">"-DLLAMA_METAL=off"</span> pip install --force-reinstall --no-cache-dir llama-cpp-python</pre></div></div><div><br /></div><div>Volví a intentar con el comando</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #996633;">PGPT_PROFILES</span>=<span style="color: #007020;">local </span>make run</pre></div></div><div><br /></div><div>Y ahora sí arrancó el programa de PrivateGPT después de varios minutos. La aplicación en PrivateGPT se abre desde un navegador en la dirección <a href="http://localhost:8001/" target="_blank">http://localhost:8001/</a>.</div><div><br /></div><h4 style="text-align: left;">Aumentar la capacidad de respuesta (número de tokens)</h4><div>Resulta que las respuestas se pueden quedar cortas, por lo que de acuerdo a este foro en GitHub "<a href="https://github.com/imartinez/privateGPT/issues/1243#issuecomment-1819942062" target="_blank">How to increase the response message length</a>", hay que editar el archivo (con tu editor favorito, en mi caso con vim) con el siguiente comando:</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">vim private_gpt/components/llm/llm_component.py</pre></div></div><div><br /></div><div>y la configuración debe quedar como sigue, en mi caso le aumenté a 2048 tokens:</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #333333;"> self.llm = LlamaCPP(
</span><span style="color: #996633;">model_path</span><span style="color: #333333;">=str(models_path / settings.local.llm_hf_model_file),
</span><span style="color: #996633;">temperature</span><span style="color: #333333;">=0.1,
</span><span style="color: #888888;"># max_new_tokens=settings.llm.max_new_tokens,</span><span style="color: #333333;">
</span><span style="color: #04ff00;"><b>max_new_tokens</b></span><span style="color: #333333;">=</span><span style="color: #ff00fe;">2048</span><span style="color: #333333;">,</span></pre></div></div><div><br /></div><div><br /></div><div>guardamos y cerramos y volvemos a arrancar el programa para que se apliquen los cambios.</div><p></p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-72849421742395163292023-11-11T14:41:00.005-06:002023-11-11T15:03:48.146-06:00Dominando la IA: Curso Esencial de Inteligencia Artificial y Análisis de Datos<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigEVrbHsSX0Qmiqwq59AuAZzUyGo6pIve1nuzuJnG3hyphenhyphenW08lDuxl7ME9Wv9FeI3YUS_M4neFIZR6c1mRyIs_lmdFWqcLRPLn7nEe_8rX7xshUv6Z6CuOTYFHCZXeMs0qoJESD_VFilhJzYyIOXCJcsgQPbNzG3WLDYwDtj9zCyP9hbmo0y2PPIoH10-Xs/s1280/Taller_IA_alt.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="Curso de Inteligencia Artificial y Análisis de Datos por UNAM - Aprende sobre Chat GPT, Large Language Models y herramientas prácticas de IA" border="0" data-original-height="1280" data-original-width="988" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigEVrbHsSX0Qmiqwq59AuAZzUyGo6pIve1nuzuJnG3hyphenhyphenW08lDuxl7ME9Wv9FeI3YUS_M4neFIZR6c1mRyIs_lmdFWqcLRPLn7nEe_8rX7xshUv6Z6CuOTYFHCZXeMs0qoJESD_VFilhJzYyIOXCJcsgQPbNzG3WLDYwDtj9zCyP9hbmo0y2PPIoH10-Xs/s16000/Taller_IA_alt.jpg" title="Taller de Inteligencia Artificial y Análisis de Datos por UNAM - Aprende sobre Chat GPT, Large Language Models y herramientas prácticas de IA" /></a></div><br /><p><br /></p><h2 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em;"><span style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-size: 16px; white-space-collapse: preserve;"><span face="Söhne, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, Helvetica Neue, Arial, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji">Curso-Taller</span></span></h2><h3 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 1.25em; line-height: 1.6; margin: 0px 0px 0.5rem; white-space-collapse: preserve;">Manejo de Herramientas de Inteligencia Artificial para Investigación y Análisis de Datos</h3><h2 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px 0px 1.25em; text-align: left;"><span color="var(--text-primary)" face="Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-size: 16px; white-space-collapse: preserve;">Introducción</span><span color="var(--text-primary)" face="Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"" style="font-size: 16px; white-space-collapse: preserve;">:</span></h2><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;">En la era de la información, dominar la Inteligencia Artificial (IA) y el análisis de datos se ha convertido en una habilidad crucial. Este curso intensivo, avalado por el Instituto de Investigaciones Sociales de la UNAM a través de su Departamento de Educación Continua, está diseñado para equiparte con habilidades prácticas y avanzadas en el manejo de herramientas de IA, con un enfoque especial en la investigación y análisis de datos.</p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span color="var(--text-primary)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">¿Qué Aprenderás?</span>:</p><ol style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); counter-reset: list-number 0; display: flex; flex-direction: column; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; list-style: none; margin: 1.25em 0px; padding: 0px; white-space-collapse: preserve;"><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><span color="var(--tw-prose-bold)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600; margin-bottom: 1.25em; margin-top: 1.25em;">Fundamentos y Capacidades Avanzadas de Chat GPT</span>: Descubre cómo aprovechar al máximo esta poderosa herramienta para tareas complejas de análisis y generación de datos.</li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><span color="var(--tw-prose-bold)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600; margin-bottom: 1.25em; margin-top: 1.25em;">Profundización en Large Language Models (LLM)</span>: Entiende la arquitectura y el funcionamiento de los modelos de lenguaje, clave en el procesamiento de datos a gran escala.</li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><span color="var(--tw-prose-bold)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600; margin-bottom: 1.25em; margin-top: 1.25em;">Inteligencia Artificial Generativa</span>: Explora cómo la IA puede crear nuevos datos y patrones, esencial para la innovación en investigación.</li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><span color="var(--tw-prose-bold)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600; margin-bottom: 1.25em; margin-top: 1.25em;">Manejo Práctico de Herramientas de IA en Línea</span>: Desde la extracción de información de PDFs usando lenguaje natural hasta la generación de imágenes con IA, abarcaremos herramientas vanguardistas para diversas aplicaciones.</li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><span color="var(--tw-prose-bold)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600; margin-bottom: 1.25em; margin-top: 1.25em;">Análisis Exploratorio de Datos (AED) con IA</span>: Aprende a limpiar, analizar y visualizar datos, un paso crítico para cualquier proyecto de investigación.</li></ol><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span color="var(--text-primary)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">Aplicaciones Prácticas</span>:</p><ul style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); display: flex; flex-direction: column; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; list-style: outside; margin: 1.25em 0px; padding: 0px; white-space-collapse: preserve;"><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); display: block; margin: 0px; min-height: 28px; padding-left: 0.375em;"><span color="var(--tw-prose-bold)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600; margin-bottom: 1.25em; margin-top: 1.25em;">Investigación Académica</span>: Mejora tus métodos de investigación con técnicas avanzadas de IA. Por ejemplo, utiliza Chat GPT para resumir y analizar rápidamente grandes volúmenes de literatura académica.</li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); display: block; margin: 0px; min-height: 28px; padding-left: 0.375em;"><span color="var(--tw-prose-bold)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600; margin-bottom: 1.25em; margin-top: 1.25em;">Análisis de Negocios</span>: Implementa modelos predictivos para segmentación de clientes o mantenimiento predictivo, aumentando la eficiencia y efectividad en la toma de decisiones.</li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); display: block; margin: 0px; min-height: 28px; padding-left: 0.375em;"><span color="var(--tw-prose-bold)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600; margin-bottom: 1.25em; margin-top: 1.25em;">Innovación en la Industria Creativa</span>: Utiliza herramientas generativas para crear contenido visual o textual único, abriendo nuevas posibilidades en marketing y diseño.</li></ul><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span color="var(--text-primary)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">Metodología</span>:
El curso se impartirá en una modalidad virtual interactiva a través de Zoom, con un total de 36 horas de formación. Las sesiones serán grabadas para que puedas revisarlas a tu propio ritmo.</p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span color="var(--text-primary)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">Certificación</span>:
Al finalizar el curso, recibirás una constancia con el respaldo del Departamento de Educación Continua del Instituto de Investigaciones Sociales de la UNAM, un sello de calidad y reconocimiento en tu formación profesional.</p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span color="var(--text-primary)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">Inversión en tu Futuro</span>:
Con una inversión de $5,000 MXN, este curso no solo amplía tus conocimientos técnicos, sino que te abre puertas a nuevas oportunidades en el ámbito profesional y académico.</p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span color="var(--text-primary)" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-weight: 600;">Inscríbete Hoy</span>:
No pierdas la oportunidad de estar a la vanguardia en el uso de la inteligencia artificial para investigación y análisis de datos. Contacta vía email para más detalles y asegura tu lugar en este curso transformador.</p><div style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; text-align: center; white-space-collapse: preserve;"><span style="color: #0b5394;"><b>capacitacion@sociales.unam.mx</b></span></div><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); margin: 1.25em 0px; text-align: center;"><span style="font-family: Söhne, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, Helvetica Neue, Arial, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;"><span style="white-space-collapse: preserve;"><a href="https://www.iis.unam.mx/taller-IA/" target="_blank">https://www.iis.unam.mx/taller-IA/</a></span></span></p><h4 style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; text-align: left; white-space-collapse: preserve;"><b>Preguntas frecuentes - FAQs</b></h4><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><b>¿Las clases se van a quedar grabadas para que las pueda consultar después?</b></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;">Sí. Grabaremos las clases para que las puedan consultar después.</p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><b>¿Cómo saber si cumplo con las condiciones computacionales que especifica el formulario?</b></p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;">Si cuenta con una computadora de reciente adquisición (desde hace 5 años), probablemente los cumpla. Pero no se preocupe, para la parte de instalación y manejo de aplicaciones de IA en computadora local, nos enfocaremos en el Software y Modelos de Lenguaje que ocupen pocos recursos de cómputo, para que todos los participantes podamos hacer uso de ellos y sacarle el máximo provecho en nuestro quehacer académico y productivo.</p><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--text-primary); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><br /></p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-43702905242531527242023-09-13T12:15:00.004-06:002023-09-13T12:17:33.782-06:00Laravel migrations General error: 1824 Failed to open the referenced table<p>When you have a series of migration files with relationship constraints and you get the following error:</p><p> Illuminate\Database\QueryException</p><p> SQLSTATE[HY000]: General error: 1824 Failed to open the referenced table 'should_be_run_first' (Connection: mysql, SQL: alter table `run_later` add constraint `run_first_id_foreign` foreign key (`run_first_id`) references `should_be_run_first` (`id`) on delete cascade on update cascade)</p><p>In my case I fixed it by changing the order (name) of the migration files. Obviously, if the referenced table is not created first, you will get the "Failed to open the referenced table" error.</p><h2 style="text-align: left;">Reference</h2><p><a href="https://stackoverflow.com/a/76985739/1883256" target="_blank">Stackoverflow answer</a>.</p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-15405788412560722402023-09-13T10:33:00.003-06:002023-09-13T10:33:17.686-06:00Aplicación Filament PHP lenta<p>He tenido dificultades para trabajar con Filament PHP tanto en el entorno local como en el de producción.</p><p>Cuando comencé un nuevo proyecto en Filament PHP v3, la aplicación se inició extremadamente rápido, especialmente porque pensé que también era gracias a la nueva versión de Livewire. También uso muchos iconos de kit de interfaz de usuario de Blade. Entonces, cuando comencé a instalar varios paquetes de esos íconos de Blade, noté que mi Filament v3 se volvió lento nuevamente. ... así que cuando leí la <a href="https://github.com/filamentphp/filament/discussions/6120#discussioncomment-6398535" target="_blank">respuesta de @relayer464</a> `php craft icon:cache` tuvo sentido para mí. ¡Así que lo probé ahora en el entorno local y volvió a ser rápido!</p><p><br /></p><p>Ahora, volviendo a la aplicación PHP anterior de Filament, ejecuté el comando `php artisan icon:cache` en modo local, y la aplicación también se volvió rápida. En el modo de producción, se volvió bastante más rápido.</p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-28122822231179914402023-09-13T10:32:00.004-06:002023-09-13T10:32:46.156-06:00Filament PHP slow How to fix <p>I have been struggling working with Filament PHP both in local and production environment. </p><p>When I started a new project in Filament PHP v3, the application started extremely fast, especially because I thought it was also thanks to the new version of Livewire. I also use lots of blade ui-kit-icons. So, when I started to install several packages of those blade icons, then I noticed that my Filament v3 turned slow again! ... so when I read the <a href="https://github.com/filamentphp/filament/discussions/6120#discussioncomment-6398535" target="_blank">answer of @relayer464</a> `php artisan icons:cache` it kinda made sense to me. </p><p>So I tried it now in local environment and it got fast again!</p><p><br /></p><p>Now back to the older Filament PHP application, I executed the `php artisan icons:cache` command in local mode, and the application got fast as well. In production mode, it got quite a bit faster.</p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-59486721262245042852023-08-20T18:25:00.006-06:002023-08-20T18:42:22.596-06:00zsh: command not found: docker<p>I have just installed Docker Desktop for MacOS.</p><p>In the iTerm2 terminal with zsh, when testing Docker I got the following error:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">❯ docker ps
zsh: <span style="color: #007020;">command </span>not found: docker
❯ docker-compose up -d --build
zsh: <span style="color: #007020;">command </span>not found: docker-compose</pre></div><p>What you have to do is to tell Zsh where the docker and docker-compose bin are located, as well as the alias. First, test whether your docker and docker-compose are located in the following path (should you have installed Docker Desktop for Mac). According to Docker Desktop: "<i>Docker CLI tools are installed under $HOME/.docker/bin. Note: You need to manually add $HOME/.docker/bin to your PATH.</i>"</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">ls -lah /Applications/Docker.app/Contents/Resources/bin/</pre></div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">ls -lah <span style="color: #996633;">$HOME</span>/.docker/bin</pre></div><p>If you see both docker and docker-compose, then you only need to add the aliases in the .zshrc file like so:</p><p>Use your favorite editor, such as nano or vim:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">vim ~/.zshrc</pre></div><p>At the end of the file add the following lines (<b>docker-compose will only work if you set the path to your local home .docker bin</b>):</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #888888;"># Add Docker Desktop for Mac (docker)</span>
<span style="color: #007020;">export </span><span style="color: #996633;">PATH</span>=<span style="background-color: #fff0f0;">"$HOME/.docker/bin:$PATH"</span></pre></div><p>Reload the changes as follows:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #007020;">source</span> ~/.zshrc</pre></div><p>Now you should see both docker and docker-compose working in your MacOS iTerm2 terminal:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES</pre></div><p><br /></p><p>🥃</p><h2 style="text-align: left;">Reference</h2><p><a href="https://stackoverflow.com/a/74758740/1883256" target="_blank">https://stackoverflow.com/a/74758740/1883256</a></p><p><br /></p><p><br /></p><p><br /></p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-90628919430025881752023-08-09T10:49:00.002-06:002023-08-17T10:00:43.278-06:00Uninstall Laravel Valet<p>I have just tried Laravel Herd, which I find much easier to manage and avoids lots of warnings and errors in homebrew that I've gone through due to Laravel Valet.</p><h2 style="text-align: left;">Steps to uninstall Laravel Valet in favor of Laravel Herd</h2><p>Once you have installed Laravel Herd (after using Laravel Valet), you may face problems due to the dnsmasq (localhost address already in use)</p><p>I recommend to stop Laravel Valet like so:</p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">valet stop</pre></div><p>To start uninstalling Laravel Valet, execute the following command:</p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">composer global remove laravel/valet</pre></div><p>Then you can list the homebrew packages related to Laravel Valet that you might want to uninstall to free disk space:</p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">brew list</pre></div><p>So I decided to uninstall the dnsmasq package:</p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">brew uninstall dnsmasq
Uninstalling /opt/homebrew/Cellar/dnsmasq/2.89... <span style="color: #555555;">(</span>10 files, 646.4KB<span style="color: #555555;">)</span>
Warning: The following may be dnsmasq configuration files and have not been removed!
If desired, remove them manually with <span style="color: #cc3300;">`</span>rm -rf<span style="color: #cc3300;">`</span>:
/opt/homebrew/etc/dnsmasq.conf
/opt/homebrew/etc/dnsmasq.conf.default
/opt/homebrew/etc/dnsmasq.d
rm -rf /opt/homebrew/etc/dnsmasq.conf
rm -rf /opt/homebrew/etc/dnsmasq.conf.default
rm -rf /opt/homebrew/etc/dnsmasq.d</pre></div><p>and uninstall the PHP packages in homebrew</p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">brew uninstall php
Error: Refusing to uninstall /opt/homebrew/Cellar/php/8.2.8
because it is required by composer, which is currently installed.
You can override this and force removal with:
brew uninstall --ignore-dependencies php</pre></div><p>In this case, I couldn't uninstall the PHP, so I'll leave it like that.</p><p><br /></p><p>After uninstalling dnsmasq, Laravel Herd is still working fine.</p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-6121778597828459352023-08-07T13:44:00.001-06:002023-08-31T16:09:44.446-06:00Laravel Herd file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed<p>Using Laravel Herd with snappy php I got the following error:</p><p>> file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:0A000086:SSL routines::certificate verify failed</p><p><br /></p><p>What I did was first to check the path of the openssl in the terminal like so:</p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">openssl version -a</pre></div><p>Where I paid attention to this part of the response:</p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">OPENSSLDIR: <span style="color: #cc3300;">"/opt/homebrew/etc/openssl@3"</span></pre></div><p>So I listed the files:</p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">❯ ls -lah /opt/homebrew/etc/openssl@3
total 80
drwxr-xr-x@ 8 user admin 256B Aug 7 10:15 .
drwxrwxr-x@ 24 user admin 768B Aug 7 10:13 ..
lrwxr-xr-x@ 1 user admin 27B Aug 7 10:13 cert.pem -> ../ca-certificates/cert.pem
-rw-r--r--@ 1 user admin 412B Aug 7 10:13 ct_log_list.cnf
-rw-r--r--@ 1 user admin 412B Aug 7 10:13 ct_log_list.cnf.dist
drwxr-xr-x@ 7 user admin 224B Aug 7 10:13 misc
-rw-r--r--@ 1 user admin 12K Aug 7 10:13 openssl.cnf
-rw-r--r--@ 1 user admin 12K Aug 7 10:13 openssl.cnf.dist</pre></div><p>where I see that there's that "cert.file".</p><p>So I copied and pasted that location in the corresponding Laravel Herd php.ini, using your favorite text editor, like so:</p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">❯ vim /Users/myself/Library/Application<span style="color: #cc3300; font-weight: bold;">\ </span>Support/Herd/config/php/82/php.ini</pre></div><p>And commented the original cacert.pem file path and added the hombrew's cert.pem file:</p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">curl.cainfo<span style="color: #555555;">=</span>/Users/myself/Library/Application Support/Herd/config/php/cacert.pem
;openssl.cafile<span style="color: #555555;">=</span>/Users/myself/Library/Application Support/Herd/config/php/cacert.pem
;openssl.cafile<span style="color: #555555;">=</span>/Users/myself/Herd/cacert.pem
openssl.cafile<span style="color: #555555;">=</span>/opt/homebrew/etc/openssl@3/cert.pem
pcre.jit<span style="color: #555555;">=</span>0</pre></div><p>I restarted all the services in Laravel Herd and now it works! The error faded away.</p><p><br /></p><h2 style="text-align: left;">Problem comes back if php is updated</h2><p>In Laravel Herd I got a notification of php 8.2 update, after I updated I noticed the problem came back and I haven't been able to fix it.</p><p>In production the application is working fine, in development I now get that error.</p><p>Since I am using the `bacon qr package`, and that the problem lies in the `file_get_contents()` function, I decided to modify that code that is in the /vendor directory, which will not be synced with production and it's just a quick fix for my development environment.</p><p>I modified the `vendor/simplesoftwareio/simple-qrcode/src/Generator.php` class in the public function image where I changed the parameters for the `file_get_contents()` like so:<br /><br /></p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">public function merge(string $filepath, float $percentage = .2, bool $absolute = false): self
{
if (function_exists('base_path') && ! $absolute) {
$filepath = base_path().$filepath;
}
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$this->imageMerge = file_get_contents($filepath,false,stream_context_create($arrContextOptions));
$this->imagePercentage = $percentage;
return $this;
}</pre></div><p><br />as explained in the reference.<br /><br /></p><h2 style="text-align: left;">Reference</h2><p><a href="https://stackoverflow.com/a/72673862/1883256" target="_blank">https://stackoverflow.com/a/72673862/1883256</a></p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-9803660098456892452023-08-07T11:45:00.001-06:002023-08-09T10:37:18.617-06:00Laravel Herd dnsmasq: failed to create listening socker for 127.0.0.1: address already in use.<p>I have been using Laravel Valet on MacOS M1. Now I have just installed Laravel Herd. However, I've encountered the following error:</p><p>><span style="color: #444444;"> <span style="box-sizing: border-box; caret-color: rgb(248, 248, 242); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;">dnsmasq</span><span class="token" style="box-sizing: border-box; caret-color: rgb(248, 248, 242); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;">:</span><span style="box-sizing: border-box; caret-color: rgb(248, 248, 242); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;"> failed </span><span class="token" style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;">to</span><span style="box-sizing: border-box; caret-color: rgb(248, 248, 242); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;"> create listening socker </span><span class="token" style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;">for</span><span style="box-sizing: border-box; caret-color: rgb(248, 248, 242); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;"> </span><span class="token" style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;">127.0</span><span class="token" style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;">.0</span><span class="token" style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;">.1</span><span class="token" style="box-sizing: border-box; caret-color: rgb(248, 248, 242); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;">:</span><span style="box-sizing: border-box; caret-color: rgb(248, 248, 242); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;"> address already </span><span class="token" style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;">in</span><span style="box-sizing: border-box; caret-color: rgb(248, 248, 242); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;"> </span><span class="token" style="box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;">use</span><span style="box-sizing: border-box; caret-color: rgb(248, 248, 242); font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 14.08px; white-space: pre;">.</span></span></p><p> During the installation of Laravel Herd, it asked me to stop the valet service, which I executed in the terminal:</p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">❯ valet stop
Password:
Stopping php...
Stopping nginx...
Stopping dnsmasq...
Valet services have been stopped.</pre></div><p>Then I went on installing Laravel Herd, so far so good, but I got the dnsmasq error, which I try to fix it first by restarting the MacOS. Then I realized that Valet restarted. And the dnsmasq error was still there, so I stopped Valet again and then I tried anyway to stop the dnsmasq service:</p><div style="background: rgb(240, 243, 243); border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">❯ brew services stop dnsmasq
Error: Service <span style="color: #cc3300;">`</span>dnsmasq<span style="color: #cc3300;">`</span> is started as <span style="color: #cc3300;">`</span>root<span style="color: #cc3300;">`</span>. Try:
sudo brew services stop dnsmasq
❯ sudo brew services stop dnsmasq
Stopping <span style="color: #cc3300;">`</span>dnsmasq<span style="color: #cc3300;">`</span>... <span style="color: #555555;">(</span>might take a <span style="color: #006699; font-weight: bold;">while</span><span style="color: #555555;">)</span>
<span style="color: #555555;">==</span>> Successfully stopped <span style="color: #cc3300;">`</span>dnsmasq<span style="color: #cc3300;">`</span> <span style="color: #555555;">(</span>label: homebrew.mxcl.dnsmasq<span style="color: #555555;">)</span></pre></div><p><br /></p><p>And then finally the dnsmasq service was finally working.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy2GqjJooCaRCUzOVK7TjsMEPbIKBIdWps_-v63roAPmp-P_HFn7RRNk6U4pRetEu3FS5csyQZunAmFhHaRTouyDZILn4NA3O5J951MwOgT94emPs8lnqa9vQF97ji1CBE64pwQUFxmQwzx2AWy3di252sO0_Ih9GpUjnlSdgx7rs0wzGzwA0qC8MXwGE/s780/Laravel%20Herd%20dnsmasq%20failed%20to%20create%20listening%20socker%20for%20127%200%200%201%20address%20already%20in%20use.png" style="margin-left: 1em; margin-right: 1em;"><img alt="Laravel Herd dnsmasq: failed to create listening socker for 127.0.0.1: address already in use FIXED" border="0" data-original-height="780" data-original-width="468" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy2GqjJooCaRCUzOVK7TjsMEPbIKBIdWps_-v63roAPmp-P_HFn7RRNk6U4pRetEu3FS5csyQZunAmFhHaRTouyDZILn4NA3O5J951MwOgT94emPs8lnqa9vQF97ji1CBE64pwQUFxmQwzx2AWy3di252sO0_Ih9GpUjnlSdgx7rs0wzGzwA0qC8MXwGE/w240-h400/Laravel%20Herd%20dnsmasq%20failed%20to%20create%20listening%20socker%20for%20127%200%200%201%20address%20already%20in%20use.png" title="Laravel Herd dnsmasq: failed to create listening socker for 127.0.0.1: address already in use FIXED" width="240" /></a></div><br /><p>Since Laravel Herd meets all my requirements regarding Laravel development on MacOS M1, I no longer need Laravel Valet, because it's more complicated to handle and make me mess with all of my homebrew dependencies, such as switching PHP versions and the ImageMagick warnings and the problems with OpenSSL cacert.pem invalid error.</p><p>Given those reasons why I found Laravel Valet complicated, I decided to uninstall Laravel Valet.</p><p>🥃</p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-54680939785411871882023-08-07T10:37:00.000-06:002023-08-07T10:37:04.086-06:00Fixing the Dreaded 'Could not cleanup old kegs!' Error in MacOS brew cleanup: A Step-by-Step Guide<p><span style="caret-color: rgb(209, 213, 219); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; white-space-collapse: preserve;"><span style="color: #444444;">If you've encountered the error message<i> </i></span></span><code style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; caret-color: rgb(209, 213, 219); color: var(--tw-prose-code); font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; font-weight: 600; white-space-collapse: preserve;"><i>Error: Could not cleanup old kegs! Fix your permissions on:</i></code><span style="caret-color: rgb(209, 213, 219); color: #d1d5db; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; white-space-collapse: preserve;"> </span><span style="caret-color: rgb(209, 213, 219); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; white-space-collapse: preserve;"><span style="color: #444444;">after executing</span></span><span style="caret-color: rgb(209, 213, 219); color: #d1d5db; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; white-space-collapse: preserve;"> </span><code style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; caret-color: rgb(209, 213, 219); color: var(--tw-prose-code); font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; font-weight: 600; white-space-collapse: preserve;"><i>brew cleanup</i></code><span style="caret-color: rgb(209, 213, 219); color: #d1d5db; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; white-space-collapse: preserve;"> </span><span style="caret-color: rgb(209, 213, 219); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; white-space-collapse: preserve;"><span style="color: #444444;">on MacOS M1, you're not alone. This common issue can be frustrating, but luckily, there's a straightforward solution. Here's how to fix it:</span></span></p><h2 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; line-height: 1.33333; margin: 2rem 0px 1rem; white-space-collapse: preserve;">The Problem</h2><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; caret-color: rgb(209, 213, 219); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 0px 0px 1.25em; white-space-collapse: preserve;"><span style="color: #444444;">When running <code style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; font-weight: 600;">brew cleanup</code> on MacOS M1, you may encounter the following error:</span></p><pre style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border-radius: 0.375rem; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; caret-color: rgb(209, 213, 219); font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; line-height: 1.71429; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 0px;"><div class="bg-black rounded-md mb-4" style="--tw-bg-opacity: 1; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border-radius: 0.375rem; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin-bottom: 1rem;"><div class="p-4 overflow-y-auto" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; overflow-y: auto; padding: 1rem;"><code class="!whitespace-pre hljs language-bash" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.3em; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: inherit; font-size: inherit; font-weight: inherit; line-height: 1.5; overflow-wrap: normal; padding: 0.1em; tab-size: 4; white-space: normal; word-break: normal; word-spacing: normal;"><span style="color: #e06666;">Error: Could not cleanup old kegs! Fix your permissions on:
</span></code></div></div></pre><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; caret-color: rgb(209, 213, 219); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 1.25em 0px; white-space-collapse: preserve;"><span style="color: #444444;">This error occurs due to incorrect permissions on the Homebrew installation directories.</span></p><h2 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; line-height: 1.33333; margin: 2rem 0px 1rem; white-space-collapse: preserve;">The Solution</h2><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; caret-color: rgb(209, 213, 219); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 0px 0px 1.25em; white-space-collapse: preserve;"><span style="color: #444444;">Based on</span><span style="color: #0b5394;"> <a href="https://superuser.com/a/1759739" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; text-underline-offset: 2px;" target="_blank">this StackOverflow answer</a></span><span style="color: #444444;">, you can fix the issue by running the following commands in your terminal:</span></p><ol style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; caret-color: rgb(209, 213, 219); counter-reset: list-number 0; display: flex; flex-direction: column; font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; list-style: none; margin: 1.25em 0px; padding: 0px; white-space-collapse: preserve;"><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;"><span style="color: #444444;">Change the ownership of the Homebrew installation directories to the current user:</span></p><pre style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border-radius: 0.375rem; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; line-height: 1.71429; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 0px;"><div class="bg-black rounded-md mb-4" style="--tw-bg-opacity: 1; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border-radius: 0.375rem; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin-bottom: 1rem;"><div class="p-4 overflow-y-auto" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; overflow-y: auto; padding: 1rem;"><code class="!whitespace-pre hljs language-bash" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.3em; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: inherit; font-size: inherit; font-weight: inherit; line-height: 1.5; overflow-wrap: normal; padding: 0.1em; tab-size: 4; white-space: normal; word-break: normal; word-spacing: normal;"><span style="color: #666666;">% sudo <span class="hljs-built_in" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;">chown</span> -R $(<span class="hljs-built_in" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;">whoami</span>) $(brew --prefix)/*
</span></code></div></div></pre></li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;"><span style="color: #444444;">Verify that the command was successful by echoing the exit status (should return 0):</span></p><pre style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border-radius: 0.375rem; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; line-height: 1.71429; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 0px;"><div class="bg-black rounded-md mb-4" style="--tw-bg-opacity: 1; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border-radius: 0.375rem; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin-bottom: 1rem;"><div class="p-4 overflow-y-auto" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; overflow-y: auto; padding: 1rem;"><code class="!whitespace-pre hljs language-bash" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.3em; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: inherit; font-size: inherit; font-weight: inherit; line-height: 1.5; overflow-wrap: normal; padding: 0.1em; tab-size: 4; white-space: normal; word-break: normal; word-spacing: normal;"><span style="color: #666666;">% <span class="hljs-built_in" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;">echo</span> $?</span></code></div></div></pre></li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;"><span style="color: #444444;">Run <code style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; font-weight: 600;">brew cleanup</code> again to remove old files:</span></p><pre style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border-radius: 0.375rem; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; line-height: 1.71429; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 0px;"><div class="bg-black rounded-md mb-4" style="--tw-bg-opacity: 1; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border-radius: 0.375rem; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin-bottom: 1rem;"><div class="p-4 overflow-y-auto" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; overflow-y: auto; padding: 1rem;"><code class="!whitespace-pre hljs language-bash" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.3em; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: inherit; font-size: inherit; font-weight: inherit; line-height: 1.5; overflow-wrap: normal; padding: 0.1em; tab-size: 4; white-space: normal; word-break: normal; word-spacing: normal;"><span style="color: #666666;">% brew cleanup
Removing: /usr/local/Cellar/ansible/6.6.0... (28,050 files, 364MB)
==> This operation has freed approximately 364MB of disk space.
</span></code></div></div></pre></li><li style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; counter-increment: list-number 1; display: block; margin-bottom: 0px; margin-top: 0px; min-height: 28px; padding-left: 0.375em;"><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin: 0px;"><span style="color: #444444;">Verify that the cleanup was successful:</span></p><pre style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border-radius: 0.375rem; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: "Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace !important; font-size: 0.875em; line-height: 1.71429; margin-bottom: 0px; margin-top: 0px; overflow-x: auto; padding: 0px;"><div class="bg-black rounded-md mb-4" style="--tw-bg-opacity: 1; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border-radius: 0.375rem; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; margin-bottom: 1rem;"><div class="p-4 overflow-y-auto" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; overflow-y: auto; padding: 1rem;"><code class="!whitespace-pre hljs language-bash" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-attachment: initial; background-clip: initial; background-image: none; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.3em; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; font-family: inherit; font-size: inherit; font-weight: inherit; line-height: 1.5; overflow-wrap: normal; padding: 0.1em; tab-size: 4; white-space: normal; word-break: normal; word-spacing: normal;"><span style="color: #666666;">% <span class="hljs-built_in" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box;">echo</span> $?</span></code></div></div></pre></li></ol><h2 style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: var(--tw-prose-headings); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; line-height: 1.33333; margin: 2rem 0px 1rem; white-space-collapse: preserve;">Conclusion</h2><p style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; caret-color: rgb(209, 213, 219); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif, "Helvetica Neue", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 16px; margin: 0px 0px 1.25em; white-space-collapse: preserve;"><span style="color: #444444;">By following these simple steps, you can quickly resolve the 'Could not cleanup old kegs!' error on MacOS M1 and free up valuable disk space. Happy brewing!</span></p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-8301623989145995292023-08-05T19:44:00.000-06:002023-08-05T19:44:14.341-06:00How to cancel committed changes without restoring the deleted files in git<p>In git , when I execute</p><div style="background: rgb(0, 0, 0); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #888888;">git status</span>
<span style="color: #888888;">On branch master</span>
<span style="color: #888888;">Your branch is up to date with 'origin/master'.</span>
<span style="color: #888888;">Changes to be committed:</span>
<span style="color: #888888;"> (use "git restore --staged <file>..." to unstage)</span>
<span style="color: #888888;"> deleted: resources/views/vendor/some_file.php</span>
<span style="color: #888888;"> deleted: resources/views/vendor/other.php</span>
<span style="color: #888888;"> deleted: resources/views/vendor/components/footer.blade.php</span></pre></div><p>How do I cancel the committed changes without restoring the deleted files in git?</p><p><br /></p><p>To unstage these changes (i.e., to remove them from the list of changes to be committed), use the git restore --staged <file> command. You need to replace <file> with the path to the file you want to unstage:</p><div style="background: rgb(0, 0, 0); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #888888;">git restore --staged resources/views/vendor/some_file.php</span>
<span style="color: #888888;">git restore --staged resources/views/vendor/other.php</span>
<span style="color: #888888;">git restore --staged resources/views/vendor/components/footer.blade.php</span></pre></div><p>This command will unstage the deletions, but it will not restore the deleted files.</p><p>But maybe you want to</p><h4 style="text-align: left;">How to git restore --staged all changes at once</h4><p>To unstage all changes at once, you can use the git restore --staged . command. Here, the . represents the current directory, which in this context means all files in your repository.</p><div style="background: rgb(0, 0, 0); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="color: #888888;">git restore --staged .</span></pre></div><p>This command will unstage all changes that have been staged for commit, but it will not restore the deleted files.</p><p>After running this command, you can use "git status" to confirm that all changes have been unstaged. If all changes have been successfully unstaged, no changes will appear in the list of changes to be committed</p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-15566614994614662102023-07-20T19:44:00.001-06:002023-07-20T19:44:45.406-06:00How to install Wordpress in Laravel Homestead<p>Laravel Homestead is a virtual box that can be used in VM ware, VirtualBox, and Parallels to basically develop Laravel applications. Since Laravel mostly uses PHP, then you can also install other PHP based platforms, such as Wordpress and Limesurvey.</p><p>In this case I will show you how to install a Wordpress website using Laravel Homestead.</p><h2 style="text-align: left;">Download wordpress</h2><p><a href="https://wordpress.org/download/" target="_blank">Download Wordpress</a> from the official page, which is download it in .zip format. Unzip it and put it inside a folder, typically somewhere inside the "~/code" directory, which is the one that is synced between your host computer and the virtual machine of Laravel homestead.</p><p>In my case, I unzipped it into the path</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">~/code/applications/wordpress/wordpressV6</pre></div><h2 style="text-align: left;">Set up your host development domain</h2><p>If you're a Laravel Homestead user, you can recall you have to set up your domain by editing the file (with your favorite editor: vi, vim, nano, etc):</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"><span style="font-weight: bold;">%</span> sudo vim /etc/hosts</pre></div><p>and add, according to your Laravel IP address, which you can find in the first lines of your Homestead.yml file</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">192.168.56.56 wordpress.local</pre></div><h2 style="text-align: left;">Set up the Wordpress directory in the Homestead.yaml file</h2><p>Open the Homestead.yaml file with your favorite editor:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">vim Homestead.yaml</pre></div><p>Then you have to add the path to your Wordpress project in the Homestead.yaml file like so:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;"> - map: wordpress.local
to: /home/vagrant/code/applications/wordpress/wordpressV6</pre></div><p>And don't forget to add a database for WordPress in the databases section.</p><p>Save and exit</p><p>Restart your homestead machine</p><p>You have to reload and "provision" your machine, so that it reloads the config of </p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">vagrant reload --provision</pre></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh50WasEApHBgI-zvAAmtwHTpvNq2JJ9JoQ7VML8vhj1mVugT18qM1IMuUCPSBcE4zgOR0IbODPPmzJRjMk3jleNDgPSbdbigLzKwQqfwNsq-8oDS2IUAiIkHlq8iNknvE2tdz3OJtY_DbG44RLvqgmbpJwm1m9O3eGAvVXiQbOPKVAh3QYXg9m8M5MbdE/s894/How%20to%20install%20Wordpress%20in%20Laravel%20Homestead.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="How to install Wordpress in Laravel Homestead" border="0" data-original-height="816" data-original-width="894" height="584" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh50WasEApHBgI-zvAAmtwHTpvNq2JJ9JoQ7VML8vhj1mVugT18qM1IMuUCPSBcE4zgOR0IbODPPmzJRjMk3jleNDgPSbdbigLzKwQqfwNsq-8oDS2IUAiIkHlq8iNknvE2tdz3OJtY_DbG44RLvqgmbpJwm1m9O3eGAvVXiQbOPKVAh3QYXg9m8M5MbdE/w640-h584/How%20to%20install%20Wordpress%20in%20Laravel%20Homestead.png" title="How to install Wordpress in Laravel Homestead" width="640" /></a></div><p>Cheers 🥃</p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-27501312822343570242023-07-19T12:09:00.001-06:002023-07-19T12:09:33.456-06:00Cómo reflejar o invertir una imagen con inkscape<p>Para hacer que una foto se refleje o como si vieras un espejo, puedes hacerlo con el programa Inkscape, que es software libre</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyAiR7pbC69cC6Kd0muk4863r1m1B6MIuUIk2wY9y8LQv2PckjQRo1fV70GprnGKG-PH71pjjlb6cnmnGWNELy0vA-bsrhQm-GnOi6gUJFXX9iarPX7mhs7jKCP0yN6GwJNUJNBQaPqNW5NJ9SCHGNthmsrY96MRaA_Cd9X9DpdAwuY6ncbpTKCXmbbL4/s1370/Co%CC%81mo%20reflejar%20o%20invertir%20una%20imagen%20con%20inkscape.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Cómo reflejar o invertir una imagen con inkscape, utiliza la opción de "reflejo horizontal" o "reflejo vertical" de Inkscape" border="0" data-original-height="1370" data-original-width="1362" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyAiR7pbC69cC6Kd0muk4863r1m1B6MIuUIk2wY9y8LQv2PckjQRo1fV70GprnGKG-PH71pjjlb6cnmnGWNELy0vA-bsrhQm-GnOi6gUJFXX9iarPX7mhs7jKCP0yN6GwJNUJNBQaPqNW5NJ9SCHGNthmsrY96MRaA_Cd9X9DpdAwuY6ncbpTKCXmbbL4/w636-h640/Co%CC%81mo%20reflejar%20o%20invertir%20una%20imagen%20con%20inkscape.png" title="Cómo reflejar o invertir una imagen con inkscape, utiliza la opción de "reflejo horizontal" o "reflejo vertical" de Inkscape" width="636" /></a></div><p>Lo que debes hacer es seleccionar la imagen, luego en el menú haz clic en la opción "objeto" y de ahí elige ya sea la opción "reflejo horizontal" o "reflejo vertical", según sea el caso.</p><p>Saludos 🥃</p><h2 style="text-align: left;">Referencia</h2><p><a href="https://inkscape.org/forums/questions/mirror-an-image/" target="_blank">https://inkscape.org/forums/questions/mirror-an-image/</a></p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-7019650166350459002023-07-18T13:48:00.000-06:002023-07-18T13:48:44.570-06:00Cómo obtener el número de serie de tu FIEL del SATSi requieres conocer el número de serie de tu firma FIEL del SAT, debes ir a la página del Sistema de Recuperación de Certificados del SAT:<div><br /><div><a href="https://portalsat.plataforma.sat.gob.mx/RecuperacionDeCertificados/" target="_blank">https://portalsat.plataforma.sat.gob.mx/RecuperacionDeCertificados/</a></div><div><br /></div><div>Para comenzar, debes completar correctamente las letras mostradas en el captcha, y luego hacer clic en el botón "aceptar".</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAuTkeUMjJ5hZFMVomYsNU_iOjfh6BiXWslC5w4J5o-NdsbbZfkOQrLErR6B2x22LXeB00VwmTN5EjOGZW7pq43HvBbNTX-ZtjTOo7CJoRNFEx7OaVLzDKMcnHUwlB-iZ18T6ho11_CH_8-G3UTYf6x8eANJxQgPc6ADpc8Vrs_aXAvtTtsUbnjrDoW6Y/s1008/Sistema%20de%20recuperacio%CC%81n%20de%20certificados%20para%20recuperar%20el%20nu%CC%81mero%20de%20serie%20de%20tu%20FIEL%20del%20SAT%202023-07-18%20a%20la(s)%2013.28.11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Cómo obtener el número de serie de tu FIEL del SAT" border="0" data-original-height="1008" data-original-width="992" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAuTkeUMjJ5hZFMVomYsNU_iOjfh6BiXWslC5w4J5o-NdsbbZfkOQrLErR6B2x22LXeB00VwmTN5EjOGZW7pq43HvBbNTX-ZtjTOo7CJoRNFEx7OaVLzDKMcnHUwlB-iZ18T6ho11_CH_8-G3UTYf6x8eANJxQgPc6ADpc8Vrs_aXAvtTtsUbnjrDoW6Y/w630-h640/Sistema%20de%20recuperacio%CC%81n%20de%20certificados%20para%20recuperar%20el%20nu%CC%81mero%20de%20serie%20de%20tu%20FIEL%20del%20SAT%202023-07-18%20a%20la(s)%2013.28.11.png" title="Cómo obtener el número de serie de tu FIEL del SAT" width="630" /></a></div><div>Después de ello, verás otro formulario en el que se te solicita teclear tu RFC con homoclave y las letras del "captcha" para validar que eres un humano (y no un robot):</div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih5MH76bHBY0tEP0UQ-PNcsStkrdQwtoENb1Lp29R8WLAaVAJbU7rZC0gvG7fKbI6VmHmsseTUpeRbtcCLEVaAxcMzYHs0l3eDXB-2tpZ2cPp3C7um37hshZ8txfRWaZ4F7B3uQcRe8_nF78cEhiD_CaM2Papf3lxjGy0rhhT_B7TBKQNMlp8iLNQ-hEU/s1238/Sistema%20de%20recuperacio%CC%81n%20de%20certificados%20para%20recuperar%20el%20nu%CC%81mero%20de%20serie%20de%20tu%20FIEL%20del%20SAT%202023-07-18%20a%20la(s)%2013.33.06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Cómo obtener el número de serie de tu FIEL del SAT" border="0" data-original-height="1238" data-original-width="1146" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih5MH76bHBY0tEP0UQ-PNcsStkrdQwtoENb1Lp29R8WLAaVAJbU7rZC0gvG7fKbI6VmHmsseTUpeRbtcCLEVaAxcMzYHs0l3eDXB-2tpZ2cPp3C7um37hshZ8txfRWaZ4F7B3uQcRe8_nF78cEhiD_CaM2Papf3lxjGy0rhhT_B7TBKQNMlp8iLNQ-hEU/w592-h640/Sistema%20de%20recuperacio%CC%81n%20de%20certificados%20para%20recuperar%20el%20nu%CC%81mero%20de%20serie%20de%20tu%20FIEL%20del%20SAT%202023-07-18%20a%20la(s)%2013.33.06.png" title="Cómo obtener el número de serie de tu FIEL del SAT" width="592" /></a></div>Después de que hayas dado clic y, si has tecleado correctamente el RFC con homoclave (todo junto, incluso en minúsculas) y las letras del captcha, te mostrará un listado de archivos, entre los cuales se encuentra tu FIEL, en donde verás el número de serie<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim9G3mjDVsL3MWAnRJroMrzVBYoemrN43up0xWJ6yAOEEUka2hVkqXEGmbQuijrh8SmSM13re7pP8Yq0vjKaZ2WSHGsHOAwI6YXcjfDQR7yBGftDbyTrqXNy6qVkMOCCfSHPlxMsJmIsPbU9Yo5QnJw9ay4mtA9NGJRxji10KzbmkgfXagEEqMp5i5yQ0/s1828/Co%CC%81mo%20obtener%20el%20nu%CC%81mero%20de%20serie%20de%20tu%20FIEL%20del%20SAT%202023-07-18%20a%20la(s)%2013.43.58.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Cómo obtener el número de serie de tu FIEL del SAT" border="0" data-original-height="944" data-original-width="1828" height="330" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim9G3mjDVsL3MWAnRJroMrzVBYoemrN43up0xWJ6yAOEEUka2hVkqXEGmbQuijrh8SmSM13re7pP8Yq0vjKaZ2WSHGsHOAwI6YXcjfDQR7yBGftDbyTrqXNy6qVkMOCCfSHPlxMsJmIsPbU9Yo5QnJw9ay4mtA9NGJRxji10KzbmkgfXagEEqMp5i5yQ0/w640-h330/Co%CC%81mo%20obtener%20el%20nu%CC%81mero%20de%20serie%20de%20tu%20FIEL%20del%20SAT%202023-07-18%20a%20la(s)%2013.43.58.png" title="Cómo obtener el número de serie de tu FIEL del SAT" width="640" /></a></div>Saludos 🥃pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-45625663767609417042023-07-14T21:03:00.026-06:002023-09-06T21:20:00.025-06:00Upgrade a Laravel 9 project to Laravel 10<p>I've got a quite big project in Laravel. Currently in my Laravel 9 project, there're some packages I no longer need. On the other hand, some packages can no longer be upgraded by composer.</p><p>This situation has made me think of installing a new and fresh Laravel 10 project. Then I would copy all the files of the Laravel 9 project into the newly fresh installed Laravel 10. Finally, I would be making fixes to the php files, according to the <a href="https://laravel.com/docs/10.x/upgrade" target="_blank">Official Laravel upgrade guide</a> (from 9 to 10).</p><p>By reinstalling a new Laravel 10 project, I will have the opportunity to upgrade the packages that I could no longer upgrade in the Laravel 9 version, as well as get rid of those packages I no longer need to make a clean up and even install new packages.</p><p>In Laravel 9 I am using Filament PHP version 2. The version 3 will be soon released.<br /><br />Now I will show all the steps I have followed to upgrade my Laravel project from version 9 to 10.</p><h1 style="text-align: left;">Steps to upgrade a Laravel project from version 9 to 10</h1><h2 style="text-align: left;">Previous steps to upgrade the development environment</h2><div>I am using Laravel Homestead latest version 14.4.1. Since I got there a PHP version 8.2.1 and there's already the new <a href="https://www.php.net/ChangeLog-8.php" target="_blank">latest PHP</a> version 8.2.8, I decided to update everything possible inside that virtual machine, with the following commands</div><div><br /></div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">sudo apt update
sudo apt list --upgradable
sudo apt upgrade</pre></div></div><h2 style="text-align: left;">Install a new fresh Laravel 10 project</h2><div>I installed a new Laravel version 10:</div><div><br /></div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">laravel new project_v10
cd project_v10</pre></div></div><p>Then I updated everything again</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">composer outdated
composer update</pre></div><h2 style="text-align: left;">.env</h2><div>Copy all the necessary parameters and content of the Laravel 9 project to the new Laravel 10 project. It might take several minutes, depending on the number of custom variables you've got.</div><h2 style="text-align: left;">Laravel Filament PHP</h2><p>Since Laravel Filament is heavily used in my Laravel version 9 project, I will install it first in the Laravel fresh 10 project, as specified <a href="https://filamentphp.com/docs/2.x/admin/installation" target="_blank">in their official documentation (currently version 2)</a>:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">composer require filament/filament:"^2.0"</pre></div><p>And follow the instructions. In my case, I didn't create a new user, since I already got the database from the Laravel 9 project. That's why I copied first the .env file accordingly.</p><h2 style="text-align: left;">Laravel homestead Virtual hosts</h2><p>In order to check the project in a web browser in my local environment, I added a new projectL10.local domain inside my computer by editing the /etc/hosts file.</p><h2 style="text-align: left;">List of PHP files to copy</h2><p>List of PHP files (Filament resources, controllers, views, livewire files, etc. ) to copy from my Laravel 9 project to the Laravel 10 project.</p><p>But what we see first, when comparing both projects folders is the directories that already exist in the Laravel 9 project but don't exist in the laravel 10 project. We can start by copying those entire directories into the version 10.</p><h2 style="text-align: left;">Folders missing in Laravel v10 Project</h2><div>The following list is about the directories missing in the Laravel 10 project, right at the root of the project. The list won't probably be the same for you.</div><div><h3>app/</h3></div><p></p><ul style="text-align: left;"><li>Actions</li><li>Enums</li><li>Filament</li><li>Helpers</li><li>Imports</li><li>Listeners</li><li>Mail</li><li>Notifications</li><li>Observers</li><li>Policies</li><li>Rules</li><li>Services</li><li>Traits</li><li>View</li></ul><div>In principle, this makes it easy to upgrade the project. I just need to copy those directories in the new upgraded Laravel 10 project. I surely will have to inspect each file to upgrade it to the version 10 accordingly.</div><h2 style="text-align: left;">List of folders and files that are in both Laravel 9 and 10 projects</h2><h3 style="text-align: left;">app/</h3><div>- Console</div><div>- Exceptions</div><div>- Http</div><div>- Models</div><div>- Providers</div><div><br /></div><div><b>Console</b></div><div>Let's start with <b>Console</b></div><div>There's one file called "Kernel.php" which needs to be compared and updated accordingly.</div><div><br /></div><div>There's a directory called "Commands" in L9 which doesn't exists in L10 project, which I copy directly.</div><div><br /></div><div><b>Exceptions</b></div><div>Now let's continue with <b>Exceptions</b>, where the only file is "handler.php", where I see there's nothing to update.</div><div><br /></div><div><b>Http</b></div><div>Continue now with the <b>Http</b> folder, where the only folder that doesn't exist in the new L10 project is "Livewire". So I copy it entirely from L9 to L10. Inside that Http folder, let's start first with the "Kernel.php" file, where I see there's nothing to be updated.</div><div><br /></div><div>Continue with folder "app/Http/<i>Controllers</i>" folder where I see one PHP file called "Controller.php" where there's nothing to update. Inside that "Controllers" folder, I see two custom directories of my L9 project that don't exist in L10 project. So I copy them entirely.</div><div><br /></div><div>Now I continue with the last "app/Http/Middleware" folder where there are several folders where all of them have the same names, except for a new file in L10 called "ValidateSignature.php". I will check one by one to see if there're differences:</div><div>- "Authenticate.php": Nothing to update. <span style="color: #444444;">Note</span>: here is where you define the route login</div><div>- "EncryptCookies.php": Nothing to update.</div><div>- "PreventRequestsDuringMaintenance.php": Nothing to update.</div><div>- "RedirectIfAuthenticated.php": Nothing to update.</div><div>- "TrimStrings.php": Nothing to update.</div><div>- "TrustHosts.php": I had to <a href="https://laravel.com/docs/10.x/requests#configuring-trusted-hosts" target="_blank">update my trusted host own domain for production</a>.</div><div>- "TrustProxies.php": I had to update the trusted proxies to all (<i>*</i>).</div><div>- "VerifyCsrfToken.php": I had to update my own settings.</div><div>- "ValidateSignature.php": Nothing to update. This file is new in Laravel 10.</div><div><br /></div><div><b>Models</b></div><div>Let's check the <b>Models</b> directory. Here the only file in common is "User.php"</div><div>I got there two entire custom directories, which I copy them from the L9 to L10.</div><div><br /></div><div><b>Providers</b></div><div>First of all, there're two files I won't use anymore:</div><div>- "FortifyServiceProvider.php"</div><div>- "JetstreamServiceProvider.php"</div><div>since FilamentPHP's packages or <a href="https://filamentphp.com/plugins" target="_blank">plugins</a> already handle the authentication security.</div><div><br /></div><div>I will check one by one the following files to update them if necessary:</div><div>- "AppServiceProvider.php": I updated my custom code.</div><div>- "AuthServiceProvider.php": I updated my custom code.</div><div>- "BroadcastServiceProvider.php": Nothing to update.</div><div>- "EventServiceProvider.php": I updated my custom code.</div><div>- "RouteServiceProvider.php": I updated my custom code.</div><div><br /></div><div><h3>bootstrap/</h3></div><div>There's one file called "app.php". Nothing to update.</div><div>Inside the <b>cache</b> directory there're three files:</div><div>- "livewire-components.php": I updated my livewire components.</div><div>- "packages.php": nothing to update</div><div>- "services.php": nothing to update.</div><div><br /></div><h3 style="text-align: left;">config/</h3><div>I will list the same files existing in both Laravel project versions:</div><div><br /></div><div><i>Common files</i></div><div>- "app.php": I updated the file, but there're <span style="color: #444444;">pending updates</span> as I install the missing packages.</div><div>- "auth.php": I updated the file with my custom code.</div><div>- "broadcasting.php": nothing to update.</div><div>- "cache.php": nothing to update.</div><div>- "cors.php": nothing to update.</div><div>- "database.php": I updated the file with my custom db connections.</div><div>- "filament.php": I updated the file with my custom settings.</div><div>- "filesystems.php": I updated the file with my custom settings.</div><div>- "hashing.php": nothing to update</div><div>- "logging.php": nothing to update</div><div>- "mail.php": I updated the file with my custom settings</div><div>- "queue.php": I updated the file with my custom settings. <span style="color: #444444;">Check if DB table `job_batches` exists</span>.</div><div>- "sanctum.php": nothing to update</div><div>- "services.php": I updated the file with my custom settings</div><div>- "session.php": nothing to update</div><div>- "view.php": nothing to update</div><div><br /></div><div><i><span style="color: #444444;">New files</span></i></div><div>- "activitylog.php": it's a plugin config file. I will check it if I install their plugin.</div><div>- "blade-ui-kit.php": it's a plugin config file. I will check it if I install their plugin.</div><div>- "constanciax.php": It is a custom file, so I copy it to the L10 project.</div><div>- "xfirma.php": It is a custom file, so I copy it to the L10 project.</div><div><div>- "excel.php": need to check</div><div>- "filament-breezy.php": it's a plugin config file. I will check it if I install their plugin.</div></div><div><div>- "filament-email-log.php": it's a plugin config file. I will check it if I install their plugin.</div><div>- "filament-fullcalendar.php": it's a plugin config file. I will check it if I install their plugin.</div></div><div>- "filament-laravel-log.php": it's a plugin config file. I will check it if I install their plugin.</div><div>- "filament-shield.php": it's a plugin config file. I will check it if I install their plugin.</div><div>- "filament-spatie-laravel-activitylog.php": it's a plugin config file. I will check it if I install their plugin.</div><div>- "filament-tiptap-editor.php":it's a plugin config file. I will check it if I install their plugin.</div><div><div>- "permission.php": need to check<br class="Apple-interchange-newline" />- "snappy.php": need to check</div></div><div><br /></div><h3 style="text-align: left;">database/</h3><div>There only are three directories:</div><div><b>factories/</b></div><div> - "UserFactory.php". Nothing to update</div><div><b>migrations/</b></div><div>There I got lots of files. </div><div>The common files are:</div><div>- "2014_10_12_000000_create_users_table.php". I updated custom changes.</div><div>- "2019_08_19_000000_create_failed_jobs_table.php". Nothing to update</div><div>- "2019_12_14_000001_create_personal_access_tokens_table.php"Nothing to update.</div><div><br /></div><div>Files new in L10</div><div>- "2014_10_12_100000_create_password_reset_tokens_table.php".</div><div><br /></div><div>Custom files in L9</div><div>(*) I copied the rest of the files from the L9 project to the L10.</div><div><br /></div><div>Sessions table:</div><div>Since I could't create</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">php artisan session:table</pre></div></div><div>because the filament calendar is missing, at this point I had to install that plugin:</div><div><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">composer require saade/filament-fullcalendar</pre></div></div><div><br /></div><div><b>seeders/</b></div><div>- "DatabaseSeeder.php":</div><div><br /></div><h3 style="text-align: left;">public/</h3><div>The following common files are:</div><div>- "favicon.ico": probably nothing to update</div><div>- "index.php": nothing to update</div><div>- "robots.txt": nothing to update</div><div><br /></div><div>I copied the rest of my custom files from L9 to L10.</div><div>- build/</div><div>- css/</div><div>- files/</div><div>- fonts/</div><div>- img/</div><div>- js/</div><div>- "mix-manifest.json"</div><div>- "storage"</div><div><br /></div><h3 style="text-align: left;">resources/</h3><div>There are only directories. The new directories are lang/ and markdown/.</div><div>I only will copy the markdown/ directory</div><div><br /></div><div>The common directories are css/ js/ and views/</div><div><b>css/</b></div><div>There's only one file:</div><div>- "app.css": I guess nothing to update</div><div><b>js/</b></div><div>There're two files:</div><div>- "app.js": I guess nothing to update</div><div>- "bootstrap.js": I guess nothing to update</div><div><br /></div><div><b>views/</b></div><div>The only file in L10 is</div><div>- "welcome.blade.php": I guess I won't change anything</div><div><br /></div><div>The directories and files existing in L9 are:</div><div>- admin/ : I copied the directory into the L10</div><div>- api/ :</div><div>- auth/ :</div><div>- components/ :</div><div>- emails/ : I copied the directory into the L10</div><div>- filament/ : I copied the directory into the L10 </div><div>- layouts/ : I copied the directory into the L10 </div><div>- livewire/ : I copied the directory into the L10 </div><div>- profile/ :</div><div>- vendor/ :</div><div>- "dashboard.blade.php": I copied the directory into the L10 </div><div>- "navigation-menu.blade.php": I copied the directory into the L10 </div><div>- "policy.blade.php": I copied the directory into the L10 </div><div><div>- "terms.blade.php": I copied the directory into the L10 </div><div><br /></div></div><h3 style="text-align: left;">routes/</h3><div>There are 4 files existing in both L9 and L10</div><div>- "api.php": I updated custom code.</div><div>- "channels.php": nothing to update</div><div>- "console.php": nothing to update</div><div>- "web.php": I have updated my custom routes.</div><div><br /></div><h3 style="text-align: left;">storage/</h3><div>There're three common directories</div><div><br /></div><div>- app/</div><div>- framework/</div><div>- logs/</div><div><br /></div><div>where I didn't copy the files that belong to caché or packages.</div><div><br /></div><div>and one custom directory that doesn't exist in L10, which I will copy</div><div>- fonts/</div><div><br /></div><div><br /></div><div>So far, it looks like those are all the files I require to copy or update.</div><div><br /></div><div>After installing the packages, I will have to update the required php files, according to the <a href="https://laravel.com/docs/10.x/upgrade" target="_blank">Laravel 10 upgrade guide</a>.</div><div><br /></div><p></p><h2 style="text-align: left;">List of Filament PHP packages installed</h2><p>I need to make the inventory of all the packages I have required in my Laravel 9 project:</p><h3 style="text-align: left;">Filament PHP related packages list</h3><p></p><ol style="text-align: left;"><li>filament/filament [installed] [published]</li><li>alexjustesen/filament-spatie-laravel-activitylog [installed] [published]</li><li>awcodes/filament-tiptap-editor [installed] [published]</li><li>bezhansalleh/filament-shield [installed]</li><li>blade-ui-kit/blade-ui-kit [installed] </li><li>codeat3/blade-carbon-icons [installed]</li><li>codeat3/blade-clarity-icons [installed]</li><li>codeat3/blade-codicons [installed]</li><li>codeat3/blade-file-icons [installed]</li><li>codeat3/blade-fluentui-system-icons [installed]</li><li>codeat3/blade-google-material-design-icons [installed]</li><li>codeat3/blade-iconpark [installed]</li><li>codeat3/blade-phosphor-icons [installed]</li><li>codeat3/blade-vaadin-icons [installed]</li><li>ryangjchandler/blade-tabler-icons [installed]</li><li>troccoli/blade-health-icons [installed]</li><li>doctrine/dbal [installed]</li><li>jeffgreco13/filament-breezy [installed] [published]</li><li>konnco/filament-import [installed] [published] </li><li>phpsa/filament-password-reveal [installed]</li><li>ramnzys/filament-email-log</li><li>saade/filament-fullcalendar [installed] [published]</li><li>saade/filament-laravel-log [installed] [published]</li></ol><p></p><h3 style="text-align: left;">Other packages list</h3><p></p><ol style="text-align: left;"><li>andreiio/blade-remix-icon [installed]</li><li>barryvdh/laravel-snappy</li><li>bensampo/laravel-enum [installed]</li><li>h4cc/wkhtmltoimage-amd64</li><li>h4cc/wkhtmltopdf-amd64</li><li>laravel/sanctum [installed]</li><li>maatwebsite/excel</li><li>mailjet/laravel-mailjet</li><li>orangehill/iseed</li><li>simplesoftwareio/simple-qrcode [installed]</li><li>staudenmeir/belongs-to-through [installed]</li></ol><p></p><p><br /></p><p>I also will determine which packages I will no longer use:</p><h3 style="text-align: left;">Packages no longer needed list</h3><p></p><ol style="text-align: left;"><li>barryvdh/laravel-dompdf [installed] [published]</li><li>spatie/laravel-rate-limited-job-middleware</li><li>squirephp/countries-es</li><li>kitloong/laravel-migrations-generator</li></ol><p></p><p><br /></p><p>And what new packages I will require to the project in the new Laravel version 10:</p><h3 style="text-align: left;">New Filament PHP required packages</h3><p><br /></p><h3 style="text-align: left;">New other required packages</h3><p><br /></p><h2 style="text-align: left;">Traditional way to upgrade Laravel10</h2><p>In the <i>composer.json</i> file I had to make the following changes or updates:</p><p></p><h4 style="text-align: left;">Default changes in composer.json</h4>"doctrine/dbal": "^3.3", //I already had it like that<p></p><p>"laravel/framework": "^10.0", //laravel 9 to laravel 10</p><p>"laravel/sanctum": "^3.2", //I already had it like that</p><p>"spatie/laravel-ignition": "^2.0" //From 1 to 2</p><p>"nunomaduro/collision": "^7.0", //From 6 to 7</p><p>"phpunit/phpunit": "^10.0", //From 9 to 6</p><h4 style="text-align: left;">Specific changes in composer.json</h4><p>"bensampo/laravel-enum": "^6.0", // from 5 to 6</p><p>"alexjustesen/filament-spatie-laravel-activitylog": "^0.6.3", //from 0.3.0</p><p>"andreiio/blade-remix-icon": "^2.5.0", // from 1.2.0</p><p>"barryvdh/laravel-dompdf": "^2.0", //from 1.0.2</p><p>"bezhansalleh/filament-shield": "^2.0",//from 1.1.12 to 2</p><p>"troccoli/blade-health-icons": "^2.0" //from 0.3.0</p><p>"ryangjchandler/blade-tabler-icons": "^2.0", // from 1.5.0</p><p>"bezhansalleh/filament-shield": "^2.0", //from 1.1.12</p><p><br /></p><h4 style="text-align: left;">Remove packages</h4><p>Since some packages do not support Laravel 10, I had to remove them</p><p>composer remove ramnzys/filament-email-log</p><p>composer remove fruitcake/laravel-cors </p><h4 style="text-align: left;">composer update</h4><p>Finally composer update command worked.</p><p><br /></p><h4 style="text-align: left;">Following problems</h4><p>Now the <i>BezhanSalleh\FilamentShield</i> showed the following error: "Trait "BezhanSalleh\FilamentShield\Commands\Concerns\CanBackupAFile" not found" package. To fix it, I firstly had to follow the <a href="https://github.com/bezhanSalleh/filament-shield/tree/2.x#upgrade" target="_blank">upgrade to 2.x instructions</a>.</p><p>The problem still throws, so in file `app/Filament/Resources/Shield/RoleResource/Pages/ShieldSettings.php` I commented the line:<br />//use Concerns\CanBackupAFile;</p><p><br /></p><p>Further, I had to run the following commands:</p><p>php artisan shield:doctor</p><p>php artisan shield:install --fresh</p><p>Still I got a problema finding the roles page, so I fixedit by running again the following commands:</p><p>php artisan view:clear</p><p>php artisan cache:clear</p><p>php artisan route:clear</p><p>php artisan shield:publish</p><p>php artisan shield:super-admin --user=1</p><p><br /></p><p>now I can see the roles page list.</p><p><br /></p><p>//after removing the <i>fruitcake/laravel-cors</i> package and upgrading to Laravel 10, replace <code>\Fruitcake\Cors\HandleCors::class,</code> with <code>\Illuminate\Http\Middleware\HandleCors::class,</code> in <code>app/Http/Kernel.php</code></p><pre class="notranslate"><code>composer remove <span style="color: #e06666;">mailjet/laravel-mailjet</span></code></pre><p>and the error was gone.</p><h2 style="text-align: left;">Upgrade working Filament 2 plugins to Filament 3</h2><p>The following plugins present trouble upgrading Filament 2 to 3</p><p>* alexjustesen/filament-spatie-laravel-activitylog</p><p></p><blockquote> Threw error Class "AlexJustesen\FilamentSpatieLaravelActivitylog\RelationManagers\ActivitiesRelationManager" not found</blockquote><p> </p><p></p><p>* awcodes/filament-tiptap-editor</p><p>* bezhansalleh/filament-shield [available in Filament v3]</p><p>* jeffgreco13/filament-breezy [available in Filament v3]</p><p></p><blockquote>Threw Error Class "JeffGreco13\FilamentBreezy\Http\Livewire\Auth\Login" not found</blockquote><p></p><blockquote>Threw Error Class "JeffGreco13\FilamentBreezy\FilamentBreezy" not found </blockquote><p></p><p></p><p>* konnco/filament-import</p><p>* saade/filament-fullcalendar</p><p>* saade/filament-laravel-log</p><p><br /></p><p>so I had to remove all of them, since none of them are supported in filament 3. The package "bezhansalleh/filament-shield" in latest version 3 is only supported in Filament 3. So I had to remove it first before upgrading to Filament v3.</p><p>Also, I had to remove the "shield" directory from the Filament resources page.</p><h2 style="text-align: left;">Upgrade Filament v2 to Filament v3</h2><p>composer require filament/upgrade:"^3.0-stable" -W --dev</p><p>vendor/bin/filament-v3</p><p>php artisan filament:install</p><p>vendor/bin/filament-v3</p><p>composer update</p><p><br /></p><p>PENDING:</p><h2 style="text-align: left;">Upgrade Livewire from 2 to 3</h2><p>Now, again in the composer.json file I changed the version of livewire from version 2 to 3</p><p> "livewire/livewire": "^3.0", //from 2.0</p><p>composer update</p><p>However, I couldn't upgrade since I got installed Filament 2 and it's a requirement to have Filament 3 already installed, before upgrading livewire</p><p><i>Problem 1</i></p><p><i> - filament/filament[v2.15.29, ..., 2.x-dev] require livewire/livewire ^2.10.7 -> found livewire/livewire[v2.10.7, ..., 2.x-dev] but it conflicts with your root composer.json require (^3.0).</i></p><p>Also, if Filament is upgraded, I get the following error:</p><p>Class "Filament\PanelProvider" not found</p><p>And I am eternally stuck with that "Class "Filament\PanelProvider" not found" error when trying to upgrade from Filament v2 to v3.</p><p><br /></p><h2 style="text-align: left;">Coming soon</h2><p>Deploy Laravel 10 project on PHP 8.2.x to production using Docker and Laradock</p><p><br /></p><p><br /></p><p><br /></p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-71743769212072325422023-07-10T11:14:00.002-06:002023-07-10T11:14:29.556-06:00BBVA México te cobra cuota mensual<p>Recientemente BBVA ha comenzado a cobrar una comisión de manera mensual a los débito tarjeta habientes de alrededor de $50 pesos MXN al mes, lo que viene siendo $600 pesos al año.</p><p>Las condiciones para no cobrarte dicha comisión de $600 pesos anuales, es que mantengas un saldo promedio de $35,000 pesos MXN (para que lo jineteen sin darte ningún centavo de interés por tu dinero) o que recibas ahí tu nómina.</p><p>Verifica en la sección de tus movimientos para que tengas bien claro cuánto te están chupando, digo cobrando de comisión por sus cojones. ¡J0d3r, tío!</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUk2Y4FX9jBHmEVIOVmUeBLZEMXFy_6J1ePcNvLKIkjxog2RTi-jTnbTOgfbVgNptcaojYZkvmT18GwFqvRSo-KdJbnP9VrkYt9Jp16wM9AoJ6J1BFmMdy70u-sY7zBsumryZsOiuO1VxvYpues0G3vlIxOukvzO0B3wHZ--RWalOzTTXf_OoiBb0OVAg/s2588/BBVA%20Me%CC%81xico%20te%20cobra%20cuota%20mensual.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="BBVA México te cobra cuota mensual" border="0" data-original-height="1552" data-original-width="2588" height="384" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUk2Y4FX9jBHmEVIOVmUeBLZEMXFy_6J1ePcNvLKIkjxog2RTi-jTnbTOgfbVgNptcaojYZkvmT18GwFqvRSo-KdJbnP9VrkYt9Jp16wM9AoJ6J1BFmMdy70u-sY7zBsumryZsOiuO1VxvYpues0G3vlIxOukvzO0B3wHZ--RWalOzTTXf_OoiBb0OVAg/w640-h384/BBVA%20Me%CC%81xico%20te%20cobra%20cuota%20mensual.png" title="BBVA México te cobra cuota mensual" width="640" /></a></div><p>Saludos 🥃</p><h2 style="text-align: left;">Referencia</h2><p><a href="https://www.bbva.mx/personas/productos/patrimonial-y-privada/cuentas-y-tarjetas-de-credito/membresia-bp.html#cuotas-tarifario-membresia-bp" target="_blank">https://www.bbva.mx/personas/productos/patrimonial-y-privada/cuentas-y-tarjetas-de-credito/membresia-bp.html#cuotas-tarifario-membresia-bp</a></p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-70609170531559084662023-07-08T23:14:00.002-06:002023-07-08T23:14:36.161-06:00Unzip in terminal how to extract only the files of a directory path to the current location?<h2 style="text-align: left;">List the files before actually unzipping them</h2><p>To view the files inside a .zip file without actually unzipping them, you can use the `unzip` command with the `-l` option. Here's how you can do it:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">unzip -l {{filename.zip}}</pre></div><p>Replace `{{filename.zip}}` with the name of your .zip file.</p><p><br /></p><p>Running this command will display a list of files and directories contained within the .zip file, along with their sizes and other details.</p><p><br /></p><p>Note that this command only lists the files inside the .zip file and does not extract or modify them.</p><h2 style="text-align: left;">Unzip only the files of a directory to the current location</h2><p>Yes, you can use the `unzip` command with the `-j` option to extract only the files from a specific directory path within a .zip file to the current location. Here's an example:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">unzip -j {{filename.zip}} "path/to/directory/*"</pre></div><p><br /></p><p>Replace `{{filename.zip}}` with the name of your .zip file and `"path/to/directory/*"` with the desired directory path inside the .zip file. The `*` wildcard character is used to match all files within that directory.</p><p><br /></p><p>Running this command will extract only the files from the specified directory path in the .zip file and place them in the current location.</p><p><br /></p><p>Please note that if there are subdirectories within the specified directory path, the extracted files will be placed directly in the current location without preserving the directory structure.</p><p>Example case:</p><h2 style="text-align: left;">How to restore a MySQL .sql file right from a .zip file</h2><p>Yes, you can use the `unzip` command with the `-p` option to extract the contents of a specific file from a .zip file and directly pass it to the `mysql` command for restoration. Here's an example:</p><div style="background: rgb(255, 255, 255); border-color: gray; border-image: initial; border-style: solid; border-width: 0.1em 0.1em 0.1em 0.8em; color: #333333; font-family: Verdana, Helvetica, Arial, sans-serif; overflow: auto; padding: 0.2em 0.6em; width: auto;"><pre style="line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;">unzip -p {{filename.zip}} {{path/to/file.sql}} | mysql -u {{username}} -p {{database_name}}</pre></div><p>Replace `{{filename.zip}}` with the name of your .zip file, `{{path/to/file.sql}}` with the path to the .sql file inside the .zip file, `{{username}}` with your MySQL username, and `{{database_name}}` with the name of the database you want to restore to.</p><p>This command will extract the specified .sql file from the .zip file and directly pass its contents to the `mysql` command for restoration into the specified database.</p><p>Make sure you have the necessary privileges and provide the correct MySQL username and password when prompted.</p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0tag:blogger.com,1999:blog-6347806650948961649.post-25328267805600228962023-07-05T14:07:00.001-06:002023-07-05T14:07:18.222-06:00Unlock the Power of Cloud Computing with $100 Free Vultr Credit<div class="separator" style="clear: both; text-align: center;"><a href="https://www.vultr.com/?ref=7322523" style="margin-left: 1em; margin-right: 1em;"><img alt="Unlock the Power of Cloud Computing with $100 Free Vultr Credit" border="0" data-original-height="572" data-original-width="1072" height="171" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikmbdy4HV7exeqykdzQcs8eyQmUfNdyhOsiGA7iOnoXLuG-Gd3Vismq0V64rLtSNdNe-D3kpfBuAGm-gks2uaqLx0LPJFIKADp3K5hE7kIfXcnLyPlr_1KVp1w0xCEku2H_98tgmQV0-LSlGUDiwWHcr6p5PIbJ8axDicBqqE0778BPJhFOMHy6kBnBdk/w320-h171/Unlock%20the%20Power%20of%20Cloud%20Computing%20with%20$100%20Free%20Vultr%20Credit%202023-07-05%20a%20la(s)%2014.02.31.png" title="Unlock the Power of Cloud Computing with $100 Free Vultr Credit" width="320" /></a></div><p>As a long-time user of Vultr, I've been consistently impressed with the range of services they offer. From cloud computing and storage to Kubernetes, networking, and website hosting, Vultr has it all. They even offer one-click deployment, a cloud VPN, and platforms for ML/AI, SaaS, video streaming, and blockchain.</p><p>If you've been considering dipping your toes into the world of cloud computing, or if you're looking for a new provider that offers a comprehensive suite of services, I have some exciting news for you.</p><p>By using my referral code, you can earn $100 USD in credit for free to test everything Vultr has to offer. This is a fantastic opportunity to explore their services without any financial commitment.</p><p>Here's how it works:</p><p></p><ol style="text-align: left;"><li><a href="https://www.vultr.com/?ref=8959808-8H" target="_blank">Click on this link</a> to sign up for Vultr.</li><li>Once your account is set up, you'll receive $100 USD in credit.</li><li>Start exploring the wide range of services Vultr offers.</li></ol><p></p><p>Remember, this credit can be used across all of Vultr's services. Whether you're interested in cloud compute, cloud storage, cloud GPU, Kubernetes, networking, website hosting, one-click deploy, cloud VPN, ML/AI, SaaS platforms, video streaming, or blockchain, Vultr has you covered.</p><p>Don't miss out on this opportunity to explore the power of cloud computing with Vultr. Sign up today and start your journey with $100 USD in free credit.</p>pathroshttp://www.blogger.com/profile/18057231994881627307noreply@blogger.com0