<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Manu Mateos</title><link>https://www.macram.es/categories/desarrollo/</link><description>Recent content in Desarrollo on Manu Mateos</description><generator>Hugo -- gohugo.io</generator><language>es</language><lastBuildDate>Mon, 08 Sep 2025 12:11:33 +0200</lastBuildDate><atom:link href="https://www.macram.es/categories/desarrollo/index.xml" rel="self" type="application/rss+xml"/><item><title>#155: artistas más escuchados</title><link>https://www.macram.es/posts/2025-09-08-artistas-mas-escuchados-en-last-fm/</link><pubDate>Mon, 08 Sep 2025 12:11:33 +0200</pubDate><guid>https://www.macram.es/posts/2025-09-08-artistas-mas-escuchados-en-last-fm/</guid><description>&lt;p&gt;&lt;a href="https://www.manumateos.dev/posts/shortcode-para-mostrar-artistas-mas-escuchados-last-fm/"&gt;Como he detallado en mi blog de desarrollo&lt;/a&gt;, he hecho un pequeño &lt;em&gt;shortcode&lt;/em&gt; para este blog de Hugo que muestra los artistas que más he escuchado en Last.FM. &lt;a href="https://www.macram.es/musica/"&gt;Se puede ver ya en acción en la página de música de este blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Hay un espacio entre los artistas que no consigo eliminar sin hacer el código del todo ilegible; tengo que dedicarle algo más de tiempo, pero de momento estoy suficientemente a gusto con el resultado. Ha sido sencillo de programar, la verdad.&lt;/p&gt;</description><content:encoded><![CDATA[
      <p><a href="https://www.manumateos.dev/posts/shortcode-para-mostrar-artistas-mas-escuchados-last-fm/">Como he detallado en mi blog de desarrollo</a>, he hecho un pequeño <em>shortcode</em> para este blog de Hugo que muestra los artistas que más he escuchado en Last.FM. <a href="https://www.macram.es/musica/">Se puede ver ya en acción en la página de música de este blog</a>.</p>
<p>Hay un espacio entre los artistas que no consigo eliminar sin hacer el código del todo ilegible; tengo que dedicarle algo más de tiempo, pero de momento estoy suficientemente a gusto con el resultado. Ha sido sencillo de programar, la verdad.</p>
<p>Se actualiza, eso sí, cada vez que se construye el blog. O sea, la información no es precisamente en tiempo real. Pero tampoco creo que pase nada por mostrar que <em>la última vez</em> que actualicé el blog estaba escuchando esa música.</p>
<p><a href="https://gist.github.com/macram/3992b578a19d08e87c09a071a184ffe3">El código está en un GitHub Gist</a>.</p>

      ]]></content:encoded></item><item><title>#50</title><link>https://www.macram.es/desarrollo/50/</link><pubDate>Tue, 09 Apr 2024 08:00:00 +0000</pubDate><guid>https://www.macram.es/desarrollo/50/</guid><description>&lt;p&gt;Me he dado cuenta hoy de que no tengo que estar ajustando manualmente la &lt;em&gt;diferencia&lt;/em&gt; de horas entre la UTC y mi hora actual; en WordPress puedo establecer la zona horaria como la de una ciudad (en mi caso Europe/Madrid) y ya tiene en cuenta el horario de verano automáticamente.&lt;/p&gt;
&lt;p&gt;17 años usando WordPress y me he dado cuenta de esto &lt;strong&gt;hoy&lt;/strong&gt; (y aun así antes de curiosear he pasado por &lt;a href="https://wordpress.com/es/support/configuracion/configuracion-de-hora/"&gt;la ayuda de WordPress.com&lt;/a&gt;). Tiene narices la cosa.&lt;/p&gt;</description><content:encoded><![CDATA[
      <p>Me he dado cuenta hoy de que no tengo que estar ajustando manualmente la <em>diferencia</em> de horas entre la UTC y mi hora actual; en WordPress puedo establecer la zona horaria como la de una ciudad (en mi caso Europe/Madrid) y ya tiene en cuenta el horario de verano automáticamente.</p>
<p>17 años usando WordPress y me he dado cuenta de esto <strong>hoy</strong> (y aun así antes de curiosear he pasado por <a href="https://wordpress.com/es/support/configuracion/configuracion-de-hora/">la ayuda de WordPress.com</a>). Tiene narices la cosa.</p>

      ]]></content:encoded></item><item><title>Amazon sí se preocupa por la tienda de Alexa</title><link>https://www.macram.es/tecnologia/amazon-si-se-preocupa-por-la-tienda-de-alexa/</link><pubDate>Mon, 01 Apr 2019 13:37:36 +0000</pubDate><guid>https://www.macram.es/tecnologia/amazon-si-se-preocupa-por-la-tienda-de-alexa/</guid><description>&lt;p&gt;Como alguna vez he puesto en Twitter, tengo una skill publicada y que cualquiera puede probar. &lt;strong&gt;&lt;a href="https://amzn.to/2ENzdmk"&gt;Palabra del día&lt;/a&gt;&lt;/strong&gt; hace exactamente lo que promete, decir una palabra distinta cada día y su significado… salvo hoy, que parece que se ha roto algo. Ahora iré a mirarlo. Lo que me ha llamado la atención y lo que quiero comentar es el correo que he recibido por parte de Amazon.&lt;/p&gt;</description><content:encoded><![CDATA[
      <p>Como alguna vez he puesto en Twitter, tengo una skill publicada y que cualquiera puede probar. <strong><a href="https://amzn.to/2ENzdmk">Palabra del día</a></strong> hace exactamente lo que promete, decir una palabra distinta cada día y su significado… salvo hoy, que parece que se ha roto algo. Ahora iré a mirarlo. Lo que me ha llamado la atención y lo que quiero comentar es el correo que he recibido por parte de Amazon.</p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
  <p>
    Dear <em>(nombre completo)</em>,&nbsp;<br />In order to ensure that our skills are meeting the high quality bar expected by our customers, we continuously monitor and test live skills in our catalog. Your skill “<strong>Palabra del día</strong>” was tested as part of this monitoring process, and we found the following issues(s) with it:
  </p>
  <p>
    [&#8230;]
  </p>
  <p>
    Please address this issue within 5 business days of receiving this email to avoid skill suppression and resubmit the skill.<br />
  </p>
</blockquote>
<p>Es llamativo que, primero, una skill tan pequeña como la mía haya sido parte de un proceso de monitorización, y sobre todo, que haya sido parte de un proceso de monitorización <strong>por parte de humanos</strong>. Por poner una analogía, es como si Apple fuera recorriendo la App Store probando apps una vez lanzadas, y quitando las que no cumplan las expectativas. A decir verdad no sé si esto es algo que haga, pero desde luego no me lo esperaba de Amazon.</p>
<p>Y me ha sorprendido para bien, que conste. Aunque ahora tenga que arreglarlo a toda prisa para mantener la skill en el directorio (aprovecharé y añadiré algunas cosas que tenía pensadas, ya que me meto en harina 🙂 ).</p>
<p>Por cierto, aprovechad si queréis. Esta semana hay ofertas en todos los Amazon Echo, con descuentos desde 15€ por unidad. <em>La promosió</em>.</p>
<ul class="wp-block-list">
  <li>
    <a href="https://amzn.to/2HRTREy">Amazon Echo Input por 25€</a> (si solo necesitas los micrófonos y la conectividad, porque vas a conectarlo a unos altavoces externos)
  </li>
  <li>
    <a href="https://amzn.to/2OFAAqy">Amazon Echo Dot por 35€</a> (ideal para sitios pequeños y si la calidad de sonido del propio altavoz no es problema, por ejemplo, para escuchar radio)
  </li>
  <li>
    <a href="https://amzn.to/2HRJbpc">Amazon Echo por 75€</a>
  </li>
  <li>
    <a href="https://amzn.to/2HR4XJQ">Amazon Echo Plus por 120€</a> (lo tengo en la oficina y suena que flipas)
  </li>
  <li>
    <a href="https://amzn.to/2CNAict">Amazon Echo Spot por 110€</a> (me ha sorprendido para muy bien el sonido)
  </li>
  <li>
    <a href="https://amzn.to/2HRiTDS">Amazon Echo Show por 210€</a>
  </li>
</ul>
<p><a href="https://www.flickr.com/photos/diversey/45718825084">Imagen por Tony Webster en Flickr</a>{.broken_link}.</p>
      ]]></content:encoded></item><item><title>Hacer copia de seguridad de iPhone o iPad a disco duro externo</title><link>https://www.macram.es/tecnologia/hacer-copia-de-seguridad-de-iphone-o-ipad-a-disco-duro-externo/</link><pubDate>Sat, 17 Nov 2018 21:57:26 +0000</pubDate><guid>https://www.macram.es/tecnologia/hacer-copia-de-seguridad-de-iphone-o-ipad-a-disco-duro-externo/</guid><description>&lt;p&gt;Estoy intentando restaurar un iPad a ver si se resuelve un problema que tiene. Y lo primero que quería hacer, obviamente, era una copia de seguridad, &lt;em&gt;por si pasa algo&lt;/em&gt;, que nunca se sabe.&lt;/p&gt;
&lt;p&gt;El problema es que mi equipo principal es un Macbook Pro de 13 pulgadas… y 128GB de disco. Lo que implica que la copia de seguridad de un iPad de 64 gigas &lt;em&gt;a tope de power&lt;/em&gt;, simplemente, &lt;strong&gt;no me cabe&lt;/strong&gt;. Veamos cómo acabé haciendo al final.&lt;/p&gt;</description><content:encoded><![CDATA[
      <p>Estoy intentando restaurar un iPad a ver si se resuelve un problema que tiene. Y lo primero que quería hacer, obviamente, era una copia de seguridad, <em>por si pasa algo</em>, que nunca se sabe.</p>
<p>El problema es que mi equipo principal es un Macbook Pro de 13 pulgadas… y 128GB de disco. Lo que implica que la copia de seguridad de un iPad de 64 gigas <em>a tope de power</em>, simplemente, <strong>no me cabe</strong>. Veamos cómo acabé haciendo al final.</p>
<p>Mi primera intentona supuso crear en un disco duro externo una nueva biblioteca de iTunes, pensando que las copias de seguridad de dispositivos iOS se guardan ahí. Error. Al parecer en macOS las copias de seguridad se guardan en una ruta tan intuitiva como esta:</p>
<p><code>~/Library/Application Support/MobileSync</code></p>
<p>Así que el siguiente paso parecía claro: vamos a ver qué hay en esa carpeta. Y lo que hay es una carpeta llamada <em>Backup</em>. Así que vamos a sacar a pasear conocimientos de la terminal de Unix, y vamos a intentar hacer un enlace simbólico a una carpeta del disco duro externo, para que así la copia de seguridad vaya a este disco. El comando es, <a href="https://appleinsider.com/articles/18/08/15/how-to-back-up-your-iphone-or-ipad-to-an-external-drive-to-save-space-on-your-mac">tutorial de Apple Insider mediante</a>, tal que así:</p>
<p><code>ln -s /Volumes/(Disco duro)/Carpeta para backups)/ ~/Library/Application\ Support/MobileSync</code></p>
<p>Y cuando lo ejecutéis veréis que la terminal os dará un maravilloso mensaje de error diciendo <code>Operation not permitted</code> que ni siquiera un <code>sudo</code> puede evitar. </p>
<p>Pues, <a href="https://www.reddit.com/r/MacOS/comments/96pzaf/help_fixing_a_lost_symbolic_link_target/">Reddit mediante</a>, me entero de que en Mojave hay una nueva configuración de seguridad llamada <strong>Full Disk Access</strong>. Os cuento: resulta que, grosso modo, ciertas rutas están protegidísimas, por lo que, para que una aplicación pueda acceder a ellas, debemos dar un permiso específico a través del panel de configuración del sistema. </p>
<p>Los pasos a seguir, finalmente, serían:</p>
<ol class="wp-block-list">
  <li>
    Abrir <em>Preferencias del Sistema</em>.
  </li>
  <li>
    Marcar el panel de <em>Seguridad y Privacidad</em>.
  </li>
  <li>
    Buscar la pestaña <em>Privacidad</em> en la parte superior de la ventana.
  </li>
  <li>
    En la lista de categorías de la izquierda, bajar hasta <em>Acceso total al disco</em>.
  </li>
  <li>
    Añadir la app de terminal que usemos (ya sea <code>Terminal.app</code> o, como es mi caso, <code>iTerm.app</code>). Habrá un botón en la parte inferior de la lista para ello.
  </li>
  <li>
    Reiniciar la app si la teníamos abierta.
  </li>
  <li>
    Ejecutar el comando.
  </li>
  <li>
    Profit.
  </li>
</ol>
<p>Recordad, eso sí, que a partir de ahora, para hacer copias de seguridad con iTunes deberéis tener el disco duro conectado, o eliminar el enlace simbólico que creamos con el contacto y crear un nuevo directorio en la misma localización donde estaba antes. </p>
      ]]></content:encoded></item><item><title>Cambiar de hosting un blog: fácil, rápido e indoloro</title><link>https://www.macram.es/desarrollo/cambiar-de-hosting-un-blog-facil-rapido-e-indoloro/</link><pubDate>Thu, 29 Sep 2016 18:30:42 +0000</pubDate><guid>https://www.macram.es/desarrollo/cambiar-de-hosting-un-blog-facil-rapido-e-indoloro/</guid><description>&lt;p&gt;Estos días estoy dedicando parte de mi tiempo a &lt;strong&gt;trasladar algunos de mis sitios Web&lt;/strong&gt; de mi antiguo hosting en SurpassHosting a un &lt;a href="https://www.siteground.com/go/manumateos-wp"&gt;plan en SiteGround&lt;/a&gt;, que mantendré al menos un año (y que la verdad es que va como un tiro). Todos estos sitios Web están basados en WordPress, con un conjunto diferente de plugins y temas para cada uno, y por supuesto con distintos datos. Y el proceso al final ha resultado bastante sencillo.&lt;/p&gt;</description><content:encoded><![CDATA[
      <p>Estos días estoy dedicando parte de mi tiempo a <strong>trasladar algunos de mis sitios Web</strong> de mi antiguo hosting en SurpassHosting a un <a href="https://www.siteground.com/go/manumateos-wp">plan en SiteGround</a>, que mantendré al menos un año (y que la verdad es que va como un tiro). Todos estos sitios Web están basados en WordPress, con un conjunto diferente de plugins y temas para cada uno, y por supuesto con distintos datos. Y el proceso al final ha resultado bastante sencillo.</p>
<p>Tenemos que tener acceso a ambas cuentas de hosting para poder llevarlo a cabo.</p>
<!-- end-chunk -->
<!-- begin-chunk data-anchor="en-el-hosting-antiguo" -->

<h2>En el hosting antiguo</h2>

<ul>
<li><strong>Hacemos un backup de todos los archivos</strong>. Podemos omitir los de wp-super-cache. Para ello, accedemos por FTP o simplemente a través del administrador de ficheros de cPanel, hacemos un zip con todo y nos lo descargamos.</li>
<li><strong>Hacemos un dump de la base de datos</strong>. Consultamos el fichero <code>wp-config.php</code> para ver qué base de datos es la que debemos usar, accedemos a phpMyAdmin, buscamos la base de datos, «Exportar» y esperamos un poco. En el caso de <a href="http://musicafolk.es">musicafolk.es</a>, por ejemplo, ocupó poco más de dos megas.</li>
<li><strong>Ponemos un mensajito en el blog antiguo para identificar que es el antiguo</strong>. Esto es opcional.</li>
</ul>
<!-- end-chunk -->
<!-- begin-chunk data-anchor="en-el-hosting-nuevo" -->

<h2>En el hosting nuevo</h2>

<ul>
<li>En el panel de control, damos de alta el dominio.</li>
<li>Subimos (y opcionalmente descomprimimos) el backup del blog que hicimos antes.</li>
<li>Creamos una base de datos MySQL, un usuario con una contraseña que conozcamos, y damos permisos a ese usuario a la base de datos que hemos creado.</li>
<li>Abrimos phpMyAdmin, y en la base de datos que hemos creado, importamos el dump que hicimos antes.</li>
<li>En <code>wp-config.php</code> del blog del hosting nuevo, cambiamos host, nombre de base de datos, usuario y contraseña de acceso a la base de datos.</li>
</ul>
<!-- end-chunk -->
<!-- begin-chunk data-anchor="en-el-panel-de-control-del-registrador-del-dominio" -->

<h2>En el panel de control del registrador del dominio</h2>

<ul>
<li>Cambiamos DNS del dominio del antiguo hosting al nuevo hosting.</li>
<li>Esperamos unas horas.</li>
</ul>
<p>Opcionalmente tendremos que hacer también la migración de las cuentas de correo y de su contenido, pero eso será carne de otro post.</p>

      ]]></content:encoded></item></channel></rss>