diff options
| author | Ariel Costas Guerrero <ariel@costas.dev> | 2026-02-23 20:54:36 +0100 |
|---|---|---|
| committer | Ariel Costas Guerrero <ariel@costas.dev> | 2026-02-23 20:55:24 +0100 |
| commit | 41b16ec20744371e8831637ac2ff048a706f2841 (patch) | |
| tree | eaf7cd95f743cc480bc5e491797a306fccb0c321 | |
| parent | d159066f1fd878a80e0c227724b7e9533a4d4d1f (diff) | |
New post (late), fix post date, update deps
| -rw-r--r-- | package-lock.json | 501 | ||||
| -rw-r--r-- | package.json | 6 | ||||
| -rw-r--r-- | public/extra/20260222-redirector.json | 75 | ||||
| -rw-r--r-- | src/data/blog/26s6.md | 4 | ||||
| -rw-r--r-- | src/data/blog/26s7.md | 58 |
5 files changed, 617 insertions, 27 deletions
diff --git a/package-lock.json b/package-lock.json index 02cc558..844e49a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,8 +13,8 @@ "@astrojs/rss": "4.0.15", "@astrojs/sitemap": "^3.7.0", "@fontsource-variable/archivo": "^5.2.8", - "@iconify-json/tabler": "^1.2.26", - "astro": "^5.17.1", + "@iconify-json/tabler": "^1.2.27", + "astro": "^5.17.3", "astro-compressor": "^1.2.0", "astro-icon": "^1.1.5", "rehype-external-links": "^3.0.0", @@ -845,9 +845,9 @@ } }, "node_modules/@iconify-json/tabler": { - "version": "1.2.26", - "resolved": "https://registry.npmjs.org/@iconify-json/tabler/-/tabler-1.2.26.tgz", - "integrity": "sha512-92G+ZD70AZgeJf07JfQzH+isnai6DwPcMBuF/qL1F+xAxdXCJzGd3w2RmsRvOmB+w1ImmWEEDms50QivQIjd6g==", + "version": "1.2.27", + "resolved": "https://registry.npmjs.org/@iconify-json/tabler/-/tabler-1.2.27.tgz", + "integrity": "sha512-ZpPD83YxRepw0uxEbDNJqRlSFRiek9TPaKvQ/62FrqfyCmgPidR3Q9uM5Mzb1miQC36BlLFhmadoKtpzQkoAUQ==", "license": "MIT", "dependencies": { "@iconify/types": "*" @@ -2309,9 +2309,9 @@ } }, "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "license": "MIT", "peer": true, "dependencies": { @@ -2479,9 +2479,9 @@ } }, "node_modules/astro": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.17.1.tgz", - "integrity": "sha512-oD3tlxTaVWGq/Wfbqk6gxzVRz98xa/rYlpe+gU2jXJMSD01k6sEDL01ZlT8mVSYB/rMgnvIOfiQQ3BbLdN237A==", + "version": "5.17.3", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.17.3.tgz", + "integrity": "sha512-69dcfPe8LsHzklwj+hl+vunWUbpMB6pmg35mACjetxbJeUNNys90JaBM8ZiwsPK689SAj/4Zqb1ayaANls9/MA==", "license": "MIT", "peer": true, "dependencies": { @@ -2508,7 +2508,7 @@ "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.7.0", - "esbuild": "^0.25.0", + "esbuild": "^0.27.3", "estree-walker": "^3.0.3", "flattie": "^1.1.1", "fontace": "~0.4.0", @@ -2585,6 +2585,422 @@ "@iconify/utils": "^2.1.30" } }, + "node_modules/astro/node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/astro/node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/astro/node_modules/commander": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", @@ -2607,6 +3023,47 @@ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, + "node_modules/astro/node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, "node_modules/astro/node_modules/mdn-data": { "version": "2.12.2", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", @@ -3273,9 +3730,9 @@ } }, "node_modules/devalue": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", - "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.3.tgz", + "integrity": "sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==", "license": "MIT" }, "node_modules/devlop": { @@ -3694,9 +4151,9 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-parser": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.4.tgz", - "integrity": "sha512-EFd6afGmXlCx8H8WTZHhAoDaWaGyuIBoZJ2mknrNxug+aZKjkp0a0dlars9Izl+jF+7Gu1/5f/2h68cQpe0IiA==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.7.tgz", + "integrity": "sha512-JzVLro9NQv92pOM/jTCR6mHlJh2FGwtomH8ZQjhFj/R29P2Fnj38OgPJVtcvYw6SuKClhgYuwUZf5b3rd8u2mA==", "funding": [ { "type": "github", @@ -3705,7 +4162,7 @@ ], "license": "MIT", "dependencies": { - "strnum": "^2.1.0" + "strnum": "^2.1.2" }, "bin": { "fxparser": "src/cli/cli.js" @@ -6906,9 +7363,9 @@ } }, "node_modules/tar": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz", - "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz", + "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", diff --git a/package.json b/package.json index 277cbb2..7e3eb88 100644 --- a/package.json +++ b/package.json @@ -11,13 +11,13 @@ "check": "astro check" }, "dependencies": { - "@astrojs/check": "^0.9.2", + "@astrojs/check": "^0.9.6", "@astrojs/mdx": "^4.3.13", "@astrojs/rss": "4.0.15", "@astrojs/sitemap": "^3.7.0", "@fontsource-variable/archivo": "^5.2.8", - "@iconify-json/tabler": "^1.2.26", - "astro": "^5.17.1", + "@iconify-json/tabler": "^1.2.27", + "astro": "^5.17.3", "astro-compressor": "^1.2.0", "astro-icon": "^1.1.5", "rehype-external-links": "^3.0.0", diff --git a/public/extra/20260222-redirector.json b/public/extra/20260222-redirector.json new file mode 100644 index 0000000..e52a582 --- /dev/null +++ b/public/extra/20260222-redirector.json @@ -0,0 +1,75 @@ +{ + "createdBy": "Redirector v3.5.4", + "createdAt": "2026-02-08T22:11:07.624Z", + "redirects": [ + { + "description": "Twitter -> Nitter", + "exampleUrl": "https://x.com/ToxikPija/status/2018261061699277116", + "exampleResult": "https://nitter.poast.org/ToxikPija/status/2018261061699277116", + "error": null, + "includePattern": "https://x.com/*", + "excludePattern": "", + "patternDesc": "Any word after example.com leads to google search for that word.", + "redirectUrl": "https://nitter.poast.org/$1", + "patternType": "W", + "processMatches": "noProcessing", + "disabled": false, + "grouped": false, + "appliesTo": [ + "main_frame" + ] + }, + { + "description": "AMP redirect", + "exampleUrl": "https://www.google.com/amp/www.example.com/amp/document", + "exampleResult": "https://www.example.com/amp/document", + "error": null, + "includePattern": "^(?:https?://)www.(?:google|bing).com/amp/(?:s/)?(.*)", + "excludePattern": "", + "patternDesc": "AMP is bad: https://80x24.net/post/the-problem-with-amp/", + "redirectUrl": "https://$1", + "patternType": "R", + "processMatches": "noProcessing", + "disabled": false, + "grouped": false, + "appliesTo": [ + "main_frame" + ] + }, + { + "description": "Doubleclick escaper", + "exampleUrl": "https://ad.doubleclick.net/ddm/trackclk/N135005.2681608PRIVATENETWORK/B20244?https://www.example.com", + "exampleResult": "https://www.example.com", + "error": null, + "includePattern": "^(?:https?://)ad.doubleclick.net/.*\\?(http?s://.*)", + "excludePattern": "", + "patternDesc": "Remove doubleclick link tracking / fix problems with doubleclick host-based blocking", + "redirectUrl": "$1", + "patternType": "R", + "processMatches": "noProcessing", + "disabled": false, + "grouped": false, + "appliesTo": [ + "main_frame" + ] + }, + { + "description": "YouTube Shorts to YouTube", + "exampleUrl": "https://www.youtube.com/shorts/video-id", + "exampleResult": "https://www.youtube.com/watch?v=video-id", + "error": null, + "includePattern": "^(?:https?://)(?:www.)?youtube.com/shorts/([a-zA-Z0-9_-]+)(.*)", + "excludePattern": "", + "patternDesc": "", + "redirectUrl": "https://www.youtube.com/watch?v=$1$2", + "patternType": "R", + "processMatches": "noProcessing", + "disabled": false, + "grouped": false, + "appliesTo": [ + "main_frame", + "history" + ] + } + ] +} diff --git a/src/data/blog/26s6.md b/src/data/blog/26s6.md index c5e945f..a912179 100644 --- a/src/data/blog/26s6.md +++ b/src/data/blog/26s6.md @@ -1,8 +1,8 @@ --- -title: "26W5: Autocensura en internet y el 'castigo' de tributar" +title: "26W6: Autocensura en internet y el 'castigo' de tributar" description: "" tags: ["semanal"] -publishedAt: "2026-02-03" +publishedAt: "2026-02-12" --- ¿A qué punto ha llegado la humanidad para que la gente diga "desvivir" en vez de matar porque un algoritmo puede penalizarte? ¿En qué momento hemos empezado a buscar eufemismos para algunas palabras por la posibilidad de que un algoritmo de moderación de contenido te penalice por usar una palabra concreta, y correctamente aplicable al caso a tratar? ¿En qué momento consentimos que la que se supone que es la "plaza pública" de internet, el lugar donde se supone que se pueden expresar libremente las ideas, se convierta en un lugar donde la gente tiene miedo a expresarse por miedo a ser penalizada por un algoritmo privado de una empresa privada? diff --git a/src/data/blog/26s7.md b/src/data/blog/26s7.md new file mode 100644 index 0000000..37d30c4 --- /dev/null +++ b/src/data/blog/26s7.md @@ -0,0 +1,58 @@ +--- +title: "26W7: Extensiones esenciales para navegar la web en 2026" +description: "" +publishedAt: 2026-02-22 +tags: [] +--- + +Desde hace unos años, navegar la web ha sido realmente molesto, hasta el punto de ser insufrible sin el uso de algunas extensiones para bloquear contenido molesto (no solo anuncios) y saltarse algunas restricciones e inconveniencias artificiales que algunas páginas web insisten en imponer. Especialmente notable es el caso de YouTube, para el que además de pagar Premium, hace falta un total de TRES extensiones para que la experiencia sea agradable. Es por ello que presento una lista de mis extensiones de navegador casi imprescindibles para que navegar por la web se vuelva una actividad menos desagradable. + +## uBlock Origin: la desbrozadora + +Sin duda la mejor extensión que puedes añadir a cualquier navegador web, de lejos. El mejor bloqueador de anuncios, tracking, banners de cookies, newsletters, widgets de RRSS y en general molestias. + +Aquí los enlaces para [Firefox](https://addons.mozilla.org/es-ES/firefox/addon/ublock-origin/), [Chrome](https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm) (aunque cualquier día desaparece, por no cumplir con Manifest V3), [Edge](https://microsoftedge.microsoft.com/addons/detail/ublock-origin/odfafepnkmbhccpbejgmiehpchacaeak) y [GitHub](https://github.com/gorhill/uBlock). + +Una vez instalada, recomiendo los siguentes ajustes: + +### Pestaña configuración + +Activar las siguientes casillas, el resto desmarcadas: + +- Cuatro iniciales: ocultar marcadores de posición, mostrar peticiones bloqueadas, usar menú contextual y activar almacenamiento en la nube +- Marcar "deshabilitar pre-carga de sitios", "deshabilitar auditoría de hipervínculos" y "bloquear reportes CSP" +- Nada en "comportamiento predeterminado" (antes usaba "bloquear fuentes remotas", pero en algunos sitios se rompen los iconos) +- "soy usuario avanzado" para ver con más detalle los dominios bloqueados + +### Listas de filtros + +Esta es la parte importante, y donde uBlock pasa de ser un simple bloqueador de anuncios a eliminar la mayoría de cosas molestas de las webs modernas. Ahí va la lista, con la versión 1.69: + +- Incluídos: los cinco "uBlock filters" marcados (todo menos el experimental) +- Anuncios: EasyList y AdGuard Ads +- Privacidad: las tres (EasyPrivacy, AdGuard/uBO URL Tracking protection y "Block outsider intrusion into LAN"), aunque esta última parece que no es tan necesaria en Chromium desde la 142, ya que el navegador pide ese permiso. Aún así, mejor marcar de más que de menos. +- Protección de malware: las dos +- Multiusos: la de Peter Lowe +- Avisos de cookies: las dos de EasyList/uBO +- Widgets sociales: EasyList y Fanboy Anti-Facebook +- Elementos molestos: Todas: las 5 de EasyList (AI Widgets, Chat widgets, Newsletters, Notifications, Others), las 4 de AdGuard y la de uBlock filters. +- Adicionales: mi propia lista con 5 elementos (por ahora) que me han molestado tanto como para indagar en la sintaxis de los filtros de uBlock. Disponible en [https://www.costas.dev/static-storage/filters.txt](/static-storage/filters.txt). + +## Redirector + +Por ahora solo tengo unos pocos filtros aquí: 3 proporcionados de ejemplo en [el repositorio](https://github.com/einaregilsson/Redirector) (anti-AMP, anti-Doubleclick y anti-Shorts), y uno propio para redirigir de Twitter a un "mirror" como una instancia de Nitter. + +Puedes [descargar mi export](/extra/20260222-redirector.json) directamente e importarlo en la extensión. + +## SponsorBlock y DeArrow: esenciales para YouTube + +YouTube es un servicio para darle de comer aparte, porque no solo tienes los anuncios propios de la aplicación, que puedes quitar pagando Premium o con uBlock (aunque cada vez es más complicado), sino que además los propios creadores de contenido se han dado cuenta de que pueden meter publicidad dentro de sus vídeos, además de títulos capciosos y miniaturas falsas para atraer visitas. Para esto, nada mejor que estas dos extensiones: + +- [SponsorBlock](https://sponsor.ajay.app/): bloquea los segmentos de los vídeos que los usuarios han marcado como "patrocinados", "intro", "outro", "autopromoción" o "interrupción". Es una maravilla, aunque a veces se cuelan algunos segmentos que no deberían estar ahí, porque es un sistema de _crowdsourcing_ y no de detección automática. Aún así, es una maravilla, y si te encuentras un segmento no marcado, puedes marcarlo tú mismo para que lo bloqueen a los demás. +- [DeArrow](https://dearrow.ajay.app/): bloquea los títulos capciosos y las miniaturas falsas, sustituyéndolos por un título y una miniatura más realistas. También funciona con el sistema de _crowdsourcing_ y es menos popular que SponsorBlock porque "te invita insistentemente" a pagar por descargarla en primer lugar, pero puedes no hacerlo si no quieres (y si lo haces, es 1€, no te arrepentirás). Lo que hace generalmente es quitar las mayúsculas excesivas y los emojis, y sustituir la miniatura por un fotograma del vídeo (o de las autogeneradas por YouTube, si lo configuras) que suele ser más representativo del contenido real del vídeo. + +En resumidas cuentas, con estas dos extensiones, YouTube se vuelve un lugar mucho más agradable para navegar, sin tener que aguantar ni los anuncios de la plataforma ni los de los creadores de contenido, ni los títulos y miniaturas engañosas. + +--- + +En definitiva, estas extensiones son esenciales para navegar la web en 2026, lo cual es bastante triste, porque no debería ser necesario tener que instalar tantas cosas para que la experiencia de usar internet sea mínimamente agradable. Mientras tanto, tocará seguir con estos inventos para evitar que la web se convierta en un lugar insoportable. O la solución definitiva será otra: salir a que nos de el aire, y que le den a internet. |
