• DELETE FROM KEYWORDS WHERE ID_DOMAINE=34015591
  • DoneDoneDone

    URL:stitcher.io

    Connection: keep-alive
    Date: Fri, 24 Jan 2025 00:26:16 GMT
    Content-Length: 169
    Content-Type: text/html
    Location: https://stitcher.io/
    Server: nginx/1.26.1
    
    
    Location => https://stitcher.io/
    Status => 301
    <html>
    <head><title>301 Moved Permanently</title></head>
    

    (vide) Tentative en https

    https://stitcher.io/

    <!DOCTYPE html>
    <html lang="en">
    <head>
                    <title>Blog - stitcher.io</title>
    
                <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="twitter:card" content="article">
    <meta name="title" content="Blog - stitcher.io">
    <meta name="twitter:title" content="Blog - stitcher.io">
    <meta name="description" content="A blog about modern PHP, the web, and programming in general. Follow my newsletter and YouTube channel as well.">
    <meta name="twitter:description" content="A blog about modern PHP, the web, and programming in general. Follow my newsletter and YouTube channel as well.">
    <meta property="og:type" content="article">
    <meta property="og:title" content="Blog - stitcher.io">
    <meta property="og:description" content="A blog about modern PHP, the web, and programming in general. Follow my newsletter and YouTube channel as well.">
    <meta itemprop="name" content="Blog - stitcher.io">
    <meta itemprop="description" content="A blog about modern PHP, the web, and programming in general. Follow my newsletter and YouTube channel as well.">
    
        
                <meta name="twitter:card" content="summary"/>
            <meta property="twitter:image" content="https://stitcher.io/resources/img/meta_small.png"/>
        
        <meta name="twitter:creator" content="@brendt_gd"/>
        <link rel="alternate" type="application/rss+xml" title="Stitcher RSS" href="/rss"/>
    
        <link rel="manifest" href="/site.webmanifest">
    
    <meta name="apple-mobile-web-app-status-bar-style"
          content="black-translucent"/>
    
    <meta name="viewport" content="initial-scale=1, viewport-fit=cover" />
    
    <link rel="mask-icon" href="/resources/img/favicon/safari-pinned-tab.svg" color="#fc3149">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="theme-color" content="#ffffff">
    <link rel="icon" type="image/png" sizes="32x32" href="/resources/img/favicon/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/resources/img/favicon/favicon-16x16.png">
    
    <!-- GENERATED BELOW -->
    
    <link rel="apple-touch-icon" sizes="180x180" href="/resources/pwa/apple-icon-180.jpg">
    <link rel="apple-touch-icon" sizes="167x167" href="/resources/pwa/apple-icon-167.jpg">
    <link rel="apple-touch-icon" sizes="152x152" href="/resources/pwa/apple-icon-152.jpg">
    <link rel="apple-touch-icon" sizes="120x120" href="/resources/pwa/apple-icon-120.jpg">
    
    <meta name="apple-mobile-web-app-capable" content="yes">
    
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-2048-2732.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-2732-2048.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-1668-2388.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-2388-1668.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-1536-2048.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-2048-1536.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-1668-2224.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-2224-1668.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-1620-2160.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-2160-1620.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-1284-2778.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-2778-1284.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-1170-2532.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-2532-1170.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-1125-2436.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-2436-1125.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-1242-2688.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-2688-1242.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-828-1792.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-1792-828.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-1242-2208.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-2208-1242.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-750-1334.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-1334-750.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-640-1136.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
    <link rel="apple-touch-startup-image" href="/resources/pwa/apple-splash-1136-640.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
            
    
        <style>@font-face {
      font-family: Bangers;
      src: url(/resources/fonts/Bangers/Bangers-Regular.ttf); }
    
    .comic {
      font-family: Bangers, Verdana, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
      letter-spacing: 2px;
      font-weight: 300;
      text-shadow: 2px 1px rgba(0, 0, 0, 0.9); }
    
    h1 .heading-anchor, h2 .heading-anchor, h3 .heading-anchor, h4 .heading-anchor, h5 .heading-anchor {
      position: absolute;
      left: 0;
      padding-right: 1em;
      margin-left: -1em;
      opacity: 0;
      font-size: 0.8em;
      padding-top: 5px;
      padding-left: 5px;
      color: #fe8fb8;
      text-decoration: none;
      font-weight: 400; }
      h1 .heading-anchor:hover, h2 .heading-anchor:hover, h3 .heading-anchor:hover, h4 .heading-anchor:hover, h5 .heading-anchor:hover, h1:hover > .heading-anchor, h2:hover > .heading-anchor, h3:hover > .heading-anchor, h4:hover > .heading-anchor, h5:hover > .heading-anchor {
        opacity: 100; }
      @media (max-width: 1200px) {
      h1 .heading-anchor, h2 .heading-anchor, h3 .heading-anchor, h4 .heading-anchor, h5 .heading-anchor {
        position: relative;
        display: none;
        left: 0;
        padding-top: 0;
        margin-left: 0;
        padding-right: 0;
        padding-left: 0; } }
    
    div.center {
      display: block;
      margin-left: auto;
      margin-right: auto;
      max-width: 70ch;
      padding-right: 0px;
      text-align: center; }
      @media (max-width: 70ch) {
      div.center {
        padding-right: 10px;
        padding-left: 10px; } }
    
    em.center {
      display: block;
      text-align: center; }
    
    .center {
      text-align: center; }
    
    em.small {
      font-size: 1rem; }
    
    img + em.small {
      margin-top: -1rem; }
    
    pre + p > em.small {
      margin-top: -1.5em; }
    
    div.center > p {
      padding-right: 0; }
    
    .sneaky-placeholder {
      display: none;
      margin-bottom: 3rem;
      margin-top: 3rem;
      font-size: 1em; }
    
    .sneaky-placeholder > h2 {
      margin-top: 0;
      font-size: 1.4em; }
    
    .sneaky-placeholder > p {
      margin-bottom: 0; }
    
    .sneaky-placeholder.shown {
      display: block; }
    
    .avatar {
      display: inline-block;
      height: 2em;
      border-radius: 50%;
      margin-top: 0;
      margin-bottom: 0; }
    
    .cta:visited, .cta {
      display: inline-block;
      cursor: pointer;
      background-color: #fe2977;
      margin: 0.5rem 0;
      text-align: center;
      padding: 1em 2em;
      color: #fff;
      text-decoration: none;
      font-family: Verdana, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
      font-weight: 600;
      transition: all 100ms ease-out;
      border: 3px solid #fe2977;
      font-size: 1.1em; }
      @media (max-width: 420px) {
      .cta:visited, .cta {
        font-size: 1.2em;
        line-height: 1.4em; } }
    
    .cta:hover {
      background-color: #fcf4f5;
      color: #fe2977; }
    
    .cta-small {
      padding: 0.3em 1em;
      font-size: 1.2rem; }
    
    .cta-bold {
      font-weight: bold; }
    
    .cta-light {
      background-color: #fff;
      color: #666;
      padding: 1em 2em; }
      .cta-light:hover {
        color: #000; }
    
    .cta-sidenote {
      margin-top: 0;
      margin-bottom: 1em; }
    
    .cta-ghost {
      background-color: #fff;
      border: none;
      color: #666;
      padding: 1em 2em; }
      .cta-ghost:hover {
        color: #fe2977;
        background-color: #fff; }
    
    .cta-light:hover {
      background-color: #fff; }
    
    .caps {
      font-variant: all-small-caps; }
    
    .title {
      font-family: Verdana, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
      text-decoration: none;
      position: relative;
      font-kerning: normal;
      font-size: 2.5em;
      line-height: 1.2em;
      letter-spacing: 2px;
      font-weight: 400; }
      .title:hover {
        color: #fe2977; }
    
    .adsbygoogle {
      max-width: 70ch;
      padding: 2rem 0;
      margin-left: auto;
      margin-right: auto; }
    
    .no-ad .ad-container, .no-ad .sneaky-placeholder {
      display: none; }
    
    .image-noborder img, .image-noborder + p > a > img, .image-noborder + p > img {
      box-shadow: none; }
    
    .image-small + p img {
      max-width: 40%; }
    
    .image-left + p img {
      margin-left: 0; }
    
    @media (min-width: 1250px) {
        .image-wide + p, .image-wide + p {
          width: 1200px;
          margin-left: -200px; } }
    
    .image-wide + p > a > img, .image-wide + p > img {
      width: 100%; }
    
    .image-noborder + p + p > em {
      margin-top: -3rem; }
    
    .mobile-only {
      display: none; }
      @media (max-width: 630px) {
      .mobile-only {
        display: block; } }
    
    .desktop-only {
      display: none; }
      @media (min-width: 631px) {
      .desktop-only {
        display: block; } }
    
    .no-break {
      white-space: nowrap; }
    
    .patreon {
      font-family: Verdana, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
      font-size: 0.9rem;
      padding: 0.6em 0;
      background-color: #fcf4f5;
      border-bottom: 2px solid #fe2977; }
      .patreon p {
        font-size: 1em;
        color: #000;
        margin-bottom: 0; }
        .patreon p a {
          color: #000;
          text-decoration: underline; }
          .patreon p a:hover {
            text-decoration: none; }
      .patreon.patreon-light {
        background: none; }
    
    .ad-container:not(.ad-google) {
      margin-bottom: 1em; }
      @media (min-width: 1200px) {
      .ad-container:not(.ad-google) {
        height: 140px;
        overflow: hidden; } }
    
    .ad-google {
      margin-bottom: 100px; }
    
    #carbonads {
      margin-top: 1.5em;
      margin-bottom: 1.5em;
      cursor: pointer;
      font-size: 18px;
      line-height: 1.4em;
      position: relative; }
      #carbonads a {
        text-decoration: none; }
    
    #carbonads > span {
      display: flex;
      flex-wrap: wrap; }
      #carbonads > span > a {
        display: block;
        width: 100%;
        text-align: right;
        margin-top: -1.7em;
        padding-right: 0.1em; }
        @media (max-width: 420px) {
      #carbonads > span > a {
        padding-right: 1em; } }
    
    .carbon-wrap {
      display: flex;
      align-items: center;
      font-size: 1.1em; }
      .carbon-wrap img {
        width: 130px;
        height: 100px;
        margin: 0; }
      .carbon-wrap a:last-child {
        padding-left: 1em; }
      @media (max-width: 420px) {
      .carbon-wrap {
        padding: 1em;
        background-color: #fafafa;
        flex-direction: column;
        align-items: flex-start; }
        .carbon-wrap a:last-child {
          margin-top: 1em;
          padding-left: 0;
          margin-bottom: 1em; } }
    
    .wrapper {
      display: block;
      margin-left: auto;
      margin-right: auto;
      max-width: 70ch;
      padding-right: 0px; }
      @media (max-width: 70ch) {
      .wrapper {
        padding-right: 10px;
        padding-left: 10px; } }
    
    h1 > .subtitle {
      display: block;
      font-size: 0.5em;
      padding-left: 1rem; }
    
    .like-container {
      display: flex;
      justify-content: center; }
    
    .like {
      font-size: 1.5em;
      border: 2px solid #fe2977;
      border-radius: 10px;
      display: inline-block;
      text-align: center;
      padding: 5px 10px;
      margin-bottom: 1em;
      background-color: #fff;
      cursor: pointer; }
    
    .like.liked {
      border-width: 2px;
      background-color: #fe2977;
      color: #fff;
      font-weight: bold; }
    
    .like.hidden {
      display: none; }
    
    .like.unliked:hover {
      background-color: #fe2977; }
    
    .like.placeholder {
      cursor: default;
      border-color: #888;
      background-color: #ddd;
      -webkit-filter: grayscale(100%);
      filter: grayscale(100%); }
    
    .spotlight h3 {
      margin-top: 1rem; }
    
    .spotlight h3 + p {
      margin-top: 1em; }
    
    .spotlight p {
      font-size: 1.2rem; }
    
    .spotlight p + iframe {
      margin-top: -1rem; }
    
    img.small {
      margin-left: auto;
      margin-right: auto;
      width: 100%; }
      @media (min-width: 640px) {
      img.small {
        width: 55%; } }
    
    .hover-outline:active, .hover-outline:focus, .hover-outline:hover {
      box-shadow: 0 0 0 7px #fe2977; }
    
    .datadog img {
      margin-left: auto;
      margin-right: auto;
      width: 100%; }
    
    .datadog {
      margin-bottom: 2em; }
    
    .packagist {
      display: flex; }
    
    .packagist img {
      max-width: 10%;
      margin-right: 1em;
      box-shadow: none;
      margin-left: 0;
      margin-bottom: 0; }
    
    @media (max-width: 70ch) {
      .packagist svg {
        max-width: 25%;
        margin-right: 1em; } }
    
    .taxi-book-cta {
      display: flex;
      gap: 1em;
      justify-content: center;
      align-items: center; }
      .taxi-book-cta img {
        box-shadow: 2px 2px 15px -5px black;
        width: 40%; }
      @media (max-width: 640px) {
      .taxi-book-cta {
        display: grid;
        justify-items: center;
        text-align: center; }
        .taxi-book-cta img {
          box-shadow: 2px 2px 15px -5px black;
          width: 80%; } }
    
    div.taxi {
      background-color: #0a0f12;
      background: radial-gradient(circle, #1a2b30 40%, #000 80%); }
    
    .taxi, .tempest {
      background-color: #4f96d1;
      color: #fff;
      font-weight: bold;
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      display: flex;
      padding: 1em; }
      .taxi .wrapper, .tempest .wrapper {
        display: flex;
        justify-content: start;
        align-items: center;
        gap: 6px; }
      .taxi img, .tempest img {
        display: inline-block;
        width: 20px;
        height: 20px;
        margin-left: 0;
        margin-bottom: 0;
        box-shadow: none; }
      .taxi a, .tempest a, .taxi a:visited, .tempest a:visited {
        color: inherit;
        text-decoration-color: #fff; }
    
    @font-face {
      font-family: Bangers;
      src: url(/resources/fonts/Bangers/Bangers-Regular.ttf); }
    
    body {
      font-size: 14px;
      background-color: #fefefe;
      margin: 0;
      padding: 0;
      color: #111;
      font-weight: 400; }
      @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
      body {
        font-weight: 300; } }
      @media (max-width: 420px) {
      body {
        font-size: 13px; } }
    
    .ruler {
      display: block;
      position: absolute;
      left: 0;
      top: 0;
      height: 900px;
      width: 5px;
      background-color: #fe2977; }
    
    * {
      box-sizing: border-box;
      font-size: 1em;
      margin-top: 0;
      margin-bottom: 0;
      padding-top: 0;
      padding-bottom: 0; }
    
    h1 > span {
      background-color: #fe2977;
      padding: 0.5rem;
      color: #fff;
      line-height: 1.6em; }
    
    h1 {
      color: #fe2977;
      font-size: 3em;
      line-height: 1.2em;
      margin-top: 1.5em;
      margin-bottom: 3rem; }
      @media (min-width: 880px) {
      h1 {
        width: calc(100% + 48px);
        margin-left: -24px; } }
      h1.small-title {
        font-size: 2.5em; }
      @media (max-width: 640px) {
      h1 {
        text-align: center; } }
      @media (max-width: 420px) {
      h1 {
        font-size: 2.2em;
        line-height: 2em; } }
      @media (max-width: 70ch) {
      h1 {
        margin: 0.5em 20px;
        padding-left: 0; } }
      @media (max-width: 460px) {
      h1 {
        margin: 0.5em 0; } }
    
    h2 {
      font-size: 1.8em;
      font-weight: 400;
      margin-top: 1.3em;
      position: relative; }
    
    body h3 {
      font-size: 1.5em;
      margin-top: 1.1em;
      color: #353535; }
    
    h2 > small, h3 > small {
      display: inline-block;
      border-radius: 5px;
      background-color: #8892bf;
      color: #fff;
      text-transform: lowercase;
      position: relative;
      top: -4px; }
      h2 > small.breaking, h3 > small.breaking {
        background-color: #de5f5f; }
      h2 > small a:visited, h3 > small a:visited, h2 > small a, h3 > small a {
        color: inherit;
        text-decoration: none;
        padding: 1px 5px 4px 5px;
        display: inline-block; }
        @media (max-width: 640px) {
        h2 > small a:visited, h3 > small a:visited, h2 > small a, h3 > small a {
          text-decoration: underline; } }
    
    h2 > small {
      font-size: 0.5em; }
    
    h3 > small {
      font-size: 0.7em; }
    
    article {
      display: block;
      margin-left: auto;
      margin-right: auto;
      max-width: 70ch;
      padding-right: 0px;
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      position: relative; }
      @media (max-width: 70ch) {
      article {
        padding-right: 10px;
        padding-left: 10px; } }
    
    p {
      color: #111;
      font-size: 1.3em;
      line-height: 1.55em;
      margin-bottom: 1rem; }
      p > small {
        font-size: 1rem; }
    
    li {
      font-size: 1.3em;
      line-height: 1.55em;
      margin: 0 auto 0.3rem;
      max-width: 70ch;
      padding-right: 50px; }
      @media (max-width: 70ch) {
      li {
        max-width: 100%;
        padding-right: 20px; } }
    
    li ul li {
      font-size: 1em;
      padding-right: 0; }
    
    ul {
      font-weight: 300;
      color: #111;
      margin-left: 40px;
      padding-left: 1.5em;
      margin-bottom: 2rem; }
      @media (max-width: 70ch) {
      ul {
        margin-left: 20px;
        padding-left: 0; } }
    
    ul ul {
      margin-top: 10px;
      margin-left: 40px; }
      @media (max-width: 70ch) {
      ul ul {
        margin-left: 20px; } }
    
    p > em {
      font-style: normal;
      line-height: inherit; }
    
    blockquote {
      background: #fcf4f5;
      padding: 1rem;
      border-left: 4px solid #fe2977;
      color: #353535;
      line-height: 2em;
      position: relative;
      margin: 0 0 1rem 0; }
      blockquote p {
        color: inherit;
        line-height: inherit; }
      @media (max-width: 460px) {
      blockquote {
        border: 1px solid #fe2977; } }
      blockquote:before {
        position: absolute;
        content: '"';
        display: block;
        font-size: 4em;
        font-family: "Times New Roman", serif;
        color: #fe2977;
        font-weight: bold;
        top: -2px;
        left: 0; }
      @media (min-width: 460px) {
        blockquote:before {
          -webkit-text-stroke-width: 2px;
          top: -4px;
          left: -3px;
          -webkit-text-stroke-color: #fcf4f5; } }
    
    blockquote + em {
      margin-top: -1em;
      margin-bottom: 1.5em; }
    
    h1 + blockquote {
      margin-bottom: 2rem; }
    
    p + blockquote {
      margin-top: 1.5rem;
      margin-bottom: 2rem; }
    
    blockquote > p:last-child {
      margin-bottom: 0; }
    
    blockquote code {
      font-size: 0.7em; }
    
    code {
      font-size: 0.8em;
      letter-spacing: 1px;
      padding: 0.2em 0.4em;
      margin-right: 2px;
      font-family: Menlo, Monaco, "Ubuntu Mono", "Courier New", monospace;
      background-color: #f2f2f2;
      color: #000; }
    
    @media (max-width: 640px) {
        p code, ul code {
          overflow-wrap: break-word;
          word-break: break-word; } }
    
    pre {
      margin-top: 1.5rem;
      margin-bottom: 1.5rem;
      overflow-x: auto;
      display: block;
      border: 1px solid #ededed;
      background-color: #f7f7f7; }
      @media (min-width: 880px) {
      pre {
        width: calc(100% + 48px);
        margin-left: -24px; } }
    
    pre {
      line-height: 1.7em;
      font-size: 1.1em;
      letter-spacing: 0;
      margin-right: 0;
      padding: 1.5em 1.5rem;
      display: block;
      background-color: #f7f7f7; }
      @media (max-width: 70ch) {
      pre {
        padding: 1.5em 1rem; } }
    
    video {
      max-width: 100%; }
      @media (min-width: 880px) {
      video {
        width: calc(100% + 48px);
        margin-left: -24px; } }
    
    img {
      box-shadow: 1px 2px 15px -2px rgba(0, 0, 0, 0.2);
      margin-bottom: 1rem;
      max-width: 100%; }
      @media (min-width: 880px) {
      img {
        width: calc(100% + 48px);
        margin-left: -24px; } }
      img.editor-badge {
        margin-left: auto;
        margin-right: auto;
        display: block;
        box-shadow: none; }
      @media (max-width: 70ch) {
      img {
        max-width: 100%;
        margin-left: 0; } }
    
    p > img {
      margin-top: 1.5rem;
      margin-bottom: 1.5rem; }
    
    footer {
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      margin-bottom: 2rem;
      margin-top: 3rem;
      padding-top: 1rem;
      padding-bottom: 1rem; }
    
    footer > nav {
      display: block;
      margin-left: auto;
      margin-right: auto;
      max-width: 70ch;
      padding-right: 0px;
      text-align: center; }
      @media (max-width: 70ch) {
      footer > nav {
        padding-right: 10px;
        padding-left: 10px; } }
    
    footer > p {
      font-size: 1.2em;
      text-align: center;
      color: #111;
      margin-top: 1em; }
      footer > p a {
        color: inherit; }
    
    a:visited, a {
      color: #000;
      text-decoration: underline;
      text-decoration-skip: edges;
      text-decoration-color: #fe2977; }
    
    a:hover {
      text-decoration: none; }
    
    hr {
      position: relative;
      height: 2rem;
      border: none;
      text-align: center;
      margin: 3rem auto; }
      hr::before {
        display: inline-block;
        border-bottom: solid #999 1px;
        content: ' ';
        width: 30%; }
      @media (max-width: 420px) {
      hr {
        margin: 2rem auto; }
        hr::before {
          width: 90%; } }
    
    iframe {
      margin-top: 1em;
      margin-bottom: 1em;
      width: 100%; }
      @media (max-width: 420px) {
      iframe {
        height: 250px; } }
    
    abbr {
      font-variant: all-small-caps;
      font-weight: normal;
      font-size: 1.1em;
      line-height: 1em;
      white-space: nowrap; }
    
    span.number {
      font-size: 0.9em;
      line-height: 1em;
      white-space: nowrap; }
    
    .table-container {
      overflow-x: auto; }
    
    table {
      font-size: 1.3rem;
      width: 100%;
      margin-bottom: 2rem;
      border-spacing: 0; }
      @media (max-width: 420px) {
      table {
        font-size: 1rem; } }
    
    tr.table-head {
      background-color: #fff;
      font-weight: bold;
      font-size: 1.2rem; }
    
    tr {
      background-color: #f9e8ea; }
    
    td.right {
      text-align: right; }
    
    tr:nth-child(2n) {
      background-color: #fcf4f5; }
    
    tr.highlight-text {
      font-weight: bold; }
    
    td {
      padding: 0.5em 1em; }
    
    form {
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }
      @media (min-width: 640px) {
      form {
        display: flex;
        align-items: baseline; } }
    
    label {
      font-size: 1.2rem; }
    
    input {
      font-size: 1.2rem;
      padding: 0.5em;
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      font-weight: normal;
      border: 1px solid #353535; }
    
    input:focus {
      border: 1px solid #fe2977;
      outline: none; }
    
    #cookies-eu-banner {
      position: fixed;
      z-index: 999;
      font-size: 1rem;
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      width: 500px;
      background-color: #fcf4f5;
      bottom: 0;
      padding: 1rem; }
      @media (max-width: 600px) {
      #cookies-eu-banner {
        width: 100%; } }
      #cookies-eu-banner button {
        background: none;
        padding: 0;
        margin: 0;
        border: none;
        outline: none;
        font-weight: bolder;
        font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
        cursor: pointer; }
      #cookies-eu-banner button + button {
        margin-left: 1rem; }
      #cookies-eu-banner > div {
        text-align: right;
        padding-right: 1rem;
        margin-top: 0.5rem; }
    
    .author {
      background-color: #fcf4f5;
      font-size: 1.2em;
      margin-top: 2rem;
      margin-bottom: 2em;
      padding: 1em 1.3em;
      line-height: 1.7em; }
      @media (min-width: 880px) {
      .author {
        width: calc(100% + 48px);
        margin-left: -24px; } }
      .author p {
        font-size: 1em; }
      .author p:last-child {
        margin-bottom: 0; }
    
    .footnotes {
      background-color: #fcf4f5;
      padding: 1em 1.3em;
      border-left: 5px solid #fe2977; }
      @media (min-width: 880px) {
      .footnotes {
        width: calc(100% + 48px);
        margin-left: -24px; } }
      .footnotes h2 {
        margin-top: 0;
        padding-top: 0;
        color: #111;
        font-size: 1.4rem;
        margin-bottom: 0.5em; }
      .footnotes p {
        margin-bottom: 0;
        font-size: 1.3em;
        padding-left: 0.2rem; }
      .footnotes p + p {
        margin-top: 0.2em; }
      @media (max-width: 420px) {
        .footnotes p + p {
          margin-top: 0.5em; } }
    
    .banner {
      color: #353535;
      padding: 3em 0 2.8em;
      margin: 2em 0; }
      .banner h1 {
        margin-top: 0;
        text-align: left;
        display: inline-block;
        width: auto;
        border: none;
        margin-bottom: 0;
        font-weight: normal; }
      .banner p + ul {
        margin-top: 1.5em; }
    
    .banner a {
      text-decoration: underline;
      color: inherit; }
      .banner a:hover {
        text-decoration: none; }
    
    audio {
      margin-top: 0.5em;
      width: 100%; }
      @media (min-width: 1200px) {
      audio {
        width: calc(100% + 40px);
        margin-left: -20px; } }
    
    .commento-root img {
      margin-left: 0px; }
    
    .commento-root .commento-body p {
      font-size: 1.1em;
      color: #353535;
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }
    </style>
    <style>@font-face {
      font-family: Bangers;
      src: url(/resources/fonts/Bangers/Bangers-Regular.ttf); }
    
    nav.overview {
      display: flex;
      flex-flow: row wrap;
      margin-top: 1em; }
    
    .links {
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      margin-bottom: 0;
      padding-top: 0;
      padding-bottom: 0;
      font-size: 1.2em;
      margin-top: 1em; }
      @media (max-width: 420px) {
      .links {
        padding-left: 1rem;
        padding-right: 1rem; } }
    
    nav.overview {
      max-width: 1000px;
      margin: 0 auto; }
    
    nav {
      font-size: 1.1em; }
      @media (min-width: 880px) {
      nav {
        width: calc(100% + 48px);
        margin-left: -24px; } }
    
    nav > a {
      display: flex;
      align-items: center;
      justify-content: start;
      font-size: 1.1em;
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      margin: 0.3em;
      padding: 1em;
      text-decoration: none; }
      nav > a > * + * {
        margin-left: 0.3em; }
      nav > a .post-date {
        display: block;
        min-width: 10ch; }
      nav > a .post-title {
        background-color: #fe2977;
        color: #fff;
        padding: 0.5em;
        font-weight: bold; }
      nav > a:hover {
        background-color: #fcf4f5;
        color: #000;
        box-shadow: inset 0 0 0 4px #fe2977; }
      @media (max-width: 640px) {
      nav > a {
        display: block;
        text-align: center; }
        nav > a .post-title {
          display: block;
          margin-top: 0.33em; } }
    
    .post-tag {
      position: absolute;
      top: 0;
      right: 0;
      margin-right: 0.2em;
      margin-top: 0.2em;
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      font-size: 1.1em;
      padding: 0.3em 0.7em;
      background-color: var(--tag-color-background);
      color: var(--tag-color-text);
      font-weight: bold; }
      @media (max-width: 460px) {
      .post-tag {
        font-size: 0.9em; } }
    
    nav.overview p {
      margin-top: 1em;
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      font-size: 1.35em; }
    
    section p {
      padding-right: 0; }
    
    aside {
      padding-right: 0;
      margin: 0.5em 0 0;
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      font-size: 1.1em; }
    
    footer > nav {
      padding-right: 0;
      text-align: center; }
    
    .search-suggestion {
      text-decoration: underline;
      cursor: pointer;
      text-decoration-skip: edges;
      text-decoration-color: #fe2977; }
    
    @media (max-width: 70ch) {
        nav.overview *.search-container {
          display: none; } }
    
    .patreon > p {
      max-width: 1000px;
      padding-left: 24px;
      margin: 0 auto; }
    
    .hero {
      background-color: #fcf4f5;
      font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
      padding: 2rem 0;
      margin-bottom: 2rem; }
    
    .hero h1 {
      font-family: Verdana, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
      margin: 0; }
    
    .hero *:last-child {
      margin-bottom: 0; }
    </style>
    </head>
    

    Blog - stitcher.io

    Recherche META Description de la page

    A blog about modern PHP, the web, and programming in general. Follow my newsletter and YouTube channel as well.

    Recherche META Keywords de la page

    UPDATE DOMAINES SET server='nginx/1.26.1',redirection='https://stitcher.io/',Status='200',err='',[TITRE]=N'Blog - stitcher.io',[DESCRIPTION]=N'A blog about modern PHP, the web, and programming in general. Follow my newsletter and YouTube channel as well.',[KEYWORDS]=N'' WHERE id=34015591
  • 0

    Blog - stitcher.io A blog about modern PHP the web and programming in general. Follow my newsletter and YouTube channel as well.

  • 0. Blog (4)
  • --------->0
  • 1. - (1)
  • --------->0
  • 2. stitcher.io (11)
  • --------->0
  • 3. A (1)
  • --------->0
  • 5. about (5)
  • --------->0
  • 6. modern (6)
  • --------->0
  • 7. PHP (3)
  • --------->0
  • 9. the (3)
  • --------->0
  • 10. web (3)
  • --------->0
  • 12. and (3)
  • --------->0
  • 13. programming (11)
  • --------->0
  • 14. in (2)
  • --------->0
  • 15. general (7)
  • --------->0
  • 16. Follow (6)
  • --------->0
  • 17. my (2)
  • --------->0
  • 18. newsletter (10)
  • --------->0
  • 20. YouTube (7)
  • --------->0
  • 21. channel (7)
  • --------->0
  • 22. as (2)
  • --------->0
  • 23. well (4)
  • --------->0
    INSERT INTO KEYWORDS (keyword,id_domaine) VALUES (N'Blog',34015591),(N'-',34015591),(N'stitcher.io',34015591),(N'A',34015591),(N'about',34015591),(N'modern',34015591),(N'PHP',34015591),(N'the',34015591),(N'web',34015591),(N'and',34015591),(N'programming',34015591),(N'in',34015591),(N'general',34015591),(N'Follow',34015591),(N'my',34015591),(N'newsletter',34015591),(N'YouTube',34015591),(N'channel',34015591),(N'as',34015591),(N'well',34015591)