Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
898a289426 | ||
|
ad29621be0 | ||
|
aa89b603dc |
142
.astro/types.d.ts
vendored
142
.astro/types.d.ts
vendored
@ -20,14 +20,26 @@ declare module 'astro:content' {
|
||||
|
||||
declare module 'astro:content' {
|
||||
export { z } from 'astro/zod';
|
||||
export type CollectionEntry<C extends keyof AnyEntryMap> = AnyEntryMap[C][keyof AnyEntryMap[C]];
|
||||
|
||||
type Flatten<T> = T extends { [K: string]: infer U } ? U : never;
|
||||
|
||||
export type CollectionKey = keyof AnyEntryMap;
|
||||
export type CollectionEntry<C extends CollectionKey> = Flatten<AnyEntryMap[C]>;
|
||||
|
||||
export type ContentCollectionKey = keyof ContentEntryMap;
|
||||
export type DataCollectionKey = keyof DataEntryMap;
|
||||
// TODO: Remove this when having this fallback is no longer relevant. 2.3? 3.0? - erika, 2023-04-04
|
||||
/**
|
||||
* @deprecated
|
||||
* `astro:content` no longer provide `image()`.
|
||||
*
|
||||
* Please use it through `schema`, like such:
|
||||
* ```ts
|
||||
* import { defineCollection, z } from "astro:content";
|
||||
*
|
||||
* defineCollection({
|
||||
* schema: ({ image }) =>
|
||||
* z.object({
|
||||
* image: image(),
|
||||
* }),
|
||||
* });
|
||||
* ```
|
||||
*/
|
||||
export const image: never;
|
||||
|
||||
// This needs to be in sync with ImageMetadata
|
||||
export type ImageFunction = () => import('astro/zod').ZodObject<{
|
||||
@ -42,17 +54,19 @@ declare module 'astro:content' {
|
||||
import('astro/zod').ZodLiteral<'tiff'>,
|
||||
import('astro/zod').ZodLiteral<'webp'>,
|
||||
import('astro/zod').ZodLiteral<'gif'>,
|
||||
import('astro/zod').ZodLiteral<'svg'>,
|
||||
import('astro/zod').ZodLiteral<'avif'>,
|
||||
import('astro/zod').ZodLiteral<'svg'>
|
||||
]
|
||||
>;
|
||||
}>;
|
||||
|
||||
type BaseSchemaWithoutEffects =
|
||||
| import('astro/zod').AnyZodObject
|
||||
| import('astro/zod').ZodUnion<[BaseSchemaWithoutEffects, ...BaseSchemaWithoutEffects[]]>
|
||||
| import('astro/zod').ZodUnion<import('astro/zod').AnyZodObject[]>
|
||||
| import('astro/zod').ZodDiscriminatedUnion<string, import('astro/zod').AnyZodObject[]>
|
||||
| import('astro/zod').ZodIntersection<BaseSchemaWithoutEffects, BaseSchemaWithoutEffects>;
|
||||
| import('astro/zod').ZodIntersection<
|
||||
import('astro/zod').AnyZodObject,
|
||||
import('astro/zod').AnyZodObject
|
||||
>;
|
||||
|
||||
type BaseSchema =
|
||||
| BaseSchemaWithoutEffects
|
||||
@ -83,7 +97,7 @@ declare module 'astro:content' {
|
||||
|
||||
export function getEntryBySlug<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||
E extends ValidContentEntrySlug<C> | (string & {})
|
||||
>(
|
||||
collection: C,
|
||||
// Note that this has to accept a regular string too, for SSR
|
||||
@ -108,7 +122,7 @@ declare module 'astro:content' {
|
||||
|
||||
export function getEntry<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||
E extends ValidContentEntrySlug<C> | (string & {})
|
||||
>(entry: {
|
||||
collection: C;
|
||||
slug: E;
|
||||
@ -117,7 +131,7 @@ declare module 'astro:content' {
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
export function getEntry<
|
||||
C extends keyof DataEntryMap,
|
||||
E extends keyof DataEntryMap[C] | (string & {}),
|
||||
E extends keyof DataEntryMap[C] | (string & {})
|
||||
>(entry: {
|
||||
collection: C;
|
||||
id: E;
|
||||
@ -126,7 +140,7 @@ declare module 'astro:content' {
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
export function getEntry<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||
E extends ValidContentEntrySlug<C> | (string & {})
|
||||
>(
|
||||
collection: C,
|
||||
slug: E
|
||||
@ -135,7 +149,7 @@ declare module 'astro:content' {
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
export function getEntry<
|
||||
C extends keyof DataEntryMap,
|
||||
E extends keyof DataEntryMap[C] | (string & {}),
|
||||
E extends keyof DataEntryMap[C] | (string & {})
|
||||
>(
|
||||
collection: C,
|
||||
id: E
|
||||
@ -187,112 +201,112 @@ declare module 'astro:content' {
|
||||
"articles": {
|
||||
"en/2022.md": {
|
||||
id: "en/2022.md";
|
||||
slug: "en/2022";
|
||||
slug: "2022";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".md"] };
|
||||
"en/2023.md": {
|
||||
id: "en/2023.md";
|
||||
slug: "en/2023";
|
||||
slug: "2023";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".md"] };
|
||||
"en/after-effects-expressions.mdx": {
|
||||
id: "en/after-effects-expressions.mdx";
|
||||
slug: "en/after-effects-expressions";
|
||||
slug: "after-effects-expressions";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".mdx"] };
|
||||
"en/faq.md": {
|
||||
id: "en/faq.md";
|
||||
slug: "en/faq";
|
||||
slug: "faq";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".md"] };
|
||||
"en/gratuiste.md": {
|
||||
id: "en/gratuiste.md";
|
||||
slug: "en/gratuiste";
|
||||
slug: "gratuiste";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".md"] };
|
||||
"en/sci-hub-blocage.mdx": {
|
||||
id: "en/sci-hub-blocage.mdx";
|
||||
slug: "en/sci-hub-blocage";
|
||||
slug: "sci-hub-unblock";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".mdx"] };
|
||||
"en/the-day-I-jamd.mdx": {
|
||||
id: "en/the-day-I-jamd.mdx";
|
||||
slug: "en/the-day-i-jamd";
|
||||
slug: "the-day-I-jamd";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".mdx"] };
|
||||
"en/video-compression.mdx": {
|
||||
id: "en/video-compression.mdx";
|
||||
slug: "en/video-compression";
|
||||
slug: "video-compression";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".mdx"] };
|
||||
"fr/2022.md": {
|
||||
id: "fr/2022.md";
|
||||
slug: "fr/2022";
|
||||
slug: "2022";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/2023.md": {
|
||||
id: "fr/2023.md";
|
||||
slug: "fr/2023";
|
||||
slug: "2023";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/after-effects-expressions.md": {
|
||||
id: "fr/after-effects-expressions.md";
|
||||
slug: "fr/after-effects-expressions";
|
||||
slug: "after-effects-expressions";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/faq.md": {
|
||||
id: "fr/faq.md";
|
||||
slug: "fr/faq";
|
||||
slug: "faq";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/gratuiste.md": {
|
||||
id: "fr/gratuiste.md";
|
||||
slug: "fr/gratuiste";
|
||||
slug: "gratuiste";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/sci-hub-blocage.mdx": {
|
||||
id: "fr/sci-hub-blocage.mdx";
|
||||
slug: "fr/sci-hub-blocage";
|
||||
slug: "sci-hub-blocage";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".mdx"] };
|
||||
"fr/the-day-I-jamd.mdx": {
|
||||
id: "fr/the-day-I-jamd.mdx";
|
||||
slug: "fr/the-day-i-jamd";
|
||||
slug: "the-day-I-jamd";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
} & { render(): Render[".mdx"] };
|
||||
"fr/video-compression.md": {
|
||||
id: "fr/video-compression.md";
|
||||
slug: "fr/video-compression";
|
||||
slug: "video-compression";
|
||||
body: string;
|
||||
collection: "articles";
|
||||
data: InferEntrySchema<"articles">
|
||||
@ -301,112 +315,98 @@ declare module 'astro:content' {
|
||||
"fragments": {
|
||||
"en/acme-sh-tls-cert.md": {
|
||||
id: "en/acme-sh-tls-cert.md";
|
||||
slug: "en/acme-sh-tls-cert";
|
||||
slug: "acme-sh-tls-cert";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".md"] };
|
||||
"en/array-vs-array.md": {
|
||||
id: "en/array-vs-array.md";
|
||||
slug: "en/array-vs-array";
|
||||
slug: "array-vs-array";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".md"] };
|
||||
"en/buttons.md": {
|
||||
id: "en/buttons.md";
|
||||
slug: "en/buttons";
|
||||
slug: "buttons";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".md"] };
|
||||
"en/image-full.mdx": {
|
||||
id: "en/image-full.mdx";
|
||||
slug: "en/image-full";
|
||||
slug: "image-full";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".mdx"] };
|
||||
"en/nuxt-graphql-static.md": {
|
||||
id: "en/nuxt-graphql-static.md";
|
||||
slug: "en/nuxt-graphql-static";
|
||||
slug: "nuxt-graphql-static";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".md"] };
|
||||
"en/super-cookies.mdx": {
|
||||
id: "en/super-cookies.mdx";
|
||||
slug: "en/super-cookies";
|
||||
"en/super-cookies.md": {
|
||||
id: "en/super-cookies.md";
|
||||
slug: "super-cookies";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".mdx"] };
|
||||
} & { render(): Render[".md"] };
|
||||
"en/toulouse-fun.md": {
|
||||
id: "en/toulouse-fun.md";
|
||||
slug: "en/toulouse-fun";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".md"] };
|
||||
"en/visited-links.md": {
|
||||
id: "en/visited-links.md";
|
||||
slug: "en/visited-links";
|
||||
slug: "toulouse-fun";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/acme-sh-tls-cert.md": {
|
||||
id: "fr/acme-sh-tls-cert.md";
|
||||
slug: "fr/acme-sh-tls-cert";
|
||||
slug: "acme-sh-tls-cert";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/array-vs-array.md": {
|
||||
id: "fr/array-vs-array.md";
|
||||
slug: "fr/array-vs-array";
|
||||
slug: "array-vs-array";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/buttons.mdx": {
|
||||
id: "fr/buttons.mdx";
|
||||
slug: "fr/buttons";
|
||||
slug: "buttons";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".mdx"] };
|
||||
"fr/image-full.mdx": {
|
||||
id: "fr/image-full.mdx";
|
||||
slug: "fr/image-full";
|
||||
slug: "image-full";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".mdx"] };
|
||||
"fr/nuxt-graphql-static.md": {
|
||||
id: "fr/nuxt-graphql-static.md";
|
||||
slug: "fr/nuxt-graphql-static";
|
||||
slug: "nuxt-graphql-static";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/super-cookies.mdx": {
|
||||
id: "fr/super-cookies.mdx";
|
||||
slug: "fr/super-cookies";
|
||||
slug: "super-cookies";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".mdx"] };
|
||||
"fr/toulouse-fun.md": {
|
||||
id: "fr/toulouse-fun.md";
|
||||
slug: "fr/toulouse-fun";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/visited-links.md": {
|
||||
id: "fr/visited-links.md";
|
||||
slug: "fr/visited-links";
|
||||
slug: "toulouse-fun";
|
||||
body: string;
|
||||
collection: "fragments";
|
||||
data: InferEntrySchema<"fragments">
|
||||
@ -415,56 +415,56 @@ declare module 'astro:content' {
|
||||
"references": {
|
||||
"en/3w.md": {
|
||||
id: "en/3w.md";
|
||||
slug: "en/3w";
|
||||
slug: "3w";
|
||||
body: string;
|
||||
collection: "references";
|
||||
data: InferEntrySchema<"references">
|
||||
} & { render(): Render[".md"] };
|
||||
"en/natureo.md": {
|
||||
id: "en/natureo.md";
|
||||
slug: "en/natureo";
|
||||
slug: "natureo";
|
||||
body: string;
|
||||
collection: "references";
|
||||
data: InferEntrySchema<"references">
|
||||
} & { render(): Render[".md"] };
|
||||
"en/parole-expression.md": {
|
||||
id: "en/parole-expression.md";
|
||||
slug: "en/parole-expression";
|
||||
slug: "parole-expression";
|
||||
body: string;
|
||||
collection: "references";
|
||||
data: InferEntrySchema<"references">
|
||||
} & { render(): Render[".md"] };
|
||||
"en/rose-primaire.md": {
|
||||
id: "en/rose-primaire.md";
|
||||
slug: "en/rose-primaire";
|
||||
slug: "rose-primaire";
|
||||
body: string;
|
||||
collection: "references";
|
||||
data: InferEntrySchema<"references">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/3w.md": {
|
||||
id: "fr/3w.md";
|
||||
slug: "fr/3w";
|
||||
slug: "3w";
|
||||
body: string;
|
||||
collection: "references";
|
||||
data: InferEntrySchema<"references">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/natureo.md": {
|
||||
id: "fr/natureo.md";
|
||||
slug: "fr/natureo";
|
||||
slug: "natureo";
|
||||
body: string;
|
||||
collection: "references";
|
||||
data: InferEntrySchema<"references">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/parole-expression.md": {
|
||||
id: "fr/parole-expression.md";
|
||||
slug: "fr/parole-expression";
|
||||
slug: "parole-expression";
|
||||
body: string;
|
||||
collection: "references";
|
||||
data: InferEntrySchema<"references">
|
||||
} & { render(): Render[".md"] };
|
||||
"fr/rose-primaire.md": {
|
||||
id: "fr/rose-primaire.md";
|
||||
slug: "fr/rose-primaire";
|
||||
slug: "rose-primaire";
|
||||
body: string;
|
||||
collection: "references";
|
||||
data: InferEntrySchema<"references">
|
||||
|
@ -4,21 +4,20 @@ import { defineConfig } from "astro/config";
|
||||
import i18n from "astro-i18n";
|
||||
|
||||
// https://astro.build/config
|
||||
import image from "@astrojs/image";
|
||||
import mdx from "@astrojs/mdx";
|
||||
import sitemap from "@astrojs/sitemap";
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
site: "https://www.nardu.in",
|
||||
image: {
|
||||
domains: ["assets.nardu.in"],
|
||||
remotePatterns: [{ protocol: "https" }],
|
||||
},
|
||||
compressHTML: true,
|
||||
markdown: {
|
||||
syntaxHighlight: "prism",
|
||||
},
|
||||
integrations: [
|
||||
i18n(),
|
||||
image(),
|
||||
mdx(),
|
||||
sitemap({
|
||||
i18n: {
|
||||
|
12
package.json
12
package.json
@ -13,12 +13,12 @@
|
||||
"i18n:sync": "astro-i18n sync"
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/mdx": "^1.1.0",
|
||||
"@astrojs/rss": "^3.0.0",
|
||||
"@astrojs/sitemap": "^3.0.0",
|
||||
"astro": "3.1.1",
|
||||
"astro-i18n": "1.8.1",
|
||||
"sharp": "^0.32.6"
|
||||
"@astrojs/image": "^0.16.9",
|
||||
"@astrojs/mdx": "^0.19.2",
|
||||
"@astrojs/rss": "^2.4.2",
|
||||
"@astrojs/sitemap": "^1.3.1",
|
||||
"astro": "^2.5.0",
|
||||
"astro-i18n": "^1.7.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^10.4.13",
|
||||
|
2628
pnpm-lock.yaml
2628
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
@ -1,20 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" clip-rule="evenodd" viewBox="0 0 400 479">
|
||||
<path fill="none" d="M0 0h400v478.049H0z"/>
|
||||
<clipPath id="a">
|
||||
<path d="M0 0h400v478.049H0z"/>
|
||||
</clipPath>
|
||||
<g clip-path="url(#a)">
|
||||
<path fill="#162e57" d="M29.269 268.293h29.268v209.756H29.269zm39.024 0h29.268v209.756H68.293z"/>
|
||||
<path fill="#ff826c" d="M43.903 29.268h43.902v53.659H43.903zm0-29.268h58.537v29.268H43.903z"/>
|
||||
<path fill="#d4ebf2" d="M0 82.927h43.903v185.366H0z"/>
|
||||
<path fill="#d4ebf2" fill-rule="nonzero" d="M165.854 175.6v-24.39h-29.268v-29.27h-24.39V82.917h-24.39v185.376h24.39V175.6h24.39v29.278h48.78V175.6h-19.512Z"/>
|
||||
<path fill="#ff826c" d="M43.903 82.927h43.902v185.366H43.903zM9.415 258.536h29.61v34.147H9.415z"/>
|
||||
<path fill="#162e57" d="M360.976 478.039h-29.268V268.283h29.268zm-39.024 0h-29.269V268.283h29.269z"/>
|
||||
<path fill="#ff826c" d="M346.342 82.917H302.44V9.747h43.902z"/>
|
||||
<path fill="#ff826c" fill-rule="nonzero" d="M400 121.941h-9.756V82.917H278.05v39.024h-24.39v29.269h-29.268v24.39H204.88v29.278h48.78V175.6h24.39v92.693h112.195v-14.635h9.757V121.941Z"/>
|
||||
<path fill="#ff826c" d="M400 292.673h-29.61v-39.024H400zm-200-73.171h-29.268v-29.268h29.269z"/>
|
||||
<path fill="#d4ebf2" d="M321.952 199.56h-14.498V82.918h14.498z"/>
|
||||
<path fill="#162e57" d="M346.342 48.77h-24.39V24.38h24.39z"/>
|
||||
<path fill="#ff826c" fill-rule="nonzero" d="M214.635 190.234h-34.147v9.756H200v19.522h14.635v-29.278Z"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.5 KiB |
@ -1,24 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" clip-rule="evenodd" viewBox="0 0 547 260">
|
||||
<g transform="translate(-176.96 -424.18)">
|
||||
<path fill="none" d="M176.96 424.18h546.08v260H176.96z"/>
|
||||
<clipPath id="a">
|
||||
<path d="M176.96 424.18h546.08v260H176.96z"/>
|
||||
</clipPath>
|
||||
<g clip-path="url(#a)">
|
||||
<path fill="#ff826c" fill-rule="nonzero" d="M699 439.36h-15v15h-10v-15h-15v15h-10v-15h-15v35h10v15h45v-15h10v-35Z"/>
|
||||
<path fill="#d4ebf2" fill-rule="nonzero" d="M674 539.36v-50h-15v20h-15v20h15v65h15v-30h20v-25h-20Z"/>
|
||||
<path fill="#ff826c" fill-rule="nonzero" d="M404.42 579.36v25h15v80h85v-80h15v-25h-115Zm-211.5 0v25h15v80h85v-80h15v-25h-115Zm416.08 0v25h15v80h85v-80h15v-25H609Z"/>
|
||||
<path fill="#d4ebf2" fill-rule="nonzero" d="M524.42 524.36h-35v-75h-60v90h15v40h45v-35h7.31v10h27.69v-30Z"/>
|
||||
<path fill="#10113a" d="M470.11 464.36h9.31v10h-9.31zm-25.35 20h9.31v10h-9.31zm20.35 20h9.31v10h-9.31zm20 20h9.31v10h-9.31zm-25.35 15h9.31v10h-9.31z"/>
|
||||
<path fill="#d4ebf2" d="M444.42 564.36h4.31v10h-4.31z"/>
|
||||
<path fill="#10113a" d="M429.42 459.36h4.31v10h-4.31zm-171.5 15h10v105h-10z"/>
|
||||
<path fill="#ff826c" fill-rule="nonzero" d="M292.92 434.36h-10v-10h-40v10h-10v30h10v10h40v-10h10v-30Z"/>
|
||||
<path fill="#d4ebf2" d="M227.92 484.36h30v25h-30zm40 25h30v30h-30zm-15-70h20v20h-20z"/>
|
||||
<path fill="#ff826c" d="M177.92 499.36h20v20h-20z"/>
|
||||
<path fill="#d4ebf2" fill-rule="nonzero" d="M247.92 529.36v30h-10v10h-30v10h50v-50h-10Z"/>
|
||||
<path fill="#d4ebf2" fill-rule="nonzero" d="M237.92 529.36h-10v10h-10v10h-10v10h30v-30Z"/>
|
||||
<path fill="#d4ebf2" d="M207.92 529.36h10v10h-10zm-10-10h10v10h-10z"/>
|
||||
<path fill="#d4ebf2" fill-rule="nonzero" d="M187.92 509.36h-5v10h15v-15h-10v5Z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 821 B After Width: | Height: | Size: 821 B |
@ -1,44 +1,15 @@
|
||||
---
|
||||
import { Image, getImage } from "astro:assets";
|
||||
import { Picture } from "@astrojs/image/components";
|
||||
|
||||
const { src, alt, width, height, ...attrs } = Astro.props;
|
||||
|
||||
// if h/w attributes are declared, use them. If not, use from the source file
|
||||
const imgHeight = height ? height : src.height;
|
||||
const imgWidth = width ? width : src.width;
|
||||
|
||||
// compute avif and webp format in order to use inside a <picture> element
|
||||
const imgAvif = await getImage({
|
||||
src: src,
|
||||
format: "avif",
|
||||
width: Number(imgWidth),
|
||||
height: Number(imgHeight),
|
||||
});
|
||||
const imgWebp = await getImage({
|
||||
src: src,
|
||||
format: "webp",
|
||||
width: Number(imgWidth),
|
||||
height: Number(imgHeight),
|
||||
});
|
||||
---
|
||||
|
||||
<picture>
|
||||
<source
|
||||
srcset={imgAvif.src}
|
||||
sizes={`(max-inline-size: ${imgWidth}px) 100vw, ${imgHeight}px`}
|
||||
type="image/avif"
|
||||
/>
|
||||
<source
|
||||
srcset={imgWebp.src}
|
||||
sizes={`(max-inline-size: ${imgWidth}px) 100vw, ${imgHeight}px`}
|
||||
type="image/webp"
|
||||
/>
|
||||
<Image
|
||||
src={src}
|
||||
width={Number(imgWidth)}
|
||||
height={Number(imgHeight)}
|
||||
format="jpg"
|
||||
alt={alt ? alt : ""}
|
||||
{...attrs}
|
||||
/>
|
||||
</picture>
|
||||
<Picture
|
||||
src={src}
|
||||
widths={[320, 640, 768]}
|
||||
aspectRatio={`${width}:${height}`}
|
||||
sizes={`(max-inline-size: ${width}px) 100vw, ${width}px`}
|
||||
formats={["avif", "webp"]}
|
||||
alt={alt ? alt : ""}
|
||||
{...attrs}
|
||||
/>
|
||||
|
@ -9,33 +9,35 @@ const isReference = routeName === t("references.slug");
|
||||
---
|
||||
|
||||
<div class:list={["card", { "card--link": !isReference }]}>
|
||||
<h3>
|
||||
<div>
|
||||
<h3>
|
||||
{
|
||||
!isReference ? (
|
||||
<a
|
||||
class="clean-link card__link"
|
||||
href={`${l(`/${routeName}`)}/${item.slug}`}
|
||||
>
|
||||
{item.data.title}
|
||||
</a>
|
||||
) : (
|
||||
<span>{item.data.title}</span>
|
||||
)
|
||||
}
|
||||
</h3>
|
||||
<h4>{item.data.subtitle}</h4>
|
||||
<ListTags list={item.data.tags} />
|
||||
{
|
||||
!isReference ? (
|
||||
<a
|
||||
class="clean-link card__link"
|
||||
href={`${l(`/${routeName}`)}/${item.data.permalink}`}
|
||||
>
|
||||
{item.data.title}
|
||||
isReference && (
|
||||
<a href={item.data.url} rel="noopener noreferer">
|
||||
{t("references.cta")}
|
||||
<span class="sr-only"> {item.data.title}</span>
|
||||
</a>
|
||||
) : (
|
||||
<span>{item.data.title}</span>
|
||||
)
|
||||
}
|
||||
</h3>
|
||||
<h4>{item.data.subtitle}</h4>
|
||||
<ListTags list={item.data.tags} />
|
||||
{
|
||||
isReference && (
|
||||
<a href={item.data.url} rel="noopener noreferer">
|
||||
{t("references.cta")}
|
||||
<span class="sr-only"> {item.data.title}</span>
|
||||
</a>
|
||||
)
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style define:vars={{ permalink: item.data.permalink }}>
|
||||
<style scoped>
|
||||
.card {
|
||||
padding: var(--space-s-m) var(--space-xs-s);
|
||||
position: relative;
|
||||
@ -123,9 +125,6 @@ const isReference = routeName === t("references.slug");
|
||||
.card::after {
|
||||
transition: opacity ease 0.2s, transform ease 0.2s;
|
||||
}
|
||||
.card--link {
|
||||
view-transition-name: var(--permalink);
|
||||
}
|
||||
h3 a {
|
||||
transition: color ease 0.2s;
|
||||
}
|
||||
|
@ -1,17 +1,17 @@
|
||||
---
|
||||
// import { renderContent } from "astro-i18n";
|
||||
import MetaDate from "./MetaDate.astro";
|
||||
import TOC from "./TOC.astro";
|
||||
|
||||
const { content } = Astro.props;
|
||||
const { Content, headings } = await content.render();
|
||||
// const { html, headings } = await renderContent(Astro, content);
|
||||
|
||||
const toc = headings.map((heading) => {
|
||||
return heading;
|
||||
});
|
||||
|
||||
import "../styles/vendor/one-dark-pro.css";
|
||||
if (content.data.code) {
|
||||
import "../styles/vendor/one-dark-pro.css";
|
||||
}
|
||||
---
|
||||
|
||||
<div class="sidebar region">
|
||||
@ -20,17 +20,13 @@ import "../styles/vendor/one-dark-pro.css";
|
||||
<h1>{content.data.title}</h1>
|
||||
<p class="h3">{content.data.subtitle}</p>
|
||||
<MetaDate item={content.data} />
|
||||
<!-- <div class="flow content" set:html={html}> -->
|
||||
<Content />
|
||||
<div class="flow content">
|
||||
<Content />
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<style define:vars={{ permalink: content.data.permalink }}>
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
article {
|
||||
view-transition-name: var(--permalink);
|
||||
}
|
||||
}
|
||||
<style>
|
||||
.sidebar {
|
||||
--gutter: var(--space-xs-m);
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
---
|
||||
import { t } from "astro-i18n";
|
||||
const { pageTitle } = Astro.props;
|
||||
---
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>{pageTitle} - Nicolas Arduin</title>
|
||||
<meta name="description" content={t("seo.meta.description")} />
|
||||
<meta name="robots" content="index,follow." />
|
||||
<meta name="author" content="Nicolas Arduin" />
|
||||
<meta name="subject" content="Développement de sites web, accessibilité." />
|
||||
<meta name="view-transition" content="same-origin" />
|
||||
</head>
|
@ -34,7 +34,7 @@ const { item } = Astro.props;
|
||||
text-align: center;
|
||||
gap: var(--space-xs);
|
||||
cursor: pointer;
|
||||
background-color: var(--color-white);
|
||||
background-color: var(--color-light-blue);
|
||||
transform: translateY(0);
|
||||
}
|
||||
.card:focus-within {
|
||||
|
@ -10,26 +10,24 @@ const { toc } = Astro.props;
|
||||
<ol class="table-of-content__list" role="list">
|
||||
{
|
||||
// loop over the toc
|
||||
toc.map(
|
||||
(
|
||||
heading
|
||||
// if h2, set as a li
|
||||
) =>
|
||||
heading.depth === 2 ? (
|
||||
toc.map((heading) =>
|
||||
// if h2, set as a li
|
||||
heading.depth === 2 ? (
|
||||
<li>
|
||||
<a href={`#${heading.slug}`} class="toc-2">
|
||||
{heading.text}
|
||||
</a>
|
||||
</li>
|
||||
) : // if h3, set as inner ol > li
|
||||
heading.depth === 3 ? (
|
||||
<ol role="list">
|
||||
<li>
|
||||
<a href={`#${heading.slug}`} class="toc-2">
|
||||
<a href={`#${heading.slug}`} class="toc-3">
|
||||
{heading.text}
|
||||
</a>
|
||||
</li> // if h3, set as inner ol > li
|
||||
) : heading.depth === 3 ? (
|
||||
<ol role="list">
|
||||
<li>
|
||||
<a href={`#${heading.slug}`} class="toc-3">
|
||||
{heading.text}
|
||||
</a>
|
||||
</li>
|
||||
</ol>
|
||||
) : null
|
||||
</li>
|
||||
</ol>
|
||||
) : null
|
||||
)
|
||||
}
|
||||
</ol>
|
||||
@ -70,18 +68,15 @@ const { toc } = Astro.props;
|
||||
}
|
||||
|
||||
.table-of-content__list a::before {
|
||||
content: "";
|
||||
content: "·";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
top: 0;
|
||||
left: 0;
|
||||
inline-size: 2px;
|
||||
block-size: 2px;
|
||||
border-radius: 4px;
|
||||
transform: translate(-6px, 0);
|
||||
background-color: var(--color-grey);
|
||||
color: var(--color-grey);
|
||||
}
|
||||
.table-of-content__list a:visited::before {
|
||||
background-color: white;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.table-of-content__list a:focus,
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Nico v2.0
|
||||
subtitle: 2022 update of many things.
|
||||
lang: en
|
||||
permalink: "2022"
|
||||
slug: "2022"
|
||||
excerpt: Changes in my services, the website and myself.
|
||||
tags: ["Freelance"]
|
||||
type: articles
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Nico v2.5
|
||||
subtitle: Update 2023.
|
||||
lang: en
|
||||
permalink: "2023"
|
||||
slug: "2023"
|
||||
excerpt: New changes.
|
||||
tags: ["Freelance"]
|
||||
type: articles
|
||||
@ -22,7 +22,7 @@ I have completely redeveloped my site with <a href="https://astro.build/" rel="n
|
||||
|
||||
I will definitely do an article or two about Astro and the extensions I used. It was a great experience. Nuxt v2 is not really up to date anymore, so the performance was not good. Astro has completely fixed that.
|
||||
|
||||
My <a href="https://pagespeed.web.dev/analysis/https-nardu-in/06as4el7ed?form_factor=mobile" rel="noopener noreferer">PageSpeed</a> performance score had dropped to 77/100. Thanks to Astro I'm back to a solid **95/100** without any particular optimization. With some small efforts, I've reached the good old 100/100.
|
||||
My <a href="https://pagespeed.web.dev/" rel="noopener noreferer">PageSpeed</a> performance score had dropped to 77/100. Thanks to Astro I'm back to a solid **95/100** without any particular optimization.
|
||||
|
||||
I then did a work of modernization of the codebase. Hello CSS variables and goodbye `media queries`. In no particular order, here are some of the improvements I made:
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: After Effects Expressions
|
||||
subtitle: Animation on steroïds.
|
||||
lang: en
|
||||
permalink: "after-effects-expressions"
|
||||
slug: "after-effects-expressions"
|
||||
excerpt: Expressions in After Effects have always been blurry for me. I know they exist, I know they're powerful, I know it could save a lot of time and clean complex keyframe filled compositions but… They are hard to learn!
|
||||
tags: ["Design"]
|
||||
type: articles
|
||||
@ -11,6 +11,9 @@ code: true
|
||||
---
|
||||
|
||||
import AstroImage from "../../../components/AstroImage.astro";
|
||||
export const basicExpression =
|
||||
"https://assets.nardu.in/basic_expression_d81b12f1ac.jpeg";
|
||||
export const shortcut = "https://assets.nardu.in/shortcut_39cc19d383.jpeg";
|
||||
|
||||
## An ever lasting battle
|
||||
|
||||
@ -22,7 +25,7 @@ So the last time I had to do a complex animation, **I took the damn time!**
|
||||
Everyone uses expressions whether they know it or not. Most of the time it's a rather transparent process for the animator. For example: when parenting a property to another one, After Effects creates an expression for us.
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/basic_expression_d81b12f1ac.jpeg"
|
||||
src={basicExpression}
|
||||
width="728"
|
||||
height="80"
|
||||
alt="Parenting the position of the form to a null creates an expression."
|
||||
@ -33,7 +36,7 @@ Over the last updates, Adobe has made an effort to make expressions more accessi
|
||||
Those custom functions can be called through a menu once you enabled the expressions on a property. It offers organized shortcut and proper syntax to all of AE native functions and a bunch of JavaScript standard ones.
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/shortcut_39cc19d383.jpeg"
|
||||
src={shortcut}
|
||||
width="728"
|
||||
height="322"
|
||||
alt="Alt + Click the stopwatch to access the shortcuts."
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Accessibility and sobriety
|
||||
subtitle: Translation in progress, stay tuned ;)
|
||||
lang: en
|
||||
permalink: "faq"
|
||||
slug: "faq"
|
||||
draft: true
|
||||
excerpt: Why, how et and especially what.
|
||||
tags: ["Freelance"]
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Gratuiste
|
||||
subtitle: Translation in progress, stay tuned ;)
|
||||
lang: en
|
||||
permalink: "gratuiste"
|
||||
slug: "gratuiste"
|
||||
draft: true
|
||||
excerpt: Translation in progress, stay tuned ;)
|
||||
tags: ["Design", "Freelance"]
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: "Access blocked Sci-hub"
|
||||
subtitle: "The science of sharing."
|
||||
lang: en
|
||||
permalink: "sci-hub-unblock"
|
||||
slug: "sci-hub-unblock"
|
||||
key: "scihub"
|
||||
excerpt: "In March 2019, the Paris Regional Court ruled in favour of the publishers of scientific articles Elsevier and Springer Nature by ordering internet service providers to block access to these two websites. Here is how to access them if they are blocked in your country anyway."
|
||||
tags: ["Internet", "Science"]
|
||||
@ -12,6 +12,13 @@ updatedAt: "2022-12-27T12:08:00.000Z"
|
||||
---
|
||||
|
||||
import AstroImage from "../../../components/AstroImage.astro";
|
||||
export const macOs =
|
||||
"https://assets.nardu.in/ef5a4b8e82a046e6a466c73c2fd9e99e.jpg";
|
||||
export const windowsSettings = "https://assets.nardu.in/sci-hub-settings.jpg";
|
||||
export const windowsNetwork = "https://assets.nardu.in/sci-hub-network.jpg";
|
||||
export const windowsAdapter = "https://assets.nardu.in/sci-hub-adapter.jpg";
|
||||
export const windowsAdapterSettings =
|
||||
"https://assets.nardu.in/sci-hub-adapter-settings.jpg";
|
||||
|
||||
The current sci-hub address is: <a href="https://sci-hub.se" rel="noreferer noopener">sci-hub.se</a>
|
||||
|
||||
@ -46,7 +53,7 @@ Go to:
|
||||
From there, you can add DNS servers by clicking the + icon. Click ok and apply the new settings. You might need to restart your computer for the changes to work.
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/ef5a4b8e82a046e6a466c73c2fd9e99e.jpg"
|
||||
src={macOs}
|
||||
width="728"
|
||||
height="1060"
|
||||
alt="MacOS network and DNS settings"
|
||||
@ -67,28 +74,28 @@ Go to:
|
||||
From there, you can add DNS servers. Click save. You might need to restart your computer for the changes to work.
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/sci-hub-settings.jpg"
|
||||
src={windowsSettings}
|
||||
width="728"
|
||||
height="319"
|
||||
alt="Windows system settings"
|
||||
/>
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/sci-hub-network.jpg"
|
||||
src={windowsNetwork}
|
||||
width="728"
|
||||
height="803"
|
||||
alt="Windows network settings"
|
||||
/>
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/sci-hub-adapter.jpg"
|
||||
src={windowsAdapter}
|
||||
width="728"
|
||||
height="327"
|
||||
alt="Windows network connections settings"
|
||||
/>
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/sci-hub-adapter-settings.jpg"
|
||||
src={windowsAdapterSettings}
|
||||
width="728"
|
||||
height="434"
|
||||
alt="Windows network adapter settings"
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: The day I Jam’d
|
||||
subtitle: A story of unusual tools and fun gambles.
|
||||
lang: en
|
||||
permalink: "the-day-I-jamd"
|
||||
slug: "the-day-I-jamd"
|
||||
excerpt: Ooh, yeah! All right! We’re jammin’
|
||||
tags: ["Dev", "Jamstack"]
|
||||
type: articles
|
||||
@ -11,6 +11,8 @@ updatedAt: "2022-12-27T15:40:06.000Z"
|
||||
---
|
||||
|
||||
import AstroImage from "../../../components/AstroImage.astro";
|
||||
export const wordpress = "https://assets.nardu.in/wordpress_8ee6f54b98.jpeg";
|
||||
export const strapi11ty = "https://assets.nardu.in/static_2c0d9f1eb8.jpeg";
|
||||
|
||||
## The not so easy choice
|
||||
|
||||
@ -31,7 +33,7 @@ Boy did they exceed my expectations! With almost no optimization on the static s
|
||||
### wordpress
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/wordpress_8ee6f54b98.jpeg"
|
||||
src={wordpress}
|
||||
width="728"
|
||||
height="412"
|
||||
alt="Performance score of 53/100 on Wordpress."
|
||||
@ -42,7 +44,7 @@ Despite a lot of efforts I could not do better. I’m no expert in caching, do n
|
||||
### 11ty + strapi
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/static_2c0d9f1eb8.jpeg"
|
||||
src={strapi11ty}
|
||||
width="728"
|
||||
height="412"
|
||||
alt="Performance score of 97/100 on jamstack."
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Video compression
|
||||
subtitle: Encode like you mean it.
|
||||
lang: en
|
||||
permalink: "video-compression"
|
||||
slug: "video-compression"
|
||||
excerpt: How to gain precious weight when encoding videos.
|
||||
tags: ["Design"]
|
||||
type: articles
|
||||
@ -11,6 +11,11 @@ updatedAt: "2022-06-08T14:24:06.000Z"
|
||||
---
|
||||
|
||||
import AstroImage from "../../../components/AstroImage.astro";
|
||||
export const premiereExport = "https://assets.nardu.in/video-premiere-1.jpeg";
|
||||
export const handbrakeBase = "https://assets.nardu.in/video-handbrake-1.jpeg";
|
||||
export const handbrakeVideo = "https://assets.nardu.in/video-handbrake-2.jpeg";
|
||||
export const handbrakeAudio = "https://assets.nardu.in/video-handbrake-3.jpeg";
|
||||
export const handbrakeWeb = "https://assets.nardu.in/video-handbrake-4.jpg";
|
||||
|
||||
## Let's play.
|
||||
|
||||
@ -26,11 +31,7 @@ With a good connection, users will not see the difference. But if we go down tha
|
||||
|
||||
Let's say we exported a 1920x1080 video from Premiere Pro with these basic settings:
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/video-premiere-1.jpeg"
|
||||
width="673"
|
||||
height="800"
|
||||
/>
|
||||
<AstroImage src={premiereExport} width="673" height="800" alt="" />
|
||||
|
||||
It's gorgeous, it's Full HD, it's 1:30 minute of excellent editing but it's 50mb… What a shame.
|
||||
|
||||
@ -51,11 +52,7 @@ While it's not as nice as Premiere Pro, it has way more exporting capabilities.
|
||||
1. Check Web Optimized
|
||||
1. Keep MPEG-4 as the format
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/video-handbrake-1.jpeg"
|
||||
width="728"
|
||||
height="337"
|
||||
/>
|
||||
<AstroImage src={handbrakeBase} width="728" height="337" alt="" />
|
||||
|
||||
### Video screen
|
||||
|
||||
@ -64,11 +61,7 @@ While it's not as nice as Premiere Pro, it has way more exporting capabilities.
|
||||
1. Choose Peak Framerate. If you don't know the framerate, keep the default setting
|
||||
1. Choose the type of video you are encoding (film, animation…)
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/video-handbrake-2.jpeg"
|
||||
width="728"
|
||||
height="337"
|
||||
/>
|
||||
<AstroImage src={handbrakeVideo} width="728" height="337" alt="" />
|
||||
|
||||
### Audio screen
|
||||
|
||||
@ -79,11 +72,7 @@ If you have an audio channel, these settings are great and will not influence th
|
||||
1. Samplerate 44.1
|
||||
1. Bitrate 192 to 256 (your choice)
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/video-handbrake-3.jpeg"
|
||||
width="728"
|
||||
height="337"
|
||||
/>
|
||||
<AstroImage src={handbrakeAudio} width="728" height="337" alt="" />
|
||||
|
||||
### Export!
|
||||
|
||||
@ -104,12 +93,7 @@ Webm is an html video format and VP9 is its latest codec.
|
||||
|
||||
Using Handbrake and webm/VP9, we can achieve really great compression without losing too much quality (or none at all depending on the settings). I was able to divide by 4 the size of a video using these presets:
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/video-handbrake-4.jpg"
|
||||
width="728"
|
||||
height="313"
|
||||
alt=""
|
||||
/>
|
||||
<AstroImage src={handbrakeWeb} width="728" height="313" alt="" />
|
||||
|
||||
The only down side is that it takes some time to encode. It will depend on the video length and your computing power.
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Nico v2.0
|
||||
subtitle: Mise à jour 2022 de plein de trucs.
|
||||
lang: fr
|
||||
permalink: "2022"
|
||||
slug: "2022"
|
||||
excerpt: Évolution des services, du site et de moi-même.
|
||||
tags: ["Freelance"]
|
||||
type: articles
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Nico v2.5
|
||||
subtitle: Mise à jour 2023.
|
||||
lang: fr
|
||||
permalink: "2023"
|
||||
slug: "2023"
|
||||
excerpt: Suite des évolutions.
|
||||
tags: ["Freelance"]
|
||||
type: articles
|
||||
@ -22,7 +22,7 @@ J'ai entièrement re-développé mon site avec <a href="https://astro.build/" re
|
||||
|
||||
Je ferai certainement un ou deux articles/fragments sur Astro et les extensions que j'ai utilisées. En tout cas c'était super comme expérience. Nuxt v2 n'étant plus vraiment à jour, les performances n'étaient plus au rendez-vous. Astro a complètement corrigé ça.
|
||||
|
||||
Mon score de performance <a href="https://pagespeed.web.dev/analysis/https-nardu-in/06as4el7ed?form_factor=mobile" rel="noopener noreferer" hreflang="en" lang="en">PageSpeed</a> était tombé à 77/100. Grâce à Astro je retrouve un solide **95/100** sans optimisation particulière. Avec quelques efforts sur le poids des ressources, je retrouve ce bon vieux 100/100.
|
||||
Mon score de performance <a href="https://pagespeed.web.dev/" rel="noopener noreferer" hreflang="en" lang="en">PageSpeed</a> était tombé à 77/100. Grâce à Astro je retrouve un solide **95/100** sans optimisation particulière.
|
||||
|
||||
J'ai ensuite fait un travail de modernisation du code. Bonjour variables CSS et au-revoir les `media queries`. En vrac, voici certaines améliorations que j'ai mises en place :
|
||||
|
||||
|
@ -3,7 +3,7 @@ title: After Effects Expressions
|
||||
subtitle: En cours de traduction, revenez bientôt ;)
|
||||
lang: fr
|
||||
draft: true
|
||||
permalink: "after-effects-expressions"
|
||||
slug: "after-effects-expressions"
|
||||
excerpt: En cours de traduction, revenez bientôt ;)
|
||||
tags: ["Design"]
|
||||
type: articles
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Accessibilité, sobriété et F.A.Q.
|
||||
subtitle: Explications sur ma vision et mon fonctionnement.
|
||||
lang: fr
|
||||
permalink: "faq"
|
||||
slug: "faq"
|
||||
excerpt: Pourquoi, comment et surtout quèsaco.
|
||||
tags: ["Freelance"]
|
||||
type: articles
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: "Gratuiste"
|
||||
subtitle: "Ou le travail gratuit."
|
||||
lang: fr
|
||||
permalink: "gratuiste"
|
||||
slug: "gratuiste"
|
||||
excerpt: "J’ai cherché un moyen de mettre mes compétences au service d’autrui et je pense avoir trouvé: je vais travailler gratuitement pour des associations."
|
||||
tags: ["Graphisme", "Freelance"]
|
||||
type: articles
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: "Sci-hub bloqué, comment contourner"
|
||||
subtitle: "La science du partage."
|
||||
lang: fr
|
||||
permalink: "sci-hub-blocage"
|
||||
slug: "sci-hub-blocage"
|
||||
excerpt: "Le tribunal de grande instance de Paris a ordonné aux fournisseurs d’accès à internet de bloquer l’accès à sci-hub. Voici comment contourner les blocages mis en place."
|
||||
tags: ["Internet", "Science"]
|
||||
type: articles
|
||||
@ -11,6 +11,13 @@ updatedAt: "2022-12-27T12:08:00.000Z"
|
||||
---
|
||||
|
||||
import AstroImage from "../../../components/AstroImage.astro";
|
||||
export const macOs =
|
||||
"https://assets.nardu.in/ef5a4b8e82a046e6a466c73c2fd9e99e.jpg";
|
||||
export const windowsSettings = "https://assets.nardu.in/sci-hub-settings.jpg";
|
||||
export const windowsNetwork = "https://assets.nardu.in/sci-hub-network.jpg";
|
||||
export const windowsAdapter = "https://assets.nardu.in/sci-hub-adapter.jpg";
|
||||
export const windowsAdapterSettings =
|
||||
"https://assets.nardu.in/sci-hub-adapter-settings.jpg";
|
||||
|
||||
L'adresse actuelle de sci-hub est : [sci-hub.se](https://sci-hub.se)
|
||||
|
||||
@ -49,7 +56,7 @@ Ouvrez :
|
||||
De là, vous pouvez ajouter des serveurs DNS en cliquant sur l'icône +. Cliquez sur ok et appliquez les nouveaux paramètres. Vous devrez peut-être redémarrer votre ordinateur pour que les changements fonctionnent.
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/ef5a4b8e82a046e6a466c73c2fd9e99e.jpg"
|
||||
src={macOs}
|
||||
width="728"
|
||||
height="1060"
|
||||
alt="MacOS réglages réseau et DNS"
|
||||
@ -68,28 +75,28 @@ Ouvrez :
|
||||
1. Utiliser l’adresse de serveur DNS suivante
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/sci-hub-settings.jpg"
|
||||
src={windowsSettings}
|
||||
width="728"
|
||||
height="319"
|
||||
alt="Réglages windows"
|
||||
/>
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/sci-hub-network.jpg"
|
||||
src={windowsNetwork}
|
||||
width="728"
|
||||
height="803"
|
||||
alt="Windows réglages réseaux"
|
||||
/>
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/sci-hub-adapter.jpg"
|
||||
src={windowsAdapter}
|
||||
width="728"
|
||||
height="327"
|
||||
alt="Windows régalges connections réseaux"
|
||||
/>
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/sci-hub-adapter-settings.jpg"
|
||||
src={windowsAdapterSettings}
|
||||
width="728"
|
||||
height="434"
|
||||
alt="Windows options adaptateur réseau"
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: The day I Jam’d
|
||||
subtitle: Des paris, des outils et du fun.
|
||||
lang: fr
|
||||
permalink: "the-day-I-jamd"
|
||||
slug: "the-day-I-jamd"
|
||||
excerpt: Ooh, yeah! All right! We’re jammin’
|
||||
tags: ["Dev", "Jamstack"]
|
||||
type: articles
|
||||
@ -11,6 +11,8 @@ updatedAt: "2022-12-27T15:40:06.000Z"
|
||||
---
|
||||
|
||||
import AstroImage from "../../../components/AstroImage.astro";
|
||||
export const wordpress = "https://assets.nardu.in/wordpress_8ee6f54b98.jpeg";
|
||||
export const strapi11ty = "https://assets.nardu.in/static_2c0d9f1eb8.jpeg";
|
||||
|
||||
## La solution de non facilité
|
||||
|
||||
@ -31,7 +33,7 @@ J’en suis resté pantois ! Quasiment sans optimisation du côté statique
|
||||
### wordpress
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/wordpress_8ee6f54b98.jpeg"
|
||||
src={wordpress}
|
||||
width="728"
|
||||
height="412"
|
||||
alt="Score de performance de 53/100 sur Wordpress."
|
||||
@ -42,7 +44,7 @@ Malgré beaucoup d’efforts, je n’ai pas pu faire mieux. Je ne suis pas un ex
|
||||
### 11ty + strapi
|
||||
|
||||
<AstroImage
|
||||
src="https://assets.nardu.in/static_2c0d9f1eb8.jpeg"
|
||||
src={strapi11ty}
|
||||
width="728"
|
||||
height="412"
|
||||
alt="Score de performance de 97/100 en Jamstack."
|
||||
|
@ -3,7 +3,7 @@ title: Compression vidéo
|
||||
subtitle: En cours de traduction, revenez bientôt ;)
|
||||
lang: fr
|
||||
draft: true
|
||||
permalink: "video-compression"
|
||||
slug: "video-compression"
|
||||
excerpt: Pas encore traduit
|
||||
tags: ["Design"]
|
||||
type: articles
|
||||
|
@ -7,7 +7,6 @@ const articles = defineCollection({
|
||||
lang: z.enum(["fr", "en"]),
|
||||
tags: z.array(z.string()), // An array of strings
|
||||
type: z.string(),
|
||||
permalink: z.string(),
|
||||
// Parse pubDate as a browser-standard `Date` object
|
||||
createdAt: z.string().transform((str) => new Date(str)),
|
||||
updatedAt: z
|
||||
@ -26,7 +25,6 @@ const fragments = defineCollection({
|
||||
lang: z.enum(["fr", "en"]),
|
||||
tags: z.array(z.string()), // An array of strings
|
||||
type: z.string(),
|
||||
permalink: z.string(),
|
||||
// Parse pubDate as a browser-standard `Date` object
|
||||
createdAt: z.string().transform((str) => new Date(str)),
|
||||
updatedAt: z
|
||||
@ -44,7 +42,6 @@ const references = defineCollection({
|
||||
subtitle: z.string(),
|
||||
url: z.string(),
|
||||
lang: z.enum(["fr", "en"]),
|
||||
permalink: z.string(),
|
||||
tags: z.array(z.string()), // An array of strings
|
||||
// Parse pubDate as a browser-standard `Date` object
|
||||
createdAt: z.string().transform((str) => new Date(str)),
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Strong TLS certificates with acme.sh
|
||||
subtitle: 384-bit of https
|
||||
lang: en
|
||||