From 89a153ddffffcc7210d699096c5cc76ca4c58404 Mon Sep 17 00:00:00 2001 From: miyaji255 <84168445+miyaji255@users.noreply.github.com> Date: Sat, 3 Feb 2024 19:29:03 +0900 Subject: [PATCH 1/7] =?UTF-8?q?#55=20=E3=82=BF=E3=82=B0=E3=82=AB=E3=83=86?= =?UTF-8?q?=E3=82=B4=E3=83=AA=E3=83=BC=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/blog/BlogTitle.astro | 2 +- src/components/blog/tag/TagCategoryNav.astro | 34 +++++ src/components/blog/tag/TagListPage.astro | 42 +++++ src/components/blog/tag/TagListSection.astro | 1 + src/components/layout/nav/BlogNav.astro | 24 +-- src/content/_schema.json | 143 ++++++++++-------- src/content/_schema.ts | 3 + src/content/config.ts | 13 ++ src/content/tags/advent-calendar.json | 3 +- src/content/tags/arduino.json | 1 + src/content/tags/asp.net.json | 1 + src/content/tags/astro.json | 1 + src/content/tags/automation.json | 3 +- src/content/tags/blender.json | 3 +- src/content/tags/c-cpp.json | 1 + src/content/tags/csharp.json | 1 + src/content/tags/discord-bot.json | 1 + src/content/tags/docker.json | 1 + src/content/tags/dotnet.json | 1 + src/content/tags/electronic-dictionary.json | 1 + src/content/tags/fashion.json | 3 +- src/content/tags/for-beginer.json | 3 +- src/content/tags/git.json | 1 + src/content/tags/go.json | 1 + src/content/tags/javascript.json | 3 +- src/content/tags/mad.json | 3 +- src/content/tags/markdown.json | 1 + src/content/tags/mixamo.json | 3 +- src/content/tags/open-cv.json | 3 +- src/content/tags/open-xml.json | 3 +- src/content/tags/oracle-cloud.json | 3 +- src/content/tags/power-point.json | 3 +- src/content/tags/python.json | 1 + src/content/tags/reaper.json | 3 +- src/content/tags/rest-api.json | 1 + src/content/tags/rust.json | 1 + src/content/tags/shell.json | 1 + src/content/tags/tello.json | 1 + src/content/tags/transcribe.json | 3 +- src/content/tags/typst.json | 1 + src/content/tags/unity.json | 1 + src/content/tags/vrchat.json | 3 +- src/content/tags/vrm.json | 3 +- src/content/tags/whisper.json | 3 +- src/content/tags/winforms.json | 1 + src/content/tags/workshop.json | 3 +- src/pages/blog/tags/[category].astro | 15 ++ .../tags/{[slug]/index.astro => [slug].astro} | 0 src/pages/blog/tags/index.astro | 33 +--- 49 files changed, 262 insertions(+), 122 deletions(-) create mode 100644 src/components/blog/tag/TagCategoryNav.astro create mode 100644 src/components/blog/tag/TagListPage.astro create mode 100644 src/pages/blog/tags/[category].astro rename src/pages/blog/tags/{[slug]/index.astro => [slug].astro} (100%) diff --git a/src/components/blog/BlogTitle.astro b/src/components/blog/BlogTitle.astro index df59775..b21e9f6 100644 --- a/src/components/blog/BlogTitle.astro +++ b/src/components/blog/BlogTitle.astro @@ -11,7 +11,7 @@ const { title, background } = Astro.props class:list={[ 'bg-dot flex items-center justify-center gap-x-5 py-6 text-6xl', { - 'bg-dot-white': background === 'white', + 'bg-dot-white border-t': background === 'white', 'bg-dot-primary': background === 'primary', 'bg-dot-secondary': background === 'secondary', }, diff --git a/src/components/blog/tag/TagCategoryNav.astro b/src/components/blog/tag/TagCategoryNav.astro new file mode 100644 index 0000000..5be7d4c --- /dev/null +++ b/src/components/blog/tag/TagCategoryNav.astro @@ -0,0 +1,34 @@ +--- +import { TagCategoryMapping, type TagCategory } from '@/content/config' + +export type TagNavCategory = 'all' | TagCategory + +interface Props { + category: TagNavCategory +} +const { category } = Astro.props +const tagCategoryEntries = [['all', '全般'], ...TagCategoryMapping] as const +--- + + diff --git a/src/components/blog/tag/TagListPage.astro b/src/components/blog/tag/TagListPage.astro new file mode 100644 index 0000000..a1f4415 --- /dev/null +++ b/src/components/blog/tag/TagListPage.astro @@ -0,0 +1,42 @@ +--- +import BlogLayout from '@/layouts/BlogLayout.astro' +import { getCollection } from 'astro:content' +import { getTagStatistics } from '@/content/_blog-statistics' +import TagListSection from '@/components/blog/tag/TagListSection.astro' +import type { TagNavCategory } from './TagCategoryNav.astro' +import TagCategoryNav from './TagCategoryNav.astro' + +interface Props { + category: TagNavCategory +} + +const { category } = Astro.props +const [tagEntries, statistics] = await Promise.all([ + getCollection('tags'), + getTagStatistics(), +] as const) + +const tags = tagEntries + .filter((tag) => category === 'all' || category === tag.data.category) + .map((tag) => ({ + ...tag, + articleCount: statistics[tag.id].length, + lastPostedTime: statistics[tag.id][0]?.time ?? 0, + })) +tags.sort((tag1, tag2) => + tag2.articleCount !== tag1.articleCount + ? tag2.articleCount - tag1.articleCount + : tag2.lastPostedTime - tag1.lastPostedTime, +) +--- + + + +
+ + + + + +
+
diff --git a/src/components/blog/tag/TagListSection.astro b/src/components/blog/tag/TagListSection.astro index 04efdd3..6890ce4 100644 --- a/src/components/blog/tag/TagListSection.astro +++ b/src/components/blog/tag/TagListSection.astro @@ -13,5 +13,6 @@ const { title, tags } = Astro.props
{title} +
diff --git a/src/components/layout/nav/BlogNav.astro b/src/components/layout/nav/BlogNav.astro index 5665fd7..6aa1342 100644 --- a/src/components/layout/nav/BlogNav.astro +++ b/src/components/layout/nav/BlogNav.astro @@ -1,29 +1,35 @@ --- +import { TagCategoryMapping } from '@/content/config' + const current = Astro.url.pathname -const navList: { target: string; title: string }[] = [ +const navList = [ { - target: '/blog', + target: '/blog/', title: '記事一覧', + isHere: current === '/blog/', }, { - target: '/blog/tags', + target: '/blog/tags/', title: 'タグ一覧', + isHere: [ + '/blog/tags/', + ...TagCategoryMapping.map(([category]) => `/blog/tags/${category}/`), + ].includes(current), }, -] +] as const satisfies { target: string; title: string; isHere: boolean }[] --- -
+
{ - navList.map(({ target, title }) => ( + navList.map(({ target, title, isHere }) => ( diff --git a/src/content/_schema.json b/src/content/_schema.json index 26527f8..6261c0e 100644 --- a/src/content/_schema.json +++ b/src/content/_schema.json @@ -1,72 +1,89 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "AuthorSchema": { - "title": "AuthorSchema", - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "name" - }, - "description": { - "type": "string", - "title": "description" - }, - "github": { - "type": "string", - "title": "github" - }, - "image": { - "type": "string", - "title": "image" - } - }, - "additionalProperties": false, - "required": ["name"] - }, - "TagSchema": { - "title": "TagSchema", - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "name" - }, - "description": { - "type": "string", - "title": "description" - }, - "image": { - "type": "string", - "title": "image" - }, - "fullSizeImage": { - "type": "boolean", - "title": "fullSizeImage" + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "AuthorSchema": { + "title": "AuthorSchema", + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "name" + }, + "description": { + "type": "string", + "title": "description" + }, + "github": { + "type": "string", + "title": "github" + }, + "image": { + "type": "string", + "title": "image" + } + }, + "additionalProperties": false, + "required": [ + "name" + ] }, - "links": { - "type": "array", - "items": { + "TagSchema": { + "title": "TagSchema", "type": "object", "properties": { - "url": { - "type": "string", - "title": "url" - }, - "text": { - "type": "string", - "title": "text" - } + "name": { + "type": "string", + "title": "name" + }, + "description": { + "type": "string", + "title": "description" + }, + "category": { + "enum": [ + "circle", + "other", + "tech" + ], + "type": "string", + "title": "category" + }, + "image": { + "type": "string", + "title": "image" + }, + "fullSizeImage": { + "type": "boolean", + "title": "fullSizeImage" + }, + "links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string", + "title": "url" + }, + "text": { + "type": "string", + "title": "text" + } + }, + "additionalProperties": false, + "required": [ + "text", + "url" + ] + }, + "title": "links" + } }, "additionalProperties": false, - "required": ["text", "url"] - }, - "title": "links" + "required": [ + "category", + "name" + ] } - }, - "additionalProperties": false, - "required": ["name"] } - } } diff --git a/src/content/_schema.ts b/src/content/_schema.ts index b75f1de..189561d 100644 --- a/src/content/_schema.ts +++ b/src/content/_schema.ts @@ -1,6 +1,8 @@ // JSON Schema 用定義 // こちらを更新した際は npm run json-schema も動かす +import type { TagCategory } from './config' + export interface AuthorSchema { name: string description?: string @@ -11,6 +13,7 @@ export interface AuthorSchema { export interface TagSchema { name: string description?: string + category: TagCategory image?: string fullSizeImage?: boolean links?: { diff --git a/src/content/config.ts b/src/content/config.ts index ad3b39b..2a382c4 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -42,12 +42,25 @@ const authorsCollection = defineCollection({ }), }) +export const TagCategoryMapping = [ + ['tech', '技術'], + ['circle', 'サークル'], + ['other', '雑記'], +] as const satisfies [string, string][] +export type TagCategory = (typeof TagCategoryMapping)[number][0] + const tagsCollection = defineCollection({ type: 'data', schema: ({ image }) => z.object({ name: z.string().min(1), description: z.string().optional(), + category: z.enum( + TagCategoryMapping.map(([category]) => category) as [ + TagCategory, + ...TagCategory[], + ], + ), links: z .array( z.object({ diff --git a/src/content/tags/advent-calendar.json b/src/content/tags/advent-calendar.json index b33d620..694e6d7 100644 --- a/src/content/tags/advent-calendar.json +++ b/src/content/tags/advent-calendar.json @@ -1,3 +1,4 @@ { - "name": "Advent Calendar" + "name": "Advent Calendar", + "category": "circle" } diff --git a/src/content/tags/arduino.json b/src/content/tags/arduino.json index def4a72..7f5b8c5 100644 --- a/src/content/tags/arduino.json +++ b/src/content/tags/arduino.json @@ -1,4 +1,5 @@ { "name": "Arduino", + "category": "tech", "image": "./arduino.svg" } diff --git a/src/content/tags/asp.net.json b/src/content/tags/asp.net.json index 8d5a399..502f64e 100644 --- a/src/content/tags/asp.net.json +++ b/src/content/tags/asp.net.json @@ -1,5 +1,6 @@ { "name": "ASP.NET Core", + "category": "tech", "image": "./dotnet.svg", "fullSizeImage": true, "links": [ diff --git a/src/content/tags/astro.json b/src/content/tags/astro.json index c526a1d..914b075 100644 --- a/src/content/tags/astro.json +++ b/src/content/tags/astro.json @@ -1,4 +1,5 @@ { "name": "Astro", + "category": "tech", "image": "./astro.svg" } diff --git a/src/content/tags/automation.json b/src/content/tags/automation.json index fb5a1e8..770e4af 100644 --- a/src/content/tags/automation.json +++ b/src/content/tags/automation.json @@ -1,3 +1,4 @@ { - "name": "自動化" + "name": "自動化", + "category": "tech" } diff --git a/src/content/tags/blender.json b/src/content/tags/blender.json index 6fc3062..3082a1f 100644 --- a/src/content/tags/blender.json +++ b/src/content/tags/blender.json @@ -1,3 +1,4 @@ { - "name": "Blender" + "name": "Blender", + "category": "tech" } diff --git a/src/content/tags/c-cpp.json b/src/content/tags/c-cpp.json index d7f290a..7176711 100644 --- a/src/content/tags/c-cpp.json +++ b/src/content/tags/c-cpp.json @@ -1,5 +1,6 @@ { "name": "C/C++", + "category": "tech", "description": "C/C++ は低レイヤな処理を得意とし、高速に実行できるコンパイル型言語です。歴史が長く、また組み込み機器のような特殊な環境でも動作します。C と C++ は別の言語ですが、C++ が基本的には C を拡張した言語であるため、ひっくるめて C/C++ と呼ばれることがあります。", "image": "./cpp.svg", "links": [ diff --git a/src/content/tags/csharp.json b/src/content/tags/csharp.json index 757f830..a62d2bb 100644 --- a/src/content/tags/csharp.json +++ b/src/content/tags/csharp.json @@ -1,5 +1,6 @@ { "name": "C#", + "category": "tech", "description": "C#は、最新のタイプ セーフなオブジェクト指向のプログラミング言語です。 開発者は C# を使用することにより、.NET で稼働する、安全かつ堅牢な多くの種類のアプリケーションを構築できます。", "image": "./csharp.svg", "links": [ diff --git a/src/content/tags/discord-bot.json b/src/content/tags/discord-bot.json index 46de62c..d03a59c 100644 --- a/src/content/tags/discord-bot.json +++ b/src/content/tags/discord-bot.json @@ -1,4 +1,5 @@ { "name": "Discord Bot", + "category": "tech", "image": "./discord-bot.svg" } diff --git a/src/content/tags/docker.json b/src/content/tags/docker.json index 55fb880..0e3d4e8 100644 --- a/src/content/tags/docker.json +++ b/src/content/tags/docker.json @@ -1,4 +1,5 @@ { "name": "Docker", + "category": "tech", "image": "./docker.svg" } diff --git a/src/content/tags/dotnet.json b/src/content/tags/dotnet.json index 217215a..6dbed9b 100644 --- a/src/content/tags/dotnet.json +++ b/src/content/tags/dotnet.json @@ -1,6 +1,7 @@ { "name": ".NET", "description": ".NET は C#, F#, VB.NET などが実行可能な仮想マシンです。(JVM に似ています) クラスプラットフォームであるためどんな環境でも同じコードで実行できます。", + "category": "tech", "image": "./dotnet.svg", "fullSizeImage": true, "links": [ diff --git a/src/content/tags/electronic-dictionary.json b/src/content/tags/electronic-dictionary.json index 1ba3feb..7f02daa 100644 --- a/src/content/tags/electronic-dictionary.json +++ b/src/content/tags/electronic-dictionary.json @@ -1,6 +1,7 @@ { "name": "電子辞書", "description": "電子辞書を本来とは異なる目的で活用する、電子辞書ハック関係の記事群です。主に SHARP 社製カラー電子辞書シリーズの Brain を対象としています。SHARP 社とは無関係な非公式の内容であることに注意してください。", + "category": "tech", "image": "./electronic-dictionary.svg", "links": [ { diff --git a/src/content/tags/fashion.json b/src/content/tags/fashion.json index df03442..686ef8e 100644 --- a/src/content/tags/fashion.json +++ b/src/content/tags/fashion.json @@ -1,3 +1,4 @@ { - "name": "ファッション" + "name": "ファッション", + "category": "other" } diff --git a/src/content/tags/for-beginer.json b/src/content/tags/for-beginer.json index 96c626a..87207f8 100644 --- a/src/content/tags/for-beginer.json +++ b/src/content/tags/for-beginer.json @@ -1,3 +1,4 @@ { - "name": "初心者向け" + "name": "初心者向け", + "category": "tech" } diff --git a/src/content/tags/git.json b/src/content/tags/git.json index fb3175e..fdd4ce4 100644 --- a/src/content/tags/git.json +++ b/src/content/tags/git.json @@ -1,4 +1,5 @@ { "name": "Git", + "category": "tech", "image": "./git.svg" } diff --git a/src/content/tags/go.json b/src/content/tags/go.json index 3897316..1f4b727 100644 --- a/src/content/tags/go.json +++ b/src/content/tags/go.json @@ -1,5 +1,6 @@ { "name": "Go", + "category": "tech", "image": "./go.svg", "links": [ { diff --git a/src/content/tags/javascript.json b/src/content/tags/javascript.json index 8ac873a..2e952b7 100644 --- a/src/content/tags/javascript.json +++ b/src/content/tags/javascript.json @@ -1,3 +1,4 @@ { - "name": "JavaScript" + "name": "JavaScript", + "category": "tech" } diff --git a/src/content/tags/mad.json b/src/content/tags/mad.json index 323302a..071288f 100644 --- a/src/content/tags/mad.json +++ b/src/content/tags/mad.json @@ -1,3 +1,4 @@ { - "name": "音MAD" + "name": "音MAD", + "category": "other" } diff --git a/src/content/tags/markdown.json b/src/content/tags/markdown.json index 596fe5a..69e5b66 100644 --- a/src/content/tags/markdown.json +++ b/src/content/tags/markdown.json @@ -1,4 +1,5 @@ { "name": "Markdown", + "category": "tech", "image": "./markdown.svg" } diff --git a/src/content/tags/mixamo.json b/src/content/tags/mixamo.json index 6859e66..db2911a 100644 --- a/src/content/tags/mixamo.json +++ b/src/content/tags/mixamo.json @@ -1,3 +1,4 @@ { - "name": "Mixamo" + "name": "Mixamo", + "category": "tech" } diff --git a/src/content/tags/open-cv.json b/src/content/tags/open-cv.json index daab72a..8b1e9f2 100644 --- a/src/content/tags/open-cv.json +++ b/src/content/tags/open-cv.json @@ -1,3 +1,4 @@ { - "name": "OpenCV" + "name": "OpenCV", + "category": "tech" } diff --git a/src/content/tags/open-xml.json b/src/content/tags/open-xml.json index 1152812..e44fee1 100644 --- a/src/content/tags/open-xml.json +++ b/src/content/tags/open-xml.json @@ -1,3 +1,4 @@ { - "name": "OpenXML" + "name": "OpenXML", + "category": "tech" } diff --git a/src/content/tags/oracle-cloud.json b/src/content/tags/oracle-cloud.json index aa3ef64..81c8ca4 100644 --- a/src/content/tags/oracle-cloud.json +++ b/src/content/tags/oracle-cloud.json @@ -1,3 +1,4 @@ { - "name": "Oracle Cloud" + "name": "Oracle Cloud", + "category": "tech" } diff --git a/src/content/tags/power-point.json b/src/content/tags/power-point.json index 98e4633..75c69c3 100644 --- a/src/content/tags/power-point.json +++ b/src/content/tags/power-point.json @@ -1,3 +1,4 @@ { - "name": "Power Point" + "name": "Power Point", + "category": "tech" } diff --git a/src/content/tags/python.json b/src/content/tags/python.json index 3c5e2df..f59b2d6 100644 --- a/src/content/tags/python.json +++ b/src/content/tags/python.json @@ -1,6 +1,7 @@ { "name": "Python", "description": "Python はインタープリタ型の高水準汎用プログラミング言語です。", + "category": "tech", "image": "./python.svg", "links": [ { diff --git a/src/content/tags/reaper.json b/src/content/tags/reaper.json index 8005b80..a9b80a2 100644 --- a/src/content/tags/reaper.json +++ b/src/content/tags/reaper.json @@ -1,3 +1,4 @@ { - "name": "REAPER" + "name": "REAPER", + "category": "tech" } diff --git a/src/content/tags/rest-api.json b/src/content/tags/rest-api.json index f97cb5e..b392b93 100644 --- a/src/content/tags/rest-api.json +++ b/src/content/tags/rest-api.json @@ -1,4 +1,5 @@ { "name": "REST API", + "category": "tech", "image": "./rest-api.svg" } diff --git a/src/content/tags/rust.json b/src/content/tags/rust.json index 0eed2f4..00b8a73 100644 --- a/src/content/tags/rust.json +++ b/src/content/tags/rust.json @@ -1,4 +1,5 @@ { "name": "Rust", + "category": "tech", "image": "./rust.svg" } diff --git a/src/content/tags/shell.json b/src/content/tags/shell.json index 479d084..87b7d96 100644 --- a/src/content/tags/shell.json +++ b/src/content/tags/shell.json @@ -1,5 +1,6 @@ { "name": "Shell", "description": "Shell はコンピュータを人間が操作するための UI の総称ですが、狭義には Bash や Zsh のようなコマンドラインインタプリタ(CLI)を指します。UI として利用することはもちろん、パイプやリダイレクトを用いた高度な情報処理や、shell script を用いた自動化など、広く活用されています。", + "category": "tech", "image": "./bash.svg" } diff --git a/src/content/tags/tello.json b/src/content/tags/tello.json index 21d3e81..a85381a 100644 --- a/src/content/tags/tello.json +++ b/src/content/tags/tello.json @@ -1,6 +1,7 @@ { "name": "Tello", "description": "Tello、Tello eduはドローン界のAppleと言われるDJIと、CPU部分をIntelで共同開発し、Ryze Techから販売されているトイドローンです。", + "category": "tech", "links": [ { "url": "https://www.ryzerobotics.com/", diff --git a/src/content/tags/transcribe.json b/src/content/tags/transcribe.json index 3e864a5..ef2640d 100644 --- a/src/content/tags/transcribe.json +++ b/src/content/tags/transcribe.json @@ -1,3 +1,4 @@ { - "name": "文字起こし" + "name": "文字起こし", + "category": "tech" } diff --git a/src/content/tags/typst.json b/src/content/tags/typst.json index f4f376e..c5de18e 100644 --- a/src/content/tags/typst.json +++ b/src/content/tags/typst.json @@ -1,5 +1,6 @@ { "name": "Typst", + "category": "tech", "image": "./typst.png", "fullSizeImage": true, "links": [ diff --git a/src/content/tags/unity.json b/src/content/tags/unity.json index e684b06..4830a78 100644 --- a/src/content/tags/unity.json +++ b/src/content/tags/unity.json @@ -1,5 +1,6 @@ { "name": "Unity", + "category": "tech", "image": "./unity.svg", "links": [ { diff --git a/src/content/tags/vrchat.json b/src/content/tags/vrchat.json index a700cd6..d76cc78 100644 --- a/src/content/tags/vrchat.json +++ b/src/content/tags/vrchat.json @@ -1,3 +1,4 @@ { - "name": "VRChat" + "name": "VRChat", + "category": "tech" } diff --git a/src/content/tags/vrm.json b/src/content/tags/vrm.json index b3c91cb..2f734db 100644 --- a/src/content/tags/vrm.json +++ b/src/content/tags/vrm.json @@ -1,3 +1,4 @@ { - "name": "VRM" + "name": "VRM", + "category": "tech" } diff --git a/src/content/tags/whisper.json b/src/content/tags/whisper.json index 1567578..4f74570 100644 --- a/src/content/tags/whisper.json +++ b/src/content/tags/whisper.json @@ -1,3 +1,4 @@ { - "name": "Whisper" + "name": "Whisper", + "category": "tech" } diff --git a/src/content/tags/winforms.json b/src/content/tags/winforms.json index 995a926..04dd70f 100644 --- a/src/content/tags/winforms.json +++ b/src/content/tags/winforms.json @@ -1,6 +1,7 @@ { "name": "Windows Forms", "description": "Windows Forms (WinForms) はWindows 用の豊富なデスクトップ クライアント アプリを作成する UI フレームワークです。C# のUIフレームワークの中では最も古いためとても安定してます。", + "category": "tech", "image": "./dotnet.svg", "fullSizeImage": true, "links": [ diff --git a/src/content/tags/workshop.json b/src/content/tags/workshop.json index f9c21b0..c31990d 100644 --- a/src/content/tags/workshop.json +++ b/src/content/tags/workshop.json @@ -1,3 +1,4 @@ { - "name": "講習会" + "name": "講習会", + "category": "circle" } diff --git a/src/pages/blog/tags/[category].astro b/src/pages/blog/tags/[category].astro new file mode 100644 index 0000000..2b863dc --- /dev/null +++ b/src/pages/blog/tags/[category].astro @@ -0,0 +1,15 @@ +--- +import TagListPage from '@/components/blog/tag/TagListPage.astro' +import { TagCategoryMapping } from '@/content/config' + +export function getStaticPaths() { + return TagCategoryMapping.map(([category]) => ({ + params: { category }, + props: { category }, + })) +} + +const { category } = Astro.props +--- + + diff --git a/src/pages/blog/tags/[slug]/index.astro b/src/pages/blog/tags/[slug].astro similarity index 100% rename from src/pages/blog/tags/[slug]/index.astro rename to src/pages/blog/tags/[slug].astro diff --git a/src/pages/blog/tags/index.astro b/src/pages/blog/tags/index.astro index 5206717..aa2ac7d 100644 --- a/src/pages/blog/tags/index.astro +++ b/src/pages/blog/tags/index.astro @@ -1,34 +1,5 @@ --- -import BlogLayout from '@/layouts/BlogLayout.astro' -import { getCollection } from 'astro:content' -import { getTagStatistics } from '@/content/_blog-statistics' -import TagListSection from '@/components/blog/tag/TagListSection.astro' - -const tagEntries = await getCollection('tags') -const statistics = await getTagStatistics() -const tags = tagEntries - .filter( - (tag) => - ![ - // ignore tags - 'dgv', - 'astro', - ].includes(tag.id), - ) - .map((tag) => ({ - ...tag, - articleCount: statistics[tag.id].length, - lastPostedTime: statistics[tag.id][0]?.time ?? 0, - })) -tags.sort((tag1, tag2) => - tag2.articleCount !== tag1.articleCount - ? tag2.articleCount - tag1.articleCount - : tag2.lastPostedTime - tag1.lastPostedTime, -) +import TagListPage from '@/components/blog/tag/TagListPage.astro' --- - -
- -
-
+ From a1c00396cf31d33643342238a1a154858f6f5419 Mon Sep 17 00:00:00 2001 From: miyaji255 <84168445+miyaji255@users.noreply.github.com> Date: Sat, 3 Feb 2024 21:04:15 +0900 Subject: [PATCH 2/7] =?UTF-8?q?=E3=83=96=E3=83=AD=E3=82=B0=E3=83=8A?= =?UTF-8?q?=E3=83=93=E3=81=AE=E6=96=87=E5=AD=97=E8=89=B2=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/layout/nav/BlogNav.astro | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/layout/nav/BlogNav.astro b/src/components/layout/nav/BlogNav.astro index 6aa1342..395ca34 100644 --- a/src/components/layout/nav/BlogNav.astro +++ b/src/components/layout/nav/BlogNav.astro @@ -26,10 +26,11 @@ const navList = [
From 5fb42f2dbad3f4de4b3977e2524a8c445399c808 Mon Sep 17 00:00:00 2001 From: miyaji255 <84168445+miyaji255@users.noreply.github.com> Date: Sat, 3 Feb 2024 21:06:55 +0900 Subject: [PATCH 3/7] =?UTF-8?q?=E3=83=AA=E3=83=B3=E3=83=88=E3=82=92?= =?UTF-8?q?=E9=81=A9=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/content/_schema.json | 148 ++++++++++++++++++--------------------- 1 file changed, 68 insertions(+), 80 deletions(-) diff --git a/src/content/_schema.json b/src/content/_schema.json index 6261c0e..2bd081b 100644 --- a/src/content/_schema.json +++ b/src/content/_schema.json @@ -1,89 +1,77 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "AuthorSchema": { - "title": "AuthorSchema", - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "name" - }, - "description": { - "type": "string", - "title": "description" - }, - "github": { - "type": "string", - "title": "github" - }, - "image": { - "type": "string", - "title": "image" - } - }, - "additionalProperties": false, - "required": [ - "name" - ] + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "AuthorSchema": { + "title": "AuthorSchema", + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "name" + }, + "description": { + "type": "string", + "title": "description" + }, + "github": { + "type": "string", + "title": "github" + }, + "image": { + "type": "string", + "title": "image" + } + }, + "additionalProperties": false, + "required": ["name"] + }, + "TagSchema": { + "title": "TagSchema", + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "name" + }, + "description": { + "type": "string", + "title": "description" + }, + "category": { + "enum": ["circle", "other", "tech"], + "type": "string", + "title": "category" + }, + "image": { + "type": "string", + "title": "image" + }, + "fullSizeImage": { + "type": "boolean", + "title": "fullSizeImage" }, - "TagSchema": { - "title": "TagSchema", + "links": { + "type": "array", + "items": { "type": "object", "properties": { - "name": { - "type": "string", - "title": "name" - }, - "description": { - "type": "string", - "title": "description" - }, - "category": { - "enum": [ - "circle", - "other", - "tech" - ], - "type": "string", - "title": "category" - }, - "image": { - "type": "string", - "title": "image" - }, - "fullSizeImage": { - "type": "boolean", - "title": "fullSizeImage" - }, - "links": { - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { - "type": "string", - "title": "url" - }, - "text": { - "type": "string", - "title": "text" - } - }, - "additionalProperties": false, - "required": [ - "text", - "url" - ] - }, - "title": "links" - } + "url": { + "type": "string", + "title": "url" + }, + "text": { + "type": "string", + "title": "text" + } }, "additionalProperties": false, - "required": [ - "category", - "name" - ] + "required": ["text", "url"] + }, + "title": "links" } + }, + "additionalProperties": false, + "required": ["category", "name"] } + } } From 874610f45f0a0ed6b1d3d802906fa0cd1cf398e5 Mon Sep 17 00:00:00 2001 From: miyaji255 <84168445+miyaji255@users.noreply.github.com> Date: Sat, 3 Feb 2024 23:19:18 +0900 Subject: [PATCH 4/7] =?UTF-8?q?=E3=82=BF=E3=82=B0=E3=81=AE=E3=83=89?= =?UTF-8?q?=E3=82=AD=E3=83=A5=E3=83=A1=E3=83=B3=E3=83=88=E3=82=92=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README_BLOG.md | 2 ++ src/components/blog/tag/TagAboutSection.astro | 17 ++++++++++++++--- src/components/blog/tag/TagCategoryNav.astro | 4 ++-- src/components/layout/nav/BlogNav.astro | 4 ++-- src/content/_schema.json | 2 +- src/content/_schema.ts | 4 +--- src/content/config.ts | 8 ++++---- src/content/tags/advent-calendar.json | 2 +- src/content/tags/workshop.json | 2 +- src/pages/blog/tags/[category].astro | 4 ++-- src/pages/blog/tags/[slug].astro | 4 +--- 11 files changed, 31 insertions(+), 22 deletions(-) diff --git a/README_BLOG.md b/README_BLOG.md index d457a00..58bfeef 100644 --- a/README_BLOG.md +++ b/README_BLOG.md @@ -76,6 +76,7 @@ Example: `src/content/authors/octocat.json` - name : タグの表示名(必須) - description : タグの説明 +- category : タグのカテゴリー。`tech`(技術関連), `club`(クラブ関連), `other`(その他) から選択できます。 - image : アイコンの画像ファイル(詳細は後述) - fullSizeImage : `image`で指定した画像の背景が透過されていない場合は`true`を指定してください。画像が円形に切り取られます。 - links : 関連リンクの配列です。GitHubや公式ドキュメントなどを追加してください。 @@ -90,6 +91,7 @@ Example: `src/content/tags/dotnet.json` { "name": ".NET", "description": ".NET は C#, F#, VB.NET などが実行可能な仮想マシンです。(JVM に似ています) クラスプラットフォームであるためどんな環境でも同じコードで実行できます。", + "category": "tech", "image": "./dotnet.svg", "fullSizeImage": true, "links": [ diff --git a/src/components/blog/tag/TagAboutSection.astro b/src/components/blog/tag/TagAboutSection.astro index e769b92..77ab9c5 100644 --- a/src/components/blog/tag/TagAboutSection.astro +++ b/src/components/blog/tag/TagAboutSection.astro @@ -2,21 +2,32 @@ import type { CollectionEntry } from 'astro:content' import Section from '../../common/Section.astro' import InlineLink from '@/components/common/InlineLink.astro' +import { TagCategoryEntries } from '@/content/config' interface Props { tag: CollectionEntry<'tags'>['data'] } const { - tag: { name, description, links }, + tag: { name, description, links, category }, } = Astro.props + +const categoryText = TagCategoryEntries.find(([c]) => c === category)![1] ---
- {name} について + + +
- {description &&
{description}
} +
{description || `${categoryText}に関連するタグです。`}
{ links.length === 0 ? ( '' diff --git a/src/components/blog/tag/TagCategoryNav.astro b/src/components/blog/tag/TagCategoryNav.astro index 5be7d4c..dfb8c85 100644 --- a/src/components/blog/tag/TagCategoryNav.astro +++ b/src/components/blog/tag/TagCategoryNav.astro @@ -1,5 +1,5 @@ --- -import { TagCategoryMapping, type TagCategory } from '@/content/config' +import { TagCategoryEntries, type TagCategory } from '@/content/config' export type TagNavCategory = 'all' | TagCategory @@ -7,7 +7,7 @@ interface Props { category: TagNavCategory } const { category } = Astro.props -const tagCategoryEntries = [['all', '全般'], ...TagCategoryMapping] as const +const tagCategoryEntries = [['all', '全般'], ...TagCategoryEntries] as const ---
- +
{ blogMeta.updateDate && ( diff --git a/src/components/blog/BlogListItem.astro b/src/components/blog/BlogListItem.astro index 25367c6..5a066ca 100644 --- a/src/components/blog/BlogListItem.astro +++ b/src/components/blog/BlogListItem.astro @@ -20,7 +20,7 @@ const tags = await getEntries(blog.tags) {blog.title} - +
diff --git a/src/components/blog/tag/TagAboutSection.astro b/src/components/blog/tag/TagAboutSection.astro index 77ab9c5..e769b92 100644 --- a/src/components/blog/tag/TagAboutSection.astro +++ b/src/components/blog/tag/TagAboutSection.astro @@ -2,32 +2,21 @@ import type { CollectionEntry } from 'astro:content' import Section from '../../common/Section.astro' import InlineLink from '@/components/common/InlineLink.astro' -import { TagCategoryEntries } from '@/content/config' interface Props { tag: CollectionEntry<'tags'>['data'] } const { - tag: { name, description, links, category }, + tag: { name, description, links }, } = Astro.props - -const categoryText = TagCategoryEntries.find(([c]) => c === category)![1] ---
- - - + {name} について
-
{description || `${categoryText}に関連するタグです。`}
+ {description &&
{description}
} { links.length === 0 ? ( '' diff --git a/src/components/blog/tag/TagListPage.astro b/src/components/blog/tag/TagListPage.astro deleted file mode 100644 index a1f4415..0000000 --- a/src/components/blog/tag/TagListPage.astro +++ /dev/null @@ -1,42 +0,0 @@ ---- -import BlogLayout from '@/layouts/BlogLayout.astro' -import { getCollection } from 'astro:content' -import { getTagStatistics } from '@/content/_blog-statistics' -import TagListSection from '@/components/blog/tag/TagListSection.astro' -import type { TagNavCategory } from './TagCategoryNav.astro' -import TagCategoryNav from './TagCategoryNav.astro' - -interface Props { - category: TagNavCategory -} - -const { category } = Astro.props -const [tagEntries, statistics] = await Promise.all([ - getCollection('tags'), - getTagStatistics(), -] as const) - -const tags = tagEntries - .filter((tag) => category === 'all' || category === tag.data.category) - .map((tag) => ({ - ...tag, - articleCount: statistics[tag.id].length, - lastPostedTime: statistics[tag.id][0]?.time ?? 0, - })) -tags.sort((tag1, tag2) => - tag2.articleCount !== tag1.articleCount - ? tag2.articleCount - tag1.articleCount - : tag2.lastPostedTime - tag1.lastPostedTime, -) ---- - - - -
- - - - - -
-
diff --git a/src/components/blog/tag/TagSmallList.astro b/src/components/blog/tag/TagSmallList.astro index 64f32b6..f089743 100644 --- a/src/components/blog/tag/TagSmallList.astro +++ b/src/components/blog/tag/TagSmallList.astro @@ -1,14 +1,24 @@ --- import type { CollectionEntry } from 'astro:content' import TagIcon from '../icon/TagIcon.astro' +import { BlogCategoryMapping, type BlogCategory } from '@/content/config' interface Props { + blogCategory: BlogCategory tags: CollectionEntry<'tags'>[] } -const { tags } = Astro.props +const { blogCategory, tags } = Astro.props ---
    +
  • + {BlogCategoryMapping[blogCategory]} +
  • + { tags.map((tag) => (
  • diff --git a/src/components/layout/nav/BlogNav.astro b/src/components/layout/nav/BlogNav.astro index c6f357a..8b280a4 100644 --- a/src/components/layout/nav/BlogNav.astro +++ b/src/components/layout/nav/BlogNav.astro @@ -1,5 +1,5 @@ --- -import { TagCategoryEntries } from '@/content/config' +import { BlogCategoryMapping } from '@/content/config' const current = Astro.url.pathname @@ -7,15 +7,17 @@ const navList = [ { target: '/blog/', title: '記事一覧', - isHere: current === '/blog/', + isHere: [ + '/blog/', + ...Object.keys(BlogCategoryMapping).map( + (category) => `/blog/category=${category}/`, + ), + ].includes(current), }, { target: '/blog/tags/', title: 'タグ一覧', - isHere: [ - '/blog/tags/', - ...TagCategoryEntries.map(([category]) => `/blog/tags/${category}/`), - ].includes(current), + isHere: '/blog/tags/' === current, }, ] as const satisfies { target: string; title: string; isHere: boolean }[] --- diff --git a/src/content/_schema.json b/src/content/_schema.json index 893f1f4..26527f8 100644 --- a/src/content/_schema.json +++ b/src/content/_schema.json @@ -37,11 +37,6 @@ "type": "string", "title": "description" }, - "category": { - "enum": ["club", "other", "tech"], - "type": "string", - "title": "category" - }, "image": { "type": "string", "title": "image" @@ -71,7 +66,7 @@ } }, "additionalProperties": false, - "required": ["category", "name"] + "required": ["name"] } } } diff --git a/src/content/_schema.ts b/src/content/_schema.ts index 87b5bcb..b75f1de 100644 --- a/src/content/_schema.ts +++ b/src/content/_schema.ts @@ -11,7 +11,6 @@ export interface AuthorSchema { export interface TagSchema { name: string description?: string - category: 'tech' | 'club' | 'other' image?: string fullSizeImage?: boolean links?: { diff --git a/src/content/blogs/10.md b/src/content/blogs/10.md index 6cf16c6..614d3b3 100644 --- a/src/content/blogs/10.md +++ b/src/content/blogs/10.md @@ -7,6 +7,7 @@ description: | さて、私たちはそんな大学祭でどんなことをするのか、それについて少しだけお話しさせてもらうことにします。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/100.md b/src/content/blogs/100.md index 0541610..bf12a45 100644 --- a/src/content/blogs/100.md +++ b/src/content/blogs/100.md @@ -9,6 +9,7 @@ description: | 今後は、PythonやJavaScriptなど、講習会を開いていく予定です! author: member +category: club tags: [] --- diff --git a/src/content/blogs/1000.md b/src/content/blogs/1000.md index cb0f5c7..6121d6e 100644 --- a/src/content/blogs/1000.md +++ b/src/content/blogs/1000.md @@ -3,6 +3,7 @@ title: DataGridView のセルのイベントの順番はどうなっているの description: DataGridView のセルのイベントの順番について説明します tags: [advent-calendar, csharp, dotnet, winforms] author: miyaji +category: tech --- この記事は [OUCC Advent Calendar 2023](https://adventar.org/calendars/9315) の14日目の記事です。空いていたので入れてみました。 diff --git a/src/content/blogs/1001.md b/src/content/blogs/1001.md index cd5f818..dba3be6 100644 --- a/src/content/blogs/1001.md +++ b/src/content/blogs/1001.md @@ -3,6 +3,7 @@ title: C# のJsonSerializerの速度比較 description: C# のJsonSerializerはどれが最も高速なのか検証しました tags: [advent-calendar, csharp, dotnet] author: miyaji +category: tech --- この記事は [OUCC Advent Calendar 2023](https://adventar.org/calendars/9315) の17日目の記事です。前回はぐれいしゃさんによる [CTfとは?Ghidraをつかったreversing入門](https://qiita.com/icestdy/items/86b597d118e4801453d5) でした。 diff --git a/src/content/blogs/1002.md b/src/content/blogs/1002.md index 7abc726..478fcdd 100644 --- a/src/content/blogs/1002.md +++ b/src/content/blogs/1002.md @@ -2,6 +2,7 @@ title: C言語でコンパイルが通らなかった話 description: 大学の課題で作成したC言語のコードのコンパイルが通らず、試行錯誤した結果を記事にしました。 author: TaPet +category: tech tags: - advent-calendar - c-cpp diff --git a/src/content/blogs/1003.md b/src/content/blogs/1003.md index 948f936..4943e57 100644 --- a/src/content/blogs/1003.md +++ b/src/content/blogs/1003.md @@ -2,6 +2,7 @@ title: 覚えておくと便利なTypstの文法 description: 組版システムTypstのドキュメントにないけど覚えておくと便利な文法を紹介します。 tags: [advent-calendar, typst] +category: tech author: miyaji --- diff --git a/src/content/blogs/105.md b/src/content/blogs/105.md index 808fc88..9ac1fee 100644 --- a/src/content/blogs/105.md +++ b/src/content/blogs/105.md @@ -6,6 +6,7 @@ description: | 模擬店では唐揚げと焼き鳥を売らせていただき、二日とも休日だったおかげか唐揚げを完売することができました!!(去年は10kgほど売り残りがあり、部員たちで唐揚げパーティー(消費会)を開催しました(笑)) また、展示では去年のまちかね祭で出させていただいたシューティングゲームや占いに加え、opencvを用いたゲームや部長が作ったアクションゲームを展示させていただきました!! author: member +category: club tags: [] --- diff --git a/src/content/blogs/110.md b/src/content/blogs/110.md index 17519d3..18822ce 100644 --- a/src/content/blogs/110.md +++ b/src/content/blogs/110.md @@ -5,6 +5,7 @@ description: | この合宿の目的はチーム開発を経験することということで、3人1組の2つのグループに分かれて開発をしました。開発をする時間は9月9日の16時から9月11日の11時30分まででした。最後の夜は徹夜をして、開発終了時間にはどちらも動くものを発表することができました。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/116.md b/src/content/blogs/116.md index 4cb6ccb..7bd6c70 100644 --- a/src/content/blogs/116.md +++ b/src/content/blogs/116.md @@ -9,6 +9,7 @@ description: | 興味がある方は是非学祭に足を運びください! author: member +category: club tags: [] --- diff --git a/src/content/blogs/120.md b/src/content/blogs/120.md index 4413f86..f13bd80 100644 --- a/src/content/blogs/120.md +++ b/src/content/blogs/120.md @@ -7,6 +7,7 @@ description: | 今回考えたゲームのテーマは、「デッキ作製系リアルタイム対戦ゲーム」です。戦闘画面のイメージは次の通り。 author: member +category: tech tags: [advent-calendar, unity] --- diff --git a/src/content/blogs/13.md b/src/content/blogs/13.md index f26bd78..4c486cf 100644 --- a/src/content/blogs/13.md +++ b/src/content/blogs/13.md @@ -8,6 +8,7 @@ description: | また、LT会についても話題に上がりました。(LTは、[Lightning Talk]の略で各員が各々のトピックを5分程度の時間で話し合うものです) author: member +category: club tags: [] --- diff --git a/src/content/blogs/132.md b/src/content/blogs/132.md index 1f22219..96af54e 100644 --- a/src/content/blogs/132.md +++ b/src/content/blogs/132.md @@ -12,6 +12,7 @@ description: |  それで何分悩んだかわからないけど死にかけの頭で考えて何とか実装には成功したので、今後同じ事態にはまった時のためにメモとしてここに記述します。 author: member +category: tech tags: [unity, csharp] --- diff --git a/src/content/blogs/145.md b/src/content/blogs/145.md index 364c4c0..08ee0f5 100644 --- a/src/content/blogs/145.md +++ b/src/content/blogs/145.md @@ -10,6 +10,7 @@ description: | https://kanchi0914.hatenablog.com/entry/2019/10/02/181617 今回はこれをパワポケ風に近づけるために追加した機能を書きたいと思います。 author: member +category: tech tags: [advent-calendar, unity] --- diff --git a/src/content/blogs/15.md b/src/content/blogs/15.md index 5c8ad51..0f99f23 100644 --- a/src/content/blogs/15.md +++ b/src/content/blogs/15.md @@ -5,6 +5,7 @@ description: | Posted by OUCC webサーバ係 (2018 10/19) 本日、OUCCにてLT(Light Talking)会が開催されました author: member +category: club tags: [] --- diff --git a/src/content/blogs/161.md b/src/content/blogs/161.md index bde4ca0..99e773c 100644 --- a/src/content/blogs/161.md +++ b/src/content/blogs/161.md @@ -4,6 +4,7 @@ description: | ・~あらすじ~  クリスマスではないけど、一応アドベントカレンダーの名目で二日目の記事書かせてもらいますOUCCの2DCG班長です。最初は適当にunityの音声認識の記事でも書いてやり過ごそうと思ってたんですが、一日目の先代の部長が結構頑張ってたんで、それを見て急遽書く内容変更して、一日で出来るけどそこそこ難易度のあるテーマを考えました。シートン学園を見ながら3時間くらい悩んだ結果、PCの隣にあったMONO消しゴムのデザインがエストニアの国旗に似ているな~とふと気が付いて、現在に至ります。 author: member +category: tech tags: [advent-calendar, python, open-cv] --- diff --git a/src/content/blogs/17.md b/src/content/blogs/17.md index 2768b66..467c06a 100644 --- a/src/content/blogs/17.md +++ b/src/content/blogs/17.md @@ -7,6 +7,7 @@ description: | そして部室に朝が来ました。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/19.md b/src/content/blogs/19.md index ac20939..a331deb 100644 --- a/src/content/blogs/19.md +++ b/src/content/blogs/19.md @@ -7,6 +7,7 @@ description: | 部会では、OUCC内で共有すべき情報を報告したり、イベントなどの連絡をしたりする会議です。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/2023-12-18-td4.md b/src/content/blogs/2023-12-18-td4.md index 1f8c1ef..8b920c4 100644 --- a/src/content/blogs/2023-12-18-td4.md +++ b/src/content/blogs/2023-12-18-td4.md @@ -2,6 +2,7 @@ title: TD4エミュレータで遊ぶ description: 「CPUの創りかた」で出てきたTD4エミュレータで機械語を書いて遊ぶのが楽しかったので紹介します。 author: talkie +category: tech tags: - advent-calendar --- diff --git a/src/content/blogs/2023_12_24.md b/src/content/blogs/2023_12_24.md index 65aee4c..118c102 100644 --- a/src/content/blogs/2023_12_24.md +++ b/src/content/blogs/2023_12_24.md @@ -2,6 +2,7 @@ title: 戯言シリーズの新刊について語る description: 2023年にまさかの新刊が刊行された戯言シリーズについて(早口で)語ります tags: [advent-calendar] +category: other author: ryota --- # 初めに diff --git a/src/content/blogs/21.md b/src/content/blogs/21.md index 0e8fba2..7b2d84c 100644 --- a/src/content/blogs/21.md +++ b/src/content/blogs/21.md @@ -7,6 +7,7 @@ description: | 打ち上げでは、唐揚げ5kgと焼き鳥300本を食べました。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/227.md b/src/content/blogs/227.md index 1491488..4da676d 100644 --- a/src/content/blogs/227.md +++ b/src/content/blogs/227.md @@ -11,6 +11,7 @@ description: | } このif文は必要でしょうか?こんなことを聞くからには、もちろんNoです。ただ、if文が必要ないというのは語弊があります。正確には、処理をif文で囲む必要はありません。次のメソッドは全く同じ動作をします。 author: member +category: tech tags: [csharp, for-beginer] --- diff --git a/src/content/blogs/234.md b/src/content/blogs/234.md index 5bb5e33..b6a0a4d 100644 --- a/src/content/blogs/234.md +++ b/src/content/blogs/234.md @@ -6,6 +6,7 @@ description: | 新入生へ向けてのアドベントカレンダーということで、今回はここ数年でこの クラブ が行った活動を、私の知りうる範囲で振り返りたいと思います。 author: member +category: club tags: [advent-calendar] --- diff --git a/src/content/blogs/24.md b/src/content/blogs/24.md index 526da74..fc40116 100644 --- a/src/content/blogs/24.md +++ b/src/content/blogs/24.md @@ -7,6 +7,7 @@ description: | 4人で寿司屋に行ったのですが、フードファイターの鯖さんは全員分の代金である6966円中の4160円も食べたそうです。うん、すごいね。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/26.md b/src/content/blogs/26.md index 6c2c99a..62c3293 100644 --- a/src/content/blogs/26.md +++ b/src/content/blogs/26.md @@ -7,6 +7,7 @@ description: | †一回生による叛逆の歴史はここからはじまる† author: member +category: club tags: [] --- diff --git a/src/content/blogs/28.md b/src/content/blogs/28.md index 18d3212..65b8d68 100644 --- a/src/content/blogs/28.md +++ b/src/content/blogs/28.md @@ -5,6 +5,7 @@ description: | Posted by OUCC (旧)会計監査係(2018 12/14) クリスマスまで残すところあと2週間となりましたが、いかがお過ごしでしょうか? author: member +category: club tags: [] --- diff --git a/src/content/blogs/282.md b/src/content/blogs/282.md index 025b1c7..8f90543 100644 --- a/src/content/blogs/282.md +++ b/src/content/blogs/282.md @@ -5,6 +5,7 @@ description: | 私が受けた院試は、大阪大学の大学院情報科学研究科というところで、8月1日と2日の二日に分けて行われました。 author: member +category: other tags: [] --- diff --git a/src/content/blogs/286.md b/src/content/blogs/286.md index 141ff8a..9f3d90f 100644 --- a/src/content/blogs/286.md +++ b/src/content/blogs/286.md @@ -10,6 +10,7 @@ description: | Facebook のいずれかのアカウントが必要になりますので、あらかじめご準備をお願いします。 author: member +category: club tags: [advent-calendar] --- diff --git a/src/content/blogs/30.md b/src/content/blogs/30.md index ae8458d..39aadc8 100644 --- a/src/content/blogs/30.md +++ b/src/content/blogs/30.md @@ -5,6 +5,7 @@ description: | Posted by OUCC 旧webサーバ係(2018 12/26) 本日、OUCC部内にてクリスマスパーティが行われました!とはいっても、OUCCでは恒例の、たこ焼きを作ってそれをみんなで食べる、所謂「タコパ」ですけど(笑) author: member +category: club tags: [] --- diff --git a/src/content/blogs/303.md b/src/content/blogs/303.md index 513417a..15ee1f6 100644 --- a/src/content/blogs/303.md +++ b/src/content/blogs/303.md @@ -3,6 +3,7 @@ title: SHARP Brain 用アプリケーションの作成方法 description: | この記事は OUCC Advent Calendar 2020 の 20 日目の記事です。OS として Windows Embedded CE 6.0、CPU に ARM926EJ-S (Armv5TEJ) を搭載する電子辞書 SHARP Brain 用アプリケーションの作成方法を解説します。 author: watamario15 +category: tech tags: [advent-calendar, electronic-dictionary, c-cpp] --- diff --git a/src/content/blogs/353.md b/src/content/blogs/353.md index 27cfac8..e59a75e 100644 --- a/src/content/blogs/353.md +++ b/src/content/blogs/353.md @@ -3,6 +3,7 @@ title: 昔作ったゲームを振り返る description: | 僕が初めて作ったゲームです。javascriptとhtmlで作りました。 author: member +category: tech tags: [advent-calendar, javascript] --- diff --git a/src/content/blogs/362.md b/src/content/blogs/362.md index 60cf64d..a0cc927 100644 --- a/src/content/blogs/362.md +++ b/src/content/blogs/362.md @@ -3,6 +3,7 @@ title: GAN使用のアプリ制作における雑記 description: |  GANを3か月前から学び始めたんですが、OUCCのAdvent Calendarの24日目?の記事を書くに当たって、自分が今までやったことがない技術を使用しようと思いまして、StackGANというGANを使用したアプリを制作しようとしました。具体的には大阪大学生協食堂の料理の写真とその料理名を学習して、入力された架空の料理名から架空の料理画像を生成するアプリです。結論から言いますと上手くいかなかったのですが、その間に得られた知見などの心に移りゆくよしなし事をそこはかとなく書きつくりました。 author: member +category: tech tags: [] --- diff --git a/src/content/blogs/391.md b/src/content/blogs/391.md index d33f3c5..26668a5 100644 --- a/src/content/blogs/391.md +++ b/src/content/blogs/391.md @@ -3,6 +3,7 @@ title: dotfiles を作ってみた description: | dotfiles とは、簡単に言うと環境構築を秒速で終わらせるためのファイル群です。UNIX 系のソフトウェアの多くはテキストファイルを設定ファイルとして扱うものが多く、それをカスタマイズすることで自分好みに設定することができるようになっています。ここで、そのファイル群とそれを適切に配置したりその他の設定をしたりするスクリプトもセットで GitHub に上げておけば、新しい環境でも git clone してスクリプトを走らせるだけで即座に自分の環境が出来上がる、という訳です。 author: watamario15 +category: tech tags: [shell] --- diff --git a/src/content/blogs/401.md b/src/content/blogs/401.md index 5ca4f00..ab5f51c 100644 --- a/src/content/blogs/401.md +++ b/src/content/blogs/401.md @@ -3,6 +3,7 @@ title: 合格おめでとうございます! description: | 令和3年度大阪大学一般入試を突破された新入生の皆様、合格おめでとうございます! author: member +category: club tags: [] --- diff --git a/src/content/blogs/408.md b/src/content/blogs/408.md index ac57105..742e0aa 100644 --- a/src/content/blogs/408.md +++ b/src/content/blogs/408.md @@ -3,6 +3,7 @@ title: 現役生と卒業生で LT 会を開催 description: | OUCC の卒業生と現役生との交流会を兼ねて卒業生による LT 会を開催しました。内容は社会人としての経験や大学院での研究経験、また趣味で行っているプログラミングや電子回路技術の紹介といった様々な貴重なお話をして頂きました。OUCC では、今後もこのような卒業生との交流会の機会を作っていけたらと思っております。ご協力くださった卒業生の皆様、ありがとうございました! author: watamario15 +category: club tags: [] --- diff --git a/src/content/blogs/41.md b/src/content/blogs/41.md index 9526877..742821a 100644 --- a/src/content/blogs/41.md +++ b/src/content/blogs/41.md @@ -9,6 +9,7 @@ description: | この年は、天皇陛下様の即位やそれに伴う様々なイベントなど、例年にはない事がたくさんあると思いますが頑張って乗り越えていきたいとおもいます。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/413.md b/src/content/blogs/413.md index c13ebfd..5020540 100644 --- a/src/content/blogs/413.md +++ b/src/content/blogs/413.md @@ -3,6 +3,7 @@ title: C/C++ の講習会を開催しました description: | 本日 4/18(日) に C 講習会、その準備編として昨日 4/17(土) に C++ 講習会を行いました。C は広く利用される非常に有名な言語で大学の講義で1年から早速学びますが、プログラミング初学者にとっては修得が難しいものとなっており、それに向けた助けとなることを目指した内容としました。講義の予習として、また、講義が理解できなかったときの参考書代わりとして、ご活用いただければ幸いです! author: watamario15 +category: tech tags: [workshop, c-cpp] --- diff --git a/src/content/blogs/423.md b/src/content/blogs/423.md index 926b0d9..964f6b5 100644 --- a/src/content/blogs/423.md +++ b/src/content/blogs/423.md @@ -3,6 +3,7 @@ title: ゲーム制作と Web の講習会を行いました description: | 昨日 4/24(土) に Unity を用いた 2D ゲーム制作の講習会、そして本日 4/25(日) に HTML/CSS/JavaScript を用いた Web サイト制作の講習会を、Discord 新歓サーバーでオンラインで行いました。Unity では、スクリプトの書き方や当たり判定の実装、シーンの作成や遷移、そして Unity の各種機能の使い方など、Unity 初心者が身に着けるべき内容を丁寧に説明しています。Web サイト制作では、まずは HTML で Web サイト制作への導入を行い、CSS で背景や文字などのスタイルを変更できることを確認したのち、最後に JavaScript でインタラクティブな Web サイトを実現できることを学びました。 author: watamario15 +category: tech tags: [workshop, unity, javascript] --- diff --git a/src/content/blogs/436.mdx b/src/content/blogs/436.mdx index 89ba8b9..7725c0a 100644 --- a/src/content/blogs/436.mdx +++ b/src/content/blogs/436.mdx @@ -3,6 +3,7 @@ title: Blender と競プロの講習会を開催 description: | 5/8 (土) に Blender による 3D モデリング、5/9 (日) に競技プログラミングの講習会を Discord 新歓サーバーを用いてオンラインで実施しました。Blender では、約 90 分間という短時間で、VRChat で使える Avatar 制作の流れを学びました。短時間制作であることからポリゴンや着色などが荒くなっていますが、それでも様々な必須技術を学ぶことができました。阪大競技プログラミング部 RAINBOU の部長を務めるこたまねぎ氏に、特別に講習会を開いていただきました。テーマは「全探索攻略」で、バグを減らすためのマクロ定義や文字列化 bit 全探索の活用、また C++ ライブラリの活用など、競プロに最前線で取り組んでいる方による様々なノウハウやアドバイスなどはとても新鮮で、競プロをそれなりにやっている受講者にとっても新たな発見がありました。 author: watamario15 +category: tech tags: [workshop, blender, c-cpp] --- import Image from "@/components/common/Image.astro" diff --git a/src/content/blogs/452.md b/src/content/blogs/452.md index 981a12c..27be141 100644 --- a/src/content/blogs/452.md +++ b/src/content/blogs/452.md @@ -3,6 +3,7 @@ title: Git と OOP の講習会を開催 description: | 5/15 (土) に SourceTree と GitHub による Git 講習会、5/16 (日) に TypeScript を用いたオブジェクト指向プログラミング (OOP) の講習会を Discord を用いてオンラインで開催しました。Git は分散型バージョン管理システムで、近年のソフトウェア開発で頻繁に利用されるほか、複数人開発では必須ツールとなっています。仕組みが複雑で初心者にはとっつきにくいのが難点ですが、使いこなせればソフトウェア開発を力強くサポートしてくれるとても便利なツールです。オブジェクト指向は「関数と型の関連付け」と「抽象化」を目的としたもので、「カプセル化」「継承」「多相」が主な特徴となります。近年はソフトウェアのメンテナンス性を重視する傾向が強まってきており、そういった点で合理的な OOP が広まっています。また、この考え方を取り入れた言語も数多く存在します。しかし、これもまた初学者にはとっつきにくいものであることから、今回は入門編としてその目的や定義を紹介したのち、TypeScript を題材として実際の実装例を確認しました。 author: watamario15 +category: tech tags: [workshop, git] --- diff --git a/src/content/blogs/465.md b/src/content/blogs/465.md index 767e5b9..608496b 100644 --- a/src/content/blogs/465.md +++ b/src/content/blogs/465.md @@ -3,6 +3,7 @@ title: Python 講習会を開催 description: | 5/22 (土) に Python 3 の講習会をオンライン開催しました。Python は C/C++ のような言語よりも手軽に扱えることから多くの人に好まれている言語です。また、統計処理や機械学習系のライブラリが充実しており、その分野でも広く使われています。今回の講習会では、Python が持つ基本的な機能を網羅的に解説し、AtCoder Beginners Selection で演習することで、Python を活用できるようになることを目標としました。 author: watamario15 +category: tech tags: [workshop, python] --- diff --git a/src/content/blogs/487.mdx b/src/content/blogs/487.mdx index aba03e1..4026aee 100644 --- a/src/content/blogs/487.mdx +++ b/src/content/blogs/487.mdx @@ -7,6 +7,7 @@ description: | 演出関連の気づきを、自分用にメモするくらいの気持ちで書いていきます。 これは特別演出の勉強などはしていない、一般趣味クリエイターによる記事です。読者としてポートフォリオを作るような方々ではなく、一般人を想定しています。 author: member +category: tech tags: [advent-calendar] --- import Image from "@/components/common/Image.astro" diff --git a/src/content/blogs/490.md b/src/content/blogs/490.md index 7e4de8c..f951941 100644 --- a/src/content/blogs/490.md +++ b/src/content/blogs/490.md @@ -3,6 +3,7 @@ title: テトリスの電子辞書移植 description: | これは OUCC Advent Calendar 2021 の 14 日目の記事です。OB の先輩が開発したテトリスプログラムを、SHARP 社製電子辞書 Brain で動くように移植した過程を紹介しています。 author: watamario15 +category: tech tags: [advent-calendar, electronic-dictionary, c-cpp] --- diff --git a/src/content/blogs/512.md b/src/content/blogs/512.md index be6b105..42babfa 100644 --- a/src/content/blogs/512.md +++ b/src/content/blogs/512.md @@ -7,6 +7,7 @@ description: | この記事は、OUCC Advent Calendar 2021の15日目の記事です(投稿日がずれているのは気にしない)。前回はwatamario15さんのテトリスの電子辞書移植でした。 またこの記事はUnityのShaderのGrabPassに関する内容です。 author: member +category: tech tags: [advent-calendar, unity] --- diff --git a/src/content/blogs/522.md b/src/content/blogs/522.md index e89e1f1..6f5a6a1 100644 --- a/src/content/blogs/522.md +++ b/src/content/blogs/522.md @@ -4,6 +4,7 @@ description: | はじめに この記事は、OUCC Advent Calendar 2021の18日目の記事です。前回はAreiさんのハンドヘルドコンピュータの製作と展望でした。 今回はPower Pointのスライドショーを動画に変換しようとしてみました。 author: member +category: tech tags: [advent-calendar] --- diff --git a/src/content/blogs/524.mdx b/src/content/blogs/524.mdx index d2daecf..d196d0a 100644 --- a/src/content/blogs/524.mdx +++ b/src/content/blogs/524.mdx @@ -7,6 +7,7 @@ description: | 吐く息も白くなってきて、いよいよ令和も3年目を終え、はや4年目を迎えることに驚きを隠せておりません。 author: member +category: other tags: [advent-calendar] --- import Image from "@/components/common/Image.astro" diff --git a/src/content/blogs/548.mdx b/src/content/blogs/548.mdx index 5d48899..45f4476 100644 --- a/src/content/blogs/548.mdx +++ b/src/content/blogs/548.mdx @@ -11,6 +11,7 @@ description: | 調べものの際によく出てくるブログをまねる感じで書くつもりです。 暖かい目でご覧ください。 author: member +category: tech tags: [advent-calendar, blender] --- import Image from "@/components/common/Image.astro" diff --git a/src/content/blogs/567.mdx b/src/content/blogs/567.mdx index e00620e..e6452bd 100644 --- a/src/content/blogs/567.mdx +++ b/src/content/blogs/567.mdx @@ -7,6 +7,7 @@ description: | 今回は、Unityでゲーム制作しているときに個人的にお世話になったサイトを紹介させていただきたいと思います。 author: member +category: tech tags: [advent-calendar, unity, mixamo] --- diff --git a/src/content/blogs/57.md b/src/content/blogs/57.md index 2d5ea2d..062cd65 100644 --- a/src/content/blogs/57.md +++ b/src/content/blogs/57.md @@ -7,6 +7,7 @@ description: | うちの学科は、どうもパソコンをいじっていても単位はくれないようです泣。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/590.mdx b/src/content/blogs/590.mdx index 85ed109..0edb0f5 100644 --- a/src/content/blogs/590.mdx +++ b/src/content/blogs/590.mdx @@ -6,6 +6,7 @@ description: | 今回はUnityで2Dゲームをゼロから作りかつ記事を書くという無謀なRTAを行います。多分これが一番早いとは思いません。 author: member +category: tech tags: [advent-calendar, unity] --- import Image from "@/components/common/Image.astro" diff --git a/src/content/blogs/611.mdx b/src/content/blogs/611.mdx index 54aaffd..7032cb2 100644 --- a/src/content/blogs/611.mdx +++ b/src/content/blogs/611.mdx @@ -5,6 +5,7 @@ description: | 私が書いた記事は、前回はGANについて、前々回はOpenCVについて、前々々回はUnityについて書くといったように毎回分野を変えて記述しているので、今回はLive2Dについて記述していこうと思います。 author: member +category: tech tags: [advent-calendar] --- import Image from "@/components/common/Image.astro" diff --git a/src/content/blogs/659.mdx b/src/content/blogs/659.mdx index ccccc7f..6e03d8c 100644 --- a/src/content/blogs/659.mdx +++ b/src/content/blogs/659.mdx @@ -7,6 +7,7 @@ description: | まず、shellとはざっくりいうと自身がPCに対して行ってもらいたい命令をOS対して出すプログラムのことです。そしてshellにはいくつか種類があり、たとえばbash,tcsh,zshなどがあります。それらには当然のように機能の面において違いがあります。今回話そうとしているfishとはそのようなshellのうちの一つです。 author: member +category: tech tags: [advent-calendar, shell] --- import Image from "@/components/common/Image.astro" diff --git a/src/content/blogs/69.md b/src/content/blogs/69.md index 810c8f3..0945b58 100644 --- a/src/content/blogs/69.md +++ b/src/content/blogs/69.md @@ -7,6 +7,7 @@ description: | 宣伝なのですが、入学されましたら是非OUCCに見学に来てください!うちの者が新歓説明回すっぽかしたので新歓のための教室取れませんでした(^^)どうしてくれよう。後々見学会等々の情報を掲載しますのでそれまでお待ちくだされ。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/73.md b/src/content/blogs/73.md index ca84817..f4c3fae 100644 --- a/src/content/blogs/73.md +++ b/src/content/blogs/73.md @@ -7,6 +7,7 @@ description: | そもそもJavaScriptのalertとは、webブラウザにおいてクライアントに対しメッセージを発信する機能である。そしてこれはJavaScript学習者が最初期に学ぶものである。したがって、alert機能による不正プログラムを補導レベルとみなした県警は、JavaScriptの触りの部分の知識すらままならない可能性もあったのである。 author: member +category: tech tags: [javascript] --- diff --git a/src/content/blogs/76.md b/src/content/blogs/76.md index 15be35f..5817356 100644 --- a/src/content/blogs/76.md +++ b/src/content/blogs/76.md @@ -9,6 +9,7 @@ description: | このサイトは我々の活動の様子を書いていきますので、部活の雰囲気を掴む目安としてみてください! author: member +category: club tags: [] --- diff --git a/src/content/blogs/775.md b/src/content/blogs/775.md index a1da8e8..0d7ae27 100644 --- a/src/content/blogs/775.md +++ b/src/content/blogs/775.md @@ -7,6 +7,7 @@ description: | ~あらすじ~ 実は既に自宅にNASで若干サーバーっぽい物構築しているのでそれでいいかなと思ってました。 author: member +category: tech tags: [oracle-cloud] --- diff --git a/src/content/blogs/79.md b/src/content/blogs/79.md index d56124d..5230006 100644 --- a/src/content/blogs/79.md +++ b/src/content/blogs/79.md @@ -7,6 +7,7 @@ description: | 講習会とは、部員が自身の得意とする分野(競プロだったり開発だったり)の講習を部員に対して開くというものです。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/796.md b/src/content/blogs/796.md index be5849e..2a455a9 100644 --- a/src/content/blogs/796.md +++ b/src/content/blogs/796.md @@ -2,6 +2,7 @@ title: 初学者のためのC# author: miyaji description: 初心者向けの基本的なC#の文法を紹介します +category: tech tags: - csharp - for-beginer diff --git a/src/content/blogs/8.md b/src/content/blogs/8.md index 059f4c6..ccd4545 100644 --- a/src/content/blogs/8.md +++ b/src/content/blogs/8.md @@ -5,6 +5,7 @@ description: | Posted by OUCC webサーバ係 (2018 9/24) 初めまして!私達OUCCはこの度、幣部の情報を対外に発信するという意味合いを兼ねてブログをはじめました! author: member +category: club tags: [] --- diff --git a/src/content/blogs/806.md b/src/content/blogs/806.md index e4eca5f..57c5966 100644 --- a/src/content/blogs/806.md +++ b/src/content/blogs/806.md @@ -8,6 +8,7 @@ description: | ~プロローグ?~ ~3Dモデル制作以前 去年のハッカソンでは、何かと不満を言われるE-Learningと和解しようという企画にて、自然言語で会話できるBotを制作しました。その過程で会話相手として、E-Learningの化身、angEL-reinちゃん(名前はE-Learningのアナグラムから)が生まれました。 +category: tech tags: [advent-calendar, csharp, unity, vrm, vrchat] --- diff --git a/src/content/blogs/82.md b/src/content/blogs/82.md index 2c25d70..c9c2ca9 100644 --- a/src/content/blogs/82.md +++ b/src/content/blogs/82.md @@ -11,6 +11,7 @@ description: | そのシステムが本日, 部員有志により復活することができました! author: member +category: club tags: [] --- diff --git a/src/content/blogs/835.md b/src/content/blogs/835.md index a7520fb..6e6d348 100644 --- a/src/content/blogs/835.md +++ b/src/content/blogs/835.md @@ -3,6 +3,7 @@ title: OUCC の 3 年間を振り返る [前編] description: | これは OUCC Advent Calendar 2022 の 1 日目の記事です。私が在籍していたこの 3 年間、OUCC がどのような事態に陥り、変遷を遂げてきたかをまとめています。どこの団体でもそうだと思いますが、OUCC も例に漏れず、色々な危機に瀕することとなりました。前編では 2020 年度を扱っています。 author: watamario15 +category: club tags: [advent-calendar] --- diff --git a/src/content/blogs/870.md b/src/content/blogs/870.md index 50271eb..0d5fa26 100644 --- a/src/content/blogs/870.md +++ b/src/content/blogs/870.md @@ -3,6 +3,7 @@ title: OUCC の 3 年間を振り返る [中編] description: | これは OUCC Advent Calendar 2022 の 2 日目の記事です。私が在籍していたこの 3 年間、OUCC がどのような事態に陥り、変遷を遂げてきたかをまとめています。どこの団体でもそうだと思いますが、OUCC も例に漏れず、色々な危機に瀕することとなりました。中編では 2021 年度を扱っています。 author: watamario15 +category: club tags: [advent-calendar] --- diff --git a/src/content/blogs/871.md b/src/content/blogs/871.md index e54cb8d..c22a008 100644 --- a/src/content/blogs/871.md +++ b/src/content/blogs/871.md @@ -3,6 +3,7 @@ title: OUCC の 3 年間を振り返る [後編] description: | これは OUCC Advent Calendar 2022 の 3 日目の記事です。私が在籍していたこの 3 年間、OUCC がどのような事態に陥り、変遷を遂げてきたかをまとめています。どこの団体でもそうだと思いますが、OUCC も例に漏れず、色々な危機に瀕することとなりました。後編では 2022 年度を扱っています。 author: watamario15 +category: club tags: [advent-calendar] --- diff --git a/src/content/blogs/875.md b/src/content/blogs/875.md index 95fdad3..fc4ca2e 100644 --- a/src/content/blogs/875.md +++ b/src/content/blogs/875.md @@ -3,6 +3,7 @@ title: Arduino Uno R3 で Japanino の水晶発振子を有効化する description: | これは OUCC Advent Calendar 2022 の 4 日目の記事です。雑誌「大人の科学」の付録マイコン Japanino について、水晶発振子が搭載されているのに使われていないという情報を発見し、実験 B の授業で貸し出された Arduino Uno R3 を用いて fuse ビットを書き換えて有効化した過程を説明しています。 author: watamario15 +category: tech tags: [advent-calendar, arduino] --- diff --git a/src/content/blogs/879.md b/src/content/blogs/879.md index a496b01..9e2da8f 100644 --- a/src/content/blogs/879.md +++ b/src/content/blogs/879.md @@ -13,6 +13,7 @@ description: | 歌の調整をする(人間でも合成音声でも) 普通の動画で音ハメ author: member +category: other tags: [advent-calendar, mad, reaper] --- diff --git a/src/content/blogs/890.md b/src/content/blogs/890.md index f85f67d..9ddc2f0 100644 --- a/src/content/blogs/890.md +++ b/src/content/blogs/890.md @@ -9,6 +9,7 @@ description: | 最近の(と言っても.NET6とかまでの話ですが)C#にはいろいろ機能が追加されていまして、Hello Worldもいろいろな書き方が出来るようになっています。 dotnet new consoleして出来たProgram.csに author: member +category: tech tags: [csharp, advent-calendar, dotnet] --- diff --git a/src/content/blogs/90.md b/src/content/blogs/90.md index 09f2844..adb3da1 100644 --- a/src/content/blogs/90.md +++ b/src/content/blogs/90.md @@ -8,6 +8,7 @@ description: | ちなみに我がOUCCでは、なんと手違いにより部室をとれないというびっくりするような事態が起きたため、部に関する説明は部室にて行うことになっております汗。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/901.mdx b/src/content/blogs/901.mdx index b620965..f8b101d 100644 --- a/src/content/blogs/901.mdx +++ b/src/content/blogs/901.mdx @@ -7,6 +7,7 @@ description: | この記事ではゲームの自動化という内容を扱っています。これはゲーム開発者が想定していないだろう遊び方ですが、やっていることはプレイヤーの操作をプログラムに代替させているだけです。リソースを違法に爆増させるような類のチートではないのでお目こぼしください。 また、このゲームをやったことがないと何言ってるのか分からない部分も多いとは思いますが、そういうものだと思ってください。 author: member +category: tech tags: - python - arduino diff --git a/src/content/blogs/908.md b/src/content/blogs/908.md index bee7a28..19609a0 100644 --- a/src/content/blogs/908.md +++ b/src/content/blogs/908.md @@ -10,6 +10,7 @@ description: | 大学の講義というものは、工学部・基礎工学部に限らずプログラムを書かされることは間々あります。 そういったときに、特に言語を指定されなければ自分の慣れている言語で書きたいものです。 author: member +category: tech tags: [csharp, advent-calendar, dotnet] --- diff --git a/src/content/blogs/918.md b/src/content/blogs/918.md index 17a6a23..aa69cf4 100644 --- a/src/content/blogs/918.md +++ b/src/content/blogs/918.md @@ -9,6 +9,7 @@ description: | もともとは「オフサイドってなんやろ」「4-4-2とは?」というレベルの知識で、選手に関しても長友選手や AbemaTV で解説を務めた本田圭佑などの時代しか知りませんでした。解説や Twitter のつぶやきを理解するためにルールや戦略論(フォーメーションなど)を調べていきサッカーの奥深さに少し気づけたかなと思います。 author: member +category: tech tags: [advent-calendar, markdown] --- 執筆者:yuyu diff --git a/src/content/blogs/924.md b/src/content/blogs/924.md index bef5641..6bb2963 100644 --- a/src/content/blogs/924.md +++ b/src/content/blogs/924.md @@ -2,6 +2,7 @@ title: ASP.NET Core を使ってREST APIを作ってみる description: これは OUCC Advent Calendar 2022 の17日目の記事です。ここではTodoアプリのバックエンドを想定して簡単な REST APIを作ってみようと思います author: miyaji +category: tech tags: - csharp - asp.net diff --git a/src/content/blogs/93.md b/src/content/blogs/93.md index ee81113..b6de44b 100644 --- a/src/content/blogs/93.md +++ b/src/content/blogs/93.md @@ -5,6 +5,7 @@ description: | さて、やっと一週間が終わりました。新しいセメスターになり、久しぶりの講義に苦労していましたが、何とか乗り越えることが出来たという感じです汗。昨日は多くの新入生が見学に来て、説明会などを行いました。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/935.mdx b/src/content/blogs/935.mdx index b0a641b..e8b56d1 100644 --- a/src/content/blogs/935.mdx +++ b/src/content/blogs/935.mdx @@ -5,6 +5,7 @@ description: | はじめまして、ciffelia です。今日は私が開発している Discord 読み上げ Bot「Koe」と Koe で採用している技術をご紹介させていただきます。 author: ciffelia +category: tech tags: [advent-calendar, rust, discord-bot, docker] --- import Image from '@/components/common/Image.astro' diff --git a/src/content/blogs/974.md b/src/content/blogs/974.md index 70874ef..6f81412 100644 --- a/src/content/blogs/974.md +++ b/src/content/blogs/974.md @@ -4,6 +4,7 @@ description: |  この記事はOUCC Advent Calendar 2022の22日目の記事です。前回の記事はMedjedさんの「あなたの継承大丈夫?委譲で書き換えた方がよくない?」でした。  皆様初めまして。OUCC2回生の紅茶です。ciffeliaさんの記事はもちろん、他の部員の記事のクオリティの高さに圧倒されるばかりです。watamarioさんの「OUCC の 3 年間を振り返る [前編]」を見て、技術系だけでなく文化的な話をするのもありだと思ったので(私に技術力がないので)趣味の話をします。 author: member +category: other tags: [advent-calendar, fashion] ---  この記事は[OUCC Advent Calendar 2022](https://adventar.org/calendars/7859)の22日目の記事です。前回の記事はMedjedさんの[「あなたの継承大丈夫?委譲で書き換えた方がよくない?」](https://qiita.com/raedion/items/26f9f19e92d1826c9a7e)でした。 diff --git a/src/content/blogs/98.md b/src/content/blogs/98.md index a7b6bf0..fd74489 100644 --- a/src/content/blogs/98.md +++ b/src/content/blogs/98.md @@ -11,6 +11,7 @@ description: | 今後ともOUCC BLOGをよろしくお願いします。 author: member +category: club tags: [] --- diff --git a/src/content/blogs/988.md b/src/content/blogs/988.md index c534753..08ca92a 100644 --- a/src/content/blogs/988.md +++ b/src/content/blogs/988.md @@ -6,6 +6,7 @@ description: | 今回の記事のタイトルは「GolangでTello eduを遊んでみた?」です。 なぜ?がついているのでしょうか。考えてみてください。 author: member +category: tech tags: [advent-calendar, go, tello] --- diff --git a/src/content/blogs/powerpoint-whisper.md b/src/content/blogs/powerpoint-whisper.md index e5fb311..dac7837 100644 --- a/src/content/blogs/powerpoint-whisper.md +++ b/src/content/blogs/powerpoint-whisper.md @@ -2,6 +2,7 @@ title: PowerPointの音声ファイルをWhisperで文字起こししてみた description: PowerPointの音声ファイルをWhisperで文字起こししてみた tags: [advent-calendar, csharp, whisper, open-xml, power-point, transcribe] +category: tech author: aiueo-1234 --- これは、[OUCCアドベントカレンダー](https://adventar.org/calendars/9315)の22日目の記事です。Qiitaにもマルチ投稿しています。 diff --git a/src/content/config.ts b/src/content/config.ts index a9fd709..38daf0a 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -1,5 +1,11 @@ import { z, defineCollection, reference } from 'astro:content' +export const BlogCategoryMapping = { + tech: '技術', + club: 'クラブ', + other: '雑記', +} as const satisfies Record +export type BlogCategory = keyof typeof BlogCategoryMapping const blogsCollection = defineCollection({ type: 'content', schema: z.object({ @@ -11,6 +17,9 @@ const blogsCollection = defineCollection({ desc = desc.replaceAll('\r\n', ' ').replaceAll('\n', ' ') return desc.length > 100 ? desc.slice(0, 100) + '…' : desc }), + category: z.enum( + Object.keys(BlogCategoryMapping) as [BlogCategory, ...BlogCategory[]], + ), author: reference('authors'), tags: z.array(reference('tags')), }), @@ -42,25 +51,12 @@ const authorsCollection = defineCollection({ }), }) -export const TagCategoryEntries = [ - ['tech', '技術'], - ['club', 'クラブ'], - ['other', '雑記'], -] as const satisfies [string, string][] -export type TagCategory = (typeof TagCategoryEntries)[number][0] - const tagsCollection = defineCollection({ type: 'data', schema: ({ image }) => z.object({ name: z.string().min(1), description: z.string().optional(), - category: z.enum( - TagCategoryEntries.map(([category]) => category) as [ - TagCategory, - ...TagCategory[], - ], - ), links: z .array( z.object({ diff --git a/src/content/tags/advent-calendar.json b/src/content/tags/advent-calendar.json index b734075..b33d620 100644 --- a/src/content/tags/advent-calendar.json +++ b/src/content/tags/advent-calendar.json @@ -1,4 +1,3 @@ { - "name": "Advent Calendar", - "category": "club" + "name": "Advent Calendar" } diff --git a/src/content/tags/arduino.json b/src/content/tags/arduino.json index 7f5b8c5..def4a72 100644 --- a/src/content/tags/arduino.json +++ b/src/content/tags/arduino.json @@ -1,5 +1,4 @@ { "name": "Arduino", - "category": "tech", "image": "./arduino.svg" } diff --git a/src/content/tags/asp.net.json b/src/content/tags/asp.net.json index 502f64e..8d5a399 100644 --- a/src/content/tags/asp.net.json +++ b/src/content/tags/asp.net.json @@ -1,6 +1,5 @@ { "name": "ASP.NET Core", - "category": "tech", "image": "./dotnet.svg", "fullSizeImage": true, "links": [ diff --git a/src/content/tags/astro.json b/src/content/tags/astro.json index 914b075..c526a1d 100644 --- a/src/content/tags/astro.json +++ b/src/content/tags/astro.json @@ -1,5 +1,4 @@ { "name": "Astro", - "category": "tech", "image": "./astro.svg" } diff --git a/src/content/tags/automation.json b/src/content/tags/automation.json index 770e4af..fb5a1e8 100644 --- a/src/content/tags/automation.json +++ b/src/content/tags/automation.json @@ -1,4 +1,3 @@ { - "name": "自動化", - "category": "tech" + "name": "自動化" } diff --git a/src/content/tags/blender.json b/src/content/tags/blender.json index 3082a1f..6fc3062 100644 --- a/src/content/tags/blender.json +++ b/src/content/tags/blender.json @@ -1,4 +1,3 @@ { - "name": "Blender", - "category": "tech" + "name": "Blender" } diff --git a/src/content/tags/c-cpp.json b/src/content/tags/c-cpp.json index 7176711..d7f290a 100644 --- a/src/content/tags/c-cpp.json +++ b/src/content/tags/c-cpp.json @@ -1,6 +1,5 @@ { "name": "C/C++", - "category": "tech", "description": "C/C++ は低レイヤな処理を得意とし、高速に実行できるコンパイル型言語です。歴史が長く、また組み込み機器のような特殊な環境でも動作します。C と C++ は別の言語ですが、C++ が基本的には C を拡張した言語であるため、ひっくるめて C/C++ と呼ばれることがあります。", "image": "./cpp.svg", "links": [ diff --git a/src/content/tags/csharp.json b/src/content/tags/csharp.json index a62d2bb..757f830 100644 --- a/src/content/tags/csharp.json +++ b/src/content/tags/csharp.json @@ -1,6 +1,5 @@ { "name": "C#", - "category": "tech", "description": "C#は、最新のタイプ セーフなオブジェクト指向のプログラミング言語です。 開発者は C# を使用することにより、.NET で稼働する、安全かつ堅牢な多くの種類のアプリケーションを構築できます。", "image": "./csharp.svg", "links": [ diff --git a/src/content/tags/discord-bot.json b/src/content/tags/discord-bot.json index d03a59c..46de62c 100644 --- a/src/content/tags/discord-bot.json +++ b/src/content/tags/discord-bot.json @@ -1,5 +1,4 @@ { "name": "Discord Bot", - "category": "tech", "image": "./discord-bot.svg" } diff --git a/src/content/tags/docker.json b/src/content/tags/docker.json index 0e3d4e8..55fb880 100644 --- a/src/content/tags/docker.json +++ b/src/content/tags/docker.json @@ -1,5 +1,4 @@ { "name": "Docker", - "category": "tech", "image": "./docker.svg" } diff --git a/src/content/tags/dotnet.json b/src/content/tags/dotnet.json index 6dbed9b..217215a 100644 --- a/src/content/tags/dotnet.json +++ b/src/content/tags/dotnet.json @@ -1,7 +1,6 @@ { "name": ".NET", "description": ".NET は C#, F#, VB.NET などが実行可能な仮想マシンです。(JVM に似ています) クラスプラットフォームであるためどんな環境でも同じコードで実行できます。", - "category": "tech", "image": "./dotnet.svg", "fullSizeImage": true, "links": [ diff --git a/src/content/tags/electronic-dictionary.json b/src/content/tags/electronic-dictionary.json index 7f02daa..1ba3feb 100644 --- a/src/content/tags/electronic-dictionary.json +++ b/src/content/tags/electronic-dictionary.json @@ -1,7 +1,6 @@ { "name": "電子辞書", "description": "電子辞書を本来とは異なる目的で活用する、電子辞書ハック関係の記事群です。主に SHARP 社製カラー電子辞書シリーズの Brain を対象としています。SHARP 社とは無関係な非公式の内容であることに注意してください。", - "category": "tech", "image": "./electronic-dictionary.svg", "links": [ { diff --git a/src/content/tags/fashion.json b/src/content/tags/fashion.json index 686ef8e..df03442 100644 --- a/src/content/tags/fashion.json +++ b/src/content/tags/fashion.json @@ -1,4 +1,3 @@ { - "name": "ファッション", - "category": "other" + "name": "ファッション" } diff --git a/src/content/tags/for-beginer.json b/src/content/tags/for-beginer.json index 87207f8..96c626a 100644 --- a/src/content/tags/for-beginer.json +++ b/src/content/tags/for-beginer.json @@ -1,4 +1,3 @@ { - "name": "初心者向け", - "category": "tech" + "name": "初心者向け" } diff --git a/src/content/tags/git.json b/src/content/tags/git.json index fdd4ce4..fb3175e 100644 --- a/src/content/tags/git.json +++ b/src/content/tags/git.json @@ -1,5 +1,4 @@ { "name": "Git", - "category": "tech", "image": "./git.svg" } diff --git a/src/content/tags/go.json b/src/content/tags/go.json index 1f4b727..3897316 100644 --- a/src/content/tags/go.json +++ b/src/content/tags/go.json @@ -1,6 +1,5 @@ { "name": "Go", - "category": "tech", "image": "./go.svg", "links": [ { diff --git a/src/content/tags/javascript.json b/src/content/tags/javascript.json index 2e952b7..8ac873a 100644 --- a/src/content/tags/javascript.json +++ b/src/content/tags/javascript.json @@ -1,4 +1,3 @@ { - "name": "JavaScript", - "category": "tech" + "name": "JavaScript" } diff --git a/src/content/tags/mad.json b/src/content/tags/mad.json index 071288f..323302a 100644 --- a/src/content/tags/mad.json +++ b/src/content/tags/mad.json @@ -1,4 +1,3 @@ { - "name": "音MAD", - "category": "other" + "name": "音MAD" } diff --git a/src/content/tags/markdown.json b/src/content/tags/markdown.json index 69e5b66..596fe5a 100644 --- a/src/content/tags/markdown.json +++ b/src/content/tags/markdown.json @@ -1,5 +1,4 @@ { "name": "Markdown", - "category": "tech", "image": "./markdown.svg" } diff --git a/src/content/tags/mixamo.json b/src/content/tags/mixamo.json index db2911a..6859e66 100644 --- a/src/content/tags/mixamo.json +++ b/src/content/tags/mixamo.json @@ -1,4 +1,3 @@ { - "name": "Mixamo", - "category": "tech" + "name": "Mixamo" } diff --git a/src/content/tags/open-cv.json b/src/content/tags/open-cv.json index 8b1e9f2..daab72a 100644 --- a/src/content/tags/open-cv.json +++ b/src/content/tags/open-cv.json @@ -1,4 +1,3 @@ { - "name": "OpenCV", - "category": "tech" + "name": "OpenCV" } diff --git a/src/content/tags/open-xml.json b/src/content/tags/open-xml.json index e44fee1..1152812 100644 --- a/src/content/tags/open-xml.json +++ b/src/content/tags/open-xml.json @@ -1,4 +1,3 @@ { - "name": "OpenXML", - "category": "tech" + "name": "OpenXML" } diff --git a/src/content/tags/oracle-cloud.json b/src/content/tags/oracle-cloud.json index 81c8ca4..aa3ef64 100644 --- a/src/content/tags/oracle-cloud.json +++ b/src/content/tags/oracle-cloud.json @@ -1,4 +1,3 @@ { - "name": "Oracle Cloud", - "category": "tech" + "name": "Oracle Cloud" } diff --git a/src/content/tags/power-point.json b/src/content/tags/power-point.json index 75c69c3..98e4633 100644 --- a/src/content/tags/power-point.json +++ b/src/content/tags/power-point.json @@ -1,4 +1,3 @@ { - "name": "Power Point", - "category": "tech" + "name": "Power Point" } diff --git a/src/content/tags/python.json b/src/content/tags/python.json index f59b2d6..3c5e2df 100644 --- a/src/content/tags/python.json +++ b/src/content/tags/python.json @@ -1,7 +1,6 @@ { "name": "Python", "description": "Python はインタープリタ型の高水準汎用プログラミング言語です。", - "category": "tech", "image": "./python.svg", "links": [ { diff --git a/src/content/tags/reaper.json b/src/content/tags/reaper.json index a9b80a2..8005b80 100644 --- a/src/content/tags/reaper.json +++ b/src/content/tags/reaper.json @@ -1,4 +1,3 @@ { - "name": "REAPER", - "category": "tech" + "name": "REAPER" } diff --git a/src/content/tags/rest-api.json b/src/content/tags/rest-api.json index b392b93..f97cb5e 100644 --- a/src/content/tags/rest-api.json +++ b/src/content/tags/rest-api.json @@ -1,5 +1,4 @@ { "name": "REST API", - "category": "tech", "image": "./rest-api.svg" } diff --git a/src/content/tags/rust.json b/src/content/tags/rust.json index 00b8a73..0eed2f4 100644 --- a/src/content/tags/rust.json +++ b/src/content/tags/rust.json @@ -1,5 +1,4 @@ { "name": "Rust", - "category": "tech", "image": "./rust.svg" } diff --git a/src/content/tags/shell.json b/src/content/tags/shell.json index 87b7d96..479d084 100644 --- a/src/content/tags/shell.json +++ b/src/content/tags/shell.json @@ -1,6 +1,5 @@ { "name": "Shell", "description": "Shell はコンピュータを人間が操作するための UI の総称ですが、狭義には Bash や Zsh のようなコマンドラインインタプリタ(CLI)を指します。UI として利用することはもちろん、パイプやリダイレクトを用いた高度な情報処理や、shell script を用いた自動化など、広く活用されています。", - "category": "tech", "image": "./bash.svg" } diff --git a/src/content/tags/tello.json b/src/content/tags/tello.json index a85381a..21d3e81 100644 --- a/src/content/tags/tello.json +++ b/src/content/tags/tello.json @@ -1,7 +1,6 @@ { "name": "Tello", "description": "Tello、Tello eduはドローン界のAppleと言われるDJIと、CPU部分をIntelで共同開発し、Ryze Techから販売されているトイドローンです。", - "category": "tech", "links": [ { "url": "https://www.ryzerobotics.com/", diff --git a/src/content/tags/transcribe.json b/src/content/tags/transcribe.json index ef2640d..3e864a5 100644 --- a/src/content/tags/transcribe.json +++ b/src/content/tags/transcribe.json @@ -1,4 +1,3 @@ { - "name": "文字起こし", - "category": "tech" + "name": "文字起こし" } diff --git a/src/content/tags/typst.json b/src/content/tags/typst.json index c5de18e..f4f376e 100644 --- a/src/content/tags/typst.json +++ b/src/content/tags/typst.json @@ -1,6 +1,5 @@ { "name": "Typst", - "category": "tech", "image": "./typst.png", "fullSizeImage": true, "links": [ diff --git a/src/content/tags/unity.json b/src/content/tags/unity.json index 4830a78..e684b06 100644 --- a/src/content/tags/unity.json +++ b/src/content/tags/unity.json @@ -1,6 +1,5 @@ { "name": "Unity", - "category": "tech", "image": "./unity.svg", "links": [ { diff --git a/src/content/tags/vrchat.json b/src/content/tags/vrchat.json index d76cc78..a700cd6 100644 --- a/src/content/tags/vrchat.json +++ b/src/content/tags/vrchat.json @@ -1,4 +1,3 @@ { - "name": "VRChat", - "category": "tech" + "name": "VRChat" } diff --git a/src/content/tags/vrm.json b/src/content/tags/vrm.json index 2f734db..b3c91cb 100644 --- a/src/content/tags/vrm.json +++ b/src/content/tags/vrm.json @@ -1,4 +1,3 @@ { - "name": "VRM", - "category": "tech" + "name": "VRM" } diff --git a/src/content/tags/whisper.json b/src/content/tags/whisper.json index 4f74570..1567578 100644 --- a/src/content/tags/whisper.json +++ b/src/content/tags/whisper.json @@ -1,4 +1,3 @@ { - "name": "Whisper", - "category": "tech" + "name": "Whisper" } diff --git a/src/content/tags/winforms.json b/src/content/tags/winforms.json index 04dd70f..995a926 100644 --- a/src/content/tags/winforms.json +++ b/src/content/tags/winforms.json @@ -1,7 +1,6 @@ { "name": "Windows Forms", "description": "Windows Forms (WinForms) はWindows 用の豊富なデスクトップ クライアント アプリを作成する UI フレームワークです。C# のUIフレームワークの中では最も古いためとても安定してます。", - "category": "tech", "image": "./dotnet.svg", "fullSizeImage": true, "links": [ diff --git a/src/content/tags/workshop.json b/src/content/tags/workshop.json index 8605f95..f9c21b0 100644 --- a/src/content/tags/workshop.json +++ b/src/content/tags/workshop.json @@ -1,4 +1,3 @@ { - "name": "講習会", - "category": "club" + "name": "講習会" } diff --git a/src/pages/blog/[category].astro b/src/pages/blog/[category].astro new file mode 100644 index 0000000..9b8c3cc --- /dev/null +++ b/src/pages/blog/[category].astro @@ -0,0 +1,30 @@ +--- +import BlogLayout from '@/layouts/BlogLayout.astro' +import { getCollection } from 'astro:content' +import BlogListSection from '@/components/blog/BlogListSection.astro' +import { BlogCategoryMapping, type BlogCategory } from '@/content/config' +import BlogCategoryNav from '@/components/blog/BlogCategoryNav.astro' + +export function getStaticPaths() { + return (Object.keys(BlogCategoryMapping) as BlogCategory[]).map( + (category) => ({ + params: { category: `category=${category}` }, + props: { category }, + }), + ) +} + +const { category } = Astro.props + +const blogEntries = (await getCollection('blogs')).filter( + ({ data: { category: c } }) => c === category, +) +--- + + +
    + + + +
    +
    diff --git a/src/pages/blog/authors/[slug]/index.astro b/src/pages/blog/authors/[slug].astro similarity index 100% rename from src/pages/blog/authors/[slug]/index.astro rename to src/pages/blog/authors/[slug].astro diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro index 74010de..8812dbe 100644 --- a/src/pages/blog/index.astro +++ b/src/pages/blog/index.astro @@ -2,12 +2,15 @@ import BlogLayout from '@/layouts/BlogLayout.astro' import { getCollection } from 'astro:content' import BlogListSection from '@/components/blog/BlogListSection.astro' +import BlogCategoryNav from '@/components/blog/BlogCategoryNav.astro' const blogEntries = await getCollection('blogs') ---
    - + + +
    diff --git a/src/pages/blog/tags/[category].astro b/src/pages/blog/tags/[category].astro deleted file mode 100644 index d446235..0000000 --- a/src/pages/blog/tags/[category].astro +++ /dev/null @@ -1,15 +0,0 @@ ---- -import TagListPage from '@/components/blog/tag/TagListPage.astro' -import { TagCategoryEntries } from '@/content/config' - -export function getStaticPaths() { - return TagCategoryEntries.map(([category]) => ({ - params: { category }, - props: { category }, - })) -} - -const { category } = Astro.props ---- - - diff --git a/src/pages/blog/tags/index.astro b/src/pages/blog/tags/index.astro index aa2ac7d..8aae4da 100644 --- a/src/pages/blog/tags/index.astro +++ b/src/pages/blog/tags/index.astro @@ -1,5 +1,33 @@ --- -import TagListPage from '@/components/blog/tag/TagListPage.astro' +import BlogLayout from '@/layouts/BlogLayout.astro' +import { getCollection } from 'astro:content' +import { getTagStatistics } from '@/content/_blog-statistics' +import TagListSection from '@/components/blog/tag/TagListSection.astro' +const tagEntries = await getCollection('tags') +const statistics = await getTagStatistics() +const tags = tagEntries + .filter( + (tag) => + ![ + // ignore tags + 'dgv', + 'astro', + ].includes(tag.id), + ) + .map((tag) => ({ + ...tag, + articleCount: statistics[tag.id].length, + lastPostedTime: statistics[tag.id][0]?.time ?? 0, + })) +tags.sort((tag1, tag2) => + tag2.articleCount !== tag1.articleCount + ? tag2.articleCount - tag1.articleCount + : tag2.lastPostedTime - tag1.lastPostedTime, +) --- - + +
    + +
    +
    From 372c8c23d744923c213d7cfd3f21d75212e7f2e8 Mon Sep 17 00:00:00 2001 From: miyaji255 <84168445+miyaji255@users.noreply.github.com> Date: Mon, 5 Feb 2024 10:01:34 +0900 Subject: [PATCH 7/7] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AA=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/blog/tag/TagListSection.astro | 1 - src/components/blog/tag/TagSmallList.astro | 2 +- src/components/layout/nav/BlogNav.astro | 16 ++++++++++--- src/pages/blog/[category].astro | 17 ++----------- src/pages/blog/_IndexPage.astro | 25 ++++++++++++++++++++ src/pages/blog/index.astro | 15 ++---------- src/pages/blog/tags/[slug].astro | 4 +++- src/pages/blog/tags/index.astro | 1 + 8 files changed, 47 insertions(+), 34 deletions(-) create mode 100644 src/pages/blog/_IndexPage.astro diff --git a/src/components/blog/tag/TagListSection.astro b/src/components/blog/tag/TagListSection.astro index 6890ce4..04efdd3 100644 --- a/src/components/blog/tag/TagListSection.astro +++ b/src/components/blog/tag/TagListSection.astro @@ -13,6 +13,5 @@ const { title, tags } = Astro.props
    {title} -
    diff --git a/src/components/blog/tag/TagSmallList.astro b/src/components/blog/tag/TagSmallList.astro index f089743..da37cf9 100644 --- a/src/components/blog/tag/TagSmallList.astro +++ b/src/components/blog/tag/TagSmallList.astro @@ -14,7 +14,7 @@ const { blogCategory, tags } = Astro.props
  • {BlogCategoryMapping[blogCategory]}
  • diff --git a/src/components/layout/nav/BlogNav.astro b/src/components/layout/nav/BlogNav.astro index 8b280a4..dcdc9f6 100644 --- a/src/components/layout/nav/BlogNav.astro +++ b/src/components/layout/nav/BlogNav.astro @@ -22,7 +22,7 @@ const navList = [ ] as const satisfies { target: string; title: string; isHere: boolean }[] --- -
    +
    { navList.map(({ target, title, isHere }) => ( - {title} + + {title} + )) } diff --git a/src/pages/blog/[category].astro b/src/pages/blog/[category].astro index 9b8c3cc..abc546a 100644 --- a/src/pages/blog/[category].astro +++ b/src/pages/blog/[category].astro @@ -1,9 +1,6 @@ --- -import BlogLayout from '@/layouts/BlogLayout.astro' -import { getCollection } from 'astro:content' -import BlogListSection from '@/components/blog/BlogListSection.astro' import { BlogCategoryMapping, type BlogCategory } from '@/content/config' -import BlogCategoryNav from '@/components/blog/BlogCategoryNav.astro' +import IndexPage from './_IndexPage.astro' export function getStaticPaths() { return (Object.keys(BlogCategoryMapping) as BlogCategory[]).map( @@ -15,16 +12,6 @@ export function getStaticPaths() { } const { category } = Astro.props - -const blogEntries = (await getCollection('blogs')).filter( - ({ data: { category: c } }) => c === category, -) --- - -
    - - - -
    -
    + diff --git a/src/pages/blog/_IndexPage.astro b/src/pages/blog/_IndexPage.astro new file mode 100644 index 0000000..82ed27f --- /dev/null +++ b/src/pages/blog/_IndexPage.astro @@ -0,0 +1,25 @@ +--- +import BlogLayout from '@/layouts/BlogLayout.astro' +import { getCollection } from 'astro:content' +import BlogListSection from '@/components/blog/BlogListSection.astro' +import type { BlogCategory } from '@/content/config' +import BlogCategoryNav from '@/components/blog/BlogCategoryNav.astro' + +interface Props { + category: 'all' | BlogCategory +} + +const { category } = Astro.props + +const blogEntries = (await getCollection('blogs')).filter( + ({ data: { category: c } }) => category === 'all' || c === category, +) +--- + + +
    + + + +
    +
    diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro index 8812dbe..75a72ed 100644 --- a/src/pages/blog/index.astro +++ b/src/pages/blog/index.astro @@ -1,16 +1,5 @@ --- -import BlogLayout from '@/layouts/BlogLayout.astro' -import { getCollection } from 'astro:content' -import BlogListSection from '@/components/blog/BlogListSection.astro' -import BlogCategoryNav from '@/components/blog/BlogCategoryNav.astro' - -const blogEntries = await getCollection('blogs') +import IndexPage from './_IndexPage.astro' --- - -
    - - - -
    -
    + diff --git a/src/pages/blog/tags/[slug].astro b/src/pages/blog/tags/[slug].astro index 4ba0de2..1c371b5 100644 --- a/src/pages/blog/tags/[slug].astro +++ b/src/pages/blog/tags/[slug].astro @@ -26,6 +26,8 @@ const ogpPath = ( format: 'png', }) ).src + +const isShowAbout = tag.description || tag.links.length > 0 ---
    - + {isShowAbout && } b.data.tags.some((t) => t.id === id))} diff --git a/src/pages/blog/tags/index.astro b/src/pages/blog/tags/index.astro index 8aae4da..5206717 100644 --- a/src/pages/blog/tags/index.astro +++ b/src/pages/blog/tags/index.astro @@ -3,6 +3,7 @@ import BlogLayout from '@/layouts/BlogLayout.astro' import { getCollection } from 'astro:content' import { getTagStatistics } from '@/content/_blog-statistics' import TagListSection from '@/components/blog/tag/TagListSection.astro' + const tagEntries = await getCollection('tags') const statistics = await getTagStatistics() const tags = tagEntries