Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file removed .env
Empty file.
12 changes: 12 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Auto detect text files and normalize line endings to LF
* text=auto eol=lf

# Explicit binary files
*.png binary
*.jpg binary
*.jpeg binary
*.webp binary
*.gif binary
*.ico binary
*.pdf binary
*.ttf binary
4 changes: 2 additions & 2 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ jobs:
- run: pnpm install
- run: |
git fetch origin main
git diff origin/main..HEAD --name-only | xargs pnpm run validate-blog
git diff -z origin/main..HEAD --name-only | xargs -0 -r pnpm run validate-blog

update-blogmeta:
needs: [validate-blog]
Expand Down Expand Up @@ -108,7 +108,7 @@ jobs:
- name: Update Blog Meta
run: |
git fetch origin main
git diff origin/main..HEAD --name-status | xargs pnpm run update-blogmeta
git diff -z origin/main..HEAD --name-status | xargs -0 -r pnpm run update-blogmeta
- run: pnpm run format
- name: Git Commit
run: |
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,7 @@ dist

# macOS-specific files
.DS_Store

# Local env files
.env.local
.env.*.local
6 changes: 5 additions & 1 deletion astro.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ import RemarkLinkRewrite, {
import { getFormatUrl } from './src/utils/validateUrl'
import pagefind from './src/integrations/pagefind'

const { SITE_URL } = loadEnv(process.env.NODE_ENV!, process.cwd(), '')
const { SITE_URL } = loadEnv(
process.env.NODE_ENV ?? 'development',
process.cwd(),
'',
)

// https://astro.build/config
export default defineConfig({
Expand Down
3 changes: 3 additions & 0 deletions public/robots.txt
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
User-agent: *
Allow: /

Sitemap: https://oucc.org/sitemap-index.xml
Binary file removed src/assets/drwani_eng.png
Binary file not shown.
6 changes: 3 additions & 3 deletions src/components/workshop/Workshop2026Section.astro
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export const items: Item[] = [
circleNames: ['RAINBOU'],
place: '共C301',
description:
'OSや組み込みシステムなど、高速な処理が求められる分野で広く用いられる言語であるC/C++を扱います。阪大の競技プログラミングサークルであるRAINBOUが担当します',
'OSや組み込みシステムなど、高速な処理が求められる分野で広く用いられる言語であるC/C++を扱います。阪大の競技プログラミングサークルであるRAINBOUが担当します。',
},
{
date: date(5, 12, 18, 30),
Expand All @@ -69,7 +69,7 @@ export const items: Item[] = [
circleNames: ['RAINBOU'],
place: '共C405',
description:
'OSや組み込みシステムなど、高速な処理が求められる分野で広く用いられる言語であるC/C++を扱います。阪大の競技プログラミングサークルであるRAINBOUが担当します',
'OSや組み込みシステムなど、高速な処理が求められる分野で広く用いられる言語であるC/C++を扱います。阪大の競技プログラミングサークルであるRAINBOUが担当します。',
},
{
date: date(5, 19, 18, 30),
Expand All @@ -91,7 +91,7 @@ export const items: Item[] = [
circleNames: ['RAINBOU'],
place: '共C305',
description:
'OSや組み込みシステムなど、高速な処理が求められる分野で広く用いられる言語であるC/C++を扱います。阪大の競技プログラミングサークルであるRAINBOUが担当します',
'OSや組み込みシステムなど、高速な処理が求められる分野で広く用いられる言語であるC/C++を扱います。阪大の競技プログラミングサークルであるRAINBOUが担当します。',
},
{
date: date(5, 26, 18, 30),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ ESModuleとタイトルに書きましたがESModuleをバンドルできると

https://github.com/miyaji255/esbuild-plugin-gas-generator

https://www.npmjs.com/package/esbuild-plugin-gas-generator
[npm: esbuild-plugin-gas-generator](https://www.npmjs.com/package/esbuild-plugin-gas-generator)

## 使い方

Expand Down
2 changes: 1 addition & 1 deletion src/content/blogs/2024-12-20-whats-new-dotnet-9-for-wpf.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,4 +91,4 @@ Windowsにはライト・ダークテーマとは別にアクセントカラー

https://learn.microsoft.com/ja-jp/dotnet/desktop/wpf/whats-new/net90?view=netdesktop-9.0

https://github.com/dotnet/wpf/blob/add-fluent-usage-documentation/Documentation/docs/using-fluent.md
https://github.com/dotnet/wpf/blob/main/Documentation/docs/using-fluent.md
8 changes: 6 additions & 2 deletions src/content/blogs/2025-12-01-my-server-ansible-pull.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@ cron ではなく systemd の timer を使用して `ansible-pull` を定期実

構成としては、実行用の `.service` と、スケジュール用の `.timer` をペアで作成します。

```ini:my-server-ansible-pull.service
`my-server-ansible-pull.service`:
Comment thread
oxonium0215 marked this conversation as resolved.

```ini
[Unit]
Description=CI 成功コミットのみ反映する ansible-pull デプロイ

Expand All @@ -88,7 +90,9 @@ User=root
Group=root
```

```ini:my-server-ansible-pull.timer
`my-server-ansible-pull.timer`:

```ini
[Unit]
Description=定期デプロイチェック (my-server)

Expand Down
Binary file removed src/content/blogs/870/stuff (1).jpg
Binary file not shown.
Binary file removed src/content/blogs/870/stuff (2).jpg
Binary file not shown.
Binary file removed src/content/blogs/870/stuff (3).jpg
Binary file not shown.
4 changes: 2 additions & 2 deletions src/layouts/BaseLayout.astro
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ const composedTitle = title === undefined ? siteName : `${title} | ${siteName}`
<!doctype html>
<html lang="ja" prefix="og: https://ogp.me/ns/website#">
<head>
<GoogleAnalytics />
{import.meta.env.PROD && <GoogleAnalytics />}
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<meta name="description" content={description} />
<link rel="canonical" href={canonicalUrl} />
<link rel="icon" href="/favicon.webp" />
<link rel="icon" type="image/webp" href="/favicon.webp" />
<title>{composedTitle}</title>
<slot name="header" />
<meta property="og:url" content={canonicalUrl} />
Expand Down
6 changes: 5 additions & 1 deletion src/pages/blog/articles/[slug]/ogp.png.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,9 @@ export async function GET({
}: APIContext<Awaited<ReturnType<typeof getStaticPaths>>[number]['props']>) {
const author = await getEntry(blog.data.author)
const ogp = await createOgImage(blog.data.title, author.data.name)
return new Response(ogp)
return new Response(ogp, {
headers: {
'Content-Type': 'image/png',
},
})
}
2 changes: 1 addition & 1 deletion src/utils/validateUrl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export function getFormatUrl(base: string = import.meta.env.SITE) {

if (url!.endsWith('/')) return path
// ファイル拡張子
if (url!.match(/\.(a-zA-Z0-9)+$/)) return path
if (url!.match(/\.[a-zA-Z0-9]+$/)) return path

return hash ? `${url}/#${hash}` : url + '/'
}
Expand Down
8 changes: 7 additions & 1 deletion tools/update-blogmeta.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ type BlogMeta = {
postDate: string
updateDate?: string
}
const gitDiffs = validateArgs(chunkArray(process.argv.slice(2)))
const rawArgs = process.argv.slice(2).filter((arg) => arg !== '--')
const gitDiffs = validateArgs(chunkArray(rawArgs))
if (gitDiffs === null) process.exit(1)
updateBlogMeta(gitDiffs)

Expand Down Expand Up @@ -163,6 +164,11 @@ function predicateTargetFiles([status, file]: readonly [
}

function chunkArray(array: string[]) {
// 手動実行時など、引数に直接ファイルパスのみが渡された場合に対応
if (array.length > 0 && array.every((val) => val.startsWith('src/content'))) {
return array.map((filePath) => ['M', filePath])
}

const result: string[][] = []
let tempArray: string[] = []

Expand Down
2 changes: 1 addition & 1 deletion tools/validate-blog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ function validateBlog() {
} else if (parsedPath.dir === 'src/content/blog-metas') {
// ブログのメタ情報
if (parsedPath.ext === '.json') continue
} else if (parsedPath.dir.match(/^src\/content\/blogs\/[^(#/)]*$/)) {
} else if (parsedPath.dir.match(/^src\/content\/blogs\/[^/#]+$/)) {
// 画像
if (isImage(parsedPath.ext)) continue
} else if (
Expand Down
Loading