feat: added support for markdown pages

This commit is contained in:
2026-01-20 02:31:21 +03:00
parent 700073571e
commit ef877ad303
8 changed files with 1429 additions and 78 deletions

View File

@@ -1,50 +1,20 @@
import BlogArea from "../components/blogpost";
// Mock data for blog posts
const blogposts = [
{
label: "Оптимизация конвейера: как мы добились IPC 1.2 в нашем RISC-V ядре",
body: "Разбираем как с помощью глубокого конвейера и точного предсказания переходов ускорили выполнение инструкций. Бенчмарки показывают прирост в 3.7x compared to naive implementation.",
publish: "5 августа 2023",
get_absolute_url: "/post/optimizatsiya-konveyera-risc-v",
tags: ["risc-v", "microarchitecture", "optimization"]
},
{
label: "RISC-V Custom Extensions: почему мы добавили свои инструкции в процессор",
body: "После 6 месяцев анализа мы расширили базовый набор команд. В статье делимся болью верификации, разработкой компиляторной поддержки и тем, как это ускорило обработку AES в 17 раз.",
publish: "12 августа 2023",
get_absolute_url: "/risc-v-custom-extensions",
tags: ["risc-v", "isa", "hardware"]
},
{
label: "Кастомный memory-mapped периферийный контроллер для RISC-V SoC",
body: "Как мы реализовали низколатентный доступ к периферии. Разбираем взаимодействие с шиной TileLink, arbitration и особенности работы с прерываниями.",
publish: "19 августа 2023",
get_absolute_url: "/memory-mapped-controller-risc-v-soc",
tags: ["risc-v", "soc", "embedded"]
},
{
label: "Hot-swap модулей в RISC-V системе: динамическая подгрузка ускорителей",
body: "Реализовали runtime-конфигурацию процессорных расширений на ПЛИС. Теперь можно подгружать крипто-ускорители и DSP блоки без перезагрузки всей системы.",
publish: "26 августа 2023",
get_absolute_url: "/hot-swap-risc-v-modules",
tags: ["risc-v", "fpga", "dynamic"]
},
{
label: "Верификация RISC-V ядра: как мы покрыли 99.8% кода формальной проверкой",
body: "Наша методология верификации с использованием UVM и SymbiYosys. Показываем как обнаружили 47 критических багов до tape-out и добились соответствия спецификации.",
publish: "2 сентября 2023",
get_absolute_url: "/verifikatsiya-risc-v-yadra",
tags: ["risc-v", "verification", "formal"]
}
];
import { getSortedPostsData } from '@/lib/posts';
import BlogArea from '@/components/blogpost';
export default function Home() {
return (
<main>
<BlogArea blogposts={blogposts} />
</main>
);
}
const blogposts = getSortedPostsData();
const formattedPosts = blogposts.map(post => ({
label: post.title,
body: post.description,
publish: new Date(post.date).toLocaleDateString('ru-RU', {
day: 'numeric',
month: 'long',
year: 'numeric',
}),
get_absolute_url: `/post/${post.slug}`,
tags: post.tags,
}));
return <BlogArea blogposts={formattedPosts} />;
}