DELETE FROM KEYWORDS WHERE ID_DOMAINE=34015591DoneDoneDone
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
<!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)