{"id":68,"date":"2026-07-15T14:37:17","date_gmt":"2026-07-15T14:37:17","guid":{"rendered":"https:\/\/quimsr.es\/?page_id=68"},"modified":"2026-07-15T14:37:17","modified_gmt":"2026-07-15T14:37:17","slug":"trabajos-2","status":"publish","type":"page","link":"https:\/\/quimsr.es\/index.php\/trabajos-2\/","title":{"rendered":"Trabajos"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div id=\"quimsr-github-profile\" class=\"qgh-wrap\">\n  <p class=\"qgh-loading\">Cargando proyectos de GitHub\u2026<\/p>\n<\/div>\n\n<style>\n  .qgh-wrap {\n    box-sizing: border-box;\n    width: 100%;\n    max-width: 1100px;\n    margin: 40px auto;\n    padding: 28px;\n    color: #f0f6fc;\n    background: #0d1117;\n    border: 1px solid #30363d;\n    border-radius: 16px;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n      Helvetica, Arial, sans-serif;\n  }\n\n  .qgh-header {\n    display: flex;\n    align-items: center;\n    gap: 22px;\n    margin-bottom: 28px;\n  }\n\n  .qgh-avatar {\n    width: 110px;\n    height: 110px;\n    flex: 0 0 110px;\n    object-fit: cover;\n    border: 2px solid #30363d;\n    border-radius: 50%;\n  }\n\n  .qgh-title {\n    margin: 0 0 4px;\n    color: #f0f6fc;\n    font-size: 30px;\n    line-height: 1.2;\n  }\n\n  .qgh-user {\n    margin: 0 0 10px;\n    color: #8c959f;\n    font-size: 18px;\n  }\n\n  .qgh-bio {\n    margin: 0 0 10px;\n    color: #c9d1d9;\n    line-height: 1.5;\n  }\n\n  .qgh-stats {\n    color: #8c959f;\n    font-size: 14px;\n  }\n\n  .qgh-subtitle {\n    margin: 0 0 16px;\n    color: #f0f6fc;\n    font-size: 22px;\n  }\n\n  .qgh-repos {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 16px;\n  }\n\n  .qgh-repo {\n    display: flex;\n    flex-direction: column;\n    min-height: 155px;\n    padding: 18px;\n    color: inherit;\n    background: #161b22;\n    border: 1px solid #30363d;\n    border-radius: 10px;\n    text-decoration: none;\n    transition: transform 0.2s ease, border-color 0.2s ease;\n  }\n\n  .qgh-repo:hover {\n    transform: translateY(-3px);\n    border-color: #58a6ff;\n  }\n\n  .qgh-repo-title {\n    margin: 0 0 10px;\n    color: #58a6ff;\n    font-size: 17px;\n    overflow-wrap: anywhere;\n  }\n\n  .qgh-description {\n    flex-grow: 1;\n    margin: 0 0 16px;\n    color: #c9d1d9;\n    font-size: 14px;\n    line-height: 1.5;\n  }\n\n  .qgh-meta {\n    color: #8c959f;\n    font-size: 13px;\n  }\n\n  .qgh-profile-link {\n    display: inline-block;\n    margin-top: 24px;\n    padding: 10px 16px;\n    color: #f0f6fc;\n    background: #21262d;\n    border: 1px solid #30363d;\n    border-radius: 7px;\n    text-decoration: none;\n  }\n\n  .qgh-profile-link:hover {\n    border-color: #8c959f;\n  }\n\n  .qgh-loading,\n  .qgh-error,\n  .qgh-empty {\n    margin: 0;\n    color: #c9d1d9;\n  }\n\n  .qgh-error {\n    color: #ff7b72;\n  }\n\n  @media (max-width: 700px) {\n    .qgh-wrap {\n      margin: 24px auto;\n      padding: 18px;\n    }\n\n    .qgh-header {\n      align-items: flex-start;\n    }\n\n    .qgh-avatar {\n      width: 76px;\n      height: 76px;\n      flex-basis: 76px;\n    }\n\n    .qgh-title {\n      font-size: 23px;\n    }\n\n    .qgh-repos {\n      grid-template-columns: 1fr;\n    }\n  }\n<\/style>\n\n<script>\n(function () {\n  const containerId = \"quimsr-github-profile\";\n  const username = \"quimsr\";\n\n  function escapeHtml(value) {\n    return String(value ?? \"\")\n      .replace(\/&\/g, \"&amp;\")\n      .replace(\/<\/g, \"&lt;\")\n      .replace(\/>\/g, \"&gt;\")\n      .replace(\/\"\/g, \"&quot;\")\n      .replace(\/'\/g, \"&#039;\");\n  }\n\n  async function loadGitHubProfile() {\n    const container = document.getElementById(containerId);\n\n    if (!container || container.dataset.loaded === \"true\") {\n      return;\n    }\n\n    container.dataset.loaded = \"true\";\n\n    try {\n      const userUrl =\n        \"https:\/\/api.github.com\/users\/\" + encodeURIComponent(username);\n\n      const reposUrl =\n        userUrl +\n        \"\/repos?sort=updated&direction=desc&per_page=12&type=owner\";\n\n      const responses = await Promise.all([\n        fetch(userUrl, {\n          headers: { Accept: \"application\/vnd.github+json\" }\n        }),\n        fetch(reposUrl, {\n          headers: { Accept: \"application\/vnd.github+json\" }\n        })\n      ]);\n\n      if (!responses[0].ok || !responses[1].ok) {\n        throw new Error(\"GitHub no devolvi\u00f3 una respuesta v\u00e1lida.\");\n      }\n\n      const user = await responses[0].json();\n      const allRepos = await responses[1].json();\n\n      const repos = allRepos\n        .filter(function (repo) {\n          return !repo.fork;\n        })\n        .slice(0, 6);\n\n      const cards = repos.map(function (repo) {\n        const description =\n          repo.description || \"Repositorio p\u00fablico de GitHub\";\n\n        const language = repo.language || \"Sin lenguaje indicado\";\n\n        return `\n          <a\n            class=\"qgh-repo\"\n            href=\"${escapeHtml(repo.html_url)}\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >\n            <h3 class=\"qgh-repo-title\">\n              ${escapeHtml(repo.name)}\n            <\/h3>\n\n            <p class=\"qgh-description\">\n              ${escapeHtml(description)}\n            <\/p>\n\n            <div class=\"qgh-meta\">\n              ${escapeHtml(language)}\n              &nbsp; \u00b7 &nbsp;\u2605 ${Number(repo.stargazers_count) || 0}\n            <\/div>\n          <\/a>\n        `;\n      }).join(\"\");\n\n      container.innerHTML = `\n        <div class=\"qgh-header\">\n          <img decoding=\"async\"\n            class=\"qgh-avatar\"\n            src=\"${escapeHtml(user.avatar_url)}\"\n            alt=\"Foto del perfil de GitHub de ${escapeHtml(user.login)}\"\n          >\n\n          <div>\n            <h2 class=\"qgh-title\">\n              ${escapeHtml(user.name || user.login)}\n            <\/h2>\n\n            <p class=\"qgh-user\">\n              @${escapeHtml(user.login)}\n            <\/p>\n\n            <p class=\"qgh-bio\">\n              ${escapeHtml(user.bio || \"Mis proyectos y repositorios p\u00fablicos\")}\n            <\/p>\n\n            <div class=\"qgh-stats\">\n              ${Number(user.public_repos) || 0} repositorios\n              &nbsp; \u00b7 &nbsp;\n              ${Number(user.followers) || 0} seguidores\n              &nbsp; \u00b7 &nbsp;\n              ${Number(user.following) || 0} siguiendo\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <h3 class=\"qgh-subtitle\">Repositorios recientes<\/h3>\n\n        <div class=\"qgh-repos\">\n          ${\n            cards ||\n            '<p class=\"qgh-empty\">No hay repositorios p\u00fablicos disponibles.<\/p>'\n          }\n        <\/div>\n\n        <a\n          class=\"qgh-profile-link\"\n          href=\"${escapeHtml(user.html_url)}\"\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n        >\n          Ver perfil completo en GitHub \u2192\n        <\/a>\n      `;\n    } catch (error) {\n      container.innerHTML = `\n        <p class=\"qgh-error\">\n          No ha sido posible cargar GitHub en este momento.\n          Puedes visitar el perfil\n          <a\n            href=\"https:\/\/github.com\/quimsr\"\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n          >aqu\u00ed<\/a>.\n        <\/p>\n      `;\n    }\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", loadGitHubProfile);\n  } else {\n    loadGitHubProfile();\n  }\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Cargando proyectos de GitHub\u2026<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-68","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/quimsr.es\/index.php\/wp-json\/wp\/v2\/pages\/68","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/quimsr.es\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/quimsr.es\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/quimsr.es\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/quimsr.es\/index.php\/wp-json\/wp\/v2\/comments?post=68"}],"version-history":[{"count":1,"href":"https:\/\/quimsr.es\/index.php\/wp-json\/wp\/v2\/pages\/68\/revisions"}],"predecessor-version":[{"id":69,"href":"https:\/\/quimsr.es\/index.php\/wp-json\/wp\/v2\/pages\/68\/revisions\/69"}],"wp:attachment":[{"href":"https:\/\/quimsr.es\/index.php\/wp-json\/wp\/v2\/media?parent=68"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}