From e042996b55305c72627ae77a263eea4c1fb30585 Mon Sep 17 00:00:00 2001 From: Alex Daichendt Date: Thu, 2 Nov 2023 14:26:00 +0100 Subject: [PATCH] feat: added publications --- src/lib/components/Header.svelte | 1 + .../publications/PublicationListItem.svelte | 40 +++++++++++++++++++ src/lib/utils/types.ts | 14 +++++++ src/routes/publications/+page.server.ts | 22 ++++++++++ src/routes/publications/+page.svelte | 24 +++++++++++ src/routes/publications/+page.ts | 11 +++++ .../publications/conference/itc-35/+page.md | 17 ++++++++ .../conference/nfv-sdn23/+page.md | 19 +++++++++ 8 files changed, 148 insertions(+) create mode 100644 src/lib/components/publications/PublicationListItem.svelte create mode 100644 src/routes/publications/+page.server.ts create mode 100644 src/routes/publications/+page.svelte create mode 100644 src/routes/publications/+page.ts create mode 100644 src/routes/publications/conference/itc-35/+page.md create mode 100644 src/routes/publications/conference/nfv-sdn23/+page.md diff --git a/src/lib/components/Header.svelte b/src/lib/components/Header.svelte index 782ef4c..2744e59 100644 --- a/src/lib/components/Header.svelte +++ b/src/lib/components/Header.svelte @@ -5,6 +5,7 @@ const NAV_ITEMS = [ { href: '/', label: 'Home' }, { href: '/blog', label: 'Blog' }, + { href: '/publications', label: 'Publications' }, { href: '/projects', label: 'Projects' }, { href: '/contact', label: 'Contact' }, ]; diff --git a/src/lib/components/publications/PublicationListItem.svelte b/src/lib/components/publications/PublicationListItem.svelte new file mode 100644 index 0000000..b6662e2 --- /dev/null +++ b/src/lib/components/publications/PublicationListItem.svelte @@ -0,0 +1,40 @@ + + +
  • + + + {#each authors as author, i} + {#if i != authors.length && i != 0} + , + {/if} + {#if author == 'Alexander Daichendt'} + {author} + {:else} + {author} + {/if} + {/each} + + + {title} + + {conference} + +
  • + + diff --git a/src/lib/utils/types.ts b/src/lib/utils/types.ts index 2c45197..e44a1b9 100644 --- a/src/lib/utils/types.ts +++ b/src/lib/utils/types.ts @@ -46,3 +46,17 @@ export interface PageData { keywords: string[]; }; } + +export interface PublicationFrontmatter { + created: string; + title: string; + authors: string[]; + conference: string; + pdf: string; // url to pdf + keywords: string[]; + hidden: boolean; +} + +export interface PublicationMeta extends PublicationFrontmatter { + href: string; +} diff --git a/src/routes/publications/+page.server.ts b/src/routes/publications/+page.server.ts new file mode 100644 index 0000000..39d9d24 --- /dev/null +++ b/src/routes/publications/+page.server.ts @@ -0,0 +1,22 @@ +import type { PublicationMeta, PublicationFrontmatter } from '$lib/utils/types'; +import type { PageServerLoad } from './$types'; + +const removeExtension = (path: string) => path.replace(/\.[^.]*$/g, '').replace('/+page', ''); + +export const load: PageServerLoad = async () => { + const modulesSVX = import.meta.glob('./**/*.svx'); + const modulesMD = import.meta.glob('./**/*.md'); + const modules = { ...modulesMD, ...modulesSVX }; + const publications: PublicationMeta[] = []; + const resolved = (await Promise.all(Object.values(modules).map((f) => f()))) as { + metadata: PublicationFrontmatter; + }[]; + resolved.forEach((file, index) => { + const path = Object.keys(modules)[index]; + const { metadata } = file; + + publications.push({ ...metadata, href: `publications/${removeExtension(path)}` }); + }); + + return { publications }; +}; diff --git a/src/routes/publications/+page.svelte b/src/routes/publications/+page.svelte new file mode 100644 index 0000000..fba5dda --- /dev/null +++ b/src/routes/publications/+page.svelte @@ -0,0 +1,24 @@ + + + + +

    Publications

    + +

    Conference papers

    + diff --git a/src/routes/publications/+page.ts b/src/routes/publications/+page.ts new file mode 100644 index 0000000..0eb93cd --- /dev/null +++ b/src/routes/publications/+page.ts @@ -0,0 +1,11 @@ +import type { PageLoad } from './$types'; + +export const load: PageLoad = ({ data }) => { + return { + publications: data.publications, + seo: { + title: 'Publications', + description: 'Detailed descriptions of publications by Alex Daichendt', + }, + }; +}; diff --git a/src/routes/publications/conference/itc-35/+page.md b/src/routes/publications/conference/itc-35/+page.md new file mode 100644 index 0000000..d76653f --- /dev/null +++ b/src/routes/publications/conference/itc-35/+page.md @@ -0,0 +1,17 @@ +--- +title: 'Containing Low Tail-Latencies in Packet Processing Using Lightweight Virtualization' +authors: + - Florian Wiedner + - Max Helm + - Alexander Daichendt + - Jonas Andre + - Georg Carle +conference: 2023 35rd International Teletraffic Congress (ITC-35) +pdf: https://www.net.in.tum.de/fileadmin/bibtex/publications/papers/wiedner_itc35.pdf +keywords: + - publication + - low latency + - networking + - virtualization +layout: blog +--- diff --git a/src/routes/publications/conference/nfv-sdn23/+page.md b/src/routes/publications/conference/nfv-sdn23/+page.md new file mode 100644 index 0000000..6d45ec7 --- /dev/null +++ b/src/routes/publications/conference/nfv-sdn23/+page.md @@ -0,0 +1,19 @@ +--- +title: 'Control Groups Added Latency in NFVs: An Update Needed?' +authors: + - Florian Wiedner + - Alexander Daichendt + - Jonas Andre + - Georg Carle +conference: 2023 IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN), Nov. 2023 +pdf: https://www.net.in.tum.de/fileadmin/bibtex/publications/papers/wiedner_nfvsdn2023.pdf +keywords: + - publication + - low latency + - networking + - virtualization + - kernel + - container + - cgroups +layout: blog +---