MyGo 云音乐
Go와 MyGo로 만든 서드파티 네이버 클라우드 뮤직 데스크톱 클라이언트
Mark Ayers의 사고·글쓰기, 시·이야기, AI·인지, 문명·정체성·윤리, 그리고 기술에 관한 짧고 명료한 에세이
Essays by Mark Ayers on thinking and writing, poetry and story, AI and cognition, civilization, identity and ethics, and craft — short, plain, unhedged.
미디어CSS · HTMLGitHub @philoserf온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Hugo source for philoserf.com — Mark Ayers' personal essays on technology, strategy, and personal development, published from an Obsidian vault
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Personal essays by Mark Ayers — semi-weekly, on technology, strategy, and personal development. Read them at philoserf.com, not here. Site motto: COGITA·DISCE·NECTE·FARE (Think, Learn, Connect, Speak).
For a linear tour of the layouts, partials, and build pipeline, see WALKTHROUGH.md. For a theory of the codebase in Peter Naur's sense — the publisher relationship, the load-bearing abstractions, the seams, and what kinds of change the system is shaped to accommodate — see THEORY.md.README 전문 보기 ↗Personal essays by Mark Ayers — semi-weekly, on technology, strategy, and personal development. Read them at philoserf.com, not here. Site motto: COGITA·DISCE·NECTE·FARE (Think, Learn, Connect, Speak).
For a linear tour of the layouts, partials, and build pipeline, see WALKTHROUGH.md. For a theory of the codebase in Peter Naur's sense — the publisher relationship, the load-bearing abstractions, the seams, and what kinds of change the system is shaped to accommodate — see THEORY.md.
The rendering half of a two-repo writing pipeline. The author writes in an Obsidian vault (~/notes); the ../obsidian-publisher plugin pushes notes flagged status: publish into content/posts/ here as Hugo markdown. Posts under content/posts/ are output, not source — direct edits are overwritten on the next publish. Only content/_index.md, about.md, now.md, uses.md, books-i-have-read.md, books-i-may-read.md, plus everything under layouts/, static/, archetypes/, hugo.yaml, and Taskfile.yml, are safely edited in this repo.
task setup # install dependencies via Homebrew
task dev # hugo server -D -F (drafts + future content visible)
task build # hugo --gc --minify --panicOnWarning (production)
task check # build.command's validate and strict passes, in memory (the integration test)
task format # bun fmt .
task links # lychee over public/ (external links and anchors)
task deploy # build and deploy by hand; pushes to main deploy on their own
Run task --list for the rest.
taxonomies: {} in hugo.yaml is intentional; the vault's publisher settings strip tags before posts arrive.hugo.yaml params. Five home-page output formats (html, rss, llms, manifest, vcard) and robots.txt are templated from it — no vcard.vcf, site.webmanifest, or llms.txt under static/.archetypes/default.md scaffolds lastmod only (structural pages); archetypes/posts.md scaffolds date only (essays).hugo --panicOnWarning is the integration test. There is no test suite. The strict build catches missing shortcodes and broken refs; the rest is caught by visually reviewing published posts.math: true; Mermaid loads when a page uses the mermaid shortcode. Don't add unconditional scripts to baseof.html.layouts/index.vcard.vcf includes home address, mobile, and date of birth deliberately.A Cloudflare Worker serving public/ as static assets, with Hugo's 404.html as the not-found page. Workers Builds, Cloudflare's git integration, runs bunx wrangler deploy on every push to main, and bunx wrangler versions upload on other branches. Either one first runs build.command from wrangler.jsonc: a validate pass over drafts and future-dated posts, then the strict build. A cron trigger in wrangler.jsonc runs worker.js every day at 09:00 UTC (05:00 Eastern in summer, 04:00 in winter), which POSTs the Worker's own deploy hook, so a future-dated post goes live the morning of its date. That script is the Worker's only code: requests are served from public/, and one matching no file is handed straight back to asset serving for the 404 page. The build image's Hugo is set by the HUGO_VERSION build variable in the dashboard, not by this repo.
wrangler.jsonc holds the Worker, its build and its custom domain. These settings live only in Cloudflare, so restore them by hand if the Worker is ever recreated:
site → Settings → Builds): GitHub philoserf/site, root directory /, build command empty, since build.command is the build. The Cloudflare GitHub app needs access to this repo.main, deploy command bunx wrangler deploy.bunx wrangler versions upload. They build and validate, and report as the "Workers Builds: site" check on GitHub, but get no preview URL: preview_urls is off.HUGO_VERSION=latest on both, so the build image's Hugo floats.main. Its URL is the Worker secret DEPLOY_HOOK, which worker.js POSTs on the cron. To replace it, create a hook under Settings → Builds → Deploy Hooks, pipe its URL to bunx wrangler secret put DEPLOY_HOOK, and delete the old hook.On a fresh account, run task deploy once to create the Worker and attach the domain, then connect Builds and set DEPLOY_HOOK. Until the secret exists, the cron fails and nothing else does. The domain attaches only when no other DNS record holds the hostname.
The zone serves /.well-known/security.txt as a Cloudflare-managed file (Security → Settings); this repo has none.